Skip to content

A brand-new, old-school raycasting game-engine written in C!

Notifications You must be signed in to change notification settings

con-dog/2.5D-raycasting-engine

Repository files navigation

A 2.5D Raycasting Game Engine

A brand-new, old-school game-engine inspired by the likes of Wolfenstein 3D (1992) and Ultima Underworld: The Stygian Abyss (1992). Uses simple raycasting techniques and a uniform cell grid to render 3D.

Currently in Phase 5:

Animated textures, floor/wall collisions based on surface manifest, walk through doors, and just for fun - sprites - fishing. Enter doorways Phase 5 fishing gif Phase 5 gif Phase 5 image

Future Goals

  • Remake / Demake a Pokemon town in this "engine"
  • Add 8bit audio, music blocks/textures that make a sounds on collision
  • Procedurally generated worlds
  • Texture transparency (ray pass-through to next texture, for things like windows etc)
  • Sprites are all square/rectangular like minecraft and always face the player, but can "change direction" by changing the texture currently displayed
  • Separate drawing/raycasting logic from window width and height

Previous phases

Phase 4

Phase 4 gif Phase 4 image Example level

  • Levels are represented in memory as Jagged Arrays (to save memory)
  • Wall and Floor maps are just CSV's (So I can quickly make levels in Excel/LibreOffice)
  • Wall and Floor textures are represented by strings so I can very quickly iterate
  • Walls/Floors are separate CSV's (this needs runtime tests (todo) so memory access doesn't corrupt)
  • Textures/Assets are declared via a manifest.json

Phase 3

Phase 3 gif Phase 3 image

  • Fixed visual artifacts and pixel densities

Phase 2

Phase 2 gif

  • Wall collision detection
  • Basic texture mapping for walls
  • Very warped tetures with many artifacts

Phase 1

Phase 1 gif Phase 1 image

  • Very basic ray-casting
  • No collision detection

About

A brand-new, old-school raycasting game-engine written in C!

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published