Anteeksi kun kesti. Ei eilen joutanut. Mutta lähetään arvailemaan kun lupasin sellaisen antaa.
Puhutaan ensin näistä containereista. Alla oleva kuva on container.
Sisältää kaiken minkä pelimailma tarvitsee toimiakseen. Käsittääkseni tälläisestä containerista voidaan luoda serveri. Toi on itse asiassa 2mx2m area 18. Näitä ladataan pelaajan(Client) päässä muistiin kaikki mitkä on tietyllä säteellä pelaajasta tai pelaajan näkemiä. Toisin sanoen 2mx10m on 5 tälläistä ja voisi sisältää 5 serveriä. Eli 5x50 250 pelaajaa 10m metrin alueella. Tietys ne ei siihen fyysisti mahdu.
...
Container on kaikenkattava tietorakenneformaatti johon jäsennetään kaikki SC:ssä.
Ts aivan kaikki on Containeri ja aivan kaikki sisältää Containereja.
Esimerkiksi hissintilausnappi on oma Containerinsa joka sisältää kaiken siihen liityvän.
Cotainerilla ei ole mitää kokorajoja ei suuruuden eikä pienuuden suhteen.
Tämän SSOCS on tarkoitus ottaa käyttöön vaan ne containerit mitä pelaajat voivat nähdä. Esim pelaaja 1 on portolissa(500 containeria) ja pelaaja 2 on arcorpissa(1000000 containeria) niin serveri käsittelee 1000500 containerin datan. Eli tämä mahdollistaa sen että ei servulta lopu muisti kesken.
Oikein, ongelma tulee siitä että tarvitaan ylempi serveritaso joka muistaa niiden kaikkien muiden Containerien tilan tätä serveritasoa ei vielä ole olemassa.
No nyt kun on käytössä tämä että containerit otetaan muistiin mitkä voidaan nähdä. Niin voidaan kysyä serveriltä että mitäs toi container sisältää esim. AI. No serveri vastaa että vitustako minä sen tiedän kysyn noilta muulta 1000000 serveriltä(kysely lähetään joka serverille). No saamme vastauksen nykyisellä 30 Hz/s tick ratella noin 100(luku perustuu että uskon että amazonin virtuaali servereitten latenssi on 1ms tai alle) millisekuntiin serveriltä 8999 että container sisältää koiran kakkaa. Pelaajan serveri lähettä sen Clientille että kysy tolta serveri 8999 kun en minä tiedä. Eli nyt client jutteelee 2 serverin kanssa yhtä aikaa. Ja kumpanenkin päivityy noin 30 kertaa sekuntissa. No nyt kun sinne serverille voi nähdä. Tosin että täytyisi nähdä 26 muulle serververille yhtä aikaa. Luku perustuu siihen että otetaan kuutio joka jaetaan 3x3x3 lattikoihin ja sinä olet sillä keskimäisen serverin laatikkossa että katettaisiin 360 astetta joka suuntaan.
Osuit ongelman ytimeen juuri tuo montako serveriä pystyy yhtäaikaa oleman hivessä on se rajoittava tekijä kokonaispelaajamäärälle taistelussa.
No nyt oletetaan että toiselle serverille voi nähdä ja tiedetään mitä containeria katsellaan niin saadaan myös containerin paikka tieto Xyz selville. Ja vaikka olet omalla serverillä siduttu serverin origoon 0,0,0 niin voidaan laskea että mihinkä kordinaattiin pelaaja laitetaan jos se astuu sille serverille missä container sijaitsee. Eli sama tapaus kuin alusten kanssa vaikka olet sidottu serverin origoon olet myös sidottu aluksen origoon. Tässä tapauksessa olet vain sidottu siihen containerin origoon. Ja jos tätä dataa on mahdollista vaihtaa 30 kertaa sekuntissa niin aika saumatonta se serverin vaihto on. Siis voit nähdä useammalle serverille mutta voit vain siirtyä yhdelle kerrallan. Ja jos noi containerit on esim avaruudeessa 10kmx10kmx10km ja niitä on vierivieressä ja jokainen niistä voi olla serveri. niin paljonko sinne aurinkokuntaa mahtuu pelaajia niin sean tracyn sanoin ten million(kai se tässä vaiheessa olisi MMO). Tosin vastaus viittaa siihen että eivät itsekkään tiedä.
SC:ssä on World Space (en varma muistinko nimityksen oikein) (64 bit float) se on koko aurinkokunnan kokoinen koorditaatisto jonka nollakohta on aurinko kaikken sijainti muunnetaan World Space ja Screen Space tilojen välillä.
------------------------------------------------------------------
Saumaton loputon universumi ei ole mikään ongelma. Ainoa ongelma on siirrettävän datan määrä. En nyt ehkä ihan täysin sisäistänyt mitä tuossa pyrit selittämään. Hiukan kuulostaa siltä että peli pyörii server meshissä ja lähettää clienteille vaan dataa mitä niiden pitää rendata (nähdä) ja vastaavasti käsittelee player inputin? Eli jonkin asteista pilvipelaamista? Jos näin on niin tuo on tiettyyn pisteeseen asti mahdollista ja kuulostaa oikeastaan todella mielenkiintoselta ratkasulta. Jos taas ei niin miten ihmeessä kaikki data ehditään siirtää pelaajille, kaistan leveys ja nopeus on kuitenkin rajallista? Mutta epäilen että ymmärsin oikein homman juonen siinäkohtaa että tuo suurin liikenne ja laskenta tapahtuu siellä server meshissä ja clienteille lähetetään vain info mitä clientin tulee rendata pelaajan päässä.
Pelaajan ja palvelimen väline datasiirtokapasiteeti ei ole se rajoittava tekijä.
rajoittava tekijä on nimeomana tuo kuinkan moneen palvelimen tarvitaa yhteys.
------------------------------------------------------------------
Kyllä jos toi servesmesh toimii niin kuin tossa ylempänä arverlin niin kyllä se ongelma on pelaajan päässä.
Lokonen pelaajan kone ei ole suoraan yhteydessä Meshin palvelimiin peli on Palvelin Authorative eli vain se pelaajan palvelin on yhteydessä toisiin palveliimiin ei pelaaajan kone.
------------------------------------------------------------------
Kyllä arvelit ihan oikein. Ja kyllä siinä jossain vaiheessa tule se serverin fyysinen kapasiteetti vastaan. Latenssi ja ihan laskenta teho. Tosin se mitä renderöidään otetaan Clientiltä muistista. kaikki näkyvä on kuitenkin clientin koneella. Se lähin tulee serveriltä mitä AI ja muut pelaajat tekee.
Serverillä on kaksi rajoittavaa tekijää
Severien välisten yhteyksien määrästä syntyvä viive.
Serverin ylläpitämien entiteetien (containerit) määrästä johtuva muistitarve.
Senjälkeen kun pelaajanpään OCS ja BC tuli käytöön pelin rajoituksen on olleet nimenomana serveripuolen rajoituksia.
Minä olen pelnnut 3570K + GTX670 koneella yli 50 FPS päivitysnopeudella PTU:ssa silloin kun on ollut käytössä sellainen PTU jossa serveri ei ole pullonkaulana.
------------------------------------------------------------------