-
Notifications
You must be signed in to change notification settings - Fork 29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Dungeon generation of Cathedral #17
Comments
Thank you for letting me know. Level generation is one of the last things I had planned, as I can always load some of the .dun provided to test other missing functionality (doors, enemy AI, etc). What I was thinking initially was to get some nice auto generated levels as .JSON/.dun files and add them to the repo (sure, they would always be the same, but it would give a user the impression of having a full playable game engine while I work on the missing parts). This is the roadmap I have in mind (doesn't necessarily mean I will follow it):
With these, the engine is playable. Another thing I want to do is create a gamefiles folder that uses freely available game assets but is still Diablo (same quests, town folk, enemies). Was thinking of adding some of flare's game assets as a proof of concept. I'll add some labels, features to the issues section to track stuff I want to implement. |
Great to learn more about your rough roadmap! It definitely makes sense to focus on core elements first, and I think it would be a wonderful idea to make use of public game assets, such as those provided by flare, so that the engine becomes playable after a simple git clone (probably with --recursive, to download flare game assets as a subrepo). As a side note, it would be trivial to make Definitely create issues for the dedicated topics, so they may be discussed, tracked and elaborated upon. |
Now that DGEngine supports TMX maps, it would be interesting to hook the engine up to make use of the original dungeon generation algorithms of Diablo 1.
@7i and I wrote a stand-alone tool which outputs the tiles of a Cathedral map based on its dungeon level, seed and active quest.
For dungeon level 1 with seed 123, the dynamic random layout generation algorithm of Diablo 1 produces the following map.
To produce the above map, run the following commands:
Note that the TMX map is 80x80 in size.
Note: The
l1
tool has extensive tests to ensure that it implements the drlg algorithms correctly. At current, one edge case has been discovered where the output ofl1
differs from the original output of Diablo 1. Compare for instance the output of the original and the reimplementation for seed 2588. Notice, that in the original map, there exist an area that is unreachable by players. This area is not reproduced in the reimplementation (but probably should be?). Therefore, the seed changes, and subsequent randomization of floor tiles etc change in the map. The reason for this oddity is that the original drlg algorithm contained a couple of out-of-bounds errors, which we decided to fix in the rewrite. However, the intention is to make it possible to also generate these broken maps, so that the output is identical to the original. At that point, we will run the original drlg algorithm for each of the 2^32 unique seeds and compare its output with that of the rewrite. Once they are identical for all seeds, thel1
tools is considered done.Final note: The default output of the
l1
tool is tile ID numbers (sometimes referred to as squares). Given the-dpieces
flag, thel1
tool outputs dungeon piece ID numbers (sometimes referred to as pillars).Cheers!
/u & i
The text was updated successfully, but these errors were encountered: