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]
[GAME] Dead Arena - ONLINE
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: [GAME] Dead Arena - ONLINE
AVANCES:
- Ya están implementados los jugadores, ya pueden entrar hasta 10 players al mundo online..
- Ya están implementados los disparos, cada jugador puede disparar por el mundo.. ya se replican los disparos con identificador del player que los ha creado..
- Ya funcionan los eventos básicos de colisión con objetos del mundo..
- Ya funciona el sistema día/noche que oscurece la pantalla en función de la hora del servidor..
- Decorados del escenario casi completados..
Yo creo que en breve podremos hechar unos tiros contra los monstruos.. todavía me queda la IA de los malos.. y la IA del boss del evento.. que eso va a ser el hueso duro de programar.. pero por ahora me no me he atrancado en nada.. así que esto avanza a buen ritmo.
- Ya están implementados los jugadores, ya pueden entrar hasta 10 players al mundo online..
- Ya están implementados los disparos, cada jugador puede disparar por el mundo.. ya se replican los disparos con identificador del player que los ha creado..
- Ya funcionan los eventos básicos de colisión con objetos del mundo..
- Ya funciona el sistema día/noche que oscurece la pantalla en función de la hora del servidor..
- Decorados del escenario casi completados..
Yo creo que en breve podremos hechar unos tiros contra los monstruos.. todavía me queda la IA de los malos.. y la IA del boss del evento.. que eso va a ser el hueso duro de programar.. pero por ahora me no me he atrancado en nada.. así que esto avanza a buen ritmo.
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- SimulatorOne
- Posts: 6626
- Joined: Tue Nov 17, 2009 2:52 pm
- Location: Barcelona
- Contact:
Re: [GAME] Dead Arena - ONLINE
si se entiende perfectamente 
yo tambien hago algo parecido.
aun que grupo los BYTES en un Array, en vez de tenerlos 1 a 1 sueltos.
me da que si declaras BYTE a un varaible, te lo considera de 4bytes realmente, no de 1.
en cambio si se crea un Array de tipo BYTE
BYTE MI_DATOS[3]; //Esto son 4 bytes , de 4 valores.
no estoy 100% convencido de que la STRUCTURA o TYPEDEF, te coga esos BYTES en variables, como 1BYTE.
si no te los utiliza como 4Bytes.
mira, mi STRUCT: el actual:
[Codebox=gemix file=Untitled.gemix]STRUCT JUG_NET[TOP_JUG_NET];//0=SERVER, 1,2,3...=JUGNET.
short XY[1];//COORDENADAS (4BYTES) -32768/32767
BYTE GFAL[3];//GRAPH,FLAGS,ALPHA,ANGLE+45 (4 BYTES) 0/255
STRING CMES_S[top_STRNET];//COMANDOS 16 BYTES (PARA SERVIDOR)
STRING CMES_C[top_STRNET];//COMANDOS 16 BYTES (PARA CLIENTE)
STRING CHAT_S[top_STRNETC]; //CHAT 48 BYTES (PARA SERVIDOR)
STRING CHAT_C[top_STRNETC+1];//CHAT 49 BYTES (PARA CLIENTE)
DWORD LOGCHAT;//NUMERO DE CHAT 4bytes(control de chat)
END[/Codebox]
si te fijas en las 2 primeras: short XY[1]; y BYTE GFAL[3];
uso aarrays para agrupar esos Bytes, los que necesito.
no confio de que usandolo de este metodo:
[Codebox=gemix file=Untitled.gemix]STRUCT JUG_NET[TOP_JUG_NET];//0=SERVER, 1,2,3...=JUGNET.
short X//COORDENADAS (2BYTES) -32768/32767
short Y;//COORDENADAS (2BYTES) -32768/32767
BYTE G;//GRAPH (1 BYTES) 0/255
BYTE F;//FLAGS (1 BYTES) 0/255
BYTE A;//ALPHA (1 BYTES) 0/255
BYTE L;//ANGLE+45 (1 BYTES) 0/255
STRING CMES_S[top_STRNET];//COMANDOS 16 BYTES (PARA SERVIDOR)
STRING CMES_C[top_STRNET];//COMANDOS 16 BYTES (PARA CLIENTE)
STRING CHAT_S[top_STRNETC]; //CHAT 48 BYTES (PARA SERVIDOR)
STRING CHAT_C[top_STRNETC+1];//CHAT 49 BYTES (PARA CLIENTE)
DWORD LOGCHAT;//NUMERO DE CHAT 4bytes(control de chat)
END[/Codebox]
teoricamente deberia aceptarlas taal y cuaal, sus BYTES correspondan:
[Codebox=gemix file=Untitled.gemix]STRUCT JUG_NET[TOP_JUG_NET];//0=SERVER, 1,2,3...=JUGNET.
short X//COORDENADAS (2BYTES) -32768/32767
short Y;//COORDENADAS (2BYTES) -32768/32767
BYTE G;//GRAPH (1 BYTES) 0/255
BYTE F;//FLAGS (1 BYTES) 0/255
BYTE A;//ALPHA (1 BYTES) 0/255
BYTE L;//ANGLE+45 (1 BYTES) 0/255
...
[/Codebox]
y si no los corresponde? y si me los trata como 4bytes?
[Codebox=gemix file=Untitled.gemix]STRUCT JUG_NET[TOP_JUG_NET];//0=SERVER, 1,2,3...=JUGNET.
short X//COORDENADAS (4BYTES) -32768/32767
short Y;//COORDENADAS (4BYTES) -32768/32767
BYTE G;//GRAPH (4 BYTES) 0/255
BYTE F;//FLAGS (4 BYTES) 0/255
BYTE A;//ALPHA (4 BYTES) 0/255
BYTE L;//ANGLE+45 (4 BYTES) 0/255
...
[/Codebox]
Que derroche de bytes de 4bytes no???
A mi me da miedo que me trate asi los BYTES/short en variables de 4bytes, y no en 1Byte o 2Bytes.
Ya te digo que no estoy 100% seguro de que te Envie/reciba esos paquetes JUSTO con esos Bytes de informacion.
Y yo me siento mas seguro usando Arrays o STRINGS
Sabias que si cualquier valor del registro de un Cliente o servidor, es modificaado, un bit....
esta se envia TODO el Registro al Servidor, y esta rebota hacia los Clientes.
Es importante compactar lo maximo posible esos BYTES de la STRUCT, y contra menos cambios de datos tenga mejor....
yo tambien hago algo parecido.
aun que grupo los BYTES en un Array, en vez de tenerlos 1 a 1 sueltos.
me da que si declaras BYTE a un varaible, te lo considera de 4bytes realmente, no de 1.
en cambio si se crea un Array de tipo BYTE
BYTE MI_DATOS[3]; //Esto son 4 bytes , de 4 valores.
no estoy 100% convencido de que la STRUCTURA o TYPEDEF, te coga esos BYTES en variables, como 1BYTE.
si no te los utiliza como 4Bytes.
mira, mi STRUCT: el actual:
[Codebox=gemix file=Untitled.gemix]STRUCT JUG_NET[TOP_JUG_NET];//0=SERVER, 1,2,3...=JUGNET.
short XY[1];//COORDENADAS (4BYTES) -32768/32767
BYTE GFAL[3];//GRAPH,FLAGS,ALPHA,ANGLE+45 (4 BYTES) 0/255
STRING CMES_S[top_STRNET];//COMANDOS 16 BYTES (PARA SERVIDOR)
STRING CMES_C[top_STRNET];//COMANDOS 16 BYTES (PARA CLIENTE)
STRING CHAT_S[top_STRNETC]; //CHAT 48 BYTES (PARA SERVIDOR)
STRING CHAT_C[top_STRNETC+1];//CHAT 49 BYTES (PARA CLIENTE)
DWORD LOGCHAT;//NUMERO DE CHAT 4bytes(control de chat)
END[/Codebox]
si te fijas en las 2 primeras: short XY[1]; y BYTE GFAL[3];
uso aarrays para agrupar esos Bytes, los que necesito.
no confio de que usandolo de este metodo:
[Codebox=gemix file=Untitled.gemix]STRUCT JUG_NET[TOP_JUG_NET];//0=SERVER, 1,2,3...=JUGNET.
short X//COORDENADAS (2BYTES) -32768/32767
short Y;//COORDENADAS (2BYTES) -32768/32767
BYTE G;//GRAPH (1 BYTES) 0/255
BYTE F;//FLAGS (1 BYTES) 0/255
BYTE A;//ALPHA (1 BYTES) 0/255
BYTE L;//ANGLE+45 (1 BYTES) 0/255
STRING CMES_S[top_STRNET];//COMANDOS 16 BYTES (PARA SERVIDOR)
STRING CMES_C[top_STRNET];//COMANDOS 16 BYTES (PARA CLIENTE)
STRING CHAT_S[top_STRNETC]; //CHAT 48 BYTES (PARA SERVIDOR)
STRING CHAT_C[top_STRNETC+1];//CHAT 49 BYTES (PARA CLIENTE)
DWORD LOGCHAT;//NUMERO DE CHAT 4bytes(control de chat)
END[/Codebox]
teoricamente deberia aceptarlas taal y cuaal, sus BYTES correspondan:
[Codebox=gemix file=Untitled.gemix]STRUCT JUG_NET[TOP_JUG_NET];//0=SERVER, 1,2,3...=JUGNET.
short X//COORDENADAS (2BYTES) -32768/32767
short Y;//COORDENADAS (2BYTES) -32768/32767
BYTE G;//GRAPH (1 BYTES) 0/255
BYTE F;//FLAGS (1 BYTES) 0/255
BYTE A;//ALPHA (1 BYTES) 0/255
BYTE L;//ANGLE+45 (1 BYTES) 0/255
...
[/Codebox]
y si no los corresponde? y si me los trata como 4bytes?
[Codebox=gemix file=Untitled.gemix]STRUCT JUG_NET[TOP_JUG_NET];//0=SERVER, 1,2,3...=JUGNET.
short X//COORDENADAS (4BYTES) -32768/32767
short Y;//COORDENADAS (4BYTES) -32768/32767
BYTE G;//GRAPH (4 BYTES) 0/255
BYTE F;//FLAGS (4 BYTES) 0/255
BYTE A;//ALPHA (4 BYTES) 0/255
BYTE L;//ANGLE+45 (4 BYTES) 0/255
...
[/Codebox]
Que derroche de bytes de 4bytes no???
A mi me da miedo que me trate asi los BYTES/short en variables de 4bytes, y no en 1Byte o 2Bytes.
Ya te digo que no estoy 100% seguro de que te Envie/reciba esos paquetes JUSTO con esos Bytes de informacion.
Y yo me siento mas seguro usando Arrays o STRINGS
Sabias que si cualquier valor del registro de un Cliente o servidor, es modificaado, un bit....
esta se envia TODO el Registro al Servidor, y esta rebota hacia los Clientes.
Es importante compactar lo maximo posible esos BYTES de la STRUCT, y contra menos cambios de datos tenga mejor....
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: [GAME] Dead Arena - ONLINE
pues tienes la opción que rompe la compatibilidad con div que creo que se llama 'unit_size = 1', con eso 1 byte es 1 byte en memoria asegurado, pero también has de cambiar esto:
net.max_players = MaxConnections+1;
por: net.max_players = MaxConnections;
Y ya lo tienes
net.max_players = MaxConnections+1;
por: net.max_players = MaxConnections;
Y ya lo tienes
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- SimulatorOne
- Posts: 6626
- Joined: Tue Nov 17, 2009 2:52 pm
- Location: Barcelona
- Contact:
Re: [GAME] Dead Arena - ONLINE
yo uso el unit_size=1
para guardar y leer ficheros binarios con FOPEN,FWRITE,FREAD
para nada mas lo uso :S
para guardar y leer ficheros binarios con FOPEN,FWRITE,FREAD
para nada mas lo uso :S
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: [GAME] Dead Arena - ONLINE
Vídeo al inicio del post, en breve mas info sobre el proyecto.
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- SimulatorOne
- Posts: 6626
- Joined: Tue Nov 17, 2009 2:52 pm
- Location: Barcelona
- Contact:
- kozka
- Posts: 2111
- Joined: Sun Feb 01, 2009 9:36 pm
Re: [GAME] Dead Arena - ONLINE
ifa a mirar el video aqui desde el curro , tenemos el firewall desde alemania y al intentar ver el video me sale lo mismo que algunos videoclips y demas XD
mola
Sentimos comunicarte que este vídeo no está disponible en Alemania porque es posible que incluya contenido musical cuyos derechos musicales correspondientes no han sido concedidos por la GEMA.
Disculpa las molestias.
mola
Sentimos comunicarte que este vídeo no está disponible en Alemania porque es posible que incluya contenido musical cuyos derechos musicales correspondientes no han sido concedidos por la GEMA.
Disculpa las molestias.
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: [GAME] Dead Arena - ONLINE
Ostras.. eso no lo sabía, para los siguientes que suba lo tendré en cuenta, vaya tela..
Gracias por el aviso.
Gracias por el aviso.
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
- erkosone
- Posts: 10656
- Joined: Tue Feb 24, 2009 2:13 pm
- Location: Barcelona.
- Contact:
Re: [GAME] Dead Arena - ONLINE
Una Screen de como va quedando el tema..
2 Players, uno en modo defensivo con pompa de mitigar daño y el otro atravesado por una flecha con sangre XD..
2 Players, uno en modo defensivo con pompa de mitigar daño y el otro atravesado por una flecha con sangre XD..
You do not have the required permissions to view the files attached to this post.
http://iphonegamesdev.com/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
[GEMIX - VIDEO TUTORIALES] http://www.youtube.com/user/fasetconasa
http://gurugameprogramming.blogspot.com.es/
![[RETO]: [MINI CONCURSO] Winter GAMES 2011 [JUEGO]: Rosie ~ The Rascal [RETO]: [MINI CONCURSO] Winter GAMES 2011 [JUEGO]: Rosie ~ The Rascal](../space/silver_medal.png)