Black Belt Software Starship Colony

Email Contact 📧   Discord Server
Starship Colony GPT 💬

Thu, 4 July 2024

New Pipes System for Liquid Transport

Another major system was added this month - Pipes!

Finally we can connect the H2 and O2 tanks to the engines! This has been bugging me since the very first screenshot.


Here you can see the new Pipes overlay and pipes editor. It looks a lot like the power cable system in that you can place pipe tiles to form any pipe network you want.

I've also added an 'Auto' mode that will just let you paint where you want the pipes and it will usually do the right thing to connect to neighbouring pipes. But the manual mode is still there as you'll need to say when you want pipes to go over/under each other or cross-connect together. This 'Auto' mode has also been added to the power cable system too.

The pipes go under the floor and are only visible when the pipe overlay is, as are the coloured circles on equipment showing pipe inputs and outputs.

Liquid Hydrogen = Red
Liquid Oxygen = Light Blue
Water = Dark Blue
Dirty Water = Light Brown
Sewage = Dark Brown

Better not mix these up or your colonist won't be happy if they want a shower and you confuse clean water for the sewage! :)

The rocket engines take in liquid hydrogen and liquid oxygen, but they also have a liquid cooling option (the blue input and output) not in use here for clarity.

Pipes are able to carry any combination of all liquid types simultanously, and various filtering stages will be needed to recycle your dirty water and sewage into clean water and organic compounds Matt Damon would be happy to 'science the crap out' of!

I'm pleased this is in now as it forms the backbone of the whole recycling and life support system for your ship. Now I can make equipment and objects perform their individual functions and interact with each other. Pipes may not sound exciting, but it's a major step forward in the simulation and gameplay!

Wishlist Starship Colony on Steam:



Fri, 24 May 2024

Temperature and Power Systems

Hot Stuff


This month I added another two major systems to Starship Colony - the Temperature and Power systems:

Temperature Heat Map


Heat Map View


Regular View

As you can see the engines and RTG power generators at the back of the ship generate heat and this propagates through the ship. Walls offer some insulation but still conduct a little heat. I've made it so that heat is also naturally lost to space and that's important otherwise the heat just keeps building in the ship.

I think we're going to need some kind of deployable external radiator part to help players actively remove heat because the only way right now is to shut down heat sources and let the ship cool. This is a problem real satellites and the ISS space station have to deal with.

The addition of temperature adds another simulation layer to the mix which means you need to think carefully about the layout. You may want to isolate the engines and power generation areas from the rest of the ship, or alternatively make good use of the latent heat to keep crew quarters and growing areas warm, or maybe help to melt mined ice. And your liquid oxygen & hydrogen tanks need to be kept cold or they'll explode! The choices and trade-offs involved make for more interesting gameplay.

Power System

The new power system has it's own visual overlay and editor for placing build orders. Here's a crewman laying the red power cable:




Notice the consoles which require power are automatically connected to the nearest point via their own power cords. Electricity icons flash over equipment without power.

You can also see square split points in the cable that give a realtime indication of the power flowing through it, black is no power, yellow is full power, and colours in between signify various brown-out power levels. Cables can only provide so much power and connecting too many items will realistically cause power drops especially over long distances.

You can also create T-junctions and connect multiple power generators to the same network and the power will distribute itself evenly (simular to the gas system but faster).

It's also possible to create multiple separate power grids and have them cross over each other without connecting. That might be useful in future for quickly shutting down power to non-essential systems in an emergency, or as a redundant secondary backup. Lots of potential there in future, for switches and software controlled switching.

I should also note that these cables exist below the floor tiles, so turning off the power overlay makes all of the cable clutter go away, and leaves you with a nice tidy looking ship. I know that's important to some people. So the choice is yours whether you want to see them.

At the moment you manually have to pick the cable piece and rotate it with Q/E. I think in future I may add an auto-tile mode to pick the orientation of the wire piece for you, but manual control will still be needed to let you create crossover/under parts for separate power grids. For now it works very well and other areas of Starship Colony need fleshing out more, so time to move on to those now. Onwards! :)



Sat, 20 April 2024

Gas Simulation

Watching Every Breath You Take


Starship Colony now has proper gas (air) simulation. Until now your crew could just remove a section of hull and stare out into the void of space without consequences, but no longer!

Your crew now breathes in oxygen (O2), and exhales carbon dioxide (CO2). Without air they die! (Also a new feature).

To help you see what's going on, there's a new gas overlay mode which shows O2 in blue and CO2 in orange. Brighter means more, darker means less.

The simulation actually tracks the flow and mixture of 7 different gases internally, but only 2 are shown for clarity right now.

I'm particularly pleased with the particle effects showing the rush of gases as they flow through open doors and around corridors. In normal mode they're shown in white, but the gas overlay mode shows which gases are mixing using coloured particles.

Strictly speaking there shouldn't be a gust of air when separate areas of CO2 and O2 at the same pressure mix, but it's visually informative to see when lots of gas mixing is occuring, so I've allowed that to bend the rules a little.

Now that we can simulate the air, I've made the various existing objects interact properly with it. So the CO2 scrubbers will remove CO2, and the hydroponics trays & potted plants will also take in CO2 and release O2. This balances nicely with the crew doing the opposite as they breathe.

I've taken care to ensure the simulation uses only descrete maths and so doesn't lose gases over time due to rounding errors. Every unit of gas is correctly accounted for as it flows around the ship, and so should allow for long duration flights with recycling.

I'm quite pleased with how the simulation works with decompression holes in the ship. My fear was there would be a sudden loss of gas throughout the ship that would be too hard for players to deal with, but the doors provide natural air locks, and even without them the air is literally bottlenecked from flowing out too fast giving you time to deal with the situation, even without a space suit for a while.

I've made crew take small amounts of damage continuously when they're in vacuum, so even when all the air is gone they've got a bit of extra time to reach safety. So it's quite forgiving in practice.

Over all I'm very pleased with how this is working. The space-based nature of the colony is one distinguishing aspect of Starship Colony from other colony management games like RimWorld or Dwarf Fortress. And you can't really design away the need to breathe in space, so it has to be embraced and made fun to deal with. And I think making it not so catastrophic to have a hole in your ship does this. It's more like having a puncture or a leak in a boat. Coupled with the particle effects it makes it enjoyable to play with.



Wed, 3 April 2024

Engine Control

Going Beyond the Red Line


Last month I built a BASIC compiler so software made (in-game) by players could control things. Here's the first practical example - the main engine thrust controller. You click on the pilot's console to bring this up.

The big slider controls all your engines. Too much and your engine temperatures rise. Too hot and your engines burn up and explode. You can red-line it for a short time, especially if you ramp up the water cooling - great for an emergency getaway. But it exacts a heavy price on your engines, especially if you don't have water for cooling. There will be some interesting trade offs to be made there to balance speed and risk!


(A high quality full screen video of the above GIF animation is available if you click on it.)

Note the CRT emulation, screen warping and shadow mask, and the reflection on the bezel.

Also here's the same computer running a Command Prompt (like DOS) to navigate the file system.


(A high quality video is available - depending on your browser you may need to right-click to download it.)

This DOS-like shell is just a simple BASIC program that uses commands to list files and directories, and to change directories. Players won't need to use this, but for those who want to dig deeper it shows the depth and power.

Players in Starship Colony will be able to customise not just their ship's hardware, but also its software. I'm looking forward to seeing what players do with this!



Fri, 1 March 2024

Adding User-Created In-Game Software!

Empowering Players


OK, I've been working flat-out on this update which is definitely the biggest and most complex piece of functionality I've added to the game to date.

So far the game allows you to build your dream ship out of hardware pieces and connect them together. But in the real world most of the interesting things you can do involve software. Just look at phones - by running the right software they can be turned into almost any other object we used to buy separately - a clock/alarm, a camera, a CD player, a radio, a TV, a torch, sat-nav, a notepad, diary, a book, a video game etc.

It's the software that makes the hardware do interesting things.

If we could add in-game software to connect the in-game hardware, we could do some amazing things! And the best part is that players could build these for themselves - they wouldn't have to wait for me to add the feature!

If the thrusters are controlled by software, then we can do more than just hook up WASD keys. You could make your own autopilot! Take evasive manoeuvres during combat. Maybe create a homing missile? An auto-mining drone?

Hook up the ship's computers to radio transceivers, and you could make your own in-ship WiFi! Send signals to all the doors. Automatically close during a hull breach, or open to vent the air to space if there's a fire.

So now imagine you want to board another ship that has this. By eavesdropping on their radio signals you might figure out how to open their doors remotely! Hack their engine control signals to stop them dead in the water!

The possibilities are endless - and none of this requires me to be involved - it can be all player-made if I just give them the ability to run their own software on the in-game ship's computers, and hook it up to everything.

This update is about making that vision possible.

To do this I've build a Virtual Machine - a kind of virtual CPU that runs machine code. On top of that I've built a BASIC compiler that turns easy-to-write BASIC programs into this virtual machine code. Yep, that's right - I wrote an entire compiler and programming language for use in the game while you're playing! lol. Kinda ridiculous for only 5 weeks too. (And all human work - no AI - it can't do this yet). Hope people appreciate the effort here.

So the blue computer consoles that the crew sit at are now real computers, running real software!

Click on them and you'll open up the computer's screen running some Basic code. Here I'm just drawing some lines bouncing around the screen like an 90's screensaver to test the drawing, but imagine controls for the engine, or star map, comms, trade screens, alien language translation, or desktop GUI or command line, or whatever you want!


It's still new and raw, so it needs some additional commands for drawing text, and images for making sliders and buttons etc.

Here's a little look at some Basic code. You're seeing it within Visual Studio, but it'll have a simpler Notepad-like editor within the game (probably also written in Basic!).


And of course, you don't need to know how to write this to play the game, you can just use what other people have written. This is for those that want to tinker and make new things for the game.

More Details

For those interested, it's a deliberately simple dialect of Basic, without line numbers. It supports numeric & string types, plus arrays of either. Has user-defined functions with local variables and supports recursion.

There is no GOTO, but I've added BREAK and CONTINUE instead for the few times where GOTO is handy.

The IF..THEN flow control comes in both single line and multi-line variations.

Built-in Commands:

PRINT, DIM, FOR, TO, STEP, NEXT, BREAK, CONTINUE, LOCAL, FUNCTION, RETURN, IF, THEN, ELSEIF, ELSE, END, WHILE

Built-in Functions:

ABS, ACOS, ACOSH, ASC, ASIN, ASINH, ATAN, ATANH, CEIL, CHR$, COS, EXP, EXP2, FLOOR, INT, INSTR, LEFT$, LEN, LOG, LOG2, LOWER$, MAX, MID$, MIN, MOD, POW, REVERSE$, RIGHT$, ROUND, SIN, SQRT, STR$, UPPER$, TAN, VAL

Extended Commands:

PLOT, LINE

It's possible to extend the commands in the game code without recompiling the compiler. This will make my life easier. I've already used this to add the graphics commands PLOT and LINE. More commands will be added.

The Virtual Machine (VM) is an efficient interpreted VM, dispatching virtual instructions every 10 real instructions. I've measured it running at 216 MHz on my laptop. I'm very pleased - this is exceptionally fast for an interpreted VM. New instructions like LINE can be added as a single instruction to perform heavy jobs in C and will help keep the speed high.

For simplicity the compiler has a simple stack machine architecture. This trades some stack-twiddling inefficiency for implementation simplicity - a good trade-off given the speeds we're already getting.

Why Basic?

Why? Because it's the simplest language for anyone to learn. Basic lacks many of the complex features of more sophisticated languages, which is why it's ideal. Although the aim here isn't necessarily to teach programming, everything you learn in Basic you can apply in C/C++ or C# or Java. People get caught up on the word 'language' - it's not like learning French, then moving to Germany. It's more like learning to ride a bike, then learning to ride a motorbike. Or learning to think methodically and systematically - it's applicable to everything in life. I hope it does some good in the world, as well as just be fun to play with.



Mon, 1 January 2024

New Task Priorities Manager

Happy New Year!


Happy New Year! if you're reading this in the present. This month was an odd one, I ended up working on something completely different from what I had intended. Some things take longer than a month and it always worries me if I think I won't have something to show in time for the next update, so switched task priorities midway to doing this. Quite amusing given what it is! :)

Fans of other colony management games like RimWorld, Oxygen Not Included, and Dwarf Fortress (with Dwarf Therapist) will know from this screenshot what just got added to Starship Colony:


It's the main Task Priority Manager - something I know a lot of you really wanted to see! :)

For each member of the crew you can set their task priorities and essentially shape their roles. It's a core piece of functionality very familiar to anyone who's played this kind of colony sim before and greatly helps you manage your colony.

It's only a first draft - the basic tasks are plugged-in but some of the more complicated behaviours need further work, so expect changes to what you see here. There are also tasks listed that don't exist yet, but are planned.

Plus there are crew behaviours that exist but are not shown on this interface. Things like sleeping don't really make sense to have as a priority. Though come to think of it that's an interesting idea, but I do plan to make a day scheduler for that where you can set times for work, meals, free time and sleep.

Implementing this priority manager has forced me to think in more concrete terms about crew behaviour and how it's managed. Up until now each behaviour has been implemented as an isolated task, and during development I've been triggering it manually via a right-click menu. But there are subtle things to consider like how long should the piloting task last? If it's long-lasting then what if a high-priority build order is given? Should it immediately supersede the current task, or be picked-up only when they become idle? ..which might be while if the current task is long-lasting. And what about emergency things like a fire? Do some tasks interrupt others? Not all tasks are equally important even if its priority is set high.

I'm also keen to keep it as simple as possible. Some things like planting and harvest might be merged together if that makes more sense. And some things like Engineer incorporate several different build & uninstall behaviours, which we could split.

So there's going to be a lot of experimentation and fine-tuning of all this yet to come. Nothing is set in stone - we'll have to see what's actually most fun in practice rather than what sounds best in theory.

Aside from the above, there's been a lot of nitty-gritty bug fixing work with the existing behaviours (I'll spare you the details of those), things like a general spot allocation system to ensure multiple people don't attempt to do the same job, instead of bespoke solutions for each and every behaviour. After a while you start to see patterns across behaviours and find ways to reuse systems.

Oh and I also made new smooth door animations! They're not strictly necessary or a high priority for a working game, but seeing them snap open & close so abruptly in the first gif animation was an obvious thing that I felt really needed to be fixed right now so that all future animations and video clips will look much better. It's a case of playing Whac-A-Mole with what you feel most needs work now. As soon as you do the worst looking thing, the next worst looking thing needs fixing. Gradually we work our way up towards more functionality and higher quality.

OK, that's all for now. Next month I may work on something a little larger which may delay the update, we'll see. But I'm happy with the way the game is coming together.

In the mean time please follow and wishlist on Steam. It really helps!  You can also reply to this in the web forums or chat on Discord to ask more questions or tell me what you'd like to see (or not see). I really appreciate feedback. Thanks!



Sat, 2 December 2023

More Character Behaviours

And a custom Starship Colony GPT!


This month I've done more work on core behaviours for the crew as well as built a new Starship Colony GPT!


A higher quality MP4 version of the above GIF animation is available if you click on it. Depending on your browser you may have to download it first. You would not believe the trouble I went to to get a rock solid 60FPS video capture.. OBS just wasn't smooth enough no matter what settings, even with hardware encoding available on my laptop. So I had to write my own video capture software.. yep.

Custom GPT

As GPTs were smoking hot and the new GPT store was about to be opened, I thought it might be good to quickly put something together that might reach a large audience and help promote the game in a novel way. Of course I didn't account for all the crazy OpenAI boardroom shenanigans this month that's thrown a spanner in the works and delayed the store opening. But regardless, I've added a large knowledge document to the GPT so it knows everything (public) about the game and its development, including screenshots. If you have a OpenAI Plus account and want to ask it questions, it's pretty good!
Try it out here: Starship Colony GPT
One fly in the ointment is the GPT profile picture doesn't stay set if you provide your own image. Hope they fix that soon.

Crew Behaviours

The building, uninstalling, hauling, sleeping, operating consoles, and idle behaviours were already in from last month, but there are some more complicated ones like eating to implement. A chain of behaviours are required before you can get to cook anything. First planting a crop, then harvesting the grown crop, cooking the harvested food, then finally we can get to eating. I also needed to create food trays (with various meals on them) and the ability to carry them and draw them in the correct order and offset relative to the character depending on which direction they're facing. (If you're walking North the tray needs to be behind the character, all other directions have the tray in front of the character.)

The eating behaviour needs to do a lot of checks to know where to get the food from. The character might already be holding a meal (if they've just cooked it), failing that they'll look to pick up a food tray that someone has put down first, and only then will they check for a stock pile of cooked meal items. The latter two involve walking and picking up the item, plus there's also situations where two crew can be heading for the same meal on the map - that needs to be worked out. All these details are what make the difference between frustrating character 'AI' and a smooth experience where they avoid doing stupid things and do what you expect.

Likewise sitting to eat at a stool / table requires allocating seats or chaos ensues! And then dropping the food tray when they're done, or interrupted with a new order - it all needs to work.

But it's the eating 'animation' I'm most pleased with this update. I'm using the same moving icon technique I used for the console operating behaviour to give the impression of eating with a fork. It's just a fork on a small circular icon sprite, but by moving it in a carefully sequenced manner, you can give the impression of prodding and poking some food, then quickly bringing to the mouth, then back to the food. It works like magic!

OK, that's all for now. With more behaviours added we get more of the game in, closer to making a trailer, and announcing the game more widely.

In the mean time, please wishlist and follow on Steam, and drop by in the web forums or Discord. Thanks! :)



Wed, 1 November 2023

New Character Behaviours

Animation without Animation.



Crew Behaviour

This month I've been working mainly on the crew behaviours. It's really helped start to bring the game to life. For instance, the crew sitting at the consoles on the bridge were previously just sat there facing their consoles, stationary. Now when a crew member is given the OperateConsoleTask they'll generate a path towards it, walk along the path, then find the seat (based on the console orientation), and begin randomly pressing sequences of buttons just like Commander Data or Wesley Crusher at the helm in Star Trek.

Operating Consoles: Animation without Animation.

Of course the characters have no visible limbs, deliberately so we don't need to lots of animations, but there has to be a way to indicate to the player what is happening. At first I tried a simple icon of a hand with pointing index finger hovering between the character and the console. Not bad, but then I thought, well, let's give it some movement back & forth - much better! Then I picked random places on the console for the pointed finger icon to go to, and then had it smoothly accelerate and decelerate as the finger sweeps over the console, and finally back to the resting position - even better!

It's ironic that I'm still spending time 'animating' an icon hand, but it's still far less work than drawing separate animation frames for all the characters, or doing some sort of 3D sprite rendering, and I think it looks great. It's surprising how much you fill in the blanks when you see a hand zipping around the console. It works really well, and because it's procedural, it never repeats, so you don't get visually bored of it as you do with traditional looping animations, and it works for all crew regardless of appearance. This small point is actually huge. This approach means that a solo developer can actually make all the graphics for the game in a reasonable time frame. It's the key to its viability and why myself and other indies choose these kinds of art styles. It just wouldn't be possible otherwise.

Sleeping Behaviour

The sleeping behaviour was done in a similar way but with an icon with a Z slowly drifting / wafting upwards. I also needed to modify the rendering code to rotate the crew bodies to orient them correctly in bed, and only draw their heads. I also occasionally change their facing direction while in bed as if they're turning in their sleep to add some natural variation. I think I'm going to need a variation of all the head graphics with eyes shut, or maybe draw all the eyes separately. You can see how even the requirement for just a single additional frame quickly gets out of hand as the number of head permutations increases.

Scripting Allure

I've also added some 'soft variables' to track bed ownership and if it's currently occupied. Rather than hardcode this into a specific 'Bed' object, they're stored as key-value pairs on a generic 'Part' object. This lets you store any variable in the object at runtime, even ones I haven't thought of yet. This could be important for modding in future.

It's got me thinking a lot about scripting. I can see enormous utility in adding a scripting language to the game. There's so much potential I might just have to do it. There's also some fantastic in-game gameplay uses for this I've been thinking about. My Scope-creep-ometer is red-lining at 9.9 on this one. But I might just do it anyway.. because it would be awesome.

Stockpiles

Also added Uninstalling and Haul behaviours. These need stockpiles, so those got added too. No GUI editor for them yet, but stockpiles are displayed using outlines around defined regions, with independent settings and colour tinting.
Question: Should uninstalling an item also haul it to a stockpile as part of the behaviour? I find I do it a lot, but there may be cases where you'd like to quickly remove something and not wait for the crew to haul each item away. Plus you may want to reuse the items nearby if you're just relocating them. Yeah, I think that's probably going to happen a lot as you grow your ship. Maybe we can allow both as options.

Idle Behaviour

This one is actually my favourite thing I've added this month. It doesn't sound exciting, but until now all idle the crew were stationary - I mean literally frozen as if the game was on pause. Now when they're idle they stroll around at half normal walking speed. When they stop, they turn to look at nearby crew members (who also look back!). This is magical! It adds *so much* life to the game. They look like they're stopping and talking. Your mind just projects intention and intelligent behaviour onto crew characters that 'notice' each other. The ship has suddenly come alive!

I liked this behaviour so much I added it to the console operating behaviour. Now they'll look forwards and press buttons as before, but if someone is standing near to the console they'll turn to look at them for a moment as if chatting, then turn back when it's time to press more buttons, then turn to face them again. It's wonderful! I've found myself just watching the senior officers walk randomly around the bridge as if they're mulling over something, bumping into each other, appearing to have a chat, then one will walk and stop near a console, then appear to chat with the operator as if asking a question or giving an order, and so on.. You can't help but build a narrative in your mind about what's happening. This was always the idea behind a minimal representation in theory, but it's still surprising to see it actually work in practice. Yes!

Food Preparation

Before I can add a cooking behaviour I need a food preparation station. So I've added a microwave and chopping board on top of the kitchen cupboards. It looks quite cute with some little colourful vegatable bits and a knife. There's even a hazard warning label on the back. Renders the triangle to about 3 pixels and a smudge for the text, but you get the gist.

