Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

reznakt/ray-casting

Open more actions menu

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

Morty Proxy This is a proxified and sanitized view of the page, visit original site.