Machr na další týden je tady. Hrajeme o modrou placku Machr na algoritmy a
zase nějaké ty nálepky. Prozradím, že na nátlak komunity budou vyrobeny i
placky "Machr na C#" (možné dostat i tu). Toto zadání je možné vypracovat
i v jiném jazyce (tedy např. v Javě nebo C++).
Vytvořte aplikaci, které se na vstupu zadají rozměry dungeonu
(bludiště) a ona jej náhodně vygeneruje. Bludištěm se myslí 2D pole
čísel, kde 0 je prázdno a 1 je zeď. Snažte se o co největší rozmanitost,
vyhrává nejrealističtější výsledek. Můžete vytvořit bludiště
pravoúhlá (to je jednodušší) nebo jako náhodně členité místnosti
(jeskyně) propojené chodbami. Opravdoví machři mohou přidat několik
dalších sad zdí (1 kámen, 2 cihla, 3 strom, 4 voda...) a nechat vygenerovat
mapu s jeskyněmi i pravoúhlými domy a lesy. Čím inteligentnější
generátor bude (např. bude umět dělat mosty přes vodu), tím vyšší
bodové hodnocení. Záleží hlavně na výsledku, nepiplejte se zbytečně s
GUI aplikace (stejně nebude hodnoceno), stačí to vypsat do konzole jako
barevné čtverečky.
Dnešní soutěž je speciální v tom, že na výsledek bude navazovat
další kolo. Nechal jsem se trochu inspirovat společným projektem od
Mediela.
Nějaké obrázky k inspiraci jsem přiložil níže. Deadline dejme jako
vždy sobota (23.3.) v 19:00.
Jaké parametry algoritmu budou hodnoceny a jakou váhou?
Rozmanitost terénu nelze brát jako parametr obtížnosti,
protože pokud algoritmus umí tři druhy terénu, tak jich umí i 20.
To zní dobře toho bych se mohl zúčastnit. Nevadí výsledek jen v
testovým výstupu? Nevadí když na to použiju ten algoritmus co jsem ho tu
dneska zveřejnil (stačí vylepšit) ?
Jak jsem psal, hodnotit se bude inteligence. Voda se má chovat jinak než
zeď třeba, protože voda vypadá jako kaluž a zeď staví člověk a je tedy
do čtverců. Jeskynní chodby by se mohly kroutit náhodně, zděné naopak
být rovné. Ne že to vygeneruje vše stejně a jen to mění "barvu" Velcí machři mohou zkusit
implementovat mosty, lesní cesty atd. (naopak v moři cesta asi nebude).
Ano, mělo by se tam dát alespoň trochu chodit, nemusí být vše
propojené, ale ne aby to vygenerovalo uzavřenou mapu kde hráč udělá
maximálně 3 kroky a narazí na zeď
Všeobecná mapa, bude se hodnotit jak to umí pracovat s různými typy
terénu nebo jak hezky vypadá výsledek. Záleží na konkurenci, jak chytré
budou algoritmy ostatních
Proč ne? Tak jeskyně
nebo bludiště je relativně jednoduchá, udělat více terénu také půjde,
nejsložitější bude jejich různé chování, ale myslím, že výsledek
může vypadat pořádně
Když ta cesta bude tunel, tak proč ne, ale pochybuji, že jsi jel po
obyčejné cestě
Jeskyni jsem si zkoušel, stačí když se hýbeš náhodným směrem (ne
zpět) a kolem sebe stavíš zdi. Vypadá to docela dobře. Není to hotové,
udělal jem několik místností a propojovač co kolem dělá chodby a
teleportuje se, ale neřeší to podmínku propojení místností, spíše jen
pokus jak je to složité.
Tohle je spíš to lidsky vytvořené bludiště.
Jeskyně je šílený trojrozměrný útvar. Už jsem jich pár viděl.
Představoval bych si takový algoritmus, který tě nechá zadat
složitost průchodu ( kolik cest k cíli ), vypnutí-zapnutí průchodu
podle pravidla pravé ruky, místnosti v různých úrovních, zdroje
vody a jejich typ, počet dveří a zamčenost. A spoustu dalších věcí.
No prostě pořádně.
Já to asi také zkusím. Teď dělám podobnou mapu v XNA na jednu hru.
Akorát isometrickou. Navíc nevím jestli by se líbil kód , takže udělám novou v
konzoli.
Myšlenka je to hezká, ale za ten týden je to asi nerealizovatelné Každopádně ke splnění
zadání postačí něco jako jsem poslal, uvidíme s čím kdo přijde a jak
dobrá bude konkurence
Dnes jsem stihl algoritmus podobný tomu <a
href="http://www.itnetwork.cz/algoritmy/bludiste/algoritmus-tvorba-nahodneho-bludiste">zde</a>
na devbooku. Hodlám ale vymyslet ještě lepší, nebo ho alespoň o několik
věcí doplnit. Snad to stihnu
Jo vidíš, tohle jsem chtěl také připomenout že tu je popsané a
zapomněl jsem na to. Když to zkombinuješ s nepravoúhlým generátorem, bude
z toho velmi dobrý svět
To RyKk0l4N:
cituji Sdraco: "Ano, mělo by se tam dát alespoň trochu chodit, nemusí být
vše propojené, ale ne aby to vygenerovalo uzavřenou mapu kde hráč udělá
maximálně 3 kroky a narazí na zeď"
Po tom, co jsem viděl Satikův výtvor, mě napadlo soutěž trochu
rozšířit. Dejme si 2 témata: venkovní svět (voda, lesy, cesty) a vnitřní
svět (prostory v budově, jeskyně). Tento týden dáme 2 placky machry na
algoritmy, jednoho za outdoor a druhého za indoor. Takže David a
Petr Nymsa, máte větší šanci
Záleží na i na provedení algoritmu, nebo jenom na tom, co vyplivne?
Myslím například, jestli je v pořádku generování jedné jeskyně pomocí
cyklu s (pevné zadaným) počtem iterací kolem 50?
Tak jsem vyvinul taky jednu variantu.
Generuje vnitřek jeskyně s výškovou mapou ( odstíny šedi ),
zatopené části s různou hloubkou ( odstíny modré ) a navrhuje
schéma průchodnosti z náhodného bodu na okraji ( červené výplně ).
Ať už to tady uspěje nebo ne, láká mě vytvořit si z té mapy
prostorovou simulaci skutečné jeskyně. Až bude čas, tak to
zkusím.
Dneska mě napadl ještě jiný algoritmus, ale asi ho už nestihnu
realizovat, protože je časově náročnější ho napsat. Ale uvidím,
třeba mi to nedá a nějaký čas na to najdu.
http://www.itnetwork.cz/…hraci-plochy
Zde byl přidáná (až se schálí) nová verze algoritmu který je pro tuto
soutež finální .
Má tvořit jeskynní systém.
Umí přibližné nastavení počtu místností a jejich velikost. Generuje
jeskyni a vodu (ve dvou verzích - průchozí neprůchozí), má mod alternative
který spočítá a seřadí všechny jeskyně do oblastí které jdou
projít.
Tak, ukázky z toho, co jsem dnes udělal. Snad to do zítřka stihnu.
Jen tak pro zajímavost, obrázky 2 a 3 jsou generovány pomocí stejného
algoritmu (a ten se mi vlastně ještě nepovedl tak, jak jsem chtěl ), jsou pouze jinak
obarvené. https://dl.dropbox.com/…9/Ukazky.zip
Tak mám něco podobného. Už jsem vyzkoušel asi pět algoritmů, ale ani
jeden nesplnil očekávání, tak doufám, že se ten na kterém dělám teď
povede. Snad to stihnu.
Ahoj, <a
href="https://dl.dropbox.com/u/109146859/Generator%20Salatik.zip">zde</a>
je ke stažení můj generátor. Jelikož mám ještě dost věcí do školy, je
to nejspíše moje finální verze. Je zrovna ve fázi předělání, takže je
tam spousta kódu (i některé třídy) navíc a je to dost nepřehledné. Snad
se v tom budete alespoň trochu orientovat.
Tak jsem dávám to co jsem naprogramoval. Zelené jsou nížiny, šedé
hory, černá sopka, červená láva v sopce, oranžové obyvatelstvo, zelený
je les, modrá je jako obvykle voda. Řeka má deltu a teče z hor. No na výhru
to nevidím, aspoň dobrá zkušenost.
Omlouvám se za 3 minuty zpoždění. Poslední verze tady. https://www.dropbox.com/…c/NtbOSslJ-r
Ale vypadá to na pěknou porážku. Alespoň sem se zabavil A ten kod je hrozný. Spěchal sem, takže tam zatím nejsou ani
komenty.
Pro mne jsou Dungeony spojeny s hrama jako byly Beholder, Dungeon Master.
Tedy podzemí s chodbami. Teď jsem si vzpomněl ještě na Ultimu Underworld I.
a II. Přikládám mapu jak vypadalo bludiště v 10patře Dungeon Master I.
Myslím si, že jestli má být hra zábavná, je potřeba aby byly i mapy
dobře promyšlené. Generátory jsou sice fajn, ale už Vám nevytvoří
příběh, logiku, posloupnost a pod.
To ne, ale mohou výrazně pomoci při vytváření prostředí, člověk
zvládne udělat ve stejném čase hru mnohem delší a propracovanější tím,
že upravuje vygenerované světy Jinak hra Minecraft je generovaná a je zábavná
To byly skvělé hry a já si dobře uvědomuji omezení,
která s sebou generátory přinášejí. Na druhou stranu
je třeba říct, že generovaná místnost jde ručně osadit
příšerkami, pastmi i příběhem.
Ještě pro jistotu, máme tu výtvory od: brisingr002, hartrik, martinsakra,
misaz, salatik, satik, tomben. Na nikoho jsem nezapomněl? Jak je to tu
rozházené tak se v tom trochu ztrácím
Ono při 2d poli o velikosti 50x50 a trochu vetší členitosti krajiny je
těžké, aby čtverečky nevypadaly jako čtverečky. Zkus buď mapu zvětšit,
nebo si pohrát s parametry (méně lesa a bažiny).
Takže, jak jsem již řekl, kvůli rozmanitosti soutěže budeme rozdávat 2
placky, za indoor a za outdoor. Algoritmy jsou totiž odlišné a bylo by velmi
těžké hodnotit indoor vs. outdoor. Dnes jsem si k sobě nikoho nestihl
sehnat, takže jsem na to sám, napíšu vám alespoň krátký komentář k
jednotlivým aplikacím.
Outdoor generátory
1. Satik - Skvělá práce, dokáži si na tom představit hratelnou hru.
Máš před ostatními obrovský náskok, program je velmi propracovaný.
2. brisingr002 (8 bodů) - Vidím v tom takový čtvercový vzor, ale docela
dobře jsi oddělil části s vodou a pevninou.
2. Salátik (8 bodů) - Pěkné, ale všechny složky jsou velmi vyrovnané,
chybí mi souvislé kusy pevniny a lesů.
2. misaz (8 bodů) - Dobrý nápad, ale máš opačný problém, jako tví
kolegové, výsledky jsou příliš předvídatelné.
Indoor generátory
Tady to bylo velmi vyrovnané, nejraději bych dal placku všem, ale pak by
soutěž ztratila smysl
1. Hartrik (10 bodů) - Mno, co tomu vytknout? Řešil jsi i místnosti, rovná
železnice, klikaté chodby, fakt super!
2. TomBen (9 bodů) - Zajímavý nápad s těmi kruhy, vypadá to dobře.
2. martinsakra (9 bodů) - S nastavením 25 a 25 to generuje opravdu velmi
dobré prostory, moc se mi to líbí. Škoda že prostory nejsou vždy
propojené, ale za to body nestrhávám.
Machry si tedy odnášejí Luboš Běhounek Satik a Hartrik, gratuluji! A
ostatním taky, umíte kluci, mám z vás radost
Chápu. Ale jak už jsem psal, neměl jsem moc času. V příští verzi asi
ošetřím, i když na druhou stranu je zase dobré, když má uživatel trochu
volnosti. Jinak díky za zpětnou vazbu.
Gratuluji vítězům. A ujištiju vás že svůj algoritmus ještě
vylepším. Vrátím se zpět ja jednu místnost a udělám z něj krásný
generátor na sokoban jen co na to bude čas.
To je jen krátkým časem při generování náhodné výšky políčka
mapy. Pokud bych tam dal uspání vlákna, hned by se to trochu promíchalo.
Schválně jsem to tam ale nedával, protože by se to generovalo příliš
dlouho.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.