Devupdate - 4th November

04 Nov 2016

God I miss this stuff. The last 10 days I’ve been down with a snotty cold. The first week was a complete wipeput because Finland, bless it, hasn’t
quite caught up with the idea of dosing yourself to the eyeballs with a cacophony of drugs to ease
yourself through. sniff

It’s not been all bad though.

Lumo received its first bit of fan art!

I’ve never been given something like this before. I was a bit lost for words, tbh.
Complete surprise, but it cheered me up no end. Thank you Cris_Cat_Kun, you made my day.

Lumo’s out in Japan now, and got a respectable flush of 7s from Famitsu. Again, another bucket list
tick, this. I love magazines, and I love seeing my work in them. Famitsu is one of the longest running
and most famous, and even today, it’s a healthy 230 pages of madness. Props to all at Rising Star who
worked behind the scenes to make this happen.

Even the Finnish press have got in on the action!

Annnd, I’ve finally got my hands on the boxed version.

Again, another one off the bucket list.

Since Sudeki I’ve had a little ritual of going into the local game shop, seeing what I’ve worked on nestled
among all big games of the day, and buying it with a big grin on my face. I didn’t catch Lumo in the wild but I was able to
buy it off Amazon, which still counts IMO.

Development wise it’s been a bit slow, what with the man-flu, but I’ve had some productive train coding sessions the last few days.

One of the things I’ve been tempted to do for Neutrino since the start is roll all my tools into the framework so I can carry it all
forward to multiple projects. Key to this is the map editor. I started scratching out what would be required for this, but decided to
pull back. It’s obviously going to grow arms and legs before taking on a life of its own. I’m old enough to know better.

The obvious alternative is TileD, an open source map editor that’s been around, in one shape or form, for years. I’ve looked
at this before for Beat Arena (another project I might return to one day) and passed because it’s quite rigid and a little old school. It’s
not changed much since I last looked at it, and the limitations of using fixed size tiles and rigid grid layouts is going to get on my nerves very quickly,
but it’s a sensible short-cut to create the background layers for Neutrino. I can write some custom tools for spline editing and wave triggering.

There are still a couple of hurdles with this approach:

TileD outputs to TMX or JSON formats, neither of which I support. The Neutrino framework uses libconfig for parsing the various text-based data files,
and I’m loath to add new dependencies. (There’s a good argument for dropping libconfig and just using a single header JSON library, but that’s a question for
another day.)

TileD also expects you to be working with a texture page of square tiles, which is fine, except I have no intention of just using square tiles in any of my games, or
of introducing extra draw calls just so the square tiles can be on their own t-page…

Currently I output texture pages via a build step that runs the individual art assets through Texture Packer, an insanely good
tool for taking a collection of images and spitting out an optimised t-page. (BTW, if this isn’t in your tool box, it should be.) This leaves me with
a .png containing all the sprites, and a text file containing all the sprite meta-data (position within the texture, size, etc).

TileD doesn’t seem to have a way for
me to mark the individual tiles in a t-page by hand - due to this expectation that they’ll be square, so easy to identify in the texture page automagically - meaning I have to drop in individual
assets in order to make maps. Not a problem, except the ID of tiles in TileD’s output will likely differ from the meta-data of the texture page.

It’s stuff like this
that has tempted me to write my own map editor for the last 6 or 7 years…

Anyway, the problem was easily solved with a Python script to pre-process the TileD JSON output, fix the mappings, and then spit out a libconfig format file that
Neutrino can then use to build a VBO of the tile map. This can be inserted into the build process, or just done as and when it’s needed.

Building a VBO of a tilemap is one of those jobs that I must have done 3 or 4 times now. The only thing I think I’ve written more times is a text writer. Literally, the
code to parse strings and spit them onto screen. I keep promising myself that “this will be the last time”. We’ll see if this one is…

When I get around to it. Obviously this
week I prevaricated and put in a few debug bits and pieces that I know I’ll need, the most important of which was the debug fly cam. (Mainly cos I know my first pass at
the tile map will probably end up in the wrong location, so I’ll need to fly around to look for it…)

This ended up being a fun little job as mapping keyboard and joystick input to controls for various player actions involves a bit more than you’d think. For a start, joypads
can be added and removed at runtime so you need to be able to move controllers between players, and keyboard layouts differ between locals, so you can’t just “detect a letter”
and be done with it. SDL’s docs have a couple of gotchas around how you handle this stuff, but I was able to get it all working nicely. The only thing that’s missing
is exposing an interface for assigning controllers or redefining controls. As that’s game specific I figure I can put that off for now.

I’m hoping I’ll get a day clear to go back to Oh Snow next week, but with three teaching courses on the go that might be wishful thinking. Either way, I’ve had
fun this week. In between the sneezes.