O střílečce situované do lokálního prostředí jsem snil v podstatě od okamžiku, kdy jsem poprvé spustil Dooma, naplno pak tahle touha propukla po návštěvě kina v úrovni Hollywood Holocaust v Duke Nukem 3D. Troufám si říct, že jsem nebyl zdaleka sám, kdo si přál kosit příšery třeba v pražském metru nebo na jiných všedních místech, která známe a běžně navštěvujeme. Tenhle naivní sen se nakonec skutečně splnil, počkat jsme si na to ale museli dlouhá tři desetiletí. Mezitím došlo ke dvěma důležitým změnám. Za prvé proběhlo obrození starých stříleček. Těm se dnes poněkud klamavě říká boomer shootery, byť se do tradičních bludišť místo naskriptovaných tunelů s chutí vrhají i mnohem mladší hráči. A za druhé s nástupem Steamu a různých nových technologií proběhla jakási vývojářská revoluce, takže dnes může svojí hru (nadto povedenou a úspěšnou) vytvořit doslova kdokoliv, třeba i zcela sám a včetně vlastního enginu.
Nabroušený hrot
Tohle přesně je i příklad Hrotu. Český nezávislý vývojář Spytihněv si dodal odvahy úspěchem Dusku sólo vývojáře Davida Szymanského a pustil se do vývoje vlastní střílečky inspirované svými oblíbenými hrami jako Blood, Quake nebo Chasm: The Rift. Vytvořil jí prakticky sám, a napsal si pro ni vlastní engine v Pascalu. Fascinující příběh vývoje Hrotu jsme na Vortexu zaznamenali v mnoha různých článcích a osobně se mi jinak introvertního autora podařilo dostat i před mikrofon. Zaujal mě svou skromností – Hrot dodnes přes zřejmý komerční úspěch vyvíjí po večerech ke svému hlavnímu zaměstnání, které mimochodem nijak nesouvisí s IT – a svérázným přístupem k vývoji charakterizovaným třeba absolutní oddaností své vizi bez ohledu na komerční ambice. Právě autorská osobitost je z Hrotu cítit na každém kroku. Hra teď po dvou a půl letech v předběžném přístupu (a celkem více než pěti letech vývoje) vyšla v plné verzi a my tak konečně můžeme zhodnotit celou Spytihněvovu vizi napříč kompletními třemi epizodami hry.
Zdroj: Spytihněv
JAKO DOMA
V první řadě je Hrot český skrz naskrz. Děj je situovaný „do Československa po jakési pohromě v roce 1986,“ jak konstatuje krátký popisek na Steamu. V samotné hře se pak už nic moc bližšího nedozvíte. Místo úvodního textu nebo cutscény jste vržení rovnou do akce v úvodní epizodě s názvem Polib mě Gustave. Objevujete se v úkrytu civilní ochrany hluboko pod stanicí metra Kosmonautů, vybaveni pouze srpem, pistolí vz. 52 a jedním jediným granátem.
Dalo by se říct, že ve hře děj zcela chybí, ve skutečnosti ale Hrot vypráví prostředím a říká toho hodně. Prostředkem jsou všemožné odstíny šedivé a hnědé, což jsou barvy, kterými si mnozí pamětníci tehdejší dobu nikoliv náhodou živě vybavují. Spytihněv mi před rokem v rozhovoru svou volbu zasazení zdůvodnil docela pragmaticky: „Socialismus si vybavuju jako cosi temného, a to se mi na střílečku hodilo víc než současné město se všemi jeho billboardy a reklamami.“ Při hraní Hrotu se ale nad touhle jeho poznámkou nemůžu než usmát. Kromě všudypřítomného temna a šedi je totiž Hrot také nesmírně hravý. A koneckonců je i plný reklam a billboardů, byť těch socialistických.
Světu mír
Lokace Hrotu jsou plné dobových cedulí, socialistických agitek či varovných nápisů. Jsou jich tu doslova desítky a dobře dokreslují bezútěšnou atmosféru doby, prezentovanou ale v jedinečné nadsázce a se svérázným humorem. Většina jich nemá praktický smysl, výjimečně ale mohou představovat i užitečnou nápovědu.
Hned kousek po startu narazíte na matrjošku, kterou si můžete cvičně rozebrat a zase složit. Pak objevíte sprchu s funkční vodou. Záchod, který lze spláchnout. Veřejný telefon, sifon, televizi, kolotoč, nástěnný kalendář, basu nebo psací stroj. Všechno jsou to drobné zbytečnosti, ale plně funkční. Autor ale zašel ještě dál a vy tak během hry narazíte třeba na kulečníkový stůl, na kterém si opravdu můžete šťouchnout koule do děr. Nebo na fotbalové hřiště, kde si začutáte na branku. Sice sami, ale s počítáním gólů! A je tu i elektronické piano, na němž můžete jedním prstem vyťukat nějakou jednoduchou melodii. Jsou to malé interaktivní detaily ve stylu stříleček z počátku 90. let, které vám ale v roce 2023 stále udělají velkou radost. A je jich mnohem víc, ani zdaleka jsem nevyjmenoval všechno.
Lokální je samozřejmě i prostředí jako takové a během tří epizod po osmi úrovních (navrch jsou tu dva tajné levely) navštívíte pozoruhodná místa. Bránit mír a socialistickou vlast před všemi podivnými narušiteli, což je opět citace ze Steamu, budete vedle metra také v Paláci Kultury, čistírně, podzemní stoce, na Vyšehradě nebo v památníku na Vítkově. A to je jen část lokací v úvodní epizodě – v druhé části hry se podíváte na české hrady nebo například do Ratibořic, což je jednoznačně jeden z vrcholů hry, počínaje cestou na mopedu až po zdejší bitvu s bossem v Babiččině údolí. V závěrečné epizodě vás pak čeká třeba spalovna, sídliště, nemocnice, případně další chodby v pražském metru. Inspirací autorovi ale nebyla jen všudypřítomná bezútěšnost, vedle kulturáku uprostřed sídliště nebo různých industriálních staveb došlo i na zásadní místa české historie. Nebo literatury!
ZLATÉ DEVADESÁTKY
Co se hratelnosti týče, nejlépe lze hru popsat jako hravý český mix Chasm, Quaka a Bloodu. Čekají vás různě složitá bludiště, ve kterých pátráte po klíčích. Ty odemykají další prostory, stejně důležité jsou ale také různé přepínače nebo ventily. Exploraci sem tam okoření jednodušší puzzle, pak se hra zase chvíli soustředí spíše na akci, načež vás opět překvapí něčím bláznivým, třeba zatopením celé rozsáhlé části nebo důlním vláčkem inspirovaným Half-Lifem. Autor Hrotu svá bludiště škodolibě prošpikoval naskriptovanými momenty (a někdy i lekačkami), takže se ani na okamžik nemůžete cítit bezpečně. A i když většinu úrovní dohrajete během nějakých 10 až 15 minut, po vzoru starých stříleček z devadesátek se můžete pustit do hledání tajných lokací.
Zdroj: Spytihněv
Zhruba čtyř až pětihodinovou herní dobu si můžete prodloužit volbou vyšší obtížnosti (je jich tu pět a nejvyšší je opravdu tuhá) a také režimem Bitka, což je v podstatě tradiční horda, kde na vás hra ve čtyřech různých arénách pouští nepřátele ve vlnách. A ocenit musím i achievementy – ty jindy okázale ignoruji, tady mě ale zaujaly vtipnými popisky a nápaditými úkoly.
Ale zpátky ke kampani. Úrovně možná postrádají určitou soudržnost a mohly by být vzájemně provázanější. Jak už ale padlo, Hrot je prostě poctou devadesátkovým doomovkám (jak se jim tehdy ještě říkalo) a absence konzistentního vyprávění je v level designu víc než vykompenzovaná nejen nespočtem pomrknutí a odkazů, ale i svérázných inovací. Některé prvky, často využité v jediném konkrétním okamžiku, musely dát nemalou práci a oceňuju i občasnou snahu o pokrok nebo překvapení. Třeba v rámci boss fightů, čímž se konečně dostáváme k tomu hlavnímu.
S BROKOVNICÍ NA VĚČNÉ ČASY
Tedy ke střelbě, nepřátelům a k vlastní akci. Začnu asi nečekaně pohybem, který s akcí úzce souvisí. Hrot je zatraceně agilní střílečka a rychlost pohybu je tak vysoká, že tu i nejtěžší zákys nemá dlouhého trvání. Především je ale nesmírně uspokojující hýbat se během přestřelek. Ať už tancujete kolem nepřátel v otevřeném prostoru nebo instinktivně uhýbáte v úzkých chodbičkách, je to radost!
Základem obludária jsou nejrůznější lidští nepřátelé počínaje vojáky v kapucích přes chlápky na invalidním vozíku až po obrněné Kejdovce připomínající Ogreho z Quaka.
Arzenál je navržen stroze a čeká vás v podstatě tradiční sestava zbraní počínaje pistolí, přes brokovnici a samopal, až po raketomet a bleskomet. Ultimátní BFG pak v Hrotu představuje vzácný experimentální Vypouštěč kulového blesku. Arzenál je sice navržen podle skutečných českých zbraní (mj. Brno Super 571 nebo CZ 52) nebo je inspirovaný husitskou výzbrojí, kreativitu v ní ale budete hledat marně. Vzhledem k tomu, kolik nápadů a invence padlo na všechno kolem (místo lékárniček třeba baštíte rohlíky a konzervu krevní tučnice, místo brnění si zase oblékáte slipy a nátělníky), to považuju za autorský záměr, ale nemůžu říct, že bych z něj byl nadšený. Situaci naštěstí zachraňuje výtečná dvouhlavňová brokovnice a vizuálně obyčejný, ale nesmírně uspokojující raketomet (resp. Hákovnice). S touhle dvojkou jsem v podstatě odehrál celý Hrot. A spokojeně.
Úplně jiná situace je naštěstí také v „obludáriu“, kde je díky 50 druhům nepřátel opravdu živo! Základem jsou nejrůznější lidští nepřátelé počínaje vojáky v kapucích přes chlápky na invalidním vozíku až po obrněné Kejdovce připomínající Ogreho z Quaka. Pak tu jsou ale zvířecí nepřátelé (psi, krysy, netopýři nebo koně), stroje (malý nakladač, ostřelovací věž nebo vrtulník) a různí jednorázoví nepřátelé nacházející se jen na konkrétních místech. To je třeba bílá paní, na kterou narazíte výhradně na Točníku. A to jsou samozřejmě všichni malí i velcí bossové, jejichž identitu vám prozrazovat nebudu. Slibuju vám ale přede všemi, jako jiskra jasná, že se u nich pobavíte a zasmějete. A to tak, že hodně!
AŤ ŽIJE PASCAL
Ponurý, temný, depresivní, brutalistický a strašidelný Hrot není jistě hrou pro každého, tak jako ne každý divák chápe smysl černobílého filmu a je ochoten se na něj dívat. Nejde tu ale zdaleka jen o ty záměrně ošklivé odstíny šedivé a hnědé, ale i o minimalistickou „hranatou retro estetiku“ (poslední citace z popisku na Steamu). Právě tady se zúročilo autorovo šílené rozhodnutí naprogramovat si kvůli hře vlastní engine. Ten totiž Hrotu dodává jedinečnou identitu, které běžná boomer shooter vytvořená v Unreal Enginu přes veškerou svou nablýskanost prostě nemá šanci konkurovat.
Neméně důležitou část identity hře ale dodává taky její satirický charakter a především lokální obsah. Po třiceti letech tak Hrot představuje splněný sen českých hráčů. Nejen těch starších, kteří vyrostli na Doomovi a pamatují si na „Gustava“, ale klidně i těch mladších. To co Hrot dělá, dělá po svém, ale naprosto fantasticky.
Český Quake s unikátním zasazením do postapokalyptického socialistického Československa v roce 1986. Díky kreativitě a humoru jde takřka o herní idylku, která baví ve stylu devadesátkových stříleček a navrch přidává i leccos svého. Třeba bitku u létajících labutí. Přestřelku s vrtulníky pod památníkem na Vítkově. Nebo válku s mloky…
Vortex.cz používá soubory cookie, aby vám poskytl co nejrelevantnější výsledky tím, že si zapamatuje vaše preference a opakované návštěvy. Kliknutím na „Přijmout vše“ souhlasíte s používáním všech souborů cookie. Můžete také v „Nastavení cookies“ poskytnout souhlas pro jednotlivé možnosti.
Tento web používá soubory cookie ke zlepšení vašeho zážitku při procházení webem. Soubory cookie se ukládají ve vašem prohlížeči a jsou kategorizovány podle potřeby, jelikož jsou nezbytné pro fungování základních funkcí webu. Používáme také soubory cookie třetích stran, které nám pomáhají analyzovat a porozumět tomu, jak tento web používáte. Tyto soubory cookie budou ve vašem prohlížeči uloženy pouze s vaším souhlasem. Máte také možnost odhlásit se z těchto souborů cookie. Odhlášením se z některých z těchto souborů cookie může ovlivnit váš zážitek z prohlížení.
Nezbytné soubory cookie jsou naprosto nezbytné pro správné fungování webu. Tyto soubory cookie anonymně zajišťují základní funkce a bezpečnostní prvky webu.
Cookie
Délka
Popis
cookielawinfo-checkbox-advertisement
1 year
Set by the GDPR Cookie Consent plugin, this cookie is used to record the user consent for the cookies in the "Advertisement" category .
cookielawinfo-checkbox-analytics
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional
11 months
The cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance
11 months
This cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
CookieLawInfoConsent
1 year
Records the default button state of the corresponding category & the status of CCPA. It works only in coordination with the primary cookie.
PHPSESSID
session
This cookie is native to PHP applications. The cookie is used to store and identify a users' unique session ID for the purpose of managing user session on the website. The cookie is a session cookies and is deleted when all the browser windows are closed.
viewed_cookie_policy
11 months
The cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Funkční soubory cookie pomáhají provádět určité funkce, jako je sdílení obsahu webových stránek na platformách sociálních médií, shromažďování zpětné vazby a další funkce třetích stran.
Cookie
Délka
Popis
__atuvc
1 year 1 month
AddThis sets this cookie to ensure that the updated count is seen when one shares a page and returns to it, before the share count cache is updated.
__atuvs
30 minutes
AddThis sets this cookie to ensure that the updated count is seen when one shares a page and returns to it, before the share count cache is updated.
ss
1 year
This cookie is set by the provider Eventbrite. This cookie is used for the functionality of website chat-box function.
Výkonnostní cookies se používají k pochopení a analýze klíčových výkonnostních indexů webových stránek, což pomáhá při poskytování lepší uživatelské zkušenosti pro návštěvníky.
Cookie
Délka
Popis
dc
1 year
Cookie used to enable A/B testing within the website.
Analytické soubory cookie se používají k pochopení toho, jak návštěvníci interagují s webem. Tyto soubory cookie pomáhají poskytovat informace o metrikách počtu návštěvníků, míře okamžitého opuštění, zdroji návštěvnosti atd.
Cookie
Délka
Popis
__gads
1 year 24 days
The __gads cookie, set by Google, is stored under DoubleClick domain and tracks the number of times users see an advert, measures the success of the campaign and calculates its revenue. This cookie can only be read from the domain they are set on and will not track any data while browsing through other sites.
_ga
2 years
The _ga cookie, installed by Google Analytics, calculates visitor, session and campaign data and also keeps track of site usage for the site's analytics report. The cookie stores information anonymously and assigns a randomly generated number to recognize unique visitors.
_gat_gtag_UA_129515720_1
1 minute
Set by Google to distinguish users.
_gid
1 day
Installed by Google Analytics, _gid cookie stores information on how visitors use a website, while also creating an analytics report of the website's performance. Some of the data that are collected include the number of visitors, their source, and the pages they visit anonymously.
_hjAbsoluteSessionInProgress
30 minutes
Hotjar sets this cookie to detect the first pageview session of a user. This is a True/False flag set by the cookie.
_hjFirstSeen
30 minutes
Hotjar sets this cookie to identify a new user’s first session. It stores a true/false value, indicating whether it was the first time Hotjar saw this user.
_hjIncludedInPageviewSample
2 minutes
Hotjar sets this cookie to know whether a user is included in the data sampling defined by the site's pageview limit.
_hjIncludedInSessionSample
2 minutes
Hotjar sets this cookie to know whether a user is included in the data sampling defined by the site's daily session limit.
_hjTLDTest
session
To determine the most generic cookie path that has to be used instead of the page hostname, Hotjar sets the _hjTLDTest cookie to store different URL substring alternatives until it fails.
at-rand
never
AddThis sets this cookie to track page visits, sources of traffic and share counts.
browser_id
7 days
This cookie is used for identifying the visitor browser on re-visit to the website.
CONSENT
2 years
YouTube sets this cookie via embedded youtube-videos and registers anonymous statistical data.
GUC
1 year
The GUC cookie is set by Yahoo for Yahoo conversion tracking.
ibbid
session
Set by iBillboard, this cookie collects visitor information that becomes an ID string which can be used to target groups with similar preferences.
uid
2 months
This is a Google UserID cookie that tracks users across various website segments.
uu
1 year
AdScale sets this cookie to target ads by registering the user's movements across websites.
uvc
1 year 1 month
Set by addthis.com to determine the usage of addthis.com service.
Reklamní soubory cookie se používají k poskytování relevantních reklam a marketingových kampaní návštěvníkům. Tyto soubory cookie sledují návštěvníky napříč webovými stránkami a shromažďují informace za účelem poskytování přizpůsobených reklam.
Cookie
Délka
Popis
A1S
session
This cookie is associated with Yahoo Search Analytics and is used for advertising purposes.
ab
1 year
Owned by agkn, this cookie is used for targeting and advertising purposes.
B
1 year
This Cookie is used by Yahoo to anonymously store data related to user's visits, such as the number of visits, average time spent on the website and what pages have been loaded. This data helps to customize website content to enhance user experience.
CMID
1 year
Casale Media sets this cookie to collect information on user behavior, for targeted advertising.
CMPRO
3 months
CMPRO cookie is set by CasaleMedia for anonymous user tracking, and for targeted advertising.
CMPS
3 months
CMPS cookie is set by CasaleMedia for anonymous user tracking based on user's website visits, for displaying targeted ads.
CMST
1 day
Casale Media sets this cookie to collect information on user behavior, for targeted advertising.
id
3 months
Set by Google DoubleClick, this cookie is used to create user profiles to display relevant ads.
IDE
1 year 24 days
Google DoubleClick IDE cookies are used to store information about how the user uses the website to present them with relevant ads and according to the user profile.
loc
1 year 1 month
AddThis sets this geolocation cookie to help understand the location of users who share the information.
mdata
1 year 1 month
This cookie is used by Media Innovation group and registers a unique ID to identify a visitor on their revisit, in order to show them relevant ads.
ov
1 year 1 month
This cookie is set by the provider mookie1.com. This cookie is used for serving the user with relevant content and advertisement.
TapAd_3WAY_SYNCS
2 months
TapAd sets this cookie for data synchronization with advertising networks.
TapAd_DID
2 months
TapAd sets this cookie to offer personalized content, social media features, and traffic analysis for its retargeting of online advertising.
TapAd_TS
2 months
TapAd sets this cookie to track users across devices to enable targeted advertising.
TDCPM
1 year
TDCPM cookie is set by Cloudflare service to store a unique ID that identifies a returning user's device which is then used for targeted advertising.
TDID
1 year
TDID cookie is set by Cloudflare service to store a unique ID that identifies a returning user's device which is then used for targeted advertising.
test_cookie
15 minutes
The test_cookie is set by doubleclick.net and is used to determine if the user's browser supports cookies.
tu
1 year
AdScale sets this cookie to target ads by registering the user's movements
across websites.
tuuid
1 year
The tuuid cookie, set by BidSwitch, stores an unique ID to determine what adverts the users have seen if they have visited any of the advertiser's websites. The information is used to decide when and how often users will see a certain banner.
tuuid_lu
1 year
This cookie, set by BidSwitch, stores a unique ID to determine what adverts the users have seen while visiting an advertiser's website. This information is then used to understand when and how often users will see a certain banner.
ut
1 year
Cookie used to analyse target groups and hold the number of website hits in various subject areas.
uuid
1 year 27 days
MediaMath sets this cookie to avoid the same ads from being shown repeatedly and for relevant advertising.
VISITOR_INFO1_LIVE
5 months 27 days
A cookie set by YouTube to measure bandwidth that determines whether the user gets the new or old player interface.
YSC
session
YSC cookie is set by Youtube and is used to track the views of embedded videos on Youtube pages.
yt-remote-connected-devices
never
YouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
yt-remote-device-id
never
YouTube sets this cookie to store the video preferences of the user using embedded YouTube video.
yt.innertube::nextId
never
This cookie, set by YouTube, registers a unique ID to store data on what videos from YouTube the user has seen.
yt.innertube::requests
never
This cookie, set by YouTube, registers a unique ID to store data on what videos from YouTube the user has seen.
zuuid
1 year
This cookie contains an anonymous numerical identifier to identify the user in our system.
zuuid_lu
1 year
This cookie contains a numerical timestamp to store the last time the user was updated in the system.
Další nekategorizované soubory cookie jsou ty, které jsou analyzovány a dosud nebyly zařazeny do žádné kategorie.
Cookie
Délka
Popis
_hjSession_2633384
30 minutes
No description
_hjSessionUser_2633384
1 year
No description
A1
1 year
No description
A3
1 year
No description
aum
1 year
No description available.
bblosync
never
No description available.
bm2uu
3 months
No description available.
bsw_origin_init
past
No description
C
1 month
No description
cct
1 year
No description available.
custom_data
past
No description
GoogleAdServingTest
session
No description
SONATA_ID
1 year
No description available.
syncdata_NEU
10 days
No description available.
syncdata_TAP
10 days
No description available.
test
1 hour
No description available.
xtc
1 year 1 month
No description
zuuid_k
1 year
No description
zuuid_k_lu
1 year
No description
Tyto webové stránky používají k poskytování služeb, personalizaci reklam a analýze návštěvnosti soubory cookie. Informace o tom, jak tyto webové stránky používáte, jsou sdíleny se společností Google. Používáním těchto webových stránek souhlasíte s použitím souborů cookie.
Jen škoda, že ji nemůžu mastit i na Steam Decku. Proprietární engine v Pascalu a Proton si zkrátka nesedly 🙁