====== Herní Framework ====== Jak si naklonovat a sprovoznit herní framework postavený na knihovnách SDL2. Prozatím je hlavní platforma a a vývojové prostředí Visual Studio, ale CMake by měl umožnit snadné porotvání na další platofrmy a IDE. Vše bude průběžně testováno a řešeno na základě vaší odezvy. ===== Potřebný SW ===== Budete potřebovat mít naisntalované tyto nástroje. Vše by mělo stačit v nejnovějších verzích bez značného omezení. * CMake - [[https://cmake.org/download|Oficiální download stránka]] - stahujte //Windows x64 Installer// * Git - [[https://git-scm.com/downloads|Oficiální download stránka]] ==== CMake ==== Slouží ke konfiguraci a správě projektu ve smyslu jeho sestavování a distribuci. Na základě konfiguračních souborů nám připraví projekt pro IDE. ==== Git ==== Slouží pro správu a verzování zdrojových kódů. Umožňuje nám snadno stáhnout celý zdrojový kód a později ho i updatovat. Další jeho významnou funkcí je kooperace mezi několika vývojáři. ===== Tutoriál ===== ==== 1) Naklonování zdrojových kódů projektu ==== * Vytvoříme složku pro náš projekt někde na disku. Například ''C:\Programming\MojeHra\''. * Uvnitř této složky spustíme z kontextového menu ''Git Bash'' {{:priklady-resene:rungitbash.png?direct&200|}} * Naklonujeme Gitovský repozitář * Repozitář se nachází na adrese ''https://git.uzlabina.cz/bures/thegametemplate''. * Naklonujeme pomocí následujícího příkazu. Bude třeba se přihlásit svým studentským účtem. Výsledek je patrný na obrázku níže. git clone https://git.uzlabina.cz/bures/thegametemplate.git Hra * Úspěšným spuštěním příkazu nám vznikne nová složka ''C:\Programming\MojeHra\Hra'' {{:priklady-resene:gitclone.png?direct&200|}} ==== 2) Stažení knihoven SDL2 a SDL2_Image ==== * Dále budeme potřebovat stáhnotu a rozbalit knihovny SDL2 a SDL2_Image. Oboje ve verzi tzv. **Development Libraries**. Oboje by měli být zip archivy. * Knihovna [[https://www.libsdl.org/download-2.0.php|SDL2]] * Knihovna [[https://www.libsdl.org/projects/SDL_image/|SDL2_Image]] * Oba zipy obsahují složku, kterou umístíme do stejné složky jako Git repozitář z předchozího kroku. * Ukázky na obrázcích {{:priklady-resene:sdl2_download.png?direct&200|}} {{:priklady-resene:sdl2_image_download.png?direct&200|}} {{:priklady-resene:libsunpacked.png?direct&200|}} ==== 3) Konfigurace a vytvoření řešení pro VS pomocí nástroje CMake ==== V tomto kroce předpokládáme, že celý náš projekt leží například v ''C:\Programming\MojeHra\'' - složka z prvního kroku * Uvnitř našeho repozitáře vytvoříme složku ''build'' - v tomto příkladě by to bylo ''C:\Programming\MojeHra\Hra\build'' * Spustíme program CMake - grafickou verzi * Položku **//Where is the source code//** nastavíme na naklonovaný Git repozitář. V tomto příkladě: ''C:\Programming\MojeHra\Hra'' * Položku **//Where to build the binraies//** nastavíme na dříve vytvořenou složku ''build''. V tomto příkladě ''C:/Programming/MojeHra/Hra/build'' {{:priklady-resene:cmakebegin.png?direct&200|}} * Dáme **Configure** a v dialogovém okně vybereme naší verzi visual studia a nastavíme //platform generator// na **x64** a dáme finish. {{:priklady-resene:cmakegenerator.png?direct&200|}}. * V tomto bodě nastane chyba a bude potřeba doplnit proměnnou **SDL2_PATH** v horní části cestou k naší dříve rozbalené knihovně SDL2. V tomto příkladu je to ''C:\Programming\MojeHra\SDL2-2.0.14'' {{:priklady-resene:sdl2_configure.png?direct&400|}} * Znovu dáme **Configure** nastane opět chyba, tentokrát bude třeba doplnit proměnnou **SDL2_IMAGE_PATH** pro knihovnu SDL2_Image. V tomto příkladu je to ''C:\Programming\MojeHra\SDL2_image-2.0.5'' {{:priklady-resene:sdl2_image_configure.png?direct&400|}} * Po opětovném stisknutí **Configure** by měl být projekt bez chyb. * Následuje **Generate** pro vygenerování solution souborů pro visual studio * Následně můžeme rovnou otevřít VS pomocí tlačítka **Open Project** ==== 4) Kompilace s puštění projektu ==== Jakmile se nám projekt otevře ve VS. Je třeba akorát nastavit náš projekt **TheGame** jako výchozí tím, že na něj v průzkumníku řešení klikneme pravým tlačítkem a vybereme **Nastavit jako spouštěný projekt**. Projekt lze následně sestavit, spustit a upravovat dle vašich přání. {{:priklady-resene:thegame.png?direct&400|}} ==== 5) Co dále? ==== Projekt má nyní 3 hlavní funkce, které stojí za vaší pozornost a kam by jste měli upřít svoji shanu, pokud chcete vytvořit nějaký vlastní gameplay: * ''void startGame()'' - Tato funkce se zavolá před začátkem samotné hry * ''void update()'' - Tato funkce se volá před každým vykresleným snímkem. Typicky by měla obsahovat herní simulaci - pohyb, kolize, vstup z klávesnice, herní pravidla. * ''void draw()'' - Tato funkce se stará o vykreslení každého herního snímku. Zde by jste měli obstarávat vykreslování herních assetů. ===== ToDo ===== Seznam toho co Já Buracisko chci a musím předělat vylepšit v rámci další iterace. * Udělat jeden samostatný projekt, který pojme veškeré závislosti a odpadne tak nutnost managovat knihovny ručně - pravděpodobně vlastní mirror a kompilace v rámci projektu * Rozdělit frameworkové části kódu do okolních souborů s dokumentovaným API * Delta time do update/draw funkcí pro precizní pozicování * **Bomberman** like ukázkový project.