Skocz do zawartości

Rekomendowane odpowiedzi

Opublikowano

Tworzę ping - ponga multiplayer, no i mam lagi! Dlaczego? Nie wiem...

Kod na odbiór:

GML
if(!global.host)exit;

while(1)

{

size = receivemessage(global.otherplayer);

if(size < 0)break;

if(size == 0)

{

show_message("Other player left the game, sorry.");

instance_destroy();

break;

}

bufferdecrypt(global.encryptionpass);

mid = readbyte();

switch(mid)

{

case 0:

objPongBat2.y = readshort();

objPongBat2.image_yscale = readshort()

break;

 

case 1:

objPongBall.x = readshort();

objPongBall.y = readshort();

break;

 

case 2:

global.jpkt = readshort()

break;

 

case 3:

global.hpkt = readshort()

break;

 

case 4:

show_message("Other player left the game, sorry.");

instance_destroy();

break;

}

}

Kod na wysyłanie jest prosty, czyści bufer, wysyła byte i sendmessage.

Opublikowano

Nie dziw się, jak prawdopodobnie informacje o pozycji wysyłasz co stepa. To jest nieoptymalne. Wysyłaj tylko, gdy pozycja się zmieni, a co do piłki - speed i direction ( również tylko po np. odbiciu ).

Opublikowano

Nie wysyłam x i y u gracza co step, tylko wtedy gdy się zmienia, a co do piłki to u hostera ustawia speed 9 i direction random, a potem w stepie piłki wysyła:

 

if(global.host)

{

clearbuffer();

writebyte(1); //message id for ball position

writeshort(x);

writeshort(y);

bufferencrypt(global.encryptionpass);

sendmessage(global.otherplayer);

}

 

 

Jak używać skryptu setnagle? Podobno to smooth connection...

Opublikowano

Ok, teraz nie ma lag :D

Może nie wielkie, ale i tak duża różnica. Mam teraz prośbe do kogoś kto się zna na php, potrzebuje tablice serwerów, a w Game Makerze mam taki kod na dodawanie:

 

GML
host = 'rokigames.yoyo.pl';

file = 'roki/pong/index.php?add$nick=' + nick + '&status' + argument0

 

request = tcpconnect( host, 80, 0 );

if( request )

{

setformat( request, 2 );

 

clearbuffer();

writechars( 'GET /' + file + ' HTTP/1.0' + chr( 13 ) + chr( 10 ) );

writechars( 'Connection: close' + chr( 13 ) + chr( 10 ) );

writechars( chr( 13 ) + chr( 10 ) );

sendmessage( request );

 

setformat( request, 1, ' ' );

 

clearbuffer();

length = receivemessage( request );

if( length )

{

if( string_pos( 'HTTP/', readchars( length - 1 ) ) == 1 )

{

length = receivemessage( request );

if( length )

{

code = readchars( length - 1 );

switch( code )

{

case '200':

draw_text(0,10, code + ':Server was added to list!');

break;

 

case '404':

draw_text(0,10, code + ':Page does not exist.' );

break;

 

default:

draw_text(0,10, code + ': Error.' );

}

 

}

else

draw_text(0,10, 'Can not connect to server.' );

}

else

draw_text(0,10, 'Can not connect to server.' );

}

else

draw_text(0,10, 'Can not connect to server.' );

 

closesocket( request );

}

else

draw_text(0,10, 'Can not connect to server.' );</span>

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...