Szakmai Érdekességek (Invictus Games) - Borsi Miklós (BMSoft1024)

A VR készített velünk videót

A VR készített velünk videót az Invictus Games-ről, ahol bemutatják a cég munkáját és a fejlesztői csapatot.

Image

Dehír: A letöltési listák csúcsára tört a világ másik végén a debreceni játékfejlesztő cég

Cikk az Invictus Games sikereiről és a globális elismerésről.

Image

Műfaj és platform összefüggései a magyar Invictus Games autószimulátoraiban

Akadémiai cikk az Invictus Games játékairól és a platform specifikus megközelítésekről.

Image

Interjú Kozák Tamással, az Invictus Games alapítójával és ügyvezetőjével

Részletes interjú az Invictus Games történetéről, stratégiájáról és jövőbeli terveiről.

Játékfejlesztési Projektek - Borsi Miklós

Invictus Games

ROB-O-TAP

Első játékom, játékfejlesztő/programozóként a ROB-O-TAP. 2014-ben készült, a teljes játékot ketten programoztuk. A kihívást az akkori mobil készülékek limitált erőforrása adta, de ennek ellenére megoldottuk, hogy szépen fusson a játék android-on és ios-en.

Feladatok:

  • Core gameplay
  • Játék logika implementálása
  • Csapdák mechanizmusának megvalósítása
  • Item felvétel
  • 3D UI vezérlés
  • Robotok és csapdák animációi programozása
  • Játékzene, különböző elemek hangjainak lejátszása, robotok hangjainak animációkhoz illesztése és a teljes hanglejátszó rendszer implementálása
  • SDK integrációk (Facebook, Twitter, AD, stb.)
  • Optimalizáció
Invictus Games

Daytona Rush

Nagy népszerűségnek örvendett a maga idejében, főleg Amerikában a top listán volt a NASCAR időszakokban. Erről akkor sok hír meg is jelent. Egyszerű mechanika, de nagyon szórakoztató volt sokak számára. Unity Engine alapú mobil játék Android és iOS platformokra.

Feladatok:

  • Core gameplay feladatok
  • UI - A korábbi teljes UI kódot refaktoráltam
  • Egyedi Achievement rendszer
  • Mentési rendszer és konfigurációs adatbázis
  • SDK integrációk (Facebook, Twitter, ADs, stb.)
  • Optimalizáció
Invictus Games

Give It Up!

A népszerű Give It Up! játék, amely a Give It Up! 2 kódjára épült. Később a grafika és a pálya az új játék kódjára lett visszahelyezve. Sok update-et (bugfix, content update, stb.) készítettem és adtam ki a játékhoz, mind PlayStore-ban és AppStore-ban is. Kínában nagyon népszerű lett a játék, a toplistákon volt hosszú ideig.

Feladatok:

  • Give It Up! 2 kódjára építés
  • Grafika és pálya migráció új kódra
  • Sok update készítése és kiadása (bugfix, content update)
  • PlayStore és AppStore publikálás
  • Kínai piacra optimalizálás
Invictus Games

Give It Up! 2

Az alapoktól kezdve a fejlesztésén dolgoztam. A legnagyobb kihívást az akkori Android rendszerek hangcsúszása okozta, minden Unity-s zene (Android-on ez a native zenelejátszó) elindítása után készülékenként változó időtartamban csúszással indult el a zene, ami egy ritmusjátéknál egyenlő a katasztrófával. Erre készítettem egy saját megoldást, egyedi megközelítéssel, ami lehetővé tette, hogy csúszás nélkül a paca a megfelelő ütemre érkezzen a platformokra.

Feladatok:

  • Játéklogika működés, core gameplay
  • UI működése
  • Editor tool-ok és pályaszerkesztő a fejlesztők számára
  • Csúszásmentes hangrendszer - egyedi megoldás Android hangcsúszás problémájára
  • SDK integrációk (Facebook, Twitter, ADs, stb.)
  • Mentési rendszer és konfigurációs adatbázis
  • Optimalizáció
Invictus Games

Give It Up! Plus (Steam)

A népszerű Give It Up! játék portolása volt a cél PC platformra. Itt a játékosok számára egyszerűen használható pályaszerkesztő implementálása volt a fő feladat, steam integráció, adatok mentése és cloud sync. Eredetileg a Give It Up! 2 kódjára épült.

Feladatok:

  • Pályaszerkesztő implementálása - A játékosok számára egyszerűen használható pályaszerkesztő rendszer kialakítása
  • Steam integráció - Steam platform integráció, achievement rendszer, cloud save
  • Adatok mentése és cloud sync - Játékos adatok mentése és szinkronizálása felhőben
  • Eredetileg a Give It Up! 2 kódjára épült
Image
Invictus Games

Give It Up! 3

Részben az előző játék alapjaira épült, de nagyon sok új dologra volt szükség. Unity Engine alapú mobil játék Android és iOS platformokra.

Feladatok:

  • Fejlesztőbarát, több modulos 3D pályaszerkesztő (2D, 3D, görbe, környezet, platform tulajdonság szerkesztő) tervezése és implementálása
  • Automatikus görbe generálás, műveletek görbékkel
  • Prezentációs rétege a moduloknak
  • Automatikus környezet generáló, és környezet szerkesztő, ingame környezet betöltő
  • Automatikus OS függő csúszásmentes hangrendszer, 3D-s hangrendszerrel kiegészítve, automatikus audió adatbázissal, részletes audió beállítás lehetőségek hangonként
  • Ingame pályák dinamikus bepadlózása, minimum magasság, téma és pálya területétől függően
  • Ingame platformok alatti 'vonal/árnyék', line renderer-el
  • Újra felhasználható hardverdetektáló eszköz, különböző erősségű eszközökön más-más quality beállításokon indul a játék
  • Saját UI plugin rendszer használata az egész játékban, ami támogatja a 2D és a 3D UI-t is
  • GIU2-es mentési rendszer átalakítása (játékmentés és pályamentések átalakítása, görbék mentése, környezet mentése)
  • Zenék vágása, később zenevágás automatizása saját pluginnal
  • Játék optimalizálása: Ingame platformok és környezeti elemek LOD-ozása, Pályák betöltésének optimalizálása
  • Programozói munkák összefogása
Invictus Games

Give It Up! Bouncy

A népszerű Give It Up! brand-re építve, egy új mechanikát próbáltunk ki. Android, iOS és Nintendo Switch platformokra készült.

Feladatok:

  • Team lead
  • Részlegek közötti kommunikáció
  • Programozói feladatok kiosztása és visszaellenőrzése, követelmények betartatása, kód minőség fenntartása
  • Játék struktúra kialakítása
  • Platformok működése és a hozzá kapcsolódó adatszerkezetek felépítése
  • Pályaszerkesztő és pálya adatok mentése
  • SDK integrációk (Playfab, ADs, stb.)
  • PlayFab cloud sync és egyéb live funkciók támogatása
  • Saját UI plugin rendszer használata és fejlesztése
  • Újra felhasználható hardverdetektáló eszköz
  • Egyedi mentési rendszer és konfigurációs adatbázis
Invictus Games

Multi Battle

Mobil játék prototípus. Ebben a játékban a multiplayer megvalósításán dolgoztam, lobby, adat szinkronizáció, core gameplay. A játék nem jelent meg, inkább csak érdekességként tüntetem fel.

Feladatok:

  • Multiplayer megvalósítás
  • Lobby rendszer
  • Adat szinkronizáció
  • Core gameplay
Invictus Games

Deeprealm Odyssey EA

Kalandjáték Android és iOS platformokra. Early Access verzió.

Feladatok:

  • Project manager / Team lead
  • Részlegek közötti kommunikáció
  • Programozói feladatok kiosztása és visszaellenőrzése, követelmények betartatása, kód minőség fenntartása
  • Előrehaladás, költségek folyamatos mérése és jelentése
  • Ellenfelek (AI)
  • Viselkedésük programozása: HP, támadás, védekezés
  • Mentés és konfigurációs adatbázisok
  • Optimalizáció
Invictus Games

Flöklypa Grand Prix

A népszerű norvég bábfilm ihlette story játék, autóversenyzős részeit készítettük el. A teljes játékon több stúdió is dolgozott, hogy minél jobb minőséget tudjunk elérni. Unreal Engine alapú.

Feladatok:

  • Project manager / Team lead
  • Részlegek közötti kommunikáció
  • Programozói feladatok kiosztása és visszaellenőrzése, követelmények betartatása, kód minőség fenntartása
  • Előrehaladás, költségek folyamatos mérése és jelentése
  • Racing AI
  • Hangolható erősség (easy, medium, hard)
  • Pályán felvehető itemek használata (olajfolt, villám, stb.)
  • Útvonalak optimális és változatos bejárása
  • Alapvetően spline követéssel működik és az út adatok alapján előre nézi, hogy mikor kell lassítania és mennyivel mehet az adott útszakaszon
  • Mindig az optimális íven próbál haladni, ha nincs semmi akadály az úton, hogy minél hatékonyabb legyen
  • Catch-up system (játékosfigyelés, multiplayer támogatással), azaz több játékos esetén is minden játékos körül lesznek AI autók, hogy érezhető legyen a verseny hangulat
  • Ütközés védelem, hatékony előzés, AI csapatkommunikáció
  • Folyamatosan figyeli az AI a körülötte lévő autókat és a pálya lehetőségeit próbálja kihasználni, hogy elkerülje az ütközéseket, például sokkal jobban lehúzódik
  • Minden pályára / játékmódra / autóra, hangoltam az általam implementált AI-t a design kérésnek megfelelően
  • Optimalizáció (blueprintek nativizálása vagy átírása C++-ba)
Invictus Games

Malazard (Steam VR)

Ketten programoztuk a játékot, 3 hónap fejlesztési idő alatt. Inkább afféle technológiai demo-nak szántuk, mint első VR játékunk. Unity Engine alapú.

Feladatok:

  • 3D UI működése
  • Játék elemek működése
  • Ellenfél karakterek: Támadási hullámok generálása hangolható módon
  • Ellenfelek viselkedésük programozása (AI): HP, támadások, védekezés
  • Scene áttöltés és főmenü működés
  • Kontroller működése a VR-ban
  • Optimalizáció
Image
Invictus Games

Gummy Heroes

A fejlesztés második felében csatlakoztam be a projektbe. Unity Engine alapú mobil játék Android és iOS platformokra.

Feladatok:

  • Core gameplay elemek lefejlesztése
  • Mentési rendszer
  • UI működésének programozása
  • Optimalizáció
Invictus Games

Dustoff Heli Rescue 2

Ennek a játéknak, egyedül végeztem el a teljes játék portolását Xbox-ra (beadással együtt). Optimalizáltam helyenként a PC verziót és több átalakítás is szükséges volt az Xbox irányelveinek támogatása miatt (például a kontrollerhez kapcsolt felhasználói profilok támogatása). Az Xbox SDK integrálásával, a korábbi funkciók teljes támogatását megoldottam a platformon.

Feladatok:

  • Teljes játék portolása Xbox-ra (beadással együtt)
  • PC verzió optimalizálása helyenként
  • Xbox irányelveinek támogatása (kontrollerhez kapcsolt felhasználói profilok, stb.)
  • Xbox SDK integráció
  • Korábbi funkciók teljes támogatása Xbox platformon
Invictus Games

Maximum Football

Az amerikai foci fejlesztésébe később kapcsolódtam bele. Ebben a fő feladatom a foci AI-ok fejlesztése és a meglévő rendszerek hibajavítása volt. Unreal Engine alapú.

Feladatok:

  • Foci AI-ok fejlesztése
  • Meglévő rendszerek hibajavítása
  • AI inicializáció megfelelő időzítése, hogy a GameMode-ból minden szükséges adat rendelkezésre álljon
  • Bevezettem az AI-ok számára egy külön commonData réteget, ahol megfelelő játékeseményekre frissülnek az adatok és minden AI közvetlen módon csak innen kér ki játék adatot
  • Behavior tree-k egyszerűsítése és generikusabb BT taskok, BT service-ek programozása az újabb kérésekre
  • Különböző játékmódok támogatása az AI által, szerepkörök szerint felosztva
Image
Invictus Games

Mudfest

Sárban dagonyázó, egyedi fejlesztésű technológiákra épülő autós játék. Unreal Engine alapú.

Feladatok:

  • Team lead
  • Programozói feladatok kiosztása és visszaellenőrzése, követelmények betartatása, kód minőség fenntartása
  • Autó AI fejlesztés
  • Egyedi fizikát használó autók vezetése, általam meghatározott interfacen keresztül
  • Ehhez egy egyedi AI plugint terveztem (teljesen C++ oldalon leprogramozva, nem használ blueprint-eket)
  • Elég sok hasznos funkciót kapott, az Unreal meglévő összes AI feature-ét támogatja
  • Ezt az AI plugint részletezem az egyéni céges fejlesztéseknél, lentebb
  • Karakter AI fejlesztés
  • Egyedi viselkedéssel rendelkező, pályákon mászkáló és szurkoló AI karakterek implementálása, akik reagálnak a környezetükre

Egyedi plugin-ok fejlesztése - Borsi Miklós

Unreal EngineUnreal Engine AI Plugin

A cél az volt, hogy egy egyedi AI plugin készüljön, Unreal Engine AI technológiákat felhasználva, mint például: Navigation mesh, Behavior tree, Perception, RVO, stb. A plugin több modulból áll, a generic része a legnagyobb, ami pawn típusától függetlenül képes dolgozni, az Unreal AI eszközöket kiterjesztve. A többi feladatot a pawn specifikus AI rétegek végzik.

Portolások és SDK integrációk - Borsi Miklós

Portolások és SDK integrációk

A fenn említett projektek során és más projekteken végeztem portolást is, beadási folyamatokkal együtt.

Platformok:

  • XBOX
  • AndroidTV
  • PlayStore
  • AppleStore
  • Steam

SDK integrációk:

  • AD (hirdetések)
  • Cloud services (PlayFab)
  • MultiPlayer (Photon)