2012-03-29 18 views
5

Sto lavorando a un gioco in cui più giocatori dovrebbero essere in grado di giocare alla volta. È un gioco 2D e tutti i personaggi dovrebbero essere in grado di vedersi muoversi sullo schermo. Come il gioco ora tutti i dispositivi si limitano a postare e si prelevano a vicenda coordinates su un server. Questo viene fatto in esecuzione per le discussioni:Programmazione gioco multigiocatore

public void StartCoordinatorFetcherThread(final Sprite Object) 
{ 
    Thread CoordinateStarter = new Thread() 
    { 
     public void run() 
     {   
      while(true) 
      { 
       Object.testing = Object.InternetObject.GetMessages(); 
       try { 
        Thread.sleep(20); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    }; 
    CoordinateStarter.start(); 
} 

public void StartCoordinatorPosterThread(final Sprite Object) 
{ 
    Thread CoordinatePoster = new Thread() 
    { 
     public void run() 
     {   
      while(true) 
      { 
       Object.InternetObject.PostCoordinates(Object.x,Object.y); 
       try { 
        Thread.sleep(20); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
    }; 
    CoordinatePoster.start(); 
} 

In ogni caso, vorrei i personaggi di muoversi più agevolmente in quanto può essere un po '"laggy" farlo come this.Does Qualcuno ha un'idea su come posso raggiungere questo obiettivo ?

Forse dovrei avere un tipo di stack di coordinate che riceve sempre le coordinate push su di esso e poi apre i valori durante il gioco?

Qualsiasi aiuto sarà molto apprezzato.

Saluti!

risposta

2

Controllare i metodi di interpolazione/estrapolazione lineari per facilitare il movimento. http://en.wikipedia.org/wiki/Linear_interpolation

Ecco alcune risorse su come attuare molti degli algoritmi numerici in pratica http://www.nr.com/

Buona fortuna!

+0

Grazie, si presenta come l'interpolazione lineare può dare una mano. Trovato un esempio su questo http://www.racer.nl/tech/multiplayer.html – Araw

+0

Fa meraviglie, rimarrai stupito :) –

+0

Come suona questa idea: Sto usando l'interpolazione lineare e determino quanti fotogrammi che dovrebbe spostarsi ogni volta che lo schermo si aggiorna. Quindi, se (mi concentrerò solo sulla coordinata X per questo esempio) la coordinata precedente era 40 (la posizione che il personaggio ha ora sullo schermo), la corrente è 60 (dove il personaggio dovrebbe spostarsi) e intervallo frameupdate è 5 coordinate per ogni aggiornamento. Ciò significa che riceverò 4 (4 * 5) aggiornamenti prima che il personaggio abbia raggiunto i 60. Quindi aggiungerò queste mosse a una lista eventi per il personaggio dato e la parte "laggy" sarà praticamente scomparsa :) – Araw

Problemi correlati