Hogyan írjunk egy játék szerver

Multiplayer online játék - csomagkapcsolt átviteli kliens-szerver, p2p, TCP / UDP, grafikonok
A folyamat leírása és postavnovka feladatok:

1) minden játékos követ cselekmény védence és értesítenie kell a szörny játékosok és a játék tárgyak egy adott körzeten belül.






2) A játékos meg kell látni a 3D objektumok és a szörnyek csak opredennyh sugara.
3) A szerver vypolyaya akció a békéért és a szörnyek, és értesíti az összes játékos vagy játékosok opredennyh méretét az ingatlan.
4) A lejátszó és a szörnyek szerver végző cselekmények üzenetek vagy csomagok
5) A méret a játék üzeneteket, vagy ál-csomag

[Player1, player2, szerver] [time_stamp] [kliens / szerver] [geo_location] [game_map_location] [net_key] [player_id] [visible_radius] -
[Player1, player2, szerver] ahol minden elem egy objektum serrializovanny
player [
akciók [[hit, player2, tűzgömb], [run, vektor], [forgatni, sugár]]
player [param1, param2]
tételek [item1, item2]
Üzenet [string, csevegés]
gruops [klán, party],
idő [time_stamp]
]

Ha üzenetet küld az ügyfél és a kiszolgáló, és hozzon létre egy nagy csomagot.

1) A játékosok Szinkronizálás
2) kliens-szerver szinkronizálás
3) Alacsony sebességű átviteli TCP / UDP, az alacsony átviteli sebesség clien-szerver
5) Körülbelül minden csomag kell tudni csak a szerver,
6) A játékosok különböző távolságokra földrajzilag - amely csökkenti az átviteli sebesség
7) Meg kell küldeni a csomagokat csak a szomszédos tárgyak
8) Csomagok lehet elveszett csomagokat helyettesítheti

Solutions szintjén a játék:
1) A kétdimenziós tömb [] [], amely megfelel a fizikai térkép a játék világában
2) hozzáadása játék objektumok ez a tömb
3) hozzáadása a sugara láthatóságát minden objektum, amely képes csomagokat
4) Az objektum csomagokat küld csak a tárgyak, amelyek egy adott körzeten belül belőle
6) vannak kialakítva csoportok tárgyak
5) Az egyik fő tárgyak kijelölt
6) Az egyes csoport tárgyak Levél Minden csomag
7) létrehozása hivatkozás csomag
8) A fő célja a csoport elküldi az összes a referencia csomagot

A döntés a hálózat és a kiszolgáló szinten:
1) Vegye ki a térképet a világ, és létrehoz egy kétdimenziós tömb, a cella tartalmazza az információkat a területen [országra] [város], és minden az ügyfelek a régióban
2) ezeket a pontokat kiszámítani és épített gráf legrövidebb út az egyes pontot
3) több ügyfél kerül kiválasztásra az egyes régiókban a legmagasabb arány
4) Az egyik a vevők egy adat szerver a többi régió
5) Szerverek a régió áthaladnak a láncot, és üzenetét a legrövidebb úton a szerver és a

1) Az ügyfelek starbases kéreg üzenet időtúllépés
2) A szerver egy olyan folyamot képező üzenetsort
3) a fő szerver létrehozásakor az azonos üzenetsort

Felhívjuk figyelmét, hogy a szabad mozgás játékok elérhető egy kis online.
A játékok több online, mint a vonal / Islands, akkor nem szabad mozgás és áramlás parancs „futnak az x, y koordinátákra” z támadni az ellenség
így nem sok információt kell továbbítani az egyes játékosok.







Ping, és egyáltalán - a szerver fordul egy belső esemény hurok, amely kezeli az összes intézkedés egy bizonyos sebesség.
Válogatott minimális idő S, amelyre egy művelet zajlik a játék világában. Minden művelet alapján ugyanabban az időben (varázsolni 3s, át vízszintesen 1 lépés 1 S, 1 S fut 3 lépésben)

Hogyan jöjjön szerver csomagot a játékos a csapat, így a szerver és megkezdte annak végrehajtására. A kliens már lehetséges, hogy a kereset simábban.

Általában, ha kérdése van olyan szinten, hogy érdemes tanulni egy kicsit egyszerűbb dolgokat. írj csevegés elindításához, vagy egy egyszerű MUD

Igen, először meg kell írni a chat, hogy érdekes linkeket a témában www.gabrielgambetta.com/fpm_live.html Vseravno amely a szinkronizációs algoritmus legyen. Rákattintottam futtatni a pont x kliens futott, de egy bizonyos ponton, meggondolta magát, és megfordult. Ekkor egy másik játékos a kliens még mindig fut ugyanabban az irányban.
Azaz mi lesz a következő alkalommal kell, hogy ellenőrizze, hogy fut ugyanabban az irányban.

Padaboo. A és ez történik, ha podlagivaet.
De megzavarja az üzenetek számát szeretnénk küldeni.
A játékos küld a kiszolgáló tevékenységek.
Több intézkedés lehet küldeni egy csomagban. A kiszolgáló a játékosok azonnal kapcsolja intézkedések helyett az egyes játékosnak külön.
Időtartamának növelése a minimális kullancs - ha minden könnyebbé válik.
A legtöbb MUD-ok, teak fél másodperc. Ez éppen elég.

Azt hiszem, hogy túl sokat vett a kihívás, fej-on.

Server minden esetben van egy nagy optimalizáló.
El kell döntenie, hogy melyik játékos mit küldeni. Limit kéri a távolság. És ha egy játékos nem tud semmit, hogy a játékos a B, majd küldje el információkat egymással, vagy nem biztos, vagy lehet 10-szer kevesebb. Gyere közelebb - lesz a további részletekért.

Rendszeresen jöjjön sync csomagokat több információt, de alapvetően - a delta a múlt és a jelen.

UDP gyakran használják

Általában sok árnyalatok. Te tényleg csak szeretnék csinálni egy ilyen megoldás?
100 játékos és lehetséges, hogy szinkronizálja adási komoly lemaradások kezdődik a területe 500 felett egy helyen.

Ha valami, mint a Quake, ahol a kritikus ezredmásodperc, van egy pár tízes és mintha nem optimalizálják a kritikus Ping a játékos a szerver, és <30ms не сделать.

Szergej. Igen komolyan akar kezdeni tesztüzenetek és időzítését, ha van feltekerve, hogy a játék mechanika lesz még nehezebb.
Nem, azt akarom, hogy egyszer, hogy valami komoly - hely nem túl jó, egy világ legjobb.
A lényeg az, hogy ha gyakran küldenek nagyon részletes csomagot - az ideális, de vannak lemaradások a növekvő számú felhasználó.
Ha küld csomagokat ritkán, akkor az ügyfél lesz, hogy kitalálni, hogy mi teszi a játékos, mielőtt jön a következő csomag, és akkor nem lesz nehezebb szinkronizálni.
A játékos futott 400 métert, és a következő csomag leesett vissza, és kiderül 30 fok.

A helyszínek: jól, ha egy nagy és átmenetek különböző helyszínek között vannak kialakítva, mint „ajtókat” és a „barlangok”, hogy lenne abban a pillanatban, amikor a játékosok nem látták egymást.
És ha az átmenet nem -, akkor a játékosok nesmog látják egymást a különböző helyeken tisztán szintjén az alkalmazás kódját az ügyfél, illetve túl.

Például a karakter fut az utakon, és a helyét a változás bekövetkezik (vizuálisan, hogy ugyanazon a helyen)

„Nem, azt akarom csinálni egyszer, hogy valami komoly - helyét nem nagyon jó, az egyik a világ legjobb.”
A lényeg az, hogy úgy gondolja, a sztereotípiákat.

Hely nem feltétlenül változás a hely, ez is egy helyen - helyre.
Kiszámítja a távolságot a játékosok között és meghatározott ügyfél küldeni valamit, ami érinti a jelenlegi helyéről, és az interaktív tárgyak egy bizonyos távolságon belül X tőle. Akkor is az X távolság nem statikus, és az ilyen automatikusan csökken, ha sok tárgyat. Ez „a”, például 20 méter, 100 méter a városon kívül. Add kivétel az objektumok, amelyek közvetlen kapcsolatba vele, vagy forduljon az utolsó xx másodperc

Általában SZVSZ vegye fel egy nagy projekt tapasztalat nélkül a hasonló munkát.
Ennek eredményeként, van egy valószínűsége 95%, a projekt befejezetlen marad, mint ahhoz, hogy legalább a kezdeti működő változat kapsz egy nagyon hosszú idő, de nem méltó siker, motiváció esik, és minden marad a papíron.




Kapcsolódó cikkek