Game Maker: Dudas y Aportes

1, 2, 3
En vista del éxito del Bundle de Game Maker, he pensado que podríamos tener un lugar en el que preguntar/resolver dudas sobre este programa, compartir ideas y recursos, y proporcionar enlaces sobre lugares en los que encontrar tutoriales, música (MIDI, mp3, ogg), sprites, etc...

Y como no, compartir nuestros proyectos, ya sea en alpha, beta o terminado.

Juegos hechos por EOLianos:


Aportes de EOLianos:

Videotutoriales en Youtube:


Tutoriales en Texto:



Herramientas para crear Música y sonidos


Herramientas para crear Sprites


Otros:
Cámaras y Scrolling (no pertenece a Game Maker pero ofrece ideas sobre el uso de la vistas)
@Trabis
https://docs.google.com/document/d/1iNS ... f08efg/pub?
embedded=true
@speak121
http://www.printfreegraphpaper.com/ (Generador de PDF con hoja milimetrada, para diseño de niveles)
http://snowy-day.net/current/colorthing.php (Generador de paleta de colores)



Recursos


Publicar en Google Play:
Buenas,

Yo como tutorial estoy siguiendo esta serie de vídeos (el enlace es del primero): https://www.youtube.com/watch?v=DN6dZWXUEzA. Empieza desde cero aunque la verdad usa más el GML que la interfaz gráfica del Game maker.

Se me olvidaba, está en inlges!

Un saludo.
Pshyko escribió:Buenas,

Yo como tutorial estoy siguiendo esta serie de vídeos (el enlace es del primero): https://www.youtube.com/watch?v=DN6dZWXUEzA. Empieza desde cero aunque la verdad usa más el GML que la interfaz gráfica del Game maker.

Se me olvidaba, está en inlges!

Un saludo.


+1
Para el que sepa inglés, los tutoriales de Tom Francis son buenísimos. Muy bien explicados y con calma y con la ayuda del vídeo es imposible perderse mientras aprendes.
Buenas de nuevo.....

Antes se me pasó poner link a otro tutorial (este en modo texto): http://forums.tigsource.com/index.php?topic=3142.0
Yo sigo a estos dos tipos en youtube que tambien tienen tutoriales.

https://www.youtube.com/user/999Greyfox
y
https://www.youtube.com/user/uheartbeast

El primero es un crack que te enseña sobretodo como hacer cosas especificas y de manera simple y que las entiendas, casi todos los tutoriales de los demas surgen a raiz de los codigos que usa el y lo mencionan muchas veces tambien.

El segundo es algo mas tecnico pero a mi me parece tambien que explica muy bien y tiene bastantes videos, algunos basados en pixelart.

Ni que decir tiene que los dos son en engliski y bueno que tanto ellos como los demas que veais siempre os diran de hacer las cosas con codigo.
En esta web podeis generar música para vuestros juegos. Seguid los tutoriales para enteraros un poco de como va (aunque es bastante lioso). Se basa en una serie de numeros que insertamos (o se eligen de forma aleatoria) para crear las canciones.

También se puede modificar el ritmo, instrumentos, etc... utilizando otros apartados. En fin, lo mejor es que veais el tuto a ver si os queda algo claro.

http://www.abundant-music.com/
Yo voy a coger el código del wasteland y voy a intentar hacer algo parecido al risk of rain pero con vista isométrica. A ver si soy capaz.
Me suscribo al hilo.

Estaba estudiando cámaras y sus problemas, y leyendo este documento (aviso que no tiene relación con GM) me he llevado la grata sorpresa de ver como Hyper Light Drifter lo ponen como buen ejemplo de buena cámara con pixelart.

PD: ¡Hyper Light Drifter es impresionante! ¡Qué ganas de que salga!

Imagen
Yo también me apunto. A ver si dejan de fallar los servidores y se puede acceder a las licencias...

Por lo que se ve, en castellano hay pocos recursos aunque así por encima, siguiendo los tutoriales desde dentro del programa puedes ir familiarizándote.
excess escribió:Yo también me apunto. A ver si dejan de fallar los servidores y se puede acceder a las licencias...

Por lo que se ve, en castellano hay pocos recursos aunque así por encima, siguiendo los tutoriales desde dentro del programa puedes ir familiarizándote.


Yo conseguí introducir las licencias ayer. Aunque en el apartado de la web te dice que no se pueden mostrar las licencias, si que te deja introducirlas.

Una vez descargado e instalado el Game Maker, creas un nuevo proyecto, te vas a Help---> Update License (si no te la pide ya por defecto al ejecutar el programa) y en el apartado del medio haces Log In con tu cuenta. Te pedirá reiniciar el programa y se descargarán los datos del Studio Pro y el modulo Android si ya las has introducido en la web.
Aporto cosillas por si no las tenéis:
- De la página de locomalito un pdf explicándo como pasa de concepto a sprite que me parece muy interesante:
http://www.locomalito.com/images/covers/Haciendo_sprites.pdf
- Tengo un manual de Game Maker en castellano, si os soy sincero no sé ya de donde lo saqué, así que para no contravenir las normas del foro si alguien lo quiere le paso la dirección de descarga por mp.

