Devlog Week 25

Here’s a brief summary of what I did this week.

3D models and materials

I made a couple more models for the train station environment : metal fence gate/door, elevator, ceiling light, ticket gate, and a normal metal door.

I also made materials : a trimsheet for the train station floors, metal, tactile pavement, and concrete, and also a ceiling tiles material and a light through glass material, which is used in the ceiling light model. I also added an option to use the second UV channel to add a texture to the tiles material. In the example below it’s a drawing of an octopus, but it can use a trimsheet texture to control the colors of the tiles. I made sure it’s only applied to the non broken/dirty parts of the tile.

Unreal Engine Level

All my previous test renders were inside of Blender, but it was time to bring everything into Unreal Engine. I ended up making a script that automatically exports all selected objects into individual files, taking care of the necessary steps (reset all transforms, include all children in the same file, detect and handle collision meshes). I know there are dozens of blender addons already doing this, but I needed something specific to my needs, simple to use, and it didn’t take more than 30 minutes to make. Come to think of it, I think this is the reason why there are so many addons like this, everyone ends up with their own tools lol

I had many issues using Lightmass and GPULightmass for baking. Lightmass was slow and leaves ugly seams between objects, but GPULightmass wasn’t very stable. I don’t know exactly why it crashes, but I think I narrowed it down enough for it to work.

Here are some screenshots, testing art style and lighting. It’s mainly orange, because it’s the dominant color of dreams in the game. I thought I’ll have more difficult time getting decent result, since orange is rarely a color I use in my art, but it seems like it works really well. The screenshots are taken from a Steamdeck in the native resolution (ie. no upscaling), I’m getting good performance and lighting without having to make many compromises. The scene is still relatively empty, but I have a lot of leeway, I won’t have a lot of trouble keeping it running at 60 fps (or worst case scenario 30fps). Testing early is a good learning experience, it’s definitely better than going back and redoing work.

I made more adjustments to the dream pixel effect. I’m still not sure if I’m going to keep the pixelation/ASCII effect, or make it gradually become much finer, but it’s a trivial thing to change and I’ll take care of it later when I have more dream scenes.

Here’s a recording of the level prototype, showing mainly just the lighting, props, and the dream effect.

In-game Recording

Story

I revisited some of the story and characters drafts and made some changes. I won’t explicitly say what, because it will spoil the story.

I did also think about the story progression itself, and the way it’s delivered to the player. The major change is making branching paths where it makes sense, instead of a 100% linear story. So there will be early bad endings if you majorly mess something up. There will be minor branches too, like befriending person A instead of person B, which do have minor effects on the daily life of the player character and other NPCs, but not in any major way. All of this necessitates a chapter selection system, to go back to a previous part of the story, without having to restart the game from the beginning.

Which brings me to chapters and the way I’ll divide the story : Each day is a chapter. The game events will happen throughout 2 in-game weeks, more or less. Under the hood, I’ll make the days as isolated as possible, and only carry the minimal amount of data between chapters, things like friendliness levels for NPCs, if a quest has been started, finished, or aborted, if the player character promised to help someone the next day, if gossiped about a certain event and the gossip spread the next day…etc. That’ll make implementing and play-testing the story easier. To make things easier to write and manage, I’m going to make the consequences of actions delayed a little bit by having the main events that trigger them happen at night, and undercover. The next day people will hear about it and will start gossiping and spreading the news. So the only thing I need to carry in this example to the next day is “did event X happen”, and NPCs will use it and react accordingly.

I decided to make a structure for each day. It’s not a must, instead it’s more of a suggestion or a guideline. The current progression I have :

  • Dream
  • wake up
  • Today’s quest(s) brief (eg. NPC asks you to help them with the farm, another one asks you to accompany them to the construction site, another asks you to come to the café and chat)
  • Exploration and talking with other NPCs (optional)
  • Doing the main quest or wasting time in a café or arcade shop or similar to pass the day.
  • Finished the day’s quest
  • Exploration, meeting people, gossip…etc (optional). This is where the slice of life part of the story for the day ends, and where the overarching story can be progressed.
  • Progress overarching story. This is when consequences for the next day are locked in.
  • Go to sleep.

Of course some days will not follow these rules, especially the first and last ones.

that’s about it for this week. Thanks for reading, and I hope to see you again in the next week!

Leave a Reply

Your email address will not be published. Required fields are marked *