It seems I negleted this blog for most of the year. Upps.
I'd love to say "I was working all the time behind the curtains, just did not have the time to write posts here" - and I actually had a few projects going that I was working on very regularly. But then Overwatch happened and my hobbyist programming went down to 0.
So let's have a short look at what I was working on this year, have some early New Year's resolutions and maybe even some deadlines to miss becasue those are always fun, right?
tiny GIANT planets
Once upon a time I partcipated in the libGDX jam and created a small, unfinished puzzle game prototype where you shrink/enlarge planets to redirect streams of stardust using the planet's gravity forces. It was called tiny GIANT planets and you can play it on itch. My original plan was to"develop it fruther in a private repository, add way more content, more / nicer assets and release it commercially on PC and Android later this year"which of cause did not happen, at least not the "release" part. I continued working on it, cleand up the code, made it run on Android (as in "it starts and is a bit interactive, but not quite playable") and reworked the engine so the physics stay constant on devices with very low framerate. For that you have to fix the timestep in your game (which sadly is something many AAA studios still don't :/ ).
To be able to do that I had to fork Ashley (the ECS that I used) and provide a possibility to run the physics systems in a fixed timestep seperatly from all other systems that still use the delta time. There was some nice discussion on the pull request but it sadly died down without a real conclusion.
After that I struggled to come up with a GUI that works in small touchscreens and finally lost motivation to continue working on this project 😞
XPLOSIVE
In april, the lowrezjam happened. The most important principle there was "have a resolution of 64px x 64px". My thought was "I'm curious if you can fit a 4-player bomberman clone into this resolution". I knew that with the time constraints and some other stuff going on I won't be able to have anything playable for the jam itself so I did not officially enter it. But I started a project and just continued worling on for a few weeks - it turns out you can fit at least 2-player bomber man in 64 pixels.
I plan on finishing this game pretty soon and releasing it on itch for free.
Server registrar
I hate it when you have to set up port forwarding to play games with your friends over the internet. The obvious way of dealing with it is running official, public game servers - but that can get very expensive very fast and it also kills online play when you decide to shut down your servers.I looked for a solution to this problem in many places and found a technique called NAT-punchthrough. You still need a central server for that but it only has to deal with "introducing clients to servers" so in theory it does not need a powerfull machine, maybe an aws micro instance or a respberry pi could be enough.
I found a few blogs where programmers talked about their implementation and they all seem pretty similar. That's what brought me to the thought "hey, let's make something generic, that you can easily use with your own game without having to implement it by yourself". So I started work on something that in its final form you can put on a low-end machine, point your game to and have NAT-punchthrough "just work".
There a re a few milestones for this project (or its scope) and they all have a probability of happening:
- Working for XPLOSIVE. Probability: very high - if I'm not able to do this, then the whole project is basically doomed, so let's just say I'll do it
- Usable for games using KryoNet. Probablity: high - XPLOSIVE uses KryoNet for networking stuff, so this step might almost come free after step one
- Usable for games made in Java: Probability: medium - Java sockets... enough said
- Usable for PC games made in any language. Probability: low - This would be so fucking awesome, but right now I'm pretty sure that I lack the skill and knowledge to even start on something like that
Plans for 2017 (and some deadlines to miss)
- 15.02.: Finish and release XPLOSIVE
- 01.04.: XPLOSIVE multiplayer works without the need of port forwarding
- Reach step 2 of the Server registrar project and release it
- Finish and release tiny GIANT planets
- Write a blog post at least every month (has this ever worked for somebody?)