Analyza projektu Siriel 4. Zakladne kroky v projekte: 1. Specifikacia a popis enginu -- funkcie & extenzibilita enginu 2. Definicia modulov projektu a interfacov medzi modulmi 3. Datove formaty 4. Skriptovanie 5. Textury a grafika 6. Testovanie -- ludske zdroje 7. Navrh scen a pribehov 8. Realizacia & podporne akcie -- propagacia, dokumentacia, financie --- 1. Zakladna specifikacia funkcii enginu 1.1. Prevzate stare prvky zo Siriela 3.5 - engine by mal zvladat minimalne to, co 3.5 - arkadovy typ hry - pohlad zvrchu -- bludisko - ciastocne odkryvanie mapy -- miznuce bludisko - nepriatelia -- UI (aspon na nizkej urovne :) - prehravanie animacii -- 3D + nejake to video - zvuky -- hudba, MP3 - adventurny dej -- moznost specifikovania pribehu - riadenie levelovym skriptom - dynamicke nacitavanie datadiskov - jazykove mutacie - viac miestnosti v jednom leveli - vytahy & teleporty - ovladanie joystickom 1.2. Nove prvky - multiplayer - beh na viacerych OS - server-client - pluginy (nie je nutne prekopavat vzdy cely engine) - kombinovanie viacerych typov hier v jednom leveli (arkadovka & bludisko & etc...) - rozvetvenie pribehu -- dej sa odvija podla krokov hraca - niekolko postaviciek -- ovladanie hlavneho hrdinu - zabudovana mala hra -- napr. nibbles :))) - dynamicka zmena prostredia -- nezavisle animacie zmena pozadia - podpora roznych datovych formatov --- 2. Definicia modulov a rozhrani 2.1. Vymenovanie zakladnych modulov Main - hlavny modul, ktory ma za ulohu nastartovanie hry, hlavne riadenie enginu a ukoncenie Datadisk- nacitanie a sprava datadiskov Jazyk - stara sa o jazykove mutacie, parser Kontrola- ovladanie postavy -- klavesnicovy & joystickovy interface NPC - spravanie ostatnych postaviciek Map - nacitanie mapy, sprava, zistovanie preichodnosti Zobraz - graficka znazornenie udajov Play - prehravace datovych formatov -- avi, mp3... Save/Load- nacitavanie, ukladanie stavu hry Anim - animacie predmetov, pozadie, popredia... Skript - interpreter pre skriptovaci jazyk Menu - zobrazovanie menu -- informacna lista Objekt - sprava objektov v hre Game - pre jednotlive typy hry sa spusti iny graficky a klavesnicovy interpret (Arkady, Maze, Izometrika) --- 3. Datovy format pre popis levelov Struktura by mala byt zalozena na XML. Dokument je rozdeleny na viacero casti (zatial len predbezny nacrt, presnejsie bude popisany pri implementacii) 3.1 Definicia objektov 3.2 Skript 3.3 Map 3.4 Globalne premenne gravity = 5 3.5 Definicia Datafilu - upresnenie struktury ... ZOZNAM SUBOROV 3.6 Mapa Mapa je retazec ASCII znakov (mapovy subor musi byt editovatelny textovym editorom) Implicitne parametre sa preberaju z S3.5 --- 4. Skriptovanie 4.1. Povodny skriptovaci jazyk v S3.5 Zalozeny na sekvencnom prechadzani textu. Prikazy sa postupne vykonavali zlava do prava. Prikaz zacinal znakom #, nasledovanym menom prikazu a parametrami oddelenymi /. Ukoncenie pomocou ; Jednotlive riadky boli cislovane a na zaklade tychto cisel sa dalo medzi riadkami skakat. Ukazka skriptu 1 #CLS;Ahoj;#SHOW;#IFPOCKET/1/2/3; 2 #TAKEPOCKET/1/1;#END; 3 Nemas predmet!;#END; Podrobnejsie info k staremu jazyku v subore skript_old.txt 4.2. Subory v skriptovacom engine 1. Skript mozne ulozit do samostatnych suborov 2. Skript v jednom suboru 3. Kombinacia pristupov 1,2 (tak ako v C) Vkladanie suborov prikazom: #include, include, require (syntax spolocna pre C aj PHP) 4.2.1 Implementacia Najjednoduhsi pristup - engine spoji subory do jedneho suboru v pamati nad ktorym bude pracovat Niektore skripty su vyzadovane, v pripade, ze ich parser nenajde nadefinuje implicitne. --- 5. Textury a grafika 5.1. Mapovanie textur Textura je rozlozena do stvorcovej siete a na urovni editora sa bude povazovat za kompaktnu cast. (podobne ako editor v RedAlerte) Textury by mali byt rozlozene v niekolkych vrstvach nad sebou. Zakladny navrh 3 urovne. 1. za postavou 2. na urovni postavy 3. pred postavou