Diskuze o textových hrách

Kroužící orel 2

gaspoda

  • Plný člen
  • ***
    • Příspěvků: 141
    • Zobrazit profil
He, he, to jsi mě pobavil, na WTF momenty jako začátečník narážím ve všech jazycích, vím ale, že jsme se v minulosti o tomto bavili a doporučoval jsi začít nějakým neskriptovacím.

Můj poslední WTF v Pythonu byl, když jsem si udělal dvě úplně stejné globální proměnné (byly to kurzory mysqldb) a když jsem je použil úplně stejným způsobem z funkce, tak jeden fungoval a druhý mi řekl, že používám nedeklarovanou lokální proměnnou.

Měl bych dotaz na Klub Kapsa, je na něj odkaz z tads.cz a už dříve jsem jeho stránky prozkoumal. Fungujete stále (teď třeba vzdáleně) s využitím C++ a grafických knihoven s IDE QT Creator? Teď jsem zjistil, že je k mání i kroužek Pythonu pro mladší účastníky. Mě by zajímaly reakce dětí, jak se na tyto jazyky dívají a zda se pro výuku osvědčily? Dříve jsem na táborech dětem také v učebně ukazoval něco v linuxu a počítačovém mapování, teď už sotva stíháme program venku a u koní, takže jsem počítadla zcela vyškrtnul, proto by mě zajímaly Tvé zkušenosti.

No, teď je činnost kvůli zákazu vycházení pozastavená, ale já se přesto snažím kroužek i tak učit online formou, což je pochopitelně o dost složitější. Zítra budeme mít hodinu s letošníma začátečníkama a sešla se docela dobrá parta, někteří se spolu dokonce znají, což je víc motivuje. Kroužek C++ je můj, Python učí kolega. On to má postavené pro ty mladší kolem 6. třídy, takže na to jde pomalejš a dělají více izolovaných příkladů, u mě začínají zpravidla tak osmáci a jdeme postupně spíš do větší práce, kterou společně tvoříme a přitom se učíme nové věci. Moc je nešetřím, leccos si musí vydedukovat. Co na to říkají nevím, nemají čas moc mluvit, ale jestli chceš, tak se jich přijď zeptat (napiš do mailu).

Ne vážně, na programovacím jazyku tolik nezáleží, já to C++ mám poměrně rád, protože se s ním dají celkem dobře dělat jednoduché hry, ale ve výsledku učím dost osekanou podmnožinu a kolikrát mi jde víc o pochopení toho, jak to funguje na pozadí, než abych je naučil nějakou finesu jazyka samotného. Ty širší souvislosti jsou pro mě důležitější.


Kroužící orel

  • Plný člen
  • ***
    • Příspěvků: 200
    • Zobrazit profil
    • Šťastný statek
Jo, tak to Tvoje rozčarování Pythonem chápu, když jazyk použije stejně deklarované globální proměnné jednou tak a jednou jinak bude asi trochu vošajstlich, schválně jsem si zkusil něco v tomto duchu zadat do vyhledávače a trochu si početl:

https://stackabuse.com/local-and-global-variables-in-python/

plus jsem jen ze zvědavosti projel jeden odkaz ze stackoverflow:

https://stackoverflow.com/questions/52413337/python-variable-not-defined-within-function/52413443

Nezkusil ses na tohle chování zeptat třeba právě na výše uvedeném serveru? Zrovna v Pythonu by bylo divné, kdyby se s něčím takovým nikdo nesetkal. Mě docela dostala ta terminologie ohledně funkcí a metod, čekal bych spíš, že v plně OOP jazyce funkce nebudou, to jsou ale naštěstí jen prkotiny, na které se dá zvyknout.


Ano, to je paráda, že můžeš učit alespoň přes internet, u mě se na koních tímhle stylem jezdí drobet hůř. Pokud se děcka stále setkávají, je to paráda, to je to nej na každém klubu, moc jsi mě pobavil s tím "nemají čas moc mluvit", ale chápu, u mě je to podobné, táborníci si mohou žvatlat co chtějí, ale musím je utahat, aby mi nerozbili barák. Ohledně jazyka jsem přesně něco takového četl a posté slyšel od autora knihy Java 7 - Učebnice objektové architektury pro začátečníky, jde o to pochopit princip a pak už se stačí seznámit jen s jednotlivými odlišnostmi jazyků (a naučit se jejich přednosti, případně je spojit a využít obou - třeba tady se mi moc líbí CPython). Proto mě tak baví TADS, který dokáže pro moje zájmy neuvěřitelné věci, jeho OOP principy využiji v C++ a Javě plus následně si budu moci sáhnout na tu zajímavou Adu:

