PC, Mac, Linux
When I played One Dreamer‘s demo back in June, I figured this could be something special. It looked to be a game about a failing game developer, presented using a combination of point-and-click, and coding puzzles, but in an accessible way. And that’s what it is! Hooray! In fact, it’s far more lovely, engrossing, and superbly put together than it already seemed.
Frank is a games developer who has had an indie hit, a VR multiplayer MMO called ProxyLife that was briefly a big deal. But now it’s struggling, player numbers are dwindling, and the lack of a constant feed of new features is demoralising its player base. At the same time, Frank is working some soulless freelance (a situation familiar to almost all indie developers), helping a AAA game to implement stricter DRM, or lowering the statistical chances of players’ receiving in-game currency.
However, none of this is told in a straightforward manner. Instead, through what seem like they could be dream sequences, we learn the history and motivations for the creation of ProxyLife, in extended sections where Frank is able to edit the code of the objects in the world around him. Here, using the game’s pseudo-code (a simplified version of C# that even I can comprehend), you can–say–reprogram a duck to meow like a cat, or more usefully, control a lever so it opens a distant locked gate.
In the real-world portions, where Frank works surrounded by overdue bills and threatening letters, such programming is restricted to his computer, where you’re tasked with making these mercenary changes to the AAA game, while trying to pick up the pieces of your own. As someone who has never managed to get on with games that ask me to learn and implement code, I’m delighted to report that’s not the case here. This is so smartly designed that it operates like puzzles, while sneakily teaching me the basics of code structure. But then, brilliantly, it’s mostly only teaching me how to bodge.
There’s a lot that’s smart about One Dreamer, from its narrative structure to its ridiculously beautiful pixel graphics, but the way you’re required to solve puzzles using coder bodging is just great. You need to remove that feature that gives new players 100 coins? Change the value of a small CoinRewardTier from another section of the game’s code, then copy and paste that into the NewPlayerData such that startingCoins = CoinRewardTier.Small. Sure, that’ll likely break something else somewhere else, but it does the job for now.
This idea of making do, of cutting corners, permeates all the puzzling in the game, making it so delightfully honest, brilliantly teaching bad habits. So many coding games are so exhaustingly worthy, acting as if they are benefiting the player with wondrous knowledge–not here. Here, in this superbly crafted game, even the coding puzzles lean in to the disheartening tone of trying to stay afloat during disaster.
The story is told very out of order. The introductory spiel I gave you at the top is where it feels like things start, but as you play you jump about the timeline in a way that’s very deliberately under-explained. For the most part this works very well, but there are occasions when I found myself confused. There’s also one rather pivotal moment that’s somewhat underplayed in a cutscene, leaving me pretty unsure about what had just happened. I mean, I figured it out, but it’d have been nicer if it had been somewhat better explained.
My only other gripe with the game is how slowly Frank moves when going up and down stairs. That’s something you do with him a lot, as he traverses the 2D side-scrolling scenes, and it allows for the game’s beautiful moments where the location changes as you enter a door, or climb a staircase. But he really takes his time, and it does start to drag. But, heck, when this is my main complaint, you know you’ve got a cracking game here.
The art is just spectacular, especially the lighting and bloom on those pixel characters, which is made even better by superb voice acting, and a really lovely soundtrack. This is so damned solid.
It’s also an awful lot longer than I was expecting. At a point where I figured things were winding up, I looked at a YouTube playthrough (in order to rewatch the confusing scene I mention above), and learned I was barely halfway. So at this point, I’ve not finished, but I’ve played enough to know how much I wish you would too. This is something properly special, a fascinating and moving exploration of the drives behind so much indie development, and how incredibly unhealthy and toxic it can become. And yet it also feels full of hope, full of the potential of creation. And, somehow, it’s even got a doofus like me solving coding puzzles.