Hyperspacedive Postmortem and afterthoughts
Hey, you can still play my entry here!: https://ldjam.com/events/ludum-dare/57/hyperspacedive
Hyperspacedive Postmortem

So basically, here's a post-mortem of sorts of my recent LD entry Hyperspacedive. I try to write these type of posts after finishing a project because they allow me to reflect on things and grow. Or sometimes it's just funny to read how I make the same mistakes, all over again. Read on, maybe you'll have some thoughts about the issues I faced as well, or similar experiences.

Scope creep
I'm usually not that bad in terms of feature scope. What I'm bad with is the amount of engine features I'm trying to put in, even if I don't really need them.
So I started the project by picking PICO-8 to force simplicity. That was a great start! The obvious next step was to... implement Object Oriented Paradigm into it? :grin: I mean, for sure it's gonna be useful, right? Right? :open_mouth:
Fine, so I spent some time on figuring out how Lua works with OOP concepts. Great. After that, I should code the game, right? :sweat_smile: No, that would be silly. I spent time figuring out how to rotate sprites inside PICO-8. I have a major in physics, it's obvious I'm gonna need matrices, right? So vectors as well. :grin: You know what, while we're at it, what about general 2D transformations? Yes, great idea! Right? :joy:
Okay, sprite scaling with rotation is not supported in PICO-8, better to implement it, right? :dizzy_face: Uhhh... right.
Okay, so OOP, vectors, matrices, sprite rotation and scaling... What about transformation matrices for object hierarchy, how it's done in big engines? Surely I wouldn't have time to implement that? Right? :disappointed: Wrong, of course I can do this, I'm only 6 hours in! :dizzy_face:
:scream: :scream: :scream:
Okay, at some point I must have gotten some senses back, because I forced myself to focus on the gameplay. After some happy accidents with how I painted circles, I decided on a very simple gameplay, where you just need to avoid growing bubbles. Turns out the whole Matrix algebra is used exclusively to handle player's ship, and nothing else... Duh. :unamused:

Compo timeline
As I've mentioned in section above, I spent more than half of the 16 hours I had for the project on implementing technical stuff which wasn't really needed. :expressionless: Also, saturday was off, because I wanted to spend some time with my son, :family: who is too young :baby: (for now) to participate in LD with me (but we'll get there). I had big part of the Sunday to myself, and some time on Monday as well.
I literally finished adding audio within the last hour of the JAM. Fortunately, PICO-8 exporter worked flawlessly and I only needed to include the html to the page. Awesome.

What went well
I was right to use PICO-8. :fire: It's the limitations that work extremely well for a competition format like LD. The fact that it comes with the :art: sprite editor, :musicalnote: sound editior and a :notes: tracker is a bonus. The export to html works flawlessly. :okhand: I also liked learning it. I'm gonna use it more. It's very basic, but also provides a complete set of tools you need to make a game. It's not an actual "game engine" by any means (other than fantasy console environment) and requires you to solve some technical problems, which I like. I didn't use the code editor, this I delegated to VSCode.

Since I spent so much time on technical side of things, I had to be extremely minimalist when it comes to gameplay. I experimented with pattern fills and figured they look rad, :fire: so I decided on something simple which would use those. There's nothing simpler than drawing bunch of circles and that was basically it. I executed the idea during the last 5-6 hours.

The audio, although very basic, turns out to be so important... I mean, I played some good entries without audio - and that really impacts the mood and overall feeling of such game a lot. With audio you also get additional way to inform the player about something. I'm really glad I added something there.

It was quite a few years since I last participated in LD. I tried to participate in some recent ones, but there was always "something", which was kinda depressing, :pensive: so this time I was really motivated :persevere: to submit an entry - anything really, even if it was in the "Unfinished" category.
What should be improved
As I've said, I was right to use PICO-8. The thing is, I should - for now - keep the technical expansion to a minimum. :unamused: Especially when it comes to an engine. I seem to have this pattern, where I pick some technology and try to design some sort of complex engine in it, and it usually turns out to be not necessary. I should focus on the :video_game: gameplay instead, and do engine stuff only if it is actually required by the gameplay. For example, in my current entry I could have just gone with vectors and rotating sprites, there's nothing else needed, not even OOP.
Next time, I should:
- prepare my workspace upfront (though with PICO-8 it wasn't so bad, I could start having essentially nothing, not even a directory)
- in particular, I stressed out about the distribution since I know that Web target is crucial to have; should have confirmed that upfront to avoid stressing out
- maybe next time, consider having a separate page on itch.io (especially If I somehow end up not using PICO-8) - people seem to use it a lot and I like that you can control the graphical look and feel of that page; it seems there are some statistics available there, which would be fun to analyze
- brush up on the language I write stuff in (Lua in case of PICO-8) before the competition, maybe write something super-simple
- be more focused when it comes to engine tech; avoid writing yet another game engine
I remember having similar points with my previous LD projects, I just need to remember them before the event starts! :sweat_smile:
Game-specific feedback
In the comments players gave me some constructive points. Stuff I didn't think about:
- changing colors quickly isn't super great for anybody with epilepsy (added a warning on the page)
- the movement area should either not be constrained at all or it should be clear where the player can move
- it should be more clear that the perspective is actually top-down and not 2.5D and to avoid the bubbles the ship cannot touch them in any way
- the color of the bubbles is unfortunate, I should have picked color more associated with danger
- the audio cue that something wrong is happening (and fuel bar falling down) when the player touches bubbles is probably not enough to stress that they should avoid them
- there should be a way for a skilled player to avoid bubbles altogether (currently I kind of assumed these will hit you at some point)
I did think about some of the other improvements to the entry, but just didn't have time to proceed with them:
- initially (and this is visible in the code) I wanted to incude a "hyperjump" mode which would allow for some invulrnerability (and full range of colors; looked awesome, but would probably kill some people)
- I wanted to add fuel (there's even a sprite for it) as a way to extend gameplay: maybe some more powerups, etc. - it would then be ok to have more levels (or make it endless)

Conclusion
As always, the LD is awesome, frantic and crazy experience, and I really enjoyed myself. :blush: Now I go through a lot of the games submitted to review them and I enjoy observing the creativity of others, and having a blast! :fire:
Thank you all for being here! :heart: