1. Astronimo
  2. News

Astronimo News

Developer Blog #5 - The Engine of Astronimo šŸš€

Hello again! I’m Jimmy, Lead Programmer on the project and today we are diving into the technical details of the engine that powers Astronimo.



Formally the engine has no internal name, however it is jokingly referred to as ā€œJimgineā€ as its a collection of code that started when I was in University and since then with a major team effort has snowballed into what we’ve got today.

From there the game is layered on top, entirely in C++ to reduce the amount of technical complexity involved in integrating other scripting languages.

[h3]A few quick stats.[/h3]

The codebase is around ~160k lines of C++ code making up 99% of the engine + editor + game + tooling. External libraries make another ~300k lines, used for a variety of things from image loading to editor ui.

All in all, the project footprint is actually pretty small and something we aim to keep, given that we only have a small team of mostly generalist programmers working on the game.

[h3]But why make our own engine?[/h3]

This has to be my most asked question by every developer who has interacted with this project. ā€œWut … why the heck would you make your own custom engine, you crazy!ā€



On reflection, I think it’s a little of the following; arrogance, naivety and luck. I hoped we would have more control over what we made, less reliance on tooling out of our control and ultimately freedom to make the project into whatever we wanted. Also management somehow agreed, ha! Given how long this project has taken us, I’m not so sure they would again though …

I actually think a custom engine panned out pretty well in many respects.
  • We get to ship the editor tools to players! So fingers-crossed, you guys can get way more creative and nutty with the engine that we could ever dream of.
  • Iteration times for building in the editor are FAST. You try this for yourself in the games World Editor. Once the world has initially loaded, you can instantly drop characters in/out to test your level. Designers are very happy with this when constructing planets!
  • Code iteration times are pretty fast. For many code changes we can recompile and hotload in


There are definitely some downsides though.
  • Hardware issues and GPU drivers are an absolute pain and timesink. An uncountable set of permutations of annoying ways the game can crash for different people with different hardware setups on different versions of Windows, looking at different monitors on different refresh rates at different times of day using different peripherals with different network setups and different GPU drivers. It's truly mind bending madness sometimes.
  • VFX team have had a rough time. A very custom renderer of little resemblance to any major engine, missing any niceties like shader graphs/fully featured particle systems, alongside dealing with a crazy inter-planetary coordinate system means it’s been tough going. They still absolutely smashed it though!

[h3]How we load a level[/h3]

For the main campaign, the solar system is really just one GIANT scene. Devs can fly to any part instantly, drop a character in and start playing. Most devs have their own little clusters of planets for testing things in there too. Pretty neat!



In most other projects I have worked on there are scene files describing the layout of every object. This makes collaboration very painful as only one person can edit said scene at a time. We took a different approach here, making every object in the solar system its own file instead. So if I move a rock somewhere, the only file I need to save and commit is the file representing that rock.

These objects are called .wob files, which stands for World Object and also because wob is an amusing word.

Behold my skills as a professional translator of rock wobs!

Wobs for both the main game and custom player made worlds are then packaged up into big container files, making it much more efficient to distribute on Steam and upload to the Steam Workshop.

[h3]Rendering[/h3]

Given the small team size, our renderer would probably not be considered an astounding technical feat of engineering. However it’s got some cool things going for it!



It’s a DX11 renderer with a relatively thin shim around it for swapping to other graphics API’s. We originally supported OpenGL, but ended up transitioning away due to driver issues. Our shaders are actually still all in glsl, and we convert them over to hlsl on import.

Drawcall/Material info is packed into large buffers and then we invoke DrawIndexedInstanced to batch many drawcalls together. Skinning is a dynamic branch in vertex shaders and does not affect the batches.

Textures/Meshes are packed into pools on demand as the camera moves around the world so we are constantly streaming resources up.

For global Illumination we use a voxelization technique.

3 voxel clipmap layers are rendered out, covering most of the camera frustum.

Each frame we voxelise the scene into 3d textures, then gaussian blur / filter them. We run a lighting pass, rendering at half resolution that raymarches against the filtered voxels and produces indirect lighting. We then upscale and mix this with the main render pass. This concept is a little old now, with all the fancy new ray-tracing features beginning to take over the industry. It has a few annoying artifacts I would love to address one day if we get the chance.

Fin

I could ramble on about this engine forever, but I will spare you for now! Working on this project has been an amazing learning experience and it is immensely satisfying to see what we have managed to build from the ground up. Even more so I am looking forward to seeing what utter insanity you can come up with in the custom world editor on release!

Astronimo will be released in Early Access this year. Add it to your wishlist now!
Join the official Coatsink Discord Server.
Follow Astronimo on Twitter.




Developer Blog #4 - The Music of Astronimo šŸš€


Hello there my name’s Vince Webb, I’m a composer and today I’m pleased to give you a little insight into the music of Astronimo.

Before we go any further let’s have a quick listen to the main menu theme.

[previewyoutube]MUSIC (video)[/previewyoutube]
Music in a game like Astronimo needs to play a variety of functional roles: creating excitement, signifying important events to the player, establishing you in a new environment, creating contrast… But over and above all of this is the music’s ability to set an overall tone or vibe. I like to think of it as fleshing out a game’s personality or ā€˜soul’.

The main theme is most important in this regard, as it is likely to be heard multiple times in a variety of contexts. Of course not every game requires a strong melodic theme, but I find that there’s something inherently ā€˜friendly’ about giving the listener something clear to latch on to.



This theme magically popped into my head after I had been immersing myself in the world of the game for several days and noodling at the piano. Let’s do a bit of post-hoc analysis.

Firstly, it has a somewhat ā€˜old school’ quality, with a nod to the nobility of classic, military or space themes (Dambusters, Star Trek etc). While this seriousness is definitely subverted by the tongue in cheek nature of the instrument choice, it still gives us a feeling of sincerity and hope: we are on a mission to get home and we’re going to work together to achieve that goal! It felt important to keep this note of warmth and integrity at the heart of the game’s soundtrack in spite of all the silliness.

The wonderful Basia Bartz adding some violin to the soundtrack

At the same time, all the OTT grandiosity felt like a nod to the bottomless corporate ambition of our employer - Hypergiant Inc. Our boss Croc’s endless supply of (entirely unfounded) optimism makes it all the more funny when our contraptions inevitably fall apart.


A ā€˜funked up’ version of the theme can be heard on Turilia as part of the background music of that particular world. By displacing the rhythm a bit I found myself writing in a danceable military marching vibe with hints of New Orleans, African and Caribbean music thrown in.

[previewyoutube][/previewyoutube]



Working on the music for Turilia was a chance to develop and explore the game’s ā€˜core’ palette, before going off-piste: lots of live brass (especially tuba), uke and plenty of percussion! These sounds in combination with some broadly orchestral colours became my jumping off point for many of the stings and cutscenes throughout the rest of the game.

You can never have too many tracks…

As much as I enjoy working with software instruments and synths, I didn’t want things to be too ā€˜in-tune’. The music needed to feel ā€˜organic’ - to use the old marketing music cliche. To achieve this I leaned heavily into my ever growing instrument collection, as well as enlisting help from some top class musician friends.

Rather than doing a lot of ensemble recording, I embraced the experimentation and fine grain control that’s possible with recording one instrument at a time. Lots of layering and a ā€˜cut and paste’ approach resulted in collages of controlled chaos and playful grooves that hang together by a thread.

Recording my own percussion samples was one way to make things more ā€˜organic’

One of my favourite things about the game is that you can collect and play little musical instruments. Every instrument was recorded live (including didgeridoo) and each planet has its own ā€˜native’ set. Best of all, you can use them to jam with your friends in real time! Developing joyful and completely unnecessary features like this are a just one highlight of working on a project from early on. I was able to be very hands on with how the system worked as well as have time to try out different types of musical phrases to figure out what would be fun to play. I’m excited to see players experiment and perform their own music!

Djembe, 2 ukes and a trumpet. Just one of the many possible combinations!

My thanks to Coatsink and the team for bringing me on board.

Astronimo will be arriving in Early Access soon so add it to your wishlist and I look forward to jamming with you!

Bob Payne contributing some particularly aggressive Tuba ā€˜taunts’ to the playable music system

Join the Official Coatsink Discord
Follow Astronimo on Twitter
Follow Vince's composing activities on YouTube

Developer Blog #3 - The Art of Astronimo šŸš€

Hi, I’m Gareth the Creative Art Director at Coatsink. Let me tell you a little about the art of Astronimo.

The main goal for the art was to invoke the feeling of play and fun. Inspiration came from the classic Nintendo power magazines, the chunky play-mobile toys that I played with as a kiddy mixed together with designer vinyl toys and modern day Nintendo games such as the remake of Link's Awakening. We didn’t want to take ourselves too seriously as with the nature of the build it yourself gameplay and the insane ability to zoom in and out almost limitlessly gave us some fun restrictions to play within

