Kezdőoldal » Számítástechnika » Programozás » Szerintetek jó ez az elgondolás?

Szerintetek jó ez az elgondolás?

Figyelt kérdés

Készítek egy játékot, amihez a legmegfelelőbbnek a szerver-kliens kialakítást választottam.


Nos. Az a lényeg, hogy a map dinamikusan jön létre, és változik. A szerveren fut kb minden. A kliens csak a grafikai megjelenítést, és a bevitelt kezeli.


Nos. Ugye darabokra van osztva a map, ez megkönnyíti a kezelését a mapnak. Ugye a map darabjainak tömbjét tcp-vel küldöm el, mikor a játékos a szerverről letölti a mapot. A bevitelt értelem szerűen udp-vel.


Nos a mapon történő változásokat, vagy az egész map darabot küldjem újra szerintetek? Esetleg ha csak a változást, akkor tcp-vel elég gyors lenne, vagy udp-vel kéne?


Per pilla csak a változást küldi el a szerver és tcp-vel. Mert ugye ez biztos megérkezik a klienshez, ezáltal szinkronba marad a szerver és a kliens. És elkerülöm a szellem objektumok létrejöttét. Ez jó lenne, de valahogy lassúnak érzem, és félek hogy szerver laggot okozna. Átállítanám udp-re, de ez nem biztos hogy megjön. És lehet egy objektum létre jött szerver oldalon, kliens oldalon nem, vagy még ott van kliens oldalon, de szerver oldalon már nincs.


Szerintetek jó ez az elgondolás? Nem lassu? Ugye a változásos annyik hogy vagy elpusztult egy objektum az adott koordinátán vagy létre jött.


A hasznos válaszokat előre is köszönöm.


2020. nov. 19. 15:23
1 2
 1/15 anonim ***** válasza:
Milyen a map grafikailag, statikus vagy dinamikus?
2020. nov. 19. 15:41
Hasznos számodra ez a válasz?
 2/15 A kérdező kommentje:
Dinamikus. Mondjuk tegyük fel hogy a játékos kivág egy fát, akkor az megy ki a szerverről, hogy onnan el lett véve a fa. A kliens elveszi a fát, azaz kiveszi a tömbből, és újra előállítja az adott darabot a már módosított tömbből. Mert ugye a fa alatt lévő rész ha ott van, ki van vágva.
2020. nov. 19. 15:45
 3/15 anonim ***** válasza:

Értem, de nem így kérdeztem.

Sinamikus alatt én mondjuk terra tipusú MAP-et értek, amiből két egyformát nem is igen lehet generálni, vagy statikus, amely megszámlálható grafikai elemből építkezik?


Úgy sejtem, nálad az utóbbi játszik, nem?

Mert akkor a grafikus asset a kliensen van, az ezt összeállító map-et a szerver küldi át, de a kliens feladata a frissítés, mert mégis csak a kliens játszik, nem?

A szerver csak adminisztrál és kontrollál.

2020. nov. 19. 16:16
Hasznos számodra ez a válasz?
 4/15 A kérdező kommentje:
Pontosan. Ez a terv. A második.
2020. nov. 19. 16:32
 5/15 anonim ***** válasza:

Hát nem gondolom, hogy a mai hálózati technológiák mellett a TCP jelentősen lassabb lenne. Az UDP hibáit te is látod (egyébként UDP-vel is megoldható sok minden, használnak sokszor olyat, hogy ha a kliens fogadta az UDP csomagot küld egy ACK-ot a szervernek).


Kérdés itt, hogy mennyire gyorsan változik a szerveren az adat és mennyi a frissités. Megoldható (sok helyen alkalmazzák) hogy X ideig a frissitések mennek, és időnként átküldik a teljes mapot (pl. a klasszikus mpeg stream is így működött valamikor nagyon régen). Ilyenkor összetudnak szinkronizálni. Számtalan megoldás van. Kérdés, hogy pl. szétszedhető-e úgy, hogy vannak statikus részei a mapnak, ekkor csak a dinamikus részt kell küldeni. Nagyon meg kell nézni az adatokat, hogy hogyan lehet leírni. Szintén sokat lehet nyerni (főleg az áttolt adagmennyiségen, ha a hálózati sávszélesség és késleltetés számít) hogy hogyan kódolsz, és hogyan ábrázolod az adatokat. Itt kell és érdemes optimalizálni, mert ha tömörited az adatokat (vagy eleve jól pakolod össze) akkor kevesebb adatot kell áttolni a neten, de több idő a CPU-nak helyre állítani a mapot. De ehhez az egészet kell egyben látni, hogy pontosan mit kell áttolni. Pl. egy figura mozgatásánál nem biztos, hogy az egész figurát át kell vinni, hanem egyszer elküldjük a figurát, utána azt, hogy melyik "izület" merre és mennyit mozdul. Majd a kliens rendereli. De választható az is, hogy átküldjük az egész figurát. Ezer meg ezer szempont van.

2020. nov. 19. 16:52
Hasznos számodra ez a válasz?
 6/15 anonim ***** válasza:

UDP nem küld vissza semmit.

Az való igaz, hogy érdemesebb UDP-t használni és egyedi azonosítóval ellátott csomagot kétszer, netán háromszor elküldeni, mint TCP-vel vergődni.


Az init map kerül a kliensek között kiosztásra.

Ezen túl az aktív (megjelenített) map-fragmentum frissül prior egyben (per client), a többi utána, ha a szervernek van ideje szusszanni.

A karaktereket nem küldi át senki. Mindig csak a korábbi állapothoz képest történt változásokkal kell terhelni a szervert. Érdemes az adatcsomagokat tömöríteni és a lehető legkisebbre méretezni az egyedi azonosítókat, illetve azok állapotait. Akár 10 bitre (töredék byte) is megéri kidolgozni.

2020. nov. 19. 17:02
Hasznos számodra ez a válasz?
 7/15 anonim ***** válasza:

A 10 bit mióta töredék byte? Ha jól emlékszem 8 bit egy bájt.

"UDP nem küld vissza semmit" válasz küldhető UDP-n is (így működik pl. a DNS).

2020. nov. 19. 17:09
Hasznos számodra ez a válasz?
 8/15 anonim ***** válasza:
19%

A 10 bitből 2 bit a második byte töredéke.

Az UDP nem küld vissza semmit, mert ha küldene, akkor nem lenne UDP.

Nem is érdemes küldeni nyugtázójelet, csomagot, mert azzal hülyeség terhelni a szervert, hogy egy esetleg már halott, outdated csomagot küldjön újra. Nagy terheltségű játékoknál Mindig van némi packet loss, mégsem foglalkozik vele senki.

2020. nov. 19. 17:20
Hasznos számodra ez a válasz?
 9/15 anonim ***** válasza:
54%

#8

UDP fölé olyan saját protokollt épít amilyet akar

ne oszd már itt a hülyeséget

2020. nov. 19. 20:47
Hasznos számodra ez a válasz?
 10/15 anonim ***** válasza:
0%

"UDP fölé olyan saját protokollt épít amilyet akar"


Erre írtam, hogy az már nem UDP.

Szóval, hogy a szavaiddal éljek, ne oszd már itt a hülyeséget. Olvasgass te is:


[link]

2020. nov. 19. 20:59
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!