Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

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 - Black_Cat

Páginas: 1 2 3 4
1
Lo que pasa es que en el caso solucion, la funcion dibuja una sola cadena, que es la que se está añadiendo caracter por caracter. Se limpia la pantalla y pasa al siguiente step.
Se dibuja un caracter mas, pero sigue siendo una sola cadena. Se limpia la pantalla y pasa al siguiente step, asi consecutivamente.

En el caso del for, dependiendo de cuantos ciclos haga el for, se va a ejecutar N veces por step. Por lo que si tenés un draw_string dentro del for, se va a dibujar N veces la misma cadena por step, lo cual desemboca en el efecto ese de negrita. Porque son muchos dibujos superpuestos.
Los siguientes usuarios dieron las gracias a este tema: renrojo

2
Preguntas y respuestas / Re:hit box
« en: Diciembre 05, 2019, 04:22:20 pm »
Si, Solamente tenes que activar la casilla de "mascaras de collision separadas" en las propiedades del sprite.
Y las modificas a mano una a una
Los siguientes usuarios dieron las gracias a este tema: BssString

3
Y bueno, ya que tenés la lista, usala para ver los valores
tomas la primer carta de la mano, y verificas si las otras 4 van en escalera, osea, va aumentando el valor en 1:
var carta;
carta = ds_list_find_value(mazo, 0)//la primer carta de la mano
if (ds_list_find_value(mazo,1) == carta+1) && (ds_list_find_value(mazo,2) == carta+2)
&& (ds_list_find_value(mazo,3) == carta+3) && (ds_list_find_value(mazo,4) == carta+4)
    global.poker = true
Notese la redundancia en el codigo, hasta se puede colocar dentro de un for. Pero bue, claridad, antes.

Y para verificar si es poker, tendrias que recorrer los primeros 5 elementos con un ciclo for, y una variable centinela, que indique que si 4 cartas son iguales, sea poker.
El codigo no lo escribo porque ya me voy a dormir XD pero no creo que sea muy dificil.
Los siguientes usuarios dieron las gracias a este tema: kaliman777

4
Preguntas y respuestas / Re:dibujar sprites desde un objeto cualquiera
« en: Noviembre 25, 2019, 12:39:01 pm »
Yo te recomiendo que primero lo penses y hagás con D&D y luego intentés extrapolarlo a GML.
Cambia cada accion en D&D por su equivalente a GML, para poder ir agarrandole la mano.

Porque  sino, o bien te puedo dejar un tocho de codigo, pero a lo mejor no entendés nada, y estaríamos en la misma.
Los siguientes usuarios dieron las gracias a este tema: AnaGM

5
Y, ponele que si. Supuestamente hay una funcion para eso:

buffer_get_surface(...)

Que convierte la surface en un buffer. De ahi, la mandás normalmente. Nunca intenté hacerlo.  :'(
Los siguientes usuarios dieron las gracias a este tema: KayasamiX

6
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

7
 XD

Goes to: https://enigma-dev.org
 Luego vas arriba donde pone Download, y vas a Windows.

Descargarlo es pava lo que si es un re quilombo es instalarlo, por lo menos en windows, tenés que tener mucha consideracion a la hora de saber si tu sistema operativo es de 64 o 32 bits. Para descargar Java de 32 o 64 bits, segun aplique. Y de instalar el MSYS2 de 32 o 64, segun aplique. Y de ahi descargar las dependencias, compilar, etc etc
Pero bueno seguí las instrucciones como dice la página, y todo va a ir joya

en linux es mas facil, es descargar y de instalarlo, la verdad sea dicha XD
Los siguientes usuarios dieron las gracias a este tema: dixon

8
Yo estuve probando una alternativa gratuita: Enigma
si no queres aprender a usar otro motor con un lenguaje robusto. Enigma es practicamente game maker, gratis
incluso es compatible con game maker de yoyogames

lo unico malo que le llego a ver yo, es que no tiene editor de sprites/background integrado pero meh, hay millones de alternativas para hacer graficos:
GIMP, paint.NET, pikopixel, JPixel, y ese de navegador que ahora no me acuerdo como se llama XD
otra desventaja es que no exporta a android todavia, pero es practicamente igual si vas a hacerlo con un game maker pirata xD
te lo recomiendo si queres estar libre de culpa a la hora de irte a dormir (? xd
Los siguientes usuarios dieron las gracias a este tema: Black7272

9
General / Re:Me presento y, continuo asi?
« en: Septiembre 02, 2019, 06:40:09 pm »
Y... a ver. Hay muchas cuestiones debatibles.
Primeramente, está bien usar un programa pirateado si no se puede pagarlo, lo usas para aprender, y luego cuando tengas la plata pagás la licencia del gms2. Ahora, lo que si estaría mal es vender juegos hechos con un software pirata y venderlos. Hasta ahora no sabemos que consecuencias tiene a efectos prácticos. Pero dentro del marco legal y moral, está mal, vamos xD sentido común tambien le dicen.

Ahora otro tema importante es hacia donde querés exportar, es sabido que GMS2 se fue de precio hace mucho, y no conviene como hobbista pagarse una licencia de GMS2 Android porque no es redituable a menos que saques muchisimos juegos y pagués la licencia y luego recien obtendrías las ganancias.

Caso extremo, de cambiarte a otro motor. Te lo recomiendo 100%, porque si estas aprendiendo recien a hacer juegos, empezar con un motor no va a contar el costo de tiempo y esfuerzo.
Hay muchas razones para cambiarse de game maker, desgraciadamente hoy en dia, son mejores alternativas porque:
1) son gratis
2) tienen más potencial, practicamente en todo: 3d(fisicas, oclusion ambiental por ejemplo postprocesado, soporte para varios formatos de modelo), fisicas, animacion, opciones de renderizado tanto 2D y 3D
3) los modulos para exportacion son gratis, no tenes que ir comprandolos aparte uno a uno, vienen juntos

