March Update: Stories and Swaddles


Greetings! I come to you at the end of March sleep-deprived and riddled with enough coffee to make my cardiologist take early retirement.

No new build to go with this update, but plenty of progress to talk about. Let’s quickly hit what was accomplished last month before I ramble. —

  • Broke ground on the puzzle mechanics for the game
  • Completed the story outline
  • A baby was born!

We usually talk about digital stuff here, so to be clear: that’s a real-life baby! Everyone is healthy and growing and tired and crying and burping and the laundry is constant and…sorry, started rolling down a hill there. Ahem.

Puzzle Mechanics

In the last devlog, I laid out a broad concept for the game’s puzzles, which the player will solve to unlock and play back their father’s memories. These puzzles are inspired by brain synapses — networks of connected nodes. Repairing these nodal networks reveals more of the story and ultimately unravels the mystery of the plot.

Job One was to implement the nodes, and enable those nodes to connect to one another, which led to this prototype —

Prototype of puzzle nodes

Nodes will have some restrictions around what they can and cannot connect to, and how many total connections they can support. To facilitate this, I implemented the concept of a “port” — a node will have a given number of ports, and those ports can (but needn’t always) be assigned a type, in which case they are only able to connect to ports of the same type on other nodes. In the prototype, these are the brightly colored cubes running along the node’s surface. Yellows can only connect to yellows, greens to greens, and so on.

Getting this much up and running was about two weeks of evenings, most of which was dealing with challenges around how to best set up tooling for the nodes/ports — the player will need to be able to connect and disconnect these nodes to one another during the game, but before that a level designer (read: future me) will need to set up initial connections in-editor, and the number/types of ports on a node will need to be iterated on heavily as a given puzzle is designed, so it didn’t seem feasible to just pre-build a bunch of different node classes that would try to meet every need in advance — even if I had the time to pollute the Unreal’s content browser with that many blueprints, all I’d be rewarded with at the end is a polluted content browser where I have to search for needles in haystacks every time I need a specific lego piece from the bucket. No, no this would not do.

Better to set up a means by which a node in a level can be dropped in port-less, and then be given (or even better, give itself) as many ports as the puzzle requires it to have. One envisions two nodes in the level, and connecting them merely by clicking first on one of the nodes and then the other, leaving it to the nodes to create the ports dynamically in a construction script, align them, and connect them up. Which is what I did! And it was TERRIBLE.

The problem with creating the ports in a construction script like that — the thing I too often forget until it bites me — is that an actor’s construction script runs every single time the actor is updated. So you can get that port to create itself, sure, but the instant you move that node in space, or modify any other property of it, those dynamically created ports get destroyed, and the node doesn’t know to re-create them. Bummer.

Automate all a tasteful number of the things

This gets to what I find is a common, essential tension when crafting tools: striking the right balance between procedural generation and manual work. And while a) I still dream of my two-click build-and-configure port system for these nodes, and b) I’m sure someone more clever could actually wire that up, I elected to create the port components manually and lean on the construction script to just maintain their position, alignment, and connection. It’s a little clunky, but I’d rather move on implementing other aspects of the system for now and actually prove to myself later that it’s a problem before over-engineering that little bit of jank away.

Story Outline

Once our newest daughter was born in late February (yay!), there naturally wasn’t much time to sit at a machine and work in the game engine, so puzzle dev took a back seat and I focused more on tasks that could be done one-armed —


— and so, the game has the main narrative arc established now! Tons more to do here of course, but it feels great to have it out of my head and fleshed out a bit.

Knowing this game is primarily going to be a narrative, walking-simulator-ish experience, I’ve been trying to think through how to go about discussing that side of the game’s progression — getting the story elements fully written and produced in-editor will be a ton of work, but to give away too much could ruin the play experience. Something to navigate as I go, I suppose. If anyone here has any thoughts on how to market/devlog a narrative game, I’d love other perspectives.

For now, I won’t say much about the nature of the story, but I will say that even at this early stage I have absolutely ruined my Google account by searching things for research like —

  • what happens if you build improvements on public land without permission
  • cable versus grapple skidders
  • are christmas trees pagan
  • nuclear fallout wikipedia
  • FBI critical incident response group
  • how could I become eligible for witness protection
  • survivalist bunker manufacturers

— ads online should be fun for awhile.

Up Next

I need to get away from the story crafting a bit, let that kind of move to the background and simmer and do something more technical — this month I will be packing up shop and moving to Unreal Engine 5! I’d resisted heavily for months so as to not be the guy-who-chases-shiny-things, but a few tools that I depend on (namely, Epic’s Blender to Unreal plugin) has deprecated 4.x support, and I’d like to keep up with their development since the plugin is being very actively developed in helpful ways. Plus, now that the story is starting to make itself more clear, I think a few UE5 specific features could be very helpful, Metahumans and Metasounds in particular.

And hey, if it blows up in my face, I should know pretty quickly and we just roll back to 4.27! Hooray for version control.

That’s all for now, thanks for having a look! Please send any feedback you like my way, It’d be helpful and appreciated.

-Tyler

Files

aviary0-win-devel.zip 2 GB
Version 0.3.1 Jan 31, 2023

Get aviary[0]

Leave a comment

Log in with itch.io to leave a comment.