Skip to content
TribeWarezPublic

About

Fast Paced, etheral and reincarnative shooting Action straight outa 1995

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Latest commit

 

History

377 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Angels95 — AngelTech Engine

Angels95 Title Splash

Latest release SourceForge downloads Build

Angels95 is a multiplayer game world built on AngelTech — the engine that began life as the OmegaTech Engine. It is a persistent, server-authoritative realm where players explore partitioned worlds, collect power-ups, level up, and fight NPCs alongside other connected players.

Repository: github.com/TribeWarez/Angels-95

Built on raylib 5.5 with PS1-inspired retro aesthetics, a custom OZONE world format, a LightningScript entity-scripting language, a Win32-native level editor (AngelEd), and a dedicated standalone server (AngelServ) with no raylib dependency.

Download: SourceForge · GitHub Releases

Windows users should grab the Angels95-Setup-<tag>.exe installer (a single self-contained setup that installs the client, the AngelEd editor and the servers with all packaged game data), or the System-<tag>.zip full bundle. Linux users should grab the System-<tag>-linux-x86_64.tar.gz bundle (client + servers + packaged game data; extract and run System/run.sh). The per-binary assets (Angels95-<tag>-windows-x86_64.exe, the Linux client binary, AngelEd-<tag>-windows-x86_64.exe) carry no game data and error with "GameData/ dir is missing" unless placed inside a System/ bundle or a source checkout — the server binaries (AngelServ/AngelMaster/OzPack) are self-contained and need a GameData/ checkout to serve.


Showcase

All shots captured in-engine via --shot mode (PS1-style, HUD-free). The six curated showcase worlds come first, then the campaign arc added in b101 and rebuilt in b111 — two frames each, taken at the spawn and at the landmark the level is built around.

Citadel Ruins

A ruined hill-citadel — roofed courtyard, four corner towers, a gatehouse over the south gate, and watch balconies over a collar of sand.

Citadel Ruins — evening over the roofed courtyard

Citadel Ruins — gatehouse and corner towers

Citadel Ruins — watch balconies over the sand collar

Dessert Dreams

Sun-baked desert oasis at midday — sandstone arches and columns under a noon sky.

Dessert Dreams — oasis basin at midday

Dessert Dreams — sandstone arches

Dessert Dreams — columns above the sand

Dust Ravine

Desert fortress — halls, corridors, underground tunnels and three outdoor areas under a daylight sky.

Dust Ravine — fortress ramparts

Dust Ravine — interior hall

Dust Ravine — outdoor courtyard

Engine Test

Small functional/test scene — five chambers, a great hall and a courtyard, one zone of every zone type, and a portal to Dust Ravine.

Engine Test — chamber with tileset brushes

Engine Test — great hall

Engine Test — courtyard and portal

Sektor 01 — SilentPines

The campaign opener: a cliff-top arrival overlooking a forested gorge, a stepped descent, a river and bridge, a waterfall into a plunge pool, and Nali-style shrine ruins in the pine valley.

SilentPines — arrival ledge over the gorge

SilentPines — the waterfall and plunge pool

SilentPines — shrine terrace and pines

KryoArchipel — Dusk Falls

Three dusk-lit cascade terraces at 16, 8 and 0, two waterfalls into pools that sit under their falls, a ruined aqueduct you can walk over, stepping stones through the basin, and a lookout exit.

Dusk Falls — upper terrace at dusk

Dusk Falls — the cascade and aqueduct

Dusk Falls — basin and stepping stones

Campaign

The Sefirot arc: fourteen connected worlds on one portal chain, with objectives, a campaign save and a campaign Host/Join pane. The eleven below were placeholder rooms until b111; each now has a design intent, a pacing arc and a landmark it is built around — the full brief for every one is in Wiki/World-Design-Pass.md.

Sektor 02 — Megacity Grid

A crossroads district and a relay plaza beyond the gate. The tower is visible over the wall from the spawn; the west stair leads to a ring deck, then the tower top where the exit is.

Megacity Grid — the south avenue and the rail deck

Megacity Grid — through the north gate to the relay tower

