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 logikája egyenesen a forráskódban van elhelyezve. • Könnyebben debuggolható • Nehezen módosítható
Bozsó Péter
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ó
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/