Skip to content

ttheghost/x11-ecs-invaders

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 

Repository files navigation

X11 ECS Invaders

A Space Invaders clone built from scratch in C using pure X11 (Xlib) and an Entity Component System (ECS) architecture.

The Architecture

This project was built to understand Data-Oriented Design and low-level Linux graphics programming.

  • Language: C17
  • Graphics: Xlib (Double Buffered to prevent flickering)
  • Architecture: Entity Component System (ECS)
    • Entities: Just an ID (index in an array).
    • Components: Structure of Arrays (SoA) for cache efficiency (Position, Velocity, Sprite, etc.).
    • Systems: Stateless logic loops (Movement, Collision, Rendering, AI)

How to Build

You need the X11 development headers installed.

Debian/Ubuntu:

sudo apt install libx11-dev
sudo apt install libxpm-dev

Fedora/CentOS

sudo dnf install libXpm-devel

Build & Run:

gcc -o space_invaders src/main.c src/x11_wrapper.c src/ecs.c -lX11
./space_invaders

Build & Run (CMake):

cmake -B build
cmake --build build
./build/space_invaders

Controls

  • Left / Right Arrow: Move Ship
  • Space: Fire
  • ESC: Quit

About

A Space Invaders clone built from scratch in C using pure X11 (Xlib) and an Entity Component System (ECS) architecture.

Topics

Resources

Stars

Watchers

Forks

Contributors