This week was… interesting?
Most of this week was spent on trying to get a good hold on GameMaker:Studio. To do this, I implemented a tiny human generator!
Two Pico-8 doodles this week!
Last week I said I would be working on the new secret project. The tiny human generation was a small but important part of this project, so I started with that.
The first thing I did was implementing a way to import Tiny Animator animations into GameMaker:Studio and then importing skins directly from Pico-8. Then I added haircuts which are separate animations with three frames: one for when the head goes up, one for when it goes down and one for when the head is still. Those haircuts can be imported and then applied to any humanoid animation, the algorithm will find where to put it on each frame and what hair frame to use.
Afterwards, I made a palette swapping shader and coded some simple following behaviors for the tiny humans. Add a nice background and here’s what you get!
Now let’s talk about architecture a bit. That’s not something I do a lot here but the situation calls for it.
I wanted to make my new super secret project with GameMaker:Studio. But after using Pico-8 almost exclusively for 2 months, getting back on a complete IDE that tries to do lots of stuff for you felt strange… and wrong. I didn’t want to work this way, so I started looking for other engines I could find myself more confortable with. More about that further below. I ended up starting the project with GameMaker anyway. Since I had already used it for other projects (which I didn’t finish, apart from TETRSI), I figured I should just try to get back into it and it would be ok. Although I did go for a very different approach than with my previous projects, something much closer to the architecture I use for my Pico-8 games. Here’s the list of my Objects in the project and then the list of scripts.
The idea here is to do (almost) everything by script, using GameMaker only as some sort of framework. Since I can’t define objects in code, I decided to have one base “Object” object and that’s the only object the scripts deal with. When creating an Object from scripts, that Object is given a set of variables, an update script and a draw script, and a set of lists in which it will be put. The first and second lists are “to_update” and “to_draw”, the next ones will depend on the object, it could be “enemies”, “rats”, “not_working_properly”, etc. When deleting the object, we simple remove it from the different lists it was put into and then we destroy it. It’s simple enough and well-structured. It works super well in Pico-8. And it worked in GameMaker.
But. This architecture ignores a lot of the very interesting features of GameMaker, such as the alarm system or the built-in collision callbacks. This is bad because why use a powerful game engine when you only use 20% of it and build your own systems as a replacement for the other 40% that you could make use of? This architecture is not efficient in a game engine like GameMaker. Engines like GameMaker are really powerful only when you use them as they are intended to be used. Which definitely makes sense and is the case for most game engines anyway but it always frustrates me.
This is what I got out of this week. The week could have been put to better use but still, I think it’s good that I went through this. I’m also happy I had this occasion to write about this subject here!
So what now? Well, one of the engines that stood out the most when I did my research was LÖVE (or love2d). It acts as a Lua framework and nothing more. Lua is the language used in Pico-8 so let’s just say I have my ways with it. No IDE at all, you just write your code in any text editor you like and then you run it. That sounds like something I definitely could appreciate.
My plan is to make a small game with LÖVE in 12 hours in order to try it out. Then if I really like it, I will be using for the secret project. If I don’t like it, I’ll probably try some other engine, maybe I’ll even do something in 3D for fun!
Yesterday was released an interview of me by Sebastian Standke of GameJamCurator. It was really cool answering his questions and I think the interview turned out very good, so you should read it maybe!
Still about reading, on last Thursday I released the second issue of Doodle Insights, my Patreon exclusive series! It was about the procedural dithering that I use a lot in Pico-8! In fact it was only a part 1, explaining the basic uses and how to do it, but part 2 is coming and should be released tomorrow, on Tuesday again! (it’s a weekly thing)
That week was alright I guess!
Next week should be better though! I’m gonna be making a game with LÖVE in 12 hours, and I’m gonna try and stream at least a part of it too! Then, hopefully I will find it to be my ideal engine and I will restart the secret project with it! There should be some new Pico-8 doodles as well!
Have a great week!