Skip to content

Specification

MatousK edited this page Mar 27, 2018 · 6 revisions

Time Lapsus Specifikace

Základní informace

Jméno projektu Time Lapsus Zkratka TL Vedoucí Jakub Gemrot jakub.gemrot@gmail.com Konzultanti

Anotace

Tvorba pluginu do prostředí Unreal Engine, který by umožňoval snadnou tvorbu počítačových her ve stylu 2D point-and-click adventur. Většinu funkcí pluginu by měli být schopni používat i neprogramátoři. Funkcionalitu pluginu demonstrujeme na ukázkové úrovni 2D adventury.

Motivace

Během předmětu Vývoj počítačových her jsme vytvořili krátkou počítačovou hru, adventuru, kterou jsme poté v rámci Softwarového projektu chtěli rozvinout na úroveň dnešních komerčních her. Pro tento projekt jsme se rozhodli využít Unreal Engine, což je existující nástroj, který již poskytuje vizuální nástroje pro tvorbu her pro neprogramátory. Tento engine výrazně usnadňuje vývoj her, ale nenabízí funkce specifické pro tvorbu adventur. To jsme chtěli vyřešit použitím vhodného pluginu. Při rešerši existujících řešení jsme ovšem žádný takový plugin, který by usnadňoval tvorbu point-and-click adventur, nenašli. Cílem projektu je tedy takovýto plugin navrhnout a implementovat.

Popis projektu

Cílem naší práce je implementace pluginu do prostředí Unreal Engine. Tento plugin by měl výrazným způsobem usnadnit vývoj adventur mj. designérům, grafikům a animátorům, kteří by v ideálním případě měli být schopni hru vyvinout i bez pomoci programátorů. Toho samozřejmě nelze dosáhnout v plném rozsahu - v závislosti na konkrétní hře může být vyžadována podpora programátorů pro implementaci specifické funkcionality pro danou hru. Některé prvky se ovšem vyskytují napříč rozličnými adventurami s nulovou či minimální variabilitou, jejichž implementace není triviální. Tyto prvky by náš plugin měl uživatelsky co nejpřívětivější formou zprostředkovat svým uživatelům, aby byli uživatelé sběhlí v používání Unreal Engine 4 schopni jej používat pokud možno ihned, bez obsáhlejšího studia dokumentace; tedy budeme usilovat o seamless integraci se stávajícími řešeními v Unreal Engine 4 editoru a jeho workflow. Při vývoji chceme dbát na obecnost a otevřenost kódu. Ač je plugin koncipován především pro vývoj adventur, neměla by existovat žádná výrazná překážka v jeho použití pro vývoj jakéhokoliv jiného žánru od FPS po RPG, pokud autoři usoudí, že k realizaci jejich projektu jim dostačuje námi poskytovaná funkcionalita v “adventurním rozsahu¨. Stejně tak jim bude umožněno náš kód libovolným způsobem rozšířit, aby lépe vyhověl jejich potřebám.

Během předběžné analýzy jsme vytipovali tři moduly, ze kterých by se plugin měl skládat:

Story Engine

Inventory Module

Dialog Module

Plugin plánujeme demonstrovat tím, že pomocí něj vytvoříme jednoduchou ukázkovou adventuru.

Story Engine

Jednou z nejdůležitějších fází vývoje hry je herní design, speciálně pak návrh struktury (či scénáře) hry. Z vlastní zkušenosti víme, že jedním z upřednostňovaných nástrojů scénáristů je často papír a tužka, úkolem designérů pak často bývá zreprodukovat scénáristův výstup do hratelné podoby, tedy formální herní struktury, která je interpretovatelná cílovým herním engine, za pomocí různých nástrojů (v našem případě i pomocí našeho pluginu). Prostředí Unreal Engine obsahuje tzv. Blueprints Visual Scripting, vizuální skriptovací nástroj, jehož největší předností je relativně dobrá srozumitelnost i bez znalosti textových skriptovacích či programovacích jazyků. Dle našeho názoru je možné vytvořit podobný systém či rozšířit systém blueprintů takovým způsobem, aby snadno sloužil hernímu designérovi k návrhu struktury herního příběhu. Zároveň by Story Engine mohl dle takto popsané struktury automaticky řídit průchod hrou. Implementací Story Enginu tak ušetříme velké množství rutinní (a nudné) práce programátorů.

Mezi nejdůležitější (ne však nutně jediné) funkce Story Enginu by měly patřit tyto: Tvorba diagramu průchodu hrou (např. podobné state chartům známých z UML) Správa herních stavových proměnných Definice a vyhodnocování podmínek pro postup hrou Ukládání a načítání stavu hry Vyvolávání definovaných událostí Další požadavky mohou vyplynout z podrobnější analýzy.

Inventory module

