Post mortem and future musings


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).

The world

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.

Different terrains

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). 

On the wishlist for terrains:

all changes below are not necessary, they just add flavour

  • more interesting background (sprites) when travelling (easy, should probably just do that).
  • add colour to the screen (quite easy, but should take  care not to make the screen messy)
  • add seasons or daylight cycles for travelling (no idea how but would be nice, combined with some of the changes below)
  • would be very nice to pull into an actual station, maybe see people walking about (reasonably hard and probably a lot of work)

And while I'm fantasizing anyway: with the 4K restrictions gone I can make it look a bit smarter.

Music/sound:

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.

On the wishlist for music:

  • more variation of chord parts (not just 7-chords) and maybe longer chord progressions (relatively easy)
  • more variation on the bass parts. Bass parts follow the chords so should be easy to do. Add some different rhythm variations (very easy)
  • more variation in the rhythms. Very very easy in the present form. Maybe lengthen the parts
  • different play speeds. On long stretches (like the desert) music can be slower
  • if possible construct random tunes that still sound OK.

Randomness

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.

Testing

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.

Gameplay

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.

On my wishlist

  • Change the arbitrary maximum locomotive level. I chose 4, but there's room on screen for at least level 8 without any big game changes
  • More finetuned difficulty curve. Use tables for the coal use of a locomotive with certain length.
  • Maybe get some more info about your carts, like how many passengers are in it, how far good have to be transported. Although I also like that you just have to remember. Maybe just the amount of passengers because that matters when you sell a passenger cart (you'll have to refund any passengers still travelling)
  • More variation in carts? And make it more relevant. Not sure how, though
  • Events (negative and positive)
  • Maybe buy info about upcoming terrain/prices?
  • The big change: make the train driver a character with stats. Find a partner with matching or better stats in a station. You can get offspring based om those stats and retire at some point  from which point the offspring is in charge. Was thinking of stats like: 
    Insight (intuition of what stations are coming up and the stats of your potential partner),
    Technicality (how much coal you use, the wear and tear on your train),
    Charm (influences all prices).

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.]

Technical

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.

Files

infinirail (compo version).zip Play in browser
Jul 01, 2022
INFINIRAIL (compo version).d64 170 kB
Jul 02, 2022

Get Infinirail

Download NowName your own price

Leave a comment

Log in with itch.io to leave a comment.