open source, multiplatform, point-and-click adventure games, reverse engeneering, C++, C, Pascal, Assembly, DOS
Na de mi is az a ScummVM? Egy program, mely lehetővé teszi klasszikus point-and-click kalandjátékok futtatását, abban az esetben ha a felhasználó rendelkezik az eredeti fájlokkal. Egy open source szervezet, melynek magja egy stabil, profikból és kezdőkből egyaránt álló, jól működő fejlesztőcsapat.
Mit ért el eddig a szervezet? Támogatunk rengeteg sikeres játéksorozatot. (Pl.: Monkey Island, Day of the Tentacle, Broken Sword, King s Quest) Támogatunk legalább ennyi ismert és kevésbé ismert platformot. (Pl.: Windows, Linux, Mac, Android, ios, PS, PSP, Dreamcast, AmigaOS, Haiku, Samsung TV) Komoly együttműködést folytatunk a játékok eredeti készítőivel és a GOG.com-mal. (Ennek hála ingyen és legálisan elérhető mindenki számára az utóbbi oldalon többek között például a Beneath a Steel Sky.)
Hogyan kerültem én a képbe? A Google Summer of Code-on keresztül, ami a Google nyári ösztöndíjprogramja egyetemisták számára, melyel az open source fejlesztőket támogatják. (Erről részletesen később.) Mindig is nagyon szerettem a régi point-and-click kalandjátékokat, valamint igencsak érdeklődtem a játékfejleszés iránt is. A kód jelentős része C++ban íródott, a multiplatform fejlesztéshez remekül használható saját programkönyvtárral megtámogatva. Így hát alapul véve az érdeklődési körömet és az addigi tanulmányaimat (második félév végéről beszélünk prog 1/2), adta magát a dolog.
De volt, amire én sem voltam felkészülve DOS MEMÓRIAKEZELÉSÉVEL KAPCSOLATOS GÁNYOLÁSOK!!! KORABELI VGA KÁRTYA PROGRAMOZÁSA ASSEMBLY-BEN!!!
Az első project: Avalanche Engine Grafika: EGA Felbontás: 320 x 200 Színek száma: 16 Vezérlés: billentyűzet és egér Név: Avalot d Argent Nyelv: Angol Platform: DOS Megjelenés éve: 1995
Mi volt itt a dolgom? Megkaptam a játék forrásfájlait, amelyek mind Pascal nyelven íródtak, helyenként Assembly betétekkel a grafikus kártya vezérléséhez. Át kellett írnom őket C++ nyelve miközben az erősen platformfüggő (DOS) kódrészleteket lecseréltem a ScummVM saját könyvtárában található, teljesen platformfüggetlen kódra. Az így kapott egyveleget objektum orientáltá kellett tennem, amennyire csak lehetett. Refaktorálni kellett a kódot.
Mik voltak a buktatók? Soha nem fogtam még előtte ekkora volumenű dologba. Apránként, de berozsdált a Pascal tudásom. Nem értettem az Assemblyhez. Nem pláne az akkori videokártyák lelki világához A kód tele volt hardcoded logic -kal, ami hatványozottan megnehezítette az objektifikálást.
mit jelent az hogy hardcoded logic? Game logic: meghatározza a játék menetét. Események Interakciók Hardcoded logic: a játék logikája egyenesen a forráskódban van elhelyezve. Könnyebben debuggolható Nehezen módosítható Scripted logic: a játék logikáját egy speciális scriptnyelven írt adatállományok szolgáltatják. Nehezebben debuggolható Könnyen módosítható
Hogy lesz a platformfüggő kódból platformfüggetlen? Hát így!
A második project: CGE2 Engine Grafika: EGA Felbontás: 320 x 240 Színek száma: 256 Vezérlés: egér Név: Sfinx Nyelv: Lengyel Platform: DOS Megjelenés éve: 1997
Mi volt itt a dolgom? Megkaptam a játék forrásfájlait, amelyek mind C++ nyelven íródtak, helyenként Assembly betétekkel a grafikus kártya vezérléséhez és más gyorsításokhoz. Át kellett írnom őket felhasználva a CGE Engine forrásait, miközben a platformfüggő (DOS) kódrészleteket lecseréltem a ScummVM saját könyvtárában található, teljesen platformfüggetlen kódra. Refaktorálni kellett a kódot. Le kellett fordítani a játékot lengyelről angolra.
Mik voltak a buktatók? Nem tudtam lengyelül. A command parsert komoly fejfájás volt debuggolni. Miért volt ez könnyebb mint az előző? Ismerős voltam már a kódbázisunkkal. Ott volt a kész CGE Engine, amire támaszkodhattam és rengeteg mindent meríthettem belőle. Alapból obejktum orientált kódot kaptam, csak kissé kellett átdolgoznom a struktúráját.
Mi tette mindezt lehetővé? Bevezetett a nyílt forráskodú szoftverfejlesztés világába. Megismerhettem egy csomó szakmailag és magánéletben is kiváló embert, akiktől rengeteget tanultam és tanulok mai napig. Verhetetlen munkatapasztalatot adott. Marha jól fizetett.