Header image
banana4life

Making a Game about playing Games

posted by Unknown | 07 October 2025

We found the theme "Collector" to be rather limiting, leading to mostly "obvious" game ideas about collecting things. Generally, we like to implement the theme with a twist, but we struggled to find a twist for this theme.

That is, until we realized that Ludum Dare is about playing games and collecting ratings, so in a sense ldjam.com itself fulfills the theme. So idea was clear: Build game for ldjam about playing and rating games of ldjam ... a meta game ... MetaJammer.

A while back I toyed around with ldjams API, so I had some basic code laying around to query the node graph around jams and games, which we took as a basis. The lack of documentation of the API and a bunch of (probably unintended) behaviors of the API still swallowed quite a bit of time, but eventually we got something working with a bunch of caching to not overwhelm the API.

The original idea was that you login with you ldjam.com account in our game and then, if you submitted a game to the current jam, your game would be permanently placed on a global hex grid with the camera centered on your game. You could then pan around the map to see other games, that were previously uncovered by people joining the game, or you can yourself uncover new games by clicking on empty tiles.

Unfortunately ldjam.com does not support OAuth or any other delegated authentication mechanism, such that we can perform actions in the name of the user without receiving the credentials of the user, so we ended up with a "login" that consists of merely providing your ldjam.com user, which we will then lookup using the API. We considered alternative authentication approaches, but they all seemed too convoluted and error prone to reasonably expect players to use them.

Since the ldjam.com API also doesn't provide details about what games you played and what rating you have given, we decided to go without our own rating systems in our game, persisted globally. You can rate games and assign awards. The awards will be shown as particles on the game grad for everyone to see, the rating can be seen by interaction with the game.

Games with web versions are uncovered with priority and games with web version receive a button to immediately launch it in additional the the button leading to the ldjam.com for jam ratings and comments.

We used three.js with TypeScript for the first time, which worked ok for the most part, but we will probably not get back to it. The backend was written in Scala as part of our website. Source code is on github as usual. The game can be fully self-hosted by running the website in a stripped-down mode that only hosts the API endpunkts for MetaJammer.