Thursday, December 31, 2020

Year One Milestone - A Year In Retrospect

It is hard to believe that I have passed the one year mark in this game development journey.  Poking round my list of backups, I noticed the first one was dated Dec. 16th, 2019.  But the actual start of this Unity project began in November during Thanksgiving week.  For those of you who have not read my first post in this developer blog, the game I am currently working on started out as a web-based project.  I decided to abandoned that project when I reached the inventory system features and realized the game I was imagining would not be feasible running on the technology stack I was using.  This led me to researching an alternative, which you can read about here.  This post is about my thoughts on the first year; a retrospect of sorts.  If you have ever wondered what it is like to develop a game, then permit me to share some thoughts on the subject.

A Gamer and A Game

Computers have always been my fascination since childhood and getting my first Commodore 64 in the 1980's.  I have been an avid gamer for over 35 years.  My first MMO was Meridian59 which came out in 1996.  Being a gamer and making my own game has always sounded like a perfect match.  Maybe you know the feeling of playing your favorite games and thinking to yourself how awesome it would be to make something similar.  Something better!  Perhaps you are like me and have notebooks of ideas you have scratched-down over the years about game designs, systems, rules, etc.  One can become obsessed with this build-a-better-mousetrap mentality, especially a gamer!

Before I move on, I must in good conscience warn you about something that has happened to me.  Making a game has mostly ruined my gaming experiences.  Let me explain.  Ever since I started working on Survive and Thrive in a serious capacity, i.e. the last year, my game time has suffered greatly!  I dare say I have played less time this past year than any year ever.  Here is my problem.  Every time I log into a game and begin playing, I get filled with an overwhelming sense of guilt that I am wasting time because I am not working on my game.  The days of relaxing in my favorite MMO for hours-on-end have all but vanished.  My wife tells me all the time that I should not feel guilty taking a break and enjoying my hobby.  Of course, she is right.  But for some reason the drive to make a game has taken me into directions  that lead me away from gaming.  I use to wonder why game developers seldom spend time playing the games they developed.  I do not have to wonder that any longer.  If you can relate and have wanted to make a game of your own, just remember that such a commitment may overtake every other aspect of your gaming life.  Making a game can ruin your gaming!  Just saying...

One day I realized my real-life job as a software developer had given me some skills that I could possibly put to use to begin forming all those better ideas into a game of my own.  The hurdles for me have always been learning the tools much more so than having the ideas.  I have libraries of ideas and so do many of you!  One day I finally decided to dedicate some real time and energy into using what tools I had to make something.  This was the genesis of the game I am working on today.

A Year of Unity

This past year was not my first year knowing about the Unity game engine.  It has been installed on my computer for many years.  But it was my first year of focused determination to actually learn the engine and use it to implement my game vision.  What has it been like to learn Unity?  Well, to be honest, it has been both enjoyable and frustrating.  It is not uncommon for me to sit down in a development session and have experiences that range from lofty highs watching my game come to life to agonizing lows fighting with quirky bugs and inexplicable crashes.  Just yesterday I posted a very frustrating Unity form post about two or three bugs-of-the-moment that made me want to consider switching game engines, they were so bad!  But then later that same day I downloaded the next update to the release I am using and they seemed to disappear; the bugs I mean...  

Being a software engineer, I am used to these sorts of highs and lows.  It really does come with the job and game development is no different in that regard.  Remember earlier when I said the hurdles for me have always been learning the tools?  Well, Unity is chock full of them and each one is a college course of content to master.  Add to this the third-party assets from the Unity Store where every developer has a different coding style and things can get messy.

There are two things that drove my decision to go with Unity over some other game engines.  For one, C# is the scripting language and I love C#.  Since I work with it every day in my day job, it feels natural to use it in the game's development.  There are some other game engines that provide C# as a scripting option, but I have not yet found one as mature as Unity.  This brings me to my second reason I chose Unity.  It is a mature platform that is growing in popularity and is continually improving in the tools I need to focus on my game.  These are both pluses for me.  However, there are some negatives to using Unity.  For one, at its core Unity is a 3D game engine.  They are working hard to bring in 2D tooling, but it is still a 3D engine.  This means there will be some baggage that my game will have to carry into release.  Another negative in my book is the pace of development.  With so many changes coming out with multiple releases, I tend to think Unity suffers in the areas of testing and QA.  Patches come out practically every week.  I am always nervous about updating my project to the latest version because I have no idea what will break when I do.  All-in-all I have to say that I have grown comfortable with Unity and I am glad I chose it for this game.

A Year of Survive And Thrive

I have only published a few short silent videos of the game.  The reason for this is the fact that most of the development has been under the hood.  There has not been much to showcase.  However, I expect the next year to be very different.  In fact, I plan to publish a few videos on my YouTube channel which will highlight some of the work that has been done in the last month.  But looking back at this year, I have been able to make significant progress on some of the most difficult coding challenges.  Here is a list of first-year milestones.

  • A configurable tilemap engine
    • Custom world design with configurable terrain types, sub-terrain types and flora.
    • Perlin generated with customized parameters and seeding
    • Map previewing with saving/loading of templates
    • Dynamic chunking system
    • Map sizes ranging from thousands to millions of tiles.
    • 18 water, grass, stone, and lava tile types
    • 22 ore, mineral, metal, and gem tile types
    • Saving/Loading of game world
  • Player content
    • WASD, mouse movement systems
    • Walking, running, wading, swimming with associated sounds and animations
    • Chopping of trees with fall animations
    • Status/Progress bars for player actions
  • Flora content
    • 5 coniferous tree types
    • 4 fruit tree types
    • 10 deciduous tree types
  • Misc. Systems
    • Intro screen and Custom World screens
    • Game screen with window bar
    • Draggable windows with edge detection and toggle on/off via window bar
    • Clock, Food/Water, Player Inventory, Hand Crafting, Info windows
    • Hunger/Thirst/Nutrition/Hydration systems
    • Game clock with Day/Night cycle and associated ambient sounds
    • Beginnings of the crafting system with the first 100 inventory icons completed.
I am sure I am missing one or two things, but this about sums up the first year list of features.  It is very satisfying to be able to learn the Unity game engine sufficiently to be able to produce this list of features within the first year.  I hope that next year will see an explosion of new content, videos, blog posts and more as I work to bring this game to life.  Thanks for following along on my journey.

Until next time...  

No comments:

Post a Comment

Feel free to leave a comment. All comments are moderated.