https://learn.adacore.com/pdf_books/courses/Ada_For_The_CPP_Java_Developer.pdf

a to samé Python, který mohu propojit třeba s C díky výše uvedenému a pomocí C++ se třeba pěkně vrátím zase směrem k Javě.

Na druhou stranu nelze přehlédnout, že mě baví Linux a Windows nebo Android sleduji jen z povzdálí, nakousnutého jabkouna už vůbec. Tady to bez Cčka opravdu nepůjde a protože chci vědět jak systém funguje, nelze jinak (pokusy o OS v Pascalu nebo v Adě jsou spíše testovací projekty). Ptal jsem se na klub taky proto, neb většinou vidím u začátečníků Javu nebo dnes spíše ten Python a když se upřímně juknu na aplikace, které mě zajímají, tedy prostředí Trinity desktop, astronomické Stellarium nebo mapový QGIS, C++ bude třeba (a např. pomocí zajímavého Treefrog frameworku si sáhnu i na ty dnes tak oblíbené aplikace pro web). IDE jsou dle mého názoru na úrovni Javy (teď koukám, že nový QT Creator už má i svůj Marketplace, všichni se tak krásně vopičí) a i přes snahy nahradit C++ třeba Javou, Go nebo Rustem tenhle vesele žije a stále se vyvíjí, což je skvělý ukazatel jeho kvalit, ono to s tou jeho složitostí také nebude tak horké, když právě pochopím princip.

Bezva, díky za zaslané zkušenosti, půjdu zase tvořit a študovat dál.


Kroužící orel

  • Plný člen
  • ***
    • Příspěvků: 200
    • Zobrazit profil
    • Šťastný statek
Hru stále tvořím, teď to jde krapet pomaleji, kromě toho, že máme dětičky stále doma pomáhám s testováním nové Pythoní knížky, tvořím web pro MŠ a začaly individuální jízdy na koních plus příprava táborů, na Orla dvojku ale nezapomínám a postupně budu pokračovat dále. Už se moc těším, až vydám plně hratelnou verzi.


gaspoda

  • Plný člen
  • ***
    • Příspěvků: 141
    • Zobrazit profil
Jasně, držím palce! A už jsem alespoň v té fázi posledních 20 % programování, které trvá 80 % času?


Kroužící orel

  • Plný člen
  • ***
    • Příspěvků: 200
    • Zobrazit profil
    • Šťastný statek
He, he, tak to na mě sedí. Ale hru dokončím, i kdyby trakaře padaly, jen je to s ratolestmi doma časově náročnější plus všechny koňské akce z března a dubna se vesele valí. Ale nevadí, scénář je již dávno hotový, už "jen" vše doprogramovat. Každopádně vycházejí stále nové textovky, moc se těším, až vyzkouším Nové Kainovo dobrodružství, ale až po práci. Za chvíli jedeme zase na řechtácích a poté hlídám dcérenku, zítra už zase budu pokračovat, už se těším.


Kroužící orel

  • Plný člen
  • ***
    • Příspěvků: 200
    • Zobrazit profil
    • Šťastný statek
Krásné ránko přeji,

tvorba se pomalu, ale jistě chýlí ke konci, už mám jen dva týdny, než začne letní tábor a pak už opravdu neudělám nic. Téměř denně jezdíme, ale vždy ve volné chvíli pokračuji v tvorbě, koncem příštího týdne těsně před nástupem táborníků hru vydám - i třeba bez kompletní nápovědy (využiji tu stávající a pokud budu moci, lehce upravím), počítání skóre nebo bez tipů (s těmi ještě uvidím, naštěstí není problém je časem dokončit), hlavně aby šla hrát a hráče alespoň trochu bavila. Tvorbu rozhovorů už jsem docela pobral, takže by neměl být problém, ještě s nimi propojím pár klíčových předmětů a akcí, závěrečné testování a bude možno hrát, naštěstí určité zkušenosti s OOP už díky Tobě,  Javě a Pythonu mám, takže OK.

Moc jsem si oblíbil QT Creator, po táborech se pořádně vrhnu na C a především C++. Zjistil jsem totiž, že drtivá většina programů, které využívám, představuje kombinaci C++ a QT5 (QTads, QCad, FocusWriter, LyX, QGis, Stellarium, VLC), případně Pythonu a QT5 (Callibre, PGAdmin, Jupyter QT Console) a protože Linux na dlouhou dobu určitě neopustím, není co řešit plus pro mé starší stroje se jedná o jistě parádní řešení. I když zkouším různá IDE, QT Creator mě oslovuje čím dál více (nejen pro TADS, ale u C++ určitě využiji parádní UML modeláře, profiler a bezvadnou offline dokumentaci) a nedivím se, že jste se pro něj rozhodli v kombinaci s grafickou knihovou SDL (ta je pokud se nemejlim i u Pedrova TXT Engine) i na Kapse. Jak vidno, QT opravdu frčí a dnes už nejen na klasických desktopech a i přes zpoplatnění LTS verze (podobně jako u Javy, obě firmy naprosto chápu, musejí vydělávat) mi přijde jako velmi zajímavá kombinace. Když vidím to obrovské množství parádních příkladů a návodů právě z QT Creatoru, je vidět, že aplikace, které budu chtít vytvářet/upravovat toto kombo krásně pokryje.

Máš nějaké zkušenosti s vývojem v QT5, nezkoušeli jste s ním pracovat i na Kapse (je mi jasné, že práce s SDL bude určitě snadnější, ale co kdyby)? Je zde i starší zajímavý fork QT3 s názvem TQT3 využívaný v prostředí Trinity, ten je ale spíše udržovaný, než vyvíjený (což samozřejmě nemusí být na škodu) a moc bych rád slyšel názor od někoho, kdo s C++ léta pracuje.

Zatím se loučím a jdu zase pokračovat



panprase

  • Administrátor
  • Superčlen
  • *****
    • Příspěvků: 677
    • Zobrazit profil
No supr, už se těším na indiány zase :) píšu si - příští týden nic nevydávat. A´t se to nemíchá.
První den přiletěli, druhý den uděřili, třetí den zvítězili


Kroužící orel

  • Plný člen
  • ***
    • Příspěvků: 200
    • Zobrazit profil
    • Šťastný statek
Máš recht, indiánů i koní si užiješ dosytosti. Druhý díl se stejně jako první odehrává v parném létě, ten třetí už zasadím do pořádné zimy, ať se pomalu připravíme na východní frontu. Moc mě zajímá jak bude TADS přijat vedle parádního TXT engine i dalšími textovkáři, mě se jeho OOP styl líbí čím dál víc a jeho možnosti využiju tak sotva z poloviny.


Kroužící orel

  • Plný člen
  • ***
    • Příspěvků: 200
    • Zobrazit profil
    • Šťastný statek
Kroužící orel 2 - vydání nedokončené hry

Je mi moc líto, ale do začátku prázdnin naprosto nemám šanci hru vydat, i když jsem v to doufal - vzhledem k neustále se měnícím situacím tohoto roku plus opravdu nejsem schopen u pro mě tak rozsáhlého projektu se zatím malými vývojářskými zkušenostmi odhadnout čas tvorby. Do začátku táborů musím vyřešit strouhání kopyt koní (3 kopytáři v okrese vypadli), původně zářijové školní soustředění u koní se přesouvá na příští týden kvůli změně programu a já budu mít na tu nejnutnější závěrečnou přípravu táborů pouze 3 dny (naštěstí to nejdůležitější už je připraveno), takový je život.

Ale abych neskuhral, ideální řešení pro tuto chvíli se mi zdá vydat hru tak jak je včetně scénáře, doprovodných textů a zdrojových kódů. Vše jsem co nejpřehledněji rozdělil a níže popisuji, co se v přiloženém archivu nachází. Atmosféru hry si lze užít už nyní, kdo má zájem, může se začíst do téměř 100 stránkového scénáře a prozkoumat zdrojové kódy. V tvorbě budu zase pokračovat po letních táborech, kdy je na počítačové záležitosti vždy více času, má-li však kdokoliv zájem s vývojem pomoci, je velmi vítán.

TADS3 přestavuje opravdu regulérní programování ála C++ nebo Java (jen manuály vydají na parádně silnou vývojářskou bichli), kdo zná konstrukce např. z těchto jazyků, bude se zde cítit jako doma. Já jako začínající vývojář musím nad mnoha konstrukcemi dlouho dumat a vývoj se tak prodlužuje, to je ale daní za velmi komplexní jazyk (a musím uznat, že opravdu špičkový). Vyvíjím v Linuxu (Arch Linux, interpretr frobtads 1.2.4, editor Pluma z grafického prostředí MATE nebo QT Creator, pro hraní využívám QTads nebo řádkový frobtads, zjistil jsem, že starý dobrý windowsí TADS Workbench už téměr nevyužívám). Všechny txt soubory jsem pro jistotu převedl do Win kódování. Inspirací je mi především Základna na Asteroidu, Dobrodružství Heidi a moje prvotina Exoter, více info zde na fóru nebo na stránkách www.tads.cz .



Následuje slíbený popis adresářů seřazený abecedně:

Informace k tvorbě - zde je k mání návod na TADS3 od Gaspody, nastavení editoru QT Creator a technické informace ohledně kódování nebo mluvnice

Mapa - mapa vytvořená v programu Trizbort, který z ní dokáže vytvořit kostru lokací mimo jiné i pro TADS3

Scénář - pdf soubory představují vlastní scénář i s nástinem světových stran (zde jsem však využil Trizbort), popis předmětů a návod k úspěšnému projití hry. Důležitý pro aktuální vývoj je soubor 2 díl - Indiánská vesnice vč. světových stran.txt, právě ten slouží k vývoji nedokončených místností, předmětů a situací. Na první pohled veliký, jedná se ale především o nedokončené rozhovory a akce, které už nestihnu doprogramovat

Spustitelná hra - zde je t3 binární soubor spustitelný v některém z interpretů

Testy situací - adresář s minimálním počtem místností, kde testuji situaci, kterou právě programuji (rozhovor, reakce postav, akce s předměty apod.). Zde jsem řešil vše, nač jsem se ptal na fóru, je to můj způsob testování vždy jen konkrétního úseku hry, který poté, co projde, přidám do hlavních zdrojových kódů

Zdrojové kódy - tyto lze pomocí příkazu t3make nebo ve Workbenchi bez chyb zkompilovat a získat t3 binárku, v soboru Makefile.t3m jsou všechny uvedeny. Zvolil jsem velbloudí notaci, nacházejí se zde místnosti, postavy a jedna externí třída, kterou využívám pro popis a akci s oděvy.



Snad jsem na nic podstatného nezapomněl, pokud někomu i tento nedodělek udělá radost, splnil svůj účel. Jakékoliv dotazy zodpovím, chce-li se někdo zapojit do vývoje, bude to paráda, jinak budu pokračovat během září. Máte-li kdokoliv v nejbližších dnech v plánu vydat jinou textovku, určitě s chutí do toho.


Kroužící orel

  • Plný člen
  • ***
    • Příspěvků: 200
    • Zobrazit profil
    • Šťastný statek
Zdravím na textovkách,

prázdniny dopadly parádně, většina táborníků spokojena a tak to má být. Nyní se, jak jsem slíbil, mohu zase vrhnout na vývojařinu, vidím, že si pár lidí scénář i zdrojáky stáhlo. Znovu jsem si nastavil QT Creator (tohle prostředí se mi líbí čím dál více, kromě parádně integrované dokumentace také pro podporu Language server protokolu, takže kromě Cčka krásně funguje Java i Python) včetně testů, vývoj teď už půjde rychle. Ještě testuji druhou novou knížku o Pythonu a začátkem října mě čeká to samé s Javou, TADS má ale zatím přednost, ať dokončím, co jsem začal.


Kroužící orel

  • Plný člen
  • ***
    • Příspěvků: 200
    • Zobrazit profil
    • Šťastný statek
