![]() |
#1 |
Swordsman
Join Date: Jun 2012
Posts: 257
![]() |
engine for rand art generation
I've been playing a char with rand arts, which is great fun, here are some comments/ suggestions on how these are generated. So my understanding of how the current generation works is as follows: take a list of all the possible properties, choose one at random, add it to the artifact, then decide whether the artifact is powerful enough as is, if not roll again for another property.
This leads to some properties that are very rare in standarts to be just as common as the common properties. As an example, my char found lots of artifacts that grant ESP, but it took until char level 36 at 3000'' until I found the first item that grants all 4 base resists. This is not surprising if the artifact generation works as described, the chance to roll all 4 base resists is much lower than rolling ESP. If you want the rand arts to model the stand arts more closely, the easiest way would probably be to weight the list of properties. For example roll a d100, rolling a 1 to 5 gives fire resistance, rolling a 6 gives ESP, etc. Then getting fire res is 5 times a likely as getting ESP. One could also put the 4 base resists as a single property in the list. This would of course require lots of balancing and play testing. |
![]() |
![]() |
![]() |
#2 |
Knight
Join Date: Jul 2009
Location: Prague,Czech Republic
Posts: 909
![]() |
A simple solution is to either group abilities together, or make getting an ability make getting other abilities associated with it more likely.
|
![]() |
![]() |
![]() |
#3 |
Angband Devteam member
|
Umm ... yeah. The randart generator isn't perfect, but it is a *teeny* bit more sophisticated than the OP thinks.
__________________
"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 |
![]() |
![]() |
![]() |
#4 |
Knight
Join Date: Jul 2009
Location: Prague,Czech Republic
Posts: 909
![]() |
The fact that randarts are not only playable, but played is quite the testament to that. I have to congratulate the V team there. Randarts were very quickly brought to a level where I preferred playing with them.
|
![]() |
![]() |
![]() |
#5 |
Prophet
Join Date: Dec 2009
Posts: 9,022
![]() |
Among other things, you should notice that:
* Resistances are more common on body armors and shields * Boots are a lot more likely to have sizable speed boosts * Weapons tend to focus on slays * Extra shots/blows almost never show up on non-bows/weapons |
![]() |
![]() |
![]() |
#6 |
Swordsman
Join Date: Jun 2012
Posts: 257
![]() |
|
![]() |
![]() |
![]() |
#7 | |
Angband Devteam member
|
Quote:
First, the randart code analyses lib/edit/artifact.txt and records precisely how often each ability (resist, slay, brand, stat boost, whatever) occurs on each type of item (weapon, shield, body armour, cloak etc.). Then if certain abilities are below certain minima, the frequencies are increased. This is to ensure that abilities can be generated on randarts even if they aren't present in the standart set. Then each artifact is taken in turn and randomised according to its total power level. First, a new base item is chosen, which must be not too powerful and not too weak (lest it have too many or too few abilities). Then random abilities are added one at a time (which can depend on item type, previous abilities etc. but are mainly guided by the frequencies recorded earlier). If the result is less than 95% of target power, we carry on adding more. If we're over 105%, we roll back the last addition and try again. If we run out of tries we scrap the whole randart and start again. Once we've randomised them all we check that we have minimum amounts of each item type. If we don't, we scrap the whole set and start again.
__________________
"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 |
|
![]() |
![]() |
![]() |
#8 |
Swordsman
Join Date: Mar 2008
Location: Burlingame CA
Age: 60
Posts: 254
![]() |
This is something I might be able to work on and contribute to the codebase (which I have never done in the past). I have a lot of professional experience in global optimization and sampling. The "add one at a time, check for appropriate strength" method can introduce biases between less and more valuable abilities (i.e., given the method as described, the probability that an artifact has a given ability might not end up very close to the original target probability). There are other more "global" methods of sampling which could generate artifacts with a better match to the desired target distribution of abilities.
I might take a look at this later this summer. |
![]() |
![]() |
![]() |
#9 | |
Angband Devteam member
|
Quote:
__________________
"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 |
|
![]() |
![]() |
![]() |
#10 |
Veteran
Join Date: Jun 2007
Posts: 1,393
![]() |
|
![]() |
![]() |
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
Display Modes | |
|
|
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
Game Master's Campaign - Fantasy art kit | Shockbolt | Idle chatter | 34 | November 6, 2012 15:17 |
3.3 artifact generation | bulian | Vanilla | 13 | October 12, 2011 17:34 |
T-Engine 4 & ToME4 beta 2 are upon us! | DarkGod | ToME | 15 | May 27, 2010 19:06 |
Object generation in 3.1.2 | PowerWyrm | Vanilla | 4 | May 7, 2010 22:08 |
[Hell] Help needed for ASCII art | konijn_ | Variants | 1 | July 29, 2007 17:06 |