https://github.com/ladroid/3dworld
Simple raycasting for Arduboy
https://github.com/ladroid/3dworld
2d 2d-game 2d-game-engine arduboy arduino raycasting
Last synced: about 1 month ago
JSON representation
Simple raycasting for Arduboy
- Host: GitHub
- URL: https://github.com/ladroid/3dworld
- Owner: ladroid
- License: bsd-3-clause
- Created: 2023-11-16T15:18:08.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2023-11-26T20:22:35.000Z (over 2 years ago)
- Last Synced: 2025-01-14T09:14:28.573Z (over 1 year ago)
- Topics: 2d, 2d-game, 2d-game-engine, arduboy, arduino, raycasting
- Language: C++
- Homepage:
- Size: 67.4 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 3d World
## Overview
This Arduino sketch is designed to run on the Arduboy handheld gaming device. It implements a basic 2D raycasting engine, similar to early first-person shooters, and includes a particle system. The code is based on the raycasting tutorial from [lodev.org](http://lodev.org/cgtutor/raycasting.html).
## Features
- 2D raycasting engine for rendering a simple maze-like environment.
- Particle system with basic physics.
- User input handling for movement and particle generation.
- Procedural map generation based on a hashing function.
- Dithering
## Movement and Controls
- Use the UP and DOWN buttons to move forward and backward.
- Use the LEFT and RIGHT buttons to rotate the view.
- Press the A button to generate particles.
## Particle System
- Particles are generated at the player's position and move in the direction of the player's view.
- Each particle has a limited lifespan, decrementing each frame.
- Particles are rendered as small squares on the screen.
## Additional Notes
- Collision detection with the map boundaries is implemented.
- The game utilizes the Arduboy's 128x64 pixel monochrome display.
## Legal
Copyright (C) 2023 ladroid.
This code is [BSD-3-Clause Licensed](https://github.com/ladroid/3dWorld/blob/main/LICENSE.txt).