Project: Dungeon Explorer (codename)Goal: Develop and release first gameInitial Commit: 7 Aug 2019 Dev Hours Since Last Devblog: 14.11Total Dev Hours Spent: 47.16Allocated Dev Hours for Project: 160 At a […]
Project: Dungeon Explorer (codename) Goal: Develop and release first game Initial Commit: 7 Aug 2019
Dev Hours Since Last Devblog: 14.11 Total Dev Hours Spent: 47.16 Allocated Dev Hours for Project: 160
At a Glance
This past week I spent time fixing the quest board so the game displayed all the available quests. My wife provided some updated sprites for the trap and puzzle encounters. I also researched the lore of the singleton and forearmed with that knowledge I created my Game Manager class. I found lots of conflicting and negative views exist about singletons in Unity, so in a future post I will explain why I chose to use one and why I designed it as a generic base class. Another good week of questing.
As I discussed in last week’s devblog, I had an issue with the game not running in the background. I fixed this issue in a few minutes on Sunday and then continued on to accomplish a total of 15 commits on 2 branches.
Starting and Finishing the Quest Board
I used the left side of the screen to display the quest board, the place where all active quests get listed for the player. Since I divided the game into 12 zones, each zone lists its own quests. I expected this code section to be harder than it was. In a few days I had all 12 zones created and tested the first zone, the Plains Zone, with over 25 quests at once. Everything worked as I wanted it too for alpha.
Puzzle and Trap Encounter Sprites
My wife finished rough sketches for the puzzle and trap encounters. I learned that if I updated the PNG file outside of Unity then Unity remembers all my sprite editor customizations and I don’t have to redo anything. Woot!
Starting the Game Manager
After I finished up with the Quest Board I moved on to the Game Manager (GM) code. Of course, finishing one piece of code and moving to another wouldn’t be complete without a useless side trek. I forgot to merge my QuestBoard branch onto master before I started on the GM code. D’oh! I skilled up in git that day and learned all about stashing.
I created the GM branch on 5 Sep, and while I made some progress I am in uncharted territory right now. I have read up on GMs and have some theory floating around in my head, but no practical experience. After fumbling around for a bit I finally made some headway by remembering my design patterns, specifically the singleton.
Initially, I implemented a basic singleton on my GM class and went about my way. Then I found myself face down in a common pit trap (luckily not a spiked pit trap). I had turned my GM class into a huge global variable. Ugh. I found my way clear of the trap and researched singletons in Unity. I found that a lot of people don’t like the singleton for exactly this reason, it’s to fall victim to the trap. I have never been a person to avoid a tool just because some (or most) people misuse it or don’t understand how to use it properly. I read up on the issue’s lore and decided on my course of action. I gutted my “global variable” mess and rebuilt from scratch, this time creating a Singleton<T> class and deriving my GM from it. I also pushed all code responsibilities out to the lowest level object that could handle it. I will use the GM class to manage major functionality, e.g., saving, loading, resetting, etc, as well as other functionality as I discover them.
On a connected note, I found good sources for coding a singleton in Unity and I plan to write a separate post with specific code samples. Look for that in the next two weeks.
One day a crazy, wild-haired troll gave me a quest to create video games. I know C#, so I armed myself with Unity and loads of game dev tutorials and went questing. Now I call myself a "game dev" and pretend like I have a clue. :)
1 Comment »