Where I mess around with Rust and WGPU in my own time
Other projects not included in this repo:
- SpaceChunks Voxel Engine that I orginally wrote in 2014 using OpenGL and SDL.
- Project Tital A rewrite of SpaceChunks but in Vulkan (as a learning exercise to understand Vulkan).
- Project Apollo Another game of some sorts, never really finished. Ideas used in this project are incoroperated into Vesta.
Eventually the goal is for all these games to be WebGPU and WebAssembly compatable, so they may be played in the browser. This is probably only going to happen late 2021 when browser support is stablised.
A light game engine that wraps around WGPU. Is extended when I need new features. Supports 2D and 3D games.
A very simple example using the Vesta engine. Shows the absolute minimum to render a cube and fly around it using a first person controller.
(Under Development) A pixel simulation game
(Under Development) A 3D solar system simulation game
(Under Development) A port of project titan / Space Chunks to the vesta engine. Hopefully actually getting things like physics, infinite chunks, and raycasting working.
Initial goals required to get this project to the supported features of SpaceChunks (OpenGL) and ProjectTitan (Vulkan). Where appropiate, some features will be built into the Vesta engine so other projects can use them (lighting, skybox etc.)
- Move around the world with a camera
- Debug information stating the current position etc
- World with multiple chunks
- Correct culling of unwanted faces and faces between chunks
- Frustum Culling (probably make this generic and chuck in vesta as well tbh)
- Only render chunks in view of the camera
- Generate new chunks on the fly (and delete old chunks from memory)
- Normals and lighting
- Ability to add and remove blocks from chunks (key presses)
Now for the fun stuff!
- Using rapier.rs, implement mesh coliders for the chunks, implement a ridged body for the player (and bam, physics!)
- Raycasting!!! Nobody likes pressing keys to add and remove blocks, use raycasting to make this a true Minecraft clone!
- Wait, you want to save your progress!? Implement the ability to load and save worlds (this will depend on the next task).\
- Scene Mangement. Port the scene manager and start working on an ECS system for vesta. Scenes structs are pretty much like ap structs, but you can switch between them! (main menu, pause menu, game, etc.)
Make sure the following dependencies are installed:
cargo install -f wasm-bindgen-cli
cargo install simple-http-server
To build a project for web, go to the project folder and run build_wasm
Example:
cd example
.\build_wasm.bat
cd web
simple-http-server
Note: Use Edge or Chrome Cannery with the WebGPU flags enabled