Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

AchieGameDev MossyMonth 2023 Devlogs

A topic by Achie created Jun 12, 2023 Views: 73 Replies: 1
Viewing posts 1 to 2
Submitted (1 edit)

Devlog #1

Ko-fi page ☕ My Socials 🌳

I Joined pretty late, as I started this whole project today (12th) so not much to share other than sentimental things, I guess, so if you are interested in only truly devlog stuff, feel free to skip a few paragraphs ahead!

I’m Achie, a hobby gamedev/pixel artist in the PICO-8 ecosphere and currently I’m supposed to work on 3 projects. A colony management game, a small platformer and a funny causal fencing game. Pics below. I say supposed to, as I struggle to find motivation, because of the imposter syndrome and generally not feeling competent as others are making so much cooler projects similar to mine in fraction of the time. I know it comes with experience, but still feels bad and I think this is a major problem with social media.

Tried a few side projects to shake things up, but all of them lead to deeper holes due to various things, so I was on the brink of a major burnout. Then came Fletch and his amazing chat, Jammingans with his daily pixel art motivation, the Nerdy Lounge with all the amazing peeps encouraging me, all I needed is a small little jam, no stakes, no rush, just chill out, sit back and enjoy the dev process once more for a quirky little thing.

And here we are with my first day progress on my entry for the MossyMonth. A week ago I tried to start a little platformer, but using my core engine was miserable again, so put it on hold. I played many puzzle games in my life, encountered one just this weekend on my stream and was inspired to try something of my own. So, without further ado I jumped into a sliding movement puzzle game. Press button, player go weee.

The basic movement atm is quite hacky. I have a gravity_direction variable that is correlating to the last arrow press, and each frame all the object that are affected by it move until the next obstacle in the direction of the gravity. Code breakdown here

movement

After this I know I wanted a tile that is walkable at first but not on second pass, for flavor reasons I’m not gonna spoil yet. This is quite easy, if we stumble upon a point during movement that needs to be changed (check with mget()) then we just change it to the new wall tile (with mset()).

The same can be said about collectibles, if we pick them up, they should leave the empty ground behind. ATM this is handled with tiles, in the future this may go into object oriented territory due to overlaying.

coins and walls

With this done the one last thing I wanted is switchable blocks. You toggle them from on-off with flipping switches on the map as of now, and their code is quite hacky, so not gonna share it, just the thought process. You know what, let’s do it anyways, prepare for highly un-optimised late night jank coding. Here is the mess in all it’s glory

Basically we do what we did before, we just handle everything object based after reading in the positions/ on-off states of blocks into an object collection so we can manipulate data better.

swtiches

And this is where I am right now (I’m lying, added a second actor that moves around according to our movement, but that is for a future devlog). So yeah, thanks for reading, happy creating, see you in the next devlog!

Take care!

Submitted

Last time I checked in movement was a bit iffy in the sense of working more of a direction switching gravity mechanic from games like VVVVVV. For it work how I want it to I need a “neutral” state. This is necessary because of the “Vector Plates” I’m gonna tell you about!

Vector Plates are a complicated name for tiles in my game that are supposed to redirect your movement. Let’s say you pressed left and run into a plate pointing upwards. From that point you move upwards and stop moving to the left.

Issue was with this plates, that without they “neutral” movement state you will can get “stuck” in an endless loop. Let’s say you press up and run into a downward pointing plate. You will be redirected to down, but your root movement direction is still up, so you will immediately move back up, run into the plate, redirected down, hit the wall, root is still up etc…

With the neutral state you can set your root movement to “null” basically {0,0} technically and wait for the indication for a new order.

The only issue left from my old code now is with multiple actors if one steps on a plate then the global direction will be set to that and all objects will move. I only want the plates to work of individual actors, so we move the global gravity_dir is now not needed as we will handle things inside the actors. So now we have a dir member value inside them showing which direction they are moving if not redirected.

Code for your convinience!

One last thing I wanted is little ponds you can traverse with Lilypads. Thing is I want them to break over one stepping through (or two in case of the flowering ones). This has two issues.

  1. I’m creating objects from them runtime so I can render them over tiles, but this means that I need to fix the underlaying tiles to look according to the shoreline.

For this I created a function which checks which way the shore is and puts the right tile there after creating the object from the lily.

  1. You need to set the tiles to walk-able under them. This is possible by giving a new flag value with fset() during the fixing, but fset() is global so when I set back the tile flags after the player breaks the lily all tiles under lilies are set to non walkable. This means you can only pass one.

For this I created a copy of my water tiles and that copy has the flags set so it is free to walk on. Upon you walking over and breaking the lily it fetches the non walkable counterpart under it so you cannot pass through. It’s kinda a hacky fix, but it works and I have free tileset space, so easy solution here we go.

Code example!

One last thing is now the game loads the map from string data, letting you expand the number of stages until you ran out of character space. I iterate through the map, save the ID-s into a string, store it, fetch it runtime unpack it and loop over the ID-s and create the objects the same way I did last time, but now from a global map collection. I wrote this about in the very first devlog of mine for Clock mage, but here is the code for this cart!

Level loading from string!

And this is all I have for you today! One more Devlog probably before relase and then a post mortem in some later time!

Take care!