Sziasztok, hekkerek! Gémerek és informatikusok! DEAC-Hackers tagok, Prog1 hallgatók!
Bevezetés - mit szeretnék?
A FUTURE 6 kvintesszenciája az volt, hogy a fejlesztés katalizálására a fejlesztendő FUTURE játék értelmezési tartományát megszorítottuk speciálisan a DEAC-Hackers[1] és az UDPROG[2] Facebook csoport szervezésű közösségekre, azaz általában a gémerekre és az informatikusokra. Továbbá átmenetileg nem az egyén- és a város-szimulációkra koncentrálunk, hanem annak „bebootolására”: az iniciális adatok és fejlesztő közösség létrehozására. Ennek támogatására ebből a doksiból hármat portolunk, az alábbi címekkel:
- „Az esportolók és játékosok egyesületi ranglistája” – egy rendezés a DEAC-Hackers vagy bármely más esport szakosztály tagjai között.
- „A programozók DE ranglistája” – egy rendezés a DE (Debreceni Egyetem) Prog1-es hallgatók (és a Prog1-et esetlegesen figyelemmel kísérők, például olyan középiskolások, akik a DE-i továbbtanulásra gyúrnak) között.
- „Esportolók országos és nemzetközi ranglistája” – a programozásban ás a gémerkedésben nem látszik, legalábbis elsőre egyértelműen biztosan nem, hogy hogyan lehetne országossá vagy akár nemzetközivé fejleszteni a ranglistát[3], az esportban viszont igen, ez a portolás erről szól majd.
Watch FUTURE 7 - Esportolók országos és nemzetközi ranglistája from nbatfai on www.twitch.tv
De addig még…
Mi a FUTURE?
A FUTURE, mint játék célja az egyes játékosok és ez által egy város alternatív jövőinek (virtuális valóságainak) legenerálása, a legenerált jövők elemzése, kölcsönhattatása[4].
A kisebb próbálkozásokkal a FUTURE koncepció mögötti lehetséges játékélmények feltárásában előrébb járunk ugyan, mint hat, de a Twitch-en eddig négyet mutattunk be. Az ötödik általános útkeresés, hogy milyen legyen a város és az egyén szimulációja (napi, Markov, iteratív, rekurzív, hibrid stb.). Az ötödik értelmezési tartományát néhány speciális területre szűkítve kapjuk így a logikailag hatodik gyors protó elképzelést. Az első hármat a kislányommal mutattunk be, a negyediket magam:
A FUTURE 6-ot itt vezettük be:
A jelen doksiban a FUTURE 7-et tárgyaljuk:
- JÖVŐ DEBRECEN 7 - Tevékenység böngésző,
https://www.twitch.tv/videos/227669547
- A FUTURE 7 már az ESPORT kutatási kiáltvány 2018[5] negyedik tézisének – miszerint „megvan a lehetőségünk nyílt forrású esport játék kialakítására” – értelmezési tartományába is besorolható.
Tárgyalás
A DEAC-Hackers esport szakosztály gyorsan bővülő fészes előszobája (+570 fő) és a programozás tárgyaim kapcsán az évek során kialakult UDPROG közösség (+550 fő) az a két nem diszjunkt, de független kör, amelyre megszorítottuk a FUTURE 7 fejlesztését. Az UDPROG-ban (mint reguláris egyetemi kurzusban) hagyományos a pontgyűjtés és éppen a napokban vetettem fel (micsoda véletlen) a DEAC-Hackers-ben is egy hasonlóan „megbízhatatlan”[6] pontrendszer bevezetését.
Ranglisták
A FUTURE alapvető koncepciójától a „ranglistázás” távol áll, hiszen a FUTURE-nek az az érdekes, hogy a játékosok egy adott napon mit csináltak. Mert a ma tevékenységei a tegnap előrejelzéseivel összevetve adhatják egy megerősítéses tanulásra épülő szimulációs szoftver motor alapját. Tehát a FUTURE-nak az „kell”, hogy mit csináltak aznap a játékosai! Ami miatt mégis felvetődik a ranglistázás, az a fejlesztői és érdeklődői bázis kiépítése. Meggyőződésem, hogy a FUTURE motorjának egy front end-je a holnap, a jövő év, a teljes életút, a város fejlődése és a halál utáni élet legenerálása után a napi tevékenység bevitelekből egy ranglistát is alsó hangon össze tud majd állítani (vagy nem[7]).
A jövő-szimulációk egyénekre vetített alapja, hogy adott tevékenységek visszahatnak a tevékenységet végzők megfelelő tulajdonságaira és megfordítva adott tulajdonságok szükségesek adott tevékenységekhez. A két célközönségi megszorítás éppen itt tud majd segíteni:
- az egyén tulajdonságfájának téma specifikus finomításában
- illetve a tevékenységfa és a tevékenységekhez rendelt tulajdonságok ugyancsak téma specifikus finomításában
Abban az értelemben csináltunk már (időben az ezredforduló táján) hasonlót, hogy kölcsönhattattuk portálok dokumentumainak és felhasználóinak tulajdonságvektorait, de akkor nem alkottunk maradandót, tehát ezt az irányt nem érdemes felmelegíteni. Mostani motivációnk jóval inkább a mélytanulásos neurális hálók sikereiből táplálkozik, hogy ne is az iniciális megadott tulajdonságvektor értékek (pl. a reakcióidőm 88 %-os, a rövidtávú emlékezőképességem 33%-os stb.) hanem a napi üzem (és a jövő-szimulációk) során dinamikusan alakuljanak ki a tevékenységeket és a játékosokat jellemző tulajdonság értékek.
A kulisszák mögött
Elsődleges célom tehát a FUTURE fejlesztése! Az említett pontozási rendszerek annyiban érdekesek csupán, hogy olyan közösségi érdeklődést biztosíthatnak, amelyek támogatják ezt az elsődleges célt, akár direkt, akár indirekt formában. Ennek megfelelően ne is gondoljunk valamilyen hagyományos pontgyűjtésre, amit most bemutatunk, annak az említett UDPROG közösségben használt és a DEAC-Hackers-ben bevezetésre felvetett pontgyűjtéséhez sincs semmi köze. A fejlesztendő, a FUTURE-ben megvalósított vagy még inkább arra ráépülő szolgáltatás teljesen új. Lássuk!
Először is, valójában szó sincs pontgyűjtésről! Hogyan is lehetne? Hiszen az oktatásban talán még mondhattam, hogy „pontgyűjtés van”, de a DEAC-Hackers egy lazább szervezésű szervezet, ott már nem mondhatjuk, általában meg pláne nem. Tehát egy egészen más tevékenységet vázolok, amelyet az emberek önmagában szívesen használnának, amelyből majd a DEAC-Hackers-ben és az UDPROG-ban tudunk egy pontgyűjtő mozgalmat származtatni. Ezt értettem a szolgáltatás jelleg alatt. Akkor mit is csinálunk?
Kialakítunk egy finom tevékenység hálózatot, amelyben a két közösség tagjai be tudják kattintani, hogy aznap mit csináltak[8]. Például én ma az alábbi DEAC-Hackers-hez is köthető tevékenységet folytattam:
- játszottam a LoL-al, két 5v5 rugalmast a szurdokban
- CoColtam
- streameltem
- fórumoztam: kommenteltem, lájkoltam
Ennek megfelelően ezeket a tevékenységeket kipipálom majd a FUTURE 7 tevékenység böngésző kliensben, az 1. ábrán éppen az említett LoL-os meccseket.
1. ábra A tevékenység böngésző webes felülete. A Facebook-os bejelentkezés után kitallózva a tevékenységfában, hogy City, Debrecen, Sport, Esport, DEAC-Hackers, Játék, MOBA, LoL, Rangsorolt, Támogató, a jobb oldali gyermek könyvtárak közül meg tudom adni még azt is, hogy éppen Taric-al játszottam.
Mi lehet egy tipikus UDPROG hallgató programozás tárgyú kurzusával kapcsolatos napi tevékenysége:
- a C++ API doksit olvastam
- a z3a19.cpp nevű C++ forráskódot értelmeztem
- írtam egy C++ programot
Ennyi. Aki tehát részt akar venni az önkéntes pontgyűjtésben, nem kell mást tennie, mint a FUTURE 7 kliensben aznap bekattintgatni, hogy mi köthetőt csinált éppen aznap. A 2. ábra mutatja a FUTURE 7 teszt üzeme első napjának részletét.
2. ábra Néhány adatbázisrekord az első napi tevékenységekből.
Mi történik (majd) a háttérben?
Minden FUTURE 7 felhasználót jellemez egy nagy tulajdonság vektor. A könnyebb kezelhetőség miatt ezt egy fa szerkezetben kezeljük. Akit nem a pontrendszer maga, hanem a FUTURE érdekel, az segít ennek a szerkezetnek az állandó finomításában. A következő csipet a felhasználó tulajdonság vektora értelmezésének egy része:
properties
{
Külcsín / Kor
Külcsín / Súly
Külcsín / Magasság
...
Belbecs / Tudás
...
Belbecs / Tudás / Informatika
Belbecs / Tudás / Informatika / Programozás / C++
Belbecs / Tudás / Informatika / Programozás / C++ / C++11
Belbecs / Tudás / Informatika / Programozás / C++ / C++14
...
Belbecs / Tudás / Informatika / Játék / FPS / 0 A.D.
Belbecs / Tudás / Informatika / Játék / MOBA / LoL
Belbecs / Tudás / Informatika / Játék / Mobil / CoC
Belbecs / Tudás / Informatika / Játék / CCG / HS
...
Belbecs / Tapasztalat / Verseny rutin
Belbecs / Tapasztalat / Közösségi lét
...
Belbecs / Képesség / Reakcióidő
Belbecs / Képesség / Képzelő erő
Belbecs / Képesség / Térelképzelés
Belbecs / Képesség / Memória
Belbecs / Képesség / Kommunikáció
...
Belbecs / Készség / Kombinációs
...
}
A felhasználókhoz hasonlóan a tevékenységeket is fákba szervezzük és minden tevékenységet a felhasználókhoz hasonló tulajdonság vektorral jellemezünk és ugyancsak folyamatosan finomítunk, finomítanak az adott szakterület specialistái. A következő csipet néhány tevékenységet és azok tulajdonság vektorának egy részét mutatja:
activity City/Debrecen/Sport/Esport/DEAC-Hackers
{
Belbecs / Tapasztalat / Közösségi lét 80
…
}
activity City/Debrecen/Sport/Esport/DEAC-Hackers/Verseny/LoL
{
Belbecs / Képesség / Térelképzelés 15
Belbecs / Képesség / Reakcióidő 80
Belbecs / Képesség / Memória 20
Belbecs / Képesség / Képzelő erő 14
Belbecs / Képesség / Kommunikáció 80
…
}
activity City/Debrecen/Sport/Esport/DEAC-Hackers/Verseny/LoL/ESL/LoL 5on5 Summoners' Arena
{
Külcsín/Kor/min 16
Belbecs/Tapasztalat/Verseny rutin 10
…
}
activity City/Debrecen/Sport/Esport/DEAC-Hackers/Verseny/HS
{
Belbecs/Tapasztalat/Közösségi lét 5
Belbecs/Képesség/Memória 70
Belbecs/Készség/Kombinációs 72
…
}
activity City/Debrecen/Sport/Esport/DEAC-Hackers/Verseny/HS/Verseny/ESL/Hearthstone 1on1 Christmas
{
Külcsín/Kor/min 16
Belbecs/Tapasztalat/Verseny rutin 10
…
}
activity City/Debrecen/Sport/Esport/DEAC-Hackers/Verseny/CS
{
Belbecs/Tapasztalat/Közösségi lét 80
Belbecs/Képesség/Térelképzelés 90
Belbecs/Képesség/Reakcióidő 95
Belbecs/Képesség/Memória 10
Belbecs/Képesség/Kommunikáció 80
…
}
activity City/Debrecen/Sport/Esport/DEAC-Hackers/Verseny/CS/Verseny/ESL/CS/Verseny/ESL/CS:GO 5on5 Winter cup
{
Külcsín/Kor/min 18
Belbecs/Tapasztalat/Verseny rutin 10
…
}
Összefoglalva: két hierarchiát kell felépítenünk:
- az egyik a tevékenységek (activity) struktúrája,
- a másik a tevékenységeket jellemző tulajdonságok (properties) struktúrája.
Szoftver szempontjából pedig 3 támogató alkalmazást kifejleszteni gyors protó szinten, amit iniciális szinten már meg is tettem:
- a felhasználóknak (F6 játékosoknak) egy tevékenység böngészőt, amelyben tudják listázni a tevékenységeket és a napi aktivitásukat bepipálni, ezt mutatta az 1. ábra, élesben itt elérhető: http://smartcity.inf.unideb.hu/~norbi/City/
- a fejlesztőknek két szerkesztőt, a tevékenység és a tulajdonság szerkesztőt, egy gyors protó szösszenetben Androidra:
3. ábra Az iménti properties csipet áttéve Androidos eszközre.
amit közben már le is cseréltem egy PC-s (JavaFX) változatra, amelyben a tulajdonság fát nem (mert az bemenő fájlokból jön) hanem a tevékenység fát és a tevékenységeket jellemző tulajdonságokat lehet szerkeszteni, lásd a 4. ábrát, illetve az erről szóló streamet: https://www.twitch.tv/videos/222879467
4. ábra A tevékenység és a tevékenység tulajdonság szerkesztő. Abban segít, hogy az előre definiált tulajdonságokat kattintással tudjuk a tevékenységekhez kötni, de természetesen a tevékenységfa is szerkeszthető benne.
Vissza a ranglistás megszorításhoz
Visszatérve a DEAC-Hackers és az UDPROG-os leszűkítéshez, ezek a közösségek alapvetően informatikus dominanciájúak, de legalábbis van a tagoknak informatikai vénájuk. Számukra egyszerűbb lehet a tulajdonságok és a tevékenységek egyszerű szerkesztése sima szöveges állományként, amelyeket itt találtok a FUTURE repóban: https://github.com/nbatfai/future/tree/master/cs/F7[9]
Az esportolók és játékosok egyesületi ranglistája
Szerkesztő szakértőként
Az elektronikus játékokkal kapcsolatos tevékenységeket kell kialakítanunk, ezek jelenleg tipikusan a
City/Debrecen/Sport/Esport[10]
City/Debrecen/Szórakozás/Játék/Elektronikus
tételek alatt találhatóak a tevékenység fában. További feladat, hogy meghatározzuk azokat a tulajdonságokat, amelyekkel az adott tevékenység kapcsolatba hozható. Lássunk egy LoL példát! Vegyük azt, hogy új rangsor besorolást (mondjuk bronz 5-ből bronz 4-be) kaptam ma, akkor megtalálhatom a rám jellemző tételt a bronztól egészen a kihívóig:
City/Debrecen/Sport/Esport/DEAC-Hackers/Játék/MOBA/LoL/Rangsor
City/Debrecen/Sport/Esport/DEAC-Hackers/Játék/MOBA/LoL/Rangsor/B
City/Debrecen/Sport/Esport/DEAC-Hackers/Játék/MOBA/LoL/Rangsor/B/5
…
City/Debrecen/Sport/Esport/DEAC-Hackers/Játék/MOBA/LoL/Rangsor/C
Hogyan „hat” ez a besorolás meccs a „LoL tudásomra”, azaz a
Belbecs/Tudás/Informatika/Játék/MOBA/LoL[11]
tulajdonságomra? A szerkesztőnek (tehát nem a játékosnak, azaz nem a FUTURE felhasználónak, mert neki ugye csak kattintgatnia kell majd a tulajdonság böngészőben) tehát a szerkesztőnek elég a levélelemekre koncentrálni, mert a program majd a szülő elemek tulajdonságai származtatásánál számolja majd a levelek átlagát, ha a szülőben külön nincs megadva. A szerkesztő szakértő pedig úgy gondolkodhat, hogy mondjuk a kihívó szinten való játék 95%-ban járul hozzá ennek a tulajdonságnak a növelésébe, még a bronz ligában 15 százalékot oszt fel az 5 szint között a bronz I-től a bronz V-ig rendre 5-4-3-2-1 százalékokkal. A szakértőnek itt nem kell figyelni semmi másra, hogy például a bronz, ezüst,… kihívó között szétosztott „százalékok” kiadják a 100-at, mert szeretjük ugyan a matekot, nem vagyunk mi math-boy-ok[12], majd a program megoldja (ha ki tudjuk találni persze…). Aki a tevékenységek eme tulajdonságait beviszi, az a játékban legyen szakértő és tudja kb., hogy mi-mennyit ér durva arányaiban. Példánknál maradva azt érzékeltesse, hogy aranyban játszani többet ad, magasabb szintet képvisel, dominánsabb, mint bronzban, diában meg méginkább az stb.
Játékosként
Annyi a dolgunk, hogy naponta bekattintjuk, milyen elektronikus játékokkal kapcsolatos tevékenységet folytattunk aznap. Például mobilról, ahogyan a 6. ábra mutatja az induló http://smartcity.inf.unideb.hu/~norbi/City lapról kiindulva tehetjük meg.
6. ábra A tevékenység böngésző valódi mobilról screenshotolva.
A programozók DE ranglistája
A programozás témában ugyanúgy járunk el, mint ahogyan az előző pontban javasoltuk. Itt is a szakterületi szakértők adják a tevékenységfát és a hozzárendelt tulajdonságokat. Viszont a Prog1 előadás és laborközösségekben a rangsornak azonnali valódi tétje is van! Mert az előadáson (kollokviumi jegy) és a laborokon (gyakorlati jegy) külön-külön diszjunkt jegymegajánlás van (tehát külön van az előadásnak és külön van minden labornak), amely a jegymegajánlásba az első 30% hallgatót vonja be. A kifejlesztendő FUTURE rangsor mellett, mivel annak kifejleszthetősége kérdéses, párhuzamosan visszük a klasszikus „mennyi pontot-mikor-mire-URL bizonyíték” alapú könyvelést is. A FUTURE támogatása, hogy a klasszikus könyvelésben 1.2-es szorzóval lehet a pontot elkönyvelni, ha a hallgató a FUTURE böngészőben is adminisztrálta napi tevékenységként. További részletek tekintetében lásd még az erről szóló Facebook posztot.
Esportolók országos és nemzetközi ranglistája
A programozással ellentétben az esportban nagyon könnyen kiterjeszthetjük a szakosztályi ranglistát országos vagy akár automatikusan nemzetközi ranglistává is. Hogyan? Vegyünk egy LoL játékost! Tipikusan figyeli a nagy ikonok, például S04 Vizicsacsi játékát, meccseit. Erre nemcsak a hírportálok, hanem maguk a játékok szolgáltatta API-kra épülő különböző szájtok (ilyen például az alább következők közül az első kettő) figyelemmel kísérése is lehetőséget ad, például az említett esetben:
Árnyék vagy rajongói tevékenység böngészés
Nem kell mást tennünk, mint nem a saját magunk adminisztrálására, hanem pl. a szóban forgó esetben Vizicsacsi tevékenységeinek adminisztrálására használni a FUTURE tevékenység böngészőt és máris megvan a nemzetközi ranglista alapja!
Persze a dolog jogi oldalának is utána kell járni, hiszen ha például az említett „S04 Vizicsacsi” nevet nem használhatnánk a bevitt tevékenységei melletti név mezőben, akkor írhatnánk helyette, hogy „Kiss Tamás”, hiszen aki benne van ebben a világban úgyis tudja, hogy a kettő ua. Tehát jogi kérdés, hogy használhatjuk-e a nagy játékosok ign-jét mondjuk a mi adatbázisunkban, portálunkon. Ha nem, akkor a valódi nevüket például igen?
Technikai oldalról ez az árnyék, vagy rajongói tevékenységkövetés nem probléma, lenne egy pipa a felületen, hogy a Facebook-al belépett játékosunk magát dokumentálja, vagy a hozzá kapcsolt kedvencét.
Matematikai szempontból a lecke a meglévő rangsoroló rendszerek megismerése és ezek ismeretében esetlegesen valamely módszer, vagy módszerek hibridjének az alkalmazása, vagy új módszer kidolgozása a FUTURE tevékenység böngésző adataira alapozva.
Szóval Madách Imrét Az ember tragédiájából idézve: „Végetlen a tér, mely munkára hív,”.
Hajrá!
- 02. 12., Debrecen.
Dr. Bátfai Norbert
nbatfai@gmail.com,batfai.norbert@inf.unideb.hu
Debreceni Egyetem, DEAC-Hackers kutatási vezető
DEAC: http://www.deac.hu/szakosztalyok/esport
LoL: https://www.leagueofgraphs.com/summoner/eune/NorbiEntropy
CoC: https://www.clashofstats.com/players/norbertbatfai-929R0LGVU
GitHub: https://github.com/nbatfai
stackoverflow: https://stackoverflow.com/users/7277946/norbert-bátfai
A jelen doksi stream videója: https://www.twitch.tv/videos/228804454
A jelen doksi elérhető nyomtatható pdf formában: https://shrek.unideb.hu/~nbatfai/FUTURE7.pdf
blog formában: http://progpater.blog.hu/2018/02/13/esportolok_orszagos_es_nemzetkozi_ranglistaja
[1] DEAC-Hackers esport szakosztály, https://www.facebook.com/groups/DEACHackers/
[2] UDPROG - The Yearbook of the Programmers of University of Debrecen, https://www.facebook.com/groups/udprog/
[3] Feltéve persze, hogy kurzus szinten sikerrel meg tudjuk valósítani.
[4] https://github.com/nbatfai/future
[5] PDF-ben nyomtathatóra szerkesztve: https://shrek.unideb.hu/~nbatfai/ESPORTKutKialt2018.pdf, böngészhető blog változat: http://progpater.blog.hu/2018/01/06/esport_kutatasi_kialtvany, videó stream: https://www.twitch.tv/videos/215449808
[6] Az UDPROG pontgyűjtése apriori „megbízhatatlan”, mert nincs központilag nyilvántartva, hanem a hallgató maga könyveli, hogy mikor, mire, mennyi pontot kapott.
[7] Ezért a reguláris kurzusban a „klasszikus” pontgyűjtést is visszük párhuzamosan (a defenzív megközelítéssel analógiát vonnék: mint a fociban a sima tabella és az alternatív, szerintem az utóbbi jobban „mér”, de a közösség nem fogadná el, esetünkben ha még sikerülne is egy „jó” rangsort kihozni FUTURE alapokon, a rangsorban nem jegymegajánlott hallgató miért rajongana érte? Ezért kell a régi is párhuzamosan, hogy a végén a hallgató választhasson, hogy melyik szerint könyvel. A DEAC-Hackersben a rangsornak egyelőre tétje nincs, így ott a klasszikus pontgyűjtés eleve indokolatlan lenne.
[8] Ez felel meg a korábbi protókbeli foglalkozás, életciklus gráf csomópontjainak. Ezért neveztük „ókorinak” a FUTURE3 bontását, mert az annyira volt, most igaz szűkített értelmezési tartománnyal (esport és programozás), de teljesen életszerűre finomítjuk.
[9] Ezeket iterálhatjuk a NEMESPOR listán (MAGYAR NEMZETI E-SPORT PORTFÓLIÓ ÉS STRATÉGIA, https://groups.google.com/forum/#!members/nemespor) a Facebook csoportokban, de mégjobb – ha képben vagy ez irányban is esetleg, hogy – ha pull request-et küldesz direktben a repó ezen részeihez.
[10] https://github.com/nbatfai/future/blob/master/cs/F7/initF6actFS.sh
[11] https://github.com/nbatfai/future/blob/master/cs/F7/gaming.props
[12] Eli Wallace, http://stargate.wikia.com/wiki/Eli_Wallace például az.
[13] Érdekességként megjegyezhetjük, hogy ez egy ranglista is egyben.