So... I got kinda sidetracked and may or may not have taken a mental vacation from Donut Theory for about a week. However! the week before that I actually got stuff done! Let's just hope that that productivity comes back >_>;;
TL;DR: Got the game logic tree working and also made some pretty diagrams for it. Thought about doing NPC art but bailed. Also thought about NPC interaction text boxes. Those are harder to design than you might think. Got some concepts for it going, but then, like I said, lost motivation and binged all of Futurama.
Actual Stuff I Got Done:
GAME PROGRESSION LOGIC (this was a big one)
Like I mentioned last update, I was going to bulldoze my first attempt at game logic. And I did. Allow me to ramble about it (basically this blog in a nutshell):
When contemplating game logic design at 2:34 am on 8 cups of coffee, one may be tempted to hallucinate a system of flags/booleans to be set for various events over the course of them game. DO NOT SUCCUMB TO THIS WICKED THOUGHT. Actually it's not a horrible system, but thinking about how it would actually work, this system would require the logic for progression to be all in one place... or all over the place... Regardless! my implementation of this design would be less than desirable.
ANYway, another option was having a main game events scheduler as a list where events would be triggered by incrementing an index. The scheduler list would contain little lists of game events that would be set up in whatever scene they were set to. This is great, but also slightly moronic in design. It was also what I ended up first programming. >_>;;;; The issue with this design is similar to the flag progression system described above and crops up with the question "how do you progress to the next set of events?" Well, certain events would call back to the scheduler and move the index along, right? Yeah but that gets messy with a lot of custom logic for various player interactions, custom logic with cooouuuulllldddd be more generic.
While anguishing over that design as well as implementing it, never did the thought cross my mind "hey this would actually be better as a tree!" And we all know that a tree is basically just a linked list, come on people this is common knowledge right.
So anyway, I coded the up the main game scheduler design and i cant really remember how it worked. BUt it did. Sort of. nOT GOOD ENOUGH.
How would this prettier implementation of a game logic tree work? Here's a very handy dandy diagram to help you visualize it!
Now, granted, I haven't actually settled on an ending for this game, let alone multiple endings so who knows, but going off this design I could have multiple endings if I wanted.
Based off the diagram above, I drafted out what the classes might look like, shown here:
So yeah! This is basically what I ended up coding. Hopefully that's pretty self explanatory, but each node and each event inside of a node are each separate scriptable objects. Game progression happens when set linked events' OnInteract methods are called by subscribing to an onInteract delegate of specific GameObjects that they've instantiated. Here's the super simple inspector for a node:
And here's how a random node might look:
Now in the first diagram, optional events are mentioned. I wanted the UI in the inspector for these events to be foolproof because I am, in fact, a fool. I didn't want to accidentally mess something up like linking a node when an event should be linked or vice versa. I also didn't want to handle null checks. Down the long rabbit hole of custom editors for the inspector I found my answer. Creating a custom inspector for the base class allowed me to modify what fields were shown based on what values the user (me) had set. Then I just called DrawDefaultInspector at the end, and voila! All the fields for inheriting classes would show up below. I'm a genius (LIESSSS).
After I got this up and running, I started setting up events and got a good start to the beginning of the game. cool.
So I ended up getting most of the dialogue for the very start of the game written and a good chunk of it implemented in actual game events. I need to do a couple more drafts of it and send it to my editor, but it's starting to come along.
So, remember how last blog post I said I was gonna work on art for the game? Well, I did draw the characters. More as concept art. Even though I already know their design. <_<;; Here, have some moody character portraits of Dax and Nadia out of context:
I'll go more in depth on who exactly those characters are when I finally get their in game art finished, but all you need to know right now is that they are my favorite to draw 😂
Apart from slacking on actual in game art, I did draft up some concepts for the text boxes that pop up to display NPC dialogue. I never thought about it before, but those are actually kind of hard to design. How do you integrate it with the theme of your game?! Never will I take text box art for granted again. Never, I say! Here are some of the concepts I came up with so far:
I like the one circled in red the most right now, so I think I'll render that and see how it works.
To Do List
Set up more game events
Write more dialogue
For the sake of all good things, PLEASE actually finish some in game NPC art
Mostly settle on a text box design (for now at least) and get it implemented
Prototype scenes (because I def slacked on that from last update)
Lotsa things to be done. Maybe I should get on that 🤔
Thanks for reading as always and I apologize if this doesn't make any sense; it barely makes sense to me.
Go, be the nugget you want to see in the world,