It's been a while...

It's hard work combining a fledgling freelancing business with an overly ambitious indie-game as a side hustle, but I try to make do. So here's an informal devlog of some of the things I've learnt along the way.

Orbital Mechanics

In 2022 I rewrote my DOTS astrophysics engine again. I'm now using a hybrid combination of a Keplerian orbital parameter system for non-hyperbolic orbits, and my pre-existing Runge-Kutta fourth-order integrator for hyperbolic/constantly accelerating objects (i.e. spaceships).

But now with Unity's ECS (previously known as DOTS or Data-Oriented Technology Stack) reaching 1.0, I've decided to do one last consolidation and refactor to move to the latest version of the Unity editor.

Holographic command center concept

AI Concept Art

As a solo indie developer (and freelance technologist) I've been following the rapid evolution of AI for several years now. As I'm a one man game studio, doing a bit of everything (code, art, writing, etc.) I am of course the dream target demographic for these AI tools, as I know enough about everything to be dangerous, but am perhaps not equally proficient at all of them on a professional level. Nor do I have limitless time to do things in. I love to paint digitally, but it's a slow and laborious process, and a finished piece can easily take me 4-8 hours. I could get faster if I did it more, but I'm also doing code, making 3D models, designing gameplay...

Also because I know I'm going to be the guy implementing the art in game, I tend to skip over the concepting phase and go straight into 3D. At most I'll draw some thumbnail sketches for layout, but I can model most things just from my imagination.

But I love concept art, and I realize how vital it can be to a game's design and aesthetic. But I don't just want to be a prompter, entering keywords into a web-UI, no. I want to have real control over the output. I don't want the relationship between the AI and me to be one of a designer and a client, but more like a draftsman and an art-director.

Enter Stable Diffusion and ControlNet.

Stable Diffusion

Stable Diffusion is the open-source version of image-generators like DALL-E and Midjourney, and can be run on your own computer provided you have a compatible (and suitably beefy) GPU. Its open source nature means there is a lot of innovation, and it seems like every day a new tool, a new model, a new plugin is released. One of these add-ons is called Controlnet.

Controlnet allows you to strongly guide the random noise used to generate the image through the use of reference photos, depth masks and line art. So I can upload an image of a rough sketch, and then have the AI fill in the sketch and turn it into a finished piece.

Controlnet example

I rendered plain untextured versions of some of my 3D models that I made in Blender and used them to guide Stable Diffusion using Controlnet.

Prompt: Stunning realistic spaceship design for a video game, concept art, spacecraft, outer space, futuristic, sleek, aerodynamic, sharp lines, detailed textures, advanced technology, glowing lights, dynamic lighting, 8k resolution, Blender, Substance Painter, 3D model, ambient occlusion, global illumination, ƒ 2.8, 50mm, soft light, dusk or dawn setting

Negative Prompt: Cartoonish, flat, 2D, poorly designed, simple shapes, minimal detail, pixelated, low resolution, no lighting effects, amateur, uninteresting, unfinished, cluttered, daytime, overly bright, low contrast

Here are some more finished concept art pieces made using the same technique:

Concept art

Concept art for the "Moravecs", a race of sentient torch ships. Made using Stable Diffusion and Controlnet.

Lovecrafts concept art

Concepts for the "Lovecrafts", an intergalactic race of pandimensional biomechanical horrors, made using the same techniques above.

Prompt: Stunning large bio-mechanical lifeform that lives in space, silicon-based and Lovecraftian for a video game, concept art by H.R. Giger and Zdzisław Beksiński, creature, outer space, biomechanical, organic, eerie, surreal, intricate details, dark tones, tentacles, cosmic horror, vivid textures, moody lighting, 8k resolution, Blender, ZBrush, 3D model, ambient occlusion, global illumination, ƒ 2.8, 50mm, mysterious shadows, deep space setting

Negative Prompt: Cartoonish, flat, 2D, non-bio-mechanical, simple shapes, minimal detail, pixelated, low resolution, no lighting effects, friendly, mundane, unfinished, cluttered, brightly colored, low contrast, lacking horror elements