How to Help

HeroWO is in the early beta stage. As such, it has innumerous bugs.

Good news: most issues barring basic gameplay can be fixed within minutes.
Bad news: someone’s got to report them.

So, clearly articulating 🇬🇧 Problems is one thing. But for the project to truly develop, people willing to contribute their time and effort are highly wanted!

Many tasks need programming, many do not. Below is a list for starters.

Share your contributions with me by PM, create a topic in 🇬🇧 General or send a pull request to GitHub.

Fill in missing data

HeroWO has a proper audio subsystem but it lacks names of many environmental SFX. You can find this and similar gaps by searching for XXX within databank-*.php files or by browsing noXXXep.

You don’t have to be a programmer to understand what’s going on in these files. Here we see a missing sound played when standing near an Air Elementals’ dwelling on the adventure map:

Check conformance with the original game

There are many formulae and nuances in mechanics that currently differ from the original Heroes III (for example, the bonus provided by the Defend combat action). Here’s a list of potential incompatibilities.

You may also want to augment HeroWO’s standalone .h3m parser and compiler and/or its textual description of the format (h3m-The-Corpus.txt).

Write documentation and samples

Thousands of lines of comments help find the way for those familiar with the engine’s basics but newcomers and non-programmers are currently left in cold-water.

We need a quick start document highlighting common tools and practices, such as notable classes (ObjectStore, Map, Context, etc.), usage of obst.php, data conversion pipeline (h3m2json.phph3m2herowo.phpdatabank*.php), nature of constants (artifactsID.json, classes.txt), etc.

We especially need an easy to follow guide for modding the game: explanation of effects, databank patches, samples thereof, custom modules, etc. For now, Introduction to Modifications is the only (scarce) source of this information. Doing this in video format would be absolutely mindblowing!

Write unit tests

Put simply, there are currently none, but the code needs lots. Also a good way to get more familiar with the engine.

Do minor programming

Certain tasks require simple programming in small isolated modules. For example, fixing the pathfinder to always choose straight route if it’s as optimal as a round-about one:

Do major programming

Major evolution requires major development, there’s no way around that. However, HeroWO is highly modular and many roadblocks touch a few KLOC at most, not the entire codebase.

The simplest task here is to rewrite the mini-map to use <canvas> rather than creating a DOM node for every tile out there. This will drastically reduce the number of nodes, consequently improving loading time, memory usage and responsiveness.

A more daring task is to rewrite the adventure map which is the second biggest DOM hog.

Finally, rewriting the combat map will ensure smooth performance but this is arguably a daunting task.

Last but not least, there’s a lot of interest in the ability to play Heroes III on mobile devices. HeroWO already has a foundation for that but somebody has to actually mark up all the UI.

Less important work

There’s of course a helluva of other tasks of all kinds, big and small:

  • replays are currently produced but there’s no way to replay them
  • the existing AI is absolutely no-brainer
  • lack of graphics preloader results in visual glitches (especially in combat)

Again, noXXXep has the complete list.

Explore modding capabilities

No other engine can offer the degree and ease of modifications permitted by HeroWO. Because it’s JavaScript, and because it’s also Sqimitive, you can tap into every code block on the fly and do everything the engine can do. No more C++, no more reverse engineering. Moreover, by changing databank, map and effect files you can achieve excellent results with no programming at all.

You can start with Introduction to Modifications. Documentation for this is scarce at present – but perhaps you can improve the situation?

Spread the word

That’s something everyone should could do. HeroWO’s got a YouTube channel, GitHub organization and Discord server that you can follow and share with your friends. Please do so to keep the project active and evolving!