______ _______ __ __ __ __ _______ __ _ | _ | | _ || | | || | | || || | | | | | || | |_| || |_| || |_| || ___|| |_| | | |_||_ | || || || |___ | | | __ || ||_ _|| || ___|| _ | | | | || _ | | | | | | |___ | | | | |___| |_||__| |__| |___| |___| |_______||_| |__| ---------------------------------------------------------------Experimental WebGL-based rendering engine that simulates mirrors using raycasting
Rayven is an emerging rendering system, inspired on the classing raycasting technique employed by games like Wolfenstein 3D. It introduces recursive ray bouncing to simulate reflections, while being much lighter than a raytracer. This engine is intended for retro-styled games and individual projects.
- 🏹 Raycasting system
- 🪞 Recursive mirrors
- 🔦 Basic lighting (distance based)
- 🎞️ Built-in mini-map
- 🗺️ Atlas-based texturing
- 🎮 WASD movement control
This project is built over the existing Kernox framework, following an Entity-Component-System (ECS) architecture. The engine itself is a KernoAddon (an addon that integrates to the application instance.)
- Clone the repository
git clone https://github.com/WebAxol/rayven.git- Install dependancies
npm i- Init the development server
npm run dev- Connect to URL (http://localhost:<PORT_PROVIDED_BY_VITE>)
This is an open-source project; all contributions are well received as long as they respect our guidelines:
- Create a new branch
git checkout -b feature/my-new-feature
Use prefixes such as:
feature/for new functionalityfix/or bugfix/ for bug fixesrefactor/for internal changes without behavior impact
- Make atomic and consistent commits Each commit should represent a single logical change and include a clear, conventional message:
git commit -m "refactor: replaced direct imports by dependancy-injection at 'systems/MySystem.ts'..."
- Avoid mixing unrelated changes in the same commit
- Prefer imperative, concise commit messages
- Rebase your branch onto the latest
main
git checkout main
git pull
git checkout feature/my-new-feature
git rebase main
This keeps the history linear and avoids unnecessary merge commits.
If conflicts arise, resolve them carefully and continue the rebase:
git rebase --continue
- Create an upstream branch to push your changes
git push -u origin feature/my-new-feature
This allows future commits to be pushed with:
git push
- Open a Pull Request
Once pushed:
- Open a Pull Request against main
- Clearly describe what the change does and why it is needed
- Reference related issues if applicable
