Devlog week 22

Here’s a summary of what I did this week:

sketches and blockouts

I worked a bit on the torso and legs for the robot model. I spent a disproportionate amount of time on the hip joint compared to the rest of the model, but I’m happy with the overall look. I’ll remodel it later with higher details and quality.

I also focused a little bit on the village blockout. It’s very rough at the moment, with no roads, and a very rudimentary terrain and houses, but it does its job. I used geometry nodes extensively for this, all the houses are initially flat planes, which got projected on the terrain following the Z axis, extruded, then had a roof added on top. I also made a tool that places houses randomly along curves, and used the curve drawing tool to quickly generate the models for the initial phase. In the next phase I’ll hand-place the models, add roads, fences, trees…etc. But for now, this is what I have

Interaction System

I fixed a bug I found Last week with the text highlight, because it didn’t recognize the style until it reached the very last character and closed the the highlight tag properly. So instead of displaying “This is a highlighted object” it temporarily displayed “this is a <highlight>highlighted ob…” until the text was fully loaded.
My solution to this is lazy, I just made my code detect a “<” character, make sure it’s not followed by whitespace (in case I actually wanted to use the less than symbol, like “5 < 9”), and then it fully loads everything until it reaches the “</>” that delimits the highlighted block of word(s). The downside is that it fully loads the entire word(s) all at once instead of doing it letter by letter, but I added a small pause after it so it’s not really noticeable. In case I have long words or sentences, I can break the sentence down and highlight each word individually, it will look identical visually, but it will load word by word instead of loading the entire sentence.

fixed text highlight

I also implemented a “set flag” and “get flag” options. Flags are variables that are carried across the entire game, regardless of which level you’re in, so they’re like global variables you can access from anywhere at any time. For that I’m using the Game Instance. From what I read it’s not the best for multiplayer games, because it’s not replicated, but that’s irrelevant in my case.
Flags can be used to keep story progression, branching paths, player stats, what quests you did and didn’t finish, how much money you have, who likes you and who doesn’t…etc. The example is just a demo for reading and setting flags and it affecting the dialog, but it can be used in other ways as well.

get and set flags

Here are the datatables used for the interaction. Click on the images to expand.

And finally added a “Hide” and “Unhide” interaction types. They hide/unhide all actors with the provided tag

Hide/Unhide Objects

I also fixed a few bugs and changed the way cancelling interaction is done, now it’s simpler and more robust.

Miscellaneous

  • I did a lot of writing this week, edited and detailed some of the main story elements. I won’t share details though.
  • Started using Git for version management for my project. It’s still not really necessary, because I work solo, keep detailed devlogs, and the code is saved as binary files from unreal anyway (so no previewing and diff), but I’ll need it further down the road.
  • I dd some research about publishing, porting to platforms, marketing…etc. I’m not at the stage where I’ll need it yet, but it’s good to look ahead and have an idea of what to expect. My current takeaway is that I’m publishing on Steam first, and maybe XBox too shortly after, but the PS5 is more difficult logistically and I might need someone to help with the port, if it makes sense financially.
  • I studied more environments and models by Leartes Studios. I realized I’m a bit too much of a perfectionist, because the environments looked great, despite having what I consider sub-optimal props and models.
  • I learned a bit more about optimization and GPU profiling. I was able to bring FPS in my simple test scene up from 80 to 140 FPS on the steamdeck in my test environment without sacrificing quality too much. It might not be needed for the Switch, but I can offer it as an option for lower end PCs.

That’s all for this week. Thanks for reading!

Leave a Reply

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