Por otro lado, me parece genial este hilo para irnos ayudándo, creo que no es una labor precisamente fácil y entre todos podemos hacerla más llevadera.
Yo llevo días dándole vueltas a la idea del juego (tenía ganas de probar a hacer uno pero cuando compré el bundle mi cabeza dejo de pensar) y al fin tengo ya el concepto de lo que quiero.
A medida que vaya desentramando todo (concepto + bocetos) no tengo problema en compartirlo con vosotros, no hago esto para hacerme rico ;P
Me suscribo.

Ya tengo el GM8 y el GMS, pero el módulo de Android y sobre todo los juegos con su código fuente me han obligado a pasar por caja otra vez. [risita] La pena es que me voy de vacaciones mañana y no podré echarle un ojo hasta dentro de una semana.
¿Está el código fuente entero de cada juego o son muestras y/o ejemplos?
Gracias @speak121 por el aporte. A uno que yo me se le va a venir bien [chulito]

Aborerto escribió:Me suscribo.

Ya tengo el GM8 y el GMS, pero el módulo de Android y sobre todo los juegos con su código fuente me han obligado a pasar por caja otra vez. [risita] La pena es que me voy de vacaciones mañana y no podré echarle un ojo hasta dentro de una semana.
¿Está el código fuente entero de cada juego o son muestras y/o ejemplos?


Acabo de bajarme el codigo fuente del Spelunky y viene completo. Todos los sprites, sonidos, scripts (muy detallados por cierto) y niveles. Vamos, viene el juego completo sin compilar.

P.D. Algún compositor de música en la sala que comparta sus conocimientos y ofrezca alguna herramienta sencilla para crear?
P.D.2: Añado una web para crear sprites y animaciones (por si os pilla en algun sitio y no teneis Game Maker y estais creativos; se pueden crear online sin descargar ningún programa)
http://www.piskelapp.com/
P.D.3: He editado el post principal añadiendo los aportes de los EOLianos para que, si el hilo crece, esté accesible toda la información que vamos añadiendo
Buenas! La key sirve para Steam¿?

Saludos
ChUnGoS escribió:Buenas! La key sirve para Steam¿?

Saludos

Creo haber leído que en catorce días, desde que acaba el bundle, se podían solicitar.
Pues estaré atento XD muchas gracias por la respuesta!

Saludos
Estoy probando el piksel y pese a ser fácil de usar para mí tiene un fallo: no se si es por usar una resolución alta o usar varias capas pero se me ralentiza mucho cuando tengo que deshacer o rehacer algo y me jode un pelín.

Conocéis algún otro programa para pixel art que sea completillo y fácil de usar?
Trabis escribió:^ Aseprite


Estoy probándolo y me parece tan absurdo algunas cosas que tiene (o yo no consigo entenderlas).

1.- No consigo añadir un color a la paleta
2.- No consigo ver el lienzo al completo, estoy intentando hacer un fondo con resolución 800x480 y tengo que ir navegando de arriba a abajo cosa que se me hace muy incómodo a la hora de ver el resultado.
3.- Pa que cojones tienes la opción de ponerle nombre a una capa si luego se ponen como A, B, C, etc...

Me estoy volviendo loco xq lo que necesito de un programa lo tiene otro y viceversa. Tan difícil es que en el Piskel tuviese la opción de abrir varios proyectos a la vez o poder redimensionar un objeto en si?

Voy a descansar un rato y ver alguna serie que estoy saturado :/

Saludos y gracias por el consejo del programa.

EDIT: Puse Piksel en lugar de Piskel
Trabis escribió:^ Prueba con estos otros:

Aseprite 1.0.5
Grafx2
piq


El Aseprite 1.0.5 es bastante mejor que el anterior que tenía yo, thanks :3
^ Genial, entonces igual te va mejor la versión del pasado 27 Agosto. (Aseprite v1.1.0.1)

Windows
Mac

PD: ¿Qué chula se ve esa paleta de 16 colores inspirada en el Commodore Amiga, verdad?
(Sacada de su página de Github: https://github.com/aseprite/aseprite ,abajo de todo.)

Also it includes color palettes created by:
Richard "DawnBringer" Fhager palettes, 16 colors, 32 colors.
Arne Niklas Jansson palettes, 16 colors, 32 colors.

ImagenImagen
Here's the RGB-values:
20 12 28
68 36 52
48 52 109
78 74 78
133 76 48
52 101 36
208 70 72
117 113 97
89 125 206
210 125 44
133 149 161
109 170 44
210 170 153
109 194 202
218 212 94
222 238 214
Estoy creando un juego desde cero usando el Game Maker, y entre los tutoriales que vas encontrando googleando mas lo intuitivo que es el programa voy avanzando bien (de momento pocos parones).

Mi problema viene con la creacion de sprites, que soy un cero a la izquierda, y mas para la calidad y detallismo que me he propuesto... asi que estoy tirando de sprites libres.

Voy a crear aqui una lista de webs con sprites por si alguien lo necesita. Si conoceis alguna web mas avisad y las voy incluyendo ^^

Lista de webs con material libre:
· Sprites, texturas, musica, etc:
http://opengameart.org/

· Sprites, texturas, musica, etc:
Reiner’s Tilesets

· Sprites:
http://pousse.rapiere.free.fr/tome/

· Sprites:
http://www.dumbmanex.com/bynd_freestuff.html

· Casi 2.000 Iconos
http://game-icons.net/


· Texturas:
http://www.cgtextures.com/
http://www.mayang.com/textures/
http://www.blendswap.com/
Pequadt escribió:Estoy creando un juego desde cero usando el Game Maker, y entre los tutoriales que vas encontrando googleando mas lo intuitivo que es el programa voy avanzando bien (de momento pocos parones).

Mi problema viene con la creacion de sprites, que soy un cero a la izquierda, y mas para la calidad y detallismo que me he propuesto... asi que estoy tirando de sprites libres.

Voy a crear aqui una lista de webs con sprites por si alguien lo necesita. Si conoceis alguna web mas avisad y las voy incluyendo ^^

Lista de webs con material libre:
· Sprites, texturas, musica, etc:
http://opengameart.org/

· Sprites, texturas, musica, etc:
Reiner’s Tilesets

· Sprites:
http://pousse.rapiere.free.fr/tome/

· Sprites:
http://www.dumbmanex.com/bynd_freestuff.html

· Casi 2.000 Iconos
http://game-icons.net/


· Texturas:
http://www.cgtextures.com/
http://www.mayang.com/textures/
http://www.blendswap.com/



Te entiendo perfectamente con lo de los sprites, son mi mayor debilidad. Añado los enlaces al post principal, y muchas gracias por compartirlos! Les estoy echando un ojo y hay cosas muy muy buenas.
Por cierto, algun autor de esas webs que he puesto tienen algunos requisitos si vas a usar algun material suyo de forma comercial (por ejemplo alguno pide que se les cite con X nick o nombre de pila). Ya que ponen material sin pedir nada a cambio (algunos ponen para donar), leerlo atentamente ^^
Pues a mí me encanta hacer sprites. Lo que hago es crear bocetos a tamaño más pequeño (en el game maker podéis luego sobredimensionarlos para adecuarlos al proyecto), cuando tenga el juego ya apuntalado entonces me pondré en serio a hacerlos al tamaño deseado y a definirlos bien.
No creo que sea bueno crear un juego con sprites que no sean vuestros. Al fin y al cabo un juego es una seña de identidad, si utilizais graficos ajenos nunca llegaréis a mostrar lo que tenéis en mente (así lo veo yo :S)
Ejemplo:
Boceto de un perro saltando para el juego que estoy haciendo:
Imagen
speak121 escribió:Pues a mí me encanta hacer sprites. Lo que hago es crear bocetos a tamaño más pequeño (en el game maker podéis luego sobredimensionarlos para adecuarlos al proyecto), cuando tenga el juego ya apuntalado entonces me pondré en serio a hacerlos al tamaño deseado y a definirlos bien.
No creo que sea bueno crear un juego con sprites que no sean vuestros. Al fin y al cabo un juego es una seña de identidad, si utilizais graficos ajenos nunca llegaréis a mostrar lo que tenéis en mente (así lo veo yo :S)
Ejemplo:
Boceto de un perro saltando para el juego que estoy haciendo:
Imagen


Con qué programa lo haces? xD

A mi se me hace super dificil crear sprites, y eso que me gusta dibujar pero se me hace cuesta arriba un dibujo pixelado cuando sin pixel lo hago bastante más rapido xDD.
Ese está hecho en piskelapp directamente. Pero también he visto que la página permite importar graficos externos. Puedes crear el dibujo en photoshop e importarlo después.
PD: Hace más de veinte años lo único que sabía hacer era fondos de pantalla pixel a pixel en el ordenador.. y me pasaba horas muertas.. creo que algo de ahí quedó jajajaja
speak121 escribió:Ese está hecho en piskelapp directamente. Pero también he visto que la página permite importar graficos externos. Puedes crear el dibujo en photoshop e importarlo después.
PD: Hace más de veinte años lo único que sabía hacer era fondos de pantalla pixel a pixel en el ordenador.. y me pasaba horas muertas.. creo que algo de ahí quedó jajajaja


Pues mola, yo estoy usando ahora el aseprite que puso un compañero. Y me va bien xq puedo cortar, pegar, girar, redimensionar, etc... Pero claro, estoy verdísimo xD
Pero los sprites que creais son desde cero? (es decir, sobre un lienzo en blanco vais dibujando los pixeles?), o usais una imagen creada por vosotros (o sacada de X sitio) y la retocais?

Hoy he estado usando el photoshop para crear texturas de barro, y he usado una imagen real, despues la he retocado para que quede en espejo por lo 4 costados y asi poder crear una seccion de barro grande... me he tirado horas, y el resultado es aceptable... pero esta claro que esta hecho de forma amateur total [snif]
Pequadt escribió:Pero los sprites que creais son desde cero? (es decir, sobre un lienzo en blanco vais dibujando los pixeles?), o usais una imagen creada por vosotros (o sacada de X sitio) y la retocais?

Hoy he estado usando el photoshop para crear texturas de barro, y he usado una imagen real, despues la he retocado para que quede en espejo por lo 4 costados y asi poder crear una seccion de barro grande... me he tirado horas, y el resultado es aceptable... pero esta claro que esta hecho de forma amateur total [snif]


Yo lo hago de 0, ya te digo que mis sprites son un mojón ahora mismo xD. Simples y sin sombra apenas (y básicamente sin curvas). Pero es eso, me estoy haciendo al programa y lo que puede dar de sí, además de "intentar" usarlos para un chorrijuego y ver también lo que se puede hacer con Game maker cuando somos totalmente amateur y sin idea alguna xDDDD.
Desde cero. En el caso del perro pixel a pixel, pero en otros te lo llevas a photoshop y empiezas a dibujar con formas básicas... vamos como en teoría aprendes a dibujar a mano alzada.
Estoy teniendo un problema de programacion (no se programar, lo digo desde ya jajaja) para crear items con valores.

Tengo creado el objeto aldeano (obj_aldeano para los amigos) y quiero darle un valor inicial de 10. Despues tengo el obj_pescador con valor inicial 0. Tengo una cabaña del pescador, que cuando le haces click te aparece un menu con un boton arriba y un boton abajo. Quiero hacer que al darle al boton de arriba el valor del aldeano baje 1 y el del pescador suba 1 (basicamente pones a trabajar a un aldeano siempre y cuando haya uno libre, o envias al paro a un pescador siempre y cuando tengas pescadores, para evitar trampas jejeje).

Pero claro, los tutoriales del juego solo funcionan con score y lives, ya estan pre-programados y es facil cambiar esos valores desde otros objetos... pero para estos items inventados no vale [+risas]

Si alguien puede echarme un cable se lo agradecederia enormemente :-? :-?

EDIT:
Esto es lo que tengo:

· obj_contador (es un objeto persistente, sin sprite, que va a llevar la cuenta de todos los items y demas cosas que se vayan desbloqueando/adquiriendo)
Event -> Create -> Code
aldeano = 10;
pescador = 0;


· obj_bot_mas_pesc (un boton con un simbolo de mas con el cual quiero que añada un pescador quitando un aldeano)
Event -> Left Button -> Code
if (aldeano > 0){
    Aldeano.aldeano -= 1;
    Pescador.pescador += 1;
}



Cuando le doy a probar el juego, me aparecen los 10 aldeanos (tengo puesto con letras que me informe de cuantos aldeanos hay). Accedo a la cabaña del pescador, que es una nueva room donde tenemos el boton para añadir un pescador mas. Pero al hacerle click da el siguiente error:


___________________________________________
############################################################################################
FATAL ERROR in
action number 1
of Mouse Event for Left Button
for object obj_bot_mas_pesc:

Push :: Execution Error - Variable Get 100307.Aldeano(100002, -2147483648)
at gml_Object_obj_bot_mas_pesc_LeftButtonDown_1 (line 2) -     Aldeano.aldeano -= 1;
############################################################################################
Pequadt escribió:Estoy teniendo un problema de programacion (no se programar, lo digo desde ya jajaja) para crear items con valores.

Tengo creado el objeto aldeano (obj_aldeano para los amigos) y quiero darle un valor inicial de 10. Despues tengo el obj_pescador con valor inicial 0. Tengo una cabaña del pescador, que cuando le haces click te aparece un menu con un boton arriba y un boton abajo. Quiero hacer que al darle al boton de arriba el valor del aldeano baje 1 y el del pescador suba 1 (basicamente pones a trabajar a un aldeano siempre y cuando haya uno libre, o envias al paro a un pescador siempre y cuando tengas pescadores, para evitar trampas jejeje).

Pero claro, los tutoriales del juego solo funcionan con score y lives, ya estan pre-programados y es facil cambiar esos valores desde otros objetos... pero para estos items inventados no vale [+risas]

Si alguien puede echarme un cable se lo agradecederia enormemente :-? :-?


Si ya tienes claro como asignar las variables y como hacer que salga el menú después de pulsar en la cabaña solo te faltaría añadir que al pulsar en esos botones sume y reste en las variables que tu quieras, esto hay varias formas de hacerlo, la mas sencilla creo que seria simplemente añadir dos objetos llamados flecha arriba y flecha abajo con un evento mouse/left button, luego añades código a ese evento (en control/code el primer icono) y en flecha arriba escribes esto:

pescador+=1;
aldeano-=1;

con eso simplemente sumara y restara 1 en esas variables, pero si quieres que solo puedas añadir pescadores si tienes aldeanos se debería añadir algo asi:

if aldeano>=1
{
pescador+=1;
aldeano-=1;
}

si esas variables las has creado en diferentes objetos te dará error por que intentara buscarlas en el objeto flecha arriba y en realidad están en otro objeto, para solucionar eso puedes crear variables globales o hacer que el objeto flecha acceda a las variables de los otros objetos.

para crear una variable global pones algo como esto:

global.aldeano=10;

y si quieres acceder a variables de otros objetos sin ser globales es algo asi:

if obj.aldeano.aldeano>=1
{
obj.pescador.pescador+=1;
obj.aldenado.aldeano-=1;
}

siendo lo primero el objeto y después del punto la variable.

Con el objeto flecha abajo haces lo mismo pero a la inversa, restas pescadores y sumas aldeanos.

Espero haberme explicado bien. porque estas cosas siempre me cuesta un poco explicarlas y si he metido la pata que venga alguien y me corrija que yo también estoy empezando en esto.
AzaToch escribió:
Pequadt escribió:Estoy teniendo un problema de programacion (no se programar, lo digo desde ya jajaja) para crear items con valores.

Tengo creado el objeto aldeano (obj_aldeano para los amigos) y quiero darle un valor inicial de 10. Despues tengo el obj_pescador con valor inicial 0. Tengo una cabaña del pescador, que cuando le haces click te aparece un menu con un boton arriba y un boton abajo. Quiero hacer que al darle al boton de arriba el valor del aldeano baje 1 y el del pescador suba 1 (basicamente pones a trabajar a un aldeano siempre y cuando haya uno libre, o envias al paro a un pescador siempre y cuando tengas pescadores, para evitar trampas jejeje).

Pero claro, los tutoriales del juego solo funcionan con score y lives, ya estan pre-programados y es facil cambiar esos valores desde otros objetos... pero para estos items inventados no vale [+risas]

Si alguien puede echarme un cable se lo agradecederia enormemente :-? :-?


Si ya tienes claro como asignar las variables y como hacer que salga el menú después de pulsar en la cabaña solo te faltaría añadir que al pulsar en esos botones sume y reste en las variables que tu quieras, esto hay varias formas de hacerlo, la mas sencilla creo que seria simplemente añadir dos objetos llamados flecha arriba y flecha abajo con un evento mouse/left button, luego añades código a ese evento (en control/code el primer icono) y en flecha arriba escribes esto:

pescador+=1;
aldeano-=1;

con eso simplemente sumara y restara 1 en esas variables, pero si quieres que solo puedas añadir pescadores si tienes aldeanos se debería añadir algo asi:

if aldeano>=1
{
pescador+=1;
aldeano-=1;
}

si esas variables las has creado en diferentes objetos te dará error por que intentara buscarlas en el objeto flecha arriba y en realidad están en otro objeto, para solucionar eso puedes crear variables globales o hacer que el objeto flecha acceda a las variables de los otros objetos.

para crear una variable global pones algo como esto:

global.aldeano=10;

y si quieres acceder a variables de otros objetos sin ser globales es algo asi:

if obj.aldeano.aldeano>=1
{
obj.pescador.pescador+=1;
obj.aldenado.aldeano-=1;
}

siendo lo primero el objeto y después del punto la variable.

Con el objeto flecha abajo haces lo mismo pero a la inversa, restas pescadores y sumas aldeanos.

Espero haberme explicado bien. porque estas cosas siempre me cuesta un poco explicarlas y si he metido la pata que venga alguien y me corrija que yo también estoy empezando en esto.



Gracias por la respuesta, justo he editado lo que tenia para daros mas informacion, pero al acabar de editar ya habias contestado tu. Ahora mismo la leo a ver si logramos poner a trabajar a mis pescadores xDD


EDIT:

Si!! Ha sido añadir global. delante de aldeano y de pescador en todos los sitios (3 objetos en total), y tachan! Funciona!!

Muchas gracias @AzaToch , no te imaginas el dolor de muelas que se habia vuelto esta tarea tan sencilla. He estado mirando en muchos foros y webs, y en ninguno aparecia lo de global.

Eso si, no eres nada popular en el gremio de pescadores. Tras vivir de la sopa boba todo este tiempo, por tu culpa tienen que volver a casa oliendo a pescado XD

PD: ahora tengo que buscar como añadir un temporizador al click izquierdo, porque ha sido hacer un click y mandarme 3 trabajadores de golpe. Despues he hecho un click rapidisimo y solo ha mandado a uno. Pero seguro que esto es facil, ya os contare ^^

EDIT 2: Ya esta solucionado el tema del click. Simplemente cambiar "Left button" por "Left pressed".
Yo aún ni he empezado con la programación en game maker, pero solo dos apuntes is estais comenzando a programar:
- sólo usar variables globales si es necesario. Tened en cuenta k estas variables permaneceran guardadas todo el rato y ocuparan memoria
- si acaso deja (k no deberia) nombrar a una variable con un punto en medio no lo hagais. Tarde o temprano el codigo se volvera ilegible y muy dificil de rastrear. Trabajamos por lo k se ve con objetos, asi k en vez de poner un punto poned _
speak121 escribió:Yo aún ni he empezado con la programación en game maker, pero solo dos apuntes is estais comenzando a programar:
- sólo usar variables globales si es necesario. Tened en cuenta k estas variables permaneceran guardadas todo el rato y ocuparan memoria
- si acaso deja (k no deberia) nombrar a una variable con un punto en medio no lo hagais. Tarde o temprano el codigo se volvera ilegible y muy dificil de rastrear. Trabajamos por lo k se ve con objetos, asi k en vez de poner un punto poned _


De hecho, a la hora de usar "." se puede liar mucho, pongo un ejemplo:
Imaginaos un juego en el que teneis un Objecto llamado obj_jugador que está en la pantalla. Si en algún evento de otro objeto escribimos esto:

obj_jugador.x (Esto haría referencia a la posición x de cualquier obj_jugador que haya en pantalla)
Puede ser util para teletransportar objetos, crearlos o hacer que se muevan a esa dirección en concreto. Al utilizar obj_jugador Game Maker nos lo marcaría en color y sabriamos que ahí pasa algo. Sin embargo, si utilizamos una variable podríamos no darnos cuenta. Como en este ejemplo:

jugador1.x
En este caso "jugador1" sería una variable y al añadir ".x" estamos especificando que queremos el valor de la posición "x" que tiene asignado. Por ejemplo:
instance_create(12, 205, obj_jugador)
Esta linea crearia una instancia del obj_jugador en la posicion   x = 12,   y = 205. Si añadimos la variable jugador1 podemos guardar los datos de "x" e "y" en esa variable:

jugador1 = instance_create(12, 205, obj_jugador)
Ahora jugador1.x sería "12" y jugador1.y sería "205" y tendría asociado la misma ID que el objeto que se ha creado (Game Maker crea distintas ID para poder diferenciar objetos repetidos)
De ahí la importancia de no usar los "." en las variables; solo para los casos en que son necesarios como global.jugador1 o jugador1.x. Hay que evitar usar los "." para darles nombres como "pajaro.fuego" o "pajaro.agua"; mejor usar "pajaroFuego" o "pajaroAgua" (Acordaos siempre de llamar a las variables con sus minúsculas y mayúsculas)
Muy interesante un video que vi hace poco de Jan Willem Nijman de Vlambeer. Ya sabeis que estos chicos son los creadores de Ridiculous Fishing, Super Crate Box, Luftrauser y Nuclear Throne entre otros.
En el video se comparten algunos consejos para hacer vuestros juegos de acción más divertidos.
El video es este
Me temo que voy a ser el pesado de este post [+risas]

Volviendo a mi juego de los aldeanos en huelga.

En la room_main (la primerisima, ya me curraria despues logos, menu del juego etc).
Tenemos un obj_control con un evento de creacion y este codigo
global.aldeano = 10;
global.pescador = 0;


Bien, empezamos con 10 aldeanos, y el objeto para mostar en pantalla cuantos aldeanos y pescadores marca 10 y 0 respectivamente.

Entramos en room_cabana_pesca (la cabaña del pescador)
Y aparecia un boton con sprite con un simbolo mas y uno menos. El boton mas tenia un evento de click izquierdo con el siguiente codigo:
if (global.aldeano > 0){
    global.aldeano -= 1;
    global.pescador += 1;
}


El codigo funciona, cuando le haemos click baja un aldeano y sube un pescador, todo correcto, dejamos 5 aldeanos y 5 pescadores

Volvemos al room_main dandole a un boton que al hacerle click nos lleva directos a esa room. Seguimos manteniendo 5 y 5. Pero ahora al hacer click en la cabaña del pescador de nuevo, nos vuelven a aparecer 10 aldeanos y 0 pescadores. Esto es un gran problema ya que el juego resetea todo tu progreso.


Se me ocurre que todo se guarde en un archivo .save usando comandos ini.

Tras un par de horas y haciendo lo siguiente, vuelvo al mismo problema inicial del reseteo de los ciudadanos:

Creo una nueva room (llamada room_start) para seleccionar un juego nuevo. Pongo en el codigo de la room_start el siguiente codigo:
ini_open("SaveGame.sav");
ini_write_real("Dificultad","Media",1);
{
global.aldeano = 10;
global.pescador = 0;
}
ini_close();


Despues un boton que nos lleva a la room_pueblo (que era la antigua room_main). El contador de aldeanos y pescadores dan error porque no pueden acceder a la lectura de los aldeanos. Les añado el siguiente codigo:
ini_open("SaveGame.sav");
ini_read_real("Dificultad","Media",1);

draw_set_color(make_color_rgb(26,47,61));
draw_set_font(fnt_default);
draw_set_halign(fa_left);
draw_text_transformed(12,684,""+string(global.aldeano),2,2,0);

draw_set_color(c_white);
draw_set_font(fnt_default);
draw_set_halign(fa_left);
draw_text_transformed(14,686,""+string(global.aldeano),2,2,0);

ini_close();


Bien, el problema desaparece. Vamos a room_cabana_pescador y añadimos 5 pescadores (modifico el boton de añadir y quitar pescadores para que tengan acceso al archivo con comandos ini). Volvemos al room_pueblo, todo chachi. Vuelta a la room_cabana_pescador y como ya me temia, volvemos a tener 10 aldeanos debido al reseteo...


La verdad es que me he quedado sin ideas... y si instalo el juego el problema aparece igualmente (se me habia ocurrido que ese problema solo ocurria usando el compilador del juego). ¿Alguien sabe que puedo estar haciendo mal?
@Pequadt

Olvidate de todo lo de los sav y marca el objeto como Persistent (en las propiedades del objeto, donde pone Solid, Visible, etc...)

Esto hace que el objeto pase de una room a otra manteniendo el valor de las variables.

Eso si, asegurate de colocarlo en algun lugar que tambien exista en la otra room, por que al marcarlo como persistent te lo va a colocar en la misma X e Y en la que estaba en la primera room.

P.D. Colocalo solamente en la primera room y borralo si lo has puesto en la otra, por que entonces se duplican
@pequadt jaja que follon tienes con el entorno de accion de las variables.
Leyendolo por encima, si al entrar en la room inicializas los valores cada vez k entres en esa room saldran esos valores independientemente de si los has modificado o no.
En programacion hay formas de nombrar funciones para cuando pasas un valor que se modifique vuelva con ese valor o se inicialice al volver.
En el programa deberia haber forma de poner un punto de ruptura donde vayas a la room2 y vuelvas a la 1 desde donde la dejaste, no creando la room1 desde cero.
Jajaja, si, es lo malo de no tener ni idea de programacion y querer hacer un proyecto ambicioso. Lo malo del 90% de los foros y tutos que encuentro es que son para juegos del tipo de Super Meat Boy. Y mi juego es una especie de Heroes of Might and Magic y rol (no tiene ni una cosa ni la otra, pero es por turnos, de hacer crecer tu ciudad, arbol tecnologico, etc).

Por tanto todo lo que leo son rooms pequeñas, cosas que se van a usar y tirar, y no me valen ya que todos los objetos que uso necesito que duren y que vuelvan a estar cuando retrocedes en una room.

Los objetos los hago persistentes (como bien comentaba @Naxuj, pero a la desesperada y siguiendo el comentario de @speak121 sobre las rooms he encontrado y activado esa opcion en todas mis rooms y por fin se guarda absolutamente todo. Hurra!

Muchas gracias por vuestros comentarios de ayuda. Esta claro que no saber programar me va a dar muchos dolores de muela, pero al menos no me falta ambicion y paciencia (por ahora xDD).
Pequadt escribió:Jajaja, si, es lo malo de no tener ni idea de programacion y querer hacer un proyecto ambicioso. Lo malo del 90% de los foros y tutos que encuentro es que son para juegos del tipo de Super Meat Boy. Y mi juego es una especie de Heroes of Might and Magic y rol (no tiene ni una cosa ni la otra, pero es por turnos, de hacer crecer tu ciudad, arbol tecnologico, etc).

Por tanto todo lo que leo son rooms pequeñas, cosas que se van a usar y tirar, y no me valen ya que todos los objetos que uso necesito que duren y que vuelvan a estar cuando retrocedes en una room.

Los objetos los hago persistentes (como bien comentaba @Naxuj, pero a la desesperada y siguiendo el comentario de @speak121 sobre las rooms he encontrado y activado esa opcion en todas mis rooms y por fin se guarda absolutamente todo. Hurra!

Muchas gracias por vuestros comentarios de ayuda. Esta claro que no saber programar me va a dar muchos dolores de muela, pero al menos no me falta ambicion y paciencia (por ahora xDD).


Hmmm un Heroes of M&M, tengo curiosidad por saber como te lo has planteado y como lo estás desarrollando jajajaja, pero bueno. Esperaremos a una beta tuya.

Por el momento @Adinx y yo estamos haciendo un chorrijuego para Android, de estos de pulsar un botón según X cosa, y para calentar motores viene bien. Es sencillo y mientras lo hacemos ya nos van saliendo muchisimas ideas para otros proyectos.
A ver si nos animamos y vamos poniendo screens o algo según avancen los proyectos, estaría interesante ver lo que esta desarrollando cada uno, yo por mi parte estoy intentando hacer una pequeña aventura grafica, a ver que tal sale el invento xD.
Yo tengo un problema MUY grande con los pixels. Vale que primero pueda intentar hacerlo en plan "normal" para luego convertirlo en pixels, suponiendo que me salga bien... no tengo ni la más mínima idea de como encajar las sombras. Es que yo veo algún pixel art tipo Megaman X (que me encanta ese estilo :3) y pienso: como cojones son capaces de con un par de pixels darle "volumen" al personaje... vamos es que yo me veo incapaz. Algún consejillo?
@Adinx he encontrado esto:
http://aev.org.es/como-hacer-un-personaje-estilo-pixel-art/ -> hay te explica paso a paso como crear uno mediante un estilo (seguir en el siguiente enlace)
http://www.mundo-maker.com/t10829-tutorial-estilos-de-pixelart-diversos-aplicados-a-alexis -> aqui te explica los diversos estilos de pintado en pixel-art

PD: Dejo también un foro que me parece muy interesante, de primeras he encontrado un hilo hablando de la elección de colores que se ha ido directamente a favoritos y en las competiciones hay máquinas haciendo genialidades-> http://pixeljoint.com/forum/forum_topics.asp?FID=6
@speak121

Gracias por los links. Os dejo una chorradita que he hecho hace un ratín para ir probando a ver que tal se me daba xD

Imagen
Cuando le doy a probar el juego que estoy haciendo, me pone

minFPS, maxFPS, avgFPS
-30, 3676, 590


Deduzco que esos -30 FPS son cuando carga el juego, pero veo una autentica salvajada que el maximo sean 3.676 FPS y la media 590. No hay alguna forma de limitarlo a 60 FPS o 120 (120 me sigue pareciendo una burrada). Asi se conseguiria mayor estabilidad (supongo) y chupar menos recursos.
@Pequadt

¿Tienes la opcion "use synchronization to avoid tearing" (v-sync de toda la vida xD) activa?, a mi sin eso en el debugger se me dispara entre 500/1200 pero si lo activo baja a 100. Aunque imagino que lo tendrás activo porque el tearing que produce no tenerlo es bestial, al menos en mi caso.

Edit: Haciendo algunas pruebas con esa opción veo que los fps bajan con el tiempo, no de golpe, y suele pasar al azar, a veces tarda mas que otras, pensaba que a lo mejor tenia algo comiéndose recursos con el tiempo pero con la vsync desactivada eso nunca pasa. Ademas en el manual pone:

Use synchronization to avoid tearing - This toggles v-sync on or off. Note, that if you have a game with a room speed of 120 and the player has a monitor with a refresh rate of 60, turning this option on will lock your game speed to 60 too.

Así que debería capar la velocidad, a no ser que haya algo que se me escapa.
AzaToch escribió:@Pequadt

¿Tienes la opcion "use synchronization to avoid tearing" (v-sync de toda la vida xD) activa?, a mi sin eso en el debugger se me dispara entre 500/1200 pero si lo activo baja a 100. Aunque imagino que lo tendrás activo porque el tearing que produce no tenerlo es bestial, al menos en mi caso.

Edit: Haciendo algunas pruebas con esa opción veo que los fps bajan con el tiempo, no de golpe, y suele pasar al azar, a veces tarda mas que otras, pensaba que a lo mejor tenia algo comiéndose recursos con el tiempo pero con la vsync desactivada eso nunca pasa. Ademas en el manual pone:

Use synchronization to avoid tearing - This toggles v-sync on or off. Note, that if you have a game with a room speed of 120 and the player has a monitor with a refresh rate of 60, turning this option on will lock your game speed to 60 too.


Así que debería capar la velocidad, a no ser que haya algo que se me escapa.




Me da un poco de miedo activar el v-sync, ya que en muchos juegos el activar esa opcion me reduce el rendimiento drasticamente (cuando se supone que tendria que ser al reves). Pero voy a toquetear, por probar que no quede ^^




Otra cuestion [+risas]

Necesito un poco de ayuda para poder seguir avanzando en la creacion del juego ya que me he vuelto a quedar atascado (que raro xD). Os explico un poco lo que necesito/quiero hacer y como tengo pensado hacerlo pero que no tengo del todo claro si es la mejor forma ni de como llevarlo a cabo.

Mi juego es bastante simple. Eliges tu raza/pueblo y tu dios. Vas mejorando tus edificios e investigando nuevas tecnologias segun tus necesidades o como quieras orientar la partida.

Cada vez que pasas turno ocurre un suceso aleatorio. Dividire los eventos segun el numero de aldeanos que tengas (puede que mas adelante esto lo cambie si veo que no funciona del todo, pero por ahora la cantidad de aldeanos son los que van a marcar la dificultad).

Por tanto el boton de pasar turno deberia empezar con algo asi:

if global.aldeano >= 1
{
****codigo para que salga un suceso aleatorio****
}

else if global.aldeano >= 25
{
****codigo para que salga un suceso aleatorio un poco mas dificil****
}


y asi sucesivamente con, por ejemplo, 100, 200, X, Y, Z, etc. aldeanos. Supongo que mejor poner arriba los numeros de mayor a menor para que no se ejecute siempre la primera orden, ya que siempre vas a tener mas de 1 aldeano XD

Bien, mis dudas son las siguientes:

· El suceso deberia ser una room nueva, o un objeto que habra una ventana con opciones?
Por "deberia" me refiero a que deberia elegir en cuestion de facilidad para programar los eventos y como puede afectar al rendimiento del ordenador. Con mi escasa experiencia creo que una room sera un poco mas laboriosa pero quedara mucho mas vistoa y sencilla de modificar y ordenarlo todo (un background con unos cuantos textos, y que esos textos tengan al lado un boton para seleccionar que quieres hacer, al seleccionar la opcion aplicara lo que tenga que aplicar (matar aldeanos, conseguir recursos, etc). Creo que ademas si es una room, podria crear unos cuantos eventos de forma mas procedural por lo que me quitaria horas de trabajo.

· Tanto si es un objeto como una room, como puedo hacer para que el juego elija de forma sencilla un suceso aleatorio de una lista predeterminada?


Espero haberme explicado mas o menos bien, y ante todo, gracias de antemano por la ayuda ^^

No se si sera muy conocido el juego, pero quiero hacer una mezcla de King of Dragon Pass y de los miticos Heroes of M&M (aunque de este segundo tendra mas bien poco, solo la gestion del pueblo y poco mas xDD).
124 respuestas
1, 2, 3