Wednesday, January 17, 2024

Final Gunstorm Work

A horrid sleepless night, woke about 4 times due to random small noises, and at one point away for 4 hours or so. My stomach again torments me. I rose weary and groggy.

In the night I realised I had a small problem with Gunstorm and the latest engine update. Steam will sync the Options.txt file upon start and exit, to keep it up to date, but if synced at the start, it would overwrite any custom changes made by the user before the game was run. Editing these options can be used by expert users to customise the game intimately - most particularly screen resolution. If not synced (as in previous games) then this information may be overwritten with each update. This isn't too bad, as these things are only overwritten if a forced update to 'verify' files is done, and these tweaks are easily remade anyway, but it's still not ideal. Here, as in Taskforce, we have mission progress to keep track of; not something we would want to lose.

So some data needs to be persistent, and some editable. So in the night I worked out a solution: two files, one editable which is never saved, so can be freely toyed with, and one for settings which is always saved and up to date. This solves many long-standing problems, as some settings like screen resolution shouldn't really be saved anyway, and it would be best if other data like level progress isn't editable or visible to players at all.

In the morning I added this feature and it worked, so it's now part of the Hector v1.32 engine. I'll add this to my other games when I update those.

These changes took most of the morning, including uploading them to Steam and testing them in situ. One other benefit is that the persistent file doesn't have to be present to start with. It will be saved out at the end, and read from if it is there, but if not, defaults used and a new file created. This suits cloud-synching perfectly.

After those changes, I converted and uploaded the Gunstorm II videos. In the afternoon I put Trax together and released that on my itch.io channel, as planned. At about 5pm, Gunstorm was approved for release, so I made the store live and linked to it, and scheduled the new gameplay videos.

These jobs feel like a never ending treadmill, but such is life in creative works like this. I'll soon prepare things for Gunstorm II, then updates to some older games.

Paul is here; staying for a few days while his partner is away and his boat is being serviced. I'm still reading the Patrick Stewart book and feeling inspired by it. I told myself at one point "Yes! By the time I'm 40 I'll have 'made it' too!" - but of course that was many years ago. Perhaps I'll be a breakthrough success at 60-something then. I wish I could relax, or eat, or both.

Tuesday, January 16, 2024

Gunstorm 1 Complete

The remaster of Gunstorm is just about complete and everything is now working and ready on Steam. I now need to wait for the official approval process, which can take a week or so, then I'll get going with Gunstorm II. It's been a huge amount of work.

The digital process reminds me a bit of contemporary music. Perhaps games have pioneered the way that digital culture is created and vended, but the other arts have rapidly followed suit. Now, thousands of games are released weekly (or daily?), but much of the content is mediocre.

An elephant in the room is automation. AI created games and content that is as poor as books written by AI. Nobody likes this sort of stuff; it's rubbish, but it's 'better than nothing' so will can catch on a little. AI created content is nowhere near a threat to art or artists, the problem is that its sheer quantity and utter rubbishness can drown good art by enthusiasts. This is really sad. I recall now how the Amiga PD Scene ('public domain') of games was indeed full of rather poor things, but all hand made and lovingly made by hobbyists. The automation factor may now lead to an explosion of huge amounts of very similar, poor quality content. It's odd that even the real products sold by Amazon exhibit this feature. One will often find the same camera or sound recorder or tripod, looking identical to 10 others, but with a different brand name.

Well, my games are different because they're from a different era, and I utterly despise and reject AI content. As with my music I've never used 3rd-party game-engines or plugins; everything I make is my own from scratch, which is why my games takes so long and are so much work. The treadmill of using other's engines isn't that much less work though, because things keep changing and 'upgrading' every few months. This dispiriting aspect of technology drove me as crazy as coding does generally. My nerves and body can't cope with programming for long. The process is too exacting, too intense. Programming is like making a house of cards anew each day; an ultra-delicate process, always knowing it's quivering structure must remain intact, and that a collapse means doom and disaster. All programmers feel this; its a neurosis created by computers which has infected the human population as a whole. It's little exaggeration to say that everyone I know as Asperger's Syndrome or ADHD (usually both); but they don't, it's a computer neurosis caused by the social influence of electronic minds.

