martes, 12 de septiembre de 2023

TileVania (01) Game Design

¡Qué pasa! Nos volvemos a ver. Esta vez voy a usar este blog como diario de progreso en mis habilidades para desarrollar programas. 

Hoy vamos con el curso en Udemy de los de GameDev.tv. Lo que voy a hacer es ir anotando aquí cosillas que yo vaya aprendiendo en mis sesiones. También para que me sirva a la hora de buscar ciertas características que necesito de Unity. En este caso vamos a desarrollar un videojuego tipo Metroid, Vania, Mario o como quieras llamarlo, normalmente un "plataformas". 

Cosas que vamos a aprender aquí en este proyecto (lo iré actualizando a medida que avance): 
    - Gestión de sprites. 
    

Diseño del juego (Game Design):

Experiencia del jugador (Player Experience): 
    Bajo presión (Under pressure) .
Mecánica principal (Core Mechanic):
    Correr y saltar (Run and jump) .
Mécanica del juego (Core game loop):
    Ir del punto A al punto B a través de las plataformas y evitando las trampas y enemigos (Get from A to B by navigating platforms and avoiding traps and enemies).


Tema del juego (Game Theme):

¡Escapa! Eres un prisionero y tienes un tiempo límite.


Producto mínimo viable (MVP -Minimum Viable Product- (Gameplay Features)):

Estas son las características mínimas que queremos de nuestro producto. En este caso nuestro juego.

Movimiento del personaje (Character movement):
    El jugador puede correr y saltar.
Trampas / obstáculos (Traps / obstacles):
    Matan directamente al jugador.
Carga del nivel (Level loading):
    Una manera de terminar el nivel y empezar de nuevo.
- Esto no es realmente necesario: Una cuenta atrás (Countdown timer):
    Algún sistema para crear urgencia en el jugador.

Al turrón
Lo primero es conseguir los sprites que en este caso nos lo da el propio curso aunque podemos buscar los nuestros. Necesitaremos sprites para:
    - Las casillas del mapa o del mundo (world tiles)
    - El personaje (character)
    - Los enemigos (enemy)

Lo que hacemos es crear una carpeta en nuestro directorio y arrastrarlos directamente a la carpeta.

Recortando los assets o sprites
El primer problema es que los sprites tienen esta pinta (a la derecha), todos están en una sola imagen y necesitamos recortar uno a uno.

Además hay otro problema, cuando ponemos los sprites o assets en Unity, no coincide con las unidades Unity, que son los cuadros grises que se ven en la imagen de más abajo. Así que:
    - Cambiamos el tamaño de los Pixels Per Unit en el Inspector. En este caso vamos a poner de 100 a 32.
    - Como tenemos varios tiles en una sola imagen, cambiamos el Sprite Mode de Simple a Multiple.
    - Pulsamos en Sprite Editor
    - Arriba a a la izquierda tenemos la opción Slice y y lo hacemos Automatic.
    - Por último aplicamos en Apply, arriba a la derecha y cerramos.


Sin embargo, tenemos un problema con el protagonista (el PJ). Cuando cortamos los pixels de forma automática, no quedan bien 


Así que usamos otra técnica:
    - Slice -->  Type: Grid By Cell Size.
    - El tamaño no es el adecuado así que ajustamos el Pixel Size a X = 32 y Y = 32.
    - Por último, el tamaño es el adecuado pero hay un pequeño espacio entre cada tile (este espacio se llama padding), así que añadimos en Padding X = 6 y Y = 6 (¿Por qué 6? Porque el instructor sabe cuánto Padding existe, normalmente lo sabes cuando compras u obtienes los assets).

¡Tachán!


Por último hacemos lo mismo con los otros assets pero con especial cuidado con el enemigo ya que ha necesitado un poco más de trabajo. Las cuadrículas no cuadraban bien, así que añadí Offset X = 10, Y = 1 para que cuadrasen mejor.




¡Y ya está! Más en el próximo capítulo.





miércoles, 13 de julio de 2016

Formatear: pereza máxima

Hola chicas y chicos. Uno de los problemas que tenía a la hora de publicar algún juego que hiciese en una página web era que necesitabas en plugin de Unity Web Player para poder jugarlo, y solamente en portátiles u ordenadores de sobremesa (¿recordáis?).

Resulta que haciendo tutoriales de Unity vi que en su última versión se puede crear una versión del juego para HTML5 (para la web, vaya) y así poder jugarlo sin necesidad de instalar ningún nuevo plugin.

En particular, Unity Web Player no es nada malo, pero hay que instalarlo, y eso siempre tiene reticencias y para aquellos que no tienen ninguna idea de informáticales resulta un verdadero coñazo. Además hay que añadir que es un follón desinstalarlo, al menos para mí.

¿Cuál es el problema? Pues que los componentes de mi ordenador (menos la tarjeta gráfica y la fuente de alimentación) tienen más de 11 años de antigüedad (sí, y todavía tira con los últimos juegos, flipa pepinillos, que lo mío me costó) y por tanto, tengo una versión de Windows de 32 bits, y para poder hacer un juego para HTML5 necesito la versión de 64 bits (¿no sabes a lo que me refiero? da igual, no es importante). Solución: formatear y reinstalar Windows a 64 bits, lo que para mí es un graaaaaaan coñazo. Más que nada por toda la información que tengo dentro, recopilar todos los programas que uso y volver a instalarlos, y todo el tiempo y esfuerzo que ello conlleva. Así que lo intentaré hacer en los próximos días, pero me da muchísima vagueza hacerlo. ¡Dejad de meterme presión, malditos seáis!

jueves, 23 de junio de 2016

¡Estoy de vuelta! (esperemos)

¡Ehhhhh! ¿Cómo va eso?

Bueno, acabo de ver que la última entrada es del 14 de marzo. Muy bien, muy bien, me plantee una entrada cada semana y muy bien. Si no fuese porque es ¡DEL 14 DE MARZO DEL AÑO 2015! ¡Ojo! Más de un añazo sin escribir Faluko. Tus huevinis ahí. ¡Siempre a tope!

Bueno, esperemos que eso no pase más. ¿Excusas? Mmm... ¿vagancia? No sé, a ver, hay excusas, sí, y justificadas también, pero para no escribir ni una puñetera entrada en más de un año, no. Así que caquita de la vaca, espero que mi inconsistencia y arbitrariedad se conviertan en autocontrol y disciplina, y empezamos de nuevo.

Y... a ver, para los nuevos o como recordatorio personal: este blog es mío y todo lo que aquí publico son mis mierdas mentales varias. En principio lo hice como diario personal, más o menos, a modo de terapia, pero al final lo voy a usar para publicar las cosillas que hago con UNITY (un programa para hacer videojuegos) principalmente, y luego, pues yo que sé. Lo mismo escribo reseñas de películas, series, cómics, libros, juegos, lo que me de la gana y normalmente relacionado con lo que en España se conoce como "cosillas frikis".

También podéis encontrar algunas entradas de otras cosas más serias, opiniones económicas, políticas, sobre educación, etc. Ya os digo que esto es para mí pero no voy a prohibir a nadie que lo vea. Me sirve para aprender algo de HTML, CSS y a manejar blogs, así que al principio será todo MUY caótico. Espero que solo sea al principio.

- Eh Faluko, ese "solo" se escribe "sólo" con tilde, porque si lo puedes sustituir por solamente se escribe con tilde para distinguirlo del "solo" de soledad.
- Pues no, listillo (¿o listilla?). Resulta que ahora la RAE dice que se escribe sin tilde: "solo sé que estoy solo". Por ejemplo, que te voy a meter con el pico de la mesa en todo el dedo meñique del pie. Que vas de lista, vas de guapa. De que nada se te escapa...

miércoles, 11 de marzo de 2015

Progresa Adecuadamente

No va mal la cosilla. Cumplo con casi todas las expectativas que tenía. Aunque, por desgracia, aún sigo teniendo momentos de procrastinación.

Sin embargo, gracias a esa "pérdida de tiempo" me han venido mil y una ideas a la mente para juego y programas, las cuales he anotado. He pensado también en crear un tutorial para crear/diseñar juegos, ya sea en Unity, GameMaker, Unreal Engine o lo que sea para gente totalmente novata como yo. Aparte de todo esto, he visto esta noticia de Howard Gardner:


¿Quién es este tipo? Por lo pronto alguien suficientemente importante o notorio como para tener una página en la Wikipedia. ¿Qué más? 

Howard Gardner es, entre otras cosas, un psicólogo y profesor de la Universidad de Harvard famoso, sobre todo, por formular la teoría de las inteligencias múltiples que dice que no tenemos una inteligencia, sino varias. '¡Qué máquina eres Faluko! ¿Has llegado tú solo a esa conclusión?' Pues no, he necesitado de google.

La teoría de las inteligencias múltiples, a groso modo, nos dice que lo mismo tú eres muy listo para unas cosas y tu primo que no sabe atarse los cordones a los 18 años es más listo que tú para otras cosas. Es decir, divide la inteligencia en 9 (8 originalmente) tipos de inteligencias que no voy a poner porque básicamente iba a "copy-paste" de la Wikipedia, así que paso.

La cosa es que me ha llamado la atención porque habla de evaluar de diferente manera a la que evaluamos en nuestro actual sistema. Sinceramente creo que haríamos bien. A ver, no pienso ser modesto, soy bueno con los estudios y he visto a muchos "cafres" en mi periplo estudiantil (aún estoy en ese periplo), y aún así, muchos de esos "cafres" les va mejor que a mí. ¿Por qué? Pues yo que sé, hay muchos motivos, pero el punto es que ellos son capaces de triunfar en cosas que yo ni siquiera me acercaría y es que las notas que saques, que te evalúan y te sitúan en una lista en la que tienes a gente por encima y por debajo, no valen nada realmente. Solo son un punto de vista, que además no es muy objetivo que digamos.

Creo que los nuevos sistemas educativos que aceptemos, deberían considerar los talentos y pasiones de los estudiantes y potenciarlos, a la par que reforzamos aquellas "inteligencias" más rezagadas de esos mismos estudiantes. Y, sobre todo, crear un sistema justo para todos independientemente de nuestras condiciones.

Ojalá tuviese el modelo perfecto para llevar esto a cabo, pero va a ser que no (aunque alguna lúcida idea tengo). Y mientras tanto, seguiré esperando ese modelo que espero esté instaurado para cuando tenga hijos o nietos, o por lo menos, se vislumbre su semilla.

domingo, 8 de marzo de 2015

Procrastinación

Una semana más vuelvo a escribir, y lo sigo sabiendo, voy un post atrasado. Lo haré esta semana, de verdad. ¡De verdad!

Pero este retraso se debe a una sola cosa: una mala gestión del tiempo. No tengo mucho tiempo, cierto, y de donde no hay no se puede sacar. Pero como si de un Tetris se tratase, puedes gestionarte bien para poder llegar a hacer todo lo que tienes que hacer y aún así descansar bien y que tu cabeza no estalle. ¿Cómo? Pues elaborándote un planning u horarios perfectamente cuadrados pero flexibles. Qué bien suena todo y qué difícil es conseguirlo. Estudios, trabajo, ejercicio, la casa, comer, ducharte, dormir, etc. Un caos y un estrés cuando lo pienso, pero plasmado en el papel no lo es tanto.

Lo primero es averiguar lo impepinable: trabajo, estudio y descanso. Luego hay que añadir los complementos que le dan color a tu vida, ejercicio, comer bien y algún hueco para la novia, amigos y familia. Y luego pero sin obviarlo, tus grandes motivaciones, tus pequeños proyectos personales que algún día puede que no sean tan pequeños. 

Puede que no tengas ningún proyecto, pero seguro que tienes algún hobby o algo por el estilo. Pues es importante dedicarle algo de tiempo, porque cuando se lo dedicas, realmente te estás dedicando tiempo a ti, y antes de dedicárselo a nadie, te lo tienes que dedicar a ti, SÍ O SÍ.

Para cuadrarlo todo bien, he decidido levantarme todos los días a la misma hora (y por consiguiente, intentar acostarme a la misma hora también). Será difícil, lo sé, pero no imposible. Y lo primero de todo es trabajar mi voluntad, que no tengo mucha. Después, dedicarle al desayuno y ejercicio un tiempo específico y no procrastinar durante el resto del día. Para conseguirlo, además, intento no mirar el móvil antes de dormir, ala, nada de noticias, whatsapp, facebook ni leches. Y por la mañana, máximo 5 minutos, ya está.

Muchas veces me entretengo durante ¡horas! Y solo mirando noticias que me afectan nada o menos aún. O pegoseando con vídeos tontos que la gente cuelga en facebook, y de ahí veo algo que levanta mi curiosidad, de ahí otra cosa, total, se ha pasado todo el día, no he estudiado, no he hecho ejercicio y tengo que comer antes de ir a trabajar. Resultado: caquita de la vaca.

Para el estudio lo mismo, horario fijo para temarios y asignaturas, cursos, inglés y más historias guapas de mi día a día. El objetivo es llegar al sábado con todo hecho y que lo único que tenga que hacer el fin de semana sean las "cosas de la casa", trabajar, aprender algo más de programación, diseño de videojuegos y estar con personas, que por lo visto dicen que esto último es bueno también para una vida saludable.

'Faluko, a ver, tampoco quiero ofenderte mucho, pero es que este post ha sido bastante la mierda. Lo has escrito para cumplir con tu objetivo de un post semanal, pero para esto no escribas nada colega'

Vale, vale, un poco ha sido para eso, pero por lo menos, me he metido aquí, he escrito y formalmente no estoy incumpliendo nada.

Y además, ¡qué leches! Que es mi blog, que lo escribo yo, y que no lo lee nadie.

domingo, 1 de marzo de 2015

Ajusta las curvas

Lo sé, he tardado más de una semana en escribir mi siguiente post, pero no me olvido y siempre lo tengo ahí en un hueco de mi mente, pero hay una razón.

Ahora estoy intentando aprender algo más de C#, que es el lenguaje con el escribo los scripts en Unity. ¿Qué leches es un script Faluko? Te lo explicaré: cuando tu juegas a cualquier juego, ya sea en el ordenador, en la tablet, en el móvil, en la consola..., tú interactúas con el juego moviendo el móvil, tocando la pantalla, pulsando las teclas del ordenador o pulsando botones en el mando de la consola. Esa interacción no ocurre por arte de magia. El juego no solamente son gráficos (mejores o peores), detrás de eso hay un "motor de juego", y dentro de esa coctelera que es el motor de juego hay un código que dice lo que ocurre cuando tocas algún botón o haces algo.

Por ejemplo, en Super Mario Bros cuando pulsas el botón correspondiente, Mario salta. En este caso dentro del código hay unas líneas que dicen:

- Si BOTÓN.X es pulsado
      {
        Mario salta
       }

A ver, cualquier programador o desarrollador que lea lo anterior estará echando lágrimas de sangre por sus ojos, pero podría estar casi seguro que cualquiera que sepa leer y no tenga ni idea de programación ha podido entender a lo que me refiero. Claramente hay muchas más cosas en la interacción de "saltar" pero tampoco me voy a enrollar que esto no es un tutorial.

La cosa es que un script son las instrucciones que yo le escribo al ordenador para que entienda que cuando tú pulses una tecla, el juego (en este caso la esfera) haga algo, como moverse hacia delante, atrás o a la derecha.

Pues bien, dicho esto, tras el anterior juego quise hacer otro casi igual, pero esta vez ligeramente diferente. Quise hacer una especie de juego de carreras, donde el objetivo era llegar a una meta con la bola, pero quise introducir los "cubos flotantes" como puntos de control. El objetivo es que consiguieses los 12 cubos siguiendo un recorrido, y luego me dije: ¿No sería genial poder ver el tiempo que has tardado? Pues esto tuve que aprenderlo, porque no tenía ni idea ni aparecía en el tutorial. No tardé mucho pero me estuve planteando ¿y si pongo varios caminos con varios cubos flotantes? Y eso es lo que he hecho. El objetivo del juego sigue siendo conseguir 12 cubos y cuando ya los tengas has terminado y el juego muestra el tiempo que has tardado. ¡Ojo, si coges algún cubo más, el tiempo que aparecerá será el que has tardado desde que iniciaste el juego hasta que conseguiste ese último cubo¡ '¿Qué dices? No me he enterado de eso último que has dicho'. No te preocupes ya lo entenderás cuando juegues.

[Actualizado: Gracias a mi amigo Gon he podido ver que no va en todos los ordenadores, es porque hay que instalar Unity Web Player. Una vez hecho no debería haber problema. Si aún así no te va es posible que te aparezca la pantalla en gris con una pieza de puzle o algo así. En tal caso tendrás que permitir que se ejecute el complemento. ¿Cómo? Botón derecho y permitir complemento o arriba a la derecha, en la barra de direcciones te dirá que se ha bloqueado un complemento, si haces click ahí también puedes permitir la ejecución del complemento.]

Por lo demás, te dejo con el juego y sus instrucciones:

Objetivo: Conseguir 12 cubos en el menor tiempo posible.

Manejo: Puedes manejarlo con las flechas del teclado o con las letras W A S D.

Reinicio: Actualiza la página. 'Hostia tío, que mierda' Lo sé, ya pondré algún botón de reset cuando aprenda. Aún hay muchas cosas en el tintero...



Como siempre, sólo está disponible para PC. Si estáis viendo este blog desde algún móvil no podréis jugar, pero tiempo al tiempo.





Mi tiempo record han sido 22.28 segundos. ¿Eres capaz de superarlo? Si es así pon en los comentarios tu tiempo. Si tienes cualquier problema, ponlo también en los comentarios.