2010. április 27., kedd

Prototípus szerver startup

Solarah prototípus szerver indulás, konzol üzenetek. Sok a nyomkövetési céllal kiírt dolog még. Alapvetően a master és a logger működőképes, a többiek egyelőre elhányják magukat.
Keveredett egy-két naplóüzenet is a szövegbe . :)

2009. augusztus 26., szerda

Solarah Online Szerver Prototípus Ismertető

Ennek a bejegyzésnek a témája most elég technikai jellegű lesz, nem titkoltan azzal a szándékkal, hogy hátha felkelti valaki hozzáértő érdeklődését és beszáll a fejlesztésbe a gyorsabb haladás érdekében. Egy-két újabb konceptrajzot is beraktunk a szövegbe, hogy a többieknek is jusson valami csemege.


Kicsit több mint egy hónapja publikáltam a launchpad-on a majdani szerverünk prototípusának kezdetleges állapotban lévő forráskódját. Ezzel a célunk egy szerver keretrendszer kialakítása, amelyből majd a trunk-ba illesztve a szerver programunk első bevethető verziója fejlődne ki. Az alábbiakban ennek az általunk tervezett felépítését és nagyvonalú működését mutatom be.


A szerver öt önálló binárisként (és processzként) futtatott kiszolgáló egységből áll: master, worker, auth, chat és logger. Ezek mind képesek külön számítógépen futni vagy alapesetben a master indítja a többi processzt – vagy azokat, amelyek azonos hoston futnak vele - forkkal. A processzek egymással tcp kapcsolaton beszélnek, meghatározott portokon keresztül.


A master felügyeli egy un. masterporton kapcsolódva a többiek futását, statisztikát gyűjt róluk, indítja és leállítja a szolgáltatásokat. Később egy szöveges (ncurses alapú) konzolt is megvalósítunk, amin keresztül közvetlenül lehet felügyelni a szerver futását.


Minden processzt alapvetően azonos felépítéssel tervezünk, aminek az alapelemeit az ACE Framework adja. Az un. half-sync/half-async mintát használjuk. Ennek az a lényege, hogy egy threadben kezeljük a hálózati kapcsolatokat és a forgalom (küldés és fogadás) lebonyolítását az ACE_Reactor és kapcsolódó osztályok segítségével és egy másik – ehhez képest aszinkron módon futó - thread-ben végezzük a beérkezett üzenetek feldolgozását és a kiszolgáló funkciók futtatását. A két thread egymással egy üzenetsoron keresztül kommunikál.

A kiszolgálók tehát úgy működnek, hogy a hálózati kapcsolatokon beérkező üzenetek egy üzenetsorba kerülnek, amiből egy feldolgozó thread veszi ki, és dolgozik velük. Opcionálisan threadpool-t is használhatunk, ami azt jelenti, hogy egyszerre több feldolgozó szál vár üzenetre, és így párhuzamosan üzenet feldolgozása is futhat – amennyiben ez megoldható és szükség van rá.


A master által végzett feladatokat már leírtam, következzen most a többi négy kiszolgáló.


A logger processz végzi a szerverben a többi kiszolgálótól érkező logbejegyzések rögzítését fáljba vagy adabázisba. A konkrét feladatokat megvalósító rész készülhet luában is, mert nincsen szükség a c++ sebességelőnyére ebben az esetben, viszont talán kevesebb kóddal és rugalmasabban megvalósítható (esetleg akár menet közben is cserélhető).


A chat processz végzi a szerverben a felhasználói csevegés és egyéb hasonló feladatok (pl. hírek, bejelentések) lebonyolítását. Alapvetően csatornák vannak, amelyekhez felhasználók kapcsolódnak és az adott csatornára küldött üzeneteket szórja szét a tagoknak. A megvalósítás itt is lehetne akár luában.


Az auth processz végzi a szerverben a felhasználók azonosítását a nevük és jelszavuk alapján ill. az un. „game session” létrehozását. A felhasználói adatokat és jogosultságokat egy Postgresql alapú adatbázisban tároljuk. Ezt az adatbáziskezelőt használjuk igény szerint máshol is. A megvalósítás itt is lehetne akár luában.


A worker végzi a szerverben a felhasználói hálózati kapcsolatok kezelését a RakNet rutinkönyvtár segítségével, az entitásrendszer és szabályrendszer szkriptek futtatását és az entitások egymáshoz való térbeli viszonyát követő (máshol talán fizika modulnak hívott) proximity motor futtatását. A szkriptek fájlrendszeren (esetleg adabázisban) foglalnak helyet, az entitások adatai pedig egy entitásadatbázisban.

Ez a processz valósítja meg a játékszerver legfontosabb funkcionalitását, a többi kiszolgáló tulajdonképpen az erről leválasztható és önállóan működni tudó funkciókból jött létre.


Ezek voltak a legfontosabb információk a Solarah Online első szerverprogramjáról ill. arról, hogy hogy akarjuk kialakítani. Feltűnhetett, hogy nincsen szó itt klaszterezésről, terheléselosztásról, monitorozhatóságról, távoli menedzselhetőségről, stb. Ezeket a tulajdonságokat, képességeket nem akarjuk mindjárt ebben a szerververzióban megvalósítani. Próbálunk (épeszű idő és munka árán) megvalósítható célokat kitűzni magunk elé, és a fokozatosság elvét követjük.


Remélem minden mondat értelmesre sikerült. Kérdéseiteket és észrevételeiteket a honlapon megtalálható kontaktokra írjátok.


2009. január 1., csütörtök

Az előző részek tartalmából

Engem is elkapott a nagy össznépi agybaj s nekiállok összefoglalni az elmúlt évet. Essünk is neki:

