Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 27 additions & 0 deletions DRAFT_STATUS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
# Blog Draft Status

## Current Drafts

Two posts replacing the original 10-post series:

1. **`_drafts/were-back.md`** — Chronological recap of 2022-2025 development, life events, AI-assisted dev
2. **`_drafts/state-of-starwards-2026.md`** — What's built, what works, what's missing, what's next

## Key Decisions (from interview with Amir)

- March 2024 was a **refocus/reprioritization**, not a rewrite
- Most core systems built in **2022 H2** (509 commits, 15 releases), not 2024
- Blog silence due to: war (Oct 2023), immigration to NL (late 2025), life getting busy
- AI-assisted development since early 2023 — key enabler for continued progress
- Unity+Colyseus POC exists (modest), still the long-term 3D plan
- Not LARP-ready yet as of April 2026, but getting there
- Daniel returning soon in vibe-coding capacity
- No community invitation in posts
- Tone: matter-of-fact, no drama, no apologies

## Remaining Work

- [ ] Amir reviews both posts for voice and factual accuracy
- [ ] Add screenshots/videos where appropriate (placeholder notes?)
- [ ] Verify Jekyll cross-post links render correctly
- [ ] Publish
17 changes: 17 additions & 0 deletions WRITING_STYLE_ANALYSIS.md
Original file line number Diff line number Diff line change
Expand Up @@ -286,6 +286,23 @@ To maintain consistency:
- Present decisions without explaining the "why"
- Make posts too short (prefer depth over brevity)

### CRITICAL: Avoid AI Social Media Content Patterns

The Starwards voice is **NOT**:
- **Dramatic pacing with artificial tension** — No "And then we merged it." / "And it worked." style one-liners for effect
- **Extracting drama from mundane decisions** — Don't artificially inflate the importance of technical choices
- **Breaking rhythm with short paragraphs** — Substantial paragraphs with natural flow, not choppy dramatic beats
- **Marketing speak** — No "Here's what we learned:" / "The result:" / "And that's when we realized:" formula writing
- **Listicle structure** — Not everything needs to be numbered points and bold headers
- **Cliffhanger transitions** — No "But here's the thing..." / "Here's where it gets interesting..." artificial hooks

The Starwards voice **IS**:
- **Matter-of-fact even about big decisions** — "We removed the 3D code" not "In March 2024, we made a decision that was both liberating and terrifying..."
- **Natural pacing** — Let the content create its own rhythm, don't force dramatic beats
- **Substantial paragraphs** — Explain things fully in proper paragraph form
- **Straightforward** — Say what happened, why it happened, what it means
- **Honest without being performative** — Admitting mistakes without making a show of vulnerability

### Tone Checklist:
- [ ] Conversational but informative
- [ ] Honest about challenges
Expand Down
93 changes: 93 additions & 0 deletions _drafts/state-of-starwards-2026.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
---
layout: post
title: State of Starwards, April 2026
subtitle: What's built, what works, and what's missing
tags: [product, story, game-design, technology]
---

