Přejít na obsah


Fotka

překrývací dialogy


  • Zamčené téma Toto téma je zamknuto
4 odpovědí na toto téma

#1 matejcik

matejcik

    Advanced Member

  • Members
  • PipPipPip
  • 389 příspěvků(y)

Publikováno 06 duben 2008 - 2:04

jak píšou ve Wherigo Advanced Concepts, dialogy se navzájem překrývají, a když se objeví nový dialog, tak ten pod ním se automaticky zruší.

Připadá mi to poněkud blbé, místy až k ničemu. Mnohem lepší by podle mě bylo, kdyby se vrstvily na sebe a po odkliknutí toho nejhořejšího se vrátil ten pod ním. (co kdyby mi třeba timer smazal nějakou důležitou zprávu, nebo co kdybych s nedočteným dialogem vylezl ze zóny, OnExit by mi ho zrušil, a já už bych se k němu nemohl nijak dostat?)

připadá mi, že zrovna v tomhle bych se mohl s OpenWIGem od oficiálního Playeru odchýlit celkem bez následků (jediná cartridge, kde by to vadilo, je asi Zooventure Level Two, ale ta je koneckonců blbě napsaná ;e) ). a shodou okolností jsou ty "vrstvící" dialogy implementačně jednodušší než ty "rušící".

co o tom soudíte vy coby výrobci cartridgí? používáte někdo to automatické překrývání k něčemu užitečnému?
  • 0

#2 Mion

Mion

    Advanced Member

  • Members
  • PipPipPip
  • 942 příspěvků(y)

Publikováno 06 duben 2008 - 8:23

No, má to své opodstatnění a nedoporučoval bych se od toho odchylovat. V ofic. wherigo playeru je v podstatě jako by jen jeden message box a dalším jeho zavoláním se tak netvoří nové okno, ale updatuje se to aktuální. Důvod je např. kvůli minimalizaci nároků na pamě't a kvůli stacku (aby nepřetekl a aplikace nespadla do vyjímky), a pak je to ochrana před špatně napsanými cartridgemi, kde např. opakovanou detekcí vstupu do zóny se dialog vyvolává znovu a znovu a tím časem může dojít k chybnému běhu cartridge (buď proto, že se znovu a znovu nastavují již nastavené vlastnosti objektů a proměnné, nebo pro přetečení zásobníku). Navíc se může stát, že předchozí message box ztratí vyvoláním nového na platnosti - potvrzením nového msgboxu se provede aktuální operace, ale pokud poté hráč odklepne i předchozí msgbox, může narušit kontinuitu a hra se může dostat do stavu, z kterého nebude cesta ven.

Proto považuji současné řešení message boxu tak jak je implementované za dobře promyšlené - a i vývojáři wig-playeru zřejmě k němu nepřišli ihned a bez ověřování jiných variant. Pokud by se tvůj player choval jinak, museli by na to tvůrci cartridgí začít brát ohled - a už v tom je první nekompatibilita, která tak vznikne.


matejcik napsal/a:
jak píšou ve Wherigo Advanced Concepts, dialogy se navzájem překrývají, a když se objeví nový dialog, tak ten pod ním se automaticky zruší.

Připadá mi to poněkud blbé, místy až k ničemu. Mnohem lepší by podle mě bylo, kdyby se vrstvily na sebe a po odkliknutí toho nejhořejšího se vrátil ten pod ním. (co kdyby mi třeba timer smazal nějakou důležitou zprávu, nebo co kdybych s nedočteným dialogem vylezl ze zóny, OnExit by mi ho zrušil, a já už bych se k němu nemohl nijak dostat?)

připadá mi, že zrovna v tomhle bych se mohl s OpenWIGem od oficiálního Playeru odchýlit celkem bez následků (jediná cartridge, kde by to vadilo, je asi Zooventure Level Two, ale ta je koneckonců blbě napsaná ;e) ). a shodou okolností jsou ty "vrstvící" dialogy implementačně jednodušší než ty "rušící".

co o tom soudíte vy coby výrobci cartridgí? používáte někdo to automatické překrývání k něčemu užitečnému?


  • 0

#3 matejcik

matejcik

    Advanced Member

  • Members
  • PipPipPip
  • 389 příspěvků(y)

Publikováno 06 duben 2008 - 12:36

Mion napsal/a:
No, má to své opodstatnění a nedoporučoval bych se od toho odchylovat. V ofic. wherigo playeru je v podstatě jako by jen jeden message box a dalším jeho zavoláním se tak netvoří nové okno, ale updatuje se to aktuální. Důvod je např. kvůli minimalizaci nároků na pamě't a kvůli stacku (aby nepřetekl a aplikace nespadla do vyjímky)

to je asi tak jediný důvod pro tohle chování, který chápu. ale to se dá řešit i jinak, například pevným limitem na počet otevřených dialogů (víc než 10 jich v rozumně napsané cartridgi nebude), po kterém se hra zastaví a bude se dožadovat pozornosti hráče.

a pak je to ochrana před špatně napsanými cartridgemi, kde např. opakovanou detekcí vstupu do zóny se dialog vyvolává znovu a znovu a tím časem může dojít k chybnému běhu cartridge

