webForumDet fria alternativet

Nätverkskod till spel

8 svar · 586 visningar · startad av SoMeOnE

SoMeOnEMedlem sedan nov. 200254 inlägg
#1

Jag försöker få in nätverkskod till ett litet pansarvagnsspel jag har knåpat ihop. Frågan är: vilket är det bästa sättet att skicka över informationen och hur ska jag fördela sakerna, vad ska servern ta hand om och vad ska klienten ta hand om? Har försökt på lite olika sätt, så som att servern hela tidne skickar över positionen på allt och klienten helt enkelt bara ritar upp det. Nästa sätt jag testa är att servern skickar över ifall något ska flytta på sig och sedan skickar över när den ska sluta.

Problemet är att det laggar sönder. Skickar över ca 50-500byte sec beroende på sätt men det fungerar ändast när jag kör både klient och server på samma dator, så fort jag testar att köra servern på en annan dator i lan så laggar allt.

Så har något lite tips på hur man kan göra eller är det bara jag som har gjort ngt fel när jag försökte få ihop det?

Bara som lite mer info. Allting ritas upp, hanteras ca 30 ggr/sec. 2D-spel. Jag tänkte ha flera möjligeheter, antingen flera spelare på samma dator (Se bild). eller kunna spela på lan/internet mot andra spelare.

tanks.JPG
NickemannenMedlem sedan aug. 20003 575 inlägg
#2

Jag tycker att den kontrollen skall skötas på både klient och server.

Säg att du är på position 21,12 och du kan flytta ett steg åt vänster eller höger.
Då vet din client om att dom möjliga stegen.. Du skickar ett möjligt steg.

Server får steget du gick och kontrollerar att det är möjligt utifrån din senaste position. Och skickar ett okej eller nej du fick inte flytta dit.

SoMeOnEMedlem sedan nov. 200254 inlägg
#3

Vet inte riktigt ifall det sättet du säger finns som ett alternativ. Det går inte att kolla med servern 30 ggr/sec ifall det är okey att flytta. Det skulle bli allt för laggit. Jag funderar på att varie klient sköter sin egen gubbe själv och får de andra personernas position överskickades. Sen att servern ligger därimellan och försöker utföra allt det som klienterna säger att de gör och ifall den upptäcker att de försöker göra ngt som inte går, ska den rätta till det.

The_HulkMedlem sedan juni 20031 837 inlägg
#4

Ett sätt är att skicka förändringarna (t.ex. om du ändrarr hastighet, riktning eller skjuter) till servern. Du låter klienter utföra sina ändringar, servern svarar sen om det är OK eller inte. Är allt OK behöver klienten inte göra något men skulle det däremot vara fel får man hoppa tillbaka till den senaste rätta positionen. Vad som är rätt position kan både klienten och servern hålla reda på. Servern i sin tur skickar iväg förändringarna till alla andra klienter som påverkas av det. Klienter i sin tur ritar upp de andra tankarna i den hastighet och riktning de frått från servern.

NickemannenMedlem sedan aug. 20003 575 inlägg
#5

Ja självklart kan man göra så SoMeOnE, jag tänkte bara att det skulle finnas någon slags säkerhet som gör att någon med en egenmodifierad klient kan skicka sig själv vart som helst.

Men som du säger så räcker det att säga till servern när du flyttar dig.

Sedan kan du se till att servern distribuerar dom andra's pansarvagnarnas position, riktig och hastighet via udp.

SoMeOnEMedlem sedan nov. 200254 inlägg
#6

Det där är en annan sak som jag inte riktigt visste, jag har kört med tcp, kan det ha varit det som gjorde att allt laggade? hur stor skillnand är det mellan att skicka med tcp och udp? Ska försöka få ihop servern så jag har något att testa lite olika metoder. Ska testa att bygga det på udp den här gången. Det förra sättet jag försökte med krävde mer eller mindre att mottagaren fick varje paket så då gick det inte riktigt.

Tack iaf för alla tipsen. Kanske kommer få klart det här spelet till sist, 3:e försöket nu, allt omkådat från börjat. Första försöket var det första jag programerade i java så igentligen inte så förvånad att det laggade en del men när nästa också gjorde det... aja, nu ska det iaf lyckas.

The_HulkMedlem sedan juni 20031 837 inlägg
#7

tänk på att UDP inte har någon kontroll över att alla paket kommer fram.
Det går snababre att skicka med UDP men man måste själv sköta felkontrollen.

LimeMedlem sedan sep. 2001961 inlägg
#8

Ta och kika in på http://www.javagaming.org/forums/index.php?board=18.0 och på https://javagamenetworking.dev.java.net/

Där borde du kunna hitta en hel del samt finna lite inspiration och kanske lite bättre hjälp än här på WF.

SoMeOnEMedlem sedan nov. 200254 inlägg
#9

Tack för tipsen. jgn såg intressant ut. Kanske borde sätta mig in i det för att få ordning på det här.

130 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)