Stránka 1 z 1

Add-ony

Napsal: sob 14. črc 2018 19:58:08
od qSTRoNgMANp
Zdravím,

napadl mě taková nápad, který jsem viděl už kdysi dávno na wowku. A to jsou Add-ony. Pokud někdo neví, co to jsou add-ony, tak zjednodušeně:" Rozšíření hry, které není v základu implementováno s instalací hry"

V praxy to vypadá tak, že někdo naprogramuje rozšíření pro danou hru, které nikterak nezvýhodní hráče (Myslím tím, větší dmg, vetší inventář, atd.) Defakto, dá možnost zpřehlednit HUD hry ... například v tématu v návrzích: změna barev bonusu, by si každá hráč díky addonum mohl nastavit příslušnou barvu, jakou by chtěl i velikost textu a nemuselo by se to měnit globálně, kdy by tohoto "zvýhodnění" chtěl využit, mohl by. :)

Viděl bych to tak, že by komunita vytvářela "Add-ony" a tým by je mohl schvalovat, takže by každý si mohl hru upravit, podle svého gusta nemuselo by se rozhodovat o rozšíření globálně pro celý server. :)

Možnosti addonu, které by napadly ted:
1) Barvy textu a velikosti
2)Sloučení 1 a 2 inventu, do vetsiho pole
3)Klávesová zkratky např: ctrl+i by prepipalo mezi nazvama a popiskama (viditelnost)

Re: Add-ony

Napsal: ned 15. črc 2018 11:37:44
od Script
Než se rozepíšu, tak předesílám, že se zmíněným systémem na WoW nemám zkušenosti a je škoda, že jeho koncepty autor tématu více nepřiblížil. Návrh zřejmě staví na existenci nějakého API pro klienta Ekury, které zahrnuje minimálně:
  • nějaké množství předdefinovaných akcí, které lze upravit (např. "OnChatTextRender", "OnAppStart", ...)
  • seznam hodnot, které lze uživatelsky měnit a k nim příslušných metod (např. "SetTextSize", "SetSkyColorVector", ...)
  • samozřejmě také seznam metod, kterými lze současnou hodnotu načíst z paměti, něbo z nastavení hry (např. "GetTextColor", "GetDefaultTextColor", ...)
  • podporu nějakého skriptovacího jazyka (nejlépe Pythonu, který už v klientovi běží), ve kterém lze snadno provádět matematické operace, ukládat hodnoty do různých datových struktur ap., přičemž vývojář takového "Add-inu" by musel docela určitě mít přístup také k debugovací konzoli hry
  • nějaký způsob logického uspořádání akcí tak, aby si v případě aktivace více "Add-inů" tyto vzájemně nepřepisovaly hodnoty, které oba mění
  • možnost uložení interní konfigurace modulu do nějakého souboru a opětovné načtení plus možnost přidat také další data (například obrázky, kurzory, ...) do balíčku s "Add-inem" a umožnit k nim jednoduchý a rychlý přístup
  • kompletní, nebo téměř kompletní dokumentaci (protože bez ní se tvůrci "Add-inů" moc daleko nedostanou)
Takové API ale Ekura nemá. Není těžké si ho představit, ale určitě by bylo velmi časově náročné jej na slušné úrovni naprogramovat - a to mluvím pouze o základním systému. Následně by pro každou akce, kterou by si tvůrci "Add-inů" přáli změnit, bylo potřeba ručně doprogramovat příslušné metody, nebo alespoň zrevidovat parametry těch existujících, aby bylo jejich použití intuitivní a předešlo se možnosti zneužití. Tomu bude s rozšiřujícím se systémem čím dál tím složitější zabránit a (nejen) proto by nebylo od věci, aby každý uveřejněný "Add-in" prošel nějakým schvalovacím řízením a zběžnou kontrolou kódu. Kolik akcí by vlastně mělo být ze strany API podporováno? Jsou to řádově desítky, stovky, nebo tisíce? Návrh je v tomhle ohledu hodně nedotažený.

