commit ddf913dc0a7392236495be20026bc7c1a76b8774
parent b5af32e2798ef3ebff4c9e262611a6c80bbcb0bd
Author: averagecoder <averagecoder@noreply.codeberg.org>
Date: Tue, 25 Aug 2026 02:42:25 +0300
fix: remake readme, add roadmap
Diffstat:
| M | README.md | | | 116 | +++++++++++++++++++++++++++++++++++++++++++------------------------------------ |
1 file changed, 63 insertions(+), 53 deletions(-)
diff --git a/README.md b/README.md
@@ -1,76 +1,86 @@
# antizona
-A minimalist, high-performance open-source multiplayer engine and framework
-for Grand Theft Auto: San Andreas, written in pure C99.
+A minimalist 3D software-rendered multiplayer engine and client for Grand Theft Auto: San Andreas, written in pure C99.
-Antizona is designed as a lightweight, secure alternative to modern bloated SA-MP
-and MTA platforms. Instead of pay-to-win mechanics, heavy server-side scripts, and
-unoptimized custom assets, the project focuses on a deep, systemic, player-driven
-Roleplay (RP) environment. Every element of the world—from weapon manufacturing and
-logistics to crime and law enforcement—is simulated as an interconnected, logical
-cycle driven solely by player actions, with zero administrative or donation bloat.
+## Overview
-## Features
+antizona is a low-level, bloat-free multiplayer suite. It operates without GPU drivers (software rendering), embedded web browsers (CEF), or heavy scripting runtimes.
-- **Multi-threaded Asset Compiler**: Converts models (DFF) to PLY and textures (TXD)
- to TGA directly from GTA3.IMG and GTA_INT.IMG.
-- **Two-Pass Compilation**: Fully loads the 14,929 model IDE database before parsing
- any IPL map placement, ensuring 100% correct object resolution.
-- **Ultra-Lightweight Renderer**: Zero-dependency software rasterizer utilizing an
- OpenSSL-secured network and local asset pipeline.
-- **Strict POSIX Compliance**: Written in pure C99 with zero third-party dependencies,
- ensuring maximum portability and performance.
+- **Client**: Multithreaded CPU software rasterizer outputting directly to an X11 framebuffer (`XShm`).
+- **Server**: Lightweight UDP daemon using spatial grid broadcasting.
+- **Pipeline**: Offline asset converter mapping GTA SA archives into clean binary meshes and raw textures packed in an uncompressed `assets.tar`.
-## Roadmap
+## Platform & Status
-### Phase 1: Local Collision & Player Physics
-- Implement efficient Ray-Triangle intersection using the existing spatial grid `scene_grid` for ground height snapping.
-- Build basic player movement physics: standard gravity and simple bounding-sphere world collisions.
+- **Tested OS**: OpenBSD.
+- **Target OS**: Linux / POSIX.
-### Phase 2: Asynchronous UDP Networking
-- Implement a minimalist asynchronous UDP server (`server.c`) utilizing Linux `epoll` or BSD `kqueue` for sub-millisecond execution.
-- Serialize compact binary player state packets (ID, XYZ coordinates, Yaw, active actions).
-- Implement local spatial partitioning on the server to broadcast state packets only to visible neighboring players.
+*Windows and Android platforms are not supported at this stage.*
-### Phase 3: Player Synchronization & Rendering
-- Load dynamic player `.dff` skins (gang members, CJ) at runtime.
-- Render other players as dynamic meshes using the existing `draw_mesh` pipeline.
-- Implement a lightweight, low-overhead skeletal animation state machine.
+## Quick Start
-### Phase 4: Core Systemic Interaction
-- Low-latency hitscan raycasting calculated against target bounding spheres (`sphere_cx`, `sphere_cy`, `sphere_cz`, `sphere_r`).
-- Basic player-to-world interaction (inventory item pickups, server-side state verification).
+### Prerequisites
+- C99 compiler (`gcc`, `clang`, or `pcc`)
+- POSIX threads (`pthread`), math library (`libm`)
+- X11 libraries (`libX11`, `libXext`)
+- Original GTA: SA installation files (required only for the asset build phase)
-## Requirements
+### Building & Running
-- OpenSSL (libssl, libcrypto)
-- X11 (libX11, libXext)
-- POSIX threads (pthread)
+1. Compile binaries:
+```sh
+make
+```
-## Building
+2. Extract game assets (one-time step):
+```sh
+./bin/build /path/to/gta_sa
+```
-To compile both the asset compiler and the software rasterizer:
+3. Launch server:
+```sh
+./bin/server 7777 32
+```
-```bash
-make
+4. Launch client:
+```sh
+./bin/render 127.0.0.1:7777 nickname
```
-## Usage
+<details>
+<summary><b>Development Roadmap</b></summary>
+
+### v0.1.0 — Core Hardening & UX
+- [ ] Implement synchronous connection handshake (`PKT_JOIN` -> `PKT_JOIN_ACK`) before client window initialization.
+- [ ] Add 5-second server timeout auto-disconnect in client.
+- [ ] Add vertical substepping to movement physics to prevent high-velocity terrain clipping.
+- [ ] Mandate strict packet length checks and string null-termination in network code.
+- [ ] Remove `system()` calls from asset pipeline.
+
+### v0.2.0 — Protocol Security & Server Scaling
+- [ ] Add 64-bit session tokens to packet headers to prevent UDP IP spoofing.
+- [ ] Implement 64x64 spatial grid partitioning on the server for $O(N)$ broadcasts.
+- [ ] Optimize server socket I/O using `recvmmsg()` / `sendmmsg()` datagram batching.
+- [ ] Transition server polling from `poll()` to `kqueue()` on BSD and `epoll()` on Linux.
+
+### v0.3.0 — Animations & Ped Mechanics
+- [ ] Parse RenderWare `.ifp` animation files.
+- [ ] Implement keyframe vertex-pose caching and SIMD blending for ped locomotion.
-1. Compile and pack the game assets:
- ```bash
- ./bin/build /path/to/gta_sa_directory
- ```
+### v0.4.0 — Combat & Systemic Base
+- [ ] Ray-capsule intersection testing for hitscan shooting.
+- [ ] Server-authoritative hit verification and health tracking.
+- [ ] Compact binary item and pickup system.
-2. Run the software rasterizer:
- ```bash
- ./bin/render
- ```
+### v0.5.0 — Vehicles
+- [ ] Vehicle geometry parsing and raycast suspension physics.
+- [ ] Vehicle movement, orientation quaternion, and entry/exit network synchronization.
-## Support / Donations
+### v1.0.0 — Production Release
+- First stable, production-ready release.
+</details>
-If you appreciate financial privacy and want to support the development of a fully
-independent, decentralized, and s_u_c_k_l_e_s_s GTA SA multiplayer engine, you can donate
-via **Monero (XMR)**:
+## Support
+Monero (XMR):
`83xqB91zW31gZkw9sbeT3vjcFQ22L69nKUyCEWgTnWYYfZ4E7gbEVAX5dWh6hCpk6RGqCatZUgjvzGiDYL9HZ6dVCWoa6Jh`