And before you can cook food, you need to grow it. So I've also added a long 4x1 hydroponics tray where you can grow crops, and a potato plant (yes I know potatoes aren't good for growing via hydroponics but shh! let's not worry about that until we have more options). There's also a sack of potatoes to represent them after they're harvested (another beahviour I need to add).

I also added a potted plant (a Mother-in-Law's Tongue) mainly for cosmetic and crew morale reasons, but they do actually take in CO2 and give out O2 which we'll implement when we do gases. It looks quite alien actually, so I'll probably add some more 'normal' looking plants too eventually.

And of course various bugs were fixed. Doors weren't working correctly after being saved. Adding the new items screwed-up the internal numbering sequence when everything got renumbered so I had to extend the save files to allow for remapping part numbers from the old to the new. Not as exciting, but essential plumbing to keep your save files working across versions and allow new objects to be added without breaking things.

The game is taking shape. I'm not quite ready to film a trailer and announce more widely yet, but we're a lot closer now! In the mean time, please wishlist and follow on Steam. Thanks! :)



Mon, 2 October 2023

Richer Character Variations

More names, skin tones & hair colours.



This month has been an odd one with lots of work on automatic character generation. Until now it's been completely manual process in code, setting a name and sprite body parts to use - clearly in need of work.

I didn't think it would take much time, just a list of random names and body parts and done, but no. The crew of a starship are not just space pirates or amateur privateers (though they could be), they're professionals in a professional service, and shall be addressed correctly by their surnames. Think Star Trek or any air/sea/land military service. So we'll need to use real names.

OK, so gather a big list of forenames and surnames, and pick randomly.. Nope, that won't work. We'll end up with an ugly and unrealistic cultural mishmash. We need forenames and surnames to be consistent with the culture they're from. This also has implications for sprite selection too - skin tones and hair colours will have different statistical distributions based on the culture they're from too. We can't just do it randomly or it'll look obviously wrong.

So I've had to put together separate lists of forenames (male, female, mostly male, mostly female) and surnames for various cultures. There are currently 39 name sets: Arabic, Basque, Bulgarian, Chinese, Czech, Danish, Dutch, Eastern African, English, Finnish, French, German, Greek, Gujarati, Hindi, Hungarian, Indian, Irish, Italian, Japanese, Jewish, Korean, Norwegian, Persian, Polish, Portuguese, Romanian, Russian, Scottish, Serbian, Slovak, Spanish, Swedish, Turkish, Ukrainian, Urdu, Vietnamese, Welsh, and Western African. This covers over 24,000 forenames and surnames. I'm sorry if your culture isn't included in this list. Custom lists can be added later - also great for streamers who have Patreon lists.

The English set is unfortunately a mix of American and traditional English names. This may be a distinction many Americans don't perceive so they tend to get lumped together. *shakes fist*. It's the best I can do for now. There are probably worse cultural atrocities and omissions that need to be addressed above, but this is a large comprehensive list and more than most games give a damn about.

There are parameters to govern the statistical distribution in how to pick from these lists. These parameters will be exposed to the player. If you want your starship crewed completely by under-represented patriotic Welshmen and women, you can live your dream.

I suspect a lot of streamers will have fun with this aspect, though the game is intended to be more than RimWorld in space ship, or RimWorld with conveyor belts. I'm eager to reach the point in development where I can show some of the more unique aspects, and make a trailer and wider announcement. We're not quite there yet. Good things take time. In the mean time, please wishlist and follow on Steam. Thanks! DaleJ.



Fri, 1 September 2023

Improved Ship Hull Design System

More Hull Pieces!


Most of the month I've been fixing glitches with the ship hull design system. Well, I've rewritten it, twice! I just wasn't happy with it.

There were occasions when some combinations of shapes would cause glitches in the Boolean fusing process or the bevelling. It's been really tedious work tracking down problems and fixing them.

It would work perfectly 99.9% of the time, but then you'd get that odd rare case screw up. I wasn't happy with it going into the game if it couldn't be relied upon completely. I came to the conclusion that the way I was going about it was too complex and error-prone, with pages of logic to test various combinations. It wasn't easy to read or confirm its correctness.

So after some head-scratching, I found a way to radically reduce the problem down to just a few simple tests - a much more elegant and simplified approach. Pages of logical tests removed, resulting in a robust implementation!

I'm much happier now! :) I've added some more angles and I've extended the shape fusing to handle 90 degree rotation of parts. The combinations of rotated and mirrored parts along with Boolean fusing, extrusion and bevelling with its neighbours creates such a surprising variety of designs. This has taken far longer than I wanted, but I think the investment in time has been worth it. I know players love designing their own ships in many other games, and I think players will really enjoy this. It's super easy to make interesting designs.

Take a look. The metal hull in this screenshot was created with just those 6 parts on the left along with rotation. It's very powerful and easy to use. :)


OK, I think I'm done with this hull system now! Other parts of the game are screaming for attention.

Now that this is out of the way I can go full-steam ahead on some of the core systems, like crew behaviour.

Coming up with visual things to post each month has been less than helpful for productivity - it's been a distraction and I've done things in a less than ideal order. In future I'm going to let the work decide when it's ready. So I may not be posting at regular monthly intervals from this point on. Don't worry if you don't see an update at the start of the month - it's because I'm too busy working on the game! Which is probably what you want if you're here reading this.

The game is still flying under the radar unannounced until I'm happy there's enough to make a trailer. However, I welcome any feedback and questions in the forums, and please do wishlist on Steam. Thanks! DaleJ.

PS. 100 internet points to you if you can spot the symmetry error in the ship.. Yes, I need a symmetry mode!



