BF Summer sales
Pouze tento týden sleva až 80 % na HTML & CSS a JavaScript
80 % bodů zdarma na online výuku díky naší Letní akci!

Příliš hlučná samota

Příliš hlučná samota

Koncept

Původně jsem chtěl vytvořit hru, která by byla podobná Skladníkovi či známému Sokobanu, ale s náhodně generovanými úrovněmi. Když jsem pak přemýšlel nad názvem a nad grafikou, napadlo mě, že to nemusí být vždy nutně uskladňování beden. Prvně mě napadlo, že udělám hru o kotelníkovi, který tlačí vozíky uhlí do kotle, ale hned druhý nápad vzpomněl na známou novelu B. Hrabala, ve které hlavní hrdina Hanťa po 35 let lisoval starý papír. Od toho se též odvinul nápad proložit úrovně příběhem, v němž jsou někdy parafrázovány, někdy citovány a někdy jen zmíněny události či myšlenky z knihy.

Kód

Jedná se o klasickou WPF aplikaci, v níž je dodržován model Model-View-Viewmodel. Obsahuje pak jedinou třídu (Hra.cs), která odvádí většinu práce. Základem každé úrovně je mapa, která má podobu dvojrozměrného pole typu "char", ve kterém jednotlivé symboly značí, co na daném místě je (např. 'p' = 'podlaha'). Samotné generování nových úrovní byl asi největší oříšek: bylo třeba zavést spoustu opatření, aby nevznikaly úrovně, které nejsou řešitelné. Např. když se při dělání chodby změní směr, spustí se režim vykreslování zatáčky, který přidává políčka podlahy i do stran. Nesmí jich však zase přidávat příliš moc, jinak by hra byla triviální. I tak je spíše o pozornosti a neudělání chyby (nezatlačení balíku ke zdi či k jiným balíkům tak, že už nepůjde dostat do lisu) než vyloženě o potřebě začít s každou novou úrovní uvažovat jinak. Od umístěných balíků se počítají průchozí trasy k lisu, aby bylo jisté, že k němu s daným balíkem lze dojít.

Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!

Po vytvoření mapy do pole následuje její vykreslení, k čemuž je použit Canvas, na který se postupně sázejí políčka odpovídající poli. Pak už je možná hra, která se ovládá šipkami. Při pohybu postavičky či balíků se nepřekresluje neustále celá plocha. To by sice šlo, ale bylo by to zbytečně pomalé a náročné na výpočet. Místo toho se jen na nové políčko (lze-li na něj jít) vykreslí postavička či bedna a na to staré podlaha.

Hra

Hra

V každé úrovni jde o dostání všech balíků do lisu (což odpočítává počítadlo). Když se tak stane, načte se nová úroveň. Mezi některými úrovněmi jsou přitom příběhové vstupy. Většina úrovní by měla být řešitelná, ale kdyby náhodou ne, popř. kdyby se hráč zasekl (protože třeba zatlačí balík do pozice, z níž už jej nedostane), je možné si klávesou "R" nechat vygenerovat nový layout dané úrovně (úroveň se tímto nepřičte).

Příběhový režim hry má 30 standardních a jednu poněkud jinou úroveň. Při postupu úrovněmi se čas od času mění textura zdí. Poté je možné pokračovat v tzv. "nekonečné hře", kdy se již textury nemění, příběh nepokračuje a nenásleduje žádný konec. Čím vyšší úroveň, tím více balíků (které jsou dříve daleko od sebe, ale později se začnou spawnovat vedle sebe, takže je třeba je nejdřív nějak "rozdělit"), ale tím také více otevřeného prostoru.

Dohrát příběhovou část hry by mělo trvat asi 20-30 minut. Nápovědy i příběh jsou (dle zadání) v angličtině.

Příběhová vsuvka

Tým

Hru jsem dělal sám.

Přílohy

V přílohách bude celá složka se solution i vybuildovaný EXE soubor se hrou.


Galerie

Hra byla vytvořena v roce 2020.

 

Všechny články v sekci
ITnetwork summer 2020 - Ceny v hodnotě 10 000 Kč!
Článek pro vás napsal Jakub Raida
Avatar
Jak se ti líbí článek?
Ještě nikdo nehodnotil, buď první!
Aktivity (3)

 

 

Komentáře

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.

Zatím nikdo nevložil komentář - buď první!