Portfolio / Alien Age

Alien Age

Studio Indie Wizards → Left Turn Studios Role Technical Artist (sole TA) Dates 2021 · Released on Steam Engine Unity
  • Shaders & Materials
  • VFX
  • Lighting & Rendering
  • Tools & Pipeline
  • Procedural Content
  • Scripting
  • Retopology
  • Texture Atlases
Alien Age screenshot showing the game environment with custom shaders, lighting, and VFX
FIG. 00 — in-game environment — custom shaders, lighting, and VFX Unity · Steam release · draft — final asset tbd

Alien Age is a 2D action game released on Steam in 2021. The project originated as a one-month game jam before expanding into a full release. I joined as the sole Technical Artist on a revenue-share basis with Indie Wizards — the developer group that shipped the title, and that would incorporate as Left Turn Studios in 2022, where I continued as lead Technical Artist on Snuggles the Unicorn and Grapple Star. The work covered everything visual and technical: all shaders, all VFX, all lighting, all materials, and the full asset pipeline from raw geometry to in-engine.

Shaders

The three shaders that defined the game's look were all custom-built in Unity Shader Graph. The water surface shader uses world-space UV coordinates so the flow pattern stays consistent regardless of how geometry is oriented or placed — tiling artifacts from UV-based approaches were a problem on irregular terrain, and the world-space approach eliminated them completely.

water surface shader — consistent world-space UV flow
FIG. 01 — water surface shader — consistent world-space UV flow Shader Graph · draft — final asset tbd

The volumetric fog shader fakes atmospheric depth using depth texture sampling — the engine had no built-in atmosphere system, so this had to be authored from scratch. The fog density and color respond to world height, giving the environments a sense of scale that flat post-process fog can't produce.

volumetric fog — atmospheric depth from depth-texture sampling
FIG. 02 — volumetric fog — atmospheric depth from depth-texture sampling Shader Graph · draft — final asset tbd

The environment tile color-variation shader seeds per-tile color offsets from world position. This lets identical tile geometry read as organic and varied in the scene without needing unique texture variants for every tile type. The color range is bounded so variation stays readable as a single material rather than looking like mismatched assets.

world-position-seeded tile color variation
FIG. 03 — world-position-seeded tile color variation Shader Graph · draft — final asset tbd

VFX

All VFX were built in Unity's particle system. The beam pickup, beam drop, and cloud lightning effects were the most technically involved — the beam had to read as a continuous energy column while being composed of discrete particles, and timing had to sync to gameplay events without hardcoded delays.

beam drop — energy beam from UFO
FIG. 04 — beam drop — energy beam from UFO Unity Particle System · draft — final asset tbd
cloud lightning
FIG. 05 — cloud lightning Unity Particle System · draft — final asset tbd

Asset Pipeline

The full asset pipeline was owned from the start. Geometry went through retopology to hit polygon budgets without visual loss on the most visible surfaces. Textures were organized into indexed atlases to cut texture lookup count — a meaningful optimization for mobile-adjacent hardware targets. The approach let the game run at target frame rate with the visual quality the art direction required.

environment tiles — optimized geometry and atlas layout
FIG. 06 — environment tiles — optimized geometry and atlas layout Maya · Unity · draft — final asset tbd

Procedural Environment Tools

Late in production, level designers needed a way to populate environments with foliage without paying the runtime cost of a procedural system running in-game. I collaborated with an engineer to build an editor-time placement tool: it ran the distribution logic in the Unity editor and baked the result as placed instances, so the in-game cost was the same as hand-placed assets. The tool was documented so level designers could regenerate placements independently after level changes without coming back to engineering or tech art.

The visual variety the tool produced came from a companion script — a Tree Sizer/Rotator/Tinter placed on the tree prefab itself. When an instance was placed in the level, the script randomized position offset, scale, rotation, and color grading automatically. The result: three rock meshes and three tree meshes produced eight distinct tileset varieties with no additional asset authoring. Properties were applied at placement time rather than at runtime, keeping overhead minimal and giving accurate visual feedback in the editor.