Weird small games

March 31, 2020

If anybody bothered to look through my (public) Github repos, one thing would becom pretty clear: I'm pretty bad at finishing things (and I really like JavaScript). There are a few attempts at games and tools in there that got a few weeks of attention at most then perished a slow death. Maybe I should archive them. Lately I've been trying much harder to finish whatever I start or at least get them to a "ok prototype" state, meaning that I'm not embarassed to show it to somebody with programming experience but it's in no way finished. The fact that I'm starting to get professional projects where it actually matters wether I finish them or not helps to develop this habit and it already resulted in two weird and small games.

Project Vitruvius

The basic idea of this one is: "What if two games, but at the same time?". I'm not crazy enough[1] to make one person play two games at once so it's a coop game. One player plays Tetris on one side and the other plays Breakout next to it. I'm not going to explain how to play the games, that's what YouTube is for (among other less useful uses). The catch is that they're both playing on the same board: the Tetris blocks (called minos) can be broken by the Breakout ball from underneath. The goal is to get the ball from the bottom of the Breakout board all the way to the top of the Tetris one without losing first. I didn't test it properly with multiple people yet so it's most likely either impossible or trivial but I had fun making it and that's the main goal of most of my side projects.

The name comes from the fact that you're only handling circles and squares and that reminded me of that drawing of a man by some guy. I also discovered that every single thing about Tetris is designed and guidelined to death in an astonishly long document and that was both helpful and a hindrance when making the game. My Tetris gameplay is undeniably better than it would have been but it's also about 17x more complicated.

When it came time to make a user interface and menu, I obviously turned to HTML, there's no way I'm doing that with PIXI.js[2]. I've wanted to properly learn React for a while now so I tried to just put it in to control the menu navigation and in-game UI and it worked ok enough (helped by the fact that this project is using Babel for a completely unrelated reason) but as soon as I started writing it I gave up. I've been spoiled by Vue and Svelte, writing JSX after using those feels like using vanilla JS in the 2010's instead of JQuery: yes it works but it's so much more annoying. I did a quick estimate and realized that even if I kept React it wouldn't be anywhere near complex enough to really learn the tool so I just switched it up for Svelte and finished it in 2 evenings. I had to compile the .svelte files by hand but it's pretty easy and much more explicit than React's magic JSX that becomes JS. The Svelte UI also is about 5x smaller than just the React bundle.

The Calibron 12 puzzle

If you are reading this and not aware of the VSauce YouTube channel you should drop everything and spend 1-2 days watching a weird man ramble on about fascinating things. Michael, the host, also makes videos on other channels like D!NG that are well worth your time as well. All that to say that at the end of this video he talks about the Calibron 12 puzzle and links a very extensive document about it in the description. If you're at all interested by this you should watch his explanation about the puzzle, I won't do a better job. So I made a web version in a day because I enjoy making puzzles much much more than I enjoy solving them. There's not much more to say about it other than it was done pretty quickly and so the code isn't very clean.

[1]: I'm not done making games yet, there's no telling what the future holds...

[2]: Incidentally this is one of my main gripes with using big engines like Unity or UE4, they have to have their own way of doing UI and it can't be as powerful or easy to use as HTML. I'm aware that embedding an entire layout engine in games just to display some pieces of text and health bars is not desirable (although that didn't stop some games from trying it out) but because I'm already on the web I can take advantage of it as much as I want!