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

Páginas: 1 2 3 ... 23
1
Estaba buscando una manera simple de calcular daños, dado que, quiero hacer el juego accesible para todos. Que se deba saber mucho del genero para simplemente unirte y jugar un rato.
Con ese planteamiento, tampoco buscaba hacer combinaciones ultracomplejas, solo una formula de daño que se adapte a los enemigos pero que tampoco sea sumamente poderosa.
Era simplemente un ejemplo entre dos items, podría llamarlos item X e Y. Lo que quería básiscamente era evitar una combinacion de items X/Y que se superpusiera sobre los demás y dejara fuera de juego la variedad de objetos equipables que hay disponibles.

Evitaba también poner cosas como niveles, para no desbalancear al grupo de jugadores en sí. Pero, viendo lo visto  XD creo que voy a tener que tirar de los elementos básicos como fuego/agua para darle más uso a os objetos dependiendo de la situación y que no se haga un snowball. XD

Gracias!

2
Preguntas y respuestas / Mejor manera de gestionar daños o atributos?
« en: Junio 10, 2020, 06:35:06 am »
Hi!
Estoy fabricando(? un juego hmmm ARPG? lo importante es gestionar el ataque y la defensa de cada personaje. Inicialmente podría equiparse al personaje con diferentes armas y también con diferentes armaduras.
Mi super pregunta es cuál es la mejor manera de gestionar estos atributos para que no se vuelva una ventaja o desventaja respecto a hacer o recibir daño.
Quiero decir que no haya una configuración rota de :espada de fuego + armadura de dragon.   Y que la gente solo ocupe esa configuración por sobre otras XD
Vamos, "la mejor manera de balancear el juego".
 
Tanto para enemigos y para personajes. Existen formulas o cosas por el estilo? porcentajes, reglas re tres? pura suerte? XD 
Saludos!

3
Preguntas y respuestas / Re:Maquina de Estados en un Plataformero
« en: Febrero 08, 2020, 04:03:47 am »
A saber, una máquina de estados es una máquina de estados en un rpg, en un plataformas y en pacman o cualquier juego que desees implementarlo. Tiene varias maneras de hacerse, pero todos desembocan en lo mismo, ejecutar instrucciones dada una condición satisfecha.

La programación de una máquina de estados usualmente se maneja mediante la lógica del switch. Se tiene una estructura o una enumeración que contiene los estados posibles y el árbol de decisiones, ya sea con ifs o lo más práctico utilizando switch.

Primero deberías usar una enumeracion, con los estados posibles:
enum states{ //estados posibles para la variable de estado
idle,
running,
jumping
}
state= states.idle; //mi personaje comienza parado sin hacer absolutamente nada
Y en el evento step, debería correr la lógica, con el switch:
switch(state){
case states.idle:
    scr_idle_player(arg0, arg1, arg2):
break;

case states.running:
   scr_running_player(arg0);
break;

// . . .
}

La diferencia, es que ejecutar los script así de manera independiente antes que utilizar una sola instruccion con script_execute, es que puedes pasarle parametros variables.

P/D: en gm8 no hay enums, pero aun puedes definir constantes en el motor. Simplemente crealas allí, el valor no importa siempre que sean diferentes entre sí.

4
Preguntas y respuestas / Re:Precisión de números un poco grandes
« en: Febrero 07, 2020, 07:29:30 pm »
En teoría los números flotantes dan problemas cuando son muy grandes, a menos claro que utilice una implementación de una libreria determinada, pero en lo convencional, a mi entender, da errores.
Podrías probar utilizar un entero grande en vez de un decimal de 32bits con la funcion int64().

https://docs.yoyogames.com/source/dadiospice/002_reference/maths/real%20valued%20functions/int64.html

En verdad no sé si eso llegue a solucionar tu situación pero, ahí está. XD

5
Preguntas y respuestas / Re:Duda con los audio emitters
« en: Noviembre 11, 2019, 04:10:51 pm »
Para eliminar todos de golpe necesitas hacer tu script personalizado para borrar todos y cada uno de los emisores creados. Los cuales, antes debieran listarse dentro de, valga la redundancia, una lista. Esto para tener el registro de todos los emisores que se hayan creado.
Lo más práctico es utilizar las ds_list, porque crecen automáticamente, y se puede utilizar para recorrer enteramente la lista.

Primero deberías crear un script, que haga 2 cosas:
1) crear la lista si no existe.
2) crear un emisor y guardarlo en la lista.
3) devolver el emisor creado.
Puedes llamarlo simplemente crear_emisor_de_sonido();
Lo ideal sería crear una variable global antes para que obtenga el ID de la ds_list, dentro del script:
Luego, operas normalmente:
ae=crear_emisor_de_sonido()
audio_emitter_position(ae,x,y,0)