Tvorba krásně pokračuje, projekt takové textovky je ale pro mě opravdu rozsáhlý a jeho skutečnou velikost si uvědomuji až při samotné tvorbě (jo, jo, říkal jsem si "textovka, to nic není", to ale v současném TADSu opravdu neplatí). Paralelně študuji Javu, nedá se nic dělat, už mám naplánované termíny školení i lektoraci nové knížky, to ale vůbec nevadí, oba jazyky jsou si velmi podobné a zkušenosti nasbírané v jednom z nich využiji i v tom druhém.

Pro větší přehlednost jsem celý projekt vystavil na Githubu:

https://github.com/krouziciorel/Krorel2

a tam budu postupně zanášet další změny. K mání je to podstatné, zdrojové kódy a binárka, mapa, návod a příběh ke hře.

Svět IT je holt dnes moc rozsáhlý a i když mě zajímají nejrůznější technologie (různé Linuxy a UNIXy, jazyky C, C++, Ada, Java, Python, TADS. rozhraní QT, GTK, objektový Pascal a Lazarus, Javascript a webové technologie apod.), není v mých silách vše zmáknout, takže jsem se uklidnil a v Arch Linuxu budu nyní pracovat s Javou, TADS3 a následně s Pythonem, získat programovací gró je to hlavní.

Také jsem se donutil opravdu pečlivě číst originální dokumentaci od Eveho a vyplatí se, např. nyní v Getting started in TADS3 jsem si konečně u vytváření rozhovorů uvědomil výhodu OOP před vývojem procedurálním (str. 94).  To je OK, Java, TADS3 i Python s podobnou metodikou počítají a i když určitě není dokonalá jako nic jiného na světě, přehlednost konečně vidím na konkrétním příkladě a to je jen dobře.

Při každé další větší aktualizaci zase zveřejním report, každopádně jak jsem již uváděl před prázdninami, hra je plně hratelná už teď.


Kroužící orel

  • Plný člen
  • ***
    • Příspěvků: 200
    • Zobrazit profil
    • Šťastný statek
Tak děti nám konečně již brzy půjdou do školy a místo řádění v MS Teams a učitelování mohu pokračovat ve vývojařině. Vždy, když se na dílko juknu po nějakém čase, napadají mě nejen novinky, ale také věci, které je třeba opravit - podle popisu lokací a předmětů z tads.cz jsem sjednotil názvy předmětů i místností, tím se hra i zdrojové kódy zase o něco zpřehlednily.

Vím, že tvorba mi jde neskutečně pomalu, kromě domácích záležitostí ale vše kombinuji s objektovými jazyky, teď už jsem ve fázi, že je mi vcelku fuk, zda něco vytvářím (mnohem častěji však upravuji) v C++, Pythonu nebo v Javě, teoretické zkušenosti z těchto jazyků parádně vidím v praxi přesně tak jak popisuje GETTING STARTED IN TADS 3 v kapitolách PROGRAMMING PROLEGOMENA a FURTHER PROGRAMMING CONCEPTS AND CONSTRUCTS. A to je ono, bezvadně vytvořený OOP jazyk TADS3 všechny konstrukce parádně ukazuje v praxi a přesně tato výuka mi sedne.

Z vynikajícího QT Creatoru jsem zatím přešel na VSCode s velmi základním TADS3 rozšířením, zde mohu využít alespoň nějakou kompletaci textu a rozhraní mi přijde drobet přehlednější. Na druhou stranu až budu tvořit něco v C++ a QT, vesele se vrátím zpátky, je bezva, že každý editor je vhodný na něco jiného a dnešní výběr je obrovský.

Na Github jsem umístil aktuální zdrojáky včetně plně funkční hry a budu zase pokračovat, naštěstí pomalu začíná zimní sezóna a v kombinaci s dětmi ve škole se zase dostanu dále. Vidím, že tvorba ve výborném TXT Enginu pokračuje mílovými kroky a to je dobře, po práci si zase rád něco zahraji. Už mám ale plány na třetí závěrečný díl, který budu koncipovat trošku jinak, soustředit se pouze na vyprávění a především komunikaci s postavami s minimem hlavolamů tak, jak Gaspoda uvádí v úvodu svého manuálu, mě stále více láká.


Kroužící orel

  • Plný člen
  • ***
    • Příspěvků: 200
    • Zobrazit profil
    • Šťastný statek
Už raději nebudu psát termíny, dnešní už téměř rok trvající veselá doba rodiče a majitele řechtáků parádně prohání. Stále pročítám obrovské pdf texty dokumentace k TADS3, jak vidno, OOP věci typu polymorfizmus, vícenásobné dědění apod. zde autor popisuje také, jen je toho opravdu moc. Našel jsem i diagram TADS3 tříd (snad aktuální), pro zajímavost posílám v příloze.

Po získání základních zkušeností s architektorou, Pythonem a Javou jsem se vrhnul na staré dobré klasické C, to si projedu pořádně, abych pochopil jak a proč se jazyky vyvíjely (a sranda je, že i zde se dá programovat objektově, i když upřímně řečeno zase tak markantní rozdíl mezi strukturovaným a OOP stylem nevidím). Mezitím budu stále řádit v TADSu, ale to nějaký čas potrvá, ještě, že tu máme parádní hry v TXT engine, já však TADS nemohu opustit, díky němu jsem se vývojařiny dostal a jeho možnosti časem využiji mnohem více. O dalším postupu ve hře budu jako vždy informovat, malé změny zde jsou (a díky těm obrovským manuálům už jsem zvládnul i střídání dne a noci, hurá). Takže to vypadá na kombo C, C++, Python a taky ta Java (pro kterou však mám jen malé využití, opravdu spíše do firem) plus TADS, tohle v kombinaci s Archem už konečně představuje to, kam se mám vydat.


Kroužící orel

  • Plný člen
  • ***
    • Příspěvků: 200
    • Zobrazit profil
    • Šťastný statek
Studium "základního" C čka se opravdu vyplácí, člověk hnedle vidí jak ty linuxy fungují a také proč se autoři modernějších jazyků rozhodli pro GC a snaží se nás pokud možno netrápit těmi zlobivými ukazateli...

Ale zpátky k TADS, teď už konečně mnohem lépe chápu, proč věci uvnitř fungují tak jak mají. V jednom z minulých příspěvků jsem psal o tom, že bych rád hru rozšířil na denní a noční lokace, jen jsem nevěděl kudy kam. Teď po nabrání dalších zkušeností už je to jasné, i v manuálech je krásně psáno, že pro temnou místnost mohu definovat třídu DarkRoom, ale klidně i OutdoorRoom s využitím vlastnosti brightness - jasně, DarkRoom dědí z Room a brightness si nese sebou. A protože stále čtu o neopakovacím principu DRY, není zrovna vhodné tvořit vždy dva druhy místností, světlou a tmavou s velmi podobnou definicí. Vlastnosti jsou tu konec konců proto, aby se měnily, to už byl jen skok k příkladu, který jsem našel v jedné starší hře:

brightness = (nahrdelnik.isWornBy(me) ? 1 : 3)

Pro případné zájemce zasílám v příloze oba testovací soubory, kterých se změna týká, hra tedy bude zohledňovat den a noc dle původního plánu. Po taneční slavnosti a získání jednoho důležitého předmětu, který pak nebude možné svléknout a tedy ani položit, se herní svět ponoří do tmy, tuhle vychytávku budu sakra často využívat i u dalších her.

Takže tvorba se zase posunula kousek dál, teď zpětně vidím, že TADS3 bych jako jediný programovací jazyk nedal, potřeboval jsem se podívat i jinam. Jen pro představu, pokud někdo chcete v TADSu pracovat, jeho počet tříd je téměř stejný jako u mého oblíbeného QGISu, což je projekt jako poleno, takže tady se bez pořádných zkušeností člověk opravdu nechytá. Už chápu, proč tolik lidí TADS opustilo, můj druhý oblíbený TXT engine bude určitě mnohem stravitelnější. Ale ty možnosti TADSu a nyní už i velmi logické OOP, ach jo...



panprase

  • Administrátor
  • Superčlen
  • *****
    • Příspěvků: 677
    • Zobrazit profil
Mno to je zajímavý tohlecto, noc - den, déšť - slunce, léto - zima. Asi tuším jak bych to vyřešil v TXT :)  a Wolf si píše do todo, funkce weather :) tedy až po tom co dorazí dvě věci co rok slibuje!
První den přiletěli, druhý den uděřili, třetí den zvítězili