Angband.oook.cz
Angband.oook.cz
AboutDownloadVariantsLadderForumCompetitionSpoilersComicScreenshotsFunniesLinks

Go Back   Angband Forums > Angband > Vanilla

Reply
 
Thread Tools Display Modes
Old November 19, 2009, 18:23   #1
bron
Swordsman
 
Join Date: May 2008
Location: Saratoga, California (in the midst of Silicon Valley)
Posts: 341
bron is on a distinguished road
item generation

At the end of the "Your views wanted on artifacts in V" thread, Magnate says:

>I think Takk will rein in ego generation a bit further for 3.2, as
> we're still getting too many (compared with stuff like stat potions
> and other high-end consumables).

While I don't necessarily disagree with this statement, I think a lot of it has to do with two significant changes to object generation that were made in 3.1.0 that I never saw mentioned in the announcements:

1) The calculation for the "level" of an object dropped is now the *maximum* of either the dungeon level or the monster level, whereas before it was the *average* of the dungeon level and the monster level (I note BTW that the comment in monster2.c was not updated when the code was changed, and still erroneously claims to use the average).

This change has far reaching implications, and personally, I don't like it. In particular it means that you no longer have to fight tough monsters to get high level drops. No longer do you have to descend to level 85 and kill a Hell Wyrm to have a good chance of getting a =Speed; a novice priest will do, and on level 75. It also means that the boring but reasonably safe tactic of "breed black oozes until you get what you want" is probably a winner. Previously you could do this to find stat potions, but not the really high level items since black oozes are only level 23. Appropos Magnate's original comment, this change also means that ego (or better) items are a lot more common at deeper levels, because every item dropped by every monster at a deep level will be a deep level item with a correspondingly higher chance of being a great item. This change greatly facilitates the "dive fast, dive deep" method of play because in addition to hoping to find stuff on the floor, you can also kill any weak monsters that happen to be on the level, and get drops just as good as the monsters that could instantly kill you. This is not necessarily a bad thing depending on your point of view (*I* think it is a bad thing, but could imagine others holding different views) but it is a serious change.


