<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Octopus Odyssey Devlog</title>
    <link>https://octopusodyssey.com/devlog/</link>
    <atom:link href="https://octopusodyssey.com/devlog/rss.xml" rel="self" type="application/rss+xml" />
    <description>Notes from building my games. Design decisions and trade-offs, written while they're still fresh.</description>
    <language>en</language>
    <lastBuildDate>Tue, 04 Nov 2025 12:00:00 GMT</lastBuildDate>
    <item>
      <title>What It Costs to Run an MMO</title>
      <link>https://octopusodyssey.com/devlog/what-it-costs-to-run-a-mmo/</link>
      <guid isPermaLink="true">https://octopusodyssey.com/devlog/what-it-costs-to-run-a-mmo/</guid>
      <pubDate>Tue, 04 Nov 2025 12:00:00 GMT</pubDate>
      <description>Conventional wisdom says running an MMO requires real infrastructure and a real budget. Mine costs roughly $145 a month, and here's the breakdown.</description>
      <category>Nebula Control</category>
      <category>Technical</category>
      <content:encoded><![CDATA[<p>The bill for running Nebula Control comes out to roughly $145 a month. This is the full production stack for supporting 500-750 active players. You may think an MMO requires serious infrastructure and a large budget, but starting out the cost is quite reasonable.</p> <p>I am running everything off of DigitalOcean's Kubernetes stack. It is not the cheapest, but I am very familiar with it and it is reliable. Here are the costs, broken down into each part I need:</p> <table><thead><tr><th>Service</th><th>Purpose</th><th>Cost</th></tr></thead><tbody><tr><td>Kubernetes worker nodes, 2x s-2vcpu-4gb</td><td>The game compute and redundancy</td><td>$48/mo</td></tr><tr><td>Managed MySQL, HA with a primary and standby</td><td>Game data storage and redundancy</td><td>$60/mo</td></tr><tr><td>Managed Valkey, single node</td><td>Realtime storage</td><td>$15/mo</td></tr><tr><td>Container registry</td><td>Storage for all server images, a necessary evil</td><td>$20/mo</td></tr><tr><td>Kubernetes control plane</td><td>Controls the game cluster, free on DigitalOcean</td><td>$0/mo</td></tr><tr><td>Cloudflare DNS, TLS, tunnel, and DDoS protection</td><td>The technical front door to my servers</td><td>$0/mo</td></tr><tr><td>Grafana Cloud monitoring</td><td>System monitoring with a generous free tier</td><td>$0/mo</td></tr><tr><td>PostHog analytics</td><td>Analytic reporting for how players are using the game</td><td>$0/mo</td></tr><tr><td>Resend email</td><td>For sending out emails, free tier gives 3,000/month</td><td>$0/mo</td></tr><tr><td>Arachnid CSAM scanning</td><td>Legal requirement to scan all uploaded images for CSAM</td><td>$0/mo</td></tr><tr><td>Sightengine</td><td>Image scanning tool to detect NSFW images with a decent free tier</td><td>$0/mo</td></tr></tbody></table> <p>For the initial launch a lot of services have free tiers that keep the cost down. As the game grows I can increase the spend on these $0 line items without changing how anything runs.</p> <p>There are other bills that don't appear monthly but do impact the cost of running this game. Setting up a business, accounting, and taxes are all real costs too. I also need to hire an artist to create all of the in-game assets I need as well as a lawyer for everything legal. These haven't been priced out yet but when they are each will easily run into the thousands. The biggest cost is my time, which is difficult to put a real number on. Hundreds of hours put into developing this, all for $0, at least until the game is a success.</p> <p>What does this look like for the break-even math? Well, a season's subscription is $12. After Stripe takes its cut, that works out to slightly less than $2 a month per player. Which is why I have targeted about 80 players on seasonal servers as what I need to cover the game's expenses.</p> <p>The point of talking about this is to show that running a game like this doesn't have to be expensive. An 80-player goal is achievable and means I can keep the game running without adding microtransactions or relying on whales. A subscription-only MMO is possible at this scale.</p>]]></content:encoded>
    </item>
    <item>
      <title>Subscription Only, and Three Reasons Why</title>
      <link>https://octopusodyssey.com/devlog/subscription-only-and-three-reasons-why/</link>
      <guid isPermaLink="true">https://octopusodyssey.com/devlog/subscription-only-and-three-reasons-why/</guid>
      <pubDate>Sun, 14 Sep 2025 12:00:00 GMT</pubDate>
      <description>Free-to-play enables abuse, undermines competitive fairness, and doesn't pay the bills.</description>
      <category>Nebula Control</category>
      <category>Design</category>
      <content:encoded><![CDATA[<p>Nebula Control has no free-to-play tier. Every player on a live server pays the same subscription. The why breaks down into three reasons, and none of them are complicated.</p> <p>The first is abuse prevention. Browser-based games have a well-known multi-account problem. Creating a free account costs nothing, which means creating ten of them costs nothing. Players will do it to grief others, spy on enemies, or even field an entire fake guild to compete against real ones. This can lead to real players quitting, which makes servers smaller and worse. Having a subscription doesn't eliminate the abuse, but it does raise the cost of doing it, which reduces the number of multi-accounts.</p> <p>The second reason is simpler. The game needs to pay for itself. There are server and service costs that need to be paid, and I have no external funding. My estimates say that at launch, roughly 80 paying players cover the cost. That's an achievable number.</p> <p>The third reason is that I'm opposed to pay-to-win mechanics. Mixing free-to-play accounts with paid accounts effectively means the paid players are paying to win. A subscription that everyone has to pay keeps all players on equal footing.</p> <p>Charging upfront limits my audience, so here's what I've done about that. The training server is free. It's designed to give potential players a feel for the game before they commit to paying anything.</p> <p>I am also building a referral system where a current player can give a one-week trial on a live server to someone they want to recruit. This helps the community recruit new players, and recruits brought in this way are likely to stick around longer than someone who signed up cold.</p> <p>I'd rather run a smaller game that respects its players than chase numbers and watch the design fall apart.</p>]]></content:encoded>
    </item>
    <item>
      <title>Food Doesn't Belong in a Space Game. I Added It Anyway</title>
      <link>https://octopusodyssey.com/devlog/food-doesnt-belong-in-a-space-game/</link>
      <guid isPermaLink="true">https://octopusodyssey.com/devlog/food-doesnt-belong-in-a-space-game/</guid>
      <pubDate>Thu, 24 Jul 2025 12:00:00 GMT</pubDate>
      <description>Most space strategy games skip food entirely. I added it to fix a different problem: every player chasing the same few astros.</description>
      <category>Nebula Control</category>
      <category>Design</category>
      <content:encoded><![CDATA[<p>The problem I was trying to solve was astro diversity. In space strategy games, expansion is predictable: players hunt the astros with the highest income or fleet production, and everything else gets ignored as filler. I wanted players to actually have to think about which astros to take, not just sort them by best to worst.</p> <p>Food is not a usual resource in these kinds of games. Resource management systems can get tedious fast. Adding another number for players to worry about doesn't make a more interesting game. So I needed a good reason to add food to Nebula Control.</p> <p>Food is there to remind players that empires need more than the best production astros to function. It shouldn't be something players are constantly thinking about.</p> <p>Here's how it works. Every astro has a fertility value that varies by type and orbital position. An astro may be rich in credits or production capacity but have poor or no food production. Others won't be as rich but can produce a large amount of food. Targeting only high-production astros will cause a player to run into food deficits as they grow their empire. They will need a high food-producing astro at some point.</p> <p>Food is stockpiled as an empire-wide resource. All consumption is pulled from that stockpile. This keeps the resource something that sits in the background most of the time.</p> <p>That changes if you expand too fast, or your breadbasket astro gets attacked and you run out of food.</p> <p>When you run out of food you enter a Shortage, which cuts construction, production, and research capabilities by 25%. If the Shortage lasts for 24 hours then your empire enters a Famine and those penalties increase to 50%. After another 48 hours of Famine, your empire enters a Crisis and those penalties increase to 75%.</p> <p>These tiers give players a warning and a chance to correct the issue before the huge penalties hit.</p> <p>Right now this is how food works. If testing shows food still isn't important enough, I have a backup plan: fleets would consume food.</p> <p>That would both limit fleet sizes and tie food directly into combat. Players would need to plan their food production around the fleets they want to maintain, not just their empire size.</p> <p>If food has to matter more, I'd rather it matter in combat.</p>]]></content:encoded>
    </item>
    <item>
      <title>Replacing Occupation with Disruption</title>
      <link>https://octopusodyssey.com/devlog/replacing-occupation-with-disruption/</link>
      <guid isPermaLink="true">https://octopusodyssey.com/devlog/replacing-occupation-with-disruption/</guid>
      <pubDate>Fri, 14 Mar 2025 12:00:00 GMT</pubDate>
      <description>In many space strategy games, occupation turns losing a fight into a weeks-long income drain that grinds players into quitting. Nebula Control replaces it with a timer that actually ends.</description>
      <category>Nebula Control</category>
      <category>Design</category>
      <content:encoded><![CDATA[<p>In many space strategy games, losing a base doesn't end the fight. It starts a slow grind that can last weeks. Nebula Control replaces that with something that has a fixed end.</p> <h2>How Occupation Works in Other Games</h2> <p>In the same browser game I wrote about in my first post, you can have your bases occupied by other players. Being occupied reduces the base's income by 30%, slows fleet, building, and research production by 30%, and cancels any incoming trade routes.</p> <p>This can hurt, but isn't game-ending. The real issue is that the 30% income lost is transferred to the player occupying your base. On top of that, they can pillage the base every 24 hours, earning extra credits and pulling some of that directly from your reserves.</p> <p>This creates a real incentive for players to permanently occupy other players' bases. Being permanently occupied is a huge driver of players quitting the game.</p> <h2>Why Fighting Back Doesn't Fix It</h2> <p>Now you can fight back with your own fleet, get guild members to help, or wait for the occupier to leave. But they can come back at any time and reoccupy the base, regaining the hourly income and ability to re-pillage the base every 24 hours. It doesn't help that the base's defenses recover slowly, so retaking the base is easier than the first time.</p> <p>If you do manage to get them off your base, it doesn't instantly recover. Fleet, building, and research speeds all jump back up right away, but the base's income trickles back so slowly that full recovery can take over a week. Trade routes are locked out for 24 hours after the initial hit, and defenses take days to recover fully.</p> <h2>What I Changed</h2> <p>The system I built to replace occupation is called Disruption. The attacker no longer gets any ongoing income from the base, but they still get a one-time credit pillage. Afterwards, instead of being occupied, the base enters a Disrupted state. The base is disrupted for 8 hours, not weeks. When that time runs out, your base comes back to full function immediately.</p> <p>After disruption is over, your base enters a 24-hour immunity period where it cannot be attacked again. This gives the defender a chance to build up more defenses or station defending fleets, but most importantly, some breathing room.</p> <p>Eight hours is the starting number. Alpha will tell me whether it should be longer or shorter.</p> <h2>The Goal</h2> <p>The idea isn't to make being attacked painless. It should still hurt, and attackers should be rewarded for well-timed, well-planned attacks. The idea is to give defenders certainty: a clear timer on when their base recovers, and the knowledge that the damage is temporary.</p>]]></content:encoded>
    </item>
    <item>
      <title>Why I'm Building Nebula Control</title>
      <link>https://octopusodyssey.com/devlog/why-building-nebula-control/</link>
      <guid isPermaLink="true">https://octopusodyssey.com/devlog/why-building-nebula-control/</guid>
      <pubDate>Fri, 10 Jan 2025 12:00:00 GMT</pubDate>
      <description>A decade and a half playing the same browser strategy game taught me exactly what was wrong with it. So I started building the version I always wanted.</description>
      <category>Nebula Control</category>
      <category>Design</category>
      <content:encoded><![CDATA[<p>For the past 16 years I've been playing the same browser game. Long enough that I built the tools, calculators, and rank history its community runs on. Not because the game kept getting better, it didn't. What kept me playing was the community and the friends I made over those years.</p> <p>The mechanics of that game were ok, building a base and watching your numbers go up was a nice dopamine hit. Combat in the game was well balanced and felt satisfying. But when you play a game for this long you start to notice issues and gaps. Servers that stagnate as players quit. Combat losses that turn into weeks-long income drains. Coalitions that grow until nobody wants to fight anymore. I dive into each of these in later posts, but seeing them is what pushed me to build.</p> <p>Through these tools, especially the rank history and server stats, I could see trends in the game. As servers got older, players would quit. Most servers lost 40%-45% of their players in the first six months. Then coalitions would grow until the server stagnated. Players would happily grow their empires until the next server started or if they had already quit, wait until the next server to start again. The game itself received very minimal updates, sometimes years apart. None of them did anything to address the decreasing population or issues with the game.</p> <p>Over this time I had been slowly collecting notes and ideas on ways to improve this game. Most ideas got tossed once I really thought them through, but the ones I kept felt good. The player population kept declining. The game developer's updates were not bringing enough players back. So it was time to take a chance and make my version of this game.</p> <p>I took these loose ideas and started building. The goal: create the game I want to play and avoid the issues I had noted over the years.</p> <p>Sixteen years of notes finally became a design doc. The rest of these posts are what's in it.</p>]]></content:encoded>
    </item>
  </channel>
</rss>
