From 9c4f5a86fedf002d2e3e91afa31a6b83ff85a2c7 Mon Sep 17 00:00:00 2001 From: MDietermann Date: Thu, 28 May 2026 11:00:02 +0200 Subject: [PATCH] chore: initialize repository with project scaffold, gitignore and readme --- .gitignore | 28 ++++++++++++++++++++++++++++ Program.cs | 11 +++++++++++ README.md | 46 ++++++++++++++++++++++++++++++++++++++++++++++ VoxelEngine.csproj | 15 +++++++++++++++ VoxelEngine.sln | 16 ++++++++++++++++ 5 files changed, 116 insertions(+) create mode 100644 .gitignore create mode 100644 Program.cs create mode 100644 README.md create mode 100644 VoxelEngine.csproj create mode 100644 VoxelEngine.sln diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c25fa5b --- /dev/null +++ b/.gitignore @@ -0,0 +1,28 @@ +# Build output +[Bb]in/ +[Oo]bj/ +[Oo]ut/ +artifacts/ + +# .NET +*.user +*.userosscache +*.suo +*.dbmdl +project.lock.json +project.fragment.lock.json + +# Rider / JetBrains +.idea/ +*.sln.iml + +# Visual Studio +.vs/ + +# Local design docs — kept out of the repo by request +docs/ + +# OS noise +Thumbs.db +desktop.ini +.DS_Store diff --git a/Program.cs b/Program.cs new file mode 100644 index 0000000..7bbafb5 --- /dev/null +++ b/Program.cs @@ -0,0 +1,11 @@ +using OpenTK; + +namespace VoxelEngine; + +class Program +{ + static void Main(string[] args) + { + Console.WriteLine("Hello, World!"); + } +} \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..02aef10 --- /dev/null +++ b/README.md @@ -0,0 +1,46 @@ +# VoxelEngine + +A learning voxel engine written in C# (.NET 10) on top of OpenTK 4 / OpenGL 3.3. + +## Status + +Early baseline. The current goal is rendering a single **face-culled, textured 16×16×16 +chunk** that you can fly around with a free camera — the structural core the rest of the +engine builds on. + +## Tech stack + +- **.NET 10 / C#** +- **OpenTK 4.9.4** — windowing, OpenGL bindings, and math +- **StbImageSharp** — texture (PNG) loading + +## Build & run + +Requires the .NET 10 SDK. + +```bash +dotnet run --project VoxelEngine.csproj +``` + +Once the baseline is running: **WASD** to move, **mouse** to look, **Esc** to quit. + +## Project layout + +``` +Core/ game window + loop +Rendering/ shader, texture, camera, chunk renderer (OpenGL) +World/ block model, registry, chunk, mesher (no OpenGL) +Assets/ shaders + texture atlas +``` + +The `World/` layer is intentionally free of any OpenGL dependency so the voxel logic can +be unit-tested headless. + +## Roadmap + +- [ ] Baseline: window, fly-camera, one face-culled textured chunk +- [ ] Procedural terrain (noise) +- [ ] Multiple chunks + frustum culling +- [ ] Player controller + AABB collision +- [ ] Block break / place +- [ ] Lighting diff --git a/VoxelEngine.csproj b/VoxelEngine.csproj new file mode 100644 index 0000000..b1e40ab --- /dev/null +++ b/VoxelEngine.csproj @@ -0,0 +1,15 @@ + + + + Exe + net10.0 + enable + enable + + + + + + + + diff --git a/VoxelEngine.sln b/VoxelEngine.sln new file mode 100644 index 0000000..f11ce5d --- /dev/null +++ b/VoxelEngine.sln @@ -0,0 +1,16 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "VoxelEngine", "VoxelEngine.csproj", "{1636629D-00D6-45A5-878F-7E1417FD87F7}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {1636629D-00D6-45A5-878F-7E1417FD87F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {1636629D-00D6-45A5-878F-7E1417FD87F7}.Debug|Any CPU.Build.0 = Debug|Any CPU + {1636629D-00D6-45A5-878F-7E1417FD87F7}.Release|Any CPU.ActiveCfg = Release|Any CPU + {1636629D-00D6-45A5-878F-7E1417FD87F7}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection +EndGlobal