Hirdetés

Új hozzászólás Aktív témák

  • Menthirist

    veterán

    Nah, vége a műsornak. programozóként nem mondom, hogy akár a felét is értettem a technikai résznek, de sebaj :D
    Pár dolog "összedobálva", ami előjött

    Elsőnek egy kis technikai (már akinek mond valamit):
    -Elsőnek tradícionális selection tree-n alapult, aztán áttértek behavior tree-kre (ez utóbbit pl természetes nyelvek feldolgozásánál is használják). A legfelső elemek még selection tree elemek, hogy gyorsan lehessen redukálni a behavior tree összetettségét, de utána átmegy behaviorba. Minden ilyen behavior párhuzamosan fut.
    -RTC++-t használnak (runtime compiled c++), gyakorlatilag olyan c++, ahol on the fly lehet kicserélni kódrészleteket, tree-ket, ezeket mentve és injektálva máris belépül az új kód.
    -Egy blackboard nevű megoldást használnak, amiben az AI minden lényeges dolga minden szereplőről benne van egy hatalmas tree ágaiként és leveleiként, ebből olvasnak, és ezt is dumpolják ki egy html5 site-ra, ahol fel lehet venni, lejátszani, stb. böngészőben bekattinthatnak egyetlen debug flag-et, vagy épp listázhatják, melyik karakter épp milyen manővert végez. Ezzel el tudták érni, hogy felvétel közben ha egy AI hibázik, akkor könnyen meg tudják nézni, vissza tudják követni mi a gond.

    Na és akkor általánosabb dolgok:
    Egyik nagy kezdeti kihívása a flight control volt. Egy nem túl nagy hajón is akár 16 thruster lehet, ezek közül van ami gimbal-os, tehát időbe kerül amíg irányba fordul és kifejti az erejét. Ezt vezérli az IFCS (inflight control system), és erre épülve repülnek az AI-k is. Ha a thruster sérül, a hajó irányítása is megváltozik, de ebben nem volt a fickó biztos hogy pl AI oldalon le lett-e tesztelve eddig megfelelően :).

    A repülés spline-okon alapul, amit megpróbál követni, teljes testreszabhatósággal (hol döntsön be, hátráljon, stb). Dogfight alatt viszont ez a spline realtime van generálva, és ha mondjuk két akciója miatt nem tudná a harmadikkal a pályán tartani magát, akkor automatikusan kalkulálja hogy hogy tudna visszatérni normálisan. Minden nagyon durva matekkal van számolva, mert semmit sem közelítő módszerekkel számolnak (a kythera matematikusa talán a harvardon végzett). A repülés közben folyamatosan manőverekkel igyekszik a célját elérni (dugóhúzó, stb). Még a reklámokban is AI van, mivel úgy gondolták, kézzel animálva nem lett volna olyan teljesen reális a fizika pl, mint ahogy akarták. Csak hát realtime AI-val nem könnyű reklámot és megfelelő nézőpontokat elkapni, azt mondja.
    Volt némi gond hajó a sebességduplázásával, ugyanis messzebbre kell kinéznie a hajónak, mivel időbe telik amíg a fizikai szabályok miatt el tud mozdulni, ugyanakkor több tízezer aszteroida van a két vanduul swarmos pályán, és ez túlcsordította a puffereket.

    Az AI-t első naptól visszafogták, mert mindenkinek meg kellett tanulnia repülni. Későbbi szinteken egyre kevésbé fogják vissza, később pedig tovább is engednek. Viszont mivel ilyen szofisztikált az AI, nem volt gond azzal, amikor haverokat kellett AI-ként betenni, pedig az általában gáz szokott lenni. Itt csak betették, azt mondták hogy ő az ellenség, te a barát, és már csinálta is a dolgát. Minden irányításbeli változás amit a játékosok számára csináltak, befolyásolta az AI repülését is, elvégre ugyanazokon az IFCS rendszereken át kell repülniük.

    Ugyanaz az AI van hajókhoz és fps-hez, csak módosított behavior-okkal. Dynamic navigation mesh-t számolnak (épp akkor hova lehet menni és hova nem), hajófoglalásnál onnantól hogy lenyílik a zsilip, már a két hajó is egy közös mesh, tehát bővül a pálya. Az fps modulban nehéz a navigáció, pláne mivel nem feltétlen van gravitáció, ugyanakkor jumppack-el vagy épp magboots-al ez felülírható.

    És végül mi az, amit ők tudtak használni a Cryengine-ből:
    A Cryengine animációs motorját és megoldását használják, de egyetlen sornyi AI kódrészt sem. Szóval AI oldalon nincs benne cryengine egy szál sem.

    Az AI szerveren és kliensen is tud futni, nagyon multiszálas. squadron 42-ben ugye offline AI kell, viszont PU-ben vagy vanduul co-opnál szerveren fut, mert közösnek kell lennie.

    Nah hirtelen ennyi volt. A technikai részt nem értettem sok helyen, illetve akit érdekel, az elmerülhet a kétfajta tree felépítésében.

    [ Szerkesztve ]

    Star Citizen FAQ http://starcitizen.hu/star-citizen-faq-az-ujaknak/ (Mielőtt kérdeznél)

Új hozzászólás Aktív témák