• ChickenLover19

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.


Dialogue

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.


Art

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,

~ChickenLover19

  • ChickenLover19

Today is marking a historical occasion: the first dev blog post for Donut Theory. 2020 has been a rough year so far, but do you know what makes everything better? That's right. Donuts. And chickens.


As for when this blog is going to update? Who knows... Certainly not I. But, I am going to shoot for every two weeks which seems somewhat reasonable. That way I can treat it like a mini sprint (AGILE BIIIIIIOTCH). (☞゚ヮ゚)☞ Also I don't think anyone is going to read this, so this is for me, to gauge my progress and also to keep my sanity. Don't go crazy, self. One day you will be able to hang out with friends again and be able to sit down and eat in a restaurant. Be strong. UwU

WIP of one of the prospective NPCs

TL;DR: I did some things, messed around, made a game. It was horrible (it was also for a final project in college, which is horrible in and of itself). Now I'm remaking it for some reason. Not entirely sure why other than it's just a really stupid and funny idea. 🤔 AnYwAy, So far I've gotten a rough idea of the game flow, made a buncha scenes, wrote a buncha code, got combat working (really badly), enemy spawning, NPC interaction (actual dialogue is still WIP), and implemented a game logic system. A system which I am now completely redoing because the first attempt was fffFFFUU- such is game dev tho AMIRIGHT.


Donut Theory was the result of a final project for my final quarter of university. It was an absolute disaster while at the same time a complete masterpiece. It was a weird platformer with horrible controls, absolutely no point or gameplay, and worse sound design. I'm not sure I can even call it a game. More of an e x p e r i e n c e.

Cut to this current year (og Donut Theory was only made last year though), and we're stuck in the midst of a pandemic. Since I don't have to commute to work I have basically 2 more hours of free time re-added to my day. I should make a game, and what better game to actually work on than a dungeon crawler where you beat up donuts. 👍

So yeah, that's what I've been working on. Here's a list of things I got done so far:


Implemented Enemy Donuts and Donut Spawning

This was done with a bunch of ScriptableObjects in Unity, which is what I'm using. For donut enemies, there's about three different ScriptableObjects/Parts that make up a donut enemy right now: the donut enemy object itself, which contains starting health stats, sprites, blah blah blah; the donut attack roster, which holds a list of the donut attack objects along with a percentage as an int (this is in the form of a list since Unity can't serialize/display dictionaries in the inspector); and finally, the donut attacks, which hold all the info for specific attacks for donuts. In order to make it easier on me to set up these attack rosters, I wanted to be able to modify the probability for each attack in the inspector, making sure that for total probability, 100% was not exceeded. ScriptableObjects have a handy dandy little function called OnValidate, which I used to do exactly this.

It's still a little wonky, but hey it works... This is also a very similar method I used for the enemy spawn roster and choosing the probability of different types of enemies spawning.


Player and Player Attacks

Started to get player attacks working as well (still figuring out how they actually work, what they do, and how much damage they cause >_>;;;;). Made some design decisions based around click and drag attacks. Started with this, where you could click anywhere on the screen and the attack indicator would start where you clicked (please ignore obvious prototype art, placeholders, and lack of colliders hahahaaaaa):

It ended up being kinda frustrating and not super great, So I changed it to this, where the attack starts at the player:

I like it better imao. Also the code for getting the indicator to behave like that at a certain set length was a challenge. Here's a snippet:

Big ooof. More player interaction and attacks to come!


NPC Interaction (and Art!)

So, for NPC interaction, I'm still not sure if the player gets to choose dialogue options or if it's just set what the playable character says is predetermined - I'm leaning toward predetermined but with branching interactions. Regardless, having a dialogue tree is super nice!

With this project, I find that I am taking a little more effort to make my life easier in the future, and that includes setting up a dialogue tree. I found a great tutorial on just that using Unity's GraphView API and it is amazing (link to tutorial here). I modified it so that instead of each node only containing a GUID, dialogue, and then dialogue options, the also contain NPC names, sprites (to display visual novel style), and audio clips. Saves and reloads great too!

With this modified dialogue tree, I've started working on writing out dialogue and testing actual interactions. As well, I've begun working on NPC art for the current characters I have planned. Here, have some initial sketches (WIPs to come soon):





Scenes and Various in Game Areas

So far, I have a pretty rough idea oh how this game is actually going to flow; however, that idea is starting to come together, albeit at a somewhat glacial speed -_-.

I do have a good idea of the certain areas that players will need to traverse through as well as how many scenes I need for each area and what the player will need to accomplish in order to progress. I've started to rough in these different scene layouts as well as randomly selecting and ordering these scenes as the player progresses. The environments (as seen in the gifs provided above) are uhm... not very pretty right now, but! It's all part of the process! And, having a general idea of how a scene should be laid out will really help me out when I go in and start working on the environment art!


This Blog

I'm super excited to see the progress I make on this game, and I think that having a site to maintain will hold me at least somewhat responsible to this project. With other projects, I know that I can loose interest fairly quickly, but if I'm responsible to provide updates on my progress, then maybe that will have a good impact on me! We'll see...

It's also just really cool to have a website to call your own, let's be honest.


To Do List

As for what I'm going to attempt to get done before next update, here's a handy dandy list(!):

  • Completely redo and finish Game Logic tree and events scheduling (you'll hear about this plenty next update, I'm suuuuuure)

  • Work on setting up more dialogue and game events to interact with

  • Prototype more scenes and get those down so that I can work on art sooner than later

There's always plenty to do, but I think this is a good amount for now.


If you are a person other than myself then thank you for reading.

This blog post will self destruct in 13 seconds,

~ChickenLover19

Become a donut theorist today 
  • Grey Twitter Icon
  • Instagram
  • YouTube

© 2020 ChickenLover19, Donut Theory