Published on

Glittering Marches - Devlog 2 - Prototyping


The work on Glittering Marches has already commenced, but I wanted to discuss why I'm building a prototype and to enumerate my goals for it. In the future, I'm hoping to publish a devlog every month, but it will likely ebb and flow with my time and any milestones I hit while working on Glittering Marches.

Prototype Goals

Software development is hard. Sustaining a creative endeavor is hard. Measuring progress is hard. Game development is hard. For Glittering Marches to have a fighting chance, I need (and want) to set a sustainable pace of development. This means not trying to do everything at once. The goal for the prototyping phase are:

  1. Getting comfortable with Rust and Bevy
  2. Proving the main game loop is possible and fun

Prior to starting this adventure, I've only ever heard of Rust. And I'm coming from a JavaScript and .NET background. So, Rust will be very different from what I'm used to. Bevy is a fairly new engine under significant construction. Many APIs are unstable and three key ones, rendering, scenes, and assets, are likely to undergo significant changes this year.

I have a lot of ideas already about what I'd like to do and be possible in Glittering Marches. Dozens of Trello cards and pages of notes. There will be three interlocking loops that zoom in on different levels of play. I'll certainly prototype out the higher level loops, but my focus for the first part of prototyping will be on the innermost loop, the combat engine, and making sure it is both possible and fun.

Milestone 1 - Rust + Bevy = Game?

With Milestone 1, I'll start learning Rust and Bevy. I'll build the first piece of the combat loop by setting up two units that will attack each other until one of them goes unconscious.

  • A basic window drawing two squares of different colors to represent the combatants
  • A start menu with buttons to start combat, quit the game, and display the about info
  • A basic combat log that displays all rolls for the current combat
  • Initiative, attack, and damage rolls
  • An NPC intelligence system that directs the NPCs to attack each other
  • A button to advance the turn to the next NPC
  • An end of combat announcement when one of the NPCs reaches 0 hp
  • Return to menu and clicking the start combat button starts a fresh combat setup

Milestone 2 - Mapping, Pathfinding, and Ranged Attacks

With Milestone 2, I'll expand on the core combat loop by introducing a map, a grid and pathfinding, and ranged attacks. The melee only units will cross the map to attack. The ranged units should use ranged attacks until an enemy unit is in melee range at which point they should switch to melee attacks.

  • Adding a basic 10x10 grid for combat
  • Adding movement and pathfinding
  • Increasing the number of NPCs to 6 from 2 (3 per team)
  • Adding an NPC with melee and ranged attacks

Milestone 3 - Multiple Rooms, AoE Attacks, and Fleeing

With Milestone 3, I'll continue expanding on the combat system by enlarging the map, adding a third team, a new combatant type with area attacks, and adding a self-preservation mechanic where some combatants will flee the map when certain conditions are met.

  • Multiple areas of combat on the map
  • Increased movement costs for some areas of the map
  • Increasing the number of NPCs to 12 from 6 (3 teams of 4)
  • Adding an NPC that can cast an attack spell
  • Adding an area attack spell
  • Add self-preservation considerations

I'm fairly sure that hitting all three of these milestones perfectly in the next few months won't mean that I'm done prototyping. This set of work is all completely focused on the innermost game play loop of combat. And while it will successfully prove that I can build the base of this game in Rust and Bevy, it still hasn't even explored letting a player control even part of the action yet.