Part of the HeroWO.js project - a JavaScript re-implementation of Heroes of Might and Magic III.
https://github.com/HeroWO-js/Workbench
The main thing - JavaScript game engine with client side of the multi-player (server side that amounts to about 4% of Core is proprietary).
Dependencies are included as git submodules:
- NoDash - a utility library with
_.pick()and 80+ other functions https://squizzle.me/js/nodash/ - Sqimitive - the backbone framework for everything https://squizzle.me/js/sqimitive/
- Require.js - a module system that doesn't get in the way https://requirejs.org
- PathAnimator - a teeny function converting arbitrary SVG curve to coordinates https://github.com/yairEO/pathAnimator
- Source Map - allows recreating non-minified stack traces in exception reports https://github.com/mozilla/source-map
...except for jquery.js that is bundled directly.
https://jquery.com
The, er, bank of game data - most of it coming from HoMM 3 TXT files. One way to create modifications ("mods"), and the easiest also, is by changing databank files - either prior to convertion (edit databank-*.php or supply already modded TXTs) or after it (edit *.json).
HoMM 3 map convertion is backed by h3m2json.php.
https://github.com/HeroWO-js/h3m2json
HeroWO is a work in progress and includes hundreds of small and large to-do tasks (XXX). These are embedded directly in code to make them versioned, easy to modify en masse and tightly bound to their context. noXXXep is what presents them nicely.
https://github.com/ProgerXP/noXXXep
api.php is the server side coordinator of client side JavaScript engine, providing the latter with the list of lobby games, playable maps and chat messages.
Phiws is a PHp WebSockets implementation used by api.php to communicate with HeroWO servers and clients. Unauthenticated data (list of maps and global chat messages) is distributed over Server-Sent Events (SSE). One can use api.php to start local games or connect to games on external servers.
Other files and folders facilitate smaller aspects of running the game:
custom-graphics- folder with custom graphics that wasn't taken from HoMM 3 files (i.e. isn't part of the databank) or that was transformed in some waycss-monitor.php- watches local CSS files and refreshes styles without reloading the page; indispensible when developing HeroWO UIherowo*.css- technically part of the game client codeindex.php- user's entry point; bootstraps HeroWO environment in a web browsermaps.php- provides insight into maps existing on the server and allows uploading new maps