I don't want to say I'm a genius, but I'm going to be that person and say that I'm a genius.
This is the beginning of making the game, this is by far the worst bit. Getting the ball rolling is absolutely the worst and grossest part of making a game. Some people might argue that the worst bit is getting into the final weeks but they are wrong. That's the second worst, because at the end of it you have a good story to tell. There's nothing fun to talk about when you're trying to get into making a game. It's just you sitting there for a little bit and then trying to write some code you think you've just wrapped your head around but then when you go to write it you think about it too much and it stresses you out. You know I'm right.
So that's what a big portion of these past few weeks has been - getting the ball rolling. There's grosser stuff involved with that like planning things. Working in a solo project has been a terrifying monster that looms over my shoulder every time I try to run the game but a red error blocks it. I will preface this all by saying I have successfully started rolling a nice ball for the project, so you might be wondering, how did you do that?
So here's the beef:
- I needed to make a dialogue system
- I needed to make an event system
- I needed to have the player go into buildings and out of them
- I needed to write some dialogue
- I needed to write down the quest structure
- I needed to make a paper prototype because guaranteed I would not be able to do any of that in a week.
Reread that last point there. It is a significant point because it was WRONG. I did it! I actually managed to write down scripts that worked and have a dialogue system that also worked. There was a lot that went wrong, but there's a strange block I had to get through where I had to understand that whatever issue was happening was a small Unity issue and not me absolutely having no idea about code. Turns out I know a good amount in code, it's simple but it works.
Let's break down the two major things I thought were absolutely going to destroy me but I managed to get working:
- Dialogue System
- Event System
My initial method for a dialogue system was going to be using Fungus, a pretty well-known plug-in with a lot of resources and tutorials circulating around it. Turns out, it doesn't work with the latest version of Unity. It also turns out that the amount of dialogue-based plug-ins for free on the Unity store are limited and nowhere near as brimming with resources. I ended up choosing a plug-in called RPGTalk as I was toying with a few, the reason was when I was experiencing an issue, I e-mailed the developer and they were immediate in response. This meant that if I was ever to experience a drastic issue I had a reference. If anything, it's lack of popularity was good in that the developer was easily reachable. Though, in using it for a week now, it does deserve a lot more popularity, it's an extremely easy-to-use plug-in.
I experienced a lot of issues in setting it up, trying to figure out how things should look, why certain things were going wrong, but they were all relatively minor things. For example, each instance of an RPGTalk needs its own canvas, and a lot of issues arose when I failed to do so. I e-mailed the developer and felt like an idiot when I figured it out 10 minutes after I sent the e-mail. He was really nice about it though.
The next issue was to set up an event system with the dialogue system. RPGTalk has examples on how to reference it in code, which seemed to be the only feasible option in creating an event system. I was so weary of writing code, having an added layer of learning to it made things even more daunting. I'm going to breakdown every issue and its solution into a few dot-points so you can better understand the chaos that went into creating an actually really simple event system.
- Implemented the final first-quest dialogue txt into RPGTalk, it doesn't run
- Turns out it was one line of dialogue that created major conflicts for some reason
- Literally just a 'Your finger's on the pulse. I don't even have a pulse.' Like ok, just roast my writing RPGTalk, cheers
- Character was no longer triggering dialogue when dialogue was triggered through code
- Turns out it was two things, the first was using ontriggerstay because ontriggerenter doesn't really work when you also need someone to press a button to trigger an event
- The script was in a child object to the player, and that needed a collider. I probably could've just referenced the player object and gotten the collider but whatever, it works
- A collider wasn't throwing the player back during a particular event
- Turns out the collider had enveloped the whole room for some reason
- The collider still wasn't throwing the player back
- Turns out add force needs like, a lot of force. Multiplying the player by 10 didn't cut it, but 500 did.
These are relatively simple issues, but you need to understand the context of working alone and never having worked on a project of this scope. You just sit there trying to figure out what went wrong and how everything looks fine but you're clearly just not attuned to code. In reality the fix was as simple as ontriggerstay.
The system is pretty easy to understand, and a part of me is as proud as it is embarrassed. I got this system to work on my own, but at the same time someone with more experience would have been able to make it appear so much more refined. All the code does is set the event as a number, so that in order to trigger a particular dialogue, the event must be at a certain number, otherwise the dialogue will not trigger. I did it this way so that later on I could program idle dialogue for those NPCs, and even repeating dialogue.
Going into the next weeks feels more tedious than it does intense and honestly I prefer that. I can just do the same system, and if issues occur I'll be able to see what those conflicts might be. The biggest concern right now is implenting an inventory system, though that seems a bit further away, I am concerned with the implementation of that with multiple scripts. Each quest has its own script to make it easier for myself to visualise, but I fear that it's going to make the inventory system convoluted. We'll see. So far, things are coming up T-Dog.