Wed, 2 August 2023

New Ship Hull Design System

Goodbye ZigZag Corners! Hello Dynamic Bevels!


Hip to be Square?
Although I love the clean block-based simplicity of top-down 2D games (reminds me of Gauntlet in the arcades circa 1985), trying to build your starship without even 45 degree slopes is.. painful. I keep telling myself those jagged staircase corners are fine and part of the 'charm' of the genre, and even telegraph to potential players what kind of game it is. Something comforting and familiar to RimWorld and Prison Architect players surely.. They convey the game's clean design space.. and . Ugh, nope! After looking at them for six months, they still look just as painfully jagged to me as they did the first day! The zigzags of horizontal and vertical edges in close proximity create a lot of visual noise. They're trying too hard to do something that should be simple. As much as I love the block-based simplicity of RimWorld and Prison Architect - square blocks are not so great for designing sleak spaceships. We need something better.

Combinational Explosion
I was going to just add some 45 degree blocks and move on, but due to the top-down angle and the bevel of the walls, you can't just create 4 new block tiles because they need to connect to their neighbours which can already have 16 possible combinations for a single 'solid' block! To add a new 45 degree piece with 4 orientations that fits nicely with everything else, the number of combinations needed explodes rapidly to 4*16 = 64! And what if we wanted different angles or materials? This approach is just not scaleable.

Something Better
So, I've taken a more dynamic runtime generative approach to the problem. You still place simple 2D tile shapes on a grid but they're dynamically welded together and extruded up. This was a royal PITA and required a lot of fiddly detailed work to ensure the edge loops are correct (fingers crossed), and to allow for some nice parts in future. It touches almost every subsystem, from the draw order layering, to the path planning, and still lots of work to be done after this. In the example here I've only added a single 45 degree part, but it's already added so much to the design of the ship I think you'll agree it was worth it! Aside from more parts in future, it also allows me to do things like add a slight bevel to the interior angles - if you notice the corners and the T-junctions are not at right angles as before - they're dynamically bevelled along the perimeter of the rooms and look nice automatically without any extra work from the player! I've barely scratched the surface of what might be possible with this in future. And speaking of surfaces, you may also notice the edge highlights are different everywhere, not just baked into a single tile and repeated.


Here's a screenshot of what it used to look like for comparision:


And some more of the new system:




As well as the new ship hull design system, I've also make new thicker more solid looking doors that fit better. And they actually work now!

Stackable Items and new Job System
You may also notice that we have stacks of items on the map now. I spent some time making a system that automatically generates these from the other part object types. For example a console is 3 blocks wide by 1 block tall, but can also be a stackable item that fits within a single tile which makes sense from a gameplay point of view. These smaller representations are automatically derived from the larger parts which saves an enormous amount of work.

And behind the scenes the job planning system has also been completely rewritten this month. It grew organically from a single task system to one that could also do a sub-tasks, but then felt brittle with these two hard-coded layers. So that was redesigned to allow arbirary levels of sub-tasks to be interrupted and resumed which should allow for more interesting crew behaviour. Of course that mean I also had to rewrite all the existing job system and path planning associated with it, but the new system is much cleaner and a better foundation to build on in future.

Similar Games
While the ship hull design issue was on my mind, I've also recently come across some other similar games in development. When you see one, initially you think 'Oh Goddamnit!' and mutter something unbroadcastable under your breath. But this soons wears off and you realise you're not really in direct competition with them. You're in competition with everything else that people spend their time on these days - YouTube, social media, school, work, and other super popular games that gobble-up peoples' time. The slice of the attention cake that our games take is less than 1% of 1% of all these other things. The potential player base is always vastly bigger from these other activities than it is from each other, so it's ridiculous to think we might 'steal' the same people from each other. In fact by raising awareness of each other and the game genre in general, we actually help all - the rising tide raises all boats.

So, while you're waiting for me to develop this game, aside from playing the classics like Dwarf Fortress, RimWorld, Prison Architect, Oxygen Not Included etc, go check out a few other similar games I've come across you might enjoy and tell them I said 'Hi!' :)

Shout out to SpaceSlog from Produno. Just a solo UK developer I think (like myself). Looking really promising! Appears to have a similar engineering angle to Starship Colony. Aside from RW, the graphics reminds me a lot of Starship Theory. Nice GUI too. Note the 45 degree slopes make ship design so much easier. Will definitely be wishlisting them.

Stardeus from Kodo Linija is another great take on the theme with lots of system stuff. Further in development and doing extremely well. A mutual acquaintance who has worked with Tomas the developer has said a lot of very nice and positive things about working with him, so go check his game out.

Also check out Starfall Protocol (was Nebula) from Chaos Systematic. Has a strong RW inspiration and bravely sticking to square blocks for ship designs. Has more of an RPG and mobile game feel. Love the galaxy scale exploration - something I also plan to tackle in future.

And of course The Last Starship from Introversion. I probably swore the loudest and longest when I first saw this, and thought 'Godammit Chris!, give the rest of us indies a break! Have you not already done well enough from PA?' LOL. Of course none of us creates in a vacuum, and we're all similarly inspired from what's gone before (like Star Trek). And of course I'm borrowing their limbless PA style for the characters - big shout out and tip of the hat to Ryan Sumo (Squeaky Wheel) who designed the original. (I was looking at South Park's minimal style before PA came out. But completely limbless is just genius - you can't beat that for design elegance & efficiency). Although I initially feared the similarity of The Last Starship to Starship Colony, and there are some overlaps, it's clear we've got different takes on these ideas, and they're different games. Their flight angle is horizontal for one, and they're deliberately avoiding the colony sim part (because of PA I guess). So, there's plenty of space enough for all of us, and lots of choice is a good thing. Best of luck fellas! Hmm.. I wonder if I can get Mark to sing 'Starship Colonyyyy!' in that full-on trouser-zip-accident falsetto voice of his? :)

