Saving Is More Complicated Than It Seems

This week was adroitly summarized by the title. As it turns out, saving your game is more complicated than it seems in Unreal, which if I may delve into high level terminology, (high level as in easier to understand, not high level as in harder to understand, there’s a weird difference between the two uses when it comes to general speech and programming speech) you can’t seem to store actors into the Unreal save construct and then take those references and load them back into the same actors.

In my circumstance, I wanted to move a gateway, save the actor, and then when loading have that gateway actor update itself to the save state version, copying all the variables (specifically the location vector in this one). But it turns out that just doesn’t work.

I have a workaround that involves giving all the objects in the scene IDs, and then I save those IDs and have the gateway IDs reference the hook IDs and have them swap, and it works. I’ll have to expand it as we expand our game, so more variables get saved. We’ll see how that goes.

Other more minor things I did this week involve putting in a new font for the game, fixing the shake when the painting character lands so players don’t get migraines, removing the checkpoint system – which is just outdated at this point – from the menu, fixing the bug that caused the game to fatally crash when you returned to the menu (it sounds a lot worse than it was, there’s very little need to go back to the menu right now, so it was mostly something players found when they went to quit), and as always, the various bugfixes.

We’ve only got 2 weeks until Spring Break, which isn’t really a milestone or anything important, but it is a date we can anchor progress around, and I believe 5 weeks after that, so we’ve decided to focus our next 2 weeks on getting everything mechanically in that isn’t in yet.

Expect new in painting objects the Chest and Ladder, as well as Linked paintings, and possibly Bursted paintings in the next week. You’ll find out what those are then. Until then.

Physics is a Blocker, And It Has Nothing To Do With Capstone

So I spent a large portion of my time this week coding for my Game Physics class, which pulled me away from doing Capstone.

The upside is that I have many tasks on my log for this week to make up for that, and the downside is that last week’s attempts at QA were a bit of a dumpster fire.

A lot of it had to do with pushing things to the last moments before QA, so that definitely won’t be happening again.

Anywho, had Greenlight this week, which is basically just a shorthand for, “Have all your documents in.” I updated our Technical Specification Document.

Only two big features this week (and a slew of minor bugfixes related around them but nothing unusual).

The first was Voice Over Implementation, which was expanding our narrative and allowing our narrative designer, Sarah, to put in dialogue audio and subtitles. We broke it up in sections of story, with a story for each painting type. The idea is aimed at telling segments of a story at a time, room by room. So the Forest painting has a narrative, the Snow has a narrative, etc., and each gets doled out in bite sized chunks until the player reaches the end of the game. The stories will be divvied up properly so each full story appears approximately by the end of the game.

The second big feature was an improved design tool for level building. We already have the room tool, which generates an X by Y by Z room, made by Brandon, our other programmer. My tool allows for the creation of a hook-gateway-painting chain when clicking a wall.


The designer can choose the types of hook, gateway, and painting, and the chain of them will appear in the correct spot on the wall.

I’ve got a bunch of tasks planned for next week, so until then.

The Weekly Capstone Update

Titling titles can be hard. Or you can really just not try and yet somehow you still get a title, it’s just that simple.

This week (or was it last week by now?) I had some work to get done in other classes, so I wasn’t able to do as much as I normally do, but it all seems a little relative. Either way, the game is still improving bit by bit. We almost have a new set of levels in the game! Which is exciting because we’ve had the same six levels since like, October.

I made a Discord bot for our channel. Very boring, just does posts a daily update to remind everyone to post hours, but always kind of fun making tools that see real use.

I improved the Audio Manager, so it now has a soundscape, which is what we’re calling our background effect track. We only have the soundscape for the forest so far, which has bird sounds and other woodsy noises, but its nonetheless more background sound that didn’t exist prior.

I also upped the Audio Manager to swap music tracks at a percentage of the time the track is played, so people don’t want to rip their hair out hearing the same opening 10 seconds to every track. Hopefully it’ll help with the frustration aspect that is the natural byproduct of being a puzzle game.

Last major thing I did was begin the designer room tools. Right now it just automatically creates a painting after you’ve placed a gateway, but next week’s goal is to improve it even further so they’ll only need to click on a wall and then it’ll spawn the entire hook, gateway, and painting chain, with appropriate settings for all.

And of course there were a slew of minor bugs and organizational fixes that always consume chunk of my time. No major bugs fortunately, game continues to run without breaking down. Although that reminds me that we need to fix the menu/level/checkpoint systems which absolutely broke down when we switched to level streaming. Game is still playable, but going back to the main menu or using checkpoints is a bust.

Goals for the future perhaps. Soon we’ll have new art and new levels, and it’ll be real exciting. Until next week.

Capstone Begins Again

Little late, and technically it’s called Senior Production now, but either way in the end it is still developing Sojourn further.

Thinking back to last semester’s blog posts, especially toward the end, I felt like I was saying very little. It’s not very pretty, but I prefer the more text heavy pictures less post style. I’ll still cover what I did, but maybe I can be more clear in why we’re taking the direction we are, and what the strides I’ve taken are.

Two weeks have gone by already, so allow me to catch you up on what I’ve done so far.

First things first, week one was all about level streaming. Before level streaming, the entire level was loaded all the time, and it really slows down weaker computers. Honestly it even slowed down powerful computers. It was bad. But with level streaming, we can load and unload various bits of the levels as the player travels through them. Much more efficient.

That subsumed most of my first week. I’m also running QA this semester, so that’s always a fun time getting feedback on the game.

The second week, the one that just concluded, involved a more spread out choice of objectives. First, I made room timers for QA feedback. That allowed us to get an accurate read on how long each puzzle takes, and how long the game takes. The room timers were the major feature of the week.

Minor features of the second week were multiple, including a fix to the reticle system (buttery smooth), a bugfix to the tree in the forest painting after it gets knocked down by the cannon, a scalar shaking amount for the in-painting character’s jumps, a more viewable glowing of interactable objects, and increasing the ability to jump around on the splatter painting. A lot of feel-good changes.

It’s not important what exactly all those features are. What is important is that I was able to fix a lot of small issues that work toward a better player/designer experience.

All in all, a slow start to the semester, but we have an entire narrative AND art overhaul, so we’re deciding on that and waiting for them to be created, so programmatically, we’re mostly just creating the backend design features that make it easier for them to do their jobs.

Until next week.