Dungeon KeeperFX 1.0
keeperfx.net
keeperfx.net
https://www.gog.com/en/game/dungeon_keeper https://www.gog.com/en/game/dungeon_keeper_2
The only fully open source formerly commercial game I am aware of is Warzone 2100. And for a while I think they didn't have access to music or video files.
Probably my favourite game ever, we owned the original with the map and manual.
I replayed it a couple of times as the TUQM, still loved it.
I tried replaying the original X-Com, but it had serious quality of life issues (squad members not remembering gear assignments between missions, no keyboard shortcuts during missions) so was just too tedious for me.
Apparently there is a reimplementation of the game out there which fixes these things, but at this point in my life my time is too limited.
There's Xenonauts, if you want X-Com, but modern.
I still have a notebook that contains squad member names and loadouts. I used that to quickly equip soldiers for missions.
You can tell the changes by the crossed out text. When I got plasma rifles. When I got blaster bombs. When my main assault guy caught a heavy plasma hit in the face.
Good times, but I’m glad they remember the load out in the new games.
[1] https://lostgarden.home.blog/2007/04/05/free-game-graphics-t...
You would need the original or the GOG version.
I really enjoyed both games though, so I absolutely recommend playing both.
I wonder though ... they say it's now pure open source that's been "rewritten" from scratch. Hate to be a party pooper but is that really true? It took all of two minutes to find this in the code:
https://github.com/dkfans/keeperfx/blob/master/src/engine_re...
//BucketKindPolygonStandard in this function could also be BucketKindPolygonSimple or BucketKindBasicUnk10 idk all 3 pretty similar
int z;
struct BucketKindPolygonStandard *v5;
int v6;
struct BasicQ *v7;
if ( (ec1->field_8 & (uint16_t)(ec2->field_8 & ec3->field_8) & 0x1F8) == 0
&& (ec3->view_width - ec2->view_width) * (ec1->view_height - ec2->view_height)
+ (ec3->view_height - ec2->view_height) * (ec2->view_width - ec1->view_width) > 0 )
{
I dunno, this looks a lot like decompiled code. There are lots of other variables with names like v15, v16 etc in other parts of the code too. // The choice of PolygonKind can be PolygonStandard, PolygonSimple, or BasicUnk10 - they are quite similar in functionality
int intersectionResult;
struct PolygonStandard *polygonStandard;
int computationResult;
struct BasicQueue *basicQueue;
if ((edgeClipper1->clipMask & (uint16_t)(edgeClipper2->clipMask & edgeClipper3->clipMask) & 0x1F8) == 0
&& (edgeClipper3->viewWidth - edgeClipper2->viewWidth) * (edgeClipper1->viewHeight - edgeClipper2->viewHeight)
+ (edgeClipper3->viewHeight - edgeClipper2->viewHeight) * (edgeClipper2->viewWidth - edgeClipper1->viewWidth) > 0)
{
Seems it didn't really understand "BucketKind".
Neither do I to be honest.Once I asked chatgpt to make some obfuscated+minified js readable for me. It did. I was blown away by how well it chose the variable names.
I started looking at this code to find the prod bug, but I found other bugs that I wasn't expecting...
I took a closer look and realized that the code it made was almost right, but also 5% wrong.
I wouldn't have noticed the incorrectness if I wasn't debugging for several hours before and had some general idea of what the pretty printed code did and did not do.
That’d be hardly useful in a full file with colliding names but on a single function that may be useful.
But then you are doing boring work and letting the llm do the fun work, which is not the point the whole thing.
That's not better variable names; that's better-looking garbage. At least you know you don't know what "v7" is. With the post-LLM code you're having to poke through confident error.
And what if it is? At what level is using decompiled code copyright violation as opposed to just replicating an algorithm?
If it is the disassembled code, nothing will happen. There are no damages to award, so there's no reason that this would even make it into court. If it did go to court (as part of a larger case), the artifact decompiled would be proprietary. However it would be impossible to prove (and difficult to convince anyone) that the code was directly from that artifact.
https://store.steampowered.com/app/230190/War_for_the_Overwo...
goes back to lifting ARPU before the giant floating hand slaps me
Lionhead Studios was a spin-off of Bullfrog Productions that made Dungeon Keeper.
War For The Overlord is a good game, but I'll have to try DungeonKeeperFX!
[0] https://store.steampowered.com/app/230190/War_for_the_Overwo...
1) great learning experience because you get fast feedback in terms of fidelity to the original, vs. the more amorphous goal of “good game”
2) nostalgia
3) creating an open source rendition is step 1 to the free-for-all modding utopia that people really wanted in the first place
Plus nostalgia.
Programmers are overrepresented both among FOSS enthusiasts and among nostalgic old gamers, meaning there are more people able to and interested in rewriting the engine code collaboratively than there are for the other parts of game-making.
People who want to do unpaid work on the other parts of game-making can do mods instead.
Making a new game is an artistic endeavour that is hard to do without either having an hierarchy making the decisions or being a solo/small group thing, making it somewhat unfit for community FOSS. When doing a remake you have the specification more or less done, you just have to implement it and do the uncontroversial fixes and improvements.
The Steam store is utterly littered with indie games on preview, so I don't know how you can say that with a straight face.
I've always held that when I retire, I'll commit to remaking Majora's Mask or Super Mario RPG. (Nintendo recently committed to the latter, but the tone is very different.)
Old games are a means of recapturing childhood nostalgia and reliving the fleeting feelings of youth. New games don't do that at all.
I'm not even a gamer anymore. I have next to zero time or desire to play new games. But I'd happily pick up something old to feel those feelings again, and I regularly watch YouTube videos of old games. They send you somewhere.
Many people here seem to think that because one is good at programming they are necessarily bad at everything else like visual art, music, and story-telling. However I think many of such programmers would actually be in a great position to pick up one or even two such side competencies and do amazing things. Many of the old good games probably had programmers doing things outside their core competency. | Especially with the recent advent of AI, I think programmers should no longer think of themselves as narrow specialists but something like directors or conductors.
I personally play it using just a default Wine installation on Ubuntu and it runs great.
There have been a lot of technological improvements since you have been away but I am afraid JavaFX didn’t make it.
My comment was not disrespectful, you may have not liked it but that’s a very different thing. I didn’t call anyone an ass; you did. You are the one who cannot maintain a conversation without calling names.
> This isn’t the place for you
Unfortunately you don’t get to decide that.
No, it was disrespectful. There's no point in discussing this with you because you refuse you recognize when you've treated somebody else unfairly and with disrespect. I'm done here.
You've repeatedly argued in bad faith and tried to put the blame on me instead of thinking about what you wrote and how that affects other people. This is significantly worse than "namecalling", which was really just calling out your behavior.
Looks like a great project.
> Ownership of the original game is still and will always be required for copyright reasons.
Is there something more to the story?
Or do the assets need to be installed and accessible?
I mean, I don't think EA can barge in and demand you prove you bought a copy of Dungeon Keeper back in the day (or since), just because you're running KeeperFX.
I think the practical matter is mainly that KeeperFX can't redistribute the artwork and levels themselves. So, as another user said, you need to copy over the files from GOG or a CD, etc.
You don’t have a purchase/download option available to only acquire the assets, so you’ll inevitably purchase & download original assets + original executable, discard the original executable and use original assets + keeperfx executable.
Or you’ll acquire the original assets alone through nefarious means and can then just use it with the keeperfx executable.
Technically I don’t think you can be requested to provide proof of ownership, but keeperfx can definitely be taken down for distribution of assets they don’t own. So the acquisition of those assets falls on you to resolve and is outside their concern. They can only recommend you to purchase the rights to those assets from the proper rights-holders.
Generally game assets don't depend on the external environment like code does. Sure, porting is still a lot of work (which I don't think has been done for this one), but it's less work than porting an arbitrary executable.
But most importantly, not everything has to be a product with a practical benefit for the user, if the project goal is to be able to be a drop in replacement for all the code, and it does it, and the people involved are fulfilled, that is perfectly enough.
IIRC GOG runs the DOS version of Dungeon Keeper on DOSBox, because the Windows version doesn't run on modern Windows. This means users miss out on the higher quality graphics mode.
Say, maps where limited to 85x85 slabs up until now, but in KeeperFX we allow maps up to 170x170 slabs in size.
There are also improvements to the user interface that weren't a part of the original.
Same goes for many other remakes.
The big change is that the game does not use the functions from the original game to run anymore. All previous versions used a dll made from the original game as a crutch, so players would have the full experience on a partly made remake. This made the game fully playable from day 1, but it also meant we were limited in a big way in what kind of changes we could make. For example if Dungeon Keeper believed there were only 32 types of creatures, KeeperFX could not push anything related to a 33th creature type to the original DLL which meant we just had 32 creature types too. Now the number of creatures types comes from a user editable config file.
tldr: KeeperFX is there to make DK better, it does not make free.
From an engineering POV it's great that it no longer needs to call into the old executable; they may be able to drop some legacy code and change some internal types, clearing the road to more changes in the future.
Honestly, at that price it’s cheaper to just buy it again than to spend the time digging the CD spool of ancient games out of the box in my basement.