tak pokud je cartridge špatně napsaná, tak pochopitelně může dojít k chybnému běhu ;e) a na dialogu to celkem nezávisí, pokud se několikrát spustí špatný skript, hra se poruší i tak. jenže si toho navíc tvůrce při testování nemusí všimnout, když tam bude stále jeden dialog.
otázkou spíš je, jestli špatně napsané cartridge podporovat kvůli kompatibilitě nebo ne (navíc když to není otázkou přehrávání gwc souborů - kdyby bylo, tak není co řešit, musel bych věrně kopírovat chování oficiálního playeru)

(buď proto, že se znovu a znovu nastavují již nastavené vlastnosti objektů a proměnné,

k tomu by v takové cartridgi došlo tak jako tak.

nebo pro přetečení zásobníku). Navíc se může stát, že předchozí message box ztratí vyvoláním nového na platnosti - potvrzením nového msgboxu se provede aktuální operace, ale pokud poté hráč odklepne i předchozí msgbox, může narušit kontinuitu a hra se může dostat do stavu, z kterého nebude cesta ven.

na to se právě ptám - je to k něčemu dobré? jsou situace, kdy je tohle použito záměrně jako správné chování?

Proto považuji současné řešení message boxu tak jak je implementované za dobře promyšlené - a i vývojáři wig-playeru zřejmě k němu nepřišli ihned a bez ověřování jiných variant. Pokud by se tvůj player choval jinak, museli by na to tvůrci cartridgí začít brát ohled - a už v tom je první nekompatibilita, která tak vznikne.

Pokud správně napsaná cartridge (tedy taková, která nespoléhá na chyby v Playeru) bude v OpenWIGu fungovat jinak, považuji to za chybu OpenWIGu, kterou je potřeba opravit. Ostatně v současné verzi se mi dialogy taky překrývají tím oficiálním způsobem.
Tohle mě napadlo jako něco, co by mohlo pomoci uživateli (nepřijde o žádný důležitý dialog) bez vážných následků pro správnou funkci cartridgí. Jestli nějaké následky budou, pak není o čem diskutovat.


....ale jak to tak čtu, spíš nebudu hasit co mě nepálí a nechám to tak jak to je teď. já jen že mi to přišlo jako opravdu blbé chování.
  • 0

#4 Mion

Mion

    Advanced Member

  • Members
  • PipPipPip
  • 942 příspěvků(y)

Publikováno 06 duben 2008 - 15:07

Samozřejmě názorů bude asi řada, přičemž vzniknou dva tábory - jedni by radši vrstvení zpráv, druzí nahrazování. Zpočátku jsem patřil do prvního tábora, nyní jsem zastáncem druhého. Zkusím vysvětlit svůj náhled (nikomu ho nevnucuji) ;) Beru totakhle: kromě dialogu a message boxu jsou tam ještě inputy a vlastnosti charakterů a itemů s tlačítky akcí. A právě že v případě, kdy prioritou je pohyb hráče a běžící timery (což ve wherigu - hře postavené na pohubu hráče - platí), předpokládá se, že nová akce je důležitější než předchozí. Například časový limit na zodpovězení otázky. Kdyby hráč čekal v zadávacím okně a neodpovídal, vyprší timer na odpověď - a ten může automaticky informačním message boxem "odpověď jste nezadali v časovém limitu" zrušit možnost zadávání. A bez nutnosti programovat cokoliv dalšího. S překrývajícími se okny by vyskočilo nějaké nové okno s informací, že už zadání není možné, to by se muselo potvrdit, zmizelo by, a znovu by se pod tím objevilo předchozí okno "zadej odpověď". Nehledě k tomu, že by to mnohé asi zmátlo, pak by se muselo pokračovat buď zrušením zadání, nebo zadáním položky, kterou by musel script zahodit. Ale protože se spouští z eventu od odkliknutí zadání, bylo by nutné kontrolovat, zda ten timer náhodou nevypršel. Tohle nyní při psaní cartridge odpadá a proto nemusejí cartridge psát lidi s dostatečně vycvičeným programátorským citem, či u programování myslet na ošetření všech možných kombinací událostí, které mohou v daném kroku na daném místě nastat. Pak si stačí jen pamatovat, že každá další událost ovlivní tu předchozí a na to při návrhu cartridge myslet, a to stačí. Po počátečním kroucení hlavou, kdy jsem tohle chování také pokládal ze nesmyslné, to nyní po zhotovení poměrně složité cartridge s mnoha asynchronními i navazujícími událostmi, považuji za dobré řešení.
  • 0

#5 matejcik

matejcik

    Advanced Member

  • Members
  • PipPipPip
  • 389 příspěvků(y)

Publikováno 06 duben 2008 - 17:54

aha, inputy se taky překrývají. to mi nikdo neřekl :e) dobrá, nechám to být tak jak je. zjevně to nějaký smysl má.
  • 0




0 uživatel(ů) prochází toto téma

0 uživatelů, 0 návštěvníků 0 anonymních uživatelů

Reklama