Re: [GAME] Dead Arena - ONLINE
Posted: Sun Apr 08, 2012 12:36 am
Por si a alguien le interesa...
Una forma de crear disparos en red muy sencilla consiste en dejarlos creados de origen y fuera de pantalla.. o fuera de scroll mejor dicho.. entonces desde el proceso de nuestro jugador:
[Codebox=gemix file=Untitled.gemix] //--------------------------UPDATE NET POSITION---------------------------------------
players[net.player_id].x_ = x; // mi coordenada X..
players[net.player_id].y_ = y; // mi coordenada Y..
players[net.player_id].graph_ = net_graph_; // mi gráfico..
players[net.player_id].flags_ = net_flags_; // mi flags..
if(exists(id_my_shot)) // Si existe mi disparo..
players[net.player_id].x_shot_ = id_my_shot.x; // envio su posición..
players[net.player_id].y_shot_ = id_my_shot.y; // envio su posición..
players[net.player_id].angle_shot_ = id_my_shot.angle; // envio su angle..
players[net.player_id].graph_shot_ = id_my_shot.graph; // envio su gráfico..
else // si no existe mi disparo..
players[net.player_id].x_shot_ = -100; // mando a las replicas de mi disparo en los otros clientes fuera del scroll..
players[net.player_id].y_shot_ = -100; // mando a las replicas de mi disparo en los otros clientes fuera del scroll..
end
//------------------------------------------------------------------------------------[/Codebox]
En todos los clientes por el simple hecho de estar conectados 3 clientes por ejemplo, existirán sus disparos y estarán fuera del scroll de juego, entonces si en un cliente se dispara.. se envian los datos del disparo a la estructura de red.. y si el disparo no existe, se le pasan unas coordenadas fuera de scroll.. así nos ahorramos toda la movida de crear y destruir entidades.
Un truco interesante vaya..
Por si a alguien le pica la curiosidad, la estructura de red que estoy usando es esta:
[Codebox=gemix file=Untitled.gemix]typedef
type playerdata
byte item_list_[31]; // lista de 32 bits que apunta a los objetos en red..
byte event_;
byte bit_;
int x_; // cord. X del jugador..
int y_; // cord. Y del jugador..
byte flags_;
byte graph_; // gráfico del jugador..
byte healt_;
byte mana_;
byte in_combat_;
int x_shot_; // cord. X del disparo del jugador..
int y_shot_; // cord. Y del disparo del jugador..
int angle_shot_;
byte graph_shot_; // gráfico del disparo..
int x_bomb;
int y_bomb;
byte collision_obj_list_; // Para informar de colisiones..
byte collision_shot_; // Para informar de que me ha alcanzado un disparo..
end[/Codebox]
Una forma de crear disparos en red muy sencilla consiste en dejarlos creados de origen y fuera de pantalla.. o fuera de scroll mejor dicho.. entonces desde el proceso de nuestro jugador:
[Codebox=gemix file=Untitled.gemix] //--------------------------UPDATE NET POSITION---------------------------------------
players[net.player_id].x_ = x; // mi coordenada X..
players[net.player_id].y_ = y; // mi coordenada Y..
players[net.player_id].graph_ = net_graph_; // mi gráfico..
players[net.player_id].flags_ = net_flags_; // mi flags..
if(exists(id_my_shot)) // Si existe mi disparo..
players[net.player_id].x_shot_ = id_my_shot.x; // envio su posición..
players[net.player_id].y_shot_ = id_my_shot.y; // envio su posición..
players[net.player_id].angle_shot_ = id_my_shot.angle; // envio su angle..
players[net.player_id].graph_shot_ = id_my_shot.graph; // envio su gráfico..
else // si no existe mi disparo..
players[net.player_id].x_shot_ = -100; // mando a las replicas de mi disparo en los otros clientes fuera del scroll..
players[net.player_id].y_shot_ = -100; // mando a las replicas de mi disparo en los otros clientes fuera del scroll..
end
//------------------------------------------------------------------------------------[/Codebox]
En todos los clientes por el simple hecho de estar conectados 3 clientes por ejemplo, existirán sus disparos y estarán fuera del scroll de juego, entonces si en un cliente se dispara.. se envian los datos del disparo a la estructura de red.. y si el disparo no existe, se le pasan unas coordenadas fuera de scroll.. así nos ahorramos toda la movida de crear y destruir entidades.
Un truco interesante vaya..
Por si a alguien le pica la curiosidad, la estructura de red que estoy usando es esta:
[Codebox=gemix file=Untitled.gemix]typedef
type playerdata
byte item_list_[31]; // lista de 32 bits que apunta a los objetos en red..
byte event_;
byte bit_;
int x_; // cord. X del jugador..
int y_; // cord. Y del jugador..
byte flags_;
byte graph_; // gráfico del jugador..
byte healt_;
byte mana_;
byte in_combat_;
int x_shot_; // cord. X del disparo del jugador..
int y_shot_; // cord. Y del disparo del jugador..
int angle_shot_;
byte graph_shot_; // gráfico del disparo..
int x_bomb;
int y_bomb;
byte collision_obj_list_; // Para informar de colisiones..
byte collision_shot_; // Para informar de que me ha alcanzado un disparo..
end[/Codebox]