Skip to content

reznakt/ray-casting

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿš€ Ray Casting

License GitHub Workflow Status GitHub repo size GitHub repo file count GitHub repo LOC

A simple experiment with ray casting and C.

Play online: https://reznakt.github.io/ray-casting/

๐Ÿค” About the project

This project is a simple experiment with ray casting and C. It's not really a game, but rather a proof of concept. You can walk around and observe the environment, which consists of walls and an open sky.

I previously made something similar in Python, but it was quite slow (~100 fps), so I wanted to see how fast it could be in C (it's ~2000 fps). I also really like C and ray casting, so it's a fun project indeed.

๐Ÿ’ป Built with

  • C99
  • CMake
  • SDL2

Tip

On Debian-based systems, you can install all necessary dependencies with:

sudo apt-get install -y cmake libsdl2-dev libsdl2-gfx-dev

๐Ÿš€ Getting Started

Tip

You can also download a pre-built binary.

To get a local copy up and running, follow these simple steps:

git clone https://github.com/reznakt/ray-casting.git && cd ray-casting
cmake -B build/
cmake --build build/ -j$(nproc)

You can also run the app with Docker. Here's an example docker-compose.yml file:

services:
  ray-casting:
    image: ghcr.io/reznakt/ray-casting:latest
    container_name: ray-casting
    tty: true
    user: 1000:1000
    environment:
      XDG_RUNTIME_DIR: /tmp
      WAYLAND_DISPLAY: $WAYLAND_DISPLAY
      SDL_VIDEODRIVER: wayland,x11
      DISPLAY: $DISPLAY
    volumes:
      - $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY
      - /usr/share/wayland-sessions/:/usr/share/wayland-sessions/:ro
      - /tmp/.X11-unix:/tmp/.X11-unix:ro
    devices:
      - /dev/dri:/dev/dri

๐ŸŽฎ How to Play

Currently, there are no game features per se. You can walk around and observe the environment. However, you can configure various parameters by modifying the header files:

  • Screen size
  • Field of view
  • Number of rays
  • Keymappings

๐Ÿ“ท Screenshots

image
Normal mode
image
Flat mode

๐Ÿ“ License

This project is licensed under the MIT license - see the LICENSE file for details.

โค๏ธ Acknowledgements

Packages

 
 
 

Contributors 2

  •  
  •