<!-- generated-markdown-alternate -->
---
title: "TRAD Strike"
description: "A small Raiden Trad-inspired vertical shooter written in C99, built on Sokol and a tiny ECS. The same binary runs natively and in the browser via WebAssembly."
url: "https://briansunter.com/projects/trad"
---

May 13, 2026 Launched

# TRAD Strike

A small Raiden Trad-inspired vertical shooter written in C99, built on Sokol and a tiny ECS. The same binary runs natively and in the browser via WebAssembly.

[Visit Project ](https://briansunter.github.io/trad/)[View Source](https://github.com/briansunter/trad)

C Sokol WebAssembly Game Development ECS

![Cover image for TRAD Strike](/_astro/trad-hero.DWOM3tTK_O9wsP.webp)

## Overview

TRAD Strike is a small vertical shoot-‘em-up inspired by Raiden Trad, written in C99. The view is top-down and 2D, but every ship, projectile, and prop on screen is a real 3D mesh from the Kenney Space Kit, lit at asset-conversion time so the renderer does no lighting math at runtime.

![TRAD Strike gameplay screenshot](/_astro/trad-hero.DWOM3tTK_Z2eIlWH.webp)

TRAD Strike gameplay screenshot

The same source builds to a native macOS/Linux binary and to a WebAssembly bundle, so desktop and mobile web both run the same gameplay code as the native build.

## Features

- Wave-based vertical shooter with enemy waves, projectiles, particles, and pickups
- ECS layout with `spawn`, `player`, `enemy`, `movement`, `collision`, `lifetime`, and `cleanup` systems
- Desktop input via WASD/arrows, Space/Z/X to fire, R to restart, mouse aim
- Mobile touch controls: left half is a d-pad, right half is the fire button
- Parallax starfield and alpha-blended glow effects rendered through Sokol GL immediate-mode
- Static C mesh data generated from Kenney OBJ models at build time, with no runtime model loading

## Technology Stack

- C99 for all gameplay and rendering code
- [Sokol](https://github.com/floooh/sokol) for graphics, app, and input across Metal, OpenGL, and WebGL2
- [c-ecs](https://github.com/briansunter/c-ecs) for entities, components, and systems
- Emscripten for the WebAssembly build
- Python tool that bakes Kenney OBJ meshes into static C arrays
- Nix flake for a reproducible clang + emscripten dev shell

## Related projects

- [Platform](/projects/platform)

  [A small 2D platformer rendered with isometric 3D models, written in C99 and built on Sokol and a tiny ECS. Same binary runs natively and in the browser via WebAssembly.](/projects/platform)
- [c-ecs](/projects/c-ecs)

  [An in-development single-header C99 entity-component-system library with caller-owned storage and compile-time capacities for small games and embedded targets.](/projects/c-ecs)
- [Bevy Agent](/projects/bevy-agent)

  [An in-development Bevy 0.18 workspace for deterministic game simulation control, snapshots, replay, and JSON-RPC, HTTP, and WebSocket agents.](/projects/bevy-agent)

## Share this project
