Estoy trabajando en un juego donde varios jugadores deberían poder jugar a la vez. Es un juego 2D
, y todos los personajes deberían poder verse en la pantalla. Al igual que el juego, ahora todos los dispositivos solo publican y traen los demás coordinates
a un servidor. Esto se hace mediante la ejecución de subprocesos:Programación de juegos multijugador
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();
}
De todos modos, me gustaría que los personajes a desplazarse con más facilidad, ya que puede ser un poco "laggy"
hacerlo así this.Does Alguien tiene una idea sobre cómo puedo conseguir este objetivo ?
Tal vez debería tener un tipo de pila de coordenadas que simplemente recibe las coordenadas insertadas todo el tiempo y luego muestra los valores a medida que se ejecuta el juego?
Cualquier ayuda será muy apreciada.
¡Saludos!
Gracias, parece que la interpolación lineal puede ayudar. Encontré un ejemplo en ese http://www.racer.nl/tech/multiplayer.html – Araw
Hace maravillas, te sorprenderá :) –
Cómo suena esta idea: Estoy usando interpolación lineal y determino cuántos marcos debe moverse cada vez que se actualiza la pantalla. Por lo tanto, si (me centraré solo en la coordenada X para este ejemplo), la coordenada previa fue 40 (la ubicación que el personaje tiene en la pantalla ahora), la actual es 60 (donde el personaje debería moverse), y el frameupdate interval es 5 coordenadas para cada actualización. Esto significa que recibiré 4 (4 * 5) actualizaciones antes de que el personaje llegue a 60. Así que solo agregaré estos movimientos a una lista de eventos para el personaje dado y la parte "lenta" desaparecerá virtualmente :) – Araw