Viewing Issue Simple Details Jump to Notes ] Wiki ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0008610 [DCSS] Patches feature N/A 2014-05-29 05:12 2014-06-23 01:49
Reporter infiniplex View Status public  
Assigned To Reaver
Priority normal Resolution done  
Status resolved   Product Branch 0.15 ancient branch
Summary 0008610: New layouts types and weights
Description I have completely re-thought which branches each layout generates in and at which weights. Notable changes:
* Most layouts appear in fewer branches. Similarly, most branches now choose between fewer layouts. This should help further distinguish branches.
* City layouts no longer appear in Depths. All the vaults nearly always make them look bad.
* All layouts are specified by WEIGHT; previously some were specified by CHANCE
* Dungeon layouts are now in 3 distinct groups: all D, D:4-, and D:9-. Previously, layouts started appearing at almost any level of the Dungeon
* The layout_type_??? system has been reworked. Now all layouts have either a branch type (vaults, swamp, shoals, forest) or one of 8 standard types (angular, rooms, passages, anastomotic, raniform, city, open, divisions). The syntax.txt file has been updated with a short description of each.
* layout_waterfall is gone (by request)
* open layouts (e.g. layout_big_octagon) are much less common and do not have the ''allow_dup'' tag. This means they can appear at most once per game.
Additional Information
Tags No tags attached.
Attached Files ? file icon LayoutsByBranch.xlsx [^] (48,031 bytes) 2014-05-29 05:16
? file icon 0001-Set-new-layout-weights.patch [^] (27,898 bytes) 2014-05-30 03:05 [Show Content]
? file icon infiniplex_Patch_4_applied_to_Trunk.patch [^] (27,950 bytes) 2014-06-02 09:27 [Show Content]
? file icon 0001-Better-layout-type-names.patch [^] (20,387 bytes) 2014-06-20 01:03 [Show Content]

- Relationships

-  Notes
infiniplex (reporter)
2014-05-29 05:16

The .xlsx file shows all the layout weights for each branch in a table.
Reaver (developer)
2014-05-29 19:53

Since this doesn't seem to be getting immediate attention:

This looks easy enough to update in the case of merge errors, I'll gladly do that myself if this gets in.

There seems to be a bit too much going on in this patch. The new layout classifications, the Weight changes, layout removals/disabling, shuffling the layouts in different branches,Adding a lot of comments, etc. I know it's more work but this would be easier to deal with if it was multiple commits so we could push partially. (I suspect separate layout types commit, for example, could go in no problems since it's mostly technical.)

As a minor musing I do not expect anybody to act on, it might be better if layout weights were handled like mon-pick-data.h weights instead of vault weights, since their use is more similar.
infiniplex (reporter)
2014-05-29 23:23

Internally, layouts are just vaults with the "layout" tag, placed using the _build_vault_impl function in They just happen to have a bit more randomization in them than most vaults. Changing how the weights were handled would be a major undertaking.

I can move the renames and the new layout types out into 2 additional commits. Some of the comments would go with them. Changing the weights for layouts and the branches the layouts appear on have to go together, because weights are on a per-branch system. AFAIK, specifying a weight without a branch is just shorthand. The disabling of layout_waterfall (the only one I removed) is also really part of changing where the layouts appear (to "nowhere).
infiniplex (reporter)
2014-05-30 03:07

Here is the patch broken into 4 parts. It would probably be best to apply them in order.

There are also a few typo fixes compared to the combined one. For example "layout_stringhold" was corrected to "layout_stronghold".
Reaver (developer)
2014-05-30 04:29
edited on: 2014-05-30 04:29

Yes combining layout spelling fixes is good.

I've pushed the first patch piece, will look at the rest now. (Will probably delete the first patch now)

Reaver (developer)
2014-05-30 19:57
edited on: 2014-06-02 09:19

I've pushed the first three patches, brought up the rest on the mailing list. I've had to make some modifications - I modified history on the middle two commits to put Commit 3 's /dat/des/builder/layout_halls.des change in Commit 2, and I had to make this commit: (;a=commit;h=989babb9030db952bcf51a867e09bc4c0b9e252d [^] )to correct vaults for the change (since part of the point of layout types it to let vaults be picky about which layouts use them).

Patch 4 has conflicts which I've resolved locally.

infiniplex (reporter)
2014-06-01 23:30


A couple questions:
1. How do change commits? The only thing I could think of was to go revert to before the change and redo them, which sounded like it would take too long.

2. Your link is broken. Does it mean you changed the vaults with per-layout placement? Otherwise, I should go and do that (oops).
Reaver (developer)
2014-06-02 09:23
edited on: 2014-06-02 09:28

Changing commits: Make the change and then do git commit --amend this will add the changes to the last commit

I already changed the vaults with per-layout placement. I fixed my above link

Deleted some old patches, added my fix for apply patch 4 to Trunk.

I apologize the patch has my header information - I was rushed doing this but will be able to change it to your header information if/when this gets pushed to Trunk.

infiniplex (reporter)
2014-06-03 00:05

Thanks for your fiddling and answers.

Anastomotic and raniform are (real) types of caves. I agree they are pretty obscure terms, and simpler ones would be better. If the layout_type system allows more than one word for a type, they could just become:

layout_type_anastomotic ==> layout_type_narrow_caves
layout_type_raniform ==> layout_type_open_caves

Otherwise, I am not sure what they should be.
Reaver (developer)
2014-06-03 00:42

Hmm, it might be good to change those to your suggestions. That should probably wait until after after patch 0000004 is included or rejected.
infiniplex (reporter)
2014-06-03 20:04

I have checked and the longer names work correctly.
infiniplex (reporter)
2014-06-18 02:02
edited on: 2014-06-18 02:38

I can reinclude with minimal work:

Need to be improved first:
layout_overlapping_boxes (mine)
layout_twisted_cavern (identified as second worst)
layout_cellular_growth (inexplicably very slow sometimes)

To stay disabled:
layout_waterfall (by request from dpeg)

Already disabled:
layout_bigger_room (boring and lots of annoying water monsters)
layered_grid (doesn't work)

gammafunk (administrator)
2014-06-19 03:05

infiniplex_Patch_4_applied_to_Trunk.patch was pushed in 0.15-a0-1583-g616f59b with infiniplex as the author, thanks. No substantive changes other than to add some detail on disabled/enabled vaults in the commit message.

Leaving this open until any final renames are completed.
infiniplex (reporter)
2014-06-20 01:06

The new patch replaces the names of the layouts that were based on obscure real-world cave terminology with intuitive names.

layout_type_angular ==> layout_type_corridors
layout_type_anastomotic ==> layout_type_narrow_caves
layout_type_raniform ==> layout_type_open_caves
layout_type_caves ==> layout_type_open_caves

I also took the layout type off the hall_of_Zot. It was doing nothing (because placed with PLACE) and would have prevented it ever appearing if it had.
Reaver (developer)
2014-06-23 01:49

Ok, I've just pushed the last patch and later patches should go on differant issues. Thanks infiniplex!

- Issue History
Date Modified Username Field Change
2014-05-29 05:12 infiniplex New Issue
2014-05-29 05:12 infiniplex File Added: 0001-New-layout-generation-weights.patch
2014-05-29 05:16 infiniplex File Added: LayoutsByBranch.xlsx
2014-05-29 05:16 infiniplex Note Added: 0026302
2014-05-29 19:53 Reaver Note Added: 0026325
2014-05-29 19:53 Reaver Note Added: 0026326
2014-05-29 19:53 Reaver Note Deleted: 0026325
2014-05-29 23:23 infiniplex Note Added: 0026327
2014-05-30 00:09 infiniplex File Added: 0001-Standardized-layout-header-format.patch
2014-05-30 01:07 infiniplex File Added: 0001-Updated-all-layouts-to-use-new-layout-type-system.patch
2014-05-30 01:49 infiniplex File Added: 0001-Gave-some-layouts-more-descriptive-names.patch
2014-05-30 03:05 infiniplex File Added: 0001-Set-new-layout-weights.patch
2014-05-30 03:07 infiniplex Note Added: 0026329
2014-05-30 04:29 Reaver Note Added: 0026330
2014-05-30 04:29 Reaver Note Edited: 0026330
2014-05-30 19:57 Reaver Note Added: 0026337
2014-05-30 19:57 Reaver Note Edited: 0026337
2014-05-31 02:31 Reaver Note Edited: 0026337
2014-06-01 23:30 infiniplex Note Added: 0026363
2014-06-02 09:19 Reaver Note Edited: 0026337
2014-06-02 09:23 Reaver Note Added: 0026365
2014-06-02 09:23 Reaver Note Edited: 0026365
2014-06-02 09:23 Reaver File Deleted: 0001-Standardized-layout-header-format.patch
2014-06-02 09:23 Reaver File Deleted: 0001-Updated-all-layouts-to-use-new-layout-type-system.patch
2014-06-02 09:23 Reaver File Deleted: 0001-New-layout-generation-weights.patch
2014-06-02 09:24 Reaver File Deleted: 0001-Gave-some-layouts-more-descriptive-names.patch
2014-06-02 09:27 Reaver File Added: infiniplex_Patch_4_applied_to_Trunk.patch
2014-06-02 09:28 Reaver Note Edited: 0026365
2014-06-03 00:05 infiniplex Note Added: 0026371
2014-06-03 00:42 Reaver Note Added: 0026372
2014-06-03 20:04 infiniplex Note Added: 0026375
2014-06-18 02:02 infiniplex Note Added: 0026543
2014-06-18 02:38 infiniplex Note Edited: 0026543
2014-06-19 03:05 gammafunk Note Added: 0026555
2014-06-20 01:03 infiniplex File Added: 0001-Better-layout-type-names.patch
2014-06-20 01:06 infiniplex Note Added: 0026562
2014-06-23 01:49 Reaver Note Added: 0026584
2014-06-23 01:49 Reaver Status new => resolved
2014-06-23 01:49 Reaver Fixed in Branch => 0.15 development branch
2014-06-23 01:49 Reaver Resolution open => done
2014-06-23 01:49 Reaver Assigned To => Reaver

Mantis 1.1.8[^]
Copyright © 2000 - 2009 Mantis Group
Powered by Mantis Bugtracker