# 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.