Sektor 03 — Aegis Base Alpha

A compound, a motor pool and a containment annex. The hangar's portal cradle is empty — the machine was moved north, and the way off the base is through it.

Aegis Base Alpha — the yard and the hangar doors

Aegis Base Alpha — the containment annex and the portal rig

AlShaddai Metropolis

A fortified desert sanctuary with an arcade, a dry well turned oasis, and a wall walk over the bazaar. The caravan gate is the exit.

AlShaddai — the gate, the paved processional and the well

AlShaddai — the oasis basin and its kerbed rim

Chasm of Forgotten Memories

Two rims, three routes: the bridge, an upper crossing, and the canyon floor with its seep and the stair back up to the shrine.

Chasm — the bridge and the shrine obelisks

Chasm — the canyon seep under the bridge

Refinery Complex 02B

A tank farm, a pipe hall with a burning furnace, catwalks over the floor, and a coolant sump in the yard. The control room is the exit.

Refinery — the yard, the tanks and the pipe hall

Refinery — the coolant sump

Digital Purgatory

A grid deck under a monolith forest, a raised core disc with light bridges, and four platforms that each hold something you want.

Digital Purgatory — the monolith forest and the core

Digital Purgatory — the core disc and its bridges

Phantom Hubs

An interchange with no timetable: platforms, an empty track trench, a concourse mezzanine and the departure board that still updates.

Phantom Hubs — the concourse and the departure board

Phantom Hubs — the platforms and the track trench

Soul Eater Vaults

A nave with six side vaults and a lit soul well at its centre; the sealed door at the far end is the way on.

Soul Eater Vaults — the antechamber and the nave door

Soul Eater Vaults — the nave and the soul well

Citadel Astral Mind

An island deck that broke free of its ground, four satellites on 4-wide bridges, and a shattered plain twenty units below with a stair back up.

Citadel Astral Mind — the island deck and the spire

Citadel Astral Mind — the bridges and the shattered plain

Esoteric Altar Chambers

The last room of the arc: an antechamber, a symmetrical rite hall with two chapels, and a sanctum whose roof breaks over the altar.

Esoteric Altar Chambers — the antechamber and the lit door

Esoteric Altar Chambers — the rite hall

Near Death Threshold

One bridge over a mirror field, standing stones either side, and a far gate. Drop to the field and the reversed bridge takes you the long way round.

Near Death Threshold — the bridge and the far gate

Near Death Threshold — the mirror field from the bridge


