Journal

I began this journal back in January 2024 as a way to catalogue my work on Vesper. Since then it's grown into more of a scattershot account of all my work.

Mar 30, 2024

Thinking about modular grid-based layouts.

Mar 28, 2024

Rummaging around in the mesh typography code, trying to chip away at the jank and clean things up a bit.

Mar 27, 2024

[♪] Ben Chatwin - Lost at Sea

Mar 26, 2024

Experimenting with lights, shapes and movement.

Mar 25, 2024

Working from an earlier piece of concept art I built some very basic elements in Blender and started blocking out the shape of this satellite in Unity.

[♪] Heilung - Norupo

Mar 22, 2024

With the text mesh component functionally complete I went back and filled out the glyph set with a full alphabet (including Æ,Ø and Å) and some basic punctuation. No numbers yet, but we’ll need those later, as well as arrows.

Once this thing is done I can churn out an abundance of signage and labels as I workshop the ship and some other pieces I have in mind.

(The glyph design is based on Source Code Pro)

Mar 21, 2024

Had a couple of days away from Vesper to sort out some other things. Back at it today. Added functional spaces, linebreaks, tracking, line height and text size - all with visualisation in the editor.

Mar 15, 2024

Experimenting with mesh decals turned into prototyping a typographical mesh generator. Right now I use individual glyph meshes (created in Blender) and combine them into new meshes in Unity.

You might be thinking "hold up, Text Mesh Pro does this exact thing", and you'd be right. Still, once I got going with this it was way too much fun to put down.

Mar 14, 2024

Experimenting with latch placement and mesh decals.

Mar 13, 2024

Idea for a compact airlock/hatch design with an inline space suit locker.

Mar 12, 2024

/ Global shader variables

While reasearching how to standardize and split out my lighting calculations I found Shader.SetGlobalColor() (sets a global shader color property) and Monobehaviour.OnValidate() (fires off whenever the script is loaded or any of it's variables are changed in the editor).

With those in hand I made a tiny manager that houses a dictionary of string/color pairs and sets those as global shader colors.

That gives me scene-wide shader variables like shadow color and fog. Those things already exists in Unity, but they're neatly tucked away in menus all over, it seems. Now I have all my global shader variables in one place and I can add new ones whenever I want.

The entire thing:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class GlobalShaderVariables : MonoBehaviour {
    public ShaderColor[] shaderColors;

    void OnValidate() {
        // print("OnValidate!");
        foreach (var pair in shaderColors){;
            Shader.SetGlobalColor(pair.key, pair.value);
        }
    }
}

[System.Serializable]
public class ShaderColor {
    public string key;
    public Color value;
}

Mar 11, 2024

When I was working on stuff for the teaser I experimented a lot with lighting. I ended up with a mess of duplicated code and varations. For this I wanted to see if I could split that out and standardise it, then just reference it in all of my shaders with an #include.

This version doesn't have the shadows I used on some of the tree scenes, but the idea held up so I should be able to expand this to cover that as well.

Mar 8, 2024

Felt like it had been slow going since the teaser so I sketched out a design for the space ship interior, roughed out some parts in Blender and kit bashed them together into an initial draft of the space ship cockpit and living quarters.

Mar 7, 2024

Thinking about how I can use what I've been working on as the basis for a playable section.

[♪] Ben Chatwin - Burning Witches

Mar 6, 2024

Back to the orbital view.

The clouds are made up of two 3D noises (at different scales) blended together and animated along one spatial dimension over time. It's basically a 3D noise pattern that's intersecting a second sphere mesh around the planet. The resulting intersection is then used as the alpha value of the transparent cloud shader. The color (and master oppacity) is exposed and adjustable in the material.

[↓] This keeps happening whenever I create a new transparent shader. Clearly I'm messing something up, but in a consistent way - so there's that.

[♪] Magic Sword - Kill Them All

Mar 5, 2024

I don't know if this'll make it into the game. For now I'm just experimenting with celestial mechanics and exploring the shape and content of the star system where Vesper plays out.

The sizes, distances and placements here are based (roughly) on our own star system - to give me a starting point. I've had to cut the distances to a tenth (for the vizualisation. The math is full scale). Also, this is obviously sped up a lot.

[♪] Metallica - Ride the Lighting (Remastered)

Mar 4, 2024

Getting back into it after clearing a milestone always seems to come with a dip in energy. All the more important to focus on process.

I knew I wanted to have an orbital view of a planet, and accomplish as much as possible of that with shaders.

Experimenting with noise.

Mar 1, 2024

My first milestone for Vesper has been to create and publish a short teaser. Something that captures a piece of the mood and style I'm building towards.

Most of what I've been working on thus far has been to that end - though I haven't kept myself from going on tangents and exploring stuff that has no real bearing on the teaser.

This is a sketch (the fifth iteration). It might be the final version, or not. It's also unlisted (as of me writing this). I wanted to share it here anyway.