State of the Union

Well, folks, that’s it. After what seemed to be the longest month of development so far, I have finally put the finishing touches on all the prototype work I’ve done on the Inventory system and all the other various systems that interact with it. I certainly did not expect to spend so much time on it, but I also did not anticipate adding feature after feature. Every time that I thought I was done, I always had an idea for something else to add in.

Now to be fair, I haven’t reinvented the wheel in any way here. I’ve just created a working inventory system. It’s been done thousands of times, and will be done another thousands times. Though, it’s still an important milestone for me personally. I have a co-worker who absolutely loses his shit whenever he thinks about all the systems I’ve implemented on my own thus far, wondering why I don’t just shell out $ to various authors of existing Unity Asset Packs. I mean, I could, but where’s the fun in that? I’m having fun 🙂

The following is what I was able to create over the past month or so:

  • a rudimentary unit menu screen, including
    • basic character sheet stats/attributes
    • equipment slots
  • inventory slots, including
    • drag and drop functionality
    • tool tips (including item comparison) which show various attributes and descriptions
    • double click equipping
    • dynamic creation
  • item tiers, represented by color
  • a shit ton of manual tests, as well as unit tests

Best of all, all of the above is backed up by real unit/item data. No tests/hard-coded values at all. If you see a value somewhere, it’s because it’s assigned to that unit/item.

In particular, I believe the work I just did today on the item tiers has really fleshed out the system, to the point where it’s looking like a real inventory for once. Again, I haven’t done anything outside the box, but it’s nice to get that visual representation of the quality of a particular item. The system itself was pretty easy to set up, so now, when items are defined, as long as their tier is properly set, the proper color will be displayed. At any rate, I can’t wait to start creating all the in game items, now that the framework is in place.

What Didn’t I Get Done?

Even though I had a month to work on this, in reality, it was much less. For instance, due to a death in my wife’s family, and visits from my own family, I lost roughly a week of time. There were other times where I just got caught up in US politics and whatever else was on the news. More or less, it seems as though there were many distractions.

I often talk about the peaks and valleys game developers such as myself go through, where one week, we’re riding high, knocking out tons of content, other weeks where we’re just not that motivated. For me, it was sort of in the middle. I was very motivated to do work, things just kept coming up. Ah, such as life.

Had I possibly been able to block everything from my life (barring the family related stuff, obviously), I may have been able to tackle these following items:

  • item stacking/unstacking
  • tabs for the different item categories
  • more equipment slots for each unit (amulets, rings, back/cape, etc.)

Either way, sometimes you just gotta pull the cord and move on, knowing you’ll come back to it later. And so, here we are…

What’s Next?

Well, for one thing, I’d like to take a break from all things Inventory related. I’ve done enough. It works. What else can I do? It’s a prototype. ¯\_(ツ)_/¯

One thing I’d like to tackle is the overall game loop. More specifically, a title screen, a start mission button, play the existing map, once all enemies are defeated, be brought back to the title screen. Perhaps add in a little save/loading.

In fact, with regards to the save/loading, I believe that’s important, because I assume that as I implement it, I may need to restructure how some objects are defined (i.e. make them serializable). There could be a whole host of bugs that pop that make me have to change how I do things. And the sooner I’m able to sort this out, the less work I’ll have to do in the future.

Finally, I know for a fact that my code is becoming a little unmanageable at the moment. I’ve known for quite some time that I should move to an event driven system, but I just kept saying “Let me sneak this one last thing in there and change it later”. Not only does this get tougher as the project goes on, but as I mentioned above, it’s making the process of building things, or adding on to addition systems a little tougher. Luckily, I have a good idea of what I want to do, so I wouldn’t be surprised if this gets some love this month.

Anyway, here’s to a productive month.

Till tomorrow…