Entiendo, muchas gracias por la información. Como experimento es interesante para ver funcionar una red por internet pero lamentablemente no me parece práctico ni razonable pedirle a un jugador que haga todo ese trabajo. Bueno, creo que tendré que conformarme con poder implementar una red local... :'(
Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.
271
Preguntas y respuestas / Re:Conexión entre cliente y servidor mediante internet
Agosto 01, 2015, 06:35:36 AM272
Preguntas y respuestas / Re:Conexión entre cliente y servidor mediante internet
Agosto 01, 2015, 06:07:45 AM
Mmm... sólo probé desactivando el firewall pero no he desactivado toda la seguridad del modem... es bastante más complejo de lo que esperaba. Me pregunto cómo lo harán los programas comerciales para lidiar con todo eso.
273
Preguntas y respuestas / Conexión entre cliente y servidor mediante internet
Agosto 01, 2015, 05:53:56 AM
Tengo una duda con las capacidades de networking de GMS. Haciendo pruebas logro conectar un servidor con un cliente en una red local, pero no lo consigo a través de internet. Para este último caso la IP del servidor que uso es la pública. ¿Habrá que tomar alguna precaución especial distinta a la hora de crear una conexión por internet? ¿Alguien conoce algún ejemplo de engine con networking que funcione a través de internet?
274
Preguntas y respuestas / Re:Evento para diferentes objetos
Agosto 01, 2015, 05:39:50 AM
Cuando hablas de tener varios enemigos, ¿te refieres a varios objetos distintos que representan enemigos (y no más de una instancia por objeto), o a varias instancias del mismo objeto enemigo? En el primer caso lo más simple es recurrir a parents mientras que en el segundo tienes que identificar la instancia precisa que toca a tu player, usando por ejemplo instance_place.
275
Preguntas y respuestas / Re:Instancia reactivada no reconocida como tal
Agosto 01, 2015, 05:25:01 AMCita de: Yoo en Julio 31, 2015, 03:48:20 PM
PUEDE QUE ESTO AYUDE XD :
http://docs.yoyogames.com/source/dadiospice/002_reference/objects%20and%20instances/instances/deactivating%20instances/index.html
(google traductor)
Gracias por responder, Yoo. Sin embargo, ya tenía considerado lo que dice el manual sobre la desactivación/reactivación de instancias.
Cita de: penumbra en Julio 31, 2015, 08:22:39 PM
De acuerdo a este post http://gmc.yoyogames.com/index.php?showtopic=632755&p=4790529
después de reactivar una instancia, estando todavía en el mismo STEP de reactivación, la función instance_exists SÍ REPORTA que esa instancia existe nuevamente, pero GMS todavía tiene problemas para acceder a esa instancia mediante with. Pareciera que la reactivación "total" de instancias no se completa del todo sino hasta el siguiente STEP. Quizás haya otra razón, pero la desconozco.
No estoy seguro de que esto mismo ocurre ne tu juego, pero de ser así, entonces sería necesario esperar o retrasar el acceso a esa instancia hasta el siguiente STEP.
Penumbra, me parece que lo que dices que está pasando es lo más probable. No me cabe en la cabeza otra explicación para ese comportamiento tan ilógico. Lamentablemente el esperar hasta el siguiente step para usar la instancia reactivada no es una opción así que en vez de desactivarla ignoro todos sus eventos usando una variable en ella que llamé "activa" que puede tomar valores true o false y según ello escapar del código para cada evento.
276
Preguntas y respuestas / Instancia reactivada no reconocida como tal
Julio 31, 2015, 07:45:26 AM
Tengo un problema con el siguiente código que puse en el evento destroy de un objeto:
Me arroja el siguiente error:
___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Destroy Event
for object o_menu_red:
Unable to find any instance for object index '4'
at gml_Object_o_menu_red_DestroyEvent_1 (line 10) - o_selector.x=0;
############################################################################################
El objeto o_selector lo desactivé anteriormente y luego lo reactivé desde otra instancia antes de ejecutar el código que indiqué, pero GMS parece no reconocer su existencia. Si no reconoce que existe, ¿cómo es posible que el código se haya ejecutado siquiera dada la condición if que está antes? Sospecho que algo tiene que ver el hecho de que fue recién reactivada pero no entiendo por qué.
Código [Seleccionar]
if instance_exists(o_selector)
o_selector.x=0;
Me arroja el siguiente error:
___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Destroy Event
for object o_menu_red:
Unable to find any instance for object index '4'
at gml_Object_o_menu_red_DestroyEvent_1 (line 10) - o_selector.x=0;
############################################################################################
El objeto o_selector lo desactivé anteriormente y luego lo reactivé desde otra instancia antes de ejecutar el código que indiqué, pero GMS parece no reconocer su existencia. Si no reconoce que existe, ¿cómo es posible que el código se haya ejecutado siquiera dada la condición if que está antes? Sospecho que algo tiene que ver el hecho de que fue recién reactivada pero no entiendo por qué.
277
Preguntas y respuestas / Re:Problema con network_create_server
Julio 29, 2015, 07:06:38 PM
Gracias por responder penumbra. La verdad es que descubrí que cometí un error. El objeto o_servidor que se encarga de crear y destruir el socket del servidor es persistente y en su evento destroy destruye el socket mediante network_destroy, por lo que al inicio del juego destruyo cualquier instancia de ese objeto que pudiera quedar antes de crear otra nueva y así gatillar su evento destroy. Pensé que eso era suficiente, pero no caí en cuenta de que reiniciando el juego con game_restart incluso los objetos persistentes son removidos del juego, por lo que su evento destroy nunca es disparado. Por eso es que nunca se ejecutaba realmente el código para destruir el socket. Así que ahora lo que hago es destruir la instancia de o_servidor antes de hacer game_restart en vez de después y ahora funciona a la perfección. Espero que le sirva a alguien esta experiencia para que no le pase lo mismo con objetos persistentes cuando se reinicia el juego con game_restart.
278
Preguntas y respuestas / Problema con network_create_server [Solucionado]
Julio 29, 2015, 05:30:40 AM
Hola, resulta que estoy estudiando las funciones de GMS para crear conexiones cliente/servidor y hasta ahora pensé que lo había logrado: consigo crear un servidor y un cliente y comunicarlos. Cuando reinicio el juego destruyo el servidor con network_destroy antes de volver a crear otro. Sin embargo, cuando trato de crearlo por segunda vez usando el mismo puerto, la función network_create_server falla. Y esto pasa solamente cuando tenía previamente un cliente conectado, es decir, si creo un servidor y lo destruyo antes de que un cliente se conecte, no tengo problemas en crear el servidor otra vez, pero si tenía un cliente conectado (incluso si ese cliente luego desaparece) entonces no puedo crear otra vez el servidor. Logré descubrir que si en el segundo intento de crear el servidor cambio a otro puerto entonces funciona, es decir, pareciera que el puerto que usé con el primer servidor cuando lo creé quedó "tomado"y no fue liberado con network_destroy. ¿Será que hay que hacer algo además de usar network_destroy para liberar el puerto, o será otro el problema?
279
Preguntas y respuestas / Re:Tipo reloj
Julio 25, 2015, 06:24:31 PM
Parecen más bien oscilaciones en 90º que 180º.
¿Cómo estás abordando el problema? ¿El reloj es un sprite con esa forma o lo dibujas con funciones de dibujo de GMS?
Si el reloj es un sprite, una forma de hacerlo es así:
Create:
Step:
Esto es con el supuesto de que el sprite del reloj tiene su origen en el extremo desde donde cuelga su cordel.
¿Cómo estás abordando el problema? ¿El reloj es un sprite con esa forma o lo dibujas con funciones de dibujo de GMS?
Si el reloj es un sprite, una forma de hacerlo es así:
Create:
Código [Seleccionar]
d=45;//ángulo máximo
a=0;//ángulo
inc=0.1;//incremento del ángulo (radianes)
Step:
Código [Seleccionar]
image_angle=d*sin(a);
a+=inc;
Esto es con el supuesto de que el sprite del reloj tiene su origen en el extremo desde donde cuelga su cordel.
280
Preguntas y respuestas / Re:Escala fija en pantalla completa para evitar autozoom
Julio 25, 2015, 05:36:24 PM
Supongo que estás probando con tu propio display. Para facilitar el análisis de tu problema, ¿podrías indicar lo siguiente?
-Las dimensiones de tu display
-Las dimensiones del room
-Si ejecutas el juego en full screen y tienes activado keep aspect ratio en Global Game Settings
También podrías probar el no usar views y ver si en pantalla completa sigues teniendo el mismo grado de deformación.
EDIT: ¡vaya que rápido fuiste para probar! Me alegro que ahora te funcione.
-Las dimensiones de tu display
-Las dimensiones del room
-Si ejecutas el juego en full screen y tienes activado keep aspect ratio en Global Game Settings
También podrías probar el no usar views y ver si en pantalla completa sigues teniendo el mismo grado de deformación.
EDIT: ¡vaya que rápido fuiste para probar! Me alegro que ahora te funcione.
281
Preguntas y respuestas / Re:Escala fija en pantalla completa para evitar autozoom
Julio 25, 2015, 05:23:25 PM
Creo que tu idea es correcta (y en eso discrepo con penumbra): si el tamaño de la view y el tamaño del port son iguales entonces no debe existir ningún tipo de escalamiento de la imagen. De hecho, cuando yo quiero crear efectos de zoom o deformación lo que hago es justamente hacer diferentes esos tamaños. Creo que tu error va por otro lado. Mencionaste que tus rooms no son todos iguales en dimensiones y eso es algo que debe ser evitado. Como dice penumbra, la application surface comienza siendo del tamaño de tu primer room (o view, si usas views) y luego no se ajusta automáticamente a los nuevos tamaños de tus rooms o views a menos que tú la cambies manualmente con surface_resize. Si es el caso, tienes que igualar el tamaño de la application surface con el tamaño de la view.
282
Juegos en desarrollo / Re:Ilíada Espacial
Julio 22, 2015, 08:08:07 PMCita de: Lufor en Julio 22, 2015, 07:44:42 PMCita de: Marth en Julio 22, 2015, 05:03:32 PMNo tanto en juegos que no permiten el uso de mandos, mas bien lo que hace es simular/engañar al juego o programa haciéndole creer que lo que tienes conectado es un mando de Xbox360.
¿Emulador?¿Te refieres a que el jugador se instale uno de esos programas para usar gamepads en juegos que no permiten el uso de mandos?
En cualquier caso, esperó el día 26 corregir los defectos y subir otra actualización.
Una de las características de un buen juego es entregar las mayores facilidades al jugador para poder interactuar en él. No creo que sea el mejor camino decirle al jugador que se instale un emulador de gamepad de XBOX 360 en vez de nosotros usar las funciones que pone GMS a nuestra disposición para leer cualquier mando. Como sugerencia, lo ideal es detectar primero si un gamepad moderno está conectado mediante la función gamepad_is_connected y si es así utilizar las funciones gamepad; en caso contrario, confirmar que existe un joystick conectado mediante joystick_exists y luego utilizarlas funciones joystick.
283
Preguntas y respuestas / Re:Crear objetos a cierta distacia del personaje
Julio 22, 2015, 07:50:56 PMCita de: Iros en Julio 22, 2015, 06:28:19 PM
Podes usar la función "distance_to_object();" quedándote algo más o menos así:
[gml]
if (distance_to_object(objPlayer) > 50) { //Si la distancia entre el objeto y el personaje es mayor a 50 pixeles.
instance_deactivate_object(this); //Se desactiva el objeto.
} else { //De lo contrario, si la distancia entre el objeto y el personaje es menor a 50 pixeles.
instance_activate_object(this); //activamos el objeto.
}
[/gml]
No te conviene borrar y crear ya que bajaría el performance, te conviene más activar y desactivar las instancias ya que de esta forma se consume menos memoria.
Desactivar las instancias que no interesa que interactúen en el juego es una buena forma de hacerlo, pero hay que tener cuidado con el hecho de que una instancia desactivada no puede reactivarse a sí misma. Para evitar esto puedes poner esto en una alarma del personaje para que se ejecute cada cierto número de steps a tu gusto:
Código [Seleccionar]
instance_deactivate_all(true);//desactiva todas las instancias excepto el jugador
instance_activate_region(x-a,y-a,2*a,2*a,true);//activa las instancias en un cuadrado de lado "a" en torno al jugador
Si quieres ocultar sólo cierto tipo de instancias y en un radio del jugador en vez de en un cuadrado, puedes usar esto:
Código [Seleccionar]
instance_activate_all();//activa todas las instancias
with tipo
{
if distance_to_object(other)>d
instance_deactivate_object(id);//desactiva las instancias del objeto "tipo" que distan más de "d" del jugador
}
284
Preguntas y respuestas / Re:Sprites en Saltos y Caminar
Julio 22, 2015, 02:55:50 PM
Te sugiero que pruebes primero el tutorial por defecto que trae GM8. Con un poco de búsqueda en google o youtube encontrarás muchos tutoriales paso a paso, por ejemplo https://www.youtube.com/watch?v=LdzIq-HF-fo
285
Preguntas y respuestas / Re:Duda con screenshot y RAM
Julio 21, 2015, 02:13:05 AM
screen_save guarda en un archivo .png la ventana de juego. ¿cargas ese archivo a un sprite y luego lo dibujas en la pantalla? Depende de lo que estés haciendo puede ser que aumente el consumo de ram; tal vez no estás destruyendo esa imagen una vez sales de la pausa. No lo he probado pero tal vez una forma más eficiente de hacerlo es usando la surface application_surface en vez de generar un archivo con screen_save.