Pojďme ale ke konkrétním příkladům:
Obchodnik799 píše: sob 14. črc 2018 19:58:08Barvy textu a velikosti
V současné době jich hra používá jen několik. Pokud bychom chtěli, aby šly měnit nezávisle na sobě, musel by se tomu výrazně uzpůsobit systém. A protože se může stát, že nebude některá z hodnot definovaná, musel by systém po vykreslení každého okna (nebo jiné minimální jednotky) nastavení fontu vyresetovat na nějaké výchozí.
Obchodnik799 píše: sob 14. črc 2018 19:58:08Sloučení 1 a 2 inventu, do vetsiho pole
Je v podstatě o přepsání celého kódu inventáře. Bylo by potřeba umožnit kompletní přístup ke všem prvkům v inventáři - jejich velikosti, pozice a zarovnání, pozadí, viditelnost, stavy, flagy, nabindované akce. Pro zajímavost: třída, který obsluhuje fungování inventáře má momentálně 2100 řádků. V tomhle počtu ještě chybí různé interakce inventáře s jinými okny, takže výsledné číslo bude ještě vyšší. Pokud bychom chtěli dát autorům "Add-inů" absolutní volnost v uspořádání takového okna, musela by být téměř každá metoda ve zmíněné třídě nějakým způsobem modulární a zdokumentovaná.
Obchodnik799 píše: sob 14. črc 2018 19:58:08ctrl+i by prepipalo mezi nazvama a popiskama
Je z téhle trojice asi nejjednodušší. I tak zahrnuje minimálně zpřístupnění možnosti odchytávat všechny klávesy, které hráč stiskne, a k některým nabindovat uživatelské akce. To, že nic takového ve hře momentálně není, je zároveň největší překážkou pro vytvoření konfigurovatelných klávesových zkratek přímo v nastavení hry.

Vliv na výkon
Někomu to už teď připadá příliš složité? Pak jsem jeden z Vás. Ale je to ještě horší, když si uvědomíte, že spousty předdefinovaných akcí by musely mít nějaký standartizovaný způsob ukončení. Vezměme si například tvůrce "Add-inu", který by si nepřál zobrazovat hlášky typu "Obdržel jsi 123.456 Yangů". To znamená, že metoda, která se o to stará, by musela obsahovat příslušnou událost a zároveň také definovat, co vše se musí stát, pokud daná událost běh metody ukončí - tj. něco jako "bezpečné ukončení". To by při větším množství metod už mohlo mít celkem výrazný dopad na výkon klienta a to dokonce i v případě, kdy žádné "Add-iny" nebudou nainstalované (v případě opačném je ještě potřeba si přičíst výkonový dopad běhu kódu v chráněném režimu - tj. aby třeba syntaktická chyba v uživatelském kódu neměla dopad na vnitřní kód hry).

Je o to skutečně zájem ze strany vývojářů?
V neposlední řadě bych ještě zmínil, že komunita Ekury se svou velikostí s tou ve WoW určitě nedá srovnávat. To sice neznamená, že by zde touha po něčem podobném byla menší, ale rozhodně je zde méně lidí, schopných a ochotných (ano, je potřeba obojí) se do něčeho takového pouštět. Předpokládám-li správně, že Add-iny by byly zdarma, tak jen podotýkám, že jeho vývoj nikdy není úplně snadný a zdaleka nekončí vydním prvotní verze, protože:
  1. Jeho uživatelé neustále požadují více toho, či onoho
  2. Herní API se s vývojem hry nevyhnutelně mění, takže je třeba držet krok
Kolik znáte lidí ze svého okolí, kteří mají dostatek zkušeností, volného času a chuti, aby se o vývoj takového "Add-inu" starali? Já žádného a to se mezi programátory pohybuji.

Závěrem
Představa je to pěkná, to nepopírám. V současné situaci, kdy je v týmu jeden aktivní programátor, je ale hodně vzdálená realitě. Dokud se to výrazně nezlepší, budu hlasovat proti tomuto návrhu.

Re: Add-ony

Napsal: ned 15. črc 2018 12:00:10
od qSTRoNgMANp
Já jsem si přesně vědom základního problém a to je počet lidí, kteří server hrají, takže menší šance najít lidi, který toto uměj a pustili by se do toho s chutí.
Dokonce chápu složitost tohoto probléme, že Ekura na to není konstruovaná oproti wowku. :)
Jen mě prostě napadla taková myšlenka, kde vím, že na jiném p- serveru není a mohla by být zajímavá, toto spravovat by byl závod na dlouho trať, ale radši můj návrh někam napíšu, než abych si ho nechal pro sebe, s pocitem, že je to super, kdyby to tam bylo, ale je to težky na zrealizování. :)
Třeba se k tomuto návrhu někdy v budoucnu vrátíte a přepracujete to do své vize. :)

Re: Add-ony

Napsal: ned 15. črc 2018 14:24:19
od ondra852
Nedokazu si predstavit moc veci, ktere by mohlo API obsahovat a ktere by se zaroven nedalo zneuzit. Uz jen u takoveho eventu, ktery by se volal ve chvili, kdy se ma hraci zobrazit v chatu zprava je x moznoti jak toho vyuzit k ziskani vyhod nad ostatnimi hraci (ne, ze by nesla zprava zachytit jinak, ale preci jen to neni uz tak snadne a tolik lidi se do toho nepusti). A fuknce, ktera by poskytla seznam predmetu v inventari a jejich pozice ... :))