Drtivá většina her žánru adventury obsahuje inventář či nějaký jeho ekvivalent. Jedná se o systém pro správu herních předmětů, jakými může postava hráče disponovat. Typickými akcemi s předměty je jejich sebrání, prozkoumání, kombinování, použití a zahození. Správa inventáře by měla být součástí vyvíjeného pluginu ze dvou důvodů: jednak se opět jedná o rutinní, přesto však opakovaně implementovanou funkcionalitu, která může být dobře automatizována, a jednak je (ne)disponování či (ne)provedení akce předmětem z inventáře častou podmínkou pro postup herním příběhem, a tedy se podobné podmínky budou pravidelně vyskytovat v designovém diagramu hry v rámci výše uvedeného Story Engine. Správa inventáře musí poskytovat minimálně následující funkcionalitu: Globální definice herních předmětů Nastavení názvu a ikony předmětů (definice view) Nastavení dalších parametrů předmětu (např. popis či kategorie předmětu) Vyvolávání definovaných událostí při sebrání či zahození předmětu Definice kombinování předmětů Poskytnutí rozhraní pro dotazování se na předměty

Dialog module

Dalším hojně se vyskytujícím herním prvkem jsou nehráčské postavy (NPC) a dialogové interakce s nimi. Stejně jako může být samotný průchod hrou silně nelineární a závislý na velkém množství akcí hráče, bývají takové i potenciální dialogy s jednotlivými NPC. Opět je tedy možné navrhnout blueprintům podobný systém, pomocí kterého bude moct scénárista navrhovat jednotlivé NPC a konverzace s nimi bez znalosti jejich samotné implementace, která pak bude pomocí pluginu automatizována. Takto vytvořené dialogy pak budou moci být organicky integrovány do herního diagramu Story Engine.

Návrhář dialogů bude poskytovat především tyto funkce: Definice herní postavy Definice jednotlivých replik postav Integrace lokalizačního systému Unreal Engine Tvorba diagramu konverzace s postavou Podmíněné větvení konverzace na základě zvolené odpovědi hráče Podmíněné větvení konverzace na základě hodnoty herních proměnných Vyvolávání definovaných událostí v průběhu konverzace (např. kvůli animaci) Integrace dialogů do Story Enginu

Ukázková adventura

Výše uvedené pak bude použito pro vytvoření 2D adventury malého rozsahu, jejíž vytvoření bude zahrnovat veškeré zamýšlené uživatelské use-case našeho pluginu. Adventura tak bude sloužit jako prostředek evaluace užitečnosti našeho pluginu.

Platforma a technologie

Cílem projektu je vytvořit plugin pro Unreal Engine v poslední verzi (toho času 4.18), pro jeho vývoj budeme využívat též MS Visual Studio a Git či ekvivalentní nástroj pro verzování, dále pak Trello a Slack pro řízení prací na projektu. Žádné jiné nástroje používat neplánujeme. Podporované platformy se odvíjejí od Unreal Engine, plugin by tedy měl být použitelný na systémech s MS Windows. Demonstrační úroveň 2D adventury bude spustitelná minimálně na systémech s MS Windows.

Odhad náročnosti

Na projektu bude pracovat dohromady 5 lidí: Pavel Halbich (MFF UK): Hlavní programátor Matouš Kozma (MFF UK): Programování, Game Design Marek Polák (MFF UK): Programování Petr Janda: Game design, psaní dialogů Pavel Liška: Grafika, animace

Práce na pluginu bude sestávat ze dvou hlavních fází: Runtime a Editor.

Runtime

V první fázi je primárním cílem dosáhnout toho, aby Story Engine, Inventory Module a Dialog Module dokázaly řídit průchod hrou. Implementací těchto funkcionalit v první fázi dosáhneme toho, že budeme moci paralelně vyvíjet ukázkový level adventury a editor. Pro potřeby této fáze budeme herní data (tj. diagram hry, dialogové stromy, informace o předmětech apod.) buď zapisovat přímo do kódu, nebo načítat z textových či binárních souborů.

Editor

V této fázi bude vytvořeno grafické rozhraní pluginu, pomocí kterého bude možno zadávat herní data, doposud načítaná z kódu či ze souboru. S designéry budeme pracovat především na tom, aby tvorba herních úrovní v tomto editoru byla co nejvíce intuitivní a uživatelsky přívětivá. Paralelně bude probíhat vývoj ukázkové úrovně hry, díky čemuž budeme schopni prakticky ověřovat efektivitu editoru.

Plán

Měsíc 1-3: Návrh architektury (+ podrobná specifikace), implementace funkcionalit Story Enginu, Inventory Modulu a Dialog Modulu, testování funkčních požadavků Měsíc 4-7: Návrh grafického rozhraní pluginu, implementace GUI Story Enginu, Inventory Modulu a Dialog Modulu, ladění editoru s designéry, paralelní vývoj ukázkové úrovně hry včetně zvuků, animací a podobně Měsíc 8: Dolaďování editoru a hry, tvorba závěrečné dokumentace

Vymezení projektu

Projekt je zaměřen na následující oblasti (zaškrtněte vyhovující): Diskrétní modely a algoritmy

diskrétní matematika a algoritmy

geometrie a matematické struktury v informatice

optimalizace Teoretická informatika

Teoretická informatika Softwarové a datové inženýrství X softwarové inženýrství X vývoj software

webové inženýrství

databázové systémy

analýza a zpracování rozsáhlých dat Softwarové systémy

systémové programování

spolehlivé systémy

výkonné systémy Matematická lingvistika

počítačová a formální lingvistika

statistické metody a strojové učení v počítačové lingvistice Umělá inteligence

inteligentní agenti

strojové učení

robotika Počítačová grafika a vývoj počítačových her X počítačová grafika X vývoj počítačových her

Clone this wiki locally