OK, that's it for this month. It's been a difficult stressful one getting the new hull system working well enough to take screenshots of in time. There's still more work to do on the editor for it all, but the difficult engineering work has been done.

The game is still flying under the radar at the moment but steadily growing followers and wishlists. I'm still working towards getting enough functionality in to make a trailer, then will announce more widely. But welcome any efforts to raise awareness of the game wherever it would be well received, and of course any feedback you'd like to give me on either the Steam or website forums. Thanks! DaleJ.



Sat, 1 July 2023

New Asteroid Terrain and..

Conveyor Belts!


Asteroids are important resource pit stops to provide the player with much-needed ice. Ice is incredibly useful. It provides not only water for drinking and watering crops, but after hydrolysis (splitting with electricity) gives oxygen and hydrogen for breathing and for fuel. So mining ice is something the player will need to do to survive. Therefore this month I've been adding icy asteroids to the game.

I started out modifying the planetary terrain I made last month. Asteroids are smaller than planets, so it's conceivable you might be able to see it all of the surface in one go. As an experiment I tried generating a round map rather than a square.. Nice! Then modulating the edges outwards where the moutains are.. Better! Then lighting it as if it were a 3D sphere.. Even better! Then I sorta got carried away with height maps, fractals and crater generation. It's still 2D but I think the resulting map is far more interesting and really gives more of a feeling of landing your ship on a small island of rock in space. I'd be interested in feedback on this direction.

In this zoomed-out view, you can see the whole asteroid and where the ship has landed. The white patches are ice walls you can mine manually. But that isn't the only way to mine..


Zooming-in we can see a Mining Platform and..

Conveyor Belts!!

Yes! They're in! In-ship factories have been mentioned in the main game description since the Steam page first went up at the end of February. They're actually something I've been toying with for a long time as a game mechanic, and been a central part of several game prototypes I've made over the years.


It's not clear to me yet how much of a role they'll play as the game is primarily a colony management sim layered on top of a space trader / exploration game (plus all the other things I want to add!), so we'll see how things play out, and tune it for what's fun as we go. But I do think it opens up exciting possibilities!


There's a few glitches - particularly with the planet / ship transition - I'll need a new wall part for that. At the moment the hole in the ship with the belt hanging out looks a little odd, but that will be improved.

As well as all of the above, a lot of other work has been done. I've actually rewritten the terrain engine to fix something I rushed for a previous dev log. I'm aware that making this game 'in public' with artificial deadlines just to make for an interesting dev log post isn't always in the best interests of the game's developement. I'm keen to keep up a regular posting cadence because I think people like that, but may have to be more flexible with the timing of the updates as the nature of the work changes.

Please let me know what you think, and what you'd be excited to see on the forum here. Thanks!



Thu, 1 June 2023

Work Begins on Planetary Terrain

"Everyone remember where we parked."


One of the defining features of Starship Colony is that the colony is mobile. And while a good chunk of the game will happen there, your long difficult trek between the stars is made all the more sweeter and worthwhile by having some resource-rich oases to find and land upon. And for that we need..

Planets! Moons! Asteroids!


Yes! It's such an important and integral aspect of the game that it's been begging for attention while I've been working on the ship systems. So this month a lot of work has been going into expanding the game from a ship-only map to handle multiple environment maps simultaneously. The ship and the planet are two separate map 'worlds'. For now I've just positioned the ship over the planet. Eventually you'll be able to land and get out to mine and build and.. well, all sorts of shennanigans!

Here's a few more close-ups showing the scale of the terrain next to the ship:


Here's a look at the terrain soil blending I added today:


And here's what it might look for the Captain and First Officer to leave the ship and explore:


The terrain graphics are just early placeholders and will need some tweaks to the textures, and some decals and other features, but I hope this gives you some idea of what I have in mind and where the game is heading.

Bonus extra screenshot. Here's what the terrain looks without smoothing:


As you can see the individual dirt blocks are really quite apparent without any smoothing so I think we'll definitely be smoothing them from now on. I'm really quite pleased with how effective the smoothing is. I thought it might require a custom shader and I made a lot of changes to accomodate that, but nope, just some horizontal and vertical alpha blending works a treat which is great because I can add this to the same batch of quads as the main background tiles and helps keep the rendering fast! :)

Please let me know what you think, and what you'd be excited to see on the forum here.

Traffic is light right now while we're still flying under the radar. I'm working towards making a proper trailer, adding the features needed for it, then I'll announce more widely. Thanks to all my early lurkers! :) DaleJ.



Mon, 1 May 2023

New Forum Opening

Sign-up! Get your forum name! Help test it!


New Forum Server Software Ready To Test

The success of any game depends on the community around it, with the forum being the main watering hole. To that end I took the unusual decision last month to build my own forum server software. It's quite frankly a ridiculous amount of work, with dozens of thorny issues to solve in such a short space of time. But after quite possibly one of my most productive months ever, I think we're there!

I've done about as much testing as I can do solo, it's time to open the doors and ask people to sign-up and post some messages. Please come and help me test it:

Black Belt Software Forum CLICK HERE!

Black Belt Software Main Website (You're looking at it!)

Here are some early screenshots showing roughly what to expect:




I've added some topics, some are placeholder for now, others are full dev log posts. I will be adding more to describe how to do things on the forum, such as BBCodes (showing how to format text, post images & embed YouTube videos) etc.

All being well, I expect this and the Black Belt Software website to be the primary release points for news, dev logs and updates. I will aim to keep Steam and other social media accounts updated too, but releases will probably happen at the main website & forum first.

Building this forum & webserver software has been a huge undertaking and quite the detour. Time will tell if it was worth it, but I'm keen to fix any remaining issues and get back to the game itself.

Please come and sign-up for a forum account and post something. Come and kickstart the community. Later you can literally say you were there from day 1! :) Oh and if the sign-up notification takes 15 minutes to come through, yeah.. that's just my webhosting provider being slow. Send me an email if you have any trouble to support@blackbeltsoftware.com - Thanks to everyone who drops by to help out with this test. Hopefully we can get this tested & working properly and I can get back to the game! I want some serious progress on that this month!

Oh, and I almost forgot - I've had more publisher interest again this month! Quite amazing considering I've practically told nobody and done zero marketing! :)

You can leave a comment on this post here: New Forum Opening - Sign-up! Get your forum name! Help test it!



Sun, 2 April 2023

Development Progress

Publisher Interest on Day 3! Dev Work, and New Forum Build.


Publisher Interest Already!

Wow, it's already been a month since I hurriedly put up the Steam 'Coming Soon' page. The time has flown!
The game hasn't really been announced widely yet and is still very much flying under the radar. I'm eager to get much more done on the game before it gets any more attention. I've already been approached by a publisher! Yes! just 3 days after the Coming Soon page went up! This is fantastic news, and tells me the game has that certain magical something I was aiming for. Or at least other people can see the same potential I do.


Adding Core Functionality

I'm currently racing to implement all the features that look like they were working in the original screenshots but actually weren't! You see the characters walking down the corridors, through doors?.. well.. they were actually just static sprites placed there. In fact they didn't even exist as game 'characters' back then, just raw images drawn in-game to show the general idea. This month I've been hurriedly filling-in this missing core functionality:

  • Characters now exist as in-game objects, with various torsos and heads, both male and female.
  • Path-finding is working.
  • They can now walk about the ship, observing where the walls are, going along corridors and through doorways, automatically working-out their path to get from A to B.
  • They will now also avoid obstactles like consoles and furniture, and walk correctly around them. However, you can manually order them to step on, or over something in case they get blocked, but they won't go through walls.
  • Selection system. You can click each character individually or draw a selection box to select more than one.
  • Order system. You can give the selected characters orders (walk here etc.)

I've also started work on the build / construction order system. Before I can do that I need a GUI to show the items you can build. This was hardcoded at first, but that approach doesn't scale up as I add new items - I'd have to keep re-creating the GUI each time. So I've had to replace this hardcoded representation with something more flexible that will generate the GUI based on a list of object definitions. I also have an eye towards supporting modding in future with this.

New Forum

Despite already having some publisher interest, I know the success of the game will really depend on growing a solid player community around the game. I could just host a regular forum on the website, but that got me thinking, what if I made my own? Might there be some interesting ways we can integrate the forum into the game somehow? I can't exactly put my finger on how that might be beneficial, but there's a golden opportunity to bake this in right at the beginning. We may not use it, but at the very least we'll have a forum that we can tailor to meet our needs and maybe do some new things with. It's an idea that I couldn't shake, so I just spent the past 11 days building my own forum & web hosting server software, yep, the whole stack, from implementing secure sockets up! Completely bonkers of course, but as a programmer who grew up squeezing every cycle of performance out of machine code on 8-bit computers, I look in horror at the bloated web stacks of today and just can't bring myself to use them. I want nothing to do with these unfathomable tangled masses of complexity with layers of duct tape upon duct tape. Now I understand everything that happens on my server, and if something breaks I can fix it. And I'm sure it will break a few times!

I had hoped to have it ready to announce today, but there are a few features missing (like deleting posts), and it really needs some more testing before I feel comfortable inviting people in yet, so I'm going to hold off a bit longer and will probably make another announcement here when the forum is ready for wider testing. Then hopefully we'll be able to have a bit more interaction about the game. I know from my Steam dashboard there are a growing number of you following and adding wishlists which is great! Please bear with me as I get the main website and forum set up. Just wanted to let you all know I'm working on it! :) Thanks! Dale J.

You can leave a comment on this post here: Development Progress - Publisher Interest on Day 3! Dev Work, and New Forum Build



Wed, 1 March 2023

Starship Colony

General Announcement and Welcome!


I'm really pleased to finally reveal the game I'm working on - 'Starship Colony'. As the title suggests it's a starship colony sim, with an emphasis on survival in space, your ship's systems, and crew. Build your ideal starship, manage air, water, food, fuel, energy, temperature and psychology to keep your crew alive across the vast interstellar distances. Living in space is hard! Your ship is a closed-loop system in space where recycling everything is critical, at least until you reach the next asteroid or planet. There will be mining, wiring, plumbing, in-ship factory production, (alien?) radio signals decoding and translation of languages, factions, diplomacy, trade, combat, and much more planned.


It's very early days yet as far as development goes, and today is all about getting the 'Coming Soon' page up to get established and start building awareness. All graphics are placeholders and subject to change. And things will change! I'm most definitely more of a programmer than a marketing guy so my energy and focus will be on building the actual game rather being a social media busybody, but I'll be posting updates here as I have them to keep everyone in the loop, and to listen to feedback to help make the game the best it can be. I'm really enjoying making this game so far and looking forward to sharing updates with you. I have a long history in the industry, but developing more in public with feedback is new for me. It's great for motivation!


Please follow and wishlist to be notified as progress is made. Thank you! And I welcome you all aboard for the journey! :) Dale J.

You can leave a comment on this post here: Starship Colony - General Announcement and Welcome!