After Gunstorm, I had thought about updating Bool or Firefly (or both at once), but that can perhaps wait. Having checked, the original Gunstorm game sold 4 copies, and the sequel 8. This update is a much better game, but I expect similar results. I've made it quickly, and made it available, which was my key aim. The game is part of my art, now an odd hybrid between the first decade of the 21st century and its third. I may update Future Snooker and Future Pool with the new engine at some point, but now I'm exhausted and ready to file things.

Here is Xodar, in his new High Definition, wide-screen form:

Deb said that the game was transformed compared to the old version, and it is. Some features are there, and now work correctly; like controller support and an end-game sequence. Both games are now as good as each other. Many of the gameplay features from Gunstorm II are now in Gunstorm I, but the first game has some unique elements too. The second lacks a 'continue' for the classic game, for example, or the Asteroids game.

One game I've not mentioned is Outliner. The new updates to Gunstorm have rather made it obsolete in gameplay. It was always a budget variant of these games (I've made lots of this type over the years: Roton, Xenex, Outliner on Amiga; and Roton, Outliner, Gunstorm 1 & 2, and the Flatspace training - it's all part of the same genre). Aside from its style (of course, style is vital, style is the essence of art - not content - it's absolutely true so say that a bad note played with élan is better than the right note played timidly, and the same applies in all art) Outliner's unique feature are its two-player options, which only Xenex on Amiga had. Xodar, the villain in Gunstorm, incidentally owes the inspiration for his name to Xenex.

Monday, January 15, 2024

Gunstorm Finalising

A final main day of Gunstorm programming. One change was updating the main menu system to make it easier to set the main controls using a controller. There was a panic moment when a right-click froze my engine skeleton, but it turned out to be an ever-present lockout bug due to the main menu system.

The big job today was adding Steam support to the code, which is now largely in, but I must add the achievements. The store page has been started, with 23rd February 2024 set as the release date.

Once the game works and once the store is live an approved, I'll do the same for Gunstorm II.

Sunday, January 14, 2024

More Gunstorming

Nearly at the end of my Gunstorm marathon. Today I recorded the main gameplay videos - the first time I've done this on my new computer (well, apart from taking the SFXEngine videos, but that was a Windows Desktop program). This took (and takes) a lot of time, as the gameplay has to be about right, and show a reasonably large amount of the game. Then the videos need converting then editing. Both games have 4 videos each, each of about 3 mins. Shorter is better.

I also needed to take the screenshots of the games, though this is yet to do on Gusntorm II. I've also re-done the Gunstorm II Steam graphics:

It's hard to make the 'II' glow exactly the same way as the main title, as this was composited from the actual game colour and alpha maps. These new graphics look better. They have a darker fade to the edge, and uses the correct 'nebulae' for this game.

I also tested and got working the game controller input. The controls were labelled wrong, so that needed fixing. These are translated too, so each key (300+) needed translations into French and German.

I'm feeling stressed and uncomfortable, overloaded with things to do, but the end is in sight. The next steps are the Gunstorm II screenshots, then the Steam integration programming.

I've decided to release Trax as it is on itch.io at some point. This was my first ever 3D game, my first after over a decade of making 2D games on the Dragon 32, the Commodore 64, the Amiga. The game itself is not great, though a suitable update to Burnout, my last Amiga game, and could and should ultimately be better than that game at least. It does, however, look and act worse than almost all of my other 3D games, partly because it was my first game of that sort. It would be quite a lot of work to update to modern standards, and largely pointless work - why update a poor game? It would be like taking a bad film and working on an expensive 'digital remaster' of it. Unlike films, however, I could improve the game itself as I worked.

