Blog

  • Eclipse and my setup

    Eclipse 2024-03 is out. Like most Eclipse releases there’s not much interesting in the release notes - and that’s fine, because Eclipse is already a fairly solid IDE.

  • It's still going

    HAPPY NEW YEAR!!!! … What do you mean it’s almost March?

  • Debugging a weird GameMaker runner crash

    While working on Catacombs Plus, I was encountering a weird issue where, when you started a new run after ending one, the runner would just crash with no error message.

  • Catacombs Plus

    Somehow, it’s been over a year since I took part in Ludum Dare 51, which resulted in me creating a game called Catacombs 51. I’m actually reasonably proud of this game, but being made in 48 hours meant it was very rough around every possible edge and pretty barren of content. In the past month or so I’ve been revisiting this game, with the goal of greatly smoothening out those edges, and eventually adding more content. This project is being tentatively titled Catacombs Plus.

  • Now on Jekyll

    I’ve just finished converting my site to use Jekyll, replacing WordPress. Hopefully I’ve preserved the permalinks for every post and page as best as possible. This will have reset the RSS feed’s post IDs though, so if you follow this blog via RSS: 1) What’s wrong with you? 2) Sorry, won’t happen again (at least for a while)

  • Apple Event thoughts

    May as well.

  • Today's journey in "maybe centralisation isn't all it's cracked up to be"

    Gravatar is a global avatar service. You set your avatar on Gravatar, and it shows up on every site that uses Gravatar. Like this one. Or my Redmine instance. Or a bunch of other places.

  • Procedural generation in Catacombs 51, my Ludum Dare 51 game

    Back in September I participated in the 51st Ludum Dare Compo, a 48-hour game jam. The theme for that event was “every ten seconds” - and I ended up creating Catacombs 51, a 2D roguelikeish shooter thing with procedurally generated maps. And now, ten months later, here is a write-up on how that procedural generation works. Partially as it’s a decently cool aspect of the game that I think it’s worth sharing, and partially because I’m doing other 2D procedural level generation stuff right now and wanted to give myself a refresher.

  • Patching between every possible combination of IWAD versions as fast as possible

    Not too long ago I added an automatic test suite to Omniscient, my graphical Doom IWAD patching utility. This test suite performs every single permutation of patches, and outputs the results in a JUnit XML file. Wired up to my Jenkins instance this allows me to spot when I break stuff pretty quickly, and is especially useful in determining when specific patches break.

  • Back from the dead

    Here’s one of my favourite Java tricks when working with native libraries with manual memory management. To free native resources in tandem with the garbage collector you can use finalize(), but finalizers run on a separate thread owned by the GC, which is problematic for some libraries like OpenGL where a context can be used by one thread at a time and it’s annoying. So this trick uses finalize to revive the object just so it can have its native resources deleted on the main thread before letting the GC actually take it:

  • 1
  • 2