17 Feb 2021
I was recently interviewed by Ryan Duff for the Scottish Games Network (SGN) TV channel on YouTube. It was good to talk about the game and Ryan kindly wrote up a glowing article describing his experience with the game. Ryan was most interested in the the impact his Dwerg’s personality would have on the game experience so I’m going to prioritise that next. (After I’ve finished the current risk-reward gameplay and added full-screen and different resolutions of course.)
This past week I’ve been researching for a possible contract job. I’m excited because it is in the gaming sphere and uses web-technology that is new to me. I’ve been learning all about the wonders of Node, WebPack, TypeScript, PixiJS and the myriad difficulties faced by modern web-developers. I’ve been struck by how fast this technology is moving. I’m used to finding answers to programming problems on the web, but I’m finding numerous solutions that no longer work because the necessary feature has been dropped.
My initial project was very hacky and a total mess but I spent most of Thursday refactoring. I removed the dependency on PixiJS and the DOM from the game, added test mocks and adopted a more TDD approach. It felt like a lot of boiler-plate code but I’m more confident and happy that I can put tests around my code. A good thing too, I decided to optimise the ‘pixel-level’ collision on Friday, not something I was comfortable doing without a comprehensive set of tests.
Last week I concluded the way to distribute projects to clients was to set up logins to restricted parts of my website. This weekend, however, I used CloudFront and an S3 bucket to do it instead. This is working but it takes about 25 minutes for CloudFront to update. So it’s not ideal. Actually, it’s much worse. CloudFront caches files for 24 hours. I need to manually invalidate files or implement object versioning if I want to see new content before then. AWS accounts get 1000 file invalidations per month and then they start costing half a cent per file. I think this will be fine for my first contract, but I’ll need to find something better for future work.
The contract work involves making a clone of a classic arcade game from the 1970s. This is a fascinating learning experience for me. By examining the original game’s behaviour in detail I can see the creative techniques used to maintain 60 frames-per-second with very limited hardware. As with most games from the era it is hard as nails from the beginning. I’ve noted a handful of variables that might be adjusted to make the difficulty curve gentler without breaking the core gameplay. I’ve been reading Procedural Generation in Game Design and this game feels like an excellent candidate to try the automated game tuning techniques described by Aaron Isaksen. His paper from the NYU Game Innovation Lab gives you the idea of what this is. Roughly, have a simple AI play the game mimicking human reaction times, tweak variables and repeat until you find fun. I don’t plan on doing this for the contract because of time constraints but I’d love to play around with it at a later date.
Enter your email to receive a monthly summary of development progress on Dwerg Saga.