Saturday, January 20, 2024

Gunstorm and Flatspace IIk

A welcome rest day yesterday, a long awaited trip to Sandbach for a break.

Gunstorm is complete and approved. There was a query about controller support, but the game is designed for mouse/keyboard control, so rather than changing the game to add automatic controller support, I changed the description to 'partial support'. The game can be played fully using it but some elements are clunky; you must set up the controls first, the game won't pause if the controller is unplugged, etc. I can do these things, but it felt messy to have fully customisable game controls, but force some controller buttons to be fixed. I didn't want the default controls set to a controller because Gunstorm, like first person shooters, plays best with the mouse.

I spent yesterday morning and all of today looking at the Flatspace IIk code, slowly upgrading the engine to the latest one as used in Gunstorm. The hardest bit is the text support, there is a LOT of text in Flatspace IIk, and Hector v1.33 uses bytes rather than chars for text, so a lot of casting was needed. It's a bit of a nightmare as some areas use chars, some bytes, and as the game works as it is. I'm tempting fate and destruction to toy with it, but having the most up-to-date engine there will fix any bugs I've fixed before. Little benefits so far are that the font now includes all European language letters (167 characters, up from 127), the lens-flares have doubled in resolution, and the control options have increased, with all keys plus mouse and controller (and potentially up to 4 mice and 4 controllers).

The aspect-ratio handling was always a bit sap-dash and panicky. I use a 4:3 screen, which is very rare now. The game was designed for it in 2003, when 4:3 was the standard. I much prefer this shape of screen, and this now gives me an advantage because I can program for both aspects. For Gunstorm I developed the game for 4:3, but chop off the top on 16:9, which is how I play it. It does make the game more difficult, but looks consistent between screens. Flatspace isn't. It looks fine on 16:9 but stretches everything vertically on 4:3, making the spacing gappy. Perhaps I can address this.

One reason for doing this is that if I ever made Flatspace 3 I will need to. I couldn't use the patched, hybrid new-and-old engine, but it would need to be all-new. Flatspace was the first game with my complex menu system, which is super easy now and much better than the complex one Flatspace uses. I don't think I'll be able to upgrade this.

Next things to upgrade are the Options, then look at that aspect ratio. This, I think, I hope, will be the most difficult game to update, partly because it so big that testing it is very difficult. I can see if it 'looks like it works' but there could be screens and options in there that are already corrupt. I'm worried about the text conversion already as things like character names in save files might be affected.