Skip to content

Latest commit

 

History

History
79 lines (58 loc) · 3.21 KB

README.md

File metadata and controls

79 lines (58 loc) · 3.21 KB

KSICARDOOM - GameDev like it's the 90's

KSICARDOOM is an advanced ray-casting game written from scratch in C, with an engine that supports :

  • Multiple sectors with different floor and ceiling heights.
  • Wall, floor and ceiling textures.
  • Fixed, animated, 360° sprites.
  • 3D camera movements, jumping and crouching.
  • Projectiles, collectibles, and events.
  • Loadable map files.
  • Simple multiplayer using UNIX sockets.
  • Background and event triggered sounds.
  • Modular design, and ready interface for implementing bots.

The Game :

Projectiles have animations when destroyed, and make sound.

Stairs, Elevators and floors which are impossible in traditional ray-casting are implemented in this engine.

Normal World Rules don't apply to the engine's world

The Map Editor :

The map editor is using a GUI library build from scratch, on top of SDL2, that supports :

  • Buttons
  • Check-boxes
  • Sliders
  • Tabs
  • Lists
  • Canvas

The editor can either create a new map, or edit an existing one, the map format is a special KSICARDOOM file, containing assets, map layout and sprite positions.

Can add, and edit, walls, portals and sprites.

Can change height of floor and ceiling in addition to brightness for each sector.

Ray-casting Explained :

Following lots of requests from students at 1337 school, I have published a video on YouTube (In Moroccan Darija) titled "Raycasting Engine, as fast as possible (with code)", and provided some P5.js sketches you can play with, to better understand how all components work, (Camera, DDA, Drawing, Textures).

Here is the link to the sketches :

Special Thanks :

  • Thanks to all my peers at 1337 Coding School, who appreciated my work and encouraged me to add new features.
  • Special thanks to !SilentCorner and the computer graphics guys, for being competitive in their creativity, and my friend ksikso (couscous) for suggesting the name.
  • Deep thanks to msidqi, MBarkErras and ilkou for their contributions to the project, and always being there to discuss new ideas, even with their limited free-time.