2 registered members (Ayumi, 1 invisible),
584
guests, and 1
spider. |
Key:
Admin,
Global Mod,
Mod
|
|
|
Traffic (GER)
#302357
12/18/09 21:03
12/18/09 21:03
|
Joined: Sep 2002
Posts: 1,065 Germany, Jena, Thüringen
3D_Train_Driver
OP
Serious User
|
OP
Serious User
Joined: Sep 2002
Posts: 1,065
Germany, Jena, Thüringen
|
Hallo! Ich hab mal kurz ne Traffic-Frage. Was hab ich wohl verkehrt gemacht? Habe eine kleine MP-Anwendung, einmal mit -sv -cl und einmal mit -cl gestartet. Funktioniert auch alles super, wenn da nicht so unheimlich viel Traffic auf dem Server wäre und ich weiß nicht wo er herkommt. Spielfigur kann laufen, rennen und sich drehen.
dplay_bps sagt beim Clienten was zwischen 8 und 12. (halt ich für normal). Sobald ich auf dem Clienten loslaufe, steigt dplay_bps auf dem Server auf 3000 - 4000 an.
Da haut definitiv was nicht hin. Wäre für ein paar Tips dankbar.
MfG
|
|
|
Re: Traffic (GER)
[Re: 3D_Train_Driver]
#302364
12/18/09 21:42
12/18/09 21:42
|
Joined: Jun 2006
Posts: 2,640 Earth
Germanunkol
Expert
|
Expert
Joined: Jun 2006
Posts: 2,640
Earth
|
ich denke dafür brauchen wir code. So wie sich das anhört schickst du jeden frame die position. Das darfst du nicht machen. du darfst sie nur alle 0,25 sekunden (oder noch weniger, je nach spiel-typ) schicken, und musst zwischen den updates auf den anderen clienten interpolieren bzw vorrausberechnen, wo es wahrscheinlich ist, dass die person hinläuft. (also in die gleiche richtung weiter, oder gleich weiterdrehen etc).
~"I never let school interfere with my education"~ -Mark Twain
|
|
|
Re: Traffic (GER)
[Re: 3D_Train_Driver]
#302733
12/21/09 18:13
12/21/09 18:13
|
Joined: Sep 2002
Posts: 1,065 Germany, Jena, Thüringen
3D_Train_Driver
OP
Serious User
|
OP
Serious User
Joined: Sep 2002
Posts: 1,065
Germany, Jena, Thüringen
|
Jemand ne Lösung parat? Mir fehlt dazu etwas Erklärung im Manual, oder ich verstehe es einfach nicht. Die Animationszustände werden gesandt und die Spielfiguren animieren alle auf allen Klienten richtig. Nur mit dem Bewegen will es einfach nicht klappen. Die Variable player.force_x wird versandt und die Entities bewegen sich nur auf dem Server. Auf den Klienten siehts dank dplay_entrate=8; wie eine Diashow aus.
function move_me(){
...
...
...
my.turnspeed=15;
my.speed=8;
while(1){
my.pan += my.force_x * my.turnspeed * time;
my.dist_x = my.force_y * my.speed * time;
my.dist_y = 0;
my.dist_z = 0;
c_move(my,my.dist_x,nullvector,glide + ignore_passable);
wait(1);}
}
function spieler_erstellen(){
player=ent_create(name_spielermodell,temp,move_me);
}
function keyboardinput(){
while (1){
if (player){
force_x_old = player.force_x; //store old force values
force_y_old = player.force_y;
player.force_x = 0;
player.force_y = 0;
if ((key_w == 1)||(key_cuu == 1)){player.force_y = 1;}
if ((key_a == 1)||(key_cul == 1)){player.force_x = 1;}
if ((key_d == 1)||(key_cur == 1)){player.force_x = -1;}
if ((key_s == 1)||(key_cud == 1)){player.force_y = -1;}
if (key_shift == 1){player.force_y *= 1.5;player.force_x *= 1.5;}
if(player.force_x != force_x_old || player.force_y != force_y_old){
if(connection==2||connection==3){
send_skill(player.force_x,SEND_VEC);
}
}
}
wait(1);
}
}
Dann wohl doch mit Code. MfG
|
|
|
Re: Traffic (GER)
[Re: 3D_Train_Driver]
#302777
12/22/09 01:51
12/22/09 01:51
|
Joined: Nov 2002
Posts: 913 Berlin, Germany
SchokoKeks
User
|
User
Joined: Nov 2002
Posts: 913
Berlin, Germany
|
das sieht für mich nach mehreren problemen aus: 1. move_me() wird durch das ent_create nur auf dem server ausgeführt. du müsstest es mit proc_local(...) noch auf den clients starten. 2. keyboardinput läuft zwar (vermutlich) auf den clienten und auf dem server, aber der input wird durch die if-abfrage mit connection == 2 oder 3 nur gesendet, wenn es auf dem sever läuft. das könnte natürlich auch absicht sein. füge mal bei dem send_skill(..) noch SEND_ALL zu SEND_VEC hinzu,also:
send_skill(player.force_x,SEND_VEC | SEND_ALL);
dannach sollte schonmal der spieler vom server bei allen richtig laufen. was die animationen angeht, die sehen zwar wohl momentan korrekt aus, aber früher oder später wirst du um traffic zu sparen NOSEND_FRAME für die entitys aktiviere müssen und die animationen auch lokal handhaben müssen. Ich weiß nicht ob das bei dir überhaupt ein problem ist, da reicht der code nicht aus, aber trotzdem: Was die steuerung der entitys der clienten angeht, so musst du deren force erst mit SEND_VEC zum server senden, der wiederum dann diese mit SEND_VEC | SEND_ALL zu den anderen clienten weitersendet, natürlich solltest du sie nur senden wenn sich die werte auch verändert haben. wenn du noch fragen hast, einfach fragen. -SchokoKeks
|
|
|
Re: Traffic (GER)
[Re: SchokoKeks]
#303945
01/03/10 22:57
01/03/10 22:57
|
Joined: Sep 2002
Posts: 1,065 Germany, Jena, Thüringen
3D_Train_Driver
OP
Serious User
|
OP
Serious User
Joined: Sep 2002
Posts: 1,065
Germany, Jena, Thüringen
|
Hi Schokokeks! Ein gesundes, neues Jahr 2010! Nein, es hat nichts gebracht mit dem SEND_ALL. Ich habe es zumindest hinbekommen, dass der Client selbst sich auf dem Clienten-PC bewegen kann. Nun "hüpfen" aber alle anderen Clienten alle halbe Sekunde weiter (dplay_entrate = 8;). Hm.... Hatte eine Scriptvorlage genutzt. Doch dort ist dplay_entrate=0;. Daher werden alle Clienten immerzu aktualisiert.
Kann doch jetzt nicht so schwer sein, denk ich mal.
Grüße
|
|
|
Re: Traffic (GER)
[Re: Tobias]
#306775
01/24/10 20:32
01/24/10 20:32
|
Joined: Sep 2002
Posts: 1,065 Germany, Jena, Thüringen
3D_Train_Driver
OP
Serious User
|
OP
Serious User
Joined: Sep 2002
Posts: 1,065
Germany, Jena, Thüringen
|
Na, wenn es kein Problem ist, dann kann es mir ja sicher ein jeder erklären. Mehrere Projekte basieren bereits auf den mir bekannten Tutorials. Nur leider kommt in keinem mir bekannten Tutorial drin vor, dass man durch setzen von dplay_entrate=4 oder 8 oder eben größer als 1 eine Unmenge an Traffic einspart. Mit dplay_entrate=1 haut ja auch alles supi hin. Nur nützen mir 7000 bps für 3 Spieler sehr wenig. Das Problem liegt eher darin, dass scheinbar trotz dplay_localfunction=2; und proc_local... offensichtlich immer nur die Figur des Klienten sich richtig verhält. Alle Figuren, die nicht zum Klienten gehören, werden von der Engine nur "geupdatet". Noch Vorschläge?
|
|
|
|