Merko Skrevet 7. mars 2007 Del Skrevet 7. mars 2007 Hei. Driver for tiden på med et lite PingPong spill, ikke noe avansert. Det jeg holder på med nå er en slags 2-player sak som funkgerer over nettet. F.eks at du har en kammerat du vil spille mot. Jeg bruker winsock til dette, og da jeg sender info posisjon av Ballen osv så blir det "Overflow". Sender ut for mye en det winsock klarer. Er det noen måter man kan endre dette? Jeg bruker en timer til å sende ut dataen, men om jeg setter opp interval for mye blir det på en måte dårlig FPS siden den mottar posisjon treigt. Er det noe annet en winsock som kan brukes som støtter litt fart? Takk. Lenke til kommentar
Jonas Skrevet 7. mars 2007 Del Skrevet 7. mars 2007 (endret) Det finnes flere teknikker for dataoverføringer, men det er spesielt en du kansje bør prøve ut. Det går enkelt og greit ut på å sende en retnings-verdi sammen med posisjon, slik at begge klienter kan regne ut den andre spillerens neste posisjon, før neste data har kommet frem. (Posisjon-verdiene har da kun en praktisk funksjon om en av spillerene skifter retning) På den måten får du et mye "glattere" spill. Endret 7. mars 2007 av Jonas Lenke til kommentar
GeirGrusom Skrevet 7. mars 2007 Del Skrevet 7. mars 2007 Desverre er jeg ikke så kjent med WinSock kontrollen, brukte den aldri. Men jeg kan forestille meg at den har en flush kommando. Jeg ville heller ikke brukt timer. Sånn jeg ville laget det, var å bruke Timer() til å få tak i hvor mye ballen eller spillerne skal bevege seg. Private ball_ax As Point Private Static time_passed As Double Public Sub GetTimePassed() Static Dim old_time As Double Dim new_time As Double new_time = Timer() time_passed = IIf(old_time != 0, new_time - old_time, 1.0) old_time = new_time; End Function Public Sub MoveBall() As Point Dim new_ballpos As Point new_ballpos.X = ballpos.X + ball_ax.X * time_passed new_ballpos.Y = ballpos.X + ball_ax.Y * time_passed If Intersects(Player1Brick, new_ballpos) Or Intersects(Player2Brick, new_ballpos) Then ball_ax.X = -ball_ax.X End If If new_ballpos.Y < 0 Or new_ballpos.Y > Screen.Height - ballsize.Height Then ball_ax.Y = -ball_ax.Y End If ballpos = new_ballpos End Sub Public Sub UpdateClient() ' Denne funksjonene trenger ikke bli kalt så ofte, siden hver maskin skal være mer eller mindre oppdatert. Send(ballpos) Send(player1pos) Send(player2pos) End Sub Lenke til kommentar
Merko Skrevet 7. mars 2007 Forfatter Del Skrevet 7. mars 2007 Hmmm.. Takk for svar, skal google litt og se på saken Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå