Noticias

¡Ayuda a la Comunidad GM, haz una donación!

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Mensajes - Johann

Páginas: 1 2 3 4
1
Preguntas y respuestas / Re:Ficheros JSON
« en: Julio 14, 2019, 05:38:38 pm »
Los archivos JSON (javascript Object Notation) son archivos ligeros que se utilizan para el intercambio de datos, los cuales, por su estructura son fáciles de leer tanto para las personas como para las aplicaciones.
    Están construidas con dos estructuras basicas:

  • Una coleccion de pares del tipo nombre/valor. Lo que en Game Maker se conoce como un ds_map
(He aquí la razón de por qué te dijeron que uses JSON's con ds_maps)
  • Una lista ordenada de valores, conocidas en Game Maker como ds_list

Game Maker studio 2 cuenta con una funcion específica llamada json_decode(). Con esta funcion puedes decodificar una pieza de JSON y convertirla en un ds_map, para trabajarla entonces con Game Maker.

Como dato adicional, el fichero JSON es un archivo que es independiente del lenguaje, y se usa para modelar un objeto.
No sé si hayas trabajado antes con lenguajes "puros", si así puede decirseles, como C++/C/Java/Python/etc etecé XD
Pero mmm podrías tener algo como:
[gml]
objeto fantasma
solido = false
visible = true
[gml]
Que vendría a modelizar muy por encima un objeto de Game Maker. Entonces si quisiéramos por alguna razón hacer un JSON escribiríamos:

Código: [Seleccionar]
{
      "nombre": "fantasma",
      "solido": false,
      "visible": true
}
Nótese que lo que vendría siendo el nombre de las variables vá entre comilla, sustituiríamos el signo de igual = por los dos puntos : y que se separan con comas ,
También se pueden poner valores como array dentro de un JSON, e incluso otro JSON como campo de éste.(o que es lo mismo, un JSON dentro de una "variable").

No sé cuál es la máxima utilidad de tu Game_save(), pero yo a efectos prácticos usaría un text file, guardando por linea cada dato útil. Luego simplemente los recuperaría ciclicamente.

Saludos! :)

edit:
 XD me olvidé de dejar la página maestra donde explica todo, en spanish, detallado:
https://json.org/json-es.html
Los siguientes usuarios dieron las gracias a este tema: Johann

2
Juegos en desarrollo / Re:Kkunna 3D Engine (GMK/GMX/EXE)
« en: Julio 02, 2019, 05:01:58 am »
He subido una nueva versión en el post inicial en  :GM8: y ahora estoy creando una versión para  :GMS:
Los siguientes usuarios dieron las gracias a este tema: Johann

3
Preguntas y respuestas / Re:IA en multijugador online
« en: Julio 01, 2019, 04:25:42 pm »
En un principio, el servidor podría ser quien gestiona la IA y manda las actualizaciones a los clientes. Si uncliente se desconecta no pasa nada, ahora si el servidor se muere, logicamente todos los jugadores dejarán de poder jugar. Lo usual, basicamente.
La fornma en que se deberia estructirar es 1 sevidor y n clientes. No el usual cliente/servidor que a la vez que juega administra, dentro del mismo proceso, al servidor. deberían estructuralmente ser procesos distintos dentro de la misma maquina si se quiere, o en otra aparte.
eso si, el servidor tiene que tener una conexion buena para administrar los datos entrantes, esto en cuando a capacidad de carga y descarga que tenga la red de internet. Y por otro lado, un procesador que se banque , justamente el procesamiento de los datos... que claro, es tambien lo usual, basicamente.
La idea de transmitir datos es dejarlo en la minima expresion, me acuerdo cuando trabajaba con una user de acá con la 39DLL, ésta traia funciones para enviar determinados tipos de datos, cuya abstraccion era proxima a C, y los tipos de datos a manipular eran tan pequeños que llegaban a 8bit, de los cuales si se operaban de forma optima podias usarlo como un 8 bits sin signo, lo cual le da más margen para representar datos.
nosotros lo que haciamos era, usar uno de 16bits sin signo y al menos en GM8 las instancias tenian la forma aproximada de: 100513, obviavamos el 100 inicial, metiamos la id dentro de los 2bytes y dentro de eso poniamos unos cuantos numeros extras que indicaban el socket de donde provenia el mensaje, y una accion extra, codificada claro, para indicar si tenia que destruirse, moverse, o algo por el estilo.
Y bueno un montonaaaaazo de optimizaciones extra como que el servidor era quien mapeaba el nivel, hacia una lista con los objetos que se podian llegar a destruir y los mapeaba. Luego los movia/destruia segun llegaba la orden o se procesaba. Para ls elementos que se movian solos, por ejemplo plataformas moviles, eso lo administraban los clientes. En el peor de los casos, si alguno se llegaba a desincornizar lo que haciamos era un promedio entre las posiciones de todos estos elementos y los actualizabamos, lo cual a veces hacia que se pegara un lagazo cada q se conectaba alguien, pero era lo que habia xD

Un monton de cosas pueden pasar dependiendo de lo que requiera tu juego, qué cosas hacen falta sincronizar y que otras no, o lo minimo.
Pero siempre tratando de enviar al server o a los clientes, una cantidad de datos que sea optimo y rapido.Para no generar ese cuello de botella. Y aqui es donde entra la cuestión de usar UDP, además.
Los siguientes usuarios dieron las gracias a este tema: Johann

4
Hola! pueden bajarse el juego GRATIS, hasta el 1 de julio.

https://directshift.itch.io/rabbits-quest

saludos!
Los siguientes usuarios dieron las gracias a este tema: Johann

5
Preguntas y respuestas / Re:GAME MAKER 1.4 Y ARQUITECTURA 64 BITS
« en: Junio 17, 2019, 10:55:48 pm »
Uuuuuh eso no cuenta como piratilla? xD

Y pirata porque?
Todos pagamos la licencia
yoyo ya no da soporte (por lo que se puede considerar abandoware)
Y no se esta modificando el codigo fuente, solo se ponen y quitan archivos
Los siguientes usuarios dieron las gracias a este tema: Johann

6
Juegos completos / Re:Lab 23 [Windows]
« en: Mayo 28, 2019, 04:19:01 am »
Si bien yo no programé mucho (más que todo lo mio fue algunos sprites, los sonidos y la musica) dirigí el proyecto, tyranus hizo practicamente todo o mejorando lo que yo iba haciendo.

La idea o el concepto de usar el mouse como un "joystick" vino porque en esa época yo tenía un nintendo wii y estaba alucinando con los controles por movimiento, pensar que en la mano en vez de tener un mouse era un mando de wii dió pie a todas estas ideas que hicieron la diferencia del resto de participantes que recurriendo a usos más comunes u obvios.

Nunca terminé un juego de los montones de prototipos que mostraba, y ver esto me ha hecho recordar todos estos años intentando hacer algo y nunca llegar a nada, ¿y si realmente lo mío es producir/dirigir juegos en vez de programarlos? Me lo estoy pensando ahora xD

Gracias por rescatar este pedacito de mi adolescencia e inmortalizarlo tanto acá como portearlo para android.
Los siguientes usuarios dieron las gracias a este tema: Johann

7
Preguntas y respuestas / Re:Limitacion en modo de movimiento diagonal
« en: Mayo 25, 2019, 08:10:00 pm »
Eso sucede porque cuando el movimiento es diagonal, las componentes de movimiento vertical y horizontal valen (ambas) 4, que al sumarse dan como resultado un número mayor (4√2).

Para corregir esto, deberías hacer lo siguiente:
///EVENTO STEP

//Primero, consigues las componentes del movimiento como lo haces normalmente:
var hmove = keyboard_check(vk_right) - keyboard_check(vk_left);
var vmove = keyboard_check(vk_down)  - keyboard_check(vk_up);

//Segundo, calculas el ángulo que forman ambas componentes entre sí
var angle = point_direction(0, 0, hmove, vmove);

//Tercero, multiplicas el valor de la velocidad por las componentes del ángulo.
var hvel = abs(hmove) * vel * dcos(angle);
var vvel = abs(vmove) * vel * dsin(angle);
//(se multiplica también por "abs(hmove)" para evitar que haya movimiento cuando no se está presionando la tecla)

//Cuarto, mueves el objeto
x += hvel;
y -= vvel;
Los siguientes usuarios dieron las gracias a este tema: Johann

8
Juegos completos / Re:My Chemical Simulator Lite
« en: Mayo 15, 2019, 04:02:19 am »
debo ser la peor persona con conocimientos de química, no pude hacer ninguna reacción!., pero he de decir que esta interesante el juego y se ve que es de mucha ayuda para estudiantes de química, la música es relajante , y la interfaz es fácil de aprender, te felicito , este tipo de juegos son de gran utilidad.
Los siguientes usuarios dieron las gracias a este tema: Johann

9
Juegos completos / Re:My Chemical Simulator Lite
« en: Abril 28, 2019, 07:59:36 am »
Me gustó el concepto del juego, aunque es complicado de hacerque el gameplay mantenga enganchado a alguien si no tiene muchas referencias de como hacer las cosas. En este caso serías más bien saber de química más que nada.

Emmm... errores menores, sería que en la version en español hay un error ortografico en un botón dice: tabla peridica (le falta la o).
Sugerencias, bueno, cambiaría el color de la fuente en los botones de los menú, puesto que al tener un fondo blanco/azul medio se pierde :P

Yo le colocaría un atlas de elementos que se vayan desbloqueando como el tipico personaje silueta negra con un "?". Mas que nada para que el jugador tenga referencia al menos,de cuántos elementos se puede formar en total. Porque así como está la tabla podría crecer sin referencia, eso sin mencionar de que si uno no es bueno en esto de la quimica al intentar tantas combinaciones posibles y no lograr nada, podría llegar a pensar que ya no hay mas para desbloquear.

Otro erro quizá u observacion es el depth de los enlaces formados, a mi parecer, deberían coincidir y no solaparse. (Imagen adj)

Los siguientes usuarios dieron las gracias a este tema: Johann

11
Te invito a que primero (primero bienvenido y te invito a que conozcas las reglas de la comunidad) le pegues una buena revisada a nuestra sección de artículos, ojalá desde lo mas antiguo hacia lo mas reciente, allí hay valiosos consejos que han sido fruto de la acumulación de experiencia de la comunidad en el desarrollo de vieojuegos en general y en particular con Game Maker.
Lo primero que hice nada mas registrarme es leer bien las reglas de la comunidad y antes de postear nada estuve viendo las reglas de posteo de cada sección para saber donde y como poner las preguntas.  :P

En cuanto a los artículos estuve viendo algunos por encima y desde luego me van a venir genial cuando me centre en alguna cosa en concreto pero hasta donde pude ver no se cubría el aspecto de como enfrentarse a un proyecto desde 0 y por eso abrí el hilo.

Muchas gracias por la bienvenida y por el tiempo dedicado a leer y responder mi pregunta :D
Los siguientes usuarios dieron las gracias a este tema: Johann

12
Preguntas y respuestas / Re:no se si alguien pueda ayudarme
« en: Marzo 09, 2019, 03:48:30 am »
Bueno amigo hay varias cuestiones.

Uno, no deberias pedir a la gente que mire tu ejecutable y te arregle el problema. Primero porque es cansador, uno abre el proyecto de otro, que está programado de cierta manera y tiene masomenos ponerse en los zapatos para ver como es que funciona internamente.
Segundo, porque así no aprendés realmente cómo de arregla el error o como y porqué se produce.
Pero si aún te interesa saber como se adjunta un archivo, acá esta la solucion:
https://www.comunidadgm.org/propuestas-y-soporte/191c243mo-agrego-un-archivo-(-imagen-audio-demos-juegos-)-en-el-foro/

Dos, no deberías copiar y pegar codigos porque si. Primero porque no se aprende nada si no se lo analiza y entiende. Y segundo porque no todos los codigos son universales, cada uno tiene una manera de hacer las cosas y probablemente no sea compatible uno con el otro.

Tres, al momento de preguntar deberías colocar el código dentro del post para hacer más claro el problema. Primero porque se resuelve mas facilmente la duda al tener el problema puntualmente indicado donde falla y mejor si explicas lo que intentas hacer y como intentaste implementarlo. Segundo porque en un futuro, gente que tenga el mismo problema va a poder ver el problema/la solucion sin tener que navegar por todo el editable.

Todo esto te lo digo con el afan de que aprendás realmente a programar con GM, y para que los demas usuarios futuros se ayuden de la solucion concreta.
Los siguientes usuarios dieron las gracias a este tema: Johann

13
Preguntas y respuestas / Re:GAME MAKER 1.4 Y ARQUITECTURA 64 BITS
« en: Marzo 08, 2019, 04:21:32 pm »
Eso es lo que dice la norma, pero yo no hablo de la norma, sino de la excepción que plantea la norma, que es:

Los siguientes usuarios dieron las gracias a este tema: Johann

14
Preguntas y respuestas / Re:GAME MAKER 1.4 Y ARQUITECTURA 64 BITS
« en: Marzo 07, 2019, 07:52:13 pm »
Hola makeros:

Corregidme si me equivoco pero me ha parecido leer que la "deadline" de agosto de 2019 para las apps creadas con GM 1.4, NO se aplica si no targeteas para Android 9??
Es decir, que podrías seguir subiendo APKs de 32, más allá de esa fecha?
Los siguientes usuarios dieron las gracias a este tema: Johann

15
Preguntas y respuestas / Re:Sumar inputs del teclado
« en: Marzo 01, 2019, 06:58:01 am »
Hola cristopher2545! Le podés aplicar álgebra booleana.

Lo que querés hacer es lo que haría la puerta lógica "AND". En álgebra booleana esto se expresa de esta forma:
Con dos valores:
A * B = B * A
O con tres valores
(A * B) *C = A * (B * C) = A * B * C

Aplicándolo a lo que querés hacer vos quedaría así:
//Las teclas las definís vos según tu necesidad
var tecla_a = keyboard_check(tecla);
var tecla_b = keyboard_check(tecla);
var tecla_c = keyboard_check(tecla);

//Primer caso (TECLA A + TECLA B = salto)
if (tecla_a * tecla_b){
    //Ejecutar un script de salto
    salto();
}

//Segundo caso (TECLA A + TECLA B + TECLA C = sprintar)
if (tecla_a * tecla_b * tecla_c){
    //Ejecutar un script de sprint
    sprint();
}

Lo que sucede es que, al presionar las teclas, las variables se actualizan a 1. Y al soltar, a 0.
Suponé que estás presionando las teclas "a" y "b":
if (tecla_a * tecla_b *tecla_c) {...}
//Es igual que:
if (1 * 1 * 0) {...} //1 * 1 * 0 = 0, que es false
Se tiene que presionar las 3 teclas al mismo tiempo para que ese evento se ejecute.

Te recomiendo que leas información sobre álgebra booleana. Este tema aplicado a la programación es muy útil.
Los siguientes usuarios dieron las gracias a este tema: Johann

Páginas: 1 2 3 4