Hacker News new | past | comments | ask | show | jobs | submit login
Open-Source Engine for Heroes of Might and Magic 3 (github.com)
170 points by WoodenKatana 19 days ago | hide | past | web | favorite | 59 comments

I highly admire projects like this. Something even as simple as a core engine rewrite is a spiritual undertaking. I do not recall if Heroes 3 was multiplayer or not, but making the game multiplayer over TCP required the engine to limit itself to the use of integers since a single floating point would butterfly effect its way into destabilizing the lockstep system used in peer to peer networking. AMD / INTEL / POWERPC systems of the day (and even today) have millions of flags to configure the FPU at compile time.

As a shameless plug, and if anyone's interested, I'm doing something similar with Age of Empires 2: https://github.com/glouw/openempires

The game does have multiplayer capabilities even over the Internet.

What's more, it still has some active players, among which I would highlight MeKick (TheKnownWorld) that regularly streams on twitch [1]. Anyway, the challenges he does vs computers (where he heavily handicaps himself in different ways) are more entertaining to me [2].

[1] https://www.twitch.tv/theknownworld/videos

[2] https://www.youtube.com/user/TheKnownWorld/featured

Heroes 3 did have multiplayer via LAN, and IIRC it had online multiplayer as well. It worked pretty well for the time; the fact that the game is turn-based probably helped in that regard.

And it has hotseat - players taking turn at one computer, that was the mode me and friends always played.

I think the number one after-school activity for me and my friends was at some point HOMM 3 (and 2).

I still fantasize that there will be an 'Empire Earth 3" - or an Empire Earth 2.1 (V2 re-released and updated for android / ps4 ) -

and or an open sourcing of a clone so that we could crowd source an EE 4 ...

I enjoyed age of empires but always liked empire earth 1 and 2 better.. never could pinpoint why exactly.

maybe a subconscious connection to some of the populace' gameplay mechanics on the Amiga - dunno.

maybe it's time for me to look at one of the EE clone things and try to make it like EE. I'ts been a long while, does AoE have magic priests that can convert enemy followers or similar? or is it just attack / kill ?

I think I have the Linux version of this game in my attic.

Steam and GOG had big sales through the end of December that had me looking at some old games like this. I thought about getting some Microprose games to spare me the trouble of copying them from 5.25" and 3.5" floppies (if they're even readable anymore), but I figured it was just as well to leave the graphics and gameplay to my rose-colored memory.

It did get me thinking about what it takes to bring classic games to a modern audience. Grim Fandango and Age of Empires have gotten updates, primarily to the assets. The negative reviews tend to focus on old-fashioned gameplay, or bugs that still haven't been fixed after umpteen years.

A project like this reminds me of the ScummVM engines, which basically provide a new platform for old assets. It's harder to get excited about this, because it's just one game.

Just to be clear, this post kinda implied to me that HoMM 3 doesn't run on modern machines. It does, and there is a patch that provides higher resolutions and some other features.

This is still cool though, but it's not required to play the game on a modern PC.

I think content-esque updates tend to be the the sweet spot on resources/ROI for games such as Age of Empires II expansions.

I can imagine codebases for older games are likely written in an older dialect of C++ (and probably in a very C style at the time, to boot) and likely haven’t had any ongoing maintenance or technical debt addressed. Most of the income from the product came from one win32 binary (plus perhaps an update) that shipped on CD years ago. The engineering/QA cost of writing or maintaining new features is going to be high, so I can imagine a publisher is going to look at the returns of an expansion to an old game and see that a conservative release is the most economic bet to make.

Open Source Game Clones


The site was born many years ago with something like 6 entries and the HoMM3 recreation from OP (VCMI) was one of those first entries, if my memory serves me correctly.

the recent revival of hmm on ios by a major editor ( can’t remember the name) was such a disappointment... They completely changed the gameplay to adapt it to the current trend of buying things on the store to progress faster...

There’s such a big opportunity for a simple port of hmm on mobile with regular gameplay and maybe a small refresh of the graphics !

Was that really HoMM? IIRC that's a HoMM-lookalike that's basically Farmville.

Sidenote, I absolutely detest the modern trend of games that push you to buy things every five minutes or watch an ad every half.

I gave my 6yro an old WiFi-only iPhone to futz around with and download a few games. She ended up with a bunch of shovelware that shows ads after every level, and the "levels" are trivial things built on top of some kind of physics engine. It is sad beyond belief.

Now I am despairing because I want to find a good mobile game, something that you can buy and play that feels like a FF6 or a Ultima or Super Mario type thing without annoying in-game purchases or wait-to-play mechanics. But it's slim pickings... it seems the industry has evolved to be codependent on those things and now that's what most of the content is like. :(

This seems like a good opportunity to point out that FF6 is available for iOS for $7:


The App Store/Play Store has quite a few games without in-app purchases or ads (which you have to buy up-front, of course, but that's only fair), but all the ones that I can think of are ports or remakes of classic games that predate smartphones.

The mobile FF remakes were notoriously bad for being just an emulated game with a very crusty UI tacked on. Has anything xhanged?

I am in exactly the same boat as you. I downloaded Head Ball 2, as 1 used to be a very entertaining game, and in 2 I spend 90 seconds in a match and two minutes watching ads, scratching scratchers and opening "free gift packs".

I ended up buying Planescape Torment for those 50 hours of engrossing story with no ads or payments. If you find any other games, please let me know.

I should create a website called "no-bullshit games", actually.

I would shop this! (and send it to others ) - especially if sending a playcard gift.

reminds me of about a year ago I was searching for ad free apps for the play store and found zero resources - I don't mind paying for something, but I want it ad free / total privacy and zero interruptions.. never did find a way to search the play store for things in this way.. it's even obscured within the play store on more details - you can get ranges of prices for in app purchases, but nothing tells me, pay X to get ad free..

So I found f-droid eventually, but I want a way to give from the play store to others - just no list of no BS games and apps..

luckily I found 'missed reminder' and 'rssDemon' long ago when it was easier to find a single-price-point, premium version available app.. now a days it's too much work trying to use the play store or the G search engine.. this noBS site sounds like heaven.

Try it (and submit some games)!:


Obviously, the UI is going to be entirely replaced (and the iOS info fetching isn't ready yet).

> I should create a website called "no-bullshit games", actually.

Please do. I actually half-seriously considered doing it myself more than once, but you have a much better track record of finishing side projects :).

I have started it, it will be at https://nobsgames.stavros.io in a day or two, I estimate.

I’m looking forward to seeing nobullshitgames.com!

It's taken :( Also, I'm trying to challenge the notion that everything needs to have a TLD, so I'm going to deploy it to https://nobsgames.stavros.io.

Apple Arcade is a pretty good fix for this; for a basic monthly fee you get access to over a hundred games with no ads or in-app purchases

How hard have you looked? There are full games like Final Fantasy Tactics, Knights of the Old Republic, Chrono Trigger, and more ported to iOS.

Don't be too surprised that free games are shovel-/ad-ware.

Grab launchbox or some other emulator for Android and look into some of the ff6 ROM hacks out there..some of them are vastly different games yet maintain the feel of the original game and are a lot of fun. The nostalgia brings back a flood of childhood memories

If you're up for a hack-n-slash dungeon crawler, try Triglav. Their monetization strategy is selling item inventory space and cosmetics.

How about giving them an old game boy or DS with a selection of games from your local used game store or ebay?

"shattered pixel dungeon" is probably the best phone game I've played.

That URL won't load for me, is it just me?

Archive.is doesn't work if you use cloudflare DNS (https://news.ycombinator.com/item?id=19828317)

A simple port of Heroes 3 is currently available on iOS (though only iPad, not iPhone)

I didn’t find it.. got the link ?

I take that back, it looks like it was pulled from the App Store a year ago: https://www.reddit.com/r/iosgaming/comments/8z6fyi/heroes_of...

That’s disappointing; sorry to get your hopes up

Heroes of Might and Magic (specifically 2 and 3) and Worms (the 2D ones like Armageddon), were the pinnacle of multiplayer entertainment for me.

Sure, there were quicker fixes, like Street Fighter etc., then later the convenience of online with Warcraft 2, StarCraft (dialing up directly to your friend's computer), but..

Having a couple friends come over and having some good natured competition, seeing their reactions in person, having to think up strategies in a way that wouldn't make it apparent what you were going to do, the shifting alliances of teaming up against whoever was winning, the impromptu bets and bargains...

That was a kind of fun that I haven't seen replicated since.

Startup Idea: A sort of alternative arcade for hotseat PC games like that.

I wish there also was an open-source engine for WarCraft 2, with modern AI, big screen resolutions support but without the drawbacks of modern RTS games like GPU power requirements (making it hard to play them on commodity hardware) and excessive graphics complexity (making map and tile design hard).


I never played WC2 but found this here: https://osgameclones.com/

Link to osgameclones shared by someone else on here. It's also shown up on HN a couple of times.

Very cool, thanks! Whoever is also going to try it - don't miss the -v XxY command line key to have a bigger view. Also don't waste time trying to make it work with BNE resources, just download the DOS CD from archive.org.

I want the same thing for the opposite reason.

I want someone to make an RTS with sprites instead of 3D models and shader-based flow simulation for path finding so I can have battles with billions of units.

Sort of like how Total Annihilation could scale but updated for modern computer architectures.

And I want sprites instead of 3D models for yet different reason - it's somehow in practice very hard to make serious game with 3D graphics. As far as I can tell, no RTS like that was ever made. 3D graphics - especially with tight polygon budget - ends up being cheesy.

Take StarCraft vs. StarCraft 2. The transition from drawn sprites to 3D models made the game lose its entire mood.

What about Warcraft 3?

Or perhaps you don't consider it an RTS? If not, then what genre would you classify it as?

Warcraft 3 was what first made me worried when I heard they're doing StarCraft 2. W3's graphics were very visibly low-poly and had this specific color palette that made the whole thing look distinctivly non-serious. It ruined the game's mood for me and my suspension of disbelief.

Warcraft 3 seems an RTS (you can do everything you could in WarCraft 2 there, WarCraft 3 has quite a number of "classic" missions) with simple RPG-ish elements (heroes, artifacts, NPCs) yet I can name what I see as a much better example of the same genre - Dawn of War / Soulstorm.

> shader-based flow simulation for path finding

Are you aware of any real world examples that implement this? I've seen a few research papers over the years, but nothing beyond a rough proof of concept. As a fellow TA fan disappointed by SupCom and every other RTS since, this sounds tempting.

As a Total Annihilation fan, what displeased you about Supreme Commander?

I adored TA, but I"m REALLY struggling to come up with anything better than Supreme Commander.

TA's ships moved like molassess. TA's planes had enormous turning radii. TA's big units were effectively useless because they took far too much resource to build.

Three things displeased me. First, one of the (many) ways in which TA was revolutionary for its time was that it largely emphasized thinking over rapid micromanagement and SC was a regression in this regard, an unnecessary concession to the RTS scene of the day. Second, how technically underwhelming it was in terms of pushing the envelope in scale, unit counts etc. compared to the gigantic leap in available performance between 1997 and 2007. Third, the unsolvable technical limitation that any game against the AI (including custom AIs) would eventually crawl to an unplayable lagfest - this is still true even on today's hardware.

Well, the primary problem was that Supreme Commander made a bet that "Teh Pretty(tm)" was worth pursuing (probably as a result of complaints about TA). SupCom absolutely murdered graphics cards of the day--and it still plays like a dog on modern integrated graphics. Consequently, unit count was always going to be limited.

I suspect that modern graphics cards could probably chew through this--but you need to build an engine that leans into the way modern graphics cards work.

Emphasis on graphical fidelity was an issue when it came out, but the long term performance nightmares are all single threaded CPU bottlenecks. The whole engine just scaled really poorly with increased unit counts and AI/pathfinding computations. For a game that's basically all about scaling that was something of a dealbreaker.

> TA's planes had enormous turning radii. TA's big units were effectively useless because they took far too much resource to build.

Can't these parameters be tweaked somehow? Experimenting with unit parameters was a lot of fun in Tiberian Sun where you could just edit a text file to get whatever you imagine. TA has to store unit parameters somewhere too, perhaps these can be edited with a hex editor.

Yes, there are unit parameters like acceleration, building speed etc. in plain text files in TA. I edited the shit out of them back then.

I am not but it seems like an intuitive solution to the problem where the path is blocked by other units so one of stragglers routes alllllllllll the way around the map and straight through the enemy base.

> the problem where the path is blocked by other units

Why this should even be a problem? It seems reasonable when a tank can't ride over another tank but as for infantry units - it always seemed bizarre a man can't travel through a cell occupied by another man.

If you want that many units I'd precompute the paths with Floyd-Warshall instead of doing anything on the GPU. Probably still need to invoke the GPU to handle billions of units in the first place, though, and you'd need several gigabytes of RAM for them. Unless the entire game is happening in summary statistics.

Aren't there copyright issues with this game? Not that I'm against developing it anyways, but - wouldn't the organizers/leads get into trouble with Ubisoft?

That's why the readme says:

> To use VCMI you need to own original data files.

And is that enough to put the new game developers in the clear? I wonder...

Nice. There is a open source engine for the original X-Com games - OpenXcom. I recently started playing a total conversion mod for it called X-Piratez. Its a total blast.

license / (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.PIXI = f()}})(function(){var define,module,exports;return (function(){function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}return e})()({1:[function(require,module,exports){ /* * Bit twiddling hacks for JavaScript. * * Author: Mikola Lysenko * * Ported from Stanford bit twiddling hack library: * http://graphics.stanford.edu/~seander/bithacks.html */

"use strict"; "use restrict";

//Number of bits in an integer var INT_BITS = 32;

//Constants exports.INT_BITS = INT_BITS; exports.INT_MAX = 0x7fffffff; exports.INT_MIN = -1<<(INT_BITS-1);

//Returns -1, 0, +1 depending on sign of x exports.sign = function(v) { return (v > 0) - (v < 0); }

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact