Angband.oook.cz
Angband.oook.cz
AboutVariantsLadderForumCompetitionComicScreenshotsFunniesLinks

Go Back   Angband Forums > Obsolete > v4

 
 
Thread Tools Display Modes
Old May 28, 2012, 19:52   #1
Derakon
Prophet
 
Derakon's Avatar
 
Join Date: Dec 2009
Posts: 8,469
Derakon is on a distinguished road
Gradual monster genocide

This came up in the 3.3.0 Hobbit Rogue / Death thread: the suggestion that you might be able to gradually genocide an entire monster race by killing its members. So I figured I'd toss up some ideas on how this could work. Don't take this to mean that I'm volunteering to implement it though; I just thought it was a neat idea that could stand to be fleshed out a bit.

What we want is twofold: first, it should be possible to extinct a race by killing enough of its members. Second, the probability of a race being generated should be a function of its population -- as you kill more of the race, it becomes increasingly less likely that you'll stumble across its members.

Let's suppose that each monster race has a total population, a maximum population, and a "fecundity" rating that drives how quickly the race replenishes itself. Replenishment happens every 10k game turns (as with store refreshes) -- each replenishment, the population is increased by a percentage, up to the maximum population. For example, a race of population 1000 with fecundity 5% would get a new population of 1000 * 1.05 = 1050. Of course population goes down every time you kill a member of the race.

When we want to decide which monsters we should generate, we do what I tend to think of as a "weighted number line allocation" but which almost certainly has a better name. First we find all the monsters that are native to the desired depth. Let's say they're the Snaga (population 400), Novice Warrior (population 200), and Hippogriff (population 50). Thus we assign blocks on the number line to each race: the snagas get 0-400, the novice warriors 400-600, and the hippogriffs 600-650. Then we generate a random number from 0 to 650, and generate a monster or group of monsters of the corresponding type. Functionally this means that snagas are eight times more likely to be placed than hippogriffs are, and twice as likely as novice warriors.

We can make a first pass at deriving these values by analyzing the records in monster.txt. Monsters that appear in large groups can be presumed to have a somewhat larger initial population and a high fecundity. Monsters that are listed as common (the "rarity" field, second field on the W line) have high initial population. And of course, monsters that breed explosively have high fecundity. In fact, we can generally assume that explosive breeders have a fixed population for purposes of determining allocation -- it should be impossible to extinct them.

I propose that the current "rarity" field in the monster record be replaced by these values -- initial population and fecundity. We can presume that maximum population is some fixed multiplier of the initial population -- possibly 1 (i.e. all populations start out "fully stocked").

The way I've written this, I suspect what would happen when you reach a new depth is that first you'd start encountering lots of group monsters, since they'd have the population bonus needed to ensure placement. As you kill off the groups, their populations decline, and the less populous monsters start showing up more. Eventually you should theoretically reach some vaguely steady state, where the player kills some of race A, it stops being generated so often, it gets a chance to replenish, it starts showing up more, so it gets killed again, etc.

Either that, or replenishment happens too slowly to keep up with the player's kill rate, and eventually you kill everything at your local depth. But it'd be difficult to specifically try to extinct a single race through dungeon crawling, since you need that race to be generated in order to kill it, and its generation chance goes down as its population does. You have to drive down the populations of every native race in order to flush your real target out of hiding. Alternately, you could abuse summoning spells; they should pull a valid target so long as one exists. So if you really wanted to extinct all of the hounds, say, you could scum Dwar (who has a summon-hounds spell) and kill all his summons. Eventually he'd run out of valid targets.

Conveniently, if you ignore a specific race and kill everything else, then that race becomes more common by default. Have fun with those time hounds!

Last edited by Derakon; May 28, 2012 at 20:43.
Derakon is offline  
Old May 28, 2012, 20:10   #2
Magnate
Angband Devteam member
 
Join Date: May 2007
Location: London, UK
Posts: 5,057
Magnate is on a distinguished road
Send a message via MSN to Magnate Send a message via Yahoo to Magnate
Apart from the slightly weird verbing (extinct is the adjective, extinguish is the verb), this sounds good to me. The code calls what you're talking about an "allocation table", i.e. two fields per row, one for m_idx and one for the number of chances to be selected (your number line).

This would play will with a more dynamic approach to OOD-ness: high populations could have more chance of showing up OOD than low ones. (In this context high would mean "as a proportion of max", to avoid too many OOD group monsters.)
__________________
"3.4 is much better than 3.1, 3.2 or 3.3. It still is easier than 3.0.9, but it is more convenient to play without being ridiculously easy, so it is my new favorite of the versions." - Timo Pietila
Magnate is offline  
Old May 28, 2012, 20:20   #3
debo
Veteran
 
debo's Avatar
 
Join Date: Oct 2011
Location: Toronto, Canada
Posts: 2,344
debo is on a distinguished road
I'm sure you guys already know this, but I think Nethack already has something similar. I know I've "manually genocided" entire species in that game before, but was never 100% sure of what that meant. Might be worth checking out the way they implemented the mechanic, though, if only for inspiration.
debo is offline  
Old May 28, 2012, 20:43   #4
Derakon
Prophet
 
Derakon's Avatar
 
Join Date: Dec 2009
Posts: 8,469
Derakon is on a distinguished road
I found a wiki article on NetHack "manual genociding". It doesn't mention scaling allocation chance, which is the part of this I think is most important, since it rewards you for killing monsters you don't like (and penalizes you for avoiding them, in a way). In NetHack you just have to generate (not even kill, since NetHack has permanent levels) 120 of the chosen monster race, and then no more will be generated.
Derakon is offline  
Old May 28, 2012, 21:55   #5
fizzix
Prophet
 
Join Date: Aug 2009
Location: Madison, Wisconsin, US
Posts: 3,001
fizzix is on a distinguished road
Questions/concerns:

1) Does the number of monsters affected by total population size or do just the ratios change? If monsters/level is affected can you kill off enough monsters so that you can generate level after level that is void of monsters but with the same floor treasure?

2) How do you handle group monsters? Will group size go down as monster population shrinks.

3) It seems that there is an incentive not to kill weak monsters so that they'll show up deeper in the dungeon. For example, if you exterminate the jackals you are more likely to get water hounds instead of jackals on dlevel 20 and that's less desirable.

4) Are summonses affected by population? Can you kill off all the dragons so Morgoth's summonses come up empty? (yes summonses is the correct plural)

5) Vaults, pits?
fizzix is offline  
Old May 28, 2012, 22:08   #6
Derakon
Prophet
 
Derakon's Avatar
 
Join Date: Dec 2009
Posts: 8,469
Derakon is on a distinguished road
Quote:
Originally Posted by fizzix View Post
Questions/concerns:

1) Does the number of monsters affected by total population size or do just the ratios change? If monsters/level is affected can you kill off enough monsters so that you can generate level after level that is void of monsters but with the same floor treasure?
I hadn't thought of this. I guess the right way to handle it is to make the amount of floor items be proportional to the amount of monsters on the level -- if you manage to kill off everything that could be generated at a given dungeon level, then you'll just turn up completely empty levels -- no monsters, no items, nothing. Maybe just some treasure in the walls.

Quote:
2) How do you handle group monsters? Will group size go down as monster population shrinks.
I would tend to think of group monsters as representing a small "tribe" or "pack" of that race; the size of the group reflects whatever group dynamics are in play for that race (e.g. how many orcs you can gather in one place before they start arguing about who gets to be chief), and the population of the race as a whole is really the number of groups. So I wouldn't bother changing the group size as a function of population. But I'm not married to that idea.

Quote:
3) It seems that there is an incentive not to kill weak monsters so that they'll show up deeper in the dungeon. For example, if you exterminate the jackals you are more likely to get water hounds instead of jackals on dlevel 20 and that's less desirable.
Jackals shouldn't show up much at dlvl 20 anyway because they'd be out of depth.

Quote:
4) Are summonses affected by population? Can you kill off all the dragons so Morgoth's summonses come up empty? (yes summonses is the correct plural)
My instinct is to say that yes, you can render a summoning spell null by extincting all value targets of the summons. That's already the case with unique monsters, after all. However, most summons can pull a wide variety of races (e.g. there's 21 zephyr hounds and 8 non-unique dungeon canines for S_HOUND to choose from), and the summons should select races based on the same algorithm used to generate monsters in the dungeon -- thus, nearly-extincted races would be unlikely to be summoned compared to their fully-populated kin.

In general I think that actually extincting a race should be very difficult. The main goal is to reward you for killing a given annoying race by making it less common that you will run into it later.

Quote:
5) Vaults, pits?
Think of pits as being like summoning spells, and vaults as being like levels in microcosm, then refer earlier in this post.
Derakon is offline  
Old May 29, 2012, 01:18   #7
Gorbad
Apprentice
 
Join Date: Sep 2008
Posts: 73
Gorbad is on a distinguished road
Not too sure the positives outweigh the negatives, but hey that's what the forum is for.

Some questions:

1. Does genocide (provisional yes), destruction (yes) or banishment (no) count?
2. Would you then not end up with a disproportionate amount of (eventually) death molds, as you never kill these?
Gorbad is offline  
Old May 29, 2012, 02:03   #8
Derakon
Prophet
 
Derakon's Avatar
 
Join Date: Dec 2009
Posts: 8,469
Derakon is on a distinguished road
Quote:
Originally Posted by Gorbad View Post
1. Does genocide (provisional yes), destruction (yes) or banishment (no) count?
Hm, my guess is that none of these would count, as they all act by "removing the monster from the level", not by killing them. I guess the short answer would be, if you get experience for it, then it counts.
Quote:
2. Would you then not end up with a disproportionate amount of (eventually) death molds, as you never kill these?
Easily solved by making death molds have a low maximum population. They don't breed very often, as they require mycophiliac necromancers.
Derakon is offline  
Old May 29, 2012, 03:34   #9
CliffStamp
Apprentice
 
Join Date: Apr 2012
Posts: 64
CliffStamp is on a distinguished road
As another idea, which is related, consider that each time you see a unique and leave it and go to the next level, when it is generated again there is a chance that its speed and HP go up. For the new players this has little effect, however for power divers this will have a dramatic effect on game play as if you just just dive to dl 98 and avoid everything and just item/horde then you could end up with a bunch of extremely high powered uniques that are Morgoth speed + hp.
CliffStamp is offline  
Old May 29, 2012, 08:54   #10
Magnate
Angband Devteam member
 
Join Date: May 2007
Location: London, UK
Posts: 5,057
Magnate is on a distinguished road
Send a message via MSN to Magnate Send a message via Yahoo to Magnate
Quote:
Originally Posted by CliffStamp View Post
As another idea, which is related, consider that each time you see a unique and leave it and go to the next level, when it is generated again there is a chance that its speed and HP go up. For the new players this has little effect, however for power divers this will have a dramatic effect on game play as if you just just dive to dl 98 and avoid everything and just item/horde then you could end up with a bunch of extremely high powered uniques that are Morgoth speed + hp.
This would be a good variation on the long-mooted "random uniques" idea. As well as totally random uniques (whose stats would naturally be better at deeper depths), you could have random abilities added to the standard uniques as they got deeper. I quite like the idea of playing poker with Wormy: if I leave him another few levels he might drop a really nice artifact - but if I leave it too long he might get manastorm ...
__________________
"3.4 is much better than 3.1, 3.2 or 3.3. It still is easier than 3.0.9, but it is more convenient to play without being ridiculously easy, so it is my new favorite of the versions." - Timo Pietila
Magnate is offline  
 


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
New monster? the Invisible Stalker Development 11 January 27, 2011 01:07
ToME - Genocide? Narvius Variants 4 December 27, 2007 20:09
Monster AI Malak Darkhunter Vanilla 3 December 9, 2007 07:05


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


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2018, vBulletin Solutions Inc.