For The Company!
Main

Devlog

Devlog

Twelve years of picking this up and putting it down again, newest first.

2026-10-28

Stations, artifacts and ten new languages

Three weeks since the last entry, which is the longest gap in a while, and this one is long. Most of it is stations. The other departments and the raiders have them now, and your own stations actually do something.

Some things came in between that I never wrote up. The game runs on phones now, it has the new logo, and you can send me feedback or sign up for the mailing list from inside the game. The Company's open contract asks for 30,000 ore instead of 3,000, because a few drones got through the old number in about a minute.

On a desktop the dock's rooms sit in a bar along the bottom that stays open, and your standing with The Company shows what the next step unlocks.

The dock on a desktop, the rooms in a bar along the bottom and your standing with The Company
The dock on a desktop

A contract starts with your ship docked at The Company's dispatch station, and the collection and service vessels fly out of it. Docking is one tap: tap inside the ring round a berth, or long press the berth, and the ship flies over and docks. The other departments' ships use the same berths at their own stations, so you see them come and go.

Docking at your own station
A station and the ground it claims

The raiders got stations too, red ones, spread over the whole sector. A raid starts at the nearest one. Before this the raiders just appeared somewhere near you and vanished again on the way home, sometimes in the middle of the map, which looked silly. Now they launch from a berth and fly back to dock there. Each station also has a few patrols out, and they come after you if you get close. You can shoot them down. Auto-pilot keeps away from the stations so you can leave the game running. You can't attack a station itself yet.

A raider station in red, its berths round the core, and one of its ships firing on your ship beside it
A raider station and one of the ships it launched

The contract board has six new kinds of contract: a bounty on the raiders, finding the station the raids come from, claiming ground, a survey, hauling a load out to a forward station, and building that forward station in the first place.

Mining drones don't wait for the ship to stop any more. Fly through a field and they go out and mine on the way. Pretty cool!

Drones out while the ship moves

The game is translated into German, French, Spanish, Brazilian Portuguese, Russian, Chinese, Japanese, Korean, Filipino and Indonesian, so with English that is eleven. It picks your browser's language and you can switch in the settings. Shortcuts go by the letter printed on the key, so Z zooms on my German keyboard too. The translations are first drafts, so if something reads wrong in your language, please tell me through Send feedback.

New sectors are laid out in belts of asteroids with empty deserts between them, and they get richer the further out you go. Far out in the deserts there are void giants, which are bigger than the giants you have seen so far. Sectors you already started keep their old layout.

I spent a lot of time on big maps. My biggest sector has 350,000 asteroids and the Sector window used to bring everything to a crawl on it. It opens right away now, and exploring doesn't make my laptop hot any more. The window got filters on every tab, and you can upgrade turrets straight from the list. Very far out the map used to break, the sky turned into blocks, and that is fixed too, so the map really is endless now.

Then the stations, which took most of the last two weeks. Every station gets a name. It has a build queue, so you line up modules and they go up one after the other, and you can cancel one that is already being built. The station window has views for the overview, modules, building, storage, the exchange, the refinery, research and the vault, and each module opens its own window. Anything queued or under construction is yellow.

The drone bay used to do nothing. Now a station's drones mine and survey on their own inside the ground the station claims, and they launch from the drone module and dock back there, not at the core. If your ship is docked, its drones join in until you undock. And if you put turrets and stations in a ring, everything inside the ring is claimed as well. For a while the drones did a weird dance back and forth whenever the storage was almost full. That one is fixed.

The fabricator builds drones and has its own queue, the refinery bay works like the refinery on your ship, and the exchange sells what you have too much of. Each material in the exchange has a reserve: you drag its bar to set how much the station keeps, and only what is above it gets sold. Your own collection vessels fill the station up to the reserve first and sell the rest.

Stations keep building while you are away. I left a tab hidden overnight, came back after nine hours and the queue had barely moved, because the computer was asleep and the game didn't count that time. It does now.

Artifacts are new. Once in a while refining ore turns up a sealed one. You can study it at a station with a Laboratory, put it in a Vault socket, take it apart, or hand it over to The Company for credits, and some can be used once. That's all I'll say about them for now. Research has a Boosts tab and an Artifacts tab as well.