Motores gratis hay varios, unity y godot por ejemplo que los use y recomiendo.
Los siguientes usuarios dieron las gracias a este tema: Black7272

10
Preguntas y respuestas / Re:Arrays / ds_grid tridimensionales
« en: Agosto 30, 2019, 05:09:01 pm »
Se puede, conceptualmente una array bidimensional es un array dentro de otro. Una tabla , que es lo mismo, es una lista de listas.
Siguiendo el concepto, un array3D sería una grilla de listas. Entonces:
lis1 = ds_list_create(); // primera dim
lis2 = ds_list_create(); // segunda dim
lis3 = ds_list_create(); //tercera dim

ds_list_add(lis3, "3D"); // en lis3[0] hay un valor
ds_list_add(lis2, lis3); //en lis2[0] hay otra lista
ds_list_add(lis1, lis2); //en lis1[0] hay una lista


lista2 = ds_list_find_value(lis1, 0) //recuperamos la lista2
lista3 = ds_list_find_value(lis2, 0)
elemento = ds_list_find_value(lista3, 0);

show_message_debug(string(elemento));

No se bien como estes implementando el juego pero creo que te conviene usar una grilla de Nx4 donde cada lugar guardaria coordenada x,y,z y el valor true/false.

No probé hacer una ds_grid con una lista dentro para evitar hacer la lista de lista. Pero en teoría deberia funcionar joya
Los siguientes usuarios dieron las gracias a este tema: :StonerStanley:

11
Preguntas y respuestas / Re:Duda Networking
« en: Agosto 09, 2019, 06:07:55 am »
Bien primero respuesta corta, si.
Ahora la respuesta larga es que se complica. Se puede conectar dos pc desde cualquier parte del mundo con el networking de Game Maker.Tambien se pueden conectar de la misma red local con cable y wifi.

A diferencia de la red local LAN, con la red WAN es que en la red LAN es todo transparente entre dispositivos, porque se supone es una red segura.
El problema com la rede WAN son los firewalls que hay que desactivar para que entren conexiónes, es decir, el servidor tiene que dejar paso a las conexiones exteriores entren a su PC lo cual es complicado y a la vez peligroso.
Pasando del tema, seguridad informática, abrir un server para WAN es tedioso porque primero se debe configurar una excepción en el firewall del sistema operativo, y ya despues hay que hacerlo en el firewall que trae el router de internet. Lo cual, en el mejpr de los casos se puede configurar usando una IP que te da proveedor de internet con usuario y contraseña. O en el peor de los casos quien lo administra es la misma empresa, y hay que llamar al servicio técnico en linea para que te habiliten los puertos específicos que hayas determinado al momento de programar el juego.

Hay otros métodos para evitar tanta configuración y es lo que se llama hole punching, incluso hay librerias o extensiones para gms. El inconveniente es tener un servidor dedicado.

Los siguientes usuarios dieron las gracias a este tema: M Games

12
Preguntas y respuestas / Re:Objeto muere cuando sale de la cámara
« en: Julio 07, 2019, 02:21:37 am »
hay un evento específico para eso en la parte de eventos en la pestaña "other" si no me falla la memoria, donde hay uno que pon" outside view" que se lanza cuando la instancia se queda fuera de la view.
y bueno , luego de seleccionado el evento harías el trabajo pertinente
Los siguientes usuarios dieron las gracias a este tema: inventarium

13
probaste usando:  event_perform(ev_other, ev_user0) ?
o en su defecto: event_perform_object(objeto, ev_other, ev_user0) ?
Los siguientes usuarios dieron las gracias a este tema: Marth

14
Preguntas y respuestas / Re:Unión de objetos
« en: Julio 03, 2019, 01:48:54 pm »
Me acuerdo que eso se solucionaba en los gm8 poniendo el codigo en "end step".
Los siguientes usuarios dieron las gracias a este tema: inventarium

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 4