Interest check: easy skills comparison


Although the central place for design discussion is ##crawl-dev on freenode, some may find it helpful to discuss requests and suggestions here first.

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Tuesday, 8th April 2014, 17:11

Interest check: easy skills comparison

Skills screen already allows to display non-improved skills for Ashenzari character, I want to add another display for easier decision making what to train next. It will display skills after spending the same amount of XP on training one level in highest skill.

For example, if player has Long Blades as the highest skill and the following skills:
  Code:
Unarmed Combat 0
Short Blades 0.0
Long Blades 16.4
Axes 0.0
M&F 0.0
Polearms 0.0
Armour 10.2
Dodging 2.1
...
Evocations 0.0


The screen will look something like this:
  Code:
Unarmed Combat 4.2
Short Blades 10.8
Long Blades 17.4
Axes 5.4
M&F 6.2
Polearms 6.2
Armour 13.3
Dodging 8.9
...
Evocations 4.2


The numbers are not accurate, they just illustrate the idea - player can see how cheap first levels are and how expensive last levels are and make informed decisions.

PS. I know I promised to stop posting in GDD but I want to make sure my patch will be accepted before working on it. Inspired by a post from new player who had Tengu with 16.3 Conjurations and 2.1 Dodging in YASD section.

For this message the author Sandman25 has received thanks:
ackack
User avatar

Vestibule Violator

Posts: 1591

Joined: Saturday, 3rd August 2013, 18:59

Post Tuesday, 8th April 2014, 17:35

Re: Interest check: easy skills comparison

So, you are suggesting that we make it so the player is aware of how much more exp they need to get in order to go to the next level in their skills? That's a pretty good idea actually.

Perhaps I pit can be in terms of how many levels worth of experience you need. So for example, if you needed 40% worth of exp from gaining a level in order to! it would be listed as "(0.4)" or something along those lines.
To all new players: Ignore all strategy guides posted on the wiki, ask questions in the Advice forum, players with lots of posts normally have the best advice.

crawl.akrasiac.org:8080 <- take this link to play online or spectate.

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Tuesday, 8th April 2014, 17:41

Re: Interest check: easy skills comparison

My initial idea was to have something like

  Code:
Unarmed Combat 4.2 (+4.2)
Short Blades 10.8 (+10.8)
Long Blades 17.4 (+1.0)
Axes 5.4 (+5.4)
M&F 6.2 (+6.2)
Polearms 6.2 (+6.2)

Armour 13.3 (+3.1)
Dodging 8.9 (+6.8)
...
Evocations 4.2 (+4.2)


but I assumed that this is not possible because Ashenzari skills are not displayed this way.

No, I am not suggesting to display how much XP is needed, just relative comparison of skills.

Zot Zealot

Posts: 1031

Joined: Friday, 26th April 2013, 19:52

Location: AZ, USA

Post Tuesday, 8th April 2014, 19:20

Re: Interest check: easy skills comparison

I don't think it's a bad idea at all. Just make sure the player has to hit a key to bring up this display (similar to how * shows all skills), because it would be confusing if it was on the default view.

Also consider an interface similar to how the exp potion display works.

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Tuesday, 8th April 2014, 19:32

Re: Interest check: easy skills comparison

I like your idea about reusing exp potion screen!
Maybe skill screen should not be changed at all, we can add a command which quaffs a virtual potion of experience behind the scenes, the potion works as real one in preview mode but does not grant any XP after selecting affected skills. It could be even used to compare double XP skills increase (* vs +).

For this message the author Sandman25 has received thanks:
damiac

Abyss Ambulator

Posts: 1217

Joined: Sunday, 14th April 2013, 04:01

Post Tuesday, 8th April 2014, 21:23

Re: Interest check: easy skills comparison

Does the exact value matter that much? You already have soft numbers in so many places:

Spellcasting- hunger, spell levels
Armor, shields, schools for spellcasters- when you can cast spells and power
Invo, evo- when you can use abilities.
Weapons- mindelay

You generally want to level one or two skills until you hit a goal anyway, and once you hit that goal, either level for the next goal or soak up some extra points into defense anyway. Because benefits are now partial instead of level based (so 5.0 is worse than 5.2), getting to that next landmark isn't as important, unless I'm misunderstanding the backend.
Three wins: Gargoyle Earth Elementalist of Ash, Ogre Fighter of Ru, Deep Dwarf Fighter of Makhleb (0.16 bugbuild :( )

Shoals Surfer

Posts: 300

Joined: Tuesday, 19th February 2013, 23:34

Post Tuesday, 8th April 2014, 22:00

Re: Interest check: easy skills comparison

A relative skill cost screen would be awesome. Would be nice to normalize to something most players understand (e.g., one Ogre's worth, or one Dragon's worth, or 100 Newts' worth).

Or relative cost of a full level gain.

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Tuesday, 8th April 2014, 22:10

Re: Interest check: easy skills comparison

TeshiAlair wrote:Does the exact value matter that much? You already have soft numbers in so many places:

Spellcasting- hunger, spell levels
Armor, shields, schools for spellcasters- when you can cast spells and power
Invo, evo- when you can use abilities.
Weapons- mindelay

You generally want to level one or two skills until you hit a goal anyway, and once you hit that goal, either level for the next goal or soak up some extra points into defense anyway. Because benefits are now partial instead of level based (so 5.0 is worse than 5.2), getting to that next landmark isn't as important, unless I'm misunderstanding the backend.


It is not related to landmarks. This change would really help new players understand how skills work.
That Tengu could have Conjurations 13 and Dodging 9.8 instead of Conjurations 16 and Dodging 2, but it was not obvious.

Edit. This is a rather bad example btw (aptitude for Conjurations is 3, for Dodging is 1), for other species difference would be even bigger. But at least it is a real example.

I am experienced player but I had no idea that XP for progressing a skill from 22 to 26 is the same as for progressing from 0 to 16.9 before I tested it.

For this message the author Sandman25 has received thanks:
TeshiAlair

Crypt Cleanser

Posts: 746

Joined: Thursday, 5th December 2013, 04:01

Post Tuesday, 8th April 2014, 22:27

Re: Interest check: easy skills comparison

Yeah, I definitely think something indicating the way skills compare in experience would be good. The "Virtual Potion of Experience" concept seems like the most straightforward way to do things. It would use an interface that already exists and let you see what your skills would end up at a bit for different training setups. Easy to go "oh, if I leave conj on and dodging off, I'll get 0.6 conj, but if I turn off conj and turn dodging on, I'll get 4 dodging, that seems better" (numbers completely made up for the sake of example).

Abyss Ambulator

Posts: 1217

Joined: Sunday, 14th April 2013, 04:01

Post Tuesday, 8th April 2014, 23:20

Re: Interest check: easy skills comparison

Well I'm humbled, I had no idea it was that drastic till just now. (I don't necessarily think it will affect my play that much, but I will probably switch skills a bit more often.)
Three wins: Gargoyle Earth Elementalist of Ash, Ogre Fighter of Ru, Deep Dwarf Fighter of Makhleb (0.16 bugbuild :( )

Zot Zealot

Posts: 1031

Joined: Friday, 26th April 2013, 19:52

Location: AZ, USA

Post Wednesday, 9th April 2014, 00:53

Re: Interest check: easy skills comparison

The real lesson isn't necessarily that you should switch skills more often, it's that you should really never train a skill to 27 unless you have literally nothing better to spend your skills on.

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Wednesday, 9th April 2014, 01:17

Re: Interest check: easy skills comparison

WalkerBoh wrote:The real lesson isn't necessarily that you should switch skills more often, it's that you should really never train a skill to 27 unless you have literally nothing better to spend your skills on.


Yes, I know about 27, that's why I made an example about training from 22 to 26. Depending on situation it could be better to stop at 25 or 24, or 23, or ... :)
Another interesting (for me) thing: training a skill with +1 aptitude from 0 to 22 requires the same XP as training a skill with 0 aptitude from 0 to 20.5, or skill with -1 aptitude from 0 to 19.1, or -2 aptitude from 0 to 17.8, or -3 aptitude to 16.5. http://ianberrigan.com/
User avatar

Tartarus Sorceror

Posts: 1891

Joined: Monday, 1st April 2013, 04:41

Location: Toronto, Canada

Post Wednesday, 9th April 2014, 01:24

Re: Interest check: easy skills comparison

The problem I have with this is it wouldn't tell me the information that is directly important to me. Like it is cool and I can see how for a very certain set of people learning how much XP you're wasting is cool, but usually I'm more interested in EV than dodging, fail-rate instead of spell-school level, etc.
take it easy

Slime Squisher

Posts: 354

Joined: Tuesday, 14th January 2014, 23:33

Post Wednesday, 9th April 2014, 01:36

Re: Interest check: easy skills comparison

it turns out dodging and spell schools are how you get those things
User avatar

Tartarus Sorceror

Posts: 1891

Joined: Monday, 1st April 2013, 04:41

Location: Toronto, Canada

Post Wednesday, 9th April 2014, 01:40

Re: Interest check: easy skills comparison

TheDefiniteArticle wrote:it turns out dodging and spell schools are how you get those things


Yes, see, but I don't know how much EV 5 dodging skill will give me or how much my spell failure will drop with 4 skill because I am not a guy who smells like a person who plays crawl all day like you are. If you could tell me how much it is though I would be v. grateful.
take it easy

Zot Zealot

Posts: 1031

Joined: Friday, 26th April 2013, 19:52

Location: AZ, USA

Post Wednesday, 9th April 2014, 01:57

Re: Interest check: easy skills comparison

Sandman25 wrote:
WalkerBoh wrote:The real lesson isn't necessarily that you should switch skills more often, it's that you should really never train a skill to 27 unless you have literally nothing better to spend your skills on.


Yes, I know about 27, that's why I made an example about training from 22 to 26. Depending on situation it could be better to stop at 25 or 24, or 23, or ... :)
Another interesting (for me) thing: training a skill with +1 aptitude from 0 to 22 requires the same XP as training a skill with 0 aptitude from 0 to 20.5, or skill with -1 aptitude from 0 to 19.1, or -2 aptitude from 0 to 17.8, or -3 aptitude to 16.5. http://ianberrigan.com/


I was just responding to TeshiAlair. Should've used quotes. :)

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Wednesday, 9th April 2014, 14:11

Re: Interest check: easy skills comparison

Arrhythmia wrote:The problem I have with this is it wouldn't tell me the information that is directly important to me. Like it is cool and I can see how for a very certain set of people learning how much XP you're wasting is cool, but usually I'm more interested in EV than dodging, fail-rate instead of spell-school level, etc.


I would be happy if we displayed all those things but I don't think devs will accept it.

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Wednesday, 9th April 2014, 14:13

Re: Interest check: easy skills comparison

WalkerBoh wrote:I was just responding to TeshiAlair. Should've used quotes. :)


Yes, I realized you were responding to TeshiAlair. I just mentioned that skill level 27 is not that special, there is no magic number in skills training.

Shoals Surfer

Posts: 329

Joined: Tuesday, 7th May 2013, 17:09

Post Wednesday, 9th April 2014, 15:09

Re: Interest check: easy skills comparison

I think this is a good idea. While it may be information overload for the newest players, there are a pretty large group of somewhat experienced players who I suspect don't realize how expensive the last few skill levels are. Diversifying your skills somewhat to take advantage of this is very important to good play, IMO, and I think this kind of addition would promote better behavior.

For this message the author ackack has received thanks:
Sandman25

Vaults Vanquisher

Posts: 508

Joined: Tuesday, 1st November 2011, 00:36

Post Wednesday, 9th April 2014, 15:54

Re: Interest check: easy skills comparison

An option to display the relative cost of 1 more level in each skill sounds simplest to me.

For this message the author Leafsnail has received thanks: 2
Arrhythmia, vulsuck

Tartarus Sorceror

Posts: 1776

Joined: Monday, 21st February 2011, 15:57

Location: South Carolina

Post Wednesday, 9th April 2014, 16:14

Re: Interest check: easy skills comparison

The most common question I would use this to answer is, "Is it cheaper to train conjurations or the elemental school to increase damage from this spell?"

For anything other than spell schools, "Do I need damage or defense" or "what kind of defense do I need" is more important than XP costs.

Shoals Surfer

Posts: 329

Joined: Tuesday, 7th May 2013, 17:09

Post Wednesday, 9th April 2014, 18:45

Re: Interest check: easy skills comparison

jejorda2 wrote:The most common question I would use this to answer is, "Is it cheaper to train conjurations or the elemental school to increase damage from this spell?"

For anything other than spell schools, "Do I need damage or defense" or "what kind of defense do I need" is more important than XP costs.


I would say this is pretty much backwards. For a single spell the solution is easy: just train all relevant schools at once. While there are some situations where this isn't best, I would say the most notable is if you already have very imbalanced skills. If you're balancing basically all the time in this fashion then it will usually do quite well.

For other skills, knowing the cost vs. the relative gain is indeed important. I don't think you need to know precise numbers, but it is important to know that skills start very cheap and end very expensive. Combined with the prevalence of step-down effects on a lot of things (e.g. spellpower), this means that the marginal gain from training skills high is often very, very low.

IMO the true question you want the answer to is always "what will improve my character most right now?" This is a question where xp efficiency often matters a great deal.

Vaults Vanquisher

Posts: 508

Joined: Tuesday, 1st November 2011, 00:36

Post Wednesday, 9th April 2014, 19:47

Re: Interest check: easy skills comparison

What I'd really like is an "auto-train this spell up to a given failure level" but I'm not sure if that's even possible.

Mines Malingerer

Posts: 37

Joined: Thursday, 20th February 2014, 04:47

Post Wednesday, 9th April 2014, 21:24

Re: Interest check: easy skills comparison

The virtual potion of experience seems somewhat complicated to me. Would you pick a skill to level up and it would tell you how far it leveled up for some arbitrary amount of xp?

What if it was more like the spell power/hunger screen? The m screen could show the relative amount of xp required for 1 level of skill instead of your aptitude like this:

letter - skill - level - xp cost
a - SB - 12 - ###...
b - LB - 0 -- #.....

and so on

This actually seems like much more useful information than aptitudes which seem really misleading to newer players.

Shoals Surfer

Posts: 300

Joined: Tuesday, 19th February 2013, 23:34

Post Wednesday, 9th April 2014, 23:30

Re: Interest check: easy skills comparison

vulsuck wrote:What if it was more like the spell power/hunger screen? The m screen could show the relative amount of xp required for 1 level of skill instead of your aptitude like this:

letter - skill - level - xp cost
a - SB - 12 - ###...
b - LB - 0 -- #.....

and so on


The problem here is that it's non-linear and that level graph implies linearity.

Zot Zealot

Posts: 1031

Joined: Friday, 26th April 2013, 19:52

Location: AZ, USA

Post Wednesday, 9th April 2014, 23:41

Re: Interest check: easy skills comparison

Then again, using linear numbers for skill levels (xl1,2,3...) also implies linearity... :wink:

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Thursday, 10th April 2014, 13:23

Re: Interest check: easy skills comparison

I am going to add a command to skills screen which will display modified "potion of experience" screen with ability to use up to 9 potions of experience (useful late game when a single potion of experience barely increases a single skill), it will cover most needs. Even if the patch is not accepted, I will use it personally so it won't be a wasted effort and it should be relatively easy to implement.

Crypt Cleanser

Posts: 746

Joined: Thursday, 5th December 2013, 04:01

Post Thursday, 10th April 2014, 16:36

Re: Interest check: easy skills comparison

vulsuck wrote:The virtual potion of experience seems somewhat complicated to me. Would you pick a skill to level up and it would tell you how far it leveled up for some arbitrary amount of xp?


Personally, I'm imagining something that looks exactly like the current potion of experience interface. You pick a skill training configuration (could be manual or auto, can mark any skills you want as trained (+) or specialized (*)), and it shows you how much the skills will increase for some amount of experience. The only difference is that when you leave the screen, your skills don't actually increase by that much. The idea is just that if you could bring up the interface that appears when you drink a potion of experience any time you wanted, you would always be able to see the relative amounts your skills will increase with experience for any training configuration.

WalkerBoh wrote:Then again, using linear numbers for skill levels (xl1,2,3...) also implies linearity... :wink:


Not necessarily. Character levels have increasing skill requirements, I don't find it unintuitive that skill levels do too. The thing that I think is opaque is how steeply the required XP for skills increases, not the fact that it does.

Mines Malingerer

Posts: 37

Joined: Thursday, 20th February 2014, 04:47

Post Thursday, 10th April 2014, 16:39

Re: Interest check: easy skills comparison

HenryFlower wrote:
vulsuck wrote:What if it was more like the spell power/hunger screen? The m screen could show the relative amount of xp required for 1 level of skill instead of your aptitude like this:

letter - skill - level - xp cost
a - SB - 12 - ###...
b - LB - 0 -- #.....

and so on


The problem here is that it's non-linear and that level graph implies linearity.


So you mean that it would falsely imply that you could get 3 levels of long blades for the same xp as 1 level of short blades when the reality is that sometimes you would get 2 and sometimes 6? That's a fair point, but I agree with WalkerBoh: the current system implies linearity when none exists.

Zot Zealot

Posts: 1031

Joined: Friday, 26th April 2013, 19:52

Location: AZ, USA

Post Thursday, 10th April 2014, 17:02

Re: Interest check: easy skills comparison

Sandman, I don't know how easy it is code-wise but it would be better if the base amount scaled with player xl - I believe this is less clunky than selecting a # of exp potions. I suggest using the base amount of exp as equal to the amount of exp it will take the player to gain one level (I.e if you're at xl 15.64, the base exp is the amount to get to xl 16.64). Once you get to xl 27, just set it to a fixed maximum value.

Abyss Ambulator

Posts: 1205

Joined: Friday, 8th November 2013, 17:02

Post Thursday, 10th April 2014, 17:24

Re: Interest check: easy skills comparison

I would be very interested in a feature like this. I like the virtual XP potion idea, but what about this?
In the skills interface, press a certain button to switch to "XP Check mode". Then, pick a base skill, then a second skill.
The game then shows the amount you would gain in the second skill, based on the XP to raise the base skill by one level.

For example, a player has spellcasting 20, and charms 10. He presses the button, selects spellcasting, then charms. Then he is shown that charms would increase to 14.5 (obviously made up number) for the same cost as increasing spellcasting to 21.

This way it's always relevant to the actual character using it, as he would select skills for the comparison that he's actually thinking of training.

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Thursday, 10th April 2014, 18:06

Re: Interest check: easy skills comparison

WalkerBoh wrote:Sandman, I don't know how easy it is code-wise but it would be better if the base amount scaled with player xl - I believe this is less clunky than selecting a # of exp potions. I suggest using the base amount of exp as equal to the amount of exp it will take the player to gain one level (I.e if you're at xl 15.64, the base exp is the amount to get to xl 16.64). Once you get to xl 27, just set it to a fixed maximum value.


I will use the same skill points increase as for potion of experience: 750 * XL.
Also I would like to be able to let player see different situations for both short term and long term training so player will be able to use 2*750*XL, 3*750*XL..., 9*750*XL.

Tomb Titivator

Posts: 853

Joined: Thursday, 29th August 2013, 18:39

Post Thursday, 10th April 2014, 18:07

Re: Interest check: easy skills comparison

I think Arrhythmia is right - it doesn't seem very useful for me to be able to estimate how much XP it will take for me to get one dodging skill level if I don't also know how that will translate into EV, ditto for spell schools/failure chance. I don't think this would be very helpful. If you wanted to do skill-specific annotations for 1 EV, 1 AC, 1 HP, some failure rate thing, it's a lot more complicated but maybe it is worth it - I don't think this would help much at all.

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Thursday, 10th April 2014, 18:08

Re: Interest check: easy skills comparison

damiac wrote:I would be very interested in a feature like this. I like the virtual XP potion idea, but what about this?
In the skills interface, press a certain button to switch to "XP Check mode". Then, pick a base skill, then a second skill.
The game then shows the amount you would gain in the second skill, based on the XP to raise the base skill by one level.

For example, a player has spellcasting 20, and charms 10. He presses the button, selects spellcasting, then charms. Then he is shown that charms would increase to 14.5 (obviously made up number) for the same cost as increasing spellcasting to 21.

This way it's always relevant to the actual character using it, as he would select skills for the comparison that he's actually thinking of training.


This is much harder to implement, I will try an easy approach first.

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Thursday, 10th April 2014, 18:10

Re: Interest check: easy skills comparison

johlstei wrote:I think Arrhythmia is right - it doesn't seem very useful for me to be able to estimate how much XP it will take for me to get one dodging skill level if I don't also know how that will translate into EV, ditto for spell schools/failure chance. I don't think this would be very helpful. If you wanted to do skill-specific annotations for 1 EV, 1 AC, 1 HP, some failure rate thing, it's a lot more complicated but maybe it is worth it - I don't think this would help much at all.


Primary goal is to help relatively new players realize huge difference between low and high skill levels. Secondary goal is to help advanced players who already can at least estimate how much EV/AC they will get from Dodging/Armour. We can always improve it, let's start with something simple and see if it gets accepted first.

Shoals Surfer

Posts: 329

Joined: Tuesday, 7th May 2013, 17:09

Post Thursday, 10th April 2014, 18:17

Re: Interest check: easy skills comparison

johlstei wrote:I think Arrhythmia is right - it doesn't seem very useful for me to be able to estimate how much XP it will take for me to get one dodging skill level if I don't also know how that will translate into EV . . .


Why stop there? Certainly you want to know how 1 more EV affects the average damage you take from a wide variety of possible monsters!

I think it is good to make clear that marginal skill points get hugely more expensive at high skill levels, but I think doing much beyond that is just information overload. (I'm sure a sizable chunk of the Crawl cognoscenti feel that even the original proposal here is information overload.)

For this message the author ackack has received thanks:
Sandman25

Tomb Titivator

Posts: 853

Joined: Thursday, 29th August 2013, 18:39

Post Thursday, 10th April 2014, 19:40

Re: Interest check: easy skills comparison

Can't we just put something saying that in the manual/tutorial then? Perhaps something in the menu saying: "xp required to level up a skill greatly increases as skill level increases". I think both my "proposal" and the OP's are information overload and unnecessary, but at least mine translates into something concrete. It'd be one thing if skill levels actually represented something discrete instead of continuous, but right now is there anything besides weapon skills where a single level marker means anything?

Like obviously there an be some balance here - I also don't think we should remove the skill level display entirely and just tell the user "very skilled", I'm just not convinced the ui overhead here provides the user with any information that they need to see as soon as they learn that one bit of information, namely that XP requirements go up as skill level goes up. It'd be one thing if it were something that needed to be seen over and over, but it's not...

Dungeon Master

Posts: 1613

Joined: Thursday, 16th December 2010, 21:54

Post Thursday, 10th April 2014, 19:49

Re: Interest check: easy skills comparison

johlstei wrote:Can't we just put something saying that in the manual/tutorial then? Perhaps something in the menu saying: "xp required to level up a skill greatly increases as skill level increases".

This seems like something that has a chance of being added, yes (to the skill help screen somewhere, perhaps).
User avatar

Barkeep

Posts: 1788

Joined: Saturday, 29th June 2013, 16:52

Post Thursday, 10th April 2014, 20:04

Re: Interest check: easy skills comparison

Well, in that case, the problem switches to how specific you want that help page to be. It hasn't seen a revision in awhile, I think; the mention of axes skill leveling when casting spells not being a "bug" suggests it hasn't been substantially rewritten since the switch from the XP pool, anyway. The menu probably shouldn't show you a table of XP cost per skill level, but simply saying "Each level of a skill costs more XP" may imply linear growth.

Zot Zealot

Posts: 1031

Joined: Friday, 26th April 2013, 19:52

Location: AZ, USA

Post Thursday, 10th April 2014, 20:09

Re: Interest check: easy skills comparison

Sandman's tool is also useful though in that it takes your apts into account. I'm not saying I would use this tool often, but it certainly can be useful for the player to get a more informed idea of how efficiently their xp is being used.

For this message the author WalkerBoh has received thanks: 2
damiac, Sandman25

Dungeon Master

Posts: 1613

Joined: Thursday, 16th December 2010, 21:54

Post Thursday, 10th April 2014, 20:13

Re: Interest check: easy skills comparison

archaeo wrote:Well, in that case, the problem switches to how specific you want that help page to be. It hasn't seen a revision in awhile, I think; the mention of axes skill leveling when casting spells not being a "bug" suggests it hasn't been substantially rewritten since the switch from the XP pool, anyway.

http://s-z.org/neil/git/?p=crawl.git;a= ... 145ef550df

For this message the author Kate has received thanks:
archaeo
User avatar

Barkeep

Posts: 1788

Joined: Saturday, 29th June 2013, 16:52

Post Thursday, 10th April 2014, 21:16

Re: Interest check: easy skills comparison



That'll teach me to just look at my offline 0.13 build for things like that.

So, why not just add to the section of the skill help page that begins "How fast you train a skill is governed by the following factors:"? Say, something like "current mastery: As you get closer to mastering a skill it becomes increasingly harder to train, requiring more experience for each level." You could get more specific, describing the curve ("The experience necessary for each full level of a skill increases at a [whatever] rate") or even just giving a useful and basic comparison ("Training a skill from level x to y requires as much experience as a to b.").

I'd just submit a patch to this effect if I understood the first thing about putting them together, apologies.

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Friday, 11th April 2014, 00:18

Re: Interest check: easy skills comparison

I started testing and found some weird behavior of experience potion. Unfortunately there is little sense to share the patch as long as it cannot display correct information.

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Friday, 11th April 2014, 00:37

Re: Interest check: easy skills comparison

Oops, I analyzed potion of experience source code and it looks like this feature will not be accepted because skills are trained in random order so crosstraining and antitraining lead to inconsistent skills increase and I believe it is a bad idea to display it to players.

But I will create and share the patch anyway for those who want to compile it themselves.

Crypt Cleanser

Posts: 746

Joined: Thursday, 5th December 2013, 04:01

Post Friday, 11th April 2014, 02:17

Re: Interest check: easy skills comparison

Sandman25 wrote:Oops, I analyzed potion of experience source code and it looks like this feature will not be accepted because skills are trained in random order so crosstraining and antitraining lead to inconsistent skills increase and I believe it is a bad idea to display it to players.

But I will create and share the patch anyway for those who want to compile it themselves.


How does the potion of experience pick which number to show then?

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Friday, 11th April 2014, 02:58

Re: Interest check: easy skills comparison

The patch is added to mantis.

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Friday, 11th April 2014, 03:02

Re: Interest check: easy skills comparison

Quazifuji wrote:How does the potion of experience pick which number to show then?


Short answer - training skills in random order.

Long answer is below

  Code:
void train_skills(bool simu)
{
    int cost, exp;
    do
    {
        cost = calc_skill_cost(you.skill_cost_level);
        exp = you.exp_available;
        if (you.skill_cost_level == 27)
            _train_skills(exp, cost, simu);
        else
        {
            // Amount of experience points needed to reach the next skill cost level
            const int next_level = skill_cost_needed(you.skill_cost_level + 1)
                                   - you.total_experience;
            ASSERT(next_level > 0);
            _train_skills(min(exp, next_level + cost - 1), cost, simu);
        }
    }
    while (you.exp_available >= cost && exp != you.exp_available);

    for (int i = 0; i < NUM_SKILLS; ++i)
        check_skill_level_change(static_cast<skill_type>(i), !simu);

    // We might have disabled some skills on level up.
    reset_training();
}

//#define DEBUG_TRAINING_COST
static void _train_skills(int exp, const int cost, const bool simu)
{
    bool skip_first_phase = false;
    int magic_gain = 0;
    FixedVector<int, NUM_SKILLS> sk_exp;
    sk_exp.init(0);
    vector<skill_type> training_order;
#ifdef DEBUG_DIAGNOSTICS
    FixedVector<int, NUM_SKILLS> total_gain;
    total_gain.init(0);
#endif
#ifdef DEBUG_TRAINING_COST
    int exp_pool = you.exp_available;
    dprf("skill cost level: %d, cost: %dxp/10skp, max XP usable: %d.",
         you.skill_cost_level, cost, exp);
#endif

    // We scale the training array to the amount of XP available in the pool.
    // That gives us the amount of XP available to train each skill.
    for (int i = 0; i < NUM_SKILLS; ++i)
        if (you.training[i] > 0)
        {
            sk_exp[i] = you.training[i] * exp / 100;
            if (sk_exp[i] < cost)
            {
                // One skill has a too low training to be trained at all.
                // We skip the first phase and go directly to the random
                // phase so it has a chance to be trained.
                skip_first_phase = true;
                break;
            }
            training_order.push_back(static_cast<skill_type>(i));
        }

    if (!skip_first_phase)
    {
        // We randomize the order, to avoid a slight bias to first skills.
        // Being trained first can make a difference if skill cost increases.
        shuffle_array(training_order);
        for (vector<skill_type>::iterator it = training_order.begin();
             it != training_order.end(); ++it)
        {
            skill_type sk = *it;
            int gain = 0;

            while (sk_exp[sk] >= cost && you.training[sk])
            {
                exp -= sk_exp[sk];
                gain += _train(sk, sk_exp[sk], simu);
                exp += sk_exp[sk];
                ASSERT(exp >= 0);
                if (_level_up_check(sk, simu))
                    sk_exp[sk] = 0;
            }

            if (gain && is_magic_skill(sk))
                magic_gain += gain;

#ifdef DEBUG_DIAGNOSTICS
           total_gain[sk] += gain;
#endif
        }
    }
    // If there's enough xp in the pool, we use it to train skills selected
    // with random_choose_weighted.
    while (exp >= cost)
    {
        int gain;
        skill_type sk = SK_NONE;
        if (!skip_first_phase)
            sk = static_cast<skill_type>(random_choose_weighted(sk_exp));
        if (is_invalid_skill(sk))
            sk = static_cast<skill_type>(random_choose_weighted(you.training));
        if (!is_invalid_skill(sk))
        {
            gain = _train(sk, exp, simu);
            ASSERT(exp >= 0);
            sk_exp[sk] = 0;
        }
        else
        {
            // No skill to train. Can happen if all skills are at 27.
            break;
        }

        _level_up_check(sk, simu);

        if (gain && is_magic_skill(sk))
            magic_gain += gain;

#ifdef DEBUG_DIAGNOSTICS
        total_gain[sk] += gain;
#endif
    }

#ifdef DEBUG_DIAGNOSTICS
    if (!crawl_state.script)
    {
#ifdef DEBUG_TRAINING_COST
        int total = 0;
#endif
        for (int i = 0; i < NUM_SKILLS; ++i)
        {
            skill_type sk = static_cast<skill_type>(i);
            if (total_gain[sk] && !simu)
                dprf("Trained %s by %d.", skill_name(sk), total_gain[sk]);
#ifdef DEBUG_TRAINING_COST
            total += total_gain[sk];
        }
        dprf("Total skill points gained: %d, cost: %d XP.",
             total, exp_pool - you.exp_available);
#else
        }
#endif
    }
#endif

    // Avoid doubly rewarding spell practise in sprint
    // (by inflated XP and inflated piety gain)
    if (crawl_state.game_is_sprint())
        magic_gain = sprint_modify_exp_inverse(magic_gain);

    if (magic_gain && !simu)
        did_god_conduct(DID_SPELL_PRACTISE, magic_gain);
}

Ziggurat Zagger

Posts: 11111

Joined: Friday, 8th February 2013, 12:00

Post Friday, 11th April 2014, 03:12

Re: Interest check: easy skills comparison

For those who doubt usefulness:
I got some useful info for my current character (KoAm): training Translocation from 12.9 to 14.8 takes the same XP as training Necromancy from 0.0 to 8.2. Did you know that? :)
Both skills have aptitude 0, I expect bigger surprises from skills with different aptitudes, I am not even able to estimate exponential/logarithmic functions.

For this message the author Sandman25 has received thanks: 2
Arrhythmia, johlstei

Return to Game Design Discussion

Who is online

Users browsing this forum: No registered users and 72 guests

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.