Popis mého aktuálně vyvíjeného enginu pro usnadnění tvorby 2D her.
Základní charakteristika
Cílem je zapouzdřit nestandartní knihovny do jednolitého a soudržného celku a navíc co nejvíce zjednodušit tvorbu her napsáním stále se opakujících rutin. Programátor tedy nebude muset řešit věci kolem, ale může se zaměřit na hru jako takovou.
Hlavní důvod je ovšem ten, že jsem v podstatě nikdy nic většího nedotáhl do konce. A to mě začalo štvát
. Vždy jsem narazil na nějákém mezi-problém po jehož vyřešení už klidně mohlo následovat dokončení hry (doladění příběhu, návrh levelů, vybrání spritů, ...), jenže už na to prostě nezbyl čas ani chuť. Rozhodl jsem se tedy tyto žrouty časy zpracovat do takové formy, abych se kdykoliv kdy dostanu nápad mohl pustit opravdu do tvorby hry a né věcí, které jsou často zcela stejné. Motivací budiž blog Kloonigames, jehož autor chrlí jednu zábavnou hru za druhou a to zjevně na programátorsky stejných základech.
Pracovní název enginu je Quinty. Jestli mu toto jméno zůstane i do budoucna je ve hvězdách
. Ve zdrojácích prozatím používám prosté GameEngine a prefix GE_.
Aktuální situace
Programovací jazyk: C++
Nestandartní knihovny: SDL, SDL_image, SDL_ttf
Engine vyvýjím postupně s použitím principů různých her. Rozhodl jsem se následovat článek 'How do I make games?' A Path to Game Development a pracovat na nich ve zmíněném pořadí. Začínám tedy tetrisem a vždy když vidím něco obecně použitelného z jeho myšlenky, zahrnu to do Quinty. Poté budu pokračovat přes další hry dál a dál ...
Tetris jsem dokončil, teď už přidělávám další vychytávky. Napadlo mě pár invencí, které by mohly hru oživit (sbírání bonusů; panáček který vběhne na scénu a ustřelí kus padající kostky; laser, který zničí i řadu která není zcela zaplněná; atd.), což sebou přineslo mimo jiné další věci zahrnutelné do enginu.
V součastnosti Quinty zapouzdřuje pouze pár SDL knihoven pro práci s grafikou a textem. Následující diagram ukazuje v součastnosti implementované prvky a jejich vzájemný vztah.
Do budoucna mám v plánu přidat SDL_mixer na práci se zvuky a hudbou a fyzikální knihovnu Box2D. V součastnosti nejintenzivněji zpracovávám systém spritů, což bude tématem některého z dalších článků.
Tisknout tento příspěvek
Moc se mi nelíbí názvy metod s počátečním písmenem velkým…
Nejde o nic neobvyklého – http://www.possibility.com/Cpp/CppCodingStandard.html#methodsnames
[...] Základní myšlenku tetrisu (wikipedia) zná bezpochyby každý. Myšlenka Alexeye Pajitnova dává dokonalou možnost na procvičení programátorského umu a v mém případě taky k vylepšení Quinty. [...]