Labyrinth – školní projekt
Tak tedy když už jsem si sem ulevoval své myšlenky při tvorbě tohoto projektu a také k tomu byl Jindrou pobízen, podělím se s Vámi o víceméně hotový produkt.
V první řadě musím upozornit, že se nejedná o nic extra převratného a zejména tomu chybí pointa. Hra je vpodstatě jenom velice jednoduché bludiště s velice jednoduchou 3D grafikou, která ale používá pár zajímavých věcí, jako třeba blendování, multisampling, trilineární mipmapping, nějaké drobné osvětlení a mlhu.
Samotná „hra“ existuje jako projekt na předmět „počítačová grafika“. Čili spíše než abych si hrál s nějakou hlubokou myšlenkou, hrál jsem si OpenGL a tvořil základy FPS enginu.
A ano, je to napsáno v Javě, což je jazyk pro hry naprosto nevhodný, nicméně pro výukové účely velice vhodný. (A pro mojí lenost, co si budeme povídat…)
Ještě na závěr musím upozornit na pár věcí:
- Ke spuštění je potřeba JRE, nejlépe nejnovější verze
- Pokud přesto hra nepůjde spustit, Javová implementace OpenGL vás nemá ráda a máte prostě smůlu (ale možná by mě zajímala konfigurace daného stroje)
- Pokud hru spustíte na integrované grafické kartě od Intelu, pravděpodobně nebude něco fungovat nebo bude výsledný obraz ošklivější než sedací orgán orangutana – s tím nic neudělám
- Pokud narazíte na chybku v kolizích, čili zkrátka jen narazíte, nemlaťte mě, není to dokonalé…
Jinak samozřejmě přijímám připomínky, nápady a podněty, třeba i ohledně využití pro nějaký skutečný projekt. 🙂
A pochopitelně balík ke stažení:
https://db.tt/qu1zplaq
EDIT: Teď jsem si uvědomil, že jsem tam zapomněl kus kódu, co tam nemá být. No ale co už, kdo na to přijde, může se rozhlédnout! 😀
11 odezev
Docela to ujde. Už jsem viděl i horší pokusy. 😀
Ten kus kódu, cos tam zapomněl, je náhodou moc pěkný.
( vlastně lepší než samotné bloudění )
Jinak stěny mají poněkud nepřirozené úhly, otáčení funguje moc rychle. Grafika je jaká je, no nic světového, ale líbilo se mi, jak navazuje textura podlahy na spodní část zdí. K dokonalosti to má celkově samozřejmě pořádně daleko, ale jako školní projekt je to určitě ok.
Co myslíš těmi nepřirozenými úhly? O.o A otáčení si můžeš zpomalit, nicméně je samozřejmě tvoje chyba, že nejsi aktivní hráč fps, který je zvyklý na rychlou myš. 😀 😀 Ne ono takhle, dá se zpomalit násobek rozdílu posunu myši, nicméně kdybych to neomezil, tak už se za chvíli nerozhlédneš vůbec.
A díky za ocenění chybky. Taky mě to baví tak víc. 😀 Hlavně jsem to měl kvůli testování a hrozně mě překvapilo, že to má stabilní framerate ve všech situacích.
V konečném důsledku vypadá fyzikální model pohybu nekorektně a je dost jedno jestli to svedeš na chudáka moji myš. Ve zmiňovaných fps reaguje správně. Jak už jsi nakousl, jde o poměr jednotlivých rychlostí, ne o faktickou rychlost. Ta by byla spíše plusem.
Nepřirozené úhly jsou pro mě takové, které z reálných cihel nepostavíš, protože ty nemají nulovou tloušťku. 🙂
Teď ti nerozumím… Pohyb kamery se počítá skutečně podle toho, jak pohneš myší dle tvojí rychlosti myši (v základu je tu násobeno jednou, ale dá se to zpomalit nebo zrychlit v rozmezí 0.5 – 1.5) – v každém snímku se udělá rozdíl souřadnic myši od středu a myš se vycentruje. Tvoje rychlost myši by měla být stejná jako rychlsot rozhlížení. Ne jako v těch konzolových předělávkách, kde se myš hýbe prkenně konstantní rychlostí. Nebo jak jinak to udělat? Jestli znáš nějaký lepší snadno implementovatelný způsob, sem s ním! Abych totiž řekl pravdu, občas mi přijde to rozhlížení maličko sekané…
A proboha neřeš, co se dá postavit ze skutečných cihel. 😀
Myslím, že je třeba oddělit vstupní zařízení a skutečný pohyb nějakým rozhraním. Aby i případě, že vstupní zařízení poskytne údaje mimo běžné hodnoty, byl výsledný pohyb v přípustném rozsahu. Takže by mělo jít teoreticky o pár konstant.
Cihly: S dnešními prostředky by mělo jít vyrobit opravdu dokonalou formu takového bludiště, prakticky k nerozeznání od reálu zaznamenaného třeba na film. Představa něčeho takového mi vězí v hlavě a tak šťourám do všeho, co se tomu trochu podobá.
Nic si z toho nedělej. 🙂
Je to pěkný. 🙂 Funguje to, běhá to, co víc si přát? 😀
Každopádně nejsem hráč stříleček a z 3D her se mi dělá špatně po čase vždycky, ale tady je to dovedeno do extrému. 😀 Myslím, že není problém ani tak s pohybem kamery, ačkoliv jsem měl na první podívání taky dojem, že pohyb vpřed je společně s pohybem myší nedokonalý. Že to nějak nesedí. Každopádně to přešlo po vypnutí textur. To se mi pak bloudilo mnohem lépe. Takže bych čekal, že problém může být i s texturami, které jsou super, sedí skvěle, ale s tím zbytkem najedou vytvářejí takový divný pohyb.
Tomben: čili osekat maximální přípustný rozdíl pohybu myslíš?
Jindra: Možná to je mimappingem – textury se mění podle toho, jak na ně koukáš. Možná ale taky nemám tak stabilní fps, jak jsem si myslel. Kouknu na to.
Jinak díky za kladné hodnocení všech skutečných funkcí. 😀
EDIT: Hmmm tak ani jedno to neni, holt se asi budu muset smířit s tím, že to prostě je nějaké takové dzivé a nevím proč. 😀 Mno nic, stejně už jsem to odevzdal. Ale nechce se mi s tím loučit. Přemýšlím, že z toho zkusím udělat fantasy rubačku. Jen tak, jestli to pujde.
Jo, myslím, že by to mohlo stačit osekat.
Taky jsem trochu koukal na ty textury. Myslel jsem, že to dělá jejich malá velikost. Tak jsem ji zvětšil a dal jsem Emboss filtr, tím se struktura zdi trochu zjemnila. Přesto ty textury pořád tak nějak plavaly a poblikávaly na nich kontrastní prvky. Docela by mě zajímalo, jestli by to zmizelo nebo narostlo, kdyby se pohled vypočetl větší a pak jako výsledný 2D obrázek zmenšil nějakou kvalitní metodou.
Tak já tam mám záměrně nearest-neighbor metodu pro zvětšení textur, díky čemuž jsou ty mipmapy hodně vidět. Nevím, jestli tohle myslíš poblikáváním. Jestli tam něco skutečně bliká, tak za to možná může OpenGL… 😀 (Aneb jak jsem psal, na intelácké integrované grafice to renderuje nesmysly, zejména depth buffer je úplně mimo.)
Nvidia GT525M a bliká to jen na kontrastní hraně v textuře. Možná bys to mohl potáhnout B&W kostkama aby bylo líp vidět, co to dělá. Taky by bylo zajímavé mít k dispozici předefinovaný pohyb kamery po plynulé křivce. Bylo by poznat, jestli mají nějaký negativní vliv data z myši.
Hmmmm zkusím s tim nějaké čáry máry, akorát ne dřív než v úterý, a to ještě kdo ví jestli… 🙁 BW kostky můžeš vlastně zkusit sám, ve složce resources nahraď texturu wall_0.tga tou kostkovanou. 🙂 Škoda, že nemám žádnou nVidii k dispozici… V ntb mám ATI, ve stolnim pc mám ATI, spolubydla má ATI, táta má ATI, ségra má ATI, linuxový dataserver má ATI (která je tam jenom uklízená, protože nebyla kam dát 😀 )… Jsem z ATI famílie zdá se.