o:
audio_play_sound_on(ae,explota,0,1)

Luego creas el escript para borrar todos los emisores, el cual debería trabajar así:
1) recorrer la lista
2) obtener cada emisor y borrarlo
Lo cual puedes llamarlo borrar_todos_los_emisores();

Y finalmente deberías borrar la lista como tal, cuando ya no hagan falta emisores en tu juego:
ds_list_destroy(global.laListaDeEmisores )

6
Preguntas y respuestas / Re:Tengo un error ayudenme porfa
« en: Noviembre 08, 2019, 09:26:06 pm »
El error está en que no creaste una layer llamada "Bullets", en general GM2, viene con una por defecto que es "Instances", o la creas allí.
O bien, defines una nueva instance layer, desde el editor de rooms, que se llame "Bullets".

7
Preguntas y respuestas / Re:Que otros lenguajes reconoce game maker
« en: Noviembre 08, 2019, 04:41:33 pm »
Game Maker acepta, al menos en un versiones más viejas, la sintaxis de Pascal, creo que muchos no lo saben XD ni modo, tampoco es que Pascal fuese famoso en la actualidad, pero si se utilizó antes, hace mucho sentido.
Sin embargo, que acepte la sintaxis, no necesariamente significa que, acepte las funciones. Lo cuál también haría sentido puesto que estaríamos hablando de las bibliotecas estándar, si se quiere, del lenguaje Pascal.
Entonces, es lógico que no reconozca writeln(). Por otro lado, se puede utilizar los operadores relacionales esos raros como <> (distinto)  y las asignaciones raras de Pascal XD
Para finalizar, esta es mi intención: lograr dibujar mediante otro lenguaje una simple línea sin usar el draw_line, y dibujar un hola mundo sin usar draw_text. Gracias, cualquier idea recibirá un agradecimiento de mi parte.  ;D
Si quieres dibujar una linea sin usar draw_line() tendrás que dibujar tantos puntos haya entre medio del inicio y del fin. Lo cual me parece que será altamente costoso. Más teniendo en cuenta que, al menos en  :GM5: las funciones de dibujo son muy lentas. No quiero imaginar para versiones inveriores.
Luego, para dibujar un hola mundo sin draw_text() o lo haces con lineas, o con sprites, otra manera creo que no hay  XD

8
General / Re:Practicando máxima compatibilidad
« en: Noviembre 02, 2019, 01:09:18 pm »
Me parece una idea interesante sin embargo, me pregunto porqué alguien querría que un código portable a versiones tan viejas?
A no ser que esté programando en una PC de los 90, no creo que fuera conveniente XD


Los arrays no están formados por ifs. Son espacios de memoria adyacentes, que agrupan un tipo de dato homogéneo.(Al menos los arrays estáticos de toda la vida.)
Aún así puedes, simular un array utilizando ifs.

La forma en que se me ocurre, es declarar cierto número de variables que funcionen como índices. A saber:
espacio1 = 0;
espacio2 = 0;
espacio3 = 0;
espacio4 = 0;
espacio5 = 0;
Dónde se puede apreciar claramente la limitación más grande, que sería un fixed array. O un vector de tamaño fijado. Desconozco si existe en GM1
alguna función para crear variables en tiempo de ejecución. Así ,asumiré que no la hay.

Una vez declarada nuestra lista de variables, podrías crear un script que tome como parámetro el índice de la posición y retorne/escriba el valor:
scr_getVector( index);
var i = argument[0];
if (i<0 || i >5) exit; //estaría bien colocar un cartel de aviso al usuario

if (i==1)
    return espacio1;
if (i==2)
    return espacio2
if (i==3)
    return espacio3
if (i==4)
    return espacio4
if (i==5)
    return espacio5;
Y para guardar valores dentro del array:
scr_setVector( index , value );
var i = argument[0];

if (i<0 || i>5) exit;
if (i==1)
    espacio1 = value;
if (i==2)
    espacio2 = value;
if (i==3)
    espacio3 = value;
if (i==4)
    espacio4 = value;
if (i==5)
    espacio5 = value;
 

9
Preguntas y respuestas / Re:Cargar imagenes que el usuario prefiera.
« en: Octubre 16, 2019, 01:09:13 am »
En GameMaker8 cuentas, por suerte, con una función para ello.
En GMS la quitaron :'(
 XD

La función en cuestión es get_open_filename() ysirve para mostrar un cuadro de dialogo para seleccionar un recurso.
En este corto ejemplo lo utilizo para cargar un sprite y luego con dicho recurso creo un sprite dinámico para usarlo dentro del juego.
var res, spr;
res = get_open_filename("", "");
spr = sprite_add(res,0,0,0,0,0); //creas el sprite convenientemente segun tus necesidades