This is the companion to [We're Back]({% post_url were-back %}), which covered the history. This post is about the present.

## What's Built

Starwards has grown from a dogfight prototype into something that resembles an actual bridge simulator. Here's what exists and works today.

### Ship Systems

Every ship runs a set of interconnected subsystems, each with power allocation, heat management, coolant, and the possibility of being damaged or hacked. The core formula is simple:

> effectiveness = power × coolantFactor × (1 - hacked)

If a system overheats (above 100°), it breaks. If it's not getting enough power, it runs at reduced capacity. If the engineer doesn't allocate coolant, heat builds up. This creates the kind of interdependency between crew stations that makes bridge sims interesting — the engineer's choices directly affect what the pilot and gunner can do.

The full subsystem list: **reactor**, **maneuvering**, **thrusters** (directional array), **radar**, **chaingun**, **torpedo tubes**, **magazine**, **armor** (sectional plates), **targeting**, **warp drive**, **docking**, and **smart pilot** (autopilot/bot AI).

### Combat

The [engagement circles]({% post_url 2021-02-27-engagement-circles %}) design from 2021 is fully implemented. Three ranges, three weapon types:

- **Long range (4000m+):** Missiles with homing guidance and proximity detonation. They force evasion and open engagements.
- **Medium range (1000-4000m):** Cannon shells that require leading the target, plus blast shells for area disruption.
- **Close range (0-1000m):** Chaingun furball — the [dogfight]({% post_url 2021-03-20-dogfight-showcase %}) we built first.

Ammunition is finite. Tubes have loading times. Missiles can be dodged if you're fast enough. It all works together.

### Armor

The [Battletech-inspired sectional armor]({% post_url 2021-04-03-damage-system %}) is real now. Ships have directional armor plates (front, rear, left, right — more granular on larger ships). Which plate takes damage depends on the impact angle relative to the ship. When a plate is destroyed, hits penetrate to internal systems. Positioning matters: don't show your damaged side to the enemy.

### Navigation

The game universe is no longer a single 20km combat zone. Warp drives let ships travel at multiples of their base speed (charging takes time and generates heat). Waypoints provide navigation structure. Ships can dock with each other for resupply — reloading missiles, that sort of thing.

### Bot AI and GM Tools

NPC ships have a proper AI system with tactical orders: MOVE, ATTACK, FOLLOW. Idle behaviors include PLAY_DEAD, ROAM, and STAND_GROUND. The GM can right-click on the radar to issue orders, create and destroy objects, and tweak ship parameters in real time. This evolved from the [spiral-bug era]({% post_url 2022-06-12-simple-ai-commands-wip %}) into something that actually works for running scenarios.

### Engineering Station

The ECR (Engineering Control Room) gives the engineer control over power allocation, coolant distribution, and warp. Every system can be tuned between SHUTDOWN, LOW, MID, HIGH, and MAX power. Coolant is a limited resource that has to be distributed across systems based on what's needed right now. Hotkeys make it fast to adjust during combat.

### Infrastructure

On the development side:

- **Colyseus multiplayer** with three room types: SpaceRoom (shared physics simulation), ShipRoom (per-ship bridge state), and AdminRoom (game lifecycle)
- **All state changes** go through JSON Pointer commands — validated, logged, and theoretically replayable
- **Playwright E2E tests** for widget and integration testing
- **Node-RED integration** for external scripting and scenario automation
- **Comprehensive documentation** — architecture, subsystems, physics, patterns, API reference
- **CI/CD** with preview deployments

## What's Missing

We're not LARP-ready yet. Here's what's still needed:

**Corvette-class ships.** We have fighters (1-2 crew). We don't yet have the larger ships (4-6 crew) that would make a proper multi-station bridge experience. The architecture supports it — the subsystem design is ship-class agnostic — but the specific designs and UI layouts aren't done.

**Multi-bridge scaling.** The system is designed for multiple ships, each with their own crew. We haven't stress-tested what happens with 3 ships × 5 crew = 15 simultaneous players. Fleet-level GM tools need work.

**Advanced damage and repair.** Ships take damage and systems break, but the damage reporting is basic. We want narrative damage reports, repair minigames, and better visual feedback (something LCARS-like, maybe).

**Cyber warfare.** The effectiveness formula already has a `hacked` term, but there's no actual hacking gameplay yet. It's a placeholder waiting for a game design pass.

**3D visualization.** Removed from the main codebase in 2024. The plan is still to build a Unity client that connects via Colyseus, but that's future work.

## The Tech Stack

For reference, Starwards is built on:

- **Colyseus** for multiplayer state synchronization
- **PixiJS** for 2D rendering (tactical radar, widgets)
- **React** for UI components
- **TypeScript** throughout
- **Node-RED** for external scripting

The server runs the physics simulation at 60Hz. Clients connect via WebSocket and receive state updates. All game logic lives on the server; clients are views with input.

## What's Next

The immediate focus is getting to a playable LARP scenario. That means corvette-class ships, multi-bridge testing, and enough GM tooling to run a session without things falling apart.

Daniel is coming back to active development, which will help. We're both leaning heavily on AI-assisted development to make progress despite limited time — it's what makes a project of this scope feasible as a side project.

We'll keep the blog updated this time. No promises about frequency, but we're done with four-year silences.
67 changes: 67 additions & 0 deletions _drafts/were-back.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
---
layout: post
title: We're Back
subtitle: Four years of Starwards development, condensed
tags: [product, story, technology]
---

The last blog post was in June 2022. It's been almost four years. A lot happened - both in the project and in our lives - and we owe you an update.

We're not going to be dramatic about the silence. Life got complicated (a war started in October 2023, and Amir eventually immigrated to the Netherlands in late 2025), and somewhere along the way writing blog posts fell off the priority list. The project never stopped, though. It slowed down, sped up, and changed shape - but it kept going.

Here's what actually happened.

## 2022 Was Good to Us

The second half of 2022 was, by a wide margin, the most productive period in the project's history. We made a gap analysis for a LARP-playable version, and that gave us more realistic goals to pursue. We formalized them into a list of tasks and milestones - in other words, a Plan. We shipped 15 releases between August and December. This is when most of the core systems were built:

- **Station screens** - proper hard-coded screen per station (Pilot, Weapons)
- **Warp drives** - FTL travel with charging mechanics and heat management
- **Docking** - ship-to-ship attachment for resupply
- **Waypoints and pilot radar** - navigation beyond "fly towards the dot"
- **Node-RED integration** - bridging the game to the IoT ecosystem
- **Magazine and ammo systems** - finite ammunition with loading mechanics
- **System status widgets** - status readouts for ship systems

We also migrated to PixiJS 7 and established a release pipeline. By the end of 2022, the game had gone from "dogfight prototype" to something that looked like an actual bridge simulator with multiple stations.

## 2023 Was More Challenging

2023 was a different story. In the first half, we followed the plan to build the Engineering Control Room screen - power allocation, coolant management, warp controls, the armor widget. It was good work that rounded out the engineering gameplay we'd been designing since the [second milestone]({% post_url 2021-03-27-2nd-milestone %}).

We had planned a LARP event for December 2023 - one last run using EmptyEpsilon before switching fully to Starwards. That game became our focus and we put Starwards aside in favor of smaller systems that were actually relevant to its success. But then the war started in October, and those plans went up in smoke along with a lot of other things.

One thing that did start in early 2023 was using AI-assisted development. At first it was modest - help with boilerplate, exploring design options, that sort of thing. This turned out to be more important than we realized at the time.

## 2024: The Refocus

By early 2024, the project felt like it was over. The codebase had grown in so many directions - 3D rendering, engineering systems, weapons, navigation - but it wasn't playable as a LARP product, and it didn't seem like it was going to happen any time soon. Plan or not, it still lacked focus.

The biggest call was removing the 3D main screen: a friend who was learning Unity offered to make a contribution to the project. We'd had a Babylonjs-based 3D view running alongside the PixiJS 2D tactical display [since 2021]({% post_url 2021-01-29-first-3d %}) and we were already invested in making it work and look nice, but it was going nowhere, and the chance of having all the 3D stuff handled in a native client with a powerful engine to render it (not to mention a dedicated developer/designer) was tempting. We had a modest proof-of-concept showing that a Unity client could connect via Colyseus's polyglot support. Also worth remembering that for LARP technical play the 3D view is eye candy and a centerpiece, but the 2D view is genuinely better - you can see all ships at once, distances are clear, no occlusion issues. So we decided to focus on 2D now, do 3D properly as a separate Unity client later, and deleted 4,523 lines of 3D code in March 2024.

The rest of 2024 was cleanup and refinement:

- **Memory leak fixes** - Colyseus schema listeners accumulating, MapSchema `.toArray()` issues. The kind of bugs you only find after long sessions.
- **Armor system fixes** - The [sectional armor]({% post_url 2021-04-03-damage-system %}) we designed in 2021 was finally fixed. Hit angle calculations and damage formulas worked.
- **Bot AI and GM controls** - Remember the [spiral bug]({% post_url 2022-06-12-simple-ai-commands-wip %})? We used AI to simplify and debug all the extrapolation formulas used by the smart pilot. Fight fire with fire! The smart pilot got a proper rewrite with angle targeting, position targeting, and tactical orders (MOVE, ATTACK, FOLLOW). GMs can now right-click to command NPC ships.
- **Object lifecycle** - GMs can create and destroy objects. Sounds basic, but it wasn't there before.

2024 was not such a big year in terms of features, but it was a critical step towards completion. Focusing on the core value proposition and solidifying it. And the war continued.

## 2025: The Revival

Most of 2025 was quiet in terms of this project. Serious adult stuff needed our full attention, which eventually ended up with Amir and his family immigrating in October '25 to a place with less war and suffering. And then in Q4 things picked up again - 131 commits between October and December, but the focus was different from previous bursts.

This time it was about sustainability: making the project something that could survive our increasingly busy lives. We integrated LLMs into the development workflow: made it write extensive documentation (architecture guides, subsystem specs, physics docs, development patterns), and build out Playwright E2E testing.

That LLM part deserves a mention. AI-assisted development is what makes this project viable for us right now. We both have day jobs and lives that are more complicated than they were in 2021 (and 2021 was complicated plenty). We are invested in the chance that the ability to describe what we want, review what gets produced, and iterate quickly will change the economics of side-project development.

## 2026 Is Where We're At

2026 so far has been about pushing forward, slowly implementing the same plan we made in 2022, while improving LLM effectiveness. We finished up some weapons issues and started working on the long range signals radar. An internal preview deployment for each PR will allow us to move more features concurrently and spend time only on making decisions and reviewing the work. Daniel is coming back to active development soon, also working in this style.

## Where This Leaves Us

So that's the story. Four years of uneven progress, shaped by both technical decisions and life circumstances. The game is significantly more complete than when the blog went silent - the core systems we designed in 2021 are now implemented and working.

The next post covers where Starwards actually stands today: what's built, what works, and what's still missing.
Loading