80 lines
2.7 KiB
Markdown
80 lines
2.7 KiB
Markdown
# libsst / ZEngine
|
|
|
|
**Version 0.6.0** | **762 Studios** | **WTFPL v2**
|
|
|
|
A cross-platform C++ game engine library providing low-level system
|
|
abstractions, math, networking, rendering, and an entity-component simulation
|
|
framework. Originally developed circa 2011-2013.
|
|
|
|
## Modules
|
|
|
|
### Low-level C libraries (`libsst-*`)
|
|
|
|
| Module | Description |
|
|
|---|---|
|
|
| **libsst-atomic** | Atomic operations for lock-free programming |
|
|
| **libsst-concurrency** | Threads, mutexes, events, semaphores, read-write locks, TLS |
|
|
| **libsst-crypto** | Hash functions and cryptographic utilities |
|
|
| **libsst-glapi** | OpenGL 3.3 context management and function loading |
|
|
| **libsst-math** | Vectors (2/3/4), matrices (2x2/3x3/4x4), geometry, transforms |
|
|
| **libsst-net** | Cross-platform socket abstraction (TCP/UDP) |
|
|
| **libsst-os** | File I/O, memory mapping, dynamic libraries, timing, CPU info |
|
|
| **libsst-random** | Mersenne Twister, CMWC, small PRNG, simplex noise |
|
|
| **libsst-wm** | Window creation, input events, OpenGL context, display modes |
|
|
|
|
### High-level C++ libraries
|
|
|
|
| Module | Description |
|
|
|---|---|
|
|
| **ZUtil** | RAII wrappers around libsst, custom containers (ZArray, ZList, ZHashMap, ZRingBuffer, ZString), smart pointers, serialization (JSON, XML, INI, binary), logging, slab allocation, task streams |
|
|
| **ZNet** | Client/server networking built on enet with packet channels, bandwidth metering, and peer management |
|
|
| **ZRenderer** | OpenGL rendering abstraction: shaders, textures, data buffers, render targets, render state |
|
|
| **ZRendererUtil** | Font rendering, particle systems, static mesh loading (assimp), tessellation, camera, transform hierarchies |
|
|
| **ZSimulation** | Entity-component framework with fixed-timestep updates, entity messaging, property buffers, and network synchronization |
|
|
|
|
## Platform support
|
|
|
|
- **OS:** Windows, Linux, macOS, Solaris, Android, Raspberry Pi
|
|
- **Architectures:** x86, x86-64, ARM, IA64, MIPS, PPC, SPARC
|
|
- **Compilers:** GCC, ICC, MSVC, Sun Pro
|
|
|
|
## Building (GNU Make, non-Windows)
|
|
|
|
```sh
|
|
make release # release build for detected platform
|
|
make debug # debug build
|
|
make clean # clean artifacts
|
|
```
|
|
|
|
Output goes to `Bin/<arch>/`.
|
|
|
|
## Third-party dependencies
|
|
|
|
Bundled under `Lib/Include/`:
|
|
|
|
- Box2D (physics)
|
|
- CML (configurable math)
|
|
- OpenAL / FMOD (audio)
|
|
- assimp (model import)
|
|
- enet (reliable UDP)
|
|
- FreeType (font rasterization)
|
|
- RapidXML (XML parsing)
|
|
- ZSTL (custom STL containers)
|
|
|
|
## Tests
|
|
|
|
```sh
|
|
make ztestsuite
|
|
```
|
|
|
|
Covers math types, containers, memory allocation, smart pointers, I/O,
|
|
concurrency, random number generation, and noise.
|
|
|
|
## Authors
|
|
|
|
James Russell, Patrick Baggett, Chris Ertel, and contributors at 762 Studios.
|
|
|
|
## License
|
|
|
|
[WTFPL v2](http://www.wtfpl.net/) -- Do What The Fuck You Want To Public License.
|