britown

Creative-Type Impersonator

🌸请别在工作死🌸


I sometimes like working on never-to-be-finished video game projects


Right now I'm making a game called Chronicles.


Wanna make a game? Here is a list of great C++ libraries to use.


I maintain a Letterboxd in much the way that I assume people maintain bonsai trees.


This is Owen:
Owen
And this is Molly:
Molly
Furthermore, this is Max:
Molly

For my hot girl summer I sat down bright and early to get some Chronicles work done. It has been a few weeks since I've been able to touch it (where before I was working on it nearly every night) and I also left it at a point where the next task is fairly large and daunting.


Because it's mostly a grid-based tactics RPG, I want to create a generic actions system that I can use to define all of the different types of abilities with the following constraints:

  • Be able to describe all targetable actions for player and enemy from basic movement to complex abilities
  • Be able to query an action for targeting constraints (pattern, line, range, etc)
  • Be able to query any action for the resulting turn state prior to execution
  • Be able to build all actions as an asset in an editor

In game development these days I typically shy away from ultra-generic constructs because they tend to grow into more of a hassle as you scale in complexity but a large component of this project is for all game content on release to be defined in-engine so that non-devs can easily generate custom content.

In a perfect world I would love for a full editor that allows me to create complex abilities like teleporting player behind an enemy and pushing them counter clockwise. Multi-stage actions with multiple dependent targeting constraints will empower a ton of complexity and variety in the game's combat and so I really want to get it right.

Unfortunately! What that means! Is that I'm extremely blocked by analysis paralysis on starting in on this system. It's very big and has to be correct enough to be able to be molded and scaled into the future. It will probably be several sessions of coding before I even have something to show for it and so the whole thing puts me into a mindless coma of inaction.

So my dev-day consisted entirely of making the above little tile highlighting animation. I mean I want to be able to highlight tiles for targeting so you definitely need that! I dreamed of getting my entire actions system working at the end of the day yesterday but instead I have a little animation and a blog post about game development being hard.

All in all still very happy to have broken my fast on this project and I'm going to keep crawling into the breach until I finally get past this hump!


You must log in to comment.

in reply to @britown's post:

I'm all too familiar with Analysis Paralysis when it comes to designing big systems, and I'm afraid there I still don't know of any good way to eat a mountain except one bite at a time. So I have two suggestions for you that may help.

The first thing you can try to do is design your gameplay systems on paper first. If it's not playable as a board game, what can you strip away to make that an achievable goal? Remember that it's always easier to add complexity than it is to remove it. I have a blog post about paper prototyping here to get you started: https://www.uptheretheylove.com/blog/game-design/adding-the-sexy/

Secondly, if you are not moving forward because you're afraid of breaking stuff (it happens to the best of us!), you may consider using test-driven development just for this gameplay feature. I normally advise against using TDD for gameplay because it slows down design iteration waaaayy too much. Still, if you already have a solid system in mind, it can help you move forward with confidence.

I don't have a blog post for TDD, but I've used the paradigm at work for the code generation on our game. It's very important that this tool never breaks, and that we can document the edge cases clearly in test cases.

Finally, you've got this!!

Aaaa thank you!!! I have never heard that expression of eating a mountain one spoonful at a time and I love that, definitely stealing that.

You're right about the prototyping, a lot of this hasn't made sense until I actually draw out the situations and write the event log, I'll read that post!

TTD is definitely like remembering to eat my vegetables, I never used to even imagine bothering in c++ apps. But then I found Catch2 and we use it at work and it's just really slick and easy to integrate. It's honestly a great suggestion to plug that into this project if I want to support it's long term success.

I'm glad to hear that! I would be very interested to read more about the prototyping for your game. 😊

I totally agree that TDD is the "eating your vegetables" of software development: We all hate having to write tests sometimes, but it saves you soooo much pain and suffering in the long run. I like to write little stories about Batman in my test cases to keep things interesting.

And I hadn't heard about Catch2, but that definitely sounds interesting! We use the ol' reliable Google Test framework at work.