2) The *Heal*, and Life, and stat gain potions are no longer considered to be "good" items in the sense of monsters that have the DROP_GOOD flag. This alone makes them much less common (Magnate's second point). Admittedly these items only recently make it *on* to the "good" list (in 3.0.x I think?). but now that they're back off, the items are more rare. In fact, annoyingly enough, if you're looking for *Heal* or *Life* for the final battle with Morgoth (and IMO you need at least a half-dozen; more is definitely better), there is no point in killing Wryms or high level Demons, since monster with DROP_GOOD will *never* drop these items.

[Admittedly you don't want these items to be too easy to find either. But I do think that there should be at least some chance that the high level monsters will drop them.]
bron is offline   Reply With Quote
Old November 19, 2009, 20:20   #2
Magnate
Angband Devteam member
 
Join Date: May 2007
Location: London, UK
Posts: 4,979
Magnate is on a distinguished road
Send a message via MSN to Magnate Send a message via Yahoo to Magnate Send a message via Skype™ to Magnate
Quote:
Originally Posted by bron View Post
At the end of the "Your views wanted on artifacts in V" thread, Magnate says:

>I think Takk will rein in ego generation a bit further for 3.2, as
> we're still getting too many (compared with stuff like stat potions
> and other high-end consumables).
My bad - I think I meant 3.1.2, as we are still a way away from 3.2 (which is when this is all supposed to be sorted).
Quote:
1) The calculation for the "level" of an object dropped is now the *maximum* of either the dungeon level or the monster level, whereas before it was the *average* of the dungeon level and the monster level (I note BTW that the comment in monster2.c was not updated when the code was changed, and still erroneously claims to use the average).
<grins> This is a bad habit, but something that affects a lot of devs. Some of the comments in the current code are positively harmful, they bear so little resemblance to the code.
Quote:
This change greatly facilitates the "dive fast, dive deep" method of play because in addition to hoping to find stuff on the floor, you can also kill any weak monsters that happen to be on the level, and get drops just as good as the monsters that could instantly kill you. This is not necessarily a bad thing depending on your point of view (*I* think it is a bad thing, but could imagine others holding different views) but it is a serious change.
Well, IIUC the change was made to encourage faster diving, so from that POV it has succeeded - but it does still need tweaking. Personally rather than see it reversed, I'd prefer to see more granular control of who can drop what. It's good that you can get *something* decent from killing a novice priest at 4000', but I agree that the drop from a great wyrm should be a lot better.
Quote:
2) The *Heal*, and Life, and stat gain potions are no longer considered to be "good" items in the sense of monsters that have the DROP_GOOD flag. This alone makes them much less common (Magnate's second point). Admittedly these items only recently make it *on* to the "good" list (in 3.0.x I think?). but now that they're back off, the items are more rare. In fact, annoyingly enough, if you're looking for *Heal* or *Life* for the final battle with Morgoth (and IMO you need at least a half-dozen; more is definitely better), there is no point in killing Wryms or high level Demons, since monster with DROP_GOOD will *never* drop these items.

[Admittedly you don't want these items to be too easy to find either. But I do think that there should be at least some chance that the high level monsters will drop them.
IMO there is a fundamental brokenness to the system in which only weapons and armour can go down the normal -> good -> ego -> artifact route. Here's a very poorly thought-through alternative:

There are four tiers of drops: normal, good, great, artifact. All potions, scrolls, devices, mushrooms, books etc. are assigned a tier from 1 to 4 (well, 1 to 3 as things stand, but there has been talk of artifact staves and spellbooks). All normal drops start at tier 1, but instead of rolling for the exact item, every drop has a chance of being upgraded to a higher tier. So a normal monster's normal drop is "a potion" or "a scroll" or "a pair of soft leather boots", and then the good/great/artifact checks are made. Only after all that is the actual item type determined.

Then you need careful control of monster drops: my suggestion would be that each monster had four flags: number of normal drops, chance to upgrade to good, chance to great, chance to artifact. These chances would be applied to each drop, continuing only where successful. So, e.g.

novice mage: 1, 1-in-20, 1-in-200, 0.
great wrym of thunder: 6, 1-in-2, 1-in-10, 1-in-50.

The numbers are not balanced - I just made them up. But you see how you could very carefully tweak each monster drop without penalising either divers or non-divers. (Yes you would still need OOD checks for items of any tier which are OOD - I'm not proposing to do away with item depth completely, because it should still be relevant to the drop calculation.)

Just a few opening thoughts - I agree with you that item generation needs overhauling, but not that we should revert the max depth change.
Magnate is offline   Reply With Quote
Old November 19, 2009, 21:09   #3
bron
Swordsman
 
Join Date: May 2008
Location: Saratoga, California (in the midst of Silicon Valley)
Posts: 341
bron is on a distinguished road
Frankly, that sounds like way too much work :-)

My own half-formed idea would be to apply a penalty to the level of the object generated if the monster is way out of depth. Something like say:
...
level = MAX(p_ptr->depth, r_ptr->level); /* The current calculation */
wimpyness = p_ptr->depth - r_ptr->level;
if (wimpyness > 1) {
int penalty = m_bonus(wimpyness, wimpyness);
level = level - penalty;
}
...
The way m_bonus works, this would make very little difference for monsters near their natural depth, but would (usually) apply a substantial penalty for monsters that were significantly weaker than the current dlvl.
bron is offline   Reply With Quote
Old November 19, 2009, 22:13   #4
Magnate
Angband Devteam member
 
Join Date: May 2007
Location: London, UK
Posts: 4,979
Magnate is on a distinguished road
Send a message via MSN to Magnate Send a message via Yahoo to Magnate Send a message via Skype™ to Magnate
Quote:
Originally Posted by bron View Post
Frankly, that sounds like way too much work :-)

My own half-formed idea would be to apply a penalty to the level of the object generated if the monster is way out of depth. Something like say:
...
level = MAX(p_ptr->depth, r_ptr->level); /* The current calculation */
wimpyness = p_ptr->depth - r_ptr->level;
if (wimpyness > 1) {
int penalty = m_bonus(wimpyness, wimpyness);
level = level - penalty;
}
...
The way m_bonus works, this would make very little difference for monsters near their natural depth, but would (usually) apply a substantial penalty for monsters that were significantly weaker than the current dlvl.
Sure - but that won't reduce the preponderance of ego items, I think. If anything it will make things like *heal* and Life even rarer.
Magnate is offline   Reply With Quote
Old November 20, 2009, 07:34   #5
bron
Swordsman
 
Join Date: May 2008
Location: Saratoga, California (in the midst of Silicon Valley)
Posts: 341
bron is on a distinguished road
Quote:
Originally Posted by Magnate View Post
Sure - but that won't reduce the preponderance of ego items, I think. If anything it will make things like *heal* and Life even rarer.
I was thinking that it would affect egos indirectly as a consequence of generating items with a lower level. But if I'm reading apply_magic correctly, then the chance of getting an ego is already maxed out at level 40 (at 50% (!)). Putting in a 20 or 30 level penalty for wimpyness won't really do much at deep levels.

Since *Heal* starts at level 40, and Life at level 60, I don't think they'd be rarer. But I don't really know.
bron is offline   Reply With Quote
Old November 20, 2009, 13:22   #6
s0be
Apprentice
 
Join Date: Jan 2008
Posts: 96
s0be is on a distinguished road
Code:
+	if(p_ptr->depth > r_ptr->level)
+	{
+		int weight = rand_int(100);
+		level = p_ptr->depth * weight / 100 + r_ptr->level * (100 - weight) / 100;
+	} else {
+		level = p_ptr->depth * 80 / 100 + r_ptr->level * 20 / 100;
+	}
That's an excerpt from the original code I proposed that re-worked monster drops a bit. What it did was:

If the player is deeper than the monster's native depth, it randomly chose a depth in beteween the two and used that as the drop depth. If the monster is out of depth, it gave a depth bonus of 20% more than the players current depth. This means a level 10 monster on level 70 could drop at any level between 10 and 70, while a level 15 monster on level 10 will always drop at level 11.

It worked quite well at taming strong drops from weak deep enemies, as well as more accurately portrayed what you would expect. In a pack of orcs on level 80, you'd expect some to have found good deep items, while others have not been so lucky (or had their stuff stolen by stronger orcs). On the flipside, you'd expect most ood monsters to be weaker... why else would they be in the shallower levels?
s0be is offline   Reply With Quote
Old November 20, 2009, 14:02   #7
fizzix
Prophet
 
Join Date: Aug 2009
Location: Madison, Wisconsin, US
Posts: 2,516
fizzix is on a distinguished road
An alternative approach that I've thought about (and that would make the game significantly more difficult) would be to limit monsters to a certain range of depths. So, you won't see novice mages at all past dlevel 20, 25 or so. You won't see orcs in the later sections of the dungeon, unless they're part of Azog's escort (and he would probably be capped at around dlevel 60) Pits and escorts are considered at the level of the strongest member or associated unique. Vaults would be able to have monsters at all depths because presumably they don't ever leave and run back upstairs to where they belong.

The bottom levels of the dungeon would have fewer monsters, but much more difficult ones. Gone would be the orc and troll pits from the bottom of the dungeon, filled instead with dragon pits and graveyards. Gone would be crappy summons from Morgoth or Sauron. Diving would be much more dangerous.

Monster range could look something like:

(Min level) to max(min level + 20, min level *2) with the same penalties that are applied to OoD monsters on one end applied to the other end.
fizzix is offline   Reply With Quote
Old November 20, 2009, 16:49   #8
buzzkill
Prophet
 
buzzkill's Avatar
 
Join Date: May 2008
Location: Indiana, USA
Posts: 2,902
Donated: $8
buzzkill is on a distinguished road
Quote:
Originally Posted by s0be View Post
In a pack of orcs on level 80, you'd expect some to have found good deep items, while others have not been so lucky (or had their stuff stolen by stronger orcs). On the flipside, you'd expect most ood monsters to be weaker... why else would they be in the shallower levels?
You would also expect these DL80 orcs to be stronger than the ones encountered on DL10 (esp. when you pair it with the OOD flipside).
__________________
www.mediafire.com/buzzkill - Get your 32x32 tiles here. UT32 now compatible Ironband and Quickband 9/6/2012.
My banding life on Buzzkill's ladder.
buzzkill is offline   Reply With Quote
Old November 20, 2009, 22:06   #9
Nick
FAangband maintainer
 
Nick's Avatar
 
Join Date: Apr 2007
Location: Canberra, Australia
Age: 48
Posts: 4,215
Donated: $60
Nick is on a distinguished road
Quote:
Originally Posted by fizzix View Post
An alternative approach that I've thought about (and that would make the game significantly more difficult) would be to limit monsters to a certain range of depths.
The Oangband system is a softened version of this; it divides the dungeon above the current level into thirds, and adjusts generation chances based on that. So if you're on level 30, level 20-30 monsters have their normal chance of appearing, level 10-20 monsters have 1/4 their normal chance, and level 1-10 have 1/16 their normal chance.
__________________
One Ring to rule them all, One Ring to find them,
One Ring to bring them all and in the darkness bind them.
Nick is offline   Reply With Quote
Old November 21, 2009, 07:22   #10
s0be
Apprentice
 
Join Date: Jan 2008
Posts: 96
s0be is on a distinguished road
I have preliminary patches to limit monsters to certain depths also. I began coding up patches to scale monsters as well, but after talking in IRC, these patches lead to some problems:

It'd require more monsters! If we limit orcs to only be so deep, either the deep dungeons need to be nearly barren of monsters, or everything is going to be a nearly lethal fight, and it would make any sort of diving REALLY risky. Hundreds of new monsters would be needed to fill in the gaps to keep diving interesting. If monsters were made such that they got stronger as the got deeper, the deeper monsters would need to be toned down a bit. About all you could do is to do something like adding .5 * rand_int( p_ptr->depth - r_ptr->level ) HP to monsters HP and/or AC, but that ruins your monster memory where a level 50 monster on level 98 could potentially be a lethal foe... Suddenly you're taking one of the few aspects of skill out of the game. All the discussion I had with Tak, and maybe d_m and others (don't remember, it was Feb of 08) lead to the point that the only real thing you could tweak there (easily) was the monster's drop level, which lead to that patch I shared above that made it a pot-luck, rather than a HUGE bonus for diving. Any attempt to make monsters scale with depth leads to levels that are too dangerous without scaling back how many show up or removing some deep monsters. Same goes for limiting how deep monsters go. I still stand by my previous patch being better than what's in there now, bringing some fun to what could be dropped, while not entirerly nerfing things.

If anyone has any ideas on a better way to scale the depth (maybe max it at min(2 x r_ptr->level, r_ptr->level + 20 or something like that?) I'd be glad to make a patch for testing.
s0be is offline   Reply With Quote
Reply


Currently Active Users Viewing This Thread: 1 (0 members and 1 guests)
 
Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Over-engineering dungeon generation RogerN Variants 39 July 19, 2010 04:21
r1415 bug - Item generation Sirridan Vanilla 3 June 1, 2009 08:23
Do we need points based stat generation at all? TJS Vanilla 62 May 16, 2009 20:37
Edit File For Dungeon Generation? Zero Vanilla 3 January 9, 2008 18:17
Item names Kiyoshi Aman Vanilla 3 May 5, 2007 23:01


All times are GMT +1. The time now is 08:15.


Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2014, vBulletin Solutions, Inc.