Archive:

Subscribe:Atom Feed

"Lumo Journal: Week 80"

Posted: 30 December, 2024

Lumo Journal

30.12.2024

It is time. I’ve started implementing the Save Game. Well, I say “started”, the game’s been saving, internally, for months, but it’s never output to a file. And there’s no UI for selecting a save slot, or continuing a game…

UE has a save system, which I’ve never used. As ever, the scarcity of documentation caused me a bit of a problem. You need to mark the variables you want to save with UPROPERTY(SaveGame). What doesn’t the example on Epic’s website do? Use that bloody UPROPERTY… so my save game was 160k of zeroes. Confused the hell out of me when I started reading it back in, but I eventually found the solution, after a quick scroll through some of Steve Streeting’s code. Burned a couple of hours, but got there in the end.

The Save Slot UI for a New Game is working. Continue Game is going to need a bit of fettling. I’m fairly sure the GameMode doesn’t look for RespawnPoint actors when it’s loaded. When I’m making the game I Play In Editor, and drop straight onto a PlayerStart actor which I move, so I always start close to whatever I’m making.

31.12.2024

Yeah, the GameMode needed a bit of work, but nothing outrageous. It already treated the entry in to the level as a room transition. All I needed to do was find the room and RespawnPoint that matched what was in the Save Game, plug those into a couple of variables, and it teleported the player to the correct place, as if they’d walked through a door.

But… There’ll be a few cases where I’ll need to stop the RoomController from updating the respawn data that’s saved out. Anywhere the PlayerController has possessed something other than the default character class would cause a problem (I’d have to spawn the player, then move the player controller over to possess a different actor… boak), so it’d be better to leave the player in the previous room. Fewer things that can break, basically.

Anyway, I can save, quit, and continue games. I’m going to have to sit down and give this a proper kicking.

02.01.2025

Save & Continue testing has been going well, not really found many problems, and a few of the rooms that I was worried might cause issues – Impossible Mission, Prince of Purple – “just worked”. That said, I have uncovered a few edge cases, mainly where a respawn point was too low, meaning the player could fall through the world as it was streamed in.

Fixed those issues, and a bunch of little bugs that I spotted while play testing, and setup the PSO Bundling for the new engine version.

04.01.2025

Added missing audio to the buttons and gates in Prince of Purple, and a very short animation (a pose, really) to the player character so it looks like they’re vaulting up onto ledges. Largely pointless because you can’t see it, but it’s slightly better than the pop that was there before.

And for lols, because the main menu was looking a little bare, I added an artist’s impression of my bookshelf.

The 4Mat joke has been making me laugh all afternoon. Hoping Matt sees it, one day! :D

05.01.2025

There’s one room – the PyGame Snake room, in Sandy’s – that relies on the camera facing a certain direction as you enter it. The room prior, with the disappearing walls, was the first thing in the game to rotate the camera, so if you save & quit, then continue game, the camera needs to be facing the correct direction, or you can’t see half the interactive parts of the room.

I’ve been toying with the idea of adding the camera’s orientation to the save game, but for now, I’ve decided not to. Instead, because it’s useful, I’ve added an enumETransitionReason – to the GameInstance. This lets the GameMode and RoomControllers check why we’re entering a room (or a level) and in the case of the PyGame room, spin the camera.

Something’s fundamentally changed the way alpha masked, and transparent objects, are casting shadows, and I wasn’t sure if it was 5.5.1, or a tweak I made. But its changed the look of the game, and me no likey.

I use dithered masks on walls and objects to fade them in/out as the rooms rotate – dithering avoids sorting issues that “proper” transparent objects tend to cause – but it looks like contact surfaces from “invisible” objects are occluding… very obviously in some places.

Now, I don’t actually mind this, it’s oddly useful in terms of giving the player some clues in this particular room, but in other places it’s leaving a shadow that’s obscuring gameplay.

It took several hours to track down; it wasn’t Mega Lights, or anything like that, but one of the settings in the Post Process Volume: Lumen Global Illumination -> Screen Traces, which I’d disabled. Probably when I was trying to get rid of the noise in the Global Illumination, just before I did the engine upgrade. Derp.

Previous Post: "The Arcadia Cecconoid Port" Next Post: "Lumo Journal: Week 81"

Friends:

If you like any of my work, please consider checking out some of the fantastic games made by the following super talented people: