Category Archives: Devastro2

D2 log 041 – Logo animation

The logo animation is a rather small feature and it’s been a while since I put it in, but I still love it when I see it.

It’s designed to resemble a gun being reloaded – a clip goes in and one bullet is loaded into the chamber. Based on AK47.

I’m glad I took the time to do it early on. Devastro 2 code is derived from Superforce so it was important to make a clear step away.


D2 log 040 – Saucers

Adding more variety and detail to the saucers. Finally.

The original Devastro had only one type of saucer. Granted, it came in two colors, but it was the same shape. It was based on a photo of a physical object (something from the kitchen I think).

For Type Raiders, I made several different 2D silhouettes in Adobe Illustrator, processed the .ai files with Python to turn them into 3D meshes and then rendered those using a Java-based renderer called Sunflow. That worked quite well, thankfully.

Now I’m using Blender for everything. Making the silhouettes, generating 3D meshes and rendering. I use PBR materials to give the saucers a scratched, banged up look.


It’s work in progress but I’m already quite happy with these.

The new Blender “cloth brush” tool was handy for making realistic looking, sloppily rolled out rugs. They too, as the saucers, look a bit used. God knows what liquids have been spilled on them throughout the universe…

♫ Turn every invasion
into a special occasion…
…with rugs!


So let’s take one more look at the entire saucer lineup:


Oh look, a Fisher Price™ Saucer! Not 100% sure what to do with it yet but it’s going in. I can

  1. treat it as a regular saucer
  2. use it for the “final boss” battle
  3. hide it somewhere as an easter egg

D2 log 039 – Collision shapes, pt.2

My custom shape editor has been a great tool for making Box2D collision meshes. Except I never used it. It was WAY too much work. I just kept putting it off, telling myself that the default boxes would be fine “for now”.

So I ditched it (all 400 lines of it) and decided to use some more Blender scripting to simplify my workflow.

I extended my export script to look for a mesh named “Collision” attached to each object. If found, it reads its vertex coordinates (x,y) and writes them into a file.

Took a while to match the camera transform correctly but now I can edit all the shapes directly in Blender!

Collision shape in Blender Collision shape in game

D2 log 037 – Windows

Devastro 2 now runs on Windows.

There were many issues I had to deal with, compared with Mac and Linux. Clang, CMake, Visual Studio, MinGW, the linker… It seems that a project using C++17, OpenGL and SDL is not exactly on the “happy path” for Windows development in 2020. But what is, anyway?

The game is up and running now. IMGUI is disabled because of some OpenGL compatibility problems. Not sure if this is worth fixing – all the editing is done on a Mac.

Would Sokol help? Will try for next project.

D2 log 036 – Linux

Devastro 2 now runs on Linux.

Devastro 2 running on Linux

After building my new PC, the first thing I tried was to compile the game on Windows. However, Visual Studio was giving me a hard time and I wasn’t in the mood for a fight. Instead I installed Ubuntu and got the game up and running there first, as a stepping stone. That went quite well.

No idea about packaging the game for distribution yet. Are .tar.gz packages still a thing?

D2 log 035 – Moving assets

This week I took a dive into the Assets folder and organized it.

Up until now it had a flat structure and it was fine. But as I kept adding more new assets it became hard to keep track of everything.

First I grouped the obvious things, more or less at random. After a while I was able to see the bigger picture: how many of which assets there were and their relations. Based on that I designed a new folder structure and sorted the rest.

fx / particles / 
fx / explosions / 
fx / water / bubbles / 
ui / 9patch / 
ui / cursors / 
ui / hud / 
tiles / set1 /
tiles / set2 /

Many filenames didn’t make any sense so I decided on a new naming scheme which should be simple enough to maintain and easy to understand later.

It was a good opportunity to get rid of all the leftovers from Superforce which were used to quickly bootstrap the new project but weren’t referenced anymore.

Now I’m quite confident that I can manage all the new assets quickly and stay on top of things.

Further reading: HN, Gamasutra

D2 log 034 – Focus

I’ve been thinking about what to focus on to finish the game. I’m going to skip many of the assets I had originally planned and do just the essentials. There are other areas of the game that need my attention.

I’ve spent a lot of time on this project already. There have been big pauses and ups and downs. That’s fine. I learned a lot. But there are other projects I’d like to do next, so I need to make this one… finite.

Some hay bales from last week.

D2 log 033 – Rocks

There are so many ways to make rocks!

My moodboard is filled with beautiful artworks and techniques. To make my own rocks I started by refreshing my sculpting and texture painting skills in Blender. Time really flies when I’m playing with this stuff. It’s a lof fun.

However I needed to make a full range of shapes and formations in reasonable time. So I started over with procedural shapes, tweaked them using simple displacement-based edits and focused on making everything fit into the game nicely. Quite happy with the result.

D2 log 032 – Flora




The trees took a long time to get right. I used the Modular Tree Addon for the trunks. I tried using hair particle effects to grow leaves like I did for the corn & wheat but it didn’t look right. So I took a small patch of leaves and stamped it all over the basic shape by using the shrinkwrap modifier. Laborious, yes, but also precise and 100% under my control.