Saludos, estoy creando un juego Online para Android y hasta ahora todo bien, los jugadores se conectan y se mueven perfecto. El problema es a la hora de disparar, al presionar el botón de disparo, la bala sólo se muestra en el servidor y no a los clientes. O sea, cuando disparo, la bala solamente la puede ver la persona que creó el server, aun siendo yo quien haya disparado la bala. Creo que me he explicado bien, si no entienden me dicen y trato de explicar mejor. Como soluciono esto? Agradecería cualquier aporte, gracias.
Estoy con el mismo problema y nadie ha podido responderme, en mi caso solo la ve la persona que pulsa la tecla de la bala, ya sea servidor o cliente, pero el servidor no ve la del cliente ni el cliente la del servidor.
De todos modos ahora he dejado el 39dll a un lado y estoy usando las funciones que vienen en GMS, te recomiendo este tutorial:
http://www.comunidadgm.org/articulos/(programacion)hacer-un-juego-multijugador-online-con-game-maker-studio-ver2/ (http://www.comunidadgm.org/articulos/(programacion)hacer-un-juego-multijugador-online-con-game-maker-studio-ver2/)
Pero yo no estoy usando 39ll, estoy usando las funciones nativas de GMS, o sea Networking. De todos modos, si encuentras alguna forma de solucionar este problema me avisas por favor.
yo no sé programar networking, pero lo que sí sé es que la base es enviar a cada momento la localización de la bala al servidor y después el servidor enviar esos datos a cada cliente... los cóodigos ya no sé, pero si han estado practicando deberían saberlo, digo yo... respondo pk ya es el 3er tema que leo que no os responden :/
esta semana ando mucho con networkin, creo que va de la siguiente manera,
networkin es mandarse informacion de uno a otro,
tienen que mandarse sus cordenadas, osea sus posiciones, para que el otro pueda crear un objeto y ponerlo en el mismo lugar que los daos lo indican eso no sucede solo con los player, tambien con cualquier objeto que se cree en el mapa, a veces no es necesario mandar la direccion y o ubicacion solo es necesario que mande la señal al objeto que ya tiene en su programacion crear esa bala,
un ejemplo mas conciso y simple, 2 jugadores en red el player 1 y player 2,
ambos objetos son iguales, y llevan consigo una variable que se llama disparo, que va a estar en false, y que al ponerse en tru debe disparar en la direccion que el player esta apuntando.
claramente no es necesario amndar la informacion posicion de la bala velocidad y todo eso, solo tienen que mandar la variable disparo=true, para que el objto player 2 la reciva y active su accion de disparar, .....
espero no haberles enredado tanto, un saludo
tanto el server como el cliente tiene que recivir información de esa bala y no la has añadido por eso no se ve
Cita de: josesito1432 en Febrero 01, 2016, 07:25:35 AM
esta semana ando mucho con networkin, creo que va de la siguiente manera,
networkin es mandarse informacion de uno a otro,
tienen que mandarse sus cordenadas, osea sus posiciones, para que el otro pueda crear un objeto y ponerlo en el mismo lugar que los daos lo indican eso no sucede solo con los player, tambien con cualquier objeto que se cree en el mapa, a veces no es necesario mandar la direccion y o ubicacion solo es necesario que mande la señal al objeto que ya tiene en su programacion crear esa bala,
un ejemplo mas conciso y simple, 2 jugadores en red el player 1 y player 2,
ambos objetos son iguales, y llevan consigo una variable que se llama disparo, que va a estar en false, y que al ponerse en tru debe disparar en la direccion que el player esta apuntando.
claramente no es necesario amndar la informacion posicion de la bala velocidad y todo eso, solo tienen que mandar la variable disparo=true, para que el objto player 2 la reciva y active su accion de disparar, .....
espero no haberles enredado tanto, un saludo
He entendido lo que has querido decir, pero tengo una duda, cómo hago para enviar esa información de la bala y que el otro playera pueda verla? O sea, qué códigos hay que usar? Agradecería mucho tu ayuda y gracias por responder. :D
se me ocurre lo siguiente:
OPCION #1:
cuando el cliente cree una bala genera un objeto bala en el cliente y ponle un id o algo con lo que la identifiques, no la muevas por el momento de esto se encargara el server, incluso la puedes poner hasta invisible,
cuando el server reciba esa info, el servidor creara otro objeto bala, le asigna el id le cambia el estado a visible = true y te regresa la posicion
si el cliente recibe esa la posicion de esa bala ( osea con ese id ), le cambias el valor a true y en cada step vas recibiendo las nuevas coordenadas de dicha bala hasta que impacte con algo o desaparesca.
OPCION #2
envias al server el comando de crear bala, el server crea la bala, la hace visible en donde este la punta de la pistola y cuando recibas la respuesta del server, todos los clientes debend e crear un nuevo objeto bala, hacerlo visible y que siga las coordenadas que indica el server en cada step, hasta que se pierda o colisione con algo.
me podrias compartir tu proyecto para ver como haces los servidores y clientes, me interesa mucho aprender de eso, quiero hacer algo similar pero siento que me falta aprender mas cosa, espero haberte dado la idea.
Entiendo eso, pero lo que no sé es que codigo y/o eventos debo usar para hacer esas funciones, si podrías ayudarme en eso seria un gran aporte :').
Ahí te adjunto mi proyecto para que le eches un ojo y me ayudes, por favor.
He abierto tu proyecto asi por encima con el movil y ahy un cacao tienes muchos scrips
Y es sencillo agregar una bala deberias edtudiar mas el networking ahora te paso tuto manual
https://drive.google.com/file/d/0B4cR3S8865zrM3l6UTgyeVZLeWc/view?usp=docslist_api
Tan sencillo es? Pero aún no comprendo muy bien como va todo. Entenderia mejor con algún ejemplo, si me ayudaras con eso estaría muy agradecido, por favor sólo necesita un ejemplo y ya de ahí me guió para todo lo demás.
El ejemplo viene ya con los jugadores
Lo mismo que el player tienes que poner de la bala
Si tengo tiempo are video ejemplo va ser que no
Pero hice con la bala lo mismo que con los jugadores, pero tengo un problema y es que la bala solo puede verla la persona que creó el servidor, aunque sea un cliente quien haya disparado la bala, aún la sigue viendo solo el que creó el servidor. Cómo arreglo esto?
Tenemos OClient, oServer y OPlayer.
El OClient es un cliente mudo que envía pulsaciones de tecla al servidor, y atraerá a todos los sprites el servidor envía de vuelta.
oServer es el controlador; se conectará / desconectar a los clientes, crear nuevos jugadores ya que vienen en (y asignarlos a un identificador de socket), y enviar todos los sprites a todos los clientes conectados.
OPlayer es igual que lo fue en un solo jugador del juego (en este caso), excepto que ya no se comprueba directamente llaves, pero una serie de claves del servidor rellena cuando se pone pulsaciones de teclas desde el cliente.