sprite_index = spr;

Luego usarías sprite_delete() para liberar la memoria del sprite ocupado.

Saludos! :3

10
Según entiendo quieres pasar un vector con cierta magnitud en una dirección dada.
Para ello cuentas con la función:
lengthdir_x(largo, direccion);
Eso devolvería la componente horizontal de un vector dado por dirección con magnitud largo.
Y similar, tienes:
lengthdir_y(...)
Para la componente vertical.

Saludos! :)

11
Preguntas y respuestas / Re:Agregar cursor a input box
« en: Septiembre 22, 2019, 04:57:33 pm »
Quieres que el cursor se mueva con las flechitas o necesitas algo super complejo como seleccionar con el mouse?  XD


12
Preguntas y respuestas / Re:AYUDA CON SISTEMA DE PISTONES/MARTILLOS
« en: Septiembre 20, 2019, 03:55:58 am »
Para lograr ese comportamiento necesitas una variable que controle el estado del objeto. Más bien sería cómo colocar condiciones, si se cumplen pasar de un estado a otro.
Inicialmente deberías crear la variable que controlase el comportamiento, osease, la variable que controla el estado:
Ev_create
estado = -1;
Luego sería definir las constantes que puede tomar la variable estado. En GMS puedes usar enum para enumerar constantes, de momento mantenerlo simple sería lo óptimo, entonces puedes definir nuevas variables simplemente para fines de documentación y para que sea más fácil leer el código:
Ev_create:
//definimos variables auxiliares para darle un valor a estado
ES_ESPERANDO = 0
ES_CAYENDO = 1
ES_SUBIENDO = 2
Estas variables ayudarían a determinar el estado actual del objeto, si está cayendo , si está arriba esperando o si está subiendo para retornar a su posicion.
Finalmente bastaría programar el comportamiento para que cambie de estados, ya dependiendo de cuándo se quiere que ocurran estos eventos.
Por colocar un ejemplo, podíamos hacer que nuestro pistón cayese cuando el personaje se encontrase debajo:
Ev_step:

if (estado == ES_ESPERANDO) //estamos arriba esperando a que pase el jugador
    if (collision_line(x+0,y+0,x+0,y+50, obj_personaje, false, true))//si se detecta que el jugador esta abajo del piston
        estado = ES_CAYENDO; //determinar que está cayendo

if (estado == ES_CAYENDO) //si el estado es cayendo
     vspeed = 2;  //aumentar la velocidad vertical para que caiga
Esto haría que el pistón verifique si el jugador está debajo y cayese en ese caso.
Ahora tocaría hacer que se detuviera cuando colisiona con el suelo, y que subiera, para que al colisionar de nuevo con el techo, por ejemplo, se reestablezca a ES_ESPERANDO.

Para verificar constantemente los estados y el comportamiento estaría bien el evento step, en general. A menos que la lógica no lo requiera XD
   

13
Preguntas y respuestas / Re:Editor De Personajes
« en: Septiembre 10, 2019, 06:24:39 pm »
No hace falta un objeto para cada atuendo, solo deberias usar el mismo evento draw para dibujar al personaje y encima la ropa.
Creo que sobra decir que cada prenda debe coincidir con la animacion que tenga el personaje.

La manera fácil de hacer este tipo de cosas es usar un programa que maneje capas, pones al monigote debajo y dibujas en una capa superior la ropa y su animación. Luego exportas solo la capa del atuendo.

¿entonces como haria para guardar esas imágenes con ropa y que en código se inviertan y así como dijo guinxu?
Esta parte no la entendí, disculpa XD

14
Preguntas y respuestas / Re:Ayuda, game maker desconfigurado (?)
« en: Septiembre 10, 2019, 06:12:20 pm »
Es un poco complicado decir si o no a ciegas  :P
Deberías colocar imagenes de tu configuración de views en la room por ejemplo. O colocando screenshot de cómo se ve el sprite normal y como se ve luego cuando se ejecuta el juego.

15
Preguntas y respuestas / Re:Sistema de Batalla [04/08/2019]
« en: Agosto 04, 2019, 07:23:01 pm »
Bueno, que puedo decir, casi que te respondiste solo  XD
Si quieres dividir el ataque del jugador con la defensa del enemigo, solo debes aplicar la fórmula.
danio = obj_jugador.ataque / defensa;
vida -= danio;
Y variaría si se manejas decimales o no, si son redondeados a enteros:
danio = floor(obj_jugador.ataque / defensa);
vida -= danio;

Y claro, ya vendría el hecho de cómo tienes implementado el motor como tal para saber si va en un evento de colision o en una alarma, por ejemplo.

Páginas: 1 2 3 ... 23