Viewing Issue Simple Details Jump to Notes ] Wiki ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0008156 [DCSS] Patches feature N/A 2014-02-15 07:35 2014-05-13 02:53
Reporter infiniplex View Status public  
Assigned To sgrunt
Priority normal Resolution done  
Status resolved   Product Branch 0.14 ancient branch
Summary 0008156: 3 new layouts for Elf
Description Here are 2 patches:

1. A quick change to the LUA function you.depth_fraction()
-> The fraction is now in the range [0, 1] instead of (0, 1]. For example, suppose we have a branch with 5 floors. Previously, the fractions would report as 0.2, 0.4, 0.6, 0.8, 1.0. Now they report as 0.0, 0.25, 0.5, 0.75, 1.0. This is more intuitive and thus should make the function easier to use.
-> The Gehenna layouts in layout_pools.des have been updated. The only other place this function was used was in mini_monsters.des, where it was used to not place down stairs on the branch bottom. No changes were needed to this function.
-> The function now also returns 1 when the branch depth is 0 at startup. This makes debugging layouts that use the function easier.

2. A new layout generator for Elf with 3 layouts and 2 supporting C++-for-LUA functions. Based on the discussion at [^]
-> Generates interconnected rooms with geometric shapes
-> Called the "geoelf" (geometric rooms for elf) generator.
-> layout_geoelf.des calls 5 dlua files similar to omnigrid and hyper generators.
-> Most (deterministically) 1-wide walls between rooms are glass. This lets players sometimes see into rooms before opening doors in. Of course, the elves sometimes open the doors themselves when they see the player.
-> Generates correctly around primary vaults (e.g. Elf1 entry and Elf:3 end vault)
-> Some "fancy" rooms, increasing from 1/10 at top to 1/5 at bottom (actually a bit more complicated). These rooms can include statues, fountains, trees, bushes, plants, fungus, and glass walls. The bushes, plants, and fungus have the "vault" tag.
-> The 2 C++ functions:
  1. add_windows: Adds glass windows in 1-thick walls. If this works gameplay-wise, it could theoretically be applied to more (or all) elf layouts. On the other hand, the existing Elf layouts don't generate many suitable walls, and for most of those you can walk around the end in a few cells.
  2. remove_disconnected_doors: Turns doors into floor if they are not between walls where they make sense. It has the disadvantage that it also removes all gates. I tried to add code to handle gates, but there were too many special cases.

Notes below, for length reasons.
Additional Information
Tags No tags attached.
Attached Files ? file icon 0001-Changed-you.depth_fraction-to-return-in-full-range-0.patch [^] (2,087 bytes) 2014-02-15 07:35 [Show Content]
? file icon 0002-Added-geoelf-layout-generator.patch [^] (121,666 bytes) 2014-02-15 07:36
png file icon Geoelf-layouts.png [^] (85,935 bytes) 2014-02-15 07:36

- Relationships

-  Notes
infiniplex (reporter)
2014-02-15 07:37

1. To look really good, this would need a few new tiles.
  -> A "stained glass" tiles for transparent rock wall. The discussion suggested applying to all transparent walls in Elf, which I think is a good idea. Without this, most of the rest don't make sense.
  -> Glass door tiles for doors in glass walls. The simpler form of these is just a door that looks like it is set in glass instead of rock and can be applied like in Cigotuvi's wizlab. A fancier (but much harder) thing would be to have the doors themselves transparent. However, this would require adding code, and I understand it just well enough to know that if I try to do this, I will break something. In either case, the glass doors only ever appear as single cells, so no gate tiles would be needed.
  -> Special stained glass tiles showing a fountain, an elf (or something else to replace a statue), and a tree. These should have their own names so they can be set individually instead of (or in addition to) mixing into the other stained glass tiles. In a really fancy form, there would be ones for bush, plant, and fungus as well. The layout generator occasionally overwrites these with glass walls when the rooms overlap, and I thought it would be neat to have the features remain as images in the wall. Currently the generator recolours those wall cells. These are least least important tiles by far.

2. The glass walls do not show up in the pictures because they do not show up on the minimap. They are there.

3. Despite how stange it looks on the map, layout_geoelf_octagon arguably works the best. The packed rooms result in lots of windows.

4. I don't know what weights the layouts should have. This is also tied to the question of which layouts should be in elf. My thoughts on which of the current layouts I would put in elf:
-> layout_rooms: Probably remove. This does not seem ordered enough. It also appears in no less than 8 branches.
-> layout_misc: I don't know. It is a different style, but the elves might build in that one too. I don't think adding windows to this one in elf would improve it.
-> layout_roguey: Definately remove. The geoelf layouts are a fancier version of this.
-> layout_basic: I don't know. The layout is very variable and some fit and some don't.
-> layout_gridlike: Definitely keep. However, the current weight of 100 is probably too high.
-> layout_hall_layers: Probably remove. It is cool, but very different from the others. I also can't picture the aloof, sophisticated elves building it.
-> layout_loops_misc, layout_loops_cross, and layout_loops_corners: These should stay in IFF layout_misc stays in.

5. The patches should work in either order. However, the first one is probably non-contraversial, while the second one might need to be changed.

6. As always, comments and suggestions for improvement are welcome.
infiniplex (reporter)
2014-02-15 07:40

7. The occasional fancy rooms are generated by code, not with subvaults. The biggest reason is that they will have to be changed if another room overlaps them.
sgrunt (administrator)
2014-05-13 02:53

Landed as of 0.15-a0-784-gad71c4e. Thanks!

- Issue History
Date Modified Username Field Change
2014-02-15 07:35 infiniplex New Issue
2014-02-15 07:35 infiniplex File Added: 0001-Changed-you.depth_fraction-to-return-in-full-range-0.patch
2014-02-15 07:36 infiniplex File Added: 0002-Added-geoelf-layout-generator.patch
2014-02-15 07:36 infiniplex File Added: Geoelf-layouts.png
2014-02-15 07:37 infiniplex Note Added: 0025315
2014-02-15 07:40 infiniplex Note Added: 0025316
2014-05-13 02:53 sgrunt Note Added: 0026159
2014-05-13 02:53 sgrunt Assigned To => sgrunt
2014-05-13 02:53 sgrunt Status new => resolved
2014-05-13 02:53 sgrunt Resolution open => done
2014-05-13 02:53 sgrunt Fixed in Branch => 0.15 development branch

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