Warp Is Released!

May 19, 2022

I have a weird feeling this week. I finally published a game. To the general public. Granted, I did not do much marketing (none at all to be honest), do not expect anybody else apart from friends and family to glance at it and despite having putting it up in the “pay what you want” category I expect no sales whatsoever. But it is mine, and I managed to do it and it is the most polished thing I have ever done. Massive thanks have to go to SSM for providing the music, to my girlfriend for testing it and testing it endlessly with me late at night and having the patience of waiting for me to interrupt the playing and logging the bug (or even fixing it) like a good boy. I would also like to thank JRRG, since he also listened endlessly to rants about what to put in and what to leave out of the game, even though in the end I did not have the time nor the energy to implement the features he requested (sorry!).

Looking back on making the game, there are many things I could have done better. I procrastrinated way too long on adding the main feature that would have really added to the solo play, which was a vs AI mode. I started doing the bits that I knew how to do, and which arguably were very needed for the game: designing the ship models, tunnel generation and tweaking so that it felt difficult but fair, working on the different powers, etc. By the time I felt like starting work on the AI I got infected with COVID and was relatively burnt out by the project itself, and it felt a lot like a chore rather than something cool to add to the project.

The weirdest thing is that I really wanted to add AI. It was a good challenge, a cool thing that would have been interesting enough to code and would have been flashy to see. The problem I found in this game is not that the last bits were the bits that I did not want to do because they were tedious and boring, but I was getting overwhelmed even by the tiniest things that I actually enjoyed, like making the sound effects or composing additional tracks. It had never happenned to me, and if I hadn’t already a couple of projects in the back of my head I would think that this is the end of my hobbyist gamedev career.

So, in summary, the first week has been exactly as expected. I sent the game around to my friends, put a tweet linking to it and you can count the downloads with your fingers. But it is going to stay there for a long time while I add other projects, and hopefully get some love as people stroll by the page. Go do so now!

New Banner

April 21, 2022

As I said in the previous entry, one of the things I want to add to the game are the initial flash screens typical from all games. One of the reasons is to showcase the use of Godot, which I have found really pleasant to work with. At the beginning I considered going the hardcore way and coding all this in C or C++, with OpenGL, but then in a miracle way I managed to talk some sense into it. If not, it would have been impossible to finish this by April with the amount of hours I have dedicated to it.

The main reason to do it was so that I could put a “Jabawaka Games presents” which I always liked, but that meant I had to get a new logo. My old pixel art cow in the fields was a bit lacking in style to say the least. So that is why we have a new webpage, with a pixel art Jaberwocky instead. My first blog ever was named the Jabberwocky, having always liked Alice in Wonderland and Through the looking glass. I was young, ignorant and blissfully unaware that it was a very obvious literature reference (as painly pointed out in The Social Network, thanks for that). I was so ignorant that I did not know enough English to know the meaning of ‘jabber’, and therefore the actual metaphor the poem is about. I just thought a dragon featured in a nonsensical poem was cool! Incidentally it is a very good name for a blog. Through college the joking mispronunciation of it by a friend turned my main nickname into Jabawaka, and here we are today. That is why I think a pixel art Jaberwocky is the best logo I could have, and maybe at some point I’ll actually go and comission a proper one from an able pixel artist.

Tying the Bow

April 21, 2022

Thankfully I am very close to finishing the Warp game. This past week was Easter, and due to a very generous work calendar, I had the whole week free. I was going to go back to my hometown, relax and take the opportunity to push through all the interesting features that I had pending: power pick-ups, AI enemy for solo players, tweaking the controls in the settings… Instead, I got infected with COVID and therefore had to stay and quarantine at my place in Madrid. It was not too bad, just a couple of days of high-ish fever and feeling beaten up, but after that I was left just a cough and a bit of congestion.

I took that time to reflect and finally decide that all those shiny features were not needed. Well, AI might have been nice, but I started coding, found it was way more difficult than I anticipated and decided to bail out of it. This project was already expanding in time and scope beyond what I already anticipated, and to be fair it is my most polished game to date. So I spent that time polishing it a bit more: tweaking the menus, changing the pushing mechanics to be fairer, etc. With all of these, pending a couple of initial flash screens and sound effects, the game is pretty much ready to go. I want to create a page in, mainly to start creating a kind of portfolio there.

In retrospect, my biggest mistake probably was to not combine all ship scripts into a single one sooner (or even make them one at the beginning). I thought the mechanics would be too different initially so I started off with separate scripts, but then the differences between the ships could be parametrised easily and there were huge chunks of code that were exactly the same. By the time I did combine them all, I had already done a lot of Ctrl+C, Ctrl+V across all scripts, and it was way less painful to merge them than anticipated. Well, you live and you learn and hopefully you don’t repeat the same stupid mistakes.


April 21, 2022

It has been a long time without posting here, so I will post a series of short snippets. I advanced a lot in the Warp game, finally giving it a good polish. The first thing I implemented a while back now was the selection page, with hilarious bugs in the first try:


Now, I managed to get that underway and spent a good amount making it look a bit better, so here’s the final result:


The other main thing that I have finished is the split screen multiplayer, which I have been playing with my girlfriend to death. She is very good at triggering bugs, so it has been very convenient to hunt all those interaction bugs that would have been nearly impossible to see on my own. We both find that quite fun although to be fair since I know all the ins and outs and have tested the solo mode endlessly, I can easily beat her (hopefully not for long).


Warp Advances

February 13, 2022

It has been a couple of busy weeks, but I have also managed to advance a lot on the game. First of all, I have finished the design for the other two ships in the game, the stunner and the swapper. For the stunner, I have gone with a central pole that then has a spinning top. I wanted to do something unconventional because the stun power is the most unconventional one (arguably the swapping is more unconventional even, I might change the powers)


The swapper ship is a simpler and more standard design, just a hull with some wings thrown in it. I tried doing smooth transitions between the hull and the wings like I did for the ghost ship, but it turned to be a bit too complex, so I left it like this.


In the graphics department, I tweaked a bit the camera opening so that you could see the other ships a bit better, but only when they are close to you. I think that way it will be more chaotic, I will have to check when testing. The big advance however is a CRT which I took from here. It was very simple to set up with the project and easy to tune too.

The other big change is that I have finally implemented collisions and a dummy AI to test against. Each ship has a different push distance away from it, tied to its bulkiness. The idea is that the pushing ship can knock other ships sideways into the gaps that may be there. Of course, swapping and ghost directly counteract it, so balancing it may be tricky.


Ghost Ship

January 26, 2022

One other thing I have managed to work on during the break is the next ship in the roster. I have mainly based it on the Blackbird spy plane, which is a plane that has fascinated me since I was a little kid.


This being a spy plane, its power is that it can become a ghost and go through other ships. I needed a cool transition to showing that and I thought it was the time to flex the shader muscles a bit in Godot. After a few stupid mistakes and reading a lot of the docs and some examples, I managed to get what I wanted working. During the transition you pass a receeding X value that marks where the transition between real ship and ghost is. At that point I chose to draw a bright white line, and in front and behind it there are two different colours with different alpha values. I am quite pleased with the effect and hopefully it is easily identifiable as to what it actually does.


Productive Xmas

January 22, 2022

Over Xmas back in my hometown, I have been able to advance on the game quite a bit. I finished a rough prototype which includes just one ship, with no powers yet, and tried to add all the visual flair I could for now:


The main thing I have worked on is tuning the physics and getting all the lights to change and the thing to look “finished”. Now I need to add powers and other ships, but I have spent the better part of January just getting back to my routine. The only reason why I’m posting is because I have finally refactored the script so that it is usable, it was a big mess. Since I need to reuse it on the other ships with minor modifications, I made sure it was relatively easy to do so. It is the least satisfactory job though, because you are not implementing anything new and are just breaking things initially to then try to get them back to normal!

Modelling Advances

December 2, 2021

I have finally braved into starting the Tron Warp game properly. Last weekend I went back to my hometown, which meant a four and a half hour long trip by train. Apart from reading Dune compulsively (with more ideas triggering in my head for videogames that I probably will never make, mainly because I’d be using IP that’s not mine hehe) I also clocked some work into modelling with Blender.

Now, I am an aerospace engineer. That means that I have had proper CAD training and I should be able to figure out Blender by myself with some tutorials and be able to make some decent models. Truth is, I have either never had the patience or the wits necessary to do so, plus I am doing this project on the Macbook Air I bought and on the go which usually means no mouse. The logical conclusion is that rather than modelling by drawing on the screen, I am going to do things through code.


The first ship I have designed is above: the hull is different ellipsoids combined together, the “wings” (or pushers actually) at the side are made out of parabollas over straight lines and the connectors are a truncated cone. The pushers are actually to push other ships towards oblivion!

What I have not decided on yet is how to render these models. I am going to give Godot a try, because I have used it for 2D and everything was super simple to set up and a pleasure to code in actually, and I can’t be bothered to write all the code to do the 3D rendering in C or C++ (not if I actually want to finish the game that is). I was thinking about going for a low resolution toon rendering, to give it a very old school feel, but this morning while I was still in bed I thought that a look similar to Antichamber might work better. I guess I’ll A/B test it on myself and friends in order to choose.

Migration to Hugo

November 26, 2021

I haven’t published anything in a while in the blog because I was busy migrating it to a new technology. I was using Django, which is very powerful and easy enough to use. It is based on python too, which means that I could flex a bit the rusty muscles I had. However, it is mainly designed to be used with dynamic webpages, and this being a blog plus projects up here, it did not make a lot of sense (I do not want comments on the posts because well, then I would have to enter into the world of filtering spam, moderating behaviour, etc etc which I am not keen in doing at all.

So, I obviously started with reinventing the wheel and wanted to make my own static site generator written in python. It would obviously end up being really not general at all or reusable and with lots of quirks about how to use it because I would not devote time to it. Suffice it to say, the effort was short lived (thankfully).

After some common sense shone inside my head, I decided to go with Hugo. It is a static site generator written in Go, but just browsing through a couple of tutorials I realised that I could probably port it in a couple of days. Alas, that is what happenned: over this week in little spaces of free time I managed to port it, and then in the train trip to Seville I finished it! And here’s the result, for you all to bask in its glory.

Tron Warp

October 15, 2021

So after a long time of not developing anything at home, I have finally set up everything again for C++ development with OpenGL, and it is all because of updating to Windows 11 (to be fair I am a bit bored at work so that contributes a bit too). Since I now not only have all the Linux tools available in Windows, but can also run graphical applications, it is very exciting.

I had a few abandoned projects, but I think I am going to go forward with TronWarp (name to be improved…), which is a remake with improvements on a silly game I made for a quick ludum dare jam back in 2014 or so. It was basically a crossbreed of Hexagon and G-switch, you race motorcycles through an octogonal tunnel avoiding the missing tiles, and you can jump over to the opposite side of the tunnel at any point. It featured crazy graphics (the floor would smoothly change colour every frame) and it was mostly in 2D, doing the calculations for the tunnel in the CPU and then just drawing the triangles myself rather than uploading models to the GPU.


Now, because part of me weants to do some creative OpenGL shader coding rather than doing it in an engine such as Godot ( I know I know, deprecated, old and useless, kind of want to do it anyway) I am moving the whole thing to 3D, with a retro look. Maybe I will even implement a CRT filter, who knows. I also want to beef up the gameplay, giving the ships that race through the tunnel some kind of power so that they can push other racers off the track. However, the main design constraint is the fact that I want 4 players and I want them to be able to play on a single keyboard, which was a feature of the original Warp, so the control scheme is going to be a bit tricky.