ToolUp Days #11

ToolUp Days #11

2022-08-23

This episode marks the official rebrand from ToolUp Tuesday to ToolUp Days — giving Chris and Matt the scheduling flexibility they need to maintain a consistent cadence. After recapping progress (multiple microservices built, GitHub Actions CI/CD in place, container images published, and Infrastructure as Code deployed), the pair set a concrete goal: reach a point where two players can independently make a decision, a “tick” happens, and there is a winner and a loser.

Key decisions this episode

Simplified player state model — the team strips out employees, districts, and popularity in favour of a leaner object: player ID, a list of bars, and a funds balance. A BarType enum (cocktail bar, cantina, café, etc.) replaces the complex nested object, making world-event modifiers straightforward to calculate.

Player creation API — a dedicated POST endpoint is scaffolded that initialises a new player with a default bar and a starting balance averaged across all existing players. The endpoint returns the full player state object (including the bar ID), fixing a subtle usability gap where bar ID was previously unretrievable after creation.

Bar management controller — a separate controller is introduced to handle the changeBarType operation. Switching bar type deducts 10% of the bar’s current value as a “licence fee,” introducing the first meaningful economic decision in the game. Chris and Matt debate REST semantics (POST vs PUT) along the way.

Game mechanic redesign — “buying a bar” is decoupled from the daily decision loop and treated as initial state. Future daily decisions will respond to world events rather than free-form player input, simplifying the tick mechanic significantly.

Draw.io VS Code extension — highlighted as a productivity win for keeping architecture diagrams version-controlled directly in the repository, without leaving the editor.

GitHub Copilot as a pair programmer — Copilot generates model classes, controller stubs, enum values, and nullable checks in real time throughout the episode, prompting a broader conversation about code ownership and the importance of reviewing AI-generated code before committing it.

The episode closes with both changes merged to main via a pull request, the GitHub Actions pipeline triggered, and the team successfully calling the player creation and bar management endpoints against the deployed environment.

Related Content

ToolUp Tuesday #2

ToolUp Tuesday #2

2022-02-22

Chris and Matt start building the Player State API using .NET Web API, defining data models for the SpaceBar management sim game. They scaffold the project, discuss minimal APIs versus controller-based approaches, and set up a GitHub Actions CI workflow to build and validate the service on every commit.

ToolUp Tuesday - #6

ToolUp Tuesday - #6

2022-05-03

Chris and Matt wire up Dapr state management for their .NET player state service, configure VS Code debugging for multi-service development, and document game use cases covering player enrollment, world event ticks, and decision lifecycle.

ToolUp Tuesday - #3

ToolUp Tuesday - #3

2022-03-08

Chris and Matt build the world events engine in .NET, connecting it to the Player State models via project references. They design a state machine architecture for the game engine, discuss action points as a game mechanic, and plan the player decisions API in Go for the next episode.