Roki Opublikowano 5 Czerwca 2009 Udostępnij Opublikowano 5 Czerwca 2009 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. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Nobody Opublikowano 5 Czerwca 2009 Udostępnij Opublikowano 5 Czerwca 2009 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 ). Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 5 Czerwca 2009 Autor Udostępnij Opublikowano 5 Czerwca 2009 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... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawidds Opublikowano 6 Czerwca 2009 Udostępnij Opublikowano 6 Czerwca 2009 Na pewno wywal burfferencrypt/bufferdecrypt. Do takiego ponga jest to kompletnie niepotrzebne... Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Roki Opublikowano 6 Czerwca 2009 Autor Udostępnij Opublikowano 6 Czerwca 2009 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> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę