Some Well Overdue Engine Maintenance
Hey all! I need to update everyone on the state of the source code, the engine, and therefore the development of the game. The tl;dr is that the month of September will be predominantly taken up by back-end work, and we might lose a couple of small features, but we'll also hopefully get some shiny new ones.
So firstly, for context: When the first line of Trap Quest's code was written way back in 2011 (I believe the exact line was probably "Dungeon01 is a room"), the latest version of the Inform 7 development environment was a version called 6G60 (and the only important character there is the 'G', really). This was a version with lots of great extensions that had been created by some amazing people over the past years, and allowed us to do cool things with graphical windows, hyperlinks, and so on.
Then, in 2015, the developers of Inform 7 created a new version of the IDE, which after a few fixes eventually ended up being called 6M62. It improved many many things, including some major issues that 6G60 had dealing with games after they began to grow above a certain level of complexity. 6M62 contained several major changes from 6G60, meaning that pretty much any game longer than a few lines of code stopped working and needed a number of minor changes in order to compile successfully. Even worse, this meant that all the extensions people had created for the engine were no longer compatible. Several authors of some of the most popular extensions became disheartened and abandoned their extensions, leaving them indefinitely incompatible with 6M62, and there were very few people in the world with the knowledge, drive and spare time required to fix them, most notably including the extensions that that allow Inform games to spawn extra windows and draw graphical elements in them.
So we have struggled on and on in 6G60 for these reasons, working on an unsupported platform with unsupported extensions, meaning that we couldn't, for example, report bugs we found if the compiler halted in 'abject failure' (it really likes this phrase). Over time this has become more and more painful, and increasing amounts of our time has been spent trying to find ways to circumvent the issues of the old compiler, or reduce the complexity of old TQ code, rather than working on new stuff. Recently we have reached the point where I have literally been unable to find a way to reduce the complexity of the rest of the code enough to get the two most complex character windows (Wonderfuller and Porn) to compile at all. The other windows would inevitably shortly follow suit as more content is added to the game.
Fortunately, since 2015 a few select awesome people have put in the hours to upgrade some of the most popular extensions, including the graphical windows ones. For others I have managed to hack together some fixes myself, although as of this moment I'm not too confident in how stable they truly are - it remains to be seen. Anyway what this means is that it should now be realistic to upgrade Trap Quest to run on the 6M62 compiler, which will hopefully help us resolve the issues we're having with code complexity.
For the last week I've been performing a sort-of 'impact assessment', working to try and get the set of extensions I want all compiling at the same time, attempting to fix ones that were almost-working-but-not-quite myself, and creating some proofs of concepts once I got the extensions themselves compiling. This is what I have discovered so far:
Things that we will no longer be able to use (this list was a lot longer at the start of this week!):
File Based Undo (only impacts donators)
Things that will take a decent amount of work to develop better solutions for:
Displaying inventory in a way that doesn't suck
Validating patreon supporters
Things that will be better (after I put a lot of work into their design!):
Menus - we should be able to make them graphical and clickable (may impact compatibility with Android)
Sub-Windows - we should be able to have a lot more control over their various sizes, and potentially have more sub-windows, e.g. for the player's inventory, and image of most recent object-of-interest
Things that look like they might have potential to be better:
Looking - we might be able to allow the player to 'look' each turn automatically, without reprinting the room description itself. Not sure. Also, we might be able to allow the player to look at what objects are in the neighbouring rooms.
Map - we might be able to make this clickable too, for navigation commands.
Overall impact assessment:
This is probably a good thing, overall. It's forcing us to properly research and then do something that we should have done for some time. However it means that the next weeks will require us (and by us, I mean 99% Aika) to work on this and not much else. I'm going to also write up some more epilogues so that Patrons don't feel like there's no point being a September supporter any more (I've been irresponsible with money and have some huge tax bills looming, so I still desperately need your support!), but except for that don't expect me to be working on much other new content. My current target is that there'll be a new shiny version published before the end of the month, but I will keep you all updated on how things are going and if the estimate changes (for the better or worse). These updates will primarily be via Twitter.
The answers to some questions I'm anticipating:
Q: Why don't you just port the game to a more powerful and flexible platform?
A: I think this would take at least three months to half a year to get even just a working prototype off of the ground. I don't think the gains from doing this would offset the lost time and there's no guarantee that we could make it work as well as Inform does. We could even get halfway through the project and then realise there's some really big roadblock that stops us implementing an important feature. So I don't want to do this unless I'm literally forced to (i.e. 6M62 doesn't work out for some reason)
Q: Will this make the game run faster?
A: We don't know. My best guess is probably not. We do have some other plans in the work, though, to try and smoke out and then work on whatever parts of the code are causing the largest amounts of lag.
Q: If it's becoming more and more difficult to develop TQ, Why don't you just call it quits with Trap Quest and start on its sequel or a spiritual successor, or a new project altogether?
A: What I've been trying to do is start working on a new project in tandem with TQ, so that by the time I retire from developing TQ I have something else that is playable and popular, so I don't suddenly lose most of my income. Also I've experienced a tough lesson concerning financial responsibility over the last year (I won't go into details for privacy's sake, but I tried to steamroll ahead with too many major life changes and milestones at once) and my plan is that the exact level of my income will be much less of a stressful concern for me by this time next year once I've caught up with my tax bills.
A final note from Aika:
Thank you all for your patience and support, and to the people who send me wonderful messages telling me how much they love the game and its vision. You guys are the reason I still have the motivation to work so hard on this messy spaghetti code of a project!