Noviembre 15, 2014, 12:40:19 AM Ultima modificación: Noviembre 23, 2014, 01:51:24 AM por carlymx
Hola buenas noches a tod@s Game Maker@s.

Antes de nada presentarme, me llamo CaRLy y soy Español.

Tengo una hija de 20 meses que le encanta jugar (y ver a peppa pig xD ) a unos juegos en su tablet (la que antes consideraba yo como mía ;( ) esos juegos son sobre todo de memorizar conceptos, formas, colores y números y la verdad que no falla ni uno, pero me di cuenta que tienen ciertas deficiencias y que en se los juegos se pueden mejorar muchísimo y adaptarlos mejor a las mentes mas menudas y sus capacidades y me dije que bueno podria mirar de hacer para mi hija esos videojuegos bajo mi punto de vista y necesidades de dicha usuaria.

Y aqui estoy 3 semanas después con el Game Maker Studio  :GMS: del Steam adquirido, vistos n tutoriales para principiantes y muchas ganas de empezar enserio.

Espero Cracks de la programación puedan ayudarme en mi titanica locura y pueda terminar el videojuego antes que mi hija vaya a la universidad (no creo que ya le interesara un juego para niños... ¿no creen?) :D

(...sigo aquí abajo...)

#1 Noviembre 15, 2014, 12:42:37 AM Ultima modificación: Noviembre 24, 2014, 02:09:08 AM por carlymx
Actualizado: 18 Nov 2014 - 1:30AM


Bueno me he estado mirando un poco el foro y me gustaría crear una especie de cuaderno de bitácoras de mi proyecto, hay una sección de juegos en desarrollo pero he visto que es para digamos asi "publicitarlos" y entiendo que no sirve ese apartado para mi idea, por eso he puesto aqui mi post; como no quiero llegar y revolucionar el gallinero, pido disculpas de ante mano si mi post no va en esta sección.

Bueno al ataque.

Idea del Proyecto:
Juego Infantil 01 - La Cueva de las Sombras.

EL Juego de "La Cueva de las Sombras" es un sencillo juego de memoria que consiste en observar la sombra que tenemos a uno de los hemisferios de la pantalla y asociarla con una de las N imágenes que tenemos en el otro hemisferio, pulsando la imagen correcta pasamos de nivel.




Borrador efectos Teoricos
Posible funcionamiento del juego.

[spoiler]Conceptos generales.
1. El juego estaría dividido en un numero predeterminado de niveles (rooms) los cuales corresponden a un nivel de dificultad, cada room debe ser superada Z numero de veces para poder pasar a la siguiente.
2. Una vez alcanzado un nivel superior (nueva room) se desbloquea (tipo angry birds) y se puede empezar desde ella.
3. Una vez alcanzado el ultimo nivel, este es entra en bucle cuando se acierta se reinicia.
4. Cada nivel debe escoger de manera aleatoria entre un numero de imágenes destinadas para ese nivel y ordenarlas en las casillas de manera aleatoria también.
5. Las imágenes no deben repetirse en un mismo nivel.
6. Cada nivel superior, comprende para elegir la suma de todas las imágenes de los niveles anteriores + Y imágenes nuevas.
7. Poner en la casilla correspondiente la sombra de una de las imágenes seleccionadas.
8. Sistema de vidas: en cada nivel se deben tener X intentos para acertar la imagen correcta si se agotan se pierde una vida y se reinicia el nivel... cuando se agotan todas las vidas el juego termina.
9. (posible) Una manera de ganar vidas podría ser la de acertar a la primera.
(...)


Debería haber una vez finalizado el desarrollo (opinión):

1. N numero de sprites, por ejemplo 100 o 200 que simbolicen cada imagen a mostrar (un numero, un coche).
2. Cada sprite debería constar de dos imágenes, una imagen del concepto (coche, numero...) y otra de su sombra.
3. Cada nivel de dificultad (Room) consta de una casilla para la imagen sombra y varias casillas (variable según la room) para las imagenes a mostrar.
4.En cada Room un marcador de intentos, otro de las vidas restantes, y el del nivel perteneciente a esa room, el cual estaría dividido entre: ' el numero de la Room (ejemplo: Level-10) y las veces que hay/quedan que repetir ese nivel para avanzar (ejemplo: Siguiente nivel - 3/10)

Y un sin fin de detalles y animaciones que ya se me irán ocurriendo, pero eso es lo de menos.

[/spoiler]

He  estado trabajando en una pequeña preview de como podría ser uno de los primeros niveles del juego, aquí la tienen.



PROCEDIMIENTOS

1. Esquema programación de la Aleatoriedad de un nivel:

[spoiler]

// La 1ª imagen listada siempre sera la imagen correcta del nivel.
Indicar numero de imagenes: (Ej = 3)

Listar coordenadas disponibles: (Ej)   //La 1ª es la utilizada para la imagen sombra.
{640, 160}
{160, 480}
{480, 480}
{800, 480}


- Listar Sprites para el nivel:
{
   Sprite_Objestos
      [subimagenes (1, 3, 5-7)]
   Sprite_vehiculos
      [subimagenes (5-8, 10, 15)]
}


// Seleccionar sprites para cada imagen y Aleatorizar su posición.

Imagen 01.
   Seleccionar aleatoriamente un sprite de la lista.
           Borrar la entrada de ese sprite de la lista para que no pueda repetirse.
   Crear una instancia en las coordenadas (640, 160).
           Borrar coordenadas de la lista.
           Oscurecer instancia al negro opaco.
           Cambiar factor de escala (x,y = 1.5).
  Crear una instancia en las coordenadas aleatorias disponibles.
           Borrar coordenadas e la lista.

   
Imagen 02.
   Seleccionar aleatoriamente un sprite de la lista.
           Borrar la entrada de ese sprite de la lista para que no pueda repetirse.       
  Crear una instancia en las coordenadas aleatorias disponibles.
           Borrar coordenadas e la lista.


Imagen 03.
   Seleccionar aleatoriamente un sprite de la lista.
           Borrar la entrada de ese sprite de la lista para que no pueda repetirse.       
  Crear una instancia en las coordenadas aleatorias disponibles.
           Borrar coordenadas e la lista.


[/spoiler]

Bueno iré posteando los avances mas abajo y un log aquí mismo de los avances que vaya consiguiendo en parte gracias a ustedes.


Historial.

[spoiler]
15 Nov 2014:
-  Inicio del proyecto. creado el proyecto un par de rooms y unos sprites para ir probando.

16 Nov 2014:
- Agregado un spr_ y un obj_ con el logo del Studio, aplicado a una primera Room Opening de momento estática. Cuando sueltas el botón Izq pasa a la siguiente Room (la de Menu Principal).
- Agregado un obj_System invisible y persistente con dos acciones simples: 1 Tecla F5 (reinicia la Room actual), 2. Tecla ESC (salir del juego).
- Agregada una Room de Menu donde sellecionar juegos.
- Agregada room de juego principal de 1920x4416px y un fondo partido en trozos de 1024x1024px

17 Nov 2014:
- Agregados Sprites de imágenes.
- Agregada Room para pruebas (Se entra, pulsando sobre el titulo en el menú principal.
- Arreglado (no definitivo) problema con fondos grandes.
- Primeras pruebas de Aleatoriedad y oscurecimiento de instancias.
- Agregada en directorio de GDriver primera versión pre-alpha para su descarga.

18 Nov 2014:
- Liberada para su descarga la version Pre-alpha 0.0.6a para Windows y Android.
- Agregada una barra de carga (cuenta atrás temporal) en el Opening, una vez acaba la cuenta atrás pasa al menú principal.
- Agregado botón Salir del juego en el Menú principal.
- Agregados más Sprites.

24 Nov 2014:
- Liberada para su descarga la version Pre-alpha 0.0.7a para Windows y Android.
- Agregada room de control de Volumen.
- Agregada Melodía principal con control on/off.
- Agregados más Sprites.


[/spoiler]

Directorio de Descargas:

http://goo.gl/48b3Vb.


Mi gracias a tod@s.
Cualquier comentario, idea o pregunta es bien recibida,

tu modo de juego que planteás no necesita GML , es muy facil  :)

Lo mismo que el de arriba a no ser que quieras poner un sistema random pero seria mucho mejor hacero sin un sistema random por que habria que poner muuuuuuchas figuras y todo eso.

Gracias chicos por vuestros comentarios.

Si, parece fácil cuando quieres hacerlo fácil... pero si podéis echar un vistazo otra vez a la actualización del post, veréis que "no quiero hacerlo tan fácil" xDDDDD

La aleatoriedad es un factor decisivo para el aprendizaje y la gestión de niveles de dificultad y vidas restantes proporcionan el reto necesario para necesitar avanzar (no aburrirse vamos).

Espero les guste mi idea y puedan ayudarme a hacerla realidad.

Mil gracias chicos.

en vez de armarte un quilombo con la aleatoridad, por que no haces aleatoridad de Rooms?? ;D

Hola Fabrizon,

No, no puede ser, es totalmente inviable se tendrian de armar miles de rooms con todas las combinaciones posibles de las imagenes, por esos motivos buscamos que la computación nos calcule esceneraios aleatorios. xDDD

Ademas... el videojuego tendría menor calidad que el peor de los juego de este tipo que he visto y no valdría la pena ni empezar siquiera.

Hola carlymx, aquí hay algunas ideas para implementar tu juego:

En vez de usar pares de imágenes (una a color y una sombra), me parece más sencillo tener solamente las imágenes a color, y hacer el efecto de sombra con las funciones draw_blend (o incluso con la variable image_blend), pero es necesario que las imágenes tengan transparecia.

Todas la imágenes pueden guardarse en un solo sprite, sirve que pueden visualizarse y ordenarse con el editor de sprites de GM. Tal vez puedan ordenarse por orden de dificultad, así la dificultad del juego cambia definiendo diferentes rangos de imágenes para mostrar.

Mostrar las opciones en un orden aleatorio resulta muy fácil con "data structures". Por ejemplo puedes llenar una ds_list con una secuencia de números (puede ser el rango de imágenes que quieras que se muestren en un nivel) y después usar ds_list_shuffle para que los números queden ordenados aleatoriamente, entonces las subimágenes del sprite (único) se dibujarían en el orden de la lista. Después con la fucnión irandom_range eliges un número en el mismo rango para que sea la imagen sombra.

Eso es para empezar a hacer algunas pruebas. Se me van a ocurrir otras cosas, ya las iré escribiendo.

Hasta luego.

Hola Clamud.

Me encantan tus ideas!!!!!!!!!!!

Para empezar me ahorro el al rededor del 50% del trabajo a la hora de crear las imágenes. si las imágenes que estoy creando son PNGs de 256x256px 24bits (con canal alpha).

Sobre el Sprite único... podrían ser varios? Por cuestión de ordenarlos por tipos, un sprite para vehículos, otro para letras...¿o no es necesario?. De momento creare varios sprites (tipos) e iré agrupando las imágenes que vaya creando.

Intentare encontrar como hacer lo que me indicas buscando información por aquí y la Red.

Una pregunta, Clamud. ¿con el sistema que planteas, seria posible tener una sola Room, que vaya metamorfoseándose a medida que se va avanzando?

Lo comento porque he hecho un fondo muy grande 1920x4416px y tenia dos opciones:

a. (la ideal) Cada vez que se avanza el marco de la pantalla (1280x960 (4:3) o 1280x720 (16:9) se va desplazando a las coordenadas que interese. Cabria la posibilidad de que cada vez que se acierta, que se desplace el marco de la pantalla y se viera como el fondo se desplaza y que diera la sensación de avance.

b. En cada nuevo nivel (room) el marco de la pantalla esta en unas coordenadas concretas.


Gracias, me has dado mucho en lo que pensar y estudiar.

#9 Noviembre 16, 2014, 02:04:56 AM Ultima modificación: Noviembre 16, 2014, 03:37:38 AM por carlymx
Bien, aquí estoy desarrollando el vídeo juego y ya me enfrento al "primer problema".

El Fondo de la Room... es un fondo de 1920x4416px por lo que he podido averiguar, si tengo un fondo tan grande debo hacer una room igual de grande para que se me visualice entero...

Una vez hecho eso en la pestaña 'Views' de la columna de opciones que hay a la izquierda de la ventana de cada Room, hay que ajustar la vista y el zoom donde se quiere que se centre la acción de la pantalla. Bien hecho...

El problema viene cuando compilas que el  :GMS: cambia la resolución del fondo por ser demasiado grande y fuera de los limites del margen de texturas programado en 'Global Settings' que por defecto para windows es de 2048x2048px.

El error al compilar es: Warning : resource Fondo_sombras01 rescaled from 1920,4416 to 480,1104

Entonces me he encontrado este post que hablan del tema http://www.comunidadgm.org/preguntas-y-respuestas/%28solucionado%29-ayuda-con-fondo-borroso/15/

He probado la opción 'Use as tile set' con el fondo, he hecho una composición de baldosas y nada me hace lo mismo.

Un Saludo.

Edito: [SOLUCIONADO] No se si es lo que hay que hacer, pero Recorte con photoshop la imagen en 14 partes, luego las inserte en el proyecto como fondos activando la casilla 'Use as tile Set' y poniendo en 'tile width' y 'tile height' el tamaño de la imagen. Luego montar en la Room y listo.

No es recomendable usar imágenes tan grandes porque puede afectar de diversas formas el rendimiento del juego (y más si va a correr en una tablet); puede pasar que tarde demasiado en abrir la aplicación o que funcione muy lenta.

Una forma de solucionar esos problemas sería evitar que los recursos se carguen de forma automática, después cargarlos cuando se necesiten y borrar de la memoria los que ya no se usen, pero nunca lo he intentado y no podría aconsejarte sobre eso.

Otros métodos serían parecidos a los que se usan en el tutorial "scrolling shooter" (que viene con el GMS). Uno es hacer una room larga a la que se le agregan objetos para formar el escenario (también se pueden usar tiles) y desplazarse a lo largo de la room. Otro es hacer una room pequeña con objetos que se van creando fuera de ésta y se desplazan hacia el extremo opuesto de la room, cuando están fuera de la vista se destruyen (o se vuelven a posicionar del lado contrario), así se obtiene un desplazamiento infinito.

En tu juego puedes hacer que se generen diferentes objetos dependiendo del nivel, por ejemplo, puedes hacer que el efecto sea de un desplazamiento por el cielo; en el primer nivel puedes dibujar un degradado, con las funciones de GM, en tonos azules claros y los objetos generados tendrían forma de nubes, conforme se avanza de nivel los tonos del degradado se harían más oscuros y poco a poco se generaría más objetos con forma de estrellas, después se generarían objetos con formas de planetas y así sucesivamente. Se usaría una room que cambia de forma gradualmente como mencionaste.

#11 Noviembre 17, 2014, 01:49:33 AM Ultima modificación: Noviembre 26, 2014, 08:36:37 PM por carlymx
Gracias Clamud, te has comvertido en mi Guru personal xDDDDDDDDD volvere al tema de las rooms cuando el juego basico funcione, al fin y al cabo eso son estructuras de 'Valor añadido' que no afectan al funcionamiento de la base del juego en si.

He estado pensando en como podria ser la estructura de programación para crear un sistema que seleccione imagenes entre un grupo y las muestre en unas cordenadas concretas en la room. sin tener ni idea de momento del lenguaje de programación GML, me he aventurado a escribir estas lineas para que los mas expertos puedan indicarme si es una estructura valida por la cual empezar ya a programar. Y si me pueden dar claves del codigo a usar mejor que mejor xDDDDDDDDDDD


1. Esquema programación de la Aleatoriedad de un nivel:
Citar
// La 1ª imagen listada siempre sera la imagen correcta del nivel.
Indicar numero de imagenes: (Ej = 3)

Listar coordenadas disponibles: (Ej)   //La 1ª es la utilizada para la imagen sombra.
{640, 160}
{160, 480}
{480, 480}
{800, 480}


- Listar Sprites para el nivel:
{
   Sprite_Objestos
      [subimagenes (1, 3, 5-7)]
   Sprite_vehiculos
      [subimagenes (5-8, 10, 15)]
}


// Seleccionar sprites para cada imagen y Aleatorizar su posición.

Imagen 01.
   Seleccionar aleatoriamente un sprite de la lista.
           Borrar la entrada de ese sprite de la lista para que no pueda repetirse.
   Crear una instancia en las coordenadas (640, 160).
           Borrar coordenadas de la lista.
           Oscurecer instancia al negro opaco.
           Cambiar factor de escala (x,y = 1.5).
  Crear una instancia en las coordenadas aleatorias disponibles.
           Borrar coordenadas e la lista.

   
Imagen 02.
   Seleccionar aleatoriamente un sprite de la lista.
           Borrar la entrada de ese sprite de la lista para que no pueda repetirse.       
  Crear una instancia en las coordenadas aleatorias disponibles.
           Borrar coordenadas e la lista.


Imagen 03.
   Seleccionar aleatoriamente un sprite de la lista.
           Borrar la entrada de ese sprite de la lista para que no pueda repetirse.       
  Crear una instancia en las coordenadas aleatorias disponibles.
           Borrar coordenadas e la lista.



Agregada la primera version pre-pre-pre-alpha del juego en Google Driver.

EDITO: Ya múltiples versiones.

Directorio de Descargas:
http://goo.gl/48b3Vb.

Gracias a todos por vuestro tiempo.

Por ir aprendiendo me he pusto a introducirle una melodia al juego y ya enseguida  me surgio la pregunta:

¿NO admite ficheros MIDI el GMS?
¿hay alguna manera?

tener de convertir en ogg un MIDI que ocupa 44Kb y que se queden en mas de 6000Kbs pues la verdad que pican mucho.