Posted July 03, 2022 by goerp
#musings #future #post-mortem
The game is 'out' for a few days now and have had plenty of time to think about choices I made and things to add to it, if I decide to work on it again (time and motivation permitting).
One of the main reasons this idea grabbed me, was that in my mind there was this whole alternative world where this played out. I was thinking about how this would/could work, how communication would work, trade, Like how people would travel from place to place to prevent inbreeding, how generations of Train drivers would work.
This ofcourse doesn't come across in the game. I had planned to incorporate it into the manual, but left it too late, messed up my files at the last day and had to skip it. It's still in my head and I am planning to make it also part of the game.
To reduce size I removed one of the 6 terrain types during, After I made the decision I never really missed the extra type (it was plains if you're interested).
all changes below are not necessary, they just add flavour
And while I'm fantasizing anyway: with the 4K restrictions gone I can make it look a bit smarter.
At first I thought about including a SID tune made with SID Wizard, but I soon realized that there was no way I could fit that within the 4K. In the end that turned out pretty good, I think: I now have a very simple routine that is well suited for more programatically constructed tunes.
At the moment that is not the case, but that is because of size constraints. All 4 tracks have the same rhythm parts for that reason. The choo-choo-chords and bass parts all take 16 bytes per variation. The rhythm part too, but that could also be 2 bytes, because I use a 1 for a "hi-hat/tshh" sound and 0 for "bass drum/thump" sound.
The music is very simple but does convey the moving train feel, I think. The music is played in a random key to add some variation.
I also like the 'tshh' sound when the train has arrived at the station. It needs only a few bytes too.
I think the seed of the idea of this game was planted when I was thinking about FTL. I really want to like FTL, but I just am too bad at it and hit the wall pretty fast.
The randomness can feel unfair but is also interesting. Well, this game is very random too.
I like the randomness of the game and I do think you can prevent the worst outcomes by planning and making the right choices ... most of the time. But I',m sure some people would be turned off by the fact that so much is unknown and random ("why don't I know what type of terrain is coming up?").
I started with 6 terrain types with about 16 variables. All those variables should be random but within a range depending on the terrain. If you take a 16 bit value for the starting number and for the range you need 16x6x4 = 384 bytes. I thought that was too much, so I came up with my own kind of 2s complement. Starting number and range are defined as : 3 bits of a negative power of 2 and 5 bits for the details. The 5 bits would be the most significant byte of a 16 bit number which would then be right-shifted a number of times indicated by (the 3 bits +1). This would give possible numbers of 3968 to 0.
That's all fine, but I decided that the range would increase the more you played to add more randomness while you played, This would be the added dificulty. But that meant that you had to deconstruct the range number add something to it then compress it again. And the decompression would have to be done every time you read the tables. That all adds code and I'm not sure if I saved that much memory with it (if at all).
And the setting of random values actually takes a bit of time now. When you start the game or pull into the station there's a delay that is caused by determining the different values.
I had to write tests, because I had no idea if my complicated algoritms really worked. But they were quite easy to add and I could use a simple flag to run them or not. They helped quite a bit.
Would be nice to have a program that can give an indication of the impact for gameplay. During the development I was guessing a lot. Having someone who playtested it really helped, so if I can find people to do that, that would work too.
Overall I was pleased with what I came up with. I'm sure it's not for everyone (the game is slow for instance), but I like playing it.
I think it would be nice if you had some more variation and have some more control. I have an idea I think that I think would add some nice features to, some more tactics to apply and tie it more into the world I have in my head.
One nice thing of the last change would be that I would have a use of the big empty space in the right part of the screen: it could show the Train Driver and family see this amazing (ahem) concept art:
[EDIT 23-07-2022: changed the concept art. I'm not going for a comic style.]
The games seems to work pretty well and development was reasonably smooth. There were not that many big bugs and all but one were found pretty fast. So that seems a solid foundation for future development.
It would probably need some cleaning up, but it's not terribly spaghettified. I think the interrupt is the messiest bit, but making the terrain tables from straight 16 bit numbers is the easiest way to make progress.