logo

Background Images and UID Issues

Adding background images for visual novel scenes to my game took more time than I thought it would, but it seems to be working:

Dialog In Progress

(The background image was generated with Stable Diffusion.)

The code itself is incredibly simple, and almost identical to the code for the character portrait. Because of this, I duplicated the CharacterPortrait scene to instead of starting from scratch, and this caused issues. At first, I was blaming Godot but, upon further investigation, I discovered that each scene has a unique ID included in the .tscn file. Since I duplicated a scene, both the background image and the character portrait had the same ID. This caused issues during execution, because the character portrait now had the script for the background image associated with it. Some of the methods having different names, the debugger kept complaining about missing methods. I only realized this when I opened the dialog controller scene with a text editor, and noticed that both the background image and the character portrait instances had the same ID.

Lesson learned!

Categories: gamedev

Storing Scenario Data

For the past few days, I've been wondering how I'm going to store my game's scenario data. By "scenario data", I mean:

  • Character dialog
  • The showing and hiding of backgrounds for visual novel sections
  • Choices and options presented to the player

The requirements are few but not exactly simple:

  • Ability to store hierarchichal data
  • Simple to edit

Here a a few solutions I have considered.

Database routes

My background as a developer so far in my career has mostly been on the SAP ERP platform. This is a platform that is entirely dependent on the system's database. So, naturally, when I started thinking about how I would store this information, I immediately thought "database". MySQL and other complex DBMS's are out of the question (too complex to include in the distribution of a relatively simple game), but SQLite could do nicely. There is a Godot plugin for that. Or there will be, as the version for Godot 4 is not released (which makes sense, considering the current status of Godot 4).

The issue with this approach is the complexity of editing the data. There is an open source program out there (DB Browser for SQLite) available I could theoretically use, but that is not exactly suitable for actual writing or text editing.

JSON files

A few years ago, when I started thinking about making a videogame, I considered using JSON files to store the scenario data. And, overall, I think it makes sense:

  • It's easy to create hierarchical data
  • It is simple to edit with a text editor
  • Godot can easily read and import the file

Since I'm probably going to do all the writing, this is certainly a viable solution.

Godot scenes

This is the method I am currently using. The main issue with it is that it's time consuming to write and edit. But I really like it's organized and how the hierarchy is visible in the scene tree, and how easy it is to traverse in code.

Custom script format

I took some time yesterday to look at how the Ren'Py engine does it. It kinda reads like a play: very readable, easy to edit, with a simple syntax. In short: I quite like it! Due to localization and differences in "scene direction" instructions, I won't be able to use the same structure however.


So, what's the verdict? Databases are out, mostly because of how complex it would be to actually write the text. Theoretically, I could write a program that would do the inserts and updates for me, but I think this would take time, and that time would be better spent elsewhere.

At the moment, my favorite solution is a mixture of custom script format and Godot scenes: write the script in a text file, and import that script into Godot scenes and nodes. Whether this import is done at ahead of time through a Godot plugin or at runtime is still up in the air. I know I will at least need a plugin to validate the content of the text file to avoid syntax issues. I do not know how hard it is to modify the content of a scene in a plugin.

Categories: gamedev

A Year with Persona 3 - Progress report #2

I was doing pretty well on my day-to-day playthrough of the game until the end of September, and then I got stock on the boss on Floor 135 of Tartarus and stopped playing. I started playing other things (Ys IX mostly) in October, and didn't touch the game until last weekend. I did managed to beat the boss by trying again and again, until I got lucky and Ken and Akihiko managed to land a few criticals (helped by the Rebellion skill), which allowed me to use a few all out attacks and finish it off. I would not recommend that strategy.

I'm still enjoying the game overall. I cringed at the beach vacation section. It reminded me of the Hawaii section of Persona 5. I can't fault Atlus for being consistent...

My save game is currently on September 25th. Since I'm currently out of a job, I think I may just forget the day-to-day structure and just get to the end. I think I should be able to finish the game this month, provided I don't get stuck on a boss like I did back in September.

Categories: random-thoughts

October 2022 Gaming Report

My least favorite holiday, Halloween, is almost here, so time for another monthly gaming report!

Purchased:

None!

Completed:

  • Stray (PS5) (actually completed 3 times, once normally, once to get everything, and a speed run for a trophy)
  • Ys IX: Monstrum Nox (PS4)

Dropped:

  • Gravity Rush 2 (PS4)

Currently playing:

  • Monster Hunter Rise Sunbreak (PC/Steam) - Still playing mostly on Friday evenings with some GWJ folks.
  • Shin Megami Tensei Persona 3 Portable (PSP) - Currently on hold, but will resume shortly.

Planned purchases for the year:

  • The Legend of Heroes: Trails of Cold Steel 3 (PC) - Purchased
  • Waiting for an Atlus sale on the 3DS eShop to buy a bunch of stuff for potential future play - Done
  • Monster Hunter Rise (PC) - Purchased
  • Monster Hunter Rise Sunbreak (PC) - Purchased
  • Final Fantasy VI Pixel Remaster (PC) - For the JRPG game club
  • The Legend of Zelda: Tears of the Kingdom (Switch) - Delayed to next year

