Periphery Edition - Development Update #2


"Gee, Autumn, you got a funny definition of the phrase 'monthly updates'..."

Harvest December: Periphery Edition

Development Update 2 - April 2024

ahem.

So, yes, I know I said monthly devlog updates... but the main reason for lack of updates is a bunch of factors. Won't be getting into them here, but let's go over what progress has been made. That's what these are for, after all, correct?

Since the last development update:

  • The save system has (mostly) been perfected
  • Dialogic now works even better with C#, for the most part, more on that later
  • The "Ren'Py Quick Bar" (as I've taken to calling it) was implemented

I've both gotten over some big obstacles, but also been stopped in place in a couple places. Let's go over the roadblock, first:

The Roadblock

In my project, one of the things I wanted to bring over from Reharvested was the "infobox" system. This worked similarly to how it did on 3DS; if you played Reharvested, you might know what I'm talking about. There used to be an issue where Dialogic really didn't like this due to some technical issues. This was fixed in one of the latest commits, but I thought it would be worth talking about, anyway.

How was it done in Ren'Py, anyway?

In Reharvested, the infobox system essentially "hooked on" to Ren'Py's anchor tag system. These are usually used to open a link in a browser, but I had code that detected when an anchor tag was clicked that had Infobox Data. If it was valid data, then it would just show the infobox instead of acting like a URL when the user clicked on it. It was a very simple system; but it worked.

So this should also work in Godot, right?

It should. It does. Except, Dialogic didn't like it. The issue was, even the devs were a bit confused at first. After all, it worked on their machine with no issues, but didn't work on mine for some reason. I was even given example code to run that still didn't work!

Crash course in Godot and Dialogic real quick. Dialogic uses Godot's RichTextLabel node in order to display text in a textbox. This allows for BBCode to be ran in it, which is great! It allows for all sorts of formatting. You know those old game forums you find sometimes? Chances are, they use BBCode! Godot's BBCode system has an event in place for detecting when a link in a RichTextLabel is clicked... you can figure this out by connecting to the RichTextLabel's "meta_clicked" event. When clicked, it'll reveal what the link contents were.

Dialogic, however, has a special node in place; a "full-screen advance input" node. This essentially means, the text will advance, no matter where you click on the screen. It's nice, it's useful, and it breaks "meta_clicked" for reasons relating to Godot's input system. This bug was fixed with the commit mentioned above by requiring that the input catcher now be behind the textbox, and capturing input anywhere on the textbox. Along with a few other things, but we're getting far too technical now.

I still have yet to fully implement the infobox technology, but it does recognize when a meta tag contains valid infobox data. So, it's a start!

The Good News

Out with the old...

One of the major features I wanted to have in Periphery Edition was changing the backgrounds. I was tired of having to crop out most of the backgrounds from the original PC release. I decided it was time for a change, and got to work scouring the internet for a good school classroom background! It had to be Japanese, and it also had to fall under Creative Commons (Non-ND) or Public Domain. As it would turn out, this'd be... tougher than expected.

And yet, I still found one! This background, specifically, is from The Wikimedia Commons, which will likely be very useful going forward! This background is heavily modified from its original version in order to have it reflect how the original Harvest December did backgrounds a bit more accurately.

There will obviously be more backgrounds than just the school, but this is good enough for now.

Something borrowed...

One of the features I missed from Ren'Py as I was developing with Dialogic was its little quick actions at the bottom of the textbox. You know... skip, quick save, history, etc... so I decided, "fine, I'll do it myself."

This little bar stays hidden until you hover over it, which it will then pop up. If you hover away, it'll disappear after a few seconds. You've got your base features:

  • History - View the text history
  • Bookmarks - The save system
  • Auto-Skip - Skip through text automatically
  • Q. Save / Q. Load - Quick Save, and Quick Load.
  • Settings - Opens the settings screen, currently unimplemented

Why can't we be friends? 🎶

One of the PITA's you might remember I complained about was how Dialogic didn't officially support C#. Well, guess what, it still doesn't! However! I think I've gotten pretty close with what I call "DialogicSharp." It's basically a C# <-> GDScript translator for Dialogic that makes Dialogic usage from C# code look a lot more native.

Under-the-hood, it basically just does what Godot does with its own nodes in C#. Events are connected with "Node.Connect", fields and variables are set and gotten via "Node.Get"/"Node.Set", etc. It looks fairly messy under-the-hood, admittedly. But, hey, you know what? It's how Godot does it with something like AudioStreamPlayer, so I get a pass!

This makes developing with Dialogic in C# a lot better. Development should be even smoother from here on out... knock on wood.

Almost like it never happened...

I implemented the ability to delete bookmarks by holding down the "Control"/"CTRL" key. This isn't really big news, but I thought it was worth mentioning, anyway.

One last thing...

I made a small comparison video comparing the visuals of Reharvested to Periphery Edition, please give it a look-see:


As you can probably see, Periphery Edition is already shaping up to be a lot more dynamic and smoother than Reharvested. And with less code-wrangling. This is a good thing! I'm very excited to see Periphery Edition become its "final form," so to say, and I hope you are, too!

That's all, folks!

That's all from me, for now. I've still got the rest of my college semester to finish, so development won't be super fast, but I'm still excited to share any developments as they come along. Let's hope I can release this by the end of the year...

Get Harvest December (Reharvested)

Leave a comment

Log in with itch.io to leave a comment.