Features

  • A 14-world campaign arc (b101, rebuilt in b111) — one portal chain across five Sefirot sectors with objectives, a campaign save and a campaign Host/Join pane. Eleven of those worlds were placeholder rooms until b111 and are now authored levels with their own tileset, skyzone, patrol graph and encounter design; Sektor_02 and Sektor_03 are two-district maps with two routes each. The design brief for every level, plus the two audits that verify reachability and the portal chain, live in Wiki/World-Design-Pass.md.
  • Two outdoor campaign maps (b101) — Sektor_01_SilentPines (forested gorge: cliff-top arrival, stepped descent, river and bridge, waterfall, shrine ruins) and KryoArchipel_Severny / Dusk Falls (three dusk cascade terraces, ruined aqueduct, stepping stones), plus Aethelgard_Ruins promoted from the tech demo into a playable mission world.
  • Sky and water rendering (b101) — the sky samples its vertical gradient from world elevation instead of the quad texcoord, so the six skybox faces agree at every corner (corner steps fell from 33–40 colour levels to 1–5); deterministic generators produce the pool, waterfall-streak and foam textures, and every cascade gets an impact band, a faster churn wall and shore foam.
  • Dedicated server — UDP multiplayer, HTTP map API and /status, LAN discovery (UDP 27100) plus internet discovery via AngelMaster heartbeats; runs headless on Linux or Windows.
  • CSG worlds — OZONE primitive brush format (add/sub/intersect, box/cyl/sph/pyr/pln), per-brush texScale*/texOffset*/texPath and name= zone labels.
  • LightningScript entities — data-driven .ozls definitions for items, pickups, weapons, NPCs, and scripted sky/zone triggers (on_enter, on_tick, on_collect, …) with actions like heal, damage, msg, consume, playerstat, spawn_pickup, spawn_pawn.
  • Data-driven pawn system — NPC defs in GameData/Pawn/PawnDefs/*.cfg with an IDLE/PATROL/CHASE/RETURN/DEAD state machine.
  • Weapons & combat — ranged (projectiles, ammo/reload/magazine) and melee (reach, on_swing/on_hit) defined as .ozls entities.
  • AngelEd level editor — native Win32 panels + raylib viewport, CSG brush ops, OZONE export, Lit/Unlit/Wire view modes.
  • Packaged assets — OzPack.exe bundles models/scripts/textures/sounds/ worlds into .ozpak/.oztex/.ozsnd/.ozmux/.ozone packages in System/Data/.
  • GameUI object-bar HUD (b82) — SlotBar renders a data-driven atlas + slots with click-to-select; shared between the in-world hotbar and the inventory overlay.
  • AngelPlayer behaviours (b78–b80) — GameUi, InventoryBehaviour, WeaponBehaviour, PlayerController modules; sprint/crouch/stance replicated to the server.
  • Per-zone physics (b80) — gravity, jump, terminal, water_*, ladder_speed, fly_mult overrides via ZoneEnvOverrides.
  • Unified audio (b57/b82) — SoundManager facade for every sound/music call; DspReverb Schroeder reverb on the master mix.
  • Server worlds & saves (b59) — seeds NPCs/pickups from World.ozone; V2 world saves with 60s autosave; HTTP /map API; admin list/say/kick
    • HTTP Bearer auth.
  • HTTPS master uplink (b59/b70) — WinHTTP/Schannel (Windows) + curl (POSIX), no vendored crypto; default master https://angels95.tribewarez.com/master; LAN + Internet browser.
  • Editor undo/redo (b60–b81) — full-document history (Ctrl+Z/Y/Shift+Z), OZONE save/playtest, Script Manager, def-aligned Entity Properties, world texture import, viewport skybox.
  • Vertex-keyframe animation (b74) — .ozanim morph clips, in-editor animation tool, Convert to Animated, vertex deform + undo/redo.
  • New OZONE entities (b74) — Mesh.Static/Mesh.Skeletal, ParticleEmitter, PathNode, WindZone end-to-end (OZONE → loader → runtime → editor → export) with wind-sway shader.
  • Weapons & view-models (b54+) — six shipped weapons; FBX→GLB pipeline; per-weapon first-person view-model with Idle/Fire/Reload clips + procedural recoil.
  • Screenshot mode (b82) — --shot, --shot-delay, --shot-res, --shot-cam, --shot-hud headless captures.
  • Deep-link join (b60/b71) — angels95://join/<ip>:<port> OS protocol handler (HKCU / .desktop) with JoinUri validation.
  • Pack-on-import (b82) — editor imports pack straight into imported_models.ozpak / imported_textures.oztex (free-placement textures, not tileset).

Quick Links

Topic Page
Quick developer reference AGENTS.md
Gameplay, controls, HUD, mechanics Core Game
Architecture, source tree, key classes Engine Overview
AngelEd editor panels and workflow Editor Usage
LightningScript scripting reference LightningScript
OZONE world format World Format
Build instructions, prerequisites, CI Building
Gap analysis and priorities Engine Roadmap
Master server protocol, HTTPS uplink, browser Master Server

Client Controls

Key Action
WASD Movement (first-person)
Mouse Look
Left Click Fire weapon (slot 1)
1–8 Select hotbar slot
Mouse Wheel / Arrow Keys Cycle slots
E Collect nearby pickup
Tab Toggle inventory overlay
Escape Pause menu (Resume / Settings / Main Menu / Quit)
F11 Toggle fullscreen

Running

Server

The dedicated server has no raylib dependency:

./AngelServ --port 27015 --http-port 8080 --dir GameData
Flag Default Description
--port 27015 UDP game server port
--http-port 8080 HTTP map API (GET /map?list, GET /map?name=X) and /status
--dir GameData Path to game data directory
--server-name Angels95 Server Display name announced to masters
--master – Master UDP heartbeat target host[:port], repeatable
--master-http – Master HTTP(S) heartbeat URL, repeatable (TLS via WinHTTP/curl)
--public-ip – Public IP to announce when behind NAT
--bind all Interface to bind — IPv4, hostname, or 0.0.0.0 on a VPS
--auth-token – HTTP Bearer gate (env OZ_AUTH_TOKEN)
--admin-token – Enables COMMAND list/say/kick (env OZ_ADMIN_TOKEN)

LAN discovery on UDP 27100. Worlds are scanned from GameData/Worlds/.

Master server

AngelMaster maintains the public server list for internet browsing:

./AngelMaster --port 27900 --http-port 27950

It accepts UDP heartbeats and POST /api/heartbeat, and serves GET /api/servers?gamename=angels95 (JSON, CORS-enabled). Entries expire after 90 s. Point game servers at it with --master host:27900 and/or --master-http http://host:27950; clients add it to [MasterServers] in System/Angels95.ini and browse via Multiplayer → Join → Source: Internet. See Wiki/Master-Server.md for the full protocol.

Deployment

Tagging a build (b*) deploys AngelServ (and optionally the in-repo AngelMaster) to a VPS over SSH + systemd, after the Linux CI job (tests, worldchecks, GLIBC gate) passes. CI ships the binaries, the systemd units and a self-contained GameData/ tree; the host's System/OzServer.ini and GameData/Saves/ are preserved, and the previous binaries stay beside the new ones for a one-step rollback. The in-repo master is opt-in (DEPLOY_MASTER=true) and listens on 27910/27960 so it can coexist with the hosted listing on 27900/27950. Setup (secrets, DEPLOY_PATH, sudoers, firewall, rollback) is documented in Wiki/Building.md.

Client

Launch the client from the repo root (it expects repo-relative asset paths) or from a System/ release folder:

./Angels95                # show home screen / load default world
./Angels95 --world Dust_Ravine
./Angels95 --world-dir GameData/Worlds

Note: System/Angels95.ini is read at runtime by the client (settings are grouped under [AngelTech.Window], [AngelTech.Render], [AngelTech.Audio], [AngelTech.Gameplay], [AngelTech.Input], [AngelTech.HUD] and [AngelTech.Debug]; bindings live in [Keybinds] and master URLs in [MasterServers]). Rebuilding does not overwrite it — the build scripts only write a template when the file is missing; build.cmd resetconfig / -ResetConfig (either PowerShell script) restores the defaults. System/OzServer.ini is a template written by the build scripts, and AngelServ also reads it at runtime ([Server]/[Auth]/ [MasterServers]) — CLI flags and env (OZ_AUTH_TOKEN, OZ_ADMIN_TOKEN) override it.


Building

Linux / macOS

raylib 5.5 must be installed system-wide (/usr/local/lib/libraylib.a — build.sh installs it from source). Then:

make OTENGINE       # client -> Angels95
make AngelServ      # server, no raylib
make AngelMaster    # master server, no raylib
make ozpack         # asset packer
make -j$(nproc)     # all four

To produce the self-contained Linux release bundle (binaries + packaged game data in System/Data, as a release/System-<tag>-linux-x86_64.tar.gz):

./build-linux-bundle.sh <tag>   # runs build-data.sh, assembles System/, tars it

build-data.sh is the POSIX mirror of the Windows build-data.ps1 and packages GameData/ into System/Data/*.oz*.

Windows

  • w64devkit: .\build-native-win.ps1 (requires C:\raylib\w64devkit).
  • MSYS2 / MINGW64: .\build.ps1 (auto-builds raylib 5.5 if missing).

Both assemble a playable System/ folder. build-data.ps1 drives OzPack to create .oz* packages from GameData/.

Targets

Target Build cmd Depends on
Angels95 client make OTENGINE raylib 5.5
AngelServ server make AngelServ none (standalone sockets)
AngelMaster master make AngelMaster none (standalone sockets + threads)
AngelEd editor make -C AngelEd raylib + Win32 (Windows only)
OzPack packer make ozpack none

Tests

make test   # builds + runs every suite, then FAILS if any suite failed

Standalone tests (no framework) land in the repo root as executables. 26 suites: parser, context, registry, entity_manager, pawn_system, ozone_parser, join_uri, master, network, game_state, ozanim, ozls_writer, autoconvex, csg, brushmesh, surface, gametype, editorbus, assetscope, events, game, gizmomath, keybinds, menu, clientsettings, material. Single suites: make test_parser, etc.

make test also runs worldcheck over every shipped world (including --asset-refs) and tools/check_editor_objects.sh, so a broken map or a compiled-but-never-linked editor object fails the build rather than shipping.


Documentation & Repository Structure

  • Source/ — client core, renderer, network, server, master server (Source/Master/), script, pawn, physics, package, audio, video (plmpeg).
  • AngelEd/ — Win32 level editor.
  • setup/ — NSIS installer submodule (builds Angels95-Setup-<tag>.exe).
  • GameData/ — worlds, pawn defs, items, guns, textures, sounds.
  • tests/ — standalone test executables.
  • Wiki/ — full engine documentation (see Quick Links above).

Changelog

b111 — 2026-10-26

  • The eleven campaign worlds are real levels. The placeholders were a floor, four 2-unit walls and five NPCs; they now carry a design intent, a pacing arc, a local tileset, a skyzone def, a patrol graph, cover and verticality, and Sektor_02 / Sektor_03 are two-district maps with two routes each. Wiki/World-Design-Pass.md holds the standard and the per-level intent.
  • Two audits, eight progression bugs fixed. A reachability pass over the collision geometry and a cross-world connection pass found a gate with no floor (Sektor_02 was unfinishable), a sealed sanctum that closed the campaign's last room, two portal arrivals inside rock, an unreachable mezzanine, entities authored inside solids, and pickups on cover taller than the jump. Dessert Dreams and Aethelgard Ruins had the same class of bug in three and two places.
  • Presentation: water where it belongs (AlShaddai oasis, Refinery coolant sump, Chasm seep) with real zone water physics; a shared prop set in GameData/Environment/Props with one flags=16 box per solid prop; wall trim, paving, eye-height clutter and a painted horizon on the two showcase maps.
  • The glow halo no longer adds the face twice (SetHaloPass), which was clipping every textured glow surface to white; BuildFaceMeshes no longer zeroes UVs. One glow bug remains open on the local raylib 6.0 build — see the engine item in Wiki/World-Design-Pass.md.
  • Pistol and rifle pickup icons regenerated: both silhouettes were a white gun on a white background, i.e. a white billboard in every map.

b101 — 2026-10-21

  • Two outdoor campaign maps (Sektor_01_SilentPines, KryoArchipel_Severny / Dusk Falls) and Aethelgard_Ruins promoted to a full mission world; sky sampled by world elevation (corner seams 33–40 levels → 1–5, cap band 50 → 1); generated pool / waterfall-streak / foam textures with impact foam at every cascade; terrace relief, ground decals and debris.

b83–b100 — release log

  • b100 — Linux runner pinned to ubuntu-24.04 + GLIBC ≤ 2.39 gate (b99 required GLIBC_2.43 and crashed every container).
  • b99 — b98 completed, including the Linux miniz feature-test fix.
  • b98 — master listing fix, build-id versioning, TDM friendly fire, slot/bind fixes, hierarchy committed.
  • b97 — responsive title menu, server browser, character select, --world.
  • b96 — editor surface/transform fixes, brush sizing, MP heartbeat, build exit code.
  • b95 — client fails fast when AngelServ.exe is missing (start /B hangs cmd).
  • b94 — real surface decals, item drop + hotbar reorder, overflow stash, sprint bob damp, gore, hierarchy scaffold.
  • b93 — EngineTest's Egyptian desert path, plus three renderer fixes the path exposed.
  • b92 — GameData restructured by role, packaged install completed, shot crash / 22 buried lights / 57 missing assets fixed.
  • b91 — maintenance release.
  • b90 — editor reaches its designed layer tree (Core/Subsystems/Resources/UI); brush-selection index-space fix (could delete the wrong brush).
  • b89 — editor event bus + Core/UI/Subsystems split; exporter surface-flag data loss fixed.
  • b88 — remote players visible, pickups reconcile, editor property panels consolidated.
  • b87 — GameTypeInfo ruleset: scoring, teams, win conditions, networking, scoreboard.
  • b86 — AutoConvex collision, :light defs, CSG no-collision warning.
  • b85 — .ozls sound stats, writable .ozls editor.
  • b84 — World_endless_snow, tools/worldcheck, editor pickup/equip refactor.
  • b83 — World_endless_snow snowbound industrial complex (radar sectors, refinery, power plant, rail yard).

b82 — 2026-10-01

  • GameUI object-bar HUD (SlotBar) — data-driven atlas + slot_rects, click-to-select, shared between in-world hotbar and inventory overlay; editor asset-scope tree + pack-on-import; SoundManager/ZoneManager extraction; --shot screenshot mode; new pawn/player assets.

b81 — 2026-09-30

  • Editor full-document undo/redo (OZONE-snapshot history) + world texture import; tileset-aware OzoneLoader::LoadString; CitadelRuins south corridor + Skaarj Predator model.

b80 — 2026-09-30

  • AngelPlayer behaviour modules (GameUi, InventoryBehaviour, WeaponBehaviour, PlayerController) + PlayerPhysics; per-zone physics overrides via ZoneEnvOverrides; native UI.

b79 — 2026-09-30

  • Client lighting fixes (headlight wash, editor light export), pistol pickup crash, inverted controls; equipment wiring + skill respec + stance replication.

b78 — 2026-09-30

  • Player model, movement_speed + sprint/crouch, ethereal skill tree, equipment wiring, multiplayer stance.

b77 — 2026-09-30

  • Source tree reorganized (World/, Pawn/AngelPlayer/, Renderer/Mesh/, Audio/); legacy WDL format dropped.

b76 — 2026-09-30

  • Model Browser preview fixed; Import/Export mesh buttons restored.

b75 — 2026-09-30

  • raylib 5.5 CI build fix; editor list de-dup, resizable panels, button icons.

b74 — 2026-09-30

  • oz::Mesh taxonomy (static/skeletal + vertex-keyframe .ozanim animation); new OZONE entities ParticleEmitter, PathNode, WindZone end-to-end; in-editor animation authoring tool.

b73 — 2026-09-28

  • Network NPC sync fix — server NPCs keyed by (world, npc, partition); no more unbounded pawn spawning after a map switch.

b72 — 2026-09-28

  • Joining a server now loads its map (menu GetSelectedWorld + server active_world JSON fixes); client relocates cwd to the install root.

b71 — 2026-09-28

  • Join-IP textbox corruption fixed; packaged .dds/image/audio decode from memory (LoadImageFromMemory/LoadWaveFromMemory).

b70 — 2026-09-28

  • Live HTTPS master uplink — WinHTTP/Schannel (Windows) + curl (POSIX), no vendored crypto; default master https://angels95.tribewarez.com/master; working Internet server browser.

b69 — 2026-09-28

  • Per-binary release assets on GitHub (Linux + Windows); release notes document standalone vs zip-required binaries.

b68 — 2026-09-28

  • Saved levelinfo skybox renders in client + editor; level skybox beats zone texture (explicit set_skybox still overrides).

b67 — 2026-09-28

  • Skybox actually loads (lazy skyboxTex); per-world .ozls skybox fallback; Sky toolbar toggle restored.

b66 — 2026-09-28

  • Editor skybox selection priority fixed (levelinfo > Models/Skybox.png).

b65 — 2026-09-28

  • Linux server build fixed; --bind on AngelServ/AngelMaster for VPS hosting; anti-spoof publicip trust; System/angels95-serv.service units.

b64 — 2026-09-28

  • Editor viewport skybox cube + Sky toolbar toggle.

b63 — 2026-09-28

  • Skybox packaging (.dds from packages via System/Cache); texture manager lists the .dds sky library.

b62 — 2026-09-28

  • Zone Properties tabs visible again (Particles/Portals wired); Fog skybox Browse/Use Active Tex/Apply Skybox.

b61 — 2026-09-28

  • OZONE texture persistence + editor load idempotence; AngelMaster daemon + InternetBrowser + master announce; Master wiki/test/CI.

b60 — 2026-09-28

  • Editor OZONE save/playtest fixed (compiles before launch); Script Manager; def-aligned Entity Properties; angels95:// deep-link + JoinUri.

b59 — 2026-09-27

  • LightningScript VM made real (flag vars, RHS arithmetic, brace conditions, toggle_flag/jump); pawn FSM hooks live; server world seeding + V2 saves + admin/auth.

b58 — 2026-09-26

  • Multiplayer wiring: scene/ammo sync, weapon grants, typed network NPCs; NPC death/respawn; pickup respawn; CSG op export; portal traversal; editor tool modes.

b57 — 2026-09-26

  • Wired dead systems: reverb DSP on master mix, pawn aggro screams, looping title video, LAN browser + join/host ports, OzPackage zlib compression.

b56 and earlier — historical record

  • b56 — 2026-09-24 — Tier 0 network security hardenings: world-list clamp, bounded reads, server-authoritative PLAYER_HURT/PLAYER_KILL, ammo clamps, teleport rejection, deferred auth.
  • b55 — 2026-09-23 — LightningScript entity actions (msg/heal/damage/playerstat/consume/spawn_pickup); Dust_Ravine content; AngelEd brush ops; CombatFX; CI overhaul.
  • b54 — 2026-08-21 — OZONE terrain render pipeline, sky zone isolation, script action boundaries.
  • b53 — 2026-08-11 — New map Dust_Ravine (desert fortress); 2x wall texture tiling; texScale* tokens.
  • b52 — 2026-08-11 — Fix: EngineBillboard model-cache (extreme low FPS).
  • b51 — 2026-07-30 — Crash fixes, server security, multiplayer UI, editor fixes, refactoring, tests.

License

MIT — Copyright (c) 2026 TribeWarez.

See also CODE_OF_CONDUCT.md, CONTRIBUTING.md, and SECURITY.md.

Related repositories

Repository What it is
TribeWarez/Angels-95 This repository — the game, the AngelTech engine, the AngelEd editor, AngelServ and AngelMaster.
TribeWarez/angels95-master-server The hosted master server: heartbeat intake and the public server list behind angels95.tribewarez.com. The in-repo AngelMaster is the same protocol; the hosted deployment lives there.
paganswrath/OmegaTech The engine Angels95 was originally built on top of.
paganswrath/OTEditor The original OmegaTech level editor.

Acknowledgments

Agent skills used for content and effects work

The campaign-map design pass and the particle/bloom work were done with two published agent skills. Neither is linked into the build — they are reference instructions (plus a validation helper) — but they shaped real decisions, so they are credited here and pinned so a fresh checkout reproduces the same guidance.

Skill Author How it is used
level-designer coreymaypray (Maycrest Group) Spatial intent, pacing arcs, encounter and readability standards. It is the structure behind Wiki/World-Design-Pass.md and the campaign levels. Installed per machine under ~/.opencode/skills/, not vendored here.
game-vfx akillness Particle budgets, effect composition and readability for the emitter/bloom work. Vendored under .agents/skills/game-vfx/ and pinned in skills-lock.json.

Both were installed with skillfish:

npx skillfish add coreymaypray/sloth-skill-tree level-designer
npx skillfish add akillness/jeo-skills game-vfx

Each skill remains under its own author's terms — check the linked repository for its license before reusing it outside this project.


Origins

Angels95 began as a fork of the OmegaTech Engine, and would not exist without the original source released by paganswrath:

  • OmegaTech — the engine this project was built on top of. The engine in this repository is now developed under the name AngelTech.
  • OTEditor — the OmegaTech editor that AngelEd descends from.

If you are interested in where this codebase came from, start there. Thank you.

About

Fast Paced, etheral and reincarnative shooting Action straight outa 1995

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages