Retrospective / Working on New Features


Hi everyone! Welcome to my first devlog. Enjoy your stay.

Here's a confession: I wasn't planning on making Not Snake when I started working on it, I just wanted to try making a game.

I knew I wanted to make something with Rust and  the Bevy engine within a reasonable amount of time. After getting a rough idea of what the game would end up like, I planned on finishing it in a month or two while really trying to keep things simple to reach the goal. During that time, I had a lot of ideas that didn't make the cut.

Here's an early shot of what the game looked like when it first started to kinda be Not Snake -like

(The white thing on the left was just called dude. I eventually changed it to a chipmunk/squirrel/rat/mouse thing that I've been calling a "not snake" now. In the code though, all the code referencing the player is still "dude")

Anyway, after calling the game done and releasing it, I switched to working on other projects and let the game sit on itch.io. I've gotten amazing feedback from lots of people and in general it seems like players have a positive experience which makes me really happy. Occasionally, I'll check in on the stats on itch.io and every time I'm surprised that the game still gets new views/plays (I suspect it's from the bevy/rust tags!)

Here you can see the weekly views/downloads/plays of Not Snake since around the time it was released until now. I primarily "promoted" it by making a couple threads on reddit and posting gifs in the Bevy discord. Since that initial "push" at the release, I haven't really done anything. Again, I don't know what a standard rate would be for a game like this, I'm just happy that more people have ended up playing it.


Leading up to the release of Bevy 0.6, I kept debating about diving back into the code to update to the latest version of Bevy, fix bugs, and add more features, but other responsibilities/projects kept pulling me away and part of me is a little afraid of what I've created. The goal of "get a game done fast" led to some pretty gnarly code!


But, after looking at the migration guide I thought maybe it wouldn't be too bad. It took a couple days, but I was able to get Not Snake running on a nearly-0.6 version of Bevy with only a few features missing. So, I've decided to "slowly" continue adding features and make this small game into a slightly bigger (and hopefully better) one!

The 0.6 update brings a lot of cool features but the first thing I noticed were the shadows. In the original Not Snake, I actually ran into a lot of instances where I got confused with where objects were in the game world because of the lack of shadows. I somewhat "addressed" this by putting a shadow underneath the food/dot/pellet things (which I only later realized I made yellow but shadows don't work like that 🤦), but the new real-time shadows make everything look so much better.

Here's a before and after:




It wasn't all perfect, unfortunately. One of the two features I had to disable was the floating food pellet thing (honestly, I'm terrible at naming) indicating the score. In the before shot, you can see the yellow foodie next to the score which is actually rendered on a different pass so it's always in that position. Because of the 0.6 changes, I had to take that out and need to either figure out how to re-do it or opt for a simpler text "Score: 0 / 3".  I'm still on the fence about this one because it's not quite the score, it's the player's current amount and their target amount to complete the level. I'm not sure of a good word to indicate that...

The other feature I had to remove was the electric shader on the electric snake. This only appears in one level to kinda indicate that you can't touch the snake or it'll shock you. It looks like this



Anyway, because the shaders are a bit different now I just took it out completely so I can worry about it later. I don't think it'll be too tough to re-implement, but there are more pressing things to do first.

The biggest problem is actually the shadows! Since everything casts a shadow, some of the levels now look like this


This is happening because the blocks above are casting a shadow on everything underneath. Luckily, there is a NotShadowCaster component that I can add to meshes to make them not cast shadows. The problem actually is with the way I made the levels (yes, it's my fault, it's all my fault)

The levels' data was designed to make it easy for me to edit levels in a text editor. Every type of entity in the game is a number 1-14 and the levels are nested arrays where 0 is an empty space, 1 is a block that can't move, 2 is a block that can, and so on.

It looks like this (this is level 3)


You can see on line 39 the first number is 11, which is where to spawn the player (the NotSnake). I was not expecting to have more than 10 types of things in the game and by the end I was really pushing it with 14. Every time I had to add something that was greater than 10 I had to then shift the whole "column" over and it was a pain and I cried and it stopped me from making more complex levels.

So the problem is I need to now be able to make unmovable blocks/moveable blocks AND unmovable blocks/moveable blocks that don't cast shadows. Which means more numbers. Which I don't want.

So, instead, I'm working on a level editor. My goal is to make the editor output the current way that the levels work, replace all the levels using the level editor then change the output to be more sensible and update the game code to use the new output.

Here's a somewhat working version of it so far


Once this is complete, it'll be easier to add more features and game modes and share levels and all sorts of wild things.

Oh, also! I changed the font. Now it looks like a real game like the ones you see on TV.



Anyway, I'm really excited but I don't want to share too much too early. I hope you all are as excited as I am. I'm hoping to keep a somewhat regular flow of updates here so follow or whatever if you'd like.

Also, please comment and tell me your thoughts! Is this terrible? Have I made a mistake? Will you be able to stop me in time?

Get Not Snake

Download NowName your own price

Comments

Log in with itch.io to leave a comment.

Oh wow, that level format sure is something! It’s really cool to see the new level editor, and I’m glad the migration process was smooth :)

(+1)

yeah, I would describe the level format as "something" too 👀

in all seriousness, it worked really well for what I needed and bevy made it super easy to make it hot reloadable which was amazing while working on it.

and yeah, the migration process was pretty straightforward once I got going. Definitely worth the time.

thanks for reading!