Early Concept Art

The style wasn’t instantaneous though, as with many projects the art tends to develop with the mechanics and calculating how best art can serve the gameplay as well as hitting a high standard within project deadlines. Our initial aims were to create a beautiful organic run down sci-fi world with gnarly machinery and monsters but as the game progressed it became obvious that we wouldn’t have the time to perfect this and it didn’t tie in with the mechanics and took us away from this ā€˜toy’ universe that we were trying to create.

Early in engine tests

As you can see in the early in engine tests above we attempted more traditional & more realistic game art with the detailed normal maps etc caused a lot of noise and fought with the clean designer toy aesthetic.

Developed concept models

Above are examples of how we tried to simplify things to achieve that you feel, stripping things back to if they were to be made out of plastic. Materials change with form changes and are built into the model rather than relying on material maps. We also reduced the amount of details and again concentrated on what the main details that we needed to convey the asset we were creating.

Early grinder vs new grinder

Early driving seats vs new driving seats

Escape pod concept

Once we had established a baseline for the environments we then revisited the equipment left behind by the Hypergiant fleet. It all felt quite disconnected and so unifying the colour scheme and the design aesthetic was the main priority. We again stripped back some of the details but kept the rounded shapes as well as adding more realistic joints and mechanisms around moving parts. The colour scheme came from looking at NASA and trying to grasp that feeling as it is something that the audience could relate too. After I had established rules for myself on the design principles for the machinery it was easy to create a lot of ideas quickly. My favourite of these being the escape pods with the chewing gum-esque interiors.

Original Character concepts vs updated

The vehicle components and characters went through a similar development with the initial designs being upgraded to match in with the ā€œHypergiantā€ corporation design aesthetics. The character also had a lot of simplification to go through as well as updating them to be compatible with customisation etc.

Zooming out & Planet / universe concepts

As mentioned previously the ability to zoom out almost infinitely again caused us more than a few issues in the art department. The camera shifting so much meant that we couldn't hide a lot of our sins like many other fixed camera games could and so we had to consider everything we put in as the edges could potentially be seen. It made sense for space to have more of a realistic feel with the planets and the planet cores feeling like little marble / toy balls with minimal detail to match in with the rest of the artstyle.

Astronimo is coming to Steam in Early Access later this year and we can’t wait for you all to be able to play it.

Until then add the game to your Wishlist, follow Astronimo on Twitter and join our Discord.

Developer Blog #2 - The Physics of Astronimo šŸš€

Hello there and welcome to a crash course into the physics of Astronimo! I’m Jimmy, Lead Programmer on this absolutely bananas game and I shall be your guide today.

Remember, once your contraption is deployed it will feel the full effects of that pesky physical anomaly known as gravity. So let's hope your doctorate in mechanical engineering paid off!

[h3]Hot Rods and Cold Points[/h3]
Astronimo uses quite a lot of physics in the game for the fundamental gameplay and the whole system is a custom physics engine built around the concept of Points and Rods.

Absolutely everything in this game is made of them, even the things you don’t expect. Which we will get to later!

These Point and Rod objects in the game are actually very simple. Points have a position and velocity. Rods connect two Points together and attempt to keep them a certain distance apart.



When you are building contraptions in the Workshops, it’s quite easy to see this system in action. You just plop points down and it automatically creates rods for you. Connect enough of them together and hey presto, a contraption.



Adjusting the length of a rod makes them operate kind of like a hydraulic ram and that's exactly how our hydraulic component in the Workshop functions, under the hood we just expand and contract rods. Suspension rods in the game are also a very simple extension of this, we just constrain rods to impart less force, causing them to become all bouncy and springy.



One of the interesting things about this system is that rotation just arises naturally from the system. As the Points move around due to gravity and collide with the world, the various rods tug on each other and cause the contraptions to rotate. That’s pretty neat eh!

[h3]Rod Attachments[/h3]
To allow for more interesting contraptions, we let you attach a variety of different utility components to the rods. Seats for your characters to hop in. Various propulsion systems such as rockets, springs and motors. Also TNT and other unique items for you to get creative with.

These objects also give your contraptions some volume, enabling them to collide and impact with other vehicles. Perhaps more importantly, they provide space for your stickers too.

