Open Source, Multiplatform, Point-And-Click Adventure Games, Reverse Engeneering, C++, C, Pascal, Assembly, DOS
Total Page:16
File Type:pdf, Size:1020Kb
open source, multiplatform, point-and-click adventure games, reverse engeneering, C++, C, Pascal, Assembly, DOS Bozsó Péter http://scummvm.org/ 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. Bozsó Péter http://scummvm.org/ 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.) Bozsó Péter http://scummvm.org/ 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…. Bozsó Péter http://scummvm.org/ 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!!! Bozsó Péter http://scummvm.org/ 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 Bozsó Péter http://scummvm.org/ 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. Bozsó Péter http://scummvm.org/ 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. Bozsó Péter http://scummvm.org/ …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 Scripted logic: a játék logikáját logikája egyenesen a egy speciális scriptnyelven írt forráskódban van elhelyezve. adatállományok szolgáltatják. • Könnyebben debuggolható • Nehezebben debuggolható • Nehezen módosítható • Könnyen módosítható Bozsó Péter http://scummvm.org/ Hogy lesz a platformfüggő kódból… …platformfüggetlen? Hát így! Bozsó Péter http://scummvm.org/ 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 Bozsó Péter http://scummvm.org/ 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. Bozsó Péter http://scummvm.org/ 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. Bozsó Péter http://scummvm.org/ 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. Bozsó Péter http://scummvm.org/.