Ramblings:

After a few months of consideration, I finally subscribed to PS+ Extra, mostly because the selected game for the JRPG game club was included (Ys IX: Monstrum Nox). Also included: Stray! Despite the game being relatively short, I ended up playing it for a good 16 hours, and I managed to get the platinum trophy in the process. Overall, Stray is my game of the year so far!

The rest of the month was devoted to Ys IX. It was good and, at roughly 35 hours, it didn't overstay its welcome.

I also decided to drop Gravity Rush 2 earlier this week. The game isn't bad. Its world is amazing, and shifting gravity is an interesting concept. My biggest problem was the boring missions. I made it about halfway through back in September. After a month of not playing it and thinking I should go back to it, I came to the realization that I'm probably never going to, and to just let it go.

My big game for November is going to be Persona 3 Portable. I made it to floor 135 back in September, and reached a boss I was not able to beat at the time. Now that I have the game running on my Steam Deck (thank you, Emu Deck), it will be my main game for November. I think my save game is on September 26th. I have not decided if I'm only going to try and catch up and stick with my day-to-day play through, or just get to the end. We shall see.

Also on my list for November: Live-A-Live. I bought it for Switch back in July and I haven't touched it yet.

With my work contract being over, my projects for the rest of the year are:

  • Prep for JLPT N4 (I think I have the kanji, vocab and grammar mostly figured out, but the listening part has the potential to be my downfall)
  • Complete the conversion to Godot 4 of my earlier game development efforts
  • Practice drawing (mostly gesture)
  • Hit the gym every day
  • Finish layout and design of this very blog

Categories: random-thoughts

September 2022 Gaming Report

Summer is now officially over, the friend/temporary roommate who had been living with me for the past four months had to go back home because his visitor's visa expired (lots of tears were shed), my work contract is ending in 2 weeks (although I do expect a short extension), and I bought a Steam Deck (which hasn't shipped yet), so hopefully I get to play more in the near future! But for now, it's time for the September report!

Purchased

  • Stray (PS5, thanks to PS+)
  • Ys IX: Monstrum Nox (PS5, also thanks to PS+)
  • Mega Man 11 (PC/Steam)
  • God Eater 3 (PC/Steam)

Completed

  • Submerged: Hidden Depths (PC/Epic)
  • Tomb Raider 1996 (PC - Replay)

Dropped

None

Currently playing

  • Shin Megami Tensei Persona 3 Portable (PSP) - Continuing my day-by-day playthrough - Playing once or twice a week. I'm a few days behind, but should be able to catch up this weekend (I got stuck on a boss on floor 135). I might decide to just get it done at some point though, especially if I'm going to be unemployed for a little while.
  • Monster Hunter Rise Sunbreak (PC/Steam) - Still playing mostly on Friday evenings with some GWJ folks.
  • Gravity Rush 2 (PS4) - I was really hoping to have that one done by the end of September, but I barely made it past the halfway mark. I'm enjoying it in short sessions (although I'm mostly sticking to main story missions).
  • Mega Man 11 (PC/Steam) - I played about 2 hours of this (according to Steam), and yet have not been able to beat a single level yet. That game's hard.
  • Stray (PS5) - Just started. I should be able to beat it this weekend. I think it's going to be my game of the year.
  • The Legend of Heroes: Trails of Cold Steel III (PC/Epic) - I think I made exactly zero progress this month.

Planned purchases for the year

  • Monster Hunter Rise Sunbreak (PC) - Purchased
  • The Legend of Heroes: Trails of Cold Steel 3 (PC) - Purchased
  • Waiting for an Atlus sale on the 3DS eShop to buy a bunch of stuff for potential future play - Done
  • Monster Hunter Rise (PC) - Purchased
  • Final Fantasy VI Pixel Remaster (PC) - For the JRPG game club
  • The Legend of Zelda: Tears of the Kingdom (Switch) - Delayed to next year

Ramblings

Another slow month for me in terms of videogames. Again, lots of running and some biking though!

I received the email to order a Steam Deck and, after thinking about it for an hour or two, I went ahead with the purchase. For some reason, orders for Canada are slow to ship, so who knows when I'm actually going to get it. I have a trip planned for Thanksgiving weekend, and I was hoping to get it before then, but that doesn't seem very likely at this point. Edit: It has now shipped and should be here Tuesday, October 4th, a few days ahead of my trip.

One of the reasons for me to get the Steam Deck is that I am finally getting back into game development and will be using it for testing. I've been documenting my progress on this very blog. Progress is slow, but has been picking up recently.

A few months after getting rid of my backlog spreadsheet, I do notice that I am (somewhat unconsciously) starting to build a new one. If I listen to a podcast and they bring up a game I am interested in, I will add it to the mental list. As I am browsing the game collection on Playstation Plus, I'm thinking "I should play that", or "That looks good, maybe I should install it and play it after I'm done with X". If I'm looking at the list of this year's purchases, I find myself thinking "Oh yeah, I bought that, I need to play it". I'm not sure what to make of that (other than the fact that I like making lists and overwhelm myself with future tasks).

Categories: random-thoughts