Mercurial > games > semicongine
view README.md @ 650:be6e0f89645a
add: initial code for texture support, not finished, had to completely refactor how to handle material-data (ie scene-wide data, sorry if you ever read this
author | Sam <sam@basx.dev> |
---|---|
date | Fri, 05 May 2023 23:45:50 +0700 |
parents | 4374c13b9b95 |
children | 93f661a20f74 |
line wrap: on
line source
Semicongine =========== Hi there This is a very simplistic little game engine, mainly trying to wrap around vulkan and the operating system's windowing, input and audio system. I am using the last programming language you will ever need, [Nim](https://nim-lang.org/) Building -------- Requires Nim to be installed and ```glslangValidator``` to be downloaded to the directory of the main compilation file (e.g. into ```examples/``` in order to compile the examples). It can be downloaded at https://github.com/KhronosGroup/glslang/releases/. Run ```nim help``` to see a list of available build commands. Roadmap ------- Still tons to do. Making render pipeline and scenegraph somewhat compatible seems like it will require quite a bit more of work. Also, audio might require quite a bit of work, no experience there (note: audio was super easy to implement) Rendering: - [x] Vertex attributes, vertex data - [x] Shaders (allow for predefined and custom shaders) - [x] Uniforms - [x] Per-instance vertex attributes (required to be able to draw scene graph) - [x] Fixed framerate - [x] Instanced drawing (currently can use instance attributes, but we only support a single instance per draw call) - [ ] Textures - [ ] Depth buffering - [ ] Mipmaps - [ ] Multisampling - [ ] Allow different shaders (ie pipelines) for different meshes Asset handling: - [ ] Resource concept: load from directory, zip or in-memory-zip, select "mod" as root - [ ] Mesh files (Wavefront OBJ, MTL) (use something from sketchfab for testing, https://sketchfab.com/) - [ ] Image files (BMP RGB + BMP Graysscale for transparency) - [ ] Audio files (AU) Other (required for alpha release): - [x] Config files ala \*.ini files (use std/parsecfg) - [x] Mouse/Keyboard input handling - [x] X11 - [x] Win32 - [x] Enable/disable hardware cursor - [x] Fullscreen mode + switch between modes - [x] Linux - [x] Window - [x] Audio playing - [x] Linux - [x] Windows Waveform API - [ ] Generic configuration concept (engine defaults, per-user, etc) - [ ] Input-mapping configuration - [ ] Telemetry - [ ] Add simple event logging service - [ ] Add exception reporting - [ ] Documentation? Advanced features (very low priority): - [ ] Text rendering - [ ] Animation system - [ ] Sprite system - [ ] Particle system - [ ] Query and display rendering information from Vulkan? - [ ] Game controller input handling? - [ ] Allow multipel Uniform blocks? Quality improvments: - [x] Better scenegraph API - [x] Better rendering pipeline API Build-system: - [x] move all of Makefile to config.nims