Skip to content
This repository was archived by the owner on Jun 19, 2026. It is now read-only.

FlashWoWie/FlashWoW

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

FlashWoW

πŸ—„οΈ Archived / shelved β€” June 2026

This project is parked, as a read-only reference. The core ambition β€” a world that feels genuinely alive under local LLM-driven bots β€” is bottlenecked by model capability, not by the server tech. Rather than keep engineering around that gap, FlashWoW is shelved until local models are strong enough to do the "alive world" justice (revisiting ~2027).

What's here works for what it is β€” an automation/reference layer on top of AzerothCore β€” and is simply no longer under active development. Fork freely and steal the good parts.

A living, bot-populated, AI-driven World of Warcraft 3.3.5a private server β€” for one person.

FlashWoW is the project/automation layer that turns a stock AzerothCore + mod-playerbots + NpcBots stack into a world that feels lived-in when you're the only real player: bots that chat with a local LLM, a self-healing Python supervisor that keeps the world up, a headless dungeon-clear certification harness, and "persona/realism" systems that give the bot population names, guilds, gear progressions, and a day/night rhythm. It is a solo-built hobby project, published anonymously, shared so other AzerothCore tinkerers can run it, read it, or steal the good parts.

This is a reference project, not a turnkey server. It was built fast and tuned to one machine. Read the Status / caveats section before you invest a weekend in it.


Demo

A 15–30s screen capture of the living world goes here β€” bots chatting, the world filling in around you, or a headless dungeon clear. This is the single best way to show what FlashWoW actually feels like.

Record with ShareX or ScreenToGif, save it as docs/demo.gif, then replace this block with: ![FlashWoW demo](docs/demo.gif)


What's in this repo (and what's NOT)

This repository is the PROJECT / automation layer only:

In this repo Not in this repo (you must supply it)
Server/configs/ β€” worldserver.conf, authserver.conf, and ~90 module .conf files, tuned The AzerothCore C++ core (lives in its own gitignored Source/ repo you build yourself)
Server/matrix/ β€” the "matrix" Python automation system (~60 top-level modules + sub-packages) The compiled worldserver.exe / authserver.exe and .dlls
Server/lua_scripts/ β€” Eluna Lua bridges (bot chatter, whispers, player events, transmog) mod-playerbots, the NpcBots fork, and the LLM-chat modules (built into the core)
Server/database/ config (my.ini) and Server/matrix/sql/ schema The extracted 3.3.5a client data β€” maps, vmaps, mmaps, DBC, and the WoW client itself
Tools/, Play-FlashWoW.ps1, Stop-FlashWoW.ps1 β€” launcher + ops scripts The MySQL databases (auth/characters/world/playerbots), which you import/build locally

Why the rest can't be included: the AzerothCore core, the bot modules, and especially the WoW client data are copyrighted and/or live in their own upstream repos. Redistributing them here would be both a license violation and (for client data) Blizzard IP. FlashWoW is the glue and the brains that sit on top β€” nothing more.

If you don't already have a working AzerothCore + playerbots server, start there first, then come back.


Features

Everything below is real code in this repo, not aspiration. Highlights:

LLM-driven "alive" bots

  • A local Ollama gateway (matrix/ollama_gateway.py, listens on :11500) proxies all bot/LLM traffic to Ollama with an in-flight concurrency cap, model-routing, and a qwen3 "no-think" fix.
  • Multi-provider: defaults to local Ollama models (qwen3:4b-instruct, llama3.2:3b), with optional routing to cloud "warm voice" models (Gemini, and Claude/OpenAI-compatible APIs) for high-visibility replies via matrix/gemini_backend.py. Cloud is optional; the world degrades gracefully to local-only and never blocks on the LLM.
  • "Pythe" (matrix/Pythe/) β€” an in-world AI butler/host persona with its own memory, intent classification, sentiment, lore canon, and whisper/yell channels.
  • Ambient bot chatter, trade-channel banter, and contextual emotes generated per-persona (trade_chatter.py, rdf_chatter.py, contextual_emotes.py) and surfaced in-game through crash-safe Lua outbox bridges (lua_scripts/bot_chatter.lua), deliberately routed around the known httplib-crash class in the C++ chat modules.

Self-healing supervisor ("matrix")

  • matrix/supervisor.py launches each subsystem as its own Python process so one crash can't take the others down, with per-component logs, scheduled restarts, health probes (:9876), and SOAP-storm guardrails learned the hard way.
  • A live campaign dashboard (campaign_dashboard.py) and telemetry reporting (report_telemetry.py).
  • Talks to the running world over SOAP (matrix/_soap.py) and MySQL (matrix/_db.py), with an in-flight SOAP semaphore to avoid the gSOAP worker-thread leak under load.

Headless dungeon-clear certification

  • dungeon_clear_orchestrator.py forms 5-bot RDF groups and drives them through a dungeon (entrance β†’ bosses β†’ done) with no human player, confirming kills via creature_respawn DB rows.
  • parallel_rdf_daemon.py β€” an elastic, load-balanced harness aiming at coverage across (race, class, role) permutations for dungeons / raids / open-world, scaling concurrency up/down on world-thread health so it doesn't melt the host.

Persona / realism (the "hand-lived world" layer)

  • wzpersona_* modules build a believable population: generated names, guilds, race/class demographics, gear progressions, mail, achievements, and a tiered visibility model (wzpersona_orchestrator.py).
  • who_publisher.py rotates synthetic personas through the /who list on a diurnal curve Γ— timezone Γ— weekend rhythm, so the realm feels populated at the right times in the right (cold) zones.
  • imperfection_glue.py and the realism_* patches add the small inconsistencies that make a roster look human rather than machine-generated.

Proximity-first population

  • zone_concentrator.py / zone_population_keeper.py rubber-band bots toward wherever you actually are, teleporting online bots into your zone up to a per-zone density target β€” so the world feels full without paying the RAM cost of a giant always-online pool.

Curated module config

  • ~90 AzerothCore module configs are pre-tuned (Solocraft, AutoBalance, RDF expansion, AH-bot, transmog, guildhouse, mythic+, and the LLM-chat modules), with inline notes on what's enabled, disabled, and why.

Requirements

This is advanced / bespoke. You'll need to be comfortable building AzerothCore and editing configs.

  • A built AzerothCore with mod-playerbots and an NpcBots fork compiled in (3.3.5a / WotLK).
    • The LLM-chat behavior expects something in the mod-ollama-chat / mod-llm-chatter family (see Attribution); the configs for these live in Server/configs/modules/.
  • MySQL 8.4 (config assumes acore / acore, host 127.0.0.1).
  • A legitimate WoW 3.3.5a client plus extracted maps / vmaps / mmaps / DBC (not provided).
  • Python 3.11 for the matrix system.
  • Ollama (optional but recommended) for local LLM bot chat β€” defaults to 127.0.0.1:11434.
  • Windows is the developed-on platform (PowerShell launchers); the Python and configs are portable in principle, the .ps1 scripts are not.
  • Practical hardware: built and tuned on a 32 GB / 6-core desktop. The bot pool is intentionally proximity-first β€” a full always-online pool was measured around ~18 GB and is retired by design.

Setup (high level)

There is no one-click installer for a fresh machine β€” the launcher assumes the full stack already exists at hardcoded paths. Treat this as a recipe to adapt:

  1. Build the core. Get AzerothCore + mod-playerbots + NpcBots compiling and a vanilla server running first. Extract your client data. This is the hard part and is entirely outside this repo.
  2. Drop in the configs. Copy Server/configs/*.conf and Server/configs/modules/*.conf over your built server's configs (review them β€” they reflect one person's taste and module set). Apply the SQL in Server/matrix/sql/ for the persona/realism schema.
  3. Fix the paths. Several files hardcode C:/FlashWoW/... and a Windows Python path. You must change these to your install:
    • Play-FlashWoW.ps1 / Stop-FlashWoW.ps1 β€” $Root, $MysqlBin, $Python.
    • Server/matrix/_env.py β€” data/log roots and DB/SOAP/LLM defaults (most are env-overridable; see the WZ_* and PYTHE_* variables).
  4. Point the LLM. The matrix gateway defaults to local Ollama at 127.0.0.1:11434 (override with WZ_OLLAMA_HOST / WZ_OLLAMA_PORT, fallback host included). Pull the models you want (qwen3:4b-instruct, llama3.2:3b, nomic-embed-text). Cloud providers are opt-in via API-key env vars and are never required.
  5. Bring it up. Play-FlashWoW.ps1 starts the stack in order β€” MySQL β†’ authserver β†’ worldserver (gated behind WZ_WS_LAUNCH_OK=1) β†’ Ollama (best-effort) β†’ matrix supervisor β†’ client β€” and prints a health table. -StatusOnly, -NoClient, and -NoMatrix flags exist. Stop-FlashWoW.ps1 shuts it down gracefully over SOAP.

Default local ports: MySQL 3306, auth 3724, world 8085, SOAP 7878, Ollama 11434, LLM gateway 11500, matrix health 9876.


Status / caveats

Honest disclaimers β€” please read them:

  • Built rapidly, tuned to one machine. Paths, RAM budgets, thread counts, and model choices reflect a single solo developer's hardware and play style. Expect to change things.
  • Not all subsystems are equally proven. Some are run-verified (world boot, bots acting, proximity spawning, the RDF teleport loop); others (fully autonomous dungeon clearing, raid formation, long chat soaks) have known gaps documented in docs/FRONTIER.md. That file is the honest frontier ledger β€” read it.
  • It assumes an existing, working stack. Nothing here bootstraps AzerothCore for you.
  • Pseudonymous & solo. Maintained by "the FlashWoW project" maintainer as a hobby; there is no support contract, roadmap promise, or guarantee of updates. Use it as a starting point and reference, not a product.
  • Lua bridges and several Python modules carry inline notes referencing internal fix IDs and dates β€” those are kept on purpose as design history, not noise to clean up.

Attribution & License

FlashWoW stands entirely on the shoulders of the AzerothCore ecosystem. It is not affiliated with or endorsed by Blizzard Entertainment, AzerothCore, or any module author.

Built on / inspired by:

  • AzerothCore β€” the WotLK 3.3.5a server core (AGPL-3.0).
  • mod-playerbots β€” the playerbot framework.
  • NpcBots (Trickerer's NPCBots and forks thereof) β€” NPC-driven bots.
  • mod-ollama-chat / mod-llm-chatter and similar β€” the inspiration for the in-world LLM bot-chat layer that FlashWoW re-implements around in Python for crash-safety.

This repo's own contributions (the matrix Python system, Lua bridges, configs, and launchers) are released under the terms described in LICENSE. Third-party components, their licenses, and required notices are listed in NOTICE. Where this project links against or extends AGPL-licensed code, those obligations apply β€” consult LICENSE / NOTICE before redistributing.

World of Warcraft and related assets are trademarks of Blizzard Entertainment. No game client, game data, or Blizzard IP is included in this repository, and none may be obtained through it.

About

An AI-driven, bot-populated WoW 3.3.5a private-server layer for AzerothCore + playerbots + NpcBots: LLM bot chat, a self-healing supervisor, headless dungeon-clear certification, and persona/realism systems that make a solo realm feel alive.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors