Home Artists Posts Import Register

Content

my nanoreno game is coming along nicely!!! i actually took the first week of the jam to get some rest between projects, and solidify some worldbuilding stuff before deciding what kind of puzzle game to make...

wait, why picross tho

i wanted a game where teen cassia is being tutored by another witch, and you have to complete puzzles to proceed in the story. my original idea when i first thought about making this game back in late 2021 was that i could have a little magic circle with 6 dots, they light up in a pattern, and you have to click them in the right order to match the pattern. that seemed like something very doable in ren'py, but this was before i decided on what the music would be...

after making a bunch of songs, it turned out that the music was too good to be interrupted with a bunch of little tones/chimes from a pattern-matching game. and by "too good" i mean i wanted to let people just listen to it without sound effects intruding on the experience. (but also i love my soundtrack!! the songs are stuck in my head as i write this.)

so i figured... what's a fun type of puzzle game that would:

  • feel like you're learning magic
  • not have arbitrary lore-related rules+answers
  • be fun for me to code

and the answer is picross!!!!

meanwhile, deep in the coding mines

this is what the game looked like a week ago (i've been sharing on cohost as well)

in the prototyping phase, i mostly wanted to see if i could generate the grids and numbers using an array of 1s and 0s... and it worked! the puzzles look like this:

to get the numbers at the sides, i wrote this function (ooh, how programmer-y)

as you can see from the gif at the top, i still haven't figured out how to gray out these numbers when you clear a specific set of tiles without clearing the full line. BUT I'M GETTING CLOSE... (i wanted to focus on the story for a while and come back to it later.)

next, i needed to make it keep track of your mistakes (pink), and let you mark tiles without filling them (yellow)

each of the tiles is a button that changes sensitivity/background image depending on what "set" that tile is in. so when you click a tile, it jumps to a label that adds/discards the tile from the different sets... the screen code for puzzle grid is really long and complicated! look at this mess!!!

the pygame part is what lets me click and drag to fill tiles! i kept thinking about it when i first started coding this, that it would be a pain in the ass if i could only click one tile at a time, especially on the larger grids... but luckily i figured out how to get it working, and the play experience is really smooth because of it!!!! the only problem is that it lags pretty noticeably on the 15x15 grids, so i hope i can find ways to optimize things a bit more...

using my OCs to help me debug

after getting the buttons working, i was feeling pretty accomplished. but i still needed to autofill the rest of the blank tiles after you complete a line... this is easy enough for rows, where the numbers go in order, but it's trickier for columns because it's every 5th number for a 5x5 grid. and i need it to scale to different grid sizes. and it starts counting at 0. what a headache!

so i wrote more functions, this time giving me more lists of numbers i could use to check surrounding tiles. i had cassia show me what the function was outputting, since that was the quickest way to check it.

thanks, cassia! now i could grab all the tile numbers, and know which row/column they were a part of. and because the tile numbers are what gets added to the sets, i could check if the other tiles in that row and column had also been clicked. like this:

the "reaction" part changes cassia's face (as seen in the gif above). it's similar to how periwinkle changes his expression when you dress him up in starry flowers!

coding is easy! (lie)

i was able to put all this together really quickly because of all the little things i learned from making other games. like, specifically syrup 2 (which is very function-heavy) was where i got all my practical skills for working with arrays and sets, and learning how to get python to spit out the data i need to make the game happen... uhh i also copypasted some stuff from astra's garden since i wanted to add a timer. (and then i learned how to make them count UP instead of down!! so exciting!!! lol)

anyway, TEST BUILD NEXT FRIDAY!!! assuming i get to a good stopping point in the script by then. hope you look forward to it!

thanks for reading~

Files

Comments

Anonymous

Super excited to play this. Picross is pure snack food for my brain and, no matter what, I shall play anything that gives me an excuse to picross more.

Anonymous

Always fun reading about coding that I can only understand on a very basic level, even if it means rereading things over and over again until it makes sense sometimes, pff. Love these coding rambles...!!! (And, looking at all of this as I stare at tutorials on basic ATL and think "uhhhhHHHHH maybe not" is... truly a wild experience, pff...) Especially love Cassia spitting numbers being given << l o r e >> (was assuming it was an error, but it was, in fact, Cassia being quite helpful, woh.) But also... interesting to myself what sorta things one must go through to create an ideal Picross experience, as somebody who's never done any Picross before... And it's also very powerful to get those things working in Ren'Py!!! Python functions seem so...... esoteric to me, but it's excellent that Python can be so versatile!!! Looking forward to Picrossing with Cassia while listening to smooth lo-fi in the near future!!! AND ALSO VERY-MUCH LOOKING FORWARD TO THE WRITING, ESPECIALLY!!! (Both more Cassia content AND magic system world-building... Very exciting...!!!) Hope all the dev'ing goes super well!!! GANBAAA!!!

Anonymous

Python is an excellent language to learn on, honestly. I wish I used it more in my professional life (I’m a server dev if you didn’t know). But I think it’s so friggin cool ren’py uses it!