Ease of use improvements needed in .21


If it doesn't fit anywhere else, it belongs here. Also, come here if you just need to get hammered.

Ziggurat Zagger

Posts: 6454

Joined: Tuesday, 30th October 2012, 19:06

Post Monday, 14th August 2017, 16:22

Re: Ease of use improvements needed in .21

advil wrote:
VeryAngryFelid wrote:
Shtopit wrote:This one is huge, but it would be nice to have an actual "options" menu with a GUI, instead of an rc file to edit.


It is not even hard to do (I did something like that in 2 programming languages but I don't know C++ good enough). It can take literally 2-3 days I believe. Seriously, dynamically creating a row with label, combobox and 1-2 textboxes is trivial. Storing data into options_guide.txt file is trivial too and we already have parsing in place.


I think this is something that there would be general interest in, so patches (even partial implementations as a way of getting things started) would be welcome. (That goes for a lot of things in this thread, fwiw!)

2-3 days is a drastic underestimate though. Factoring in getting this to work across all three build targets (not just webtiles), all the necessary testing / design iteration, and crawlcode, I would personally probably budget months of spare-time work, maybe about an entire version cycle, which I suspect is why no one's done this yet. At less spare-time speeds (and also a probably more accurate estimate than mine), Neil's estimate for a prototype is about 1 week of sitting down and working on nothing else.

It is probably a solid 30-40 hours of work for a reasonably solid user interface for all three targets with a robust usable ui. One could do that amount of work in 2-3 days of one was properly motivated and didn't take good care of oneself. That doesn't include all the cleaning up, that is just to get it to the stage at which a reasonable person could test it and tell you what else needed doing. (Going from prototype to finished product usually takes 1-2X on top of the initial development investment)

For a much poorer interface, you could probably make a basic "promp for the option you want to set then prompt for the value" interface in about 8-10 hours (but that might be macroable, which would let you set up keystrokes to quickly swap given options on/off, which is what i, personally, would want from it)

For another crappy, but still all in game solution, a super simple text editor to edit the options file and the ability to reload that on the fly would also probably be around 10-15 hours.

Shoving a simple "reload the options file" with no in game editor at all would probably take about 2-3 hours, but wouldn't accomplish most of the desired goals.
Spoiler: show
This high quality signature has been hidden for your protection. To unlock it's secret, send 3 easy payments of $9.99 to me, by way of your nearest theta band or ley line. Complete your transmission by midnight tonight for a special free gift!
User avatar

Dungeon Master

Posts: 502

Joined: Wednesday, 7th March 2012, 13:25

Location: Lexington, KY, US

Post Monday, 14th August 2017, 16:41

Re: Ease of use improvements needed in .21

Siegurt wrote:For a much poorer interface, you could probably make a basic "promp for the option you want to set then prompt for the value" interface in about 8-10 hours (but that might be macroable, which would let you set up keystrokes to quickly swap given options on/off, which is what i, personally, would want from it)


That part is actually much easier than you think. In your rcfile put:
  Code:
{
  local function prompt(str)
    crawl.formatted_mpr(str, "prompt")
    return crawl.c_input_line()
  end

  function set_option()
    opt = prompt("Set which option? ")
    val = prompt("Enter a new value for " .. opt .. ": ")

    crawl.setopt(opt .. " = " .. val)
  end
}


Then macro a key to ===set_option. It doesn't do any validation, though.

For swapping specific options on/off from a key, I recommend writing specific Lua functions that do the appropriate crawl.set_opt, then binding macros to those functions with ===.

Edit: You can also do something similar to reload the rc with crawl.setopt("include = username.rc") or crawl.setopt("include = init.txt"), but most people's config files aren't idempotent. A real implementation would reset all options to default, then load the default settings, then reload the player's rc. That would be much easier to do from C++, because there it's just a single function call read_init_file().

Ziggurat Zagger

Posts: 6454

Joined: Tuesday, 30th October 2012, 19:06

Post Monday, 14th August 2017, 16:56

Re: Ease of use improvements needed in .21

neil wrote:
Siegurt wrote:For a much poorer interface, you could probably make a basic "promp for the option you want to set then prompt for the value" interface in about 8-10 hours (but that might be macroable, which would let you set up keystrokes to quickly swap given options on/off, which is what i, personally, would want from it)


That part is actually much easier than you think. In your rcfile put:
  Code:
{
  local function prompt(str)
    crawl.formatted_mpr(str, "prompt")
    return crawl.c_input_line()
  end

  function set_option()
    opt = prompt("Set which option? ")
    val = prompt("Enter a new value for " .. opt .. ": ")

    crawl.setopt(opt .. " = " .. val)
  end
}


Then macro a key to ===set_option. It doesn't do any validation, though.

For swapping specific options on/off from a key, I recommend writing specific Lua functions that do the appropriate crawl.set_opt, then binding macros to those functions with ===.

Edit: You can also do something similar to reload the rc with crawl.setopt("include = username.rc") or crawl.setopt("include = init.txt"), but most people's config files aren't idempotent. A real implementation would reset all options to default, then load the default settings, then reload the player's rc. That would be much easier to do from C++, because there it's just a single function call read_init_file().


Ah i didn't know there was a lua hook for it already. That makes it fairly scriptable already.
Spoiler: show
This high quality signature has been hidden for your protection. To unlock it's secret, send 3 easy payments of $9.99 to me, by way of your nearest theta band or ley line. Complete your transmission by midnight tonight for a special free gift!

Ziggurat Zagger

Posts: 4432

Joined: Friday, 8th May 2015, 17:51

Post Tuesday, 15th August 2017, 04:38

Re: Ease of use improvements needed in .21

Ok, 2-3 days for 1 version, 4-6 for both. I don't think it is possible in console so I was talking about tiles. I am sure one month is a big overestimation
Underestimated: cleaving, Deep Elf, Formicid, Vehumet, EV
Overestimated: AC, GDS
Twin account of Sandman25

Ziggurat Zagger

Posts: 4432

Joined: Friday, 8th May 2015, 17:51

Post Tuesday, 15th August 2017, 05:28

Re: Ease of use improvements needed in .21

Maybe I am wrong. I have just googled a bit and found comboboxes in c++ builder, qt, gtk. So I am not sure crawl can incorporate any of these and writing own combobox is an awful idea of course
Underestimated: cleaving, Deep Elf, Formicid, Vehumet, EV
Overestimated: AC, GDS
Twin account of Sandman25

Ziggurat Zagger

Posts: 6454

Joined: Tuesday, 30th October 2012, 19:06

Post Tuesday, 15th August 2017, 05:35

Re: Ease of use improvements needed in .21

VeryAngryFelid wrote:Maybe I am wrong. I have just googled a bit and found comboboxes in c++ builder, qt, gtk. So I am not sure crawl can incorporate any of these and writing own combobox is an awful idea of course

Yeah, none of that is available, if you don't have to build your own multi-OS interface, it's much easier. I had kind of assumed you were coming from the "well of course you're developing for a gui interface that already has generic controls built for you" point of view, if you're starting from there, yes, it's much faster, and no that isn't what crawl is made for, and no you can't incorporate any of those into crawl.
Spoiler: show
This high quality signature has been hidden for your protection. To unlock it's secret, send 3 easy payments of $9.99 to me, by way of your nearest theta band or ley line. Complete your transmission by midnight tonight for a special free gift!

Ziggurat Zagger

Posts: 4432

Joined: Friday, 8th May 2015, 17:51

Post Tuesday, 15th August 2017, 06:46

Re: Ease of use improvements needed in .21

Siegurt wrote:Yeah, none of that is available, if you don't have to build your own multi-OS interface, it's much easier. I had kind of assumed you were coming from the "well of course you're developing for a gui interface that already has generic controls built for you" point of view, if you're starting from there, yes, it's much faster, and no that isn't what crawl is made for, and no you can't incorporate any of those into crawl.


Yes, I was expecting we already can use some combobox so my estimations are completely wrong now.
I just didn't expect C++ to be that bad :(
Underestimated: cleaving, Deep Elf, Formicid, Vehumet, EV
Overestimated: AC, GDS
Twin account of Sandman25

Ziggurat Zagger

Posts: 6454

Joined: Tuesday, 30th October 2012, 19:06

Post Tuesday, 15th August 2017, 06:53

Re: Ease of use improvements needed in .21

VeryAngryFelid wrote:
Siegurt wrote:Yeah, none of that is available, if you don't have to build your own multi-OS interface, it's much easier. I had kind of assumed you were coming from the "well of course you're developing for a gui interface that already has generic controls built for you" point of view, if you're starting from there, yes, it's much faster, and no that isn't what crawl is made for, and no you can't incorporate any of those into crawl.


Yes, I was expecting we already can use some combobox so my estimations are completely wrong now.
I just didn't expect C++ to be that bad :(

It's not "bad", it's just low level, in order to make something cross-platform you need to have a layer that abstracts the interface for you, usually written in a low level language, like C or C++, a higher level language interface (like the above mentioned ones) are all toolkits written *in* a low level language *for* a higher level language to use to communicate abstractly with the machine. Crawl has *it's very own* interface, written just for it, so everything you want to add to it, you have to do yourself.

That's like calling a car engine bad because it doesn't come with a steering wheel attached.
Spoiler: show
This high quality signature has been hidden for your protection. To unlock it's secret, send 3 easy payments of $9.99 to me, by way of your nearest theta band or ley line. Complete your transmission by midnight tonight for a special free gift!

Ziggurat Zagger

Posts: 4432

Joined: Friday, 8th May 2015, 17:51

Post Tuesday, 15th August 2017, 07:27

Re: Ease of use improvements needed in .21

I would agree with you if Java, .Net and cross-platform Delphi didn't exist. C++ is old and currently bad for DCSS.
I mean DCSS is a game, not a platform for writing other games, there was no need to use so low level language for it.
Anyway, it's a pointless discussion now :(
Underestimated: cleaving, Deep Elf, Formicid, Vehumet, EV
Overestimated: AC, GDS
Twin account of Sandman25
User avatar

Ziggurat Zagger

Posts: 4478

Joined: Wednesday, 23rd October 2013, 07:56

Post Tuesday, 15th August 2017, 09:36

Re: Ease of use improvements needed in .21

VeryAngryFelid wrote:I would agree with you if Java, .Net and cross-platform Delphi didn't exist. C++ is old and currently bad for DCSS.
I mean DCSS is a game, not a platform for writing other games, there was no need to use so low level language for it.

DCSS was not written from scratch and I don't think Java, .Net or Delphi existed when Linley started coding Dungeon Crawl :)
DCSS: 97:...MfCj}SpNeBaEEGrFE{HaAKTrCK}DsFESpHu{FoArNaBe}
FeEE{HOIEMiAE}GrGlHuWrGnWrNaAKBaFi{MiDeMfDe}{DrAKTrAMGhEnGnWz}
{PaBeDjFi}OgAKPaCAGnCjOgCKMfAEAtCKSpCjDEEE{HOSu
Bloat: 17: RaRoPrPh{GuStGnCa}{ArEtZoNb}KiPaAnDrBXDBQOApDaMeAGBiOCNKAsFnFlUs{RoBoNeWi

For this message the author Sprucery has received thanks:
VeryAngryFelid

Tomb Titivator

Posts: 853

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

Post Wednesday, 13th September 2017, 21:31

Re: Ease of use improvements needed in .21

There is maintained ui code that only functions in one of the three uis already. I think having the options editor in webtiles is probably good enough. I play console exclusively but I still go on webtiles when I want to edit my rcfile, that's really not bad. Maybe a validator for the existing one would be enough? Offline players could do it once too and then export their config.

This isn't a feature I'd ever spend time on writing, the benefit to me personally is too low and my time is limited, but I think it probably would do a lot of good for less savvy new players.

Mouse support for webtiles and console is probably a way bigger win as far as ui improvements though.

EDIT: sorry for bumping a month-old thread I guess, hope my ramblings were worth it
User avatar

Tartarus Sorceror

Posts: 1698

Joined: Saturday, 18th June 2016, 13:57

Post Saturday, 16th September 2017, 12:19

Re: Ease of use improvements needed in .21

Modify autopickup, so that you don't end up with 3 rings of fire.
I Feel the Need--the Need for Beer
Spoiler: show
3DSBeTr 15DSFiRu 3DSMoNe 3FoHuGo 3TrArOk 3HOFEVe 3MfGlOk 4GrEEVe 3BaIEChei 3HuMoOka 3MiWnQaz 3VSFiAsh 3DrTmMakh 3DSCKXom 3OgMoOka 3NaFiOka 3FoFiOka 3MuFEVeh 3CeHuOka 3TrMoTSO 3DEFESif 3DSMoOka 3DSFiOka

For this message the author Shtopit has received thanks: 3
nago, Rast, VeryAngryFelid

Temple Termagant

Posts: 14

Joined: Saturday, 15th April 2017, 17:43

Post Saturday, 16th September 2017, 21:01

Re: Ease of use improvements needed in .21

What about the edge-case scenario of the macabre finger necklace?

For this message the author Monsterracer has received thanks:
Shtopit
User avatar

Tartarus Sorceror

Posts: 1698

Joined: Saturday, 18th June 2016, 13:57

Post Saturday, 16th September 2017, 23:26

Re: Ease of use improvements needed in .21

...so that you don't end up with 4, unless you are an octopode?

EDIT: scrap that, have autopickup only pick 3 rings of the same kind if you already have the finger. Nothing stops you from manually picking up more stuff, anyway. Octopode exception should still apply.
Last edited by Shtopit on Sunday, 17th September 2017, 15:38, edited 1 time in total.
I Feel the Need--the Need for Beer
Spoiler: show
3DSBeTr 15DSFiRu 3DSMoNe 3FoHuGo 3TrArOk 3HOFEVe 3MfGlOk 4GrEEVe 3BaIEChei 3HuMoOka 3MiWnQaz 3VSFiAsh 3DrTmMakh 3DSCKXom 3OgMoOka 3NaFiOka 3FoFiOka 3MuFEVeh 3CeHuOka 3TrMoTSO 3DEFESif 3DSMoOka 3DSFiOka
User avatar

Tartarus Sorceror

Posts: 1698

Joined: Saturday, 18th June 2016, 13:57

Post Sunday, 17th September 2017, 09:23

Re: Ease of use improvements needed in .21

Have scarves identify like amulets, so you don't have to identify each single one you find on the ground, but only one each kind.
I Feel the Need--the Need for Beer
Spoiler: show
3DSBeTr 15DSFiRu 3DSMoNe 3FoHuGo 3TrArOk 3HOFEVe 3MfGlOk 4GrEEVe 3BaIEChei 3HuMoOka 3MiWnQaz 3VSFiAsh 3DrTmMakh 3DSCKXom 3OgMoOka 3NaFiOka 3FoFiOka 3MuFEVeh 3CeHuOka 3TrMoTSO 3DEFESif 3DSMoOka 3DSFiOka

For this message the author Shtopit has received thanks: 2
nago, VeryAngryFelid
User avatar

Tartarus Sorceror

Posts: 1698

Joined: Saturday, 18th June 2016, 13:57

Post Sunday, 17th September 2017, 10:40

Re: Ease of use improvements needed in .21

If I'm wearing a ring of magical power and a ring of rCorr, and I try put on a ring of magical power, don't ask me if I want to wear a ring of magical power instead of my ring of magical power, just put it on instead of rCorr. (add exception for Ash)

Also, rename ring of magical power, because spell power is another thing.
I Feel the Need--the Need for Beer
Spoiler: show
3DSBeTr 15DSFiRu 3DSMoNe 3FoHuGo 3TrArOk 3HOFEVe 3MfGlOk 4GrEEVe 3BaIEChei 3HuMoOka 3MiWnQaz 3VSFiAsh 3DrTmMakh 3DSCKXom 3OgMoOka 3NaFiOka 3FoFiOka 3MuFEVeh 3CeHuOka 3TrMoTSO 3DEFESif 3DSMoOka 3DSFiOka

For this message the author Shtopit has received thanks: 3
Blomdor, Rast, VeryAngryFelid

Blades Runner

Posts: 548

Joined: Monday, 23rd March 2015, 05:29

Post Sunday, 17th September 2017, 19:27

Re: Ease of use improvements needed in .21

Shtopit wrote:Have scarves identify like amulets, so you don't have to identify each single one you find on the ground, but only one each kind.


do this with egos in general on all items

For this message the author yesno has received thanks: 2
Blomdor, Rast
Previous

Return to Crazy Yiuf's Corner

Who is online

Users browsing this forum: No registered users and 25 guests

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