Better readme, added why zig and sokol

This commit is contained in:
nothke 2024-06-12 12:58:14 +02:00
parent af559317fb
commit 1c49ffa07f

View File

@ -1,3 +1,29 @@
A little learning playground of [sokol](https://github.com/floooh/sokol) in [zig](https://ziglang.org/). Started on the gamejam at Decentrala, 9th June 2024. A little learning playground of [sokol](https://github.com/floooh/sokol) in [zig](https://ziglang.org/). Started on the gamejam at Decentrala, 9th June 2024.
To build, you need to have zig master. Then just `zig build run` and that should be it! The goal of this project is not fixed, and is just to try out some sokol features. But here's a few things I'd like to try out:
- [x] Draw a circle
- [ ] Load and render textures
- [ ] Render a 3D object
- [ ] Compile it for WebAssembly and run it in the browser
## Build
To build, you need to have zig master (you can use [zvm](https://www.zvm.app/) to help you with this). Then just `zig build run` and that should be it!
Note that if you change shaders, you have to recompile them manually - run compile_shaders.bat.
## Why zig?
Zig is a low level language and toolchain that is designed as a "better C". Its main goal is to be simple, robust and fast. A few strong points:
- It can cross-compile from any platform to any platform.
- It can include C headers and you can use it in zig directly.
- It has a built-in build system that is also written in zig, so no other build systems like cmake are needed.
- Unlike C++, it's not OOP, there are no hidden constructor and destructor calls and overcomplicated copy/move rules.
- Unlike C, it solves A LOT of problems of C, and is MUCH harder to shoot yourself in the foot.
- There are no hidden allocations, everything that is heap-allocating has to be done explicitely.
- It has a powerful metaprogramming facility "comptime", which provides full static reflection.
- I can go on listing more cool features, but that is enough for now.. :)
## Why sokol?
Sokol is a cross platform graphics library with minimal footprint that can compile to any backend like DirectX, OpenGL, Vulcan, Metal or even WebAssembly.