Still, this, if I ever update it at all, will be at the bottom of the list to re-work. Breakout Velocity and Fallout will probably never be updated because a new game that mixes bits of both would be easier and better in every respect.

The current (ancient) version of the game does run on my 2024 Windows 11 PC, so I may as well put that on itch.

Saturday, January 13, 2024

Gunstorm Work, Patrick Stewart, A Walk In The Countryside

A sleepless night of stomach pain and nightmares. At times I can feel quite despondent at these random bouts of illness which last all night.

This, however, led into a full day of work on Gunstorm 1 & 2. The primary jobs were Steam graphics for the store pages, this sort of thing:

There are about 15 graphics of specific sizes to create. This takes a remarkably long time; longer than formatting the manual.

I've also made a few little changes to the games. Gunstorm 1 now shows a "Press Space to skip" message during the Xodar intro, as Gunstorm II does. Pressing Esc or Space will skip, though not fire as you may want to blast away at Xodar's ship. Fire will skip in Gunstorm II however, as it's a standard in that game that fire skips all text screens. I also fixed the language selection, and several smaller things like optimising the nebula scrolling.

The changes are growing smaller and smaller, and sometimes backtracking, which shows that he end is nigh for the design. It's amazing how long it's all taken, I've made at least 100 changes to both games, which were supposedly 'finished' when I started. I've yet to test either with game controllers, or add any Steam integration. There won't be online stats/highscores stored because these are too easy to hack and fake, but there will be achievements for defeating Xodar, and for each echelon of Gunstar points attained.

I've continued to read the Patrick Stewart book with happiness. I can relate to much, but also realise with sadness that there are elements of my personality that are very flawed compared to most humans. I remained silent and alone until I was well over 30, trained to be fearful of being with humans. Pat had done and experienced more by 19 than I had by 40. Still, the book attractively oozes enthusiasm for acting and I found myself reading out loud the Shakespeare quotes.

In other news, the remastered A Walk In The Countryside was launched yesterday, and the primary video of The Cat Phone Song. It has already had more views than the old (many years old) one. My videos are, gradually but certainly, more popular as each new one is released. The video for 'I Think You Love Me' has had over 300 views in just over two weeks, and is one of my all-time most popular for music, and there is a clear trend of newer videos, newer music, growing in popularity.

Friday, January 12, 2024

Gunstorm Continues

Two full days of work on Gunstorm 1 & 2, both technical upgrades and adding features. Lots of new features added to Gunstorm in particular, adding features that were present in Gunstorm II, like follow-the-cursor mode, and the ability for fixed or random level layout. A new icon and logo for both games:

This itself was a challenge to create. It was rendered in the game itself because the texturing is complex to match, and this meant creating a hi-res version of the texture and lights. Then, re-creating in high resolution all of the backgrounds, the stars and nebulae, and the backdrops for Gunstorm II. Here is old vs. new for Gunstorm:

All created using Genetica 3 (which is apparently obsolete today, but this old dog likes this old trick). Star-fields can be tricky things in games. They can 'glitter' if too high resolution, as can other textures. Like anything aesthetic, these changes all involve a lot of testing, trying, tweaking, and this takes time.

Today, more work, and changes to the Marrowmore Minerunner game in Gunstorm II. I also created the pdf manual. Once the look is finalised (it needs a little more work), I can take screenshots, a video, and work on the Steam graphics. I've been working on this for one week; quick, but I can't be quick enough. I think these are great games, some of the best I've made, but I always think that, and I'm not liable to sell many of these, not a week's wages worth. Each day spent on them feels good, addictive, and these, my work, need to be 'out there' for the world to see and discover, but I know that the thrill of working on a game can be a poisoned chalice, and that I can spend weeks of my life on these things, this introspective activity. I'm starting to feel the need to move on, so I must work faster and harder to complete these, and then the other games.