[h3]Planetary Physics[/h3]
It wouldn’t be worth adding ā€œAstroā€ to the title if we didn’t get some orbital mechanics into the game! As you gain altitude from a planet your vehicles will begin to experience less atmospheric drag slowing them down. As you traverse further still the effects of gravity will fade away. If you carefully balance your vehicle speed between these two thresholds then you can actually put your contraptions in orbit.

There are also no limits on what we consider to be a spaceship, if you can fling it out the atmosphere fast enough then you are welcome to call it an exploratory vessel! I have watched in amusement as various members of the dev team attempted to build ā€œrailgunā€ machines to launch their fellow cosmonauts into deep space.



[h3]Vehicle Floppyness [/h3]
There is one more important system at play that helps keep vehicles from instantly becoming piles of spaghetti like machinery on the floor. Angle Welds!



When you connect two rods together, they are automatically ā€œweldedā€ together at that specific angle. The physics engine will try its hardest to keep those rods at that angle no matter what. When you place down a Hinge component, you are just telling the physics system to ignore welding those rods together.

During early development of the game, we actually didn’t have this system. Players had to either manually weld rods together or carefully construct their vehicles from triangles shapes so they did not just fall over upon deployment. It was comical at first to watch their machines immediately collapse, but for them it quickly became tiresome, so we ended up automating the system.

[h3]Wheels & Drivechains[/h3]
On the surface you can connect wheels to engines, engines to seats and have yourself a neat little car to tootle around the planet and explore. However, hidden within the building mechanics of the game there is a physics based drivechain system. Why? Honestly, I thought it was cool and nobody stopped me putting it into the game. When you draw connections between wheels and engines, you are really defining little axles with physical properties.

This means you can do amusing and odd things, such as stand on a wheel connected to another wheel and operate it as a sort of hamster wheel powered contraption. So cool!

[h3]Rod based Ubiquity[/h3]
Now I said everything was made from Points and Rods and it’s very true. The little ore pieces you pick up and cart around are really just little invisible rods and points with an ore component attached to them, they are literally just a little contraption. Same for those batteries scattered around the solar system. Even the character's hands are little points you can grab onto. Basically anything in this game driven by physics is just a little rod in the end.

At one point we even had bendy trees and foliage you could interact with driven by the system, however we decided to pull them from the game due to other technical difficulties.

[h3]Technical Jargon[/h3]
For the more geeky technical reader, this whole thing is really just a point-mass system driven by a Position-Based-Dynamics solver. Iterations are kept fairly low for performance, and we use a Jacobi style solver to hopefully prevent over-constrained systems from becoming unstable or biased. This results in a very ā€œsquishyā€ and compliant physics system. Fortunately, this matched the aesthetics of the game though, so we just rolled with it! There is some gnarly maths for some of the constraint gradients that deal with angle welds and embedding convex shapes into the rod constraints, but other than that it's really not all that complicated. It certainly is not anywhere close to physically accurate, but hey that was never the intention of the game.

[h3]Over and Out[/h3]
I hope you enjoyed this brief tour. I am certainly looking forward to seeing what horrendous, physics breaking contraptions you can come up with! Bring it on!


Astronimo will be arriving in Early Access later this year. Wishlist it now.

Join the Official Coatsink Discord
Follow Astronimo on Twitter


Developer Blog #1 - The Story of Astronimo šŸš€

Astronimo is a construction and physics-based platform puzzle game where you and your friends must explore an alien solar system to find the means of getting home!



Up to four friends can find themselves crash-landed on Turilia, a small moon of a strange solar system. With crazed determination and plenty of bouncing, they will help themselves and their Captain, Captain Croc, collect rare antimatter from different moons and planets.

Explore each unique planet in a side-scrolling adventure, building contraptions and vehicles to overcome obstacles and solve puzzles. On your way you will find precious resources to mine and collect, and you can spend these to unlock cosmetic rewards. After all, if you are going on a space adventure, you have to do it in style!



Working together is the name of the game. Vast planets become your playground as you map out and uncover their mysteries as a team. There is never just one solution to a problem in Astronimo; everyone can answer the call of adventure!

[previewyoutube][/previewyoutube]

Alongside puzzles, exploration and bouncing, Astronimo includes the World Editor which will allow you to create your own worlds jam-packed with puzzles and challenges (but we’ll tell you more about that in detail later!)

Astronimo will launch in Early Access later this year. Wishlist it now!

Join the Coatsink Discord
Follow Astronimo on Twiiter