jeremygurr / dcssca

Dungeon Crawl Stone Soup: Circus Animals fork
11 stars 8 forks source link

new experience options: what options do you like best? What makes the most fun game in your opinion? #140

Closed jeremygurr closed 8 years ago

jeremygurr commented 8 years ago

See the readme for details, but the following options have replaced the old_experience one:

level_27_cap = false exp_from_new_floor = true exp_potion_on_each_floor = true uniques_drop_exp_potions = true exp_percent_from_monsters = 0 exp_percent_from_potions = 100

Try any combination of game settings that interests you, and please send me feedback on what you like and don't. Development will evolve around one configuration of these parameters, although I will probably keep the options in place for those who really don't like whatever configuration I settle on.

Don't worry about throwing off the total experience in the game by switching things. For example, if you want to get experience from monsters AND potions on each floor, then the game will automatically balance out the total experience to be close to the "normal" amount. For example, if you specify that you only want experience when entering new levels, not from potions or monsters, the game will compensate by making the amount of exp gained on each floor much higher.

Now if you prefer to have more or less than the normal amount, tweak the percentage options. For example, exp_percentage_from_potions = 500 would give 5x more experience than "normal" when quaffing an experience potion. You can even do weird things like exp_percentage_from_monsters= -20, which would mean you would lose 20% of the normal experience for each monster you killed! Could make an interesting variation...

if you just like it the way it was before, use this:

level_27_cap = true exp_from_new_floor = false exp_potion_on_each_floor = false uniques_drop_exp_potions = false exp_percent_from_monsters = 100 exp_percent_from_potions = 0

Sandman25DCSS commented 8 years ago

Awesome!

jeremygurr commented 8 years ago

Okay here's another potential approach:

A player advances one experience level each new floor they reach. Naturally they would be motivated to dive as soon as possible as deeply as they dared, and then go back to the top and clear monsters to gather loot, then dive again when they felt they were strong enough. But they could also play like normal, clearing one level at a time, and not lose anything compared to the player that dives deep at the beginning. No experience potions, no monster experience. It reduces the intensity of the potion based approach, but still gives a fun option to those who are daring, while offering a very simple to understand model that still completely avoids experience scumming. There would be a fixed and easily controllable amount of experience possible in a game (determined by the number of floors). Special branches like zigs would not give experience at all, they would only exist for getting better loot. Same would apply to Pan.

Draining elimination and other experience based timers would work instead by drinking a special potion. Maybe the potion of cancellation can purge negative energy effects like draining and attribute loss. They could also be automatically cured when advancing a level, so there would be more than one way to get rid of them (particularly important for mummies).

Combine this with no monster item drops (natural floor item spawning would be increased to compensate), and we would have a viable pacifist option also. For the monsters that we rely on certain drops coming from (like spiked clubs from ogres), the item they would normally drop could just spawn on the floor under the monster when they are created. The player could run and grab it (or apport it), and completely avoid killing the monster if they desired.

These would be implemented as two options. Do any of you see major flaws in this approach?

jeremygurr commented 8 years ago

I'm not sure the monster item dropping is significant enough to worry about, so I'll hold off on that option until there is a real need for it.

Sandman25DCSS commented 8 years ago

Loot is much less important than XP for some characters, for example, FeBe. I understand you are trying to make pacifist runs possible but being a pacifist should make game harder than for non-pacifist characters, thus at least some XP should come from killing monsters. Take a look at http://dobrazupa.org/morgue/Sandman26/morgue-Sandman26-20140313-234754.txt It's a berserker who won with spear without berserking even once. Some characters have huge defense and almost cannot be killed, being a pacifist is not hard in this case unless the characters are underleveled comparing to normal characters.

jeremygurr commented 8 years ago

Oops I had the wrong name for a couple of parameters. Instead of percentage, it's percent. Example:

level_27_cap = false exp_from_new_floor = true exp_potion_on_each_floor = true uniques_drop_exp_potions = true exp_percent_from_monsters = 0 exp_percent_from_potions = 25

jeremygurr commented 8 years ago

Okay I created a new parameter called exp_based_on_player_level. And I renamed exp_percent_from_potions to exp_percent_from_potions_or_floor to be more clear.

it defaults to false and gives the previous behavior. But if you set it to true, instead of giving experience based on the floor you are on, it gives experience based on the player's xl. For example, if you set exp_based_on_player_level = true, and exp_percent_from_potions_or_floor = 50, then when drinking a potion of experience, you receive 50% of the experience needed to advance to the next level. This is assuming normal difficulty and 0 exp aptitude. Either of those parameters will modify the experience gain as expected.

So a fun configuration I'm going to try is:

exp_from_new_floor = true exp_potion_on_each_floor = false uniques_drop_exp_potions = false exp_percent_from_monsters = 0 exp_percent_from_potions = 50 exp_based_on_player_level = true

This means that every two new floors I see, I will go up another xp level. So if I cover the 53 + maybe 5 more for special single floor branches = 58 floors required for a 3 rune win, that would put me at xp level 29 if I played on normal mode and chose a species with xp apt 0. Most species of course have an xp apt of -1 which easily knocks a few levels off here. Of course, if I think that's too much, I can easily change the exp_percent_from_potions to 40 or whatever.

jeremygurr commented 8 years ago

I also changed the defaults for experience to match the standard crawl style of monster based experience. The level 27 cap is still defaulted to false, so if you want that also you'll need to set it to true.

G0rg0 commented 8 years ago

If you set only getting XP for new floors, I think Pan levels and Zig floors should still give you some XP. On the few extended game chars I've won, I was always training up something, secondary skills or utilities well after I had explored the "standard" areas.

jeremygurr commented 8 years ago

I split the exp_percent_from_potions into exp_percent_from_potions for potions and exp_percent_from_new_branch_floor for exp gained when entering a new floor

to give finer control

this makes exp_from_new_floor = true no longer needed.

jeremygurr commented 8 years ago

Currently if you set exp_percent_from_new_branch_floor to anything more than 0, you will get experience for each floor of any branch you visit that can generate monsters. So pan and zig would be included also. Is that what you were referring to?

If exp_based_on_player_level = false, then the experience gained is based on the "absolute" level of the floor. Absolute levels of pan and zig are very high, giving a lot of experience per floor. Of course since zig has 27 levels, the later floors may give way too much experience, so that may well need to be balanced further. I rarely get to zigs though so I don't have a lot of experience there yet.

jeremygurr commented 8 years ago

So here is a new set of options with their defaults that you can copy and paste into your rc file and tweak:

level_27_cap = false
exp_potion_on_each_floor = false
uniques_drop_exp_potions = false
exp_percent_from_monsters = 100
exp_percent_from_potions = 100
exp_percent_from_new_branch_floor = 0
exp_based_on_player_level = true
Sandman25DCSS commented 8 years ago

Is it still possible to find a potion of experience in some vault? If yes, probably defaults should be exp_percent_from_potions = 100 exp_based_on_player_level = true Old potion of experience always gives 100% XP (so if player was 16.25 XL, it will be 17.25)

jeremygurr commented 8 years ago

good idea. done.

G0rg0 commented 8 years ago

Is this active with current games or needs a new char?

jeremygurr commented 8 years ago

it takes effect immediately. If you save your game, change the rc file, then go back in, your game will respond to the new rules.

jeremygurr commented 8 years ago

I made it so that the deepest level you have visited is what is used to determine experience when drinking a potion, reducing the need to repeatedly dive before drinking an exp potion.

I also made drain decay, ash skill transfer, attribute drain elimination, and other exp related effects happen when you kill monsters, like before, even if you don't gain experience from it.

yrmvgh commented 8 years ago

I haven't messed with it yet, because I don't understand what "exp_based_on_player_level = false" means, after reading it a few times.

It sounds to me as though you gain a level when you drink an exp potion, whichever way you make it.

yrmvgh commented 8 years ago