Refueling and repairs take time now, from the hold, at a station or from the service vessel, and a small top-up is quicker than a full one. Sounds come from where they happen, so far away or zoomed out they are quieter and off screen you don't hear them. Every ship, raider and drone has engine trails. The first version of the trails was way too long, so they fade after a second and a half now.

The game also has its own icons instead of a stock icon font. On a phone held sideways, windows open at the side of the screen and leave the map clear, and the whole interface is more compact. I made the slowest parts of loading a lot faster as well. On my phone a heavy sector took 12 to 14 seconds to load and now takes about 9, and the loading screen says what it is doing while you wait.

Two things for your saves. The game asks the browser to keep its storage, so the browser doesn't delete your career when it runs low on space. And a career only plays in one tab at a time. If you open it in a second tab, that tab just watches until you press Take over.

A player wrote me a long email about the stations, and everything in it is fixed: the exchange sells again, docking at your station pays for modules from the hold, the station refinery doesn't stall, drone cradles with drones in them actually fly them, and refueling from the hold runs over time instead of all at once. Also fixed: placing a turret doesn't make the game stutter any more, and a click on empty space on the map doesn't start mining.

2026-10-08

The new look, turrets, and how big the map gets

The whole interface got a new coat since the last update. Every window is dark glass now, the keys have a soft light along the top, and anything you can do right now is green. Before this the dock and the sector looked like two different games.

The dock in the new look
The dock in the new look

The HUD in the sector changed too. Tap an asteroid or a ship and what you can do with it shows up as round buttons right next to it. An asteroid has a ring showing what it is made of, which gets shorter as you mine it, and a ship's ring shows its shield, hold and fuel. Windows open in one spot now, and threat and radiation fit on one line.

There is a cinematic mode now. Press G, or tap the little eye at the bottom, and the interface goes away.

Turrets were barely visible next to a station, so they are a lot bigger on the map now. With three of them round a station a raider does not last long.

Three turrets and a raider

I also wanted to show how big the map gets. This is an hour of exploring, zoomed out from the ship until everything it charted fits on the screen.

An hour of exploring, zoomed out

When you come back to the game after a while, it plays through what your ship did while you were gone. An hour used to take a few seconds; now it is under one.

Mined ore now pops out of the asteroid and flies to the ship, with a small coin sound. Pretty cool!

Ore flying to the ship

Research got the new look too. It opens as one big window now, with what you are studying and what is queued right next to the tree, and you can see on every blueprint in the tree whether it is studied, under study, queued or still locked.

The Research room in the new look
Research in the new look

2026-10-02

About two weeks since the last entry, and it escalated again. People played it after watching the trailer and told me what was wrong. Most of this update came from what they told me. You get the bigger ships sooner, almost every hull flies drones now, and the end of an asteroid looks a lot better.

Three lasers, three asteroids

A tester started a fresh career and just sat there, because there was nothing on the screen. The nearest asteroid was outside sensor range. The ship now starts beside an asteroid, with small ones nearby that take about ten seconds to mine. Tapping an asteroid starts mining it, and credits float up when it is mined out. Auto-mine and auto-explore are on from the first contract.

Everyone wanted more than one laser and some drones, but the first mining drone was almost two hours away. I moved the Ordinal to Approved standing and made the Dray cheaper. Saving up gets you a Dray and a mining drone in about fifteen minutes. Every hull except the Surveyor flies drones, though the Kestrel only takes survey drones. Yield asks for 2,500 units instead of 5,000; the old quota meant a quarter of an hour of the same view.

The Hopper with its drones out

There are ten hulls now. New are the Barge, a hauler, the Crucible, a forge ship, and the Meridian, which goes further out than anything else. The Warren carries seven mining drones with its first bay and twenty-one at the top tier. That swarm is my favourite thing in the game. All three design languages draw every hull. The bigger hulls kept running out of power, so there are two new module tiers your Fabricator makes from isotopes or superalloy, and they do more on less power.

A Warren with its bay full of mining drones

The further out you go, the bigger the clusters get, and whole regions are one type of asteroid. There are two new types, Radioactive and Rare-earth, with their own ore and refining. Mining a Radioactive asteroid doses the ship, shown in a new radiation readout. The further from the start, the more radiation and the more raiders.

