The galaxy in Starship Colony is based on a real map of the Milky
Way galaxy - so it's huge! It would be impossible to
pre-make all the planets for all the stars in the galaxy, so
they're procedurally generated (by code) as you explore.
There are different types of planets each with their own quirks
and details. I've already covered arid Mars-like planets. Now it's
time for Earth-like planets which are probably the most complex
and varied.
Note how the terrain changes based on temperature due to
latitude. We have polar ice caps where the temperature is
extremely low, then a more temperate green area, and arid deserts
in the hot equatorial regions.
Behind the scenes a temperature map is generated, as well as a
precipitation / rainfall map. The sea generates cloud and will
even act as a brake on extreme temperatures near the coast.
All the biomes stem from a combination of precipitation (from the
sea) and temperature - which is itself a combination of latitude
and the planet's distance from the star.
This means it's possible to have hot scorched Earths with very
little water or cloud, all the way to frigid snowball Earths with
ice caps reaching all the way to the equator.
The aim has been to get something roughly Earth-like from all
these parameters, and then we can deviate to more extreme values
for more variety. I think that's been achieved.
There are a lot of parameters for all sorts of things I've not
yet had time to fully explore. For example, the desert terrain
texture is procedurally generated based on eroded strata of
different mineral colours modulated by the height field - this
gives unique non-repeating texture globally. I've barely scratched
the surface (pun intended) with what's possible here.
From this orbital view you'll be able to select your landing site
which then becomes your ground-based map. I'm pleased - this is
another large missing piece of the puzzle done. :)
As ever, please wishlist Starship Colony on Steam - it helps our
visibility with the algorithm. You can also follow the developer page
to get notified when we start play tests. The Discord forum
is also usually first to hear of any news. Thanks!
Starship Colony now has a built-in 3D vector graphics
editor! 😲
It's not quite Blender, but it is a ridiculously large feature to add to any
game, let alone a solo indie project. I finally had enough of Affinity Designer's laggy editor
and crashing that forced me to reboot every time. So I
decided to write my own..! 😎
2D vs 3D
Up to now all the game's objects have been made using 2D vector
shapes, with simple gradients, outlines, and 2D bevel fills that
fake 3D shapes and lighting. It's more direct and often faster
than 3D modelling, and there's more direct control over the colour
& lighting which is part of the style. But it's also
frustrating trying to use 2D tools to make 3D looking objects.
Take the Captain's Chair for instance:
First game object made - Needed improvement
This was the very first object I made for the game, and I felt it
needed some improvement. I wanted to tilt it so you're looking at
it from a higher angle, particularly the back piece in the first
frame. But this is impossible because it's just a 2D shape with a
2D image bevel. Foreshortening it will just reduce the height.
There's no way to make the 2D bevel appear tilted, it's fixed in
the centre. We've reached limit of what we can do with 2D effects.
The obvious solution is to extrude the outline curve into 3D,
bevel it, then rotate and light it in 3D. So that's what I did:
Until now every object in the game had to be made 4 times over, one
for each 90 degree view angle. Now I can just rotate the object in 3D
and save out frames from any angle. This is a huge time saver!
1 Object, 4 Angles
This is what it looks like from the 'correct' view angle. But I'd
probably like to try a lower angle to see if it works better with
the characters. I can easily change it now.
Here's a view of the Bézier curve editor working on a tilted
plane in 3D. You can just drag points around and it updates at a
butter smooth 60 FPS. :)
I've also made some new GUI controls for editing colour and
gradients. You can drag sliders around and see results in real
time.
Editing Bézier Curves and Colour Gradients
Primitives in the object scene hierarchy tree view can be dragged
around and reordered. The Extrude primitives operate on the Curve
primitives added to them, and they in turn use the Points added to
them.
I'm sure you could do something similar in Blender but this
workflow is tailor-made for the game engine with bespoke settings for
custom shaders and object properties. There are no intermediate
export / import steps.
Wireframe View - Butter smooth editing
I've designed the architecture with future expansion in mind.
Currently there's a more advanced Loft primitive which bridges
between any number of Curves, great for pipes and cables. Plus a
dedicated Shadow primitive which generates blurred shadow
images directly from the shape Curves. This makes it extremely easy
to made efficient good looking shadows.
There's also a Sprite primitive which lets you to put 2D sprites
in any 3D orientation, including all the existing game object
sprites. This lets me reuse all the existing artwork and just make
incremental upgrades. It's also great for decals.
I have so many ideas for additions to the editor, but they can be
added over time as I need them.
Future Potential
The potential for player-made content is huge, and although I
made the editor for myself, having it built right into the game
should give things a nice boost! 🚀
Speaking of which, Starship Colony just got promoted to the
Popular Upcoming chart on Steam. Traffic is up, and wishlists
are climbing steadily despite having no trailer or
publicity yet. It'll interesting to see what happens when we do!
:)
If you haven't wishlisted already, please do - it helps our
visibility with the algorithm. You can also follow the developer page
to get notified when we start play tests. The Discord forum
is also usually first to hear of any news. Thanks!