Specifikace ročníkového projektu Scorch Blaster
Úvod
- Scorch Blaster bude 3D hra, kdy postavy mezi sebou bojují ve virtuálním světě (aréně) a snaží se likvidovat ty druhé, především pomocí různých druhů výbušnin, a zárověň sami co nejdéle přežít. Ve hře bude kladen velký důraz na realističnost a grafickou kvalitu explozí.
Podrobný popis
- Aréna je tvořena z brushů (konvexních těles), mohou mít obecný tvar (není žádné omezení např na zarovnávání na čtverečky, atd ....)
- V aréně se pohybují hráči a mohou zde i být různé powerupy (objekty, které lze sebrat, můžou např. léčit hráče, zvyšovat účinnost bomb, atd ....), nebo různé dynamické objekty (strom, který lze zničit explozí, dveře které půjdou otevřít (anebo také zničit explozí)), teleporty, atd ...
Nové typy objektů lze snadno přidat.
- Arény lze tvořit v externím editoru (ve formátu .map) - lze použít např WorldCraft, nebo Q3Radiant
- Hlavní zbraní jsou různé druhy výbušnin, konkrétně:
Bomba - bomba, která se dobře kutálí a odráží od stěn, vybuchne po krátkém čase.
Granát - neforemná bomba, která se příliš nekutálí a neodráží od stěn, vybuchne po krátkém čase.
Mina - vybuchuje při přiblížení hráče, po hození je krátký čas neaktivní, aby se hráč stihl vzdálit.
Cluster bomba - po výbuchu vyletí několik sekundárních šrapnelů, které dále vybuchují.
... a možná i další, nebo varianty výše uvedeného.
Bomby nevybuchují nárazem, vybuchují po určitém čase po hození (s vyjímkou miny), bomby položené blízko sebe mohou způsobit řetězovou explozi (vybuchnout najednou).
Bomby mohou výbuchem ničit či odhazovat předměty či hráče ve svém okolí. Síla bomb je taková, že výbuch v blízkosti hráče ho obvykle zabije.
- Několik režimů hry:
Deathmatch : hráči se snaží zabít všechny ostatní. Systém všichni proti všem, za zabití hráče je bod, kdo je natolik nešikovný, že se zabije sám, bod ztrácí. Hráč, který je zabit někým jiným, bod neztrácí.
Team deathmatch : hráči jsou rozdělěni do několika týmů, se snaží zabít všechny ostatní, co nejsou v jejich týmu.
Zde už hráči mohou v týmu spolupracovat. Skóre týmu je součtem skore jednotlivých hráčů.
Hra končí po nahrání určitého počtu bodů (fraglimit), uplynutí určitého času (timelimit). Pak se hra restartuje, nebo se hraje na nové mapě.
Po zabití hráč po jistém čase opět ožije.
Technické Detaily
- OpenGL akcelerace
- Psáno pod C (Microsoft Visual C, gcc), některé pomocné skripty (např. automatické generování dokumentace) jsou napsány v Perlu
- Funkčnost po Windows a Linuxem, lze snadno přeportovat i na jiné platformy, které podporují OpenGL akceleraci.
- Použité knihovny:
zlib (zip dekomprese)
libjpeg (dekomprese JPEG)
glut (opengl utility functions)
opengl (zobrazovací funkce)
openal (přehrávání zvuku)
- Pravděpodobně použité knihovny: (které pravděpodobně použiji, ale není to zatím jisté)
nějaká knihovna na mp3 nebo ogg dekompresi (přehrávání zvuků či hudby)
ode (open dynamics engine, knihovna na detekci kolizí)
opcode (optimized collision detection, knihovna na detekci kolizí)
- Minimální odhadované požadavky na hardware a software :
Windows nebo Linux
Nainstalované ovladače grafické karty s OpenGL akcelerací
Grafická karta: alespoň s 8 Mb paměti, rychlostně alespoň srovnatelná s Riva TNT
Procesor alespoň cca 400 Mhz
Místo na disku: řádově jednotky až desítky Mb. Silně závisí na množství nainstalovaných map, textur, atd ....
Paměť: odhaduji 32-64 Mb paměti jako minimum. Závisí hodně na složitosti aktuální mapy a počtu hráčů a jiných objektů.
Závazné cíle projektu / plán práce
Nahrávání zvuků ve formátu Wav, textur ve formátu JPEG a Tga, libovolné soubory mohou být nahrány ze .zip souborů (ty tam mohou být předtím zabaleny pro úsporu místa na disku) (hotovo)
- Hra split-screen (hotovo)
- Debugovací konzole (jako např. ve hře Quake), práce s nastavením, možnost změny nastavení, ukládání nastavení (hotovo)
- Realistický fyzikální model (objekty kolidují, bomby poškozují a ničí rozbitelné objekty, atd ...) s důrazem hlavně na provedení explozí (silně nedoděláno, priorita 1 - nejvyšší)
- Nahrávání 3D modelů v některém z běžných formátů. (není, priorita 2)
- Nahrávání světů v některém v běžných formátů (.map) (částečně hotovo, priorita 3)
- Příjemné uživatelské prostředí (zatím se skoro všechno nastavuje a dělá přes konzoli, priorita 4)
- Hra po lokální síti nebo internetu (komunikace přes UDP) (není, priorita 5)
- Možnost hry na automaticky vygenerované mapě (mapa vygenerovaná generátorem)(částečně hotovo, priorita 6)
Plány do budoucna (nezávazné cíle)
- Cyklování map v síťové hře - popořadě, náhodné (jednoduché, priorita 1)
- Umělá inteligence hráčů (boti) (těžší, priorita 2)
- Vyhledávání serverů na lokální síti, vyhledávání serverů na internetu, master server se seznamem serverů a dedicated server
(středně těžké, priorita 2)
- V síťové hře možnost hlasovat o změně mapy nebo změně nastavení (timelimit, fraglimit, atd ...)
(jednoduché, priorita 3)
- Možnost přepínání pohledu (zeshora, zezadu, z vlastních očí) (jednoduché, priorita 3)
- Přehrávání MP3 nebo OGG hudby během hry (jednoduché, priorita 4)
- možnost kombinace split screen a síťové hry - více než N hráčů hrajících na jedné mapě na N počítačích.
(může být složitější, priorita 5)
- Více režimů hry (Capture the flag - hráči se naží ukrást vlajku soupeře, body za zabití se nepočítají, Survival - jako deathmatch, ale hráči neožívají, nebo mají omezen počet ožití, atd ...)
(středně těžké, priorita 6)
- Lepší grafika, realističtější efekty (bump mapping), realističtější osvětlení, atd ...)
(dlouhodobé, priorita 7)