A giant asteroid breaking off smaller ones

Giant asteroids use 1024 pixel textures with grooves lit along their edges. Mining an eighth of a giant's ore breaks off two to four smaller asteroids. When you mine the final eighth, the giant splits. The first version shed pieces bigger than the giant all together :D Their sizes are limited to what the giant gave up now, and their positions survive a reload.

An asteroid mined down to nothing

The end of an asteroid got the most attention. It glows from red to white, then bursts from a core of four to eight fragments. Lasers throw sparks and debris, and a Mining boost makes the laser wider and brighter. I added dust in the craters and round the outline because the asteroids looked a bit sterile before.

The laser has a higher-pitched crackle that you can hear on a small speaker, and each breakup step cracks like stone. I levelled the sound effects so none drowns out the others. The laser is quieter now.

Research is one tree with seven lines of work. Buy route buys everything a blueprint needs in the right order and tells you what it costs and how long it takes. You can pin a goal. Survey Protocols, Sensor Arrays and Beam Extension come first, at 60 credits and a minute each. A locked blueprint tells you what is missing, and some study costs fall by up to thirty percent if you have already done the task in play.

A station with its modules built

Zoom out and the sector becomes a map of explored space, asteroids, ships and stations. It only draws what is already loaded, so zooming out does not load more of the world. T switches between the map and sector, remembering each view. W turns on a camera that keeps the ship and whatever is going on around it in frame, a raid or a drone swarm, and zooms back in when it is over.

The sector zoomed out into the map

An Ordinal, Hopper and Tender from your department mine near the start, with one laser per mount and their drones out. So you can see what you are saving up for. I did not want to hand you a big ship and then take it away again. Further out are trading hubs, and some contracts include a rich asteroid cluster, a smaller giant or a passing ship.

A few smaller changes:

  • V calls the collection vessel instead of waiting for it.
  • Raiders leave wrecks you can salvage.
  • You get paid for material left in your hold and containers when you finish a contract.
  • Containers have corrugated sides, doors and lock rods instead of looking like small crates.

I fixed the tablet freezes, some of which lasted over three seconds. The second load is faster because things are cached now, the dock loads less at the start, and battery saver runs the simulation at 30 Hz. Sitting in the dock uses a few percent of a processor core instead of most of one. And when you come back from a background tab it tells you what happened while you were away.

There is still a long list of things that do not work, but the first hour plays a lot better. Twenty-one drones on a field and three lasers on the big asteroids, that is what I wanted. Pretty cool!

2026-09-22

Nine days since the last entry and the list is long again. There is a trailer now! Everything in it is recorded straight out of the game, and the music under it is the game's own score, which is the biggest new thing, so I will start with that.

I tried writing the music in code instead of shipping a track, and it was the most fun I have had on this project in a while. It is generated with plain Web Audio, without samples or a library. A felt piano made from stretched partials and banded noise plays alongside strings, choir, brass and bells. The percussion is machine noises. I took out the long swelling notes from the first spike, then had to put them back because it did not sound right without them.

The career seed picks the key and theme. The song moves through six-minute movements, changing its layers and melody with what the ship is doing. Twelve presets cover situations such as exploring, mining, raids and docking. Transitions take twelve seconds and land on the next bar. Sound effects use the same instruments and key, so the laser starting is a note in the song. Music is off by default, on the Sound tab, because I am still not sure everyone wants it.

Every sound effect came out at a different loudness, so there is a script now that renders each one alone, measures it and prints a trim table, and the tests check that every one stays within three decibels of its target. The other problem was that the engine held on to every note it had ever played, so the CPU went up to 63 % and the memory kept growing. It is about 4 % now.

Then a batch of small effects. The laser charges up and flickers instead of snapping on. Asteroids glow red along their cracks while you mine them, which took three passes because the first version tinted the whole asteroid. Your hull flashes when it takes a hit, a raider glows as it takes damage and scatters debris when it goes, turrets spark at the muzzle, the camera shakes a little when a container comes aboard. All of it goes through one particle layer that is a single draw call, because it has to run well on the tablet too.

The Hopper with its drones out

The Shipyard is gone. It is three rooms now, Market, Inventory and Fit, because everything you own is an item. A laser is an item, a drone is an item, and every hull keeps its own fit, so the spare laser comes off the Surveyor and goes on the Ordinal and the game does not quietly rebuild a mount you had unfitted, which is what the old buy-and-confirm till did. The drone bay is a module you open, with a row per cradle, and there are three kinds of drone to put in them: mining, survey and escort, five tiers each. Escorts patrol the ship and shoot back. A mining drone that finishes its asteroid now goes on to the next one you have queued instead of flying home to sit in the bay, which had bugged me for a week.

The base got most of the month. A module goes up piece by piece now, footing first, then the body, the glazing, the livery, the lamp last, and every stage is drawn on its own. The first version just put a mask over the finished module. The base is a hub with arms: the core stays put with its dish turning and the modules ride arms that turn three degrees a minute around it, up to twenty-four of them, connected by spokes and ring segments so nothing floats. There is a berth to dock at. Bases and turrets take the sector's light like the ship does.

A base with eight modules built, and the ground it claims

And there is territory. Everything you build claims the ground it can reach, a base its range, a turret its own, and the union of those is painted onto the map in your company's colour, desaturated so a red department does not look like a raid. It is a smooth minimum over the discs, shaded once into a texture and repainted only when something changes, under the same fog mask as the sky, so it never shows over space you have not explored. Upgrade a turret, and it does upgrade now, three tiers for range and damage, and the claim grows with it. What a claim is worth in a contract, and what happens when two companies claim the same ground, is designed but not built yet.

A service vessel alongside

Fuel and shielding run down on a sortie, and when they do out in the field you can call a service vessel. It jumps in outside your view, comes alongside, both ships hold, a nozzle goes across and three repair drones orbit the hull throwing sparks, and then it settles the bill at the dock's price plus a quarter and leaves.

The hold got a transfer window for moving cargo by the unit to a base or a container, and a Keep aboard group on the Ship pane that says which refined stock and which raws never go in a container. That group is also where a run of bugs came from: a full hold would sit there with auto-mine on and never drop, in three different ways depending on whether you were surveying, exploring or refining. So there is a fuzzer now. It drives the actual game code, the command queue and the tour planner through random scenarios drawn from a seed, and the one rule it checks is that a ship with auto-mine on, an asteroid it is allowed to mine and room to drop a container mines something within twenty seconds. Eleven of sixty seeds stalled before the fix and none after. Twenty-four seeds run in the normal test pass and a failure replays from its number. I should have built that months ago.

Auto-explore does not stop at every waypoint any more. It queues the next leg while the current one is still flying, from the point where the throttle would otherwise start braking, so the ship sweeps through the belt in one line and only stops at the last leg. When it uncovers an asteroid worth mining it drops the exploring and turns for it in the same tick, still carrying its speed. I like watching it take the corners.

The rest was the tablet. The dock used to freeze for over a second while a texture page went up to the GPU in one call, so pages go up in strips now, one strip every two frames, and the bake itself runs in a worker. What finally explained it was a Chrome trace taken inside the tablet: none of the long tasks were my code, they were the browser waiting for its own GPU process to hand a transfer buffer back, and one frame between strips was not enough time for that, so now it waits two. The station textures also went from 519 megabytes to 208 by only allocating a page when something needs it.

2026-09-13

Asteroids break apart while you mine them now. That was the one thing that had bugged me for months: you put the laser on an asteroid, the number went down, and the asteroid sat there looking exactly the same until it popped at the end.

An asteroid mined down to nothing

It is continuous, and it is not an animation that plays. Cracks open first, then the pieces come away and the small ones shrink off before the big ones, all of it driven straight off how much of the asteroid is left. Stop mining and it stops where it is. The curve is remaining cubed, so at half mined it still looks nearly whole and then the last quarter goes to bits fast. Linear felt wrong the moment I saw it.

My first try was splitting each asteroid into equal slices around the centre, and the spike came up looking like a pie with a bite out of it. What fixed it was cutting in two over and over with a jagged line that both halves share, so you cannot see the cut until it opens and the pieces come out uneven. The pattern comes off a seed made from where the asteroid sits in the world rather than its id, so it breaks the same way after a save and a reload.

Small thing that had annoyed people: when you come back after a while the game plays the owed time through in front of you, and while it did that Escape was dead. The catching-up panel has a Pause on it now and Escape opens the pause menu. Recall and Main menu stay off until it has finished, because leaving the sector halfway through a catch-up is how you would lose the time.

And the base is done, which is the bigger half of this batch. You research the Station Core, fly a hold of refined stock out to somewhere you like and put one down, and from then on it grows: eight slots around the core. Storage bays for the drones to deliver into, a solar array, and a reactor once there are quarters and air and water and food for the crew it needs. Then the modules that actually do something: a refinery bay running on the base's own clock, a cradle with two mining drones of its own, a fabricator for ship components, a laboratory, an exchange that sells the surplus while you are off somewhere else.

A base with its eight modules built

Power and crew are the part I did not see coming. The core supplies twelve megawatts, a reactor is thirty, but the reactor needs two crew, and crew need quarters and air and water and food, which are four more modules drawing power out of the twelve you started with. So the ORDER you build in is its own little puzzle, and you can wedge yourself by filling slots with the wrong things. I like that much more than a build menu where everything is just money. Pretty cool!

2026-09-09

Two days after the last entry and already a lot to write down. The short version: mining is a whole loop now.

Asteroids are made of materials. One to three each, silicates, ferrite, carbonics, hydrates, volatiles, lattice, and you do not know which until you survey the asteroid. There is a refinery on the ship that turns the raw stuff into plate stock or ceramic or graphite, one batch at a time, and a switch that keeps it running on whatever pays best. The hold is measured in cubic metres now, so a full hold actually stops the laser. That sounds obvious but it changed everything about how a contract plays. When it is full you drop a container where you are and a shuttle from The Company jumps in, picks it up and pays you. Or, in the dangerous sectors, pirates get there first.

A raid on a container

Pirates. They jump in outside your view, skim the container and fly off with a share of it. Your own lasers turn on them if they get close enough to the ship, and you can build a gun turret station out of refined plate and leave it standing next to your containers. While one is in the sector the whole edge of the screen glows red. I made it way too strong the first time :D

The bigger hulls have a drone bay. Two mining drones on the Hopper, four on the Tender, and they fly out to the asteroids around you and mine them at the ship's own rate, two on one asteroid when there is nothing else left. And survey drones, which go and read whatever the sensors found. Watching six little things buzz around the ship while it works is my favourite thing in the game right now.

The Hopper with its drones out

Everything on the hull is a module now, with a power draw, and the hull has a budget. So you can switch the refinery off to get a third laser running. The Shipyard is where you build the whole loadout and pay once. The first station core can be placed in the sector as well, with a storage bay, and the drones deliver to it instead of the hold. That is the start of the base building, which is the next big thing.

And the interface got rebuilt again. The sidebar tabs moved into the action bar, one window open at a time, and a button starts pulsing when there is something to do behind it. It is the same on the tablet and on the desktop, and the tablet is where I actually play it.

A Hopper with all three lasers running

It is starting to feel like a real game. There is a list of things I want to do next, the ships look a bit flat and need lights and details, and the stations need to grow into something. But you can play it for an evening now and it does not fall apart. Pretty cool!

2026-09-07

Over two and a half years since the last entry here! Things escalated again. So here is what happened, roughly in the order it happened in.

The dock: the ship moored in its berth over the sector sky
The dock: the ship moored in its berth over the sector sky

I started with the map. That cell based lookup from 2024 was still lying around, the one in the video further down this page, and I wanted to see what happens when the world simply does not stop. So it gets made in 1024 pixel chunks out of a seed now, the chunks near the ship stream in and the ones you left behind get dropped again, and a fog of war sits on top of it all, so you only ever see what you flew through yourself. I panned around for a few minutes in every direction I could and the memory never moved. Pretty cool!

Then I got it running on a tablet. Tapping moves the ship, a long press on an asteroid starts the laser, pinch zooms. That meant every screen had to be redone, so I built a small kit of components on a set of shared tokens first and put the UI back together on top of that.

The menu turned into a dock. The ship sits moored there with the sky of the sector you are going to next behind it, and off it there are four rooms: Contracts, Shipyard, Research, and the employers who are not The Company. On a tablet you swipe from one to the next. The colors took a few passes, the first version was way too red and way too dark.

Mining an asteroid belt
Mining an asteroid belt

The asteroids got thrown out and done again as shaders. Each type is one fragment shader, and when a contract starts the game bakes every variant twice, once for the color and once for the normals and the height, and after that the asteroids are lit live while you fly. So they turn, and they crack open where you have been mining, and the whole layer is still a single instanced draw call. Nine types, sixteen shapes each, and I did not draw any of them.

The ship is a shader as well and the old drone sprite is retired at last. Four hulls: Surveyor, Kestrel, Dray, Ordinal. I did not want four ships that just happen to be parked next to each other, so I wrote down how one single company would go about building a ship, a design language, and drew all four classes out of that. Twelve of them went on a board, three survived, and then a fourth one got made by fusing two of the survivors. Every employer builds in one of them.

The concept board: four classes in one design language
The concept board: four classes in one design language

And there is an actual game around the mining now, which is the part I am most surprised by. You sign a contract, it has a quota on it, you fly out and hit the number and a memo comes back with the figures. In between there is the Shipyard with five tiers for every component, and Research, where you buy a blueprint and then read it while you are flying around out there anyway. Your standing climbs from Probationary up to Retained and that decides what they will even sell you. Get to the top and the others start writing to you, and you can take their job and keep your skills and your blueprints.

Mining, movement and sensor radius level themselves up while you use them, and each level shaves 5 % off that upgrade, all the way down to half price. Eight of each fit inside one contract and then the ship is done, so a contract does end at some point. There is one at the end of the board with no finish on it at all: 3,000 resources at 0.15 credits each, paid out when you call to be brought back in.

Some things I am just happy with. The Volatile asteroids only discharge out in the hazard sectors, and when one goes it throws the ship 260 pixels off, and then the ship sits there and waits the 20 seconds out and goes back to what it was told to do. The bigger hulls have more than one laser and every turret aims for itself. The camera glides after the ship. And the music streams now, it used to decode 74 megabytes into memory, which was not great.

None of it is finished and I have a long list of things that still do not work. But for the first time it feels like the game that has been stuck in my head since 2014. The longer version of all this goes on YouTube as usual.

2024-01-20

From this point onwards things escalated pretty quickly. You can find the details in the video description, but here are some highlights: Entity Component System, command queue with visualization, info panel, ship upgrades

2024-01-09

After some time passed, it was the start of the year again and I was watching some videos about spatial hashing and some other algorithms in a quest to understand how large game worlds would work. Very interesting stuff!

I started to implement a simple cell based lookup and rendered the result out into a png file. It was painfully slow and cumbersome.

I can do better! So I decided to visualize it in the browser using my trusty old friend PixiJS!

Initially it was only plotting dots on the world, and drawing a circle around the point highlighting the points inside a radius. But of course there needed to be interaction! So I added some mouse events and made the circle move around the canvas.

2022

"Ah the start of the year. Time to build this space game that's stuck in my head!" - That was probably what I was thinking in 2022. I started checking out the Rust programming language and was happy coding in a low level language again. I did use C++ a long time ago, but Rust was just so much better and safer to use. So I began looking for a game engine and found Bevy! I enjoyed working with its entity component system enough to reuse some of those ideas in the browser version, though mine is nowhere near as performant.

I made some devlog videos showcasing my progress as well

2014/2015

Over Christmas I started animating a small dot on a canvas, because I wanted to see how games actually move things around. This initial implementation started with a simple HTML page and a setInterval timer and evolved into my first attempt to build a game. I eventually started streaming the development on Twitch for a few days and it was a lot of fun!

I found an old video that shows the progress that I made. Unfortunately it was written in CoffeeScript and some other old technologies, so I could not get it working again.

The game was using PixiJS as well (canvas rendering back then) and used the same assets that I found on OpenGameArt.

It had an entity component system, storage indicators, a command queue and acceleration / deceleration for the ship movement, pretty cool!