Az év mint mindig most is egy vizsgaidőszakkal indult, ami jellegéből adódóan nem túl gyümölcsöző a project szempontjából.
A vizsgaidőszakból egyenesen egy SV konfba majd nemsokkal késöbb az SV Sörbe futottunk, ami az első Solarah találkozóhoz képest jól sikeredett. Volt ott korai Solarah teszt és megkaptuk az első külsős bug jelentést is, remek volt. :)



Ezután nyárig a következők történtek: fejlesztés, fejlesztés, vizsgaidőszak, fejlesztés
Nem nevezném különösebben sikeres időszaknak, nem haladtunk olyan gyorsan mint az tervezve volt de azért volt előrelépés ekkor is bőven: Armen, szabályrendszer finomítások, animációk kliensbe építése, animált kamera, stb...

Július. Megrendeztük az első SV tábort ami a vártnál is jobban sikerült. Remekül éreztük magunkat, remekül haladtunk a munkával, és úgy általában csak leg-ekben lehet beszélni az eseményről pedig volt bőven hibalehetőség (pl bográcsozásnál Microsoft kézikönyvet használtunk gyújtósnak).



A tábor utáni időszakban egészen szeptemberig nem történt semmi, ebből okulva szeptemberben meghatároztunk egy fix kiadási ütemezést aminek első eredménye a decemberben megjelent első demo. A demo mellé pedig járt parti is ami szintén jól sikerült minden technikai nehézség ellenére.


Az év utolsó másfél hetében nekiálltunk a 0.2.1 elkészítésének a visszajelzések alapján. Innen is
köszönet mindenkinek aki kipróbálta és teszteredményeket vagy hibajelentéseket küldött vissza.

Ennyi lett volna az Úr 2008. éve, remélem nem hagytam semmi fontosat az apró részletek között amit nem írtam meg.

A végén pedig az újévi kívánság mert anélkül nincs ilyen post:
Solarahban gazdag, sikeres és boldog új évet kívánok a Silent Vertigo csapat nevében minden kedves (és kedvetlen) olvasónak!

2008. december 22., hétfő

Niskával poharazgatva

Túl egy vizsgákkal teli és nagyon erős Solarah fejlesztéssel megspékelt héten, amikor az átlagos alvásidőm öt óra alá szorult most kényelmesen hátradőlve, a szemembe beégett forráskód képét ignorálva írom ezt a postot.

Írom ezt a postot mert az első kiadott demo megérdemli, hogy időben meg legyen említve itt is. Ende kásakerülgetés, itt a link. Nézzétek meg, ízlelgessétek, s jelentsetek hibát ha találtok!

Nincs más hátra mint előre: köszönöm hát a csapat összes tagjának akik előre haladnak maguk előtt tolva a Solarah szekerét, s bár hozzám hasonló állapotban vannak, már folyik irc-n a tervezgetés és a demo tanulságainak levonása. Köszönöm az érdeklődőknek, fórumitáknak a jó meglátásaikat, ötleteiket és a végtelen türelmüket - remek érzés úgy dolgozni, hogy van aki várja a művet.

Azzal akartam zárni ezt a postot, hogy találkozunk a téli szünet után, egy hónap múlva. Mégsem így zárom mert biztos vagyok benne, a szünet alatt sem lesz tetszhalott a Solarah. Ezért ha mindenkinek megfelel, maradjunk annyiban, egy hét múlva ugyanitt. ;)

2008. december 14., vasárnap

Miklós után szaladva

Hosszú kihagyás után újraindul a blog, remélem mindenki örül. :)

Nem részletezem, hogy mi minden történt az elmúlt hónapokban - elkopna a billentyűzetem. Nomeg amiről most értekezni szeretnék izgalmasabb is. Viszont mielőtt ebbe belevágnék kicsit vissza kell ugorjak az időben.

Szeptemberi SV konf.
A csapat akkor megjelent tagjaival az addigi tapasztalatokat összegezve felosztottuk az évet és három nagy esemény közé szorítottuk a munkanapokat. Megvitattuk azt is, hogy az év mely szakaiban nem tudunk dolgozni (vizsgaidőszak, nyaralás) majd megegyeztünk abban, hogy mindhárom eseményt egy közösségnek kiadott (tech)demoval zárjuk.
Ezen események közül az első a Mikulás sprint.


Mikulás sprint

Ezen a hétvégén a csapat elérhető tagjai összeültek irc-n és nekiálltak az első nyilvános demo elkészítésének. Alábbiakban egy kis áttekintés erről.

A részeg ninják nem látnak a ködben
Kami sajnos nem ért rá a hétvégén, de még előtte leadta az általa készített anyagot, így bekerült a kliensbe némi köd, (eltúlzott) bloom és árnyék is.


A ninják sem győzhetik le a fizikát!
Részemről egy elég régóta húzódó feladat lett letudva a Bullet fizikai motor beillesztésével. Néhány űrbe kilebegett ninja árán eljutottunk addig, hogy már nem lehet falakon átsuhanni és a gravitáció is ki tud babrálni az egyszeri játékossal. (Képen a sárga vonalak egy ütközést mutatnak.)


A ninjának nincs tükörképe
A grafikus részleg is bedobta magát és csináltak sokminden szépet, de ez legyen meglepetés. ;)

A release folyamat hétfőn elindul s vasárnapra le is zárul. Ennek örömére vasárnap (2008 dec. 21) sörözést/teázást tartunk. Dobpergés:

SV Vodka
December 21-én 13:00-ás kezdettel minden érdeklődőt szeretettel várunk Budapesten a Fanyűvőbe (Budapest XIII. Váci út 70.) egy Solarah kipróbálásával összekötött sör
özésre/teázásra!
(Ha érdekel a dolog kérlek jelezd fórumon, hogy kb tudjuk hány emberre számíthatunk.)