KRKAL

Objektově orientovaný engine – tvorba, editace a hraní 2D her.

http://www.krkal.org/

Krkal wiki

Na tomto místě bude vznikat specifikace pro nové verze systému Krkal. Uvítáme jakoukoli spolupráci, rady a názory. Prosím kontaktujte mě (MD) mailem

Pro jaké hry je Krkal určen?

Hra v Krkalovi se odehrává na obdélníkovém plánu. Na plán se díváte shora. Není nutné aby vše bylo placaté a 2D, Krkal pracuje ve třech souřadnicích a používá izometrickou projekci. Není problém složit level z více vrstev či pater, na druhou stranu Krkal nikdy nebude podporovat paralaxní scrolling. Krkal se hodí pro logické a simulační hry, pro arkády a strategie. Pokud vám vyhovuje pohled shora i pro adventury a RPG. Vyniká ve hrách, které obsahují množství složitých herních objektů, vzájemně se ovlivňujících.

Ilustrace: Editor levlů v Krkalovi

screenshot of Krkal Editor

Tutoriály

V sekci tutoriály se dozvíte, jak používat editor levelů. Časem (možná ;) přibudou další...

Obecné cíle, vlastnosti:

  • Krkal je objektově orientovaný.
  • Krkal je založen na skriptování (žádné barevné ikony zde nenajdete a složité dialogy se spoustou properties jsou nahrazeny obyčejným programováním. -> Krkal není vhodný pro začátečníky, na druhou stranu Krkal umožňuje vytvářet hry se složitou logikou)
  • Objekty žijí a vzájemně se ovlivňují. Komunikaci a synchronizaci zajišťuje systém zasílání zpráv
  • Krkal je množinově orientovaný. Vše, co jste pojmenovali, můžete seskupovat do množin. (objekty, metody, grafiku, abstraktní pojmy, ...) Množiny jednak ovlivňují chování celého systému, jednak s nimi můžete pracovat přímo ve skriptech, existuje speciální typ pro množiny. Příkladem využití množin je objektová dědičnost:
  • Vícenásobná dědičnost. Chcete vytvořit nový objekt, který bude možno 1) strkat 2) zničit 3) při zničení vybouchne 4) padá do děr 5) posouvají ho pásy 6) bojí se ho šneci... Prostě ho odděďte od předků s požadovanými vlastnostmi a je to!
  • Rozšiřitelnost. Skriptování a celý Krkal je navržen tak, aby bylo možné do her jednoduše zasahovat. Můžete si třeba vymyslet speciální úchylnou příšeru, vlastnost, změnu pravidel, ... a přidat ji jen do jednoho levlu. Krkal je navržen tak, aby to bylo jednoduché a nemuseli jste kvůli tomu přeruchat polovinu kódu. (to vše díky dědičnosti, množinám, safe metodám a verzování)
  • Verzování. Krkal je od základu navržen tak, aby umožňoval práci na hře více lidem najednou – Krkal jednak zajišťuje, aby si lidé vzájemně nelezli do zelí, dále, aby se pak všechny ty modifikace daly dát dohromady a aby to fungovalo.
  • Podpora jazykových lokalizací – bude od základu součástí systému
  • Jednoduchost – tohle první verze dost postrádá :-)
  • Bezpečnost – tohle taky (nový jazyk hlavně zruší nebezpečné věci převzaté z C, přibude garbage collector)
  • Síla – zahrajte si Krkala a pochopíte, co engine dokáže a to jde zatím o tu úplně první verzi :-)
  • Krkal není knihovna funkcí, ale runtime, který se o herní objekty stará

Konkrétní featury

(H) – hotovo v současné verzi
(1) – plánováno pro příští verze – nejvyšší priorita
(2) – nižší priorita
...

  • Editor levlů (H) – obecný editor pro dopředu neznámou hru. Umožňuje umísťovat objekty do mapy a editovat jejich vlastnosti. Editace je řízená skripty, objektové proměnné jsou speciálně označené tagy, aby editor věděl, jak k nim má přistupovat. Navíc během editace skripty běží. Je možné editovat i tak složité objekty, jako jsou přepínače, které dokážou téměř cokoli. S novým jazykem přijde i jistá změna objektů a jejich editace (1). Editor lze dále vylepšovat (editace vícepatrových levlů (4), více user friendly (3)).
  • Grafický engine (H) – je 2D, ale vypadá to jako 3D, Krkal skutečně pracuje ve 3 souřadnicích a používá izometrickou projekci, světla tomu dodají tu správnou atmosféru. Grafický engine je prostě super a není potřeba ho v současnosti vylepšovat. (Koberce, odlesky, particly, ... (4)) (paralaxní scrolling, 3d grafika – ne)
  • Automatická grafika – vrstva, která k danému objektu přiřadí ten správný obrázek. Vyhodnocuje animace, návaznosti obrázků, náhodné alterace a vzory, grafické styly, stav objektu. Tato vrstva je nezávislá na objektech. (Objekty se nemusejí o grafiku starat) (H). Chybí pořádný editor pravidel automatické grafiky!! (2) Pravděpodobně se budou pravidla popisovat textově – skriptováním
  • Skriptovací jazyk Krkal C – současný jazyk je nevyhovující, bude kompletně přepracován, vznikne nový kompilátor (1). -> Zjednodušení, bezpečnost, přehlednost
  • Kompilátor – pro nový jazyk bude třeba vytvořit nový kompilátor (1). Kompilátor v Krkalovi pracuje ve dvou režimech: 1) kompiluje skripty do mezikódu, který je pak interpretován (pomalejší, ale přístupné pro každého). 2) kompiluje skripty do C++ kódu, který je pak potřeba zkompilovat C++ kompilátorem do dll pluginu pro Krkala. (rychlejší, protože odpadá interpretace, skripty je možné ladit C++ debuggerem)
  • Prostředí pro psaní skriptů – Krkal obsahuje integrované prostředí pro psaní skriptů se syntax highlightingem, objektovým a množinovým prohlížečem. (H). Citelně chybí napovídání (intelli sence) (2-3) a find&replace (1-2)
  • Ladění skriptů – velmi užitečná featura která v Krkalovi zatím chybí (3) (až na logy a debuggovací hlášky (H))
  • Gui (H) – Krkal má vlastní grafické uživatelské rozhraní.
  • Kernel – runtime, který řídí běh objektů. Kvůli změnám v jazyku budou potřeba změny i zde (vznik garbage collectoru, přepracování vícenásobné dědičnosti) (1).
  • Hra Krkal – Když se změní jazyk, musíme přepsat i hru Krkal (1-2). Dodělat lasery a jiné zajímavé objekty z původního Krkala by také neškodilo (2-3).
  • Uživatelské profily (1) – pod profilem je možno zaznamenávat dohrané levly, uložené hry, konfiguraci. Dále profil představuje identitu, pod kterou editujete levly, tvoříte grafiku, skripty, překládáte, ... Viz verzování.
  • Obecný systém výběru levlů a postupu ve hře, podpora save/load, možnost zaznamenávat dema/replaye (1-2) Každá hra si může určit pravidla, podle kterých se zpřístupňují její levly (možnost vynechání levlu, větvení, skryté bonusové levly, hrou řízený postup, ...). Dema jsou vhodné k prezentaci shareware her.
  • Konfigurace her a statistiky (1-2) Podporováno přímo jazykem
  • Hrou řízené gui (dialogy, menu, informační panely,...) (2) – Klíčová vlastnost, kterou potřebuje každá hra. Dialogy a menu budou pravděpodobně definovány podobně jako html.
  • Editor textů pro jazykové lokalizace (2)
  • Import grafiky – Grafický engine potřebuje data ve speciálním formátu, který není možné připravit jen tak v Paintu. Používáme speciální skript, který vyimportuje grafiku z 3D-Studia (H) Pro běžného uživatele je toto ale příliš složité. Alternativou by mohl být například import jazyka VRML, či X3D (2-3)
  • Filesystem, registry, uzamykaní souborů (H-1)
  • Podpora shareware (znepřístupnění částí, na které nemáš zakoupenou licenci) (2-3)

Attachments