Mostrar Mensajes

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.

Mensajes - Clamud

1126
Preguntas y respuestas / Aceleración y fricción en 2D
Octubre 04, 2015, 04:14:46 AM
Hola a todos.

Estaba buscando ideas para programar un movimiento suave en 2D, para un shooter cenital. El personaje alcanza grandes velocidades y, para tener un buen control, es necesario un cambio gradual de velocidad, también se pretende simular al personaje derrapando porque no puede detenerse al instante. El programa también podría simular el desplazamiento sobre hielo.

Lo que se hace comúnmente para programar ese comportamiento es dar un valor a la variable friction y después sumar una velocidad para modificar las variables speed y direction. El valor de speed se incrementa en cantidades mayores a friction para poder contrarrestar la fricción, hasta alcanzar una velocidad máxima. Lo que no me agrada de este algoritmo es que el tiempo necesario para alcanzar la velocidad máxima es mayor al tiempo necesario para detenerse por completo, busco un algoritmo que permita acelerar y frenar en tiempos iguales. Además la dirección que se indica con los controles nunca se alcanza, a menos que se inicie el movimiento desde el reposo, la dirección se aproxima mucho, pero no es exacta.

Tengo un algoritmo que ha ido evolucionando conforme lo usaba en diferentes juegos, primero en un FPS, después en un plataformero 3D, y ahora en un shooter cenital. He logrado hacer que el tiempo para acelerar sea igual al tiempo para frenar, y es posible frenar más rápido si se mueve el joystick en la dirección contraria al movimiento. Pero no me gusta demasiado, creo que aún puede mejorar. En este sistema, la velocidad se obtiene como una suma vectorial de dos componentes que he llamado "empuje" e "inercia".

Espero que puedan ayudarme. Más tarde explicaré mi algoritmo.
1127
Preguntas y respuestas / Re:Exportar a Mac
Octubre 03, 2015, 10:36:33 PM
1128
Terminé la versión difícil, no lo podía creer. Nivel 74 con 1945 muertes, usando checkpoints. Los efectos visuales al final son muy buenos.
1129
Es un juego muy bueno, pero necesita mejorar en algunas cosas.

Me gustó la música, y los niveles están bien diseñados, se nota que le has dedicado tiempo al "beta-testing".

El mayor problema es que las colisiones tienen muchos errores, el cuadro amarillo se queda atascado frecuentemente, principalmente en las esquinas de los muros. Eso me hace pensar que en el motor del juego se usa la función move_contact_solid, sería bueno que busques una alternativa a esa función, también sería bueno agregar un sistema que permita entrar en huecos pequeños aunque la velocidad vertical (al caer) sea grande. Esos errores me han permitido pasar algunos niveles en formas que, supongo, no estaban planeadas, por ejemplo, tocando un cuadro verde rodeado por muros, o atravesar unos muros por la parte superior de la pantalla.

El estilo minimalista le queda bien al juego, pero, se agradecerían unos gráficos más detallados. Creo que se deben mejorar los iconos que aparecen en la pantalla de título, con excepción del botón de Facebook, los otros no se reconocen fácilmente, y tampoco se distingue bien en qué momento están activados.

La dificultad es bastante elevada, me parece bien que se alternen niveles fáciles y difíciles, así la cantidad de estrés baja de vez en cuando. La mayoría de los niveles que he jugado se pueden resolver con lógica, excepto uno, creo que es el 26, donde hay tres cuadros rojos que se mueven horizontalmente en un pasadizo estrecho, es muy difícil calcular el momento para saltar, lo logré con pura suerte. Tal vez sea bueno reducir la atura de salto para que sea más fácil controlar el vuelo, sin embargo, eso implicaría rediseñar los niveles. En Windows se debería usar una tecla diferente para saltar, y así jugar con ambas manos.

También he notado algunos errores en la traducción al inglés, por ejemplo, donde dice "end of the rode" debería ser "end of the road", la palabra "deads" debería cambiarse por "deaths", y hay otros pequeños errores, pero no recuerdo cuáles.

Deberías compilar el juego para Windows como "single executable" o "zip file" para que no sea necesario instalar.

Presiento que estoy a punto de acabar el juego. Luego te comento. Nos vemos.
1130
Este ejemplo muestra cómo rotar y cambiar de tamaño http://www.comunidadgm.org/index.php?page=verdescargas&accion=descargaD&download_id=1982, sin embargo, el código es algo confuso.
1131
Preguntas y respuestas / Re:Mi juego no abre bien
Septiembre 30, 2015, 07:45:06 PM
Copia la carpeta afectada a un lugar seguro, abre GMS, selecciona open y ve a la carpeta GameMaker\Backups, busca la carpeta con el nombre de tu juego, adentro hay por defecto otras 5 carpetas con las copias de las últimas 5 veces que guardaste el juego, la que tiene el número 0 es la última, abre el archivo gmx y selecciona la carpeta Projects.

En la carpeta Cache también hay copias de los recursos, pero no del proyecto completo.
1132
Juegos en desarrollo / Re:Gunshot's Unloaded. [Beta 0.2]
Septiembre 30, 2015, 06:52:11 AM
Estás creando un buen juego, seba_exe.

Lo que me gustó es que el motor funciona sin errores, el protagonista responde bien a los controles, los personajes tienen animaciones fluidas y los jefes están bien diseñados, además hay muchas transiciones y diálogos que suelen ser difíciles de programar.

Creo se debe reducir el tiempo de las transiciones, como la del elevador, y hacer diálogos un poco más cortos para que la acción no se detenga por mucho tiempo. También se debería ajustar la curva de dificultad, la primera vez se enfrenta a un enemigo no hay mucho tiempo para reaccionar y es necesario dar muchos saltos o usar la tecla para evadir, sería mejor si esas técnicas se aprenden de forma más pausada o el enemigo se hace más débil. Me gustaría poder redefinir los controles o usar un joystick, porque en mi teclado no se pueden usar las teclas arriba-izquierda-x al mismo tiempo.

Encontré un bug; la primera vez que entré al cuarto con la cámara-ametralladora no podía contestar el teléfono, me mataron, y cuando volví a entrar ya pude contestar. También he notado que algunas balas atraviesan a los zombis.

El juego tiene mucho de Castlevania SotN, creo que se debe modificar por lo menos el prólogo y la música que suena al morir. En el bar no entendí muchas cosas, no se mucho de anime. Y antes de jugar pensé que el protagonista era mujer.

¿Cuál es la ventaja de usar los cuchillos?
En los diálogos se hace referencia a otro juego, ¿qué juego es?

Yo no tuve problemas para descargar el juego, ¿será un error del navegador?
1133
Preguntas y respuestas / Re:Colisiones tipo Ski Safari
Septiembre 29, 2015, 06:37:46 PM
He estado pensando que el motor se podría simplificar si los vértices que forman el terreno se colocan a la misma separación sobre el eje x, el concepto sería similar a los mapas de alturas de los juegos 3D. En este caso, en vez de generar celdas, se generan líneas rectas (segmentos).

En principio el personaje sólo podría interactuar con un segmento a la vez, o con un vértice a la vez. La altura del terreno en una posición se calcula interpolando las alturas de los vértices a los lados de la posición. El problema es que el personaje no colisiona con un punto sino que colisiona con su ski o con su cabeza. El personaje se podría representar como un triángulo con dos vértices para el ski y otro vértice, con posición variable, para la posición más baja del cuerpo.

Con lo anterior, el proceso sería así:
Si el punto más bajo del cuerpo del personaje está más abajo que la altura del terreno en esa posición, el personaje cayó de cabeza.
Si un vértice del ski está más abajo que el terreno, entonces el personaje cayó sobre su ski, ahora hay que comparar la el ángulo del ski con el ángulo del terreno, si no están bien alineados, entonces el personaje recibe un golpe.
Si fue un aterrizaje alineado, el personaje debe rotar y desplazarse hasta que los dos vértices del ski (o el punto central del ski) estén sobre el terreno.
En todo momento debe actuar la gravedad, si el personaje está en el aire, simplemente tendrá una aceleración hacia abajo, pero si está sobre el terreno, se tiene que emplear la teoría del plano inclinado; los vectores de velocidad y aceleración se proyectarán sobre el plano.
Si la velocidad es muy grande y en determinado momento más de un vértice del personaje queda bajo el terreno, se considera que el vértice más bajo es el primero que realizó la colisión, si la colisión estuvo alineada, entonces el personaje debe avanzar en dirección del vector normal en el punto de colisión hasta quedar sobre el terreno.

Además se podría utilizar una fuerza de fricción cuando el personaje se desliza sobre la nieve o simplemente definir un límite de velocidad. Se podrían hacer otras cosas que no son realistas, como reducir la gravedad cuando el personaje salta.

¿Los niveles son infinitos? En ese caso, el terreno tendría que estar formado por secciones prediseñadas que se van uniendo de forma aleatoria o usar una función matemática que genere curvas suaves, por ejemplo: y = 5*cos(x/5) + sin(x)/2 - x
1134
Preguntas y respuestas / Re:Pregunta: Como pausar el juego
Septiembre 29, 2015, 05:43:00 PM
El código debería ser así
[gml]
if( global.pause = 0 )
{
    global.pause = 1;
    instance_deactivate_all(1);
}
else
{
    global.pause = 0;
    instance_activate_all();   
}
[/gml]

Puedes usar instance_activate_region en lugar de instance_activate_all.
1135
Preguntas y respuestas / Re:Colisiones tipo Ski Safari
Septiembre 28, 2015, 04:20:37 AM
Desde hace tiempo he querido implementar ese tipo de colisiones vectoriales, pero siempre lo dejo abandonado. El terreno estaría formado por segmentos de recta y arcos, y supongo que sería menos demandante que el sistema de física (Box2D) porque no sería necesario calcular cosas físicas como volúmenes, momentos de rotación, inercia, restitución, etc. Si sabes física y matemáticas podemos trabajar juntos para implementarlo. Tal vez se pueda implementar con sprites, pero creo que el resultado sería poco óptimo.
1136
Juegos completos / Re:[Android & Windows] The Tic Tac Toe
Septiembre 28, 2015, 03:45:08 AM
Está bueno, pero creo que al modo de un jugador le hace falta una mejor inteligencia artificial, parece que la máquina siempre tira al azar, si haces una diagonal es casi seguro que ganas. Espero que puedas mejorarlo para que sea un reto de verdad.
1137
Cambiar action_sound por audio_play_sound sólo tiene la ventaja de poder definir una prioridad para el sonido que reproduce, pero si se reproducen pocos sonidos a la vez, ese argumento no tiene utilidad. La primera opción es poco común en código, sin embargo, tiene la ventaja de que es compatible con varias versiones de GM.

Las ventajas de usar la variable score son: no tienes que preocuparte por inicializarla, es una palabra más corta y todas las instancias pueden acceder a ella directamente.

En algunas ocasiones es útil usar las variables predefinidas de GM, si sabes cómo funcionan, por ejemplo, para mantener un ángulo entre los valores 0 y 360 se puede usar la variable direction que se mantiene automáticamente en ese intervalo, o puedes sumar dos vectores conociendo su ángulo y magnitud con las funciones motion_set y motion_add.

Que bueno que solucionaste el error, supongo que no entendimos bien el problema.
1138
En lugar de usar la variable global.puntos deberías usar la variable score, que es global por defecto, y en lugar de crear la variable global.balls puedes usar la función instance_number. Con esos cambios el primer código quedaría así:
[gml]
//Si la puntuación es 3, debe haber 2 pelotas
if( global.puntos == 3 )
{
    while( instance_number(obj_ball) < 2 )
    instance_create(0,0,obj_ball);
}
[/gml]

El segundo bloque de código ya no sería necesario, o tal vez necesites reiniciar la puntuación:
[gml]score = 0;[/gml]

En el tercer bloque action_sound se puede cambiar por audio_play_sound.
1139
Preguntas y respuestas / Re:Transition
Septiembre 26, 2015, 10:15:18 PM
Se puede hacer con un shader, como el que está en este paquete https://marketplace.yoyogames.com/assets/261/free-shaders
1140
Si, eso hace.