Onwards we must charge.

Wednesday, January 10, 2024

Bug Hunting

A restless night, running over in my head the possibilities and plan of attack for combatting this new bug. I have an array of techniques for finding a bug, but this one was unusual in that it had a specific result - a freeze after about 1 second of running, and only about 20 or 25% of the time. The main program seemed to keep running in the background, so it was primarily a display problem.

First I found old copies of my engine and tested those. Again the same problem; so this wasn't caused by recent changes. Then I set up a key-press to play a sound. This proved that when the graphics were frozen the main game loop was indeed running, but at a crawl of about one frame per second. By this stage, I'd ruled out it being a timer problem, and by flagging off various lines, had ruled out it being pretty much anything to do with my code, it must be a system problem.

I tested Gunstorm 1 & 2 last night on Deb's computer and it worked fine. Then, today, I tested it on various resolutions. They all worked apart from when selecting the desktop resolution. The start-up was different too; the screen paused and went notably black for about half a second when starting normally, but when the desktop resolution was chosen, it jumped straight in to the game, and then the bug appeared: About 25% of the time, it would visually freeze. Curiouser and curiouser.

I tried switching screenmode in the program while it was frozen (blessed that the main loop kept running, so the keys would respond). This worked, it re-awakened the program. Then I tried resetting the screen device, and this too fixed things, actually restoring the program in the correct resolution - so I had a fix. But a fix like that would be no comfort to a player. Having to press a key to wake up a dead game isn't a feasible solution, even if it's a rare event.

So, I wondered if I could start in a different resolution, then switch to the desktop one. I made it start in 640x480 (still a standard for graphics cards, but nobody would have a Windows Desktop of that size), then switch to the final one. This worked! The screen went black for half a second as though resetting, then everything started and seemed (seems!) stable. So, the bug is either a fault in the DirectX9 implementation on Windows 11, or a driver fault. Resetting the display fixes it, so it appears that 'changing' to the current resolution doesn't act correctly, doesn't reset or flush data or something like that.

Now, its not ideal to change resolution twice every time, it's two screenmode changes in quick succession, and graphics cards or monitors might not like this, but there's no easy way to avoid it. I can test if the user selects desktop resolution, but can't test if the 'best' (or any other) screenmode is the desktop resolution because a screenmode is only confirmed as valid by actually trying it, and by then it would be too late.

So the best option is indeed to do this every time, but I've added a new option, 'robustinit', which can be switched off to use the old behaviour of a single jump into the correct mode.

So, 24 frantic and full hours spent on this bug. Now I can continue with the game updates proper.

Tuesday, January 09, 2024

Programming Hell

Hellish hellish hellish day. The worst nightmare in programming is a spontaneous, unexplained and untrackable bug magically appearing from nowhere, and this has afflicted Gunstorm II. About 25% of the time, the game starts 'frozen' with a white screen, locked about 6 loops in. I couldn't explain it and flagged off lines to track down what might be causing it. In the end, I flagged everything off and it still happened, about 25% of the time.

Then the same thing appeared in Gunstorm, and in my basic Skeleton, the root of all of my games! I'm at a loss and have spend all day, endless hours running and re-running things, trying to find it, trying to stop it. Part of me thought that it was nothing to do with me, but a security trap (recalling the random 'black screen' bugs in Taskforce, which were caused by Windows Defender).

But this doesn't feel like that. It seems that part of the program does run, when frozen, the menus still sound and the exit key works, but at very slowly, 2 seconds per loop. The screen won't update though so I can't tell if sprites are moving or other things are happening.

Utterly dispiriting. If I can't fix it then all of my 2024 plans for game remastered are cancelled. This idiotic bug is so fundamental that I'd expect it to be in all of my games: Future Snooker and Pool, Taskforce, Flatspace, yet I can't remember experiencing it. Very odd. Very frustrating.

Hellish.