To make designing your ship easier, and also look better,
I've just added a system to allow for objects with diagonal edges
to fit in against the diagonal wall pieces. So we can have wall
consoles on the bridge etc.
Like so:
I have to draw every object 4 times for each compass rotation
direction.
The problem was until now I couldn't place objects into corners
with diagonals because everything that overlaps a tile was
considered solid, and I have to prevent players from putting
objects into the walls.
So rather than consider every tile either empty or solid, I
extended the object definitions so I can tell it the footprint
shape more accurately. Not just in a Tetris sort of way, but each
tile can have a particular angle.
That means I can test the object's footprint against the walls
and allow some parts to go right into the corners like these wall
consoles at the sides and top.
To make it work I had to build a table with 144 entries by hand
for all the piece-to-piece overlapping combinations (including 4
rotation angles). Paintstaking work but I'm quite pleased with
the result as it's very flexible now for adding future objects.
Other Improvements
There's also been lots of other (less visual) behind-the-scenes
work done, like making the crew more responsive to the changes you
make in the Task Priority Manager. Now they jump to it when you
say do 'this' not 'that'. Much more satisfying! :)
I've added proper icons for the Gas, Heat, Power and Pipes
overlay buttons. Not the highest priority in the world but the
boxy placeholder buttons bothered me because they were on
every screenshot. They had to go!
I've also retired the custom forum in favour of Discord and
Steam's forums as they seem to have a monopoly grip. I notice the
same migration pattern in RimWorld and Prison Architect's website
forums too. That just seems to be the way of the world.. So be it.
Special thanks to those that joined so early and helped kickstart the community. I will remember! ;)
Also this month I've set up a Developer Page for Black Belt Software
on Steam. Please follow for notification of new releases. Maybe game
soundtrack.. or a prequel? (I'm so tempted..)
The websites have been revamped. The old versions were put
together very quickly, in the spirit of 'something is better than
nothing'. But I now have proper logos for both game and company,
and I've updated the layout to show bigger better screenshots.
Million Dollar Domain Name Saga
That reminds me, I had some trouble acquiring the
StarshipColony.com domain (without the hyphen) because I delayed
too long in buying it initially. Some domain squatter bought it, I
think speculating that Elon might buy it for the SpaceX 'Starship'
or something. I offered to buy it off them for a reasonable price
(what they'd paid over the past two years plus a little more) -
can you believe the GoDaddy middleman asked me for a million
dollars! WTF!? Seriously! It took considerable self-control on my
part to articulate 'No' in such a way that didn't involve
unfavourable commentary on him, or his mother..
Needless to say - I didn't pay a million dollars for it. I let
them stew for a year and get tired of paying renewal fees for a
domain they can't do anything with now I have a game on Steam with
that name. No other developer would buy it. They eventually let it
expire, and I picked it up for about 60 dollars at auction. Finally
I can use it now!
Podcasts
I've also experimented with some AI generated podcasts based on these
development logs. They're frankly fantastic and super helpful to
players. But I eventually decided not to use them. They're a little
self-aggrandising, and although I didn't write the script (the AI did!)
players wouldn't know this and just think I'd got the AI to say
nice things about the game (and me!). So, I didn't feel comfortable
using them. I'm probably missing out on much-needed publicity as a
result, which bothers me.. but, there will be other opportunities.
Speaking of audio, I've also done more work on the game music,
particularly the main theme tune. I can't wait to put all the music
and sound effects in and show people! :)
I've been feeling we're lacking in a bit of green. In Starship
Colony most of the game takes place in space, or on icy asteroids,
or lifeless planets, so I thought we could do with some green
Earth-like terrestrial environments to add some nice visual
variety. Possibly as terraformed colonies or naturally occurring
oases.
New Mountains, Grass and Trees
I've spent some time reworking how the mountains were drawn.
Rather than a single colour, they're now shaded based on depth,
which could have some gameplay use down the road.
I've also made a new colour spline blending function to let me
map different height ranges to different colours. I've used this
for the gravel, dirt, grass transitions. It's super flexible now
rather than hardcoding gradient numbers, so I'll be making more
use of this for other planets and desert-like colours.
We now also have trees. These took a lot of work, mainly just
trying to find a style that worked with the view angle and style
of the game. I threw out realistic looking trees, 3D rendered
looking trees, AI generated trees. Eventually I settled on using a
tree silhouette outline then manually placing every leaf shape
over it by hand - yep! I like the end results and the process
allows for control to get good lighting and variation of foliage
type. I'll add more variation in future.
I also made some random stones pick up a tint colour from the
surface they're on - this helps them blend in cohesively and avoid
that floating look.
I've also tweaked the round asteroid terrains, and added a subtle
darkening shade to the very edges to smooth off the otherwise
jagged look of the mountains of white ice against the jet black of
space. They now blend into the background better.
I still think we need more variations in the planetary terrain,
but some green is better than no green, so it's another step in
the right direction. The Steam screenshots have also been updated
as I think the green really helps to counterbalance all the black
of space we've had so far.
Adding Fire and New Particle Systems
Lots of updates on the visuals this month:
New parallax star field with longer star streaks at higher speeds
New engines graphics, now with animating particle thrust effect
Fire! Lots of fire!
This is one you really need to see moving! so check out the video:
Star Field
My first implementation of the star field was too fast. Seeing so much high speed movement around the ship gave a good sense of speed but was incredibly distracting. So I pushed it into the distance, and added another layer of fine dust-like particles that whizz past nearby at high speed but they're faint so don't distract too much.
The length of the star streaks also grows as the ship goes faster. I shift across 4 speed levels in the video. I might tweak this some more, but it seems to work nicely to give the sense of speed.
New Engines and Particle Thrusters
I've tidied up the old engine graphics which were mostly placeholders. They're now boxed-in and fit flush against the hull wall pieces. The thrust plume until now was a static image. It was fine for the early screenshots, but now I'm recording more video, leading up to a trailer (and demo eventually), so motion was needed! I wrote a custom particle shader to efficiently animate the particles and recycle them.
Getting the animation to not appear repeating on a short loop while also not requiring constant uploading of new particle data to the GPU took most of the time. I also came up with a way to make each engine appear to have a unique flame while using the same random particle data. I'm quite pleased as it's extremely efficient and I think looks great!
Fire!
I reused the same particle shader for the fire effect. A lot of tweaking was done to get it to look right. The temptation is just to crank up the number of particles to make it look good, but that's just wasteful and only ends up washing out the screen to white blobs. I wanted to keep a certain amount of transparency so you could see what's on fire. There's also a background glow around each instance of fire - this helps give that hot feel.
The flames are also stretched a little vertically so in screenshots they give the impression of vertical motion blur. The game has to sell itself in static screenshots like this one:
Overall I'm quite happy with the fire effect. In places they really look like they're licking around the object on fire. There's still room for improvement and variation of size, but this really adds drama and action to the game, especially if you blow a hole in the wall and combine it with an explosive decompression! I think we'll be having a lot of that.. :)
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!
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! :)
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.
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!
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
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.
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!
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! :)
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! :)
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.
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!
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.
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.
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! :)
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.
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:
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! :)
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.
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.