I would be interested in trying the recommended exp settings from the dev, or from a player who knows this fork well. The roguetemple forum thread made DCSSCA experience sound exciting, but whatever was mentioned there is not the default option and I'm not sure how to make EXP work in the manner described there. But that is an old thread so maybe you all have decided those options weren't good and that is why it's not the default now?

jeremygurr commented 8 years ago

I realized that the experience changes were so dramatic, that it might be best to default to old behavior and then let adventurous players put the settings in their rc file for what they'd like to try. This will likely evolve into 2-3 different game modes that will be presented to the player when starting a game, and the options will be removed. For example:

exp_based_on_player_level = true means that drinking an exp potion will take the player up one level of xp, no matter when or where it is quaffed, if exp_percent_from_potions = 100 (meaning 100% of the way to the next xp level). Now that's a bit much for most games, so a better number would probably be exp_percent_from_potions = 25 (depending on what other options are set, and other sources of experience that may exist). 25 would mean that each potion quaffed would give 25% of the experience needed to get to the next level.

exp_based_on_player_level = false means that drinking an exp potion will give experience based on the deepest dungeon floor you have visited (includes special handling of branches based on the "absolute depth" value associated with them). Here exp_percent_from_potions = 100 means that it gives 100% of what it would normally give, which is the following:

D:1: 1 D:2: 5 D:3: 15 D:4: 35

so you can see it goes up pretty fast, strongly motivating the player to delay drinking them as long as possible, creating a natural challenge that automatically adapts to however powerful the player becomes.

Naturally there are still a bunch of balancing issues to take care of. As more people try it out though and give feedback, it will get closer and closer to a solid balanced and fun option.

One of my favorite modes so far is this:

exp_potion_on_each_floor = true uniques_drop_exp_potions = true exp_percent_from_monsters = 0 exp_percent_from_potions = 30 exp_percent_from_new_branch_floor = 15 exp_based_on_player_level = false

So it's extra fun to encounter uniques and player ghosts, since they are guaranteed to drop a exp potion. But I also get some experience just for getting to lower floors, so I don't play the first half of the game at xl 1. So my basic strategy in this kind of game is to clear the first 3 or 4 floors like normal, usually at xl 1 or 2, but then dive as deeply as I can, by taking the first downstairs I see and avoiding monsters as much as possible. Then when I have risked as much as I dare, I go back up and drink my experience potions. And then I continue clearing the next few floors, until I think things are getting too difficult, then I dive again. This gives the player control over the difficulty level in a way I've never seen before in an RPG. If things are getting too easy for me, I go longer before diving. If things are a bit too dicey, I dive sooner. The entire time the game is intense and exciting. When first trying this mode, players tend to take on too much risk, and they die a lot. But that's part of learning how to play in this style.

But if you want to tell me what style you would like to try, I'm happy to tell you how to set up the options.

yrmvgh commented 8 years ago

I think murdering things for experience is a bit of a sacred cow that's long past it's prime.

Fantasy literature abounds with clever thieves, and in D&D 1.0, you gained exp based on the gold value of your loot, NOT based on killing things.

This is super different from the stale formula of most RPGs (and I somewhat include Crawl in this group). I saw someone on youtube steal a rune in a way that looked and felt awesome... only to begrudgingly later come back and unnecessarily club the boss to death for exp points.

You can throw more OOD monsters at players, because they're not expecting to beat the experience points out of everything they see in a series of mostly-fair fights.

Clever, cautious, prepared, and ruthless players can come up with a multitude of solutions to separate the monsters from their loot, ranging from the very most brutal to the pacifistic.

The original Rogue was like this; advancement was entirely equipment-based and there were no levels or exp. Brogue switched to this model a couple years ago, after experimenting with "exploration xp", instead using health potions and strength potions to permanently upgrade your stats.

Long story short, I'm in favor of any exp system that rewards a true Burglar, because most "roguelikes", many of which are merely high-lethality RPGs, only have Stealth gameplay insofar as allowing you to sneak up to a monster and then beat it to death. Thieves need not apply. ;)

(that said, if you're goiing to give exp for kills, only rewarding difficult/unique kills is certainly a good way to go about it, because grindind out a level by monotonously cutting down "windshield monsters" such as rats cats and spats is pretty dull work.)

yrmvgh commented 8 years ago

On one hand, if all the exp for Spider is contained in the Rune, that rewards both the thief (or the warper) and the warrior (or blaster). On the other hand, sometimes leveling up by killing their minions is the only way to be prepared and capable of surviving the dangers on that floor.

Perhaps a hybrid solution is porrible, wherein monsters on Orc 1 to Orc 3 grant exp and help you prepare yourself, but orc 4's rewards of gold and exp are all in the loot vault at the end. That sounds like a lot more coding work however, so I'm perfectly happy to play around with the settings you've given us, which are already a great way to customize the crawl experience!

Sandman25DCSS commented 8 years ago

I like idea of classic/standard/intensify etc. modes. I would stop playing crawl if it didn't have XP for monsters, I like classic mode only.

Sandman25DCSS commented 8 years ago

Diving, pacifism and other ways of playing at low XL seem unfun to me, as it means you have OP character who does not need XP to survive. The best characters for me are those who have hard time at every level, that's why I love hard mode.

yrmvgh commented 8 years ago

Just to doublecheck: you're aware that in a loot-based experience/advancement system, you can still kill the monsters to acquire that exp/advancement, right? It's an option for daredevils and thieves which still gives full value to brutes and blasters. Keeping classic mode around is a fine idea, but you make it sound as if the availability of non-murder options somehow causes harm to murder playstyles. ;)

yrmvgh commented 8 years ago

Re-reading what you've said, I guess I would agree that dive-based experience could be too skill-less. Many are the floors with two stairwells in close proximity, and tele / walking over to that other stairwell isn't terribly brave or interesting when no one dangerous or ranged is trying to stop you.

I wonder whether dive-based games could increase the value of stairwells for monster patrolling AI?

Sandman25DCSS commented 8 years ago

Availability of other modes is great of course. I like predefined modes, currently I can set monster XP to 1000 and easily win at XL 99 on hard mode and this is bad IMHO. I realize it is part of experimenting but it makes me want to switch to another server for a while ;)

jeremygurr commented 8 years ago

Hmm, it sounds like the multiple play mode idea would be satisfactory to everyone, and certainly better than just having tweakable options in the rc file. I'll go ahead with the play modes I've listed then for a starting point, unless someone has any different ideas.

G0rg0 commented 8 years ago

Equipment based leveling is an interesting thought. Brogue is a great example but oddly enough it also made me think of Diablo. Sure they are heavily built on XP but I'd argue the equipment was at least as important as the experience gain.

jeremygurr commented 8 years ago

I like the idea of equipment based also. That would make for another interesting game mode. Quite a bit of work of course since that would involve not just tweaking some level up numbers but the addition of many new items.

yrmvgh commented 8 years ago

Crawl already can feel pretty equipment based too. Sniper, Gong, and ponderous crystal plate have huge game impacts. Distortion brand, holy brand almost feel like an additional skill or spell or specialization.

Even unrands can change your game a lot - especially things with -Tele, +Tele, or Tele! _(incidentally, I think tele would be more fun and interesting if sometimes it didn't silently block itself from doing safe teleports)_

Potions of exp is already a pretty brogueish way of doing things, the only difference being that brogue would scatter them around the world instead of attaching them to stairs or unique monsters. (And it would prefer putting them behind multiple doors, not just throw them in the middle of a hallway... but let's stop before I give you a primer on brogue's invisible yet exceedingly excellent level/machine generation systems.) Manuals too. But maybe it would probably separate potions of exp into hp, mana, and skill pots.

Anyhoo. I forget what point I was building up towards. I gotta go test out the new drac or human changes. Yay!

jeremygurr commented 8 years ago

Are there any other game modes people would like to see? Maybe more monster experience modes, like a hybrid, with 30% monster experience, 30% potion, 30% floor?

jeremygurr commented 8 years ago

Ok this is now implemented and deployed to 1.2.3. You will need to use the new option when starting a game on 1.2.3. Your old games on the older versions will still work as before.