Squiggly now! Tell me how it was made!?
Ok nobody asked me that. At least not yet. So for to be sure I'll make this long post about how I made it. Just to be sure I can shove it to someones face if they ever ask me..
OK just kidding! I just wanted to write it down and go through it. What I did and what worked and what I learned. Because I think this one is better than previous games I've made. Then again they all are in a sense better than the last in some sense. People evolve. Wait... That's was the theme of the jam right?
Theme gets announced: "Evolution". Or was it already available at that point when I joined? Maybe, I can't remember anymore. Well there was a limitation announcement at the start of the jam at least...
Limitation gets announced: "failure is progress". Now we are getting somewhere.
How to combine these? Something that evolves? Maybe some creature. I come up with idea of using DNA as resource you collect to "evolve" your character.
This thing comes up to my head in some form:
What I did:
I start to doodle in Aseprite. Get some color. Choose palette. Small palette, it helps with scope. Like everything, try to keep to minimum. I go search for palettes. I find a nice 4 color palette of purples and pinks.
Not long time passes, I think. I have a purple blob on the screen with an eye. I have decided to use 32x32px size for the canvas for now.
After doodling some I have some parts in aseprite that I want to now combine in Godot game engine.
I start of creating player node. First I put the Sprite2D node under CharacterBody2D and so on and make it move. The usual topdown movement. Tweak it a little. Decide it can only move forward and backward and turn to direct its movement.
Now how do you add parts to it? You need some kind of editor in game. I start creating level -scene. add UI components such as buttons and containers to layout them properly. At some point I have row of buttons and player blob in the level scene.
Then I create node that I call "PlayerUpgradeManager" slap it in the level scene, it could live in the autoload too. But I decided to limit my scope to one scene anyway.(I do add the main menu later)
PlayerUpgradeManager handles moving placeholder sprite, which is set half transparent. I tweak this multiple times throughout the jam until it is doing just the thing I want it to do and it is placing the bodyparts on the player node's base body. Add some rotation to placeholder and placed part. I go back to this manager some time. But that is basically what it does. Placeholder gets changed when bottom buttons are pressed and manager triggers dna amount changes. These are all done via signals to keep them separate and changeable.
Then I go back and doodle more parts. Tentacle, more eyes..
Probably at this point it's the second day. I have a system that can add parts and player base can move. Time to implement the bodyparts to do the action. Player-node calculates how many "move tentacles" it has to know what speed it can go. Movement by itself is separated to a component that I call VelocityComponent. It's not my original idea. Using Component structure is a common way to split features into smaller parts and make them reusable elsewhere. I add Enemy -node it is also CharacterBody2D and I add the same VelocityComponent there. There other components as well like HealthComponent, HitboxComponent, HurtboxComponent and so on..
At some point I separate Player-nodes HurtboxComponent to the base-node which is the "Base" bodypart you see in the UI. If all base-bodyparts die, it's back to the edit-mode.
I start to add some sound effects with sfxr.me and try out Chrome music lab for small beats. I'll make a small music track later down the line with the Chrome music lab. Just simple ones will do. I do recommend trying it even if it's simple and basic. It's still better than nothing or unfitting song. Next time I try get my hands dirty with LMMS.
Add some particles when enemy or player bodyparts die. There's some juice! Now it start to feel fun. It has some reaction to what is happening and everything is not just disappearing to thin air without reaction.
Enemies spawning is handled with another component. It has simple Timer and export var for adding enemy-scene as PackedScene for instantiating it.
At some point I add tilemap for the background. The eye mechanic needs some visuals.
Eyes started by doing the particle system with it. ParticleSystem(or I call it ParticleInstantiator, you can name it whatever you want.) is called with signals and it instantiates particles to position given in the signal as parameter. Particle-scenes have script to free the node after finishing emitting. I add sound to the these nodes too some point so its two-in-one: sound and visual. Explosion: sound and particles. Placement: sound and particles. DNA found by the eye or sonar ear: Sound and particles. And so on. It becomes easy as things start to have same workflow.
Adding more bodyparts becomes easier at this point. I add sonar ear. Test it, tweak it. I add Suction cup.(I call it first "spring")
Then it starts to be the third day for me. It's sunday for me. I started on friday after work. I want to polish the game. I add more sound effects to the buttons. Create sprites for the buttons using the same palette. Change icons to fit with the buttons by adding darker borders to them. I do some playtesting myself, fix some bugs and refactor code little bit. Not too much, because I fear I break everything. Make a build and put it on itch.io. Find out it works badly on firefox. Try different browser, it's OK on Edge. Add disclaimer about it in itch.io. Continue on fixing the bugs.
Finally add the main menu and decide the music might be too repetative. Lower the sound little bit. Add music-on-off toggle button in main menu and in play-view as well.
Play some more, tweak. decide not to add anything more. I made multiple builds to itch.io at this point. Press "publish". Add screenshots. Add the game to the jam. Relax, post about it on some social medias and leave it to boil and develop like a bean soup.
What worked and what I learned
Keeping the scope small right from the start was good idea. I used small color palette to keep art simple and still visually pleasing and cohesive. Most importantly cohesive. Also there is not that much art to start with.
I used my strengths as my advantage. Programming is my strength and art is my weakness. Music is there somewhere between.
Having a good idea you can implement early on. This is pure luck if you can come up with an idea you can implement. Some parts of it is then again not just luck, as I did use designs that I have worked with earlier and use existing components lying around. I wouldn't say that is cheating as the components that I reused are so basic like the VelocityComponent that I would use it in many other projects as well.
That goes to my next point: Sticking with your tools for a while. Having clear workflow you can start with helps a lot. You don't have to engineer everything from scratch every time. Use the existing parts you got. Make them plug-and-play parts you can just combine. I've been using Godot now for *checks their own itch.io-page* at least since 2023. I have struggled with choosing game engines for a while, but since using Godot I have found a good workflow and I am improving in using it. Not only that I do have used other game engines and coded from scratch with c++ and C# monogame also. It's a different beast to handle and I'm sure I could do it also, but it takes another year or two to really get into it.
Take some rest and time away from gamedev in between. I did sleep full 8 hours each day. I went running on one day. Taking time away from the game helps the mind relax. Try to not think of the game too much. If you come up with something, write it down. Try to keep the scope down though, as you have limited time in game-jams. You can add the extra features and publish them after the jam and rating is over. One day my sister came visit me for an hour and we chatted about the game and I got ideas from her visions as well.
That is another point! Tell others, share your ideas. I need to do this more. This will give you new ideas back and you can get further.
Playtest your game. If I hadn't spent some time in between to play the game myself it would have been worse in the end. Even better would be to playtest the game with others as they don't know how the game will work and may struggle even more. This is a one thing I see games have when I try others games. I sometimes struggle to understand their games. So will they yours.
Enough japping, let's go! You can try the game here if you have not yet: https://jukepoks1.itch.io/squiggly-now
Leave a comment
Log in with itch.io to leave a comment.