Noticias

Se ha publicado un nuevo servicio, el Portal de Juegos Online

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 ... 5
1
Preguntas y respuestas / Re:Cómo lograr un "Hola mundo"?
« en: Noviembre 16, 2019, 08:03:41 pm »
Aquí hay algunas ideas para programar un intérprete de GML
https://yal.cc/interpreters-guide/
Los siguientes usuarios dieron las gracias a este tema: Johann

2
Preguntas y respuestas / Re:Quiero volver a pedir su ayuda.
« en: Noviembre 08, 2019, 03:48:25 pm »
Vamos compañero, no cuesta nada comprobar un script por tu cuenta e intentar entender cómo trabaja.

Piensa en lo siguiente: en el mundo de la programación existen miles y miles de trucos, efectos y formas de hacer las cosas, por lo que es imposible poder siempre encontrar ejemplos precisos para lo que uno busca hacer (y que además sea compatible con tu juego). Entonces la mejor forma de aprender es investigando conceptos, en este caso por ejemplo de ¿qué son las surfaces y cómo trabajan? o ¿cómo se utilizan los scripts?

Y una vez que entras en el mundo, aprenderás y si tienes dudas de algo en específico, puedes preguntarlas.

Y por último, no pusiste qué versión de game maker usas, como mencionas gmk parece que usas gm8 así que el script que te dieron quizás ni siquiera sea compatible, como ves es de gran importancia ser específico para poder ayudarte mejor.
Los siguientes usuarios dieron las gracias a este tema: Johann

3
Preguntas y respuestas / Re:como saber que mi gamemaker es pirata?
« en: Noviembre 05, 2019, 06:12:42 am »
como puedo saber si mi gamemaker es pirata es que realmene no se si mi gamemaker es pirata o no.
Si tienes dudas de si es pirata o no, está claro: definitivamente es pirata  XD
Los siguientes usuarios dieron las gracias a este tema: Johann

4
Cuando aplicás la cuenta del Yoyo con la key del Game Maker Studio, tenés que ir al Game Maker y entrar por la cuenta, no por la key.
Los siguientes usuarios dieron las gracias a este tema: Johann

5
Preguntas y respuestas / Re:Información De Las Surfaces
« en: Octubre 01, 2019, 08:09:03 pm »
holis (?
amigo, las surfaces sirven para dibujar. Estuve por ahi leyendo que querés aplicarlas a una entrada de texto... hmm desde ya, usar surfaces no es la mejor manera. Ni la optima. Lo suyo seria manejar con funciones de cadena.

ahora, las surfaces como bien dice el amigo de arriba, son para dibujar, es como un lienzo. Y ahi podes hacer varios efectos combinando funciones que alteran el mezclado, por ejemplo par ahacer un sprite totalmente blanco o sacarle los colores a un sprite y dejarlo blanco y negro, o hacer el efecto de congelado. Un montonazo de cosas, pero tiene un cierto coste tanto de memoria como de procesamiento dependiendo ya de que tan vergas te pongás con el efecto.
hoy por hoy existen los shaders, que sirve tambien para aplicar efectos de dibujo y es más optimo. Pero asi tambien, lleva un poco de complejidad manejarlas.

bueno, las funciones basicas que necesitas saber para crear  y dibujar una surface son:

surface_crate(ALTO, ANCHO)-> crea una surface con el alto y ancho indicado. Osea, crea un lienzo de tal tamaño para poder dibujar en el. Cabe destacar que uno no vé directamente lo que se dibuja sino que lo hace a traves de codigo.
Otra cosa notables es que la surface tiene posicion absoluta, osea, siempre aparece en la coordenada 0,0. Esto hay que tenerlo en cuenta a la hora de dibujar
surface_free(SURFACE)-> esto borra la surface, es imprescindible borrar la surface si no se usa mas, porque ocupa memoria RAM, si no se borra se iría acumulando hasta que explote la pila de memoria y haga overflow.
surface_set_target(SURFACE)-> esta funcion pone a SURFACE como blanco de dibujo. Osea, todo el codigo de dibujo que siga despues de esta funcion, se aplica encima de la surface.
Ejemplo:

surf = surface_create(200,200); //se crea el lienzo de 200x200
surface_set_target(surf); //colocamos la surface para que las funciones de dibujo le afecten
draw_set_text(20, 20, "hola amigos de youtube!"); //la posicion es absoluta
surface_reset_target();
surface_reset_target(); -> hace que las secuencias de dibujo dejen de aplicarse a la surface antes definida con surface_get_target, y entonces las funciones de dibujo se aplican normalmente en la pantalla del juego

eso seria lo mas facil para comenzar a dibujar algo.
A grandes rasgos es como usar el evento draw solo que en un lienzo acotado :)
de ahi hay hartos efectos que le podes poner, pero bueno, eso pa otro tutorial(?
Los siguientes usuarios dieron las gracias a este tema: Johann

6
Preguntas y respuestas / Re:Como se pasa de json_decode a tener 2 arrays
« en: Septiembre 10, 2019, 04:31:28 am »
Según EL MANUAL, la función json_decode() devuelve un mapa con una única entrada: "default".

Dentro de dicha entrada se almacena toda la información. Si el JSON es un arreglo (lo sabes porque está escrito de la forma [a, b, c, ...]), entonces la función convierte los datos en una lista; y si el JSON es un objeto (lo sabes porque está escrito de la forma {a:b, c:d, ...}), entonces la fución convierte los datos en otro mapa.



En el caso de las consultas SQL, el JSON suele ser algo así:
Código: [Seleccionar]
[
    {
        "nick":"keponem",
        "sc":"255"
    },
    {
        "nick":"olakase",
        "sc":"78"
    },
    {
        "nick":"jejeje",
        "sc":"15"
    },
    {
        "nick":"jejejeee",
        "sc":"0"
    },
    {
        "nick":"tytyty",
        "sc":"0"
    },
    {
        "nick":"Sobako",
        "sc":"0"
    }
]

Como puedes apreciar, se trata de un arreglo "grandote" que contiene un objeto "chiquito" en cada índice, así que la función lo convertiría a algo así:



Por tanto, si quieres recorrer todos los mapas"chiquitos" que están en  la lista "grandota", entonces primero debes acceder al mapa "grandotote":
var res = json_decode(result); //obtener mapa grandotote
var dat = res[? "default"]; //Acceder a la llave "default"  del mapa grandotote

//En dat ahora se ha guardado la lista grandota, así que ahora vamos a recorrerla

var nicktable, sctable;
var obj;
for(var i = 0; i < ds_list_size(dat); i++) {
    obj = dat[| i]; //acceder al mapa chiquito de la lista grandota ubicado en la posición i
    //guardar cada propiedad en su respectivo arreglo
    nicktable[i] = obj[? 'nick'];
    sctable[i] = obj[? 'sc'];
}

Todo se resume en leer EL MANUAL, como te dije en Discord.

PD: Debes colocar en el post el ícono de la versión de GM que estás usando.
Los siguientes usuarios dieron las gracias a este tema: Johann

7
Preguntas y respuestas / Re:Problema con lineas de tiempo
« en: Septiembre 07, 2019, 11:33:19 pm »
para lo que pusiste en el post no hace falta timelines, ya te dije cómo xd
Los siguientes usuarios dieron las gracias a este tema: Johann

8
Noticias / Re:¡Discord test!
« en: Septiembre 03, 2019, 06:16:08 pm »
A mi me ha salido bastante útil para tener la notificación de cuando responde a un tema que me interesa.
Los siguientes usuarios dieron las gracias a este tema: Johann

9
Preguntas y respuestas / Re:Optimización del dibujado en 3D
« en: Septiembre 03, 2019, 12:48:34 am »
Dixon eso es solo un modelo hecho de un cubo para simular un skybox en donde configure visualmente la figura del cubo invirtiendo las caras y repitiendo la textura de las estrellas 10 veces con Model Creator (by Maarten Baert).
Pense que conocias ese tipo de archivo  :-[
Que es el md_skybox.gmmod?




Clamud lei una parte en el foro de yoyo el cual un usuario explica lo que se traga todo el rendimiento es: el procesamiento de estar dibujando en tiempo real demasiados poligonos y la memoria de video o algo asi es la que se cae en rendimiento y por ello sucede lo mismo que vemos al crear 100 estructuras por separado de un edificio en lugar de optimizarlo uniendo esas piezas y dibujarlo en un solo modelo. Las funciones de dibujos son rapidas, el costo de procesamiento es calcular a tiempo real cada poligono en distancia y cada textura, por eso se crean los modelos lo que hacen es tener eso listo ya para rellenarlo de una textura que seria menos procesamiento.
ej: Si en la vida real quieres hacer la figura de un circulo moneda o lo que sea en una hoja blanca manualmente sin ningun molde te costara hacerlo mientras que teniendo un molde solo subrayas lo que ya te indica la figura (el circulo en este ejemplo se dibuja mas rapido con un molde que dibujarlo sin molde). No se como explique espero que se entienda
Las funciones d3d_draw_* siempre son lentas, es mejor crear un modelo con código o cargarlo desde un archivo.
Usar un formato personalizado con vertex buffers es más óptimo, pero más difícil de implementar.
Los siguientes usuarios dieron las gracias a este tema: Johann

10
Acabas en la cárcel, si.

Los de Steam tienen un radar super avanzado, que permite analizar juegos y saber si han sido desarrollados con algún software pirata.

Asi que, ojito.
Los siguientes usuarios dieron las gracias a este tema: Johann

11
Noticias / Re:¡Discord test!
« en: Agosto 29, 2019, 05:08:44 pm »
(Esto sólo es una prueba para verificar el correcto funcionamiento del WebHook de Discord)
Los siguientes usuarios dieron las gracias a este tema: Johann

12
Noticias / ¡Discord test!
« en: Agosto 29, 2019, 05:06:43 pm »
A partir de ahora, la actividad que se realice en los siguientes foros de la ComunidadGM se registrará en el chat de Discord oficial:

  • Noticias
  • Preguntas y respuestas
  • Juegos en desarrollo
  • Juegos completos

Actualmente toma en cuenta tanto temas nuevos como respuestas a estos, me gustaría leer sus comentarios, ya que con cierta actividad quizás el bot pueda llegar a resultar algo molesto; O quizás lo ideal sería que el bot publique en un canal dedicado y no en #chat-general.
Los siguientes usuarios dieron las gracias a este tema: Johann

13
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

14
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

15
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

Páginas: 1 2 3 ... 5