Mediavida Game Dev long run [Hecho en Godot]
Introducción
Bienvenidos al Mediavida Game Dev long run. La intención de este proyecto es poder mostrarle al resto de usuarios cómo un grupo de amateurs comienzan con el aprendizaje de una herramienta de desarrollo de videojuegos y realizan un trabajo de unos 4 meses (a finalizar antes del siguiente Ludum Dare) y donde muestran todos los problemas que encuentran por el camino y cómo tratan de solventarlos.
Hay dos puntos que nos gustaría dejar claros antes de empezar.
- Lo que aquí vais a encontrar no va a ser el trabajo de dos profesionales, ni siquiera de dos personas con unas habilidades superiores a la media. Somos dos aficionados y esto lo hacemos y lo compartimos porque nos gusta y nos apasiona.
- Posiblemente cuando hayan pasado 4 meses lo que tengamos no sea un proyecto finalizado, sino algo a la mitad que todavía tiene bugs y que seguramente no tenga ni siquiera toda la funcionalidad que se va a plantear.
Una vez aclarado esto y si aún quieres seguir leyendo, bienvenido.
Sobre nosotros
Somos dos ingenieros en informática, @kidandcat y @Ridote , a los que nos apasionan los videojuegos (como al resto del foro imagino). Nuestra experiencia previa con la herramienta que vamos a usar, Godot, es de alrededor de una semana. Ambos, @kidandcat y @Ridote , hemos tocado anteriormente algunas herramientas de programación de videojuegos entre las que se encuentran RPG Maker, Game Maker, Unity3D, Unreal Engine, Cryengine, Playcanvas, Pixi js, Phaser, libgdx, pygame e igual me dejo algunas otras. En ninguna hemos llegado a hacer nada digno de mención.
Ahora cada uno se dedica a cosas bastante diferentes. @Ridote se dedica a cosas más cercanas a hardware y @kidandcat suele trabajar con cosas de web, servidores y redes. Ninguno hemos trabajo en nada relacionado con videojuegos de forma directa.
Planteamiento del proyecto.
Vamos a tener alrededor de 18 semanas. Puede parecer mucho tiempo, pero hay que tener en cuenta los costes de aprendizaje de la herramienta y que ambos tenemos trabajo, parejas y vida, le vamos a dedicar el tiempo que se pueda y haremos un esfuerzo pero no somos robots. Por favor sed pacientes y sobretodo comprensivos.
El fin de semana previo a este post hemos estado hablando sobre lo que hacer junto con otro amigo que posiblemente no se una por cuestiones de tiempo. Hemos estado debatiendo bastante sobre qué hacer y si hacerlo en 2D o 3D. Hemos descartado bastantes cosas por su complejidad, ya que queremos empezar por algo que no sea endiabladamente difícil pero de lo que se pueda sacar algo de jugo.
Si cuando demos el parón para el Ludum Dare decidimos que el proyecto va bien y queremos seguirlo y vemos que la comunidad se involucra entonces lo continuaremos. Sino ya veremos si empezamos otro o si abandonamos por falta de motivación o de interés general.
Problemáticas previas
Antes de empezar ya nos encontramos con un problema principal. No tenemos grafistas, compositores, diseñadores de mapas, etc. Esto es un problema a medio plazo ya que cuando llevemos alrededor de dos meses esperamos tener algo suficientemente llamativo como para poder captar la atención de otras personas que quieran unirse y que tengan un nivel amateur como el nuestro. En caso negativo, tenemos que pensar cómo solucionar este problema. Tenemos dos opciones:
- Opción 1: Ir a lo hardcore. @kidandcat puede encargarse de los gráficos y mi pareja puede encargarse de la música mientras yo diseño los mapas.
- Opción 2: Tirar de webs de recursos gratuitos. A pesar de que no vayamos a utilizar el proyecto para sacar dinero, nos gustaría intentar no ir de piratillas con nada y tampoco usar recursos libres random de internet, lo suyo es terminar con algo propio y hecho desde cero.
Planteamiento del juego
Plataforma de desarrollo
Hemos decidido hacerlo en Godot por varios motivos. El primero es que el aprendizaje de la herramienta es bastante simple. El segundo es porque la corres tanto en windows como en linux. La tercera es que es muy ligera y no te hace falta un ordenador potente. Ha sido arbitráreo, podríamos haber elegido cualquier otra como Unity o Unreal. No tenemos nada en contra de ninguna otra pero nos gusta Godot
2D ó 3D
Bueno, después de pelearnos durante todo un fin de semana porque @kidandcat quería 3D y @Ridote 2D hemos decidido decantarnos por el 2D de mutuo acuerdo, ya que no queremos hacer algo en 3D y luego encontrarnos con que no conseguimos a nadie que quiera echar un cable con los modelos en 3D. En 2D podemos tirar de cosas cutres hechas por nosotros. En cuanto al tipo de juego estuvimos barajando varias cosas. @Ridote quería un plataformas con toques RPG y habilidades, @kidandcat quería un Action RPG con vista cenital. Tras convender a @Ridote , @kidandcat volvió a cambiar de idea y ahora quería un survival en el que pudieras construir fortificaciones. Al final hemos decidido que nos quedaremos con el Action RPG porque lo del survival a @Ridote le pareció una locura para empezar y puesto que el Action RPG fue la idea original de @kidandcat quedamos los dos contentos.
Ambientación
Hemos estado debatiendo sobre esto. Nos hubiera molado algo Cyber Punk pero para qué vamos a pelearnos con nada si no tenemos ni grafista. Cuando tengamos el grafista ya veremos, por ahora vamos a centrarnos en el motor. @Ridote tiene una historia montada que quería utilizar para otro juego que iba a hacer con el otro chico anteriormente comentado, así que si conseguimos un grafista podríamos tirar de ahí y ambientarlo todo en un universo Cyber Punk.
Actualización 2018/09/20:
La ambientación será la de dos mundos, el de la oscuridad y el de la luz, entre los que nuestro protagonista podrá viajar. Ambos mundos serán idénticos pero con ligeros cambios y estarán superpuestos entre sí de forma que para conseguir cosas en uno habrá que hacer cosas en el otro.
Mecánicas
El movimiento estará definido por el teclado y la mayoría de habilidades se utilizarán con el teclado. El ratón estará para apuntar y para utilizar habilidades muy básticas. Dependiendo de la habilidad el personaje necesitará pararse para poder castearla o no. Las teclas de las habilidades serán configurables. Un estilo similar a los Zelda antiguos pero con mayor número de habilidades a la vez.
Actualización 2018/08/27:
Al final hemos decidido no usar el ratón para apuntar. Sería un engorro bastante gordo puesto que no estamos en 3D y necesitaríamos muchas más animaciones para que fuera mínimamente fluido el movimiento de apuntar. El personaje se moverá con WASD las flechas del teclado y lanzará las habilidades según el movimiento actual que lleve.
Personaje y clases
No existirán niveles de personaje. El juego estará basado en armas y armaduras con modificadores por atributos.
Con respecto a las clases no hay nada definido todavía. Lo único que se intentará modelar serán diferentes atributos para cada clase y diferentes gráficos dependiendo de la clase. Esto está aún por definir, ya veremos como vamos de tiempo.
Armas, armaduras e ítems
El personaje principal podrá equiparse con diversas armas y armaduras. No hemos pensado aún en si restringir ciertas armas para ciertas clases. Ya modificaremos esta sección.
Habilidades
Queremos intentar ofrecer un abanico de habilidades suficiente como para personalizar tu personaje en las diversas mazmorras que nos gustaría crear. De forma que antes de entrar en una necesites equiparte con lo que vayas a usar y tirar con eso toda la mazmorra. O al menos restringir el cambio de habilidades a cuando no estés en combate. Ya se decidirá.
El daño y la utilidad de las habilidades vendrá definido por los atributos, con modificadores porcentuales que aumenten características básicas. Por ejemplo una armadura podría ofrecer velocidad de movimiento en función de la armadura y la defensa mágica total del personaje.
Actualización 2018/09/20:
- Espada
- Boomerang
- Interacción con el medio (abrir cofres y puertas)
Actualización 2018/10/02: - Empujar bloques
Historia
Por definir. Queremos centrarnos en el motor. Luego ya veremos qué hacemos. Incluso si todo va bien y hay interés se podría debatir con los usuarios activos en el hilo.
Dos mundos discurren uno sobre otro, el Mundo de la Luz y el Mundo de la Sombra. La sombra nunca descansa y el Mundo de la Luz finalmente será invadido. Cuando la Sombra domine a la Luz, el Héroe de las eras se alzará y traerá de nuevo la Luz sobre el mundo y echará a los Señores del Espanto de nuevo a sus dominios en el Mundo de la Sombra. Así ha sido, así es y así será.
El oráculo de las eras
El héroe ha renacido y encarcelado a los Señores del Espanto y destruido al Señor de la Casa de la Sombra. El resto de Señores del Espanto yacen recluidos en cristales y la Luz ha vuelto a ganar sobre la Sombra. El equilibrio se ha roto tras la muerte del Señor de la Casa de la Sombra y la Luz ha vencido a la sombra para siempre.
Pero el gran Héroe de las Eras no contaba con el vástago del Señor de la Casa de la Sombra. Afortunadamente, todo Señor del Espanto ha de matar a su progenitor para liberar sus poderes, y INSERTENOMBRE ve arruinada su existencia dentro del mundo de la sombra como Señor de la Casa principal de la Sombra sin poder despertar la totalidad de sus poderes y con los líderes del resto de casas encerrados en cristales en el mundo de la Luz. Los demonios han perdido la batalla y el Mundo de la Sombra muere. Pero INSERTENOMBRE buscará su venganza contra el Héroe de las Eras.
Multijajajugador
Si se alinean las estrellas y vamos excepcionalmente bien de tiempo intentaremos ofrecer un multijugador en LAN.
Gestión del proyecto
Vamos a utilizar git como herramienta de control de versiones y trello como herramienta colaborativa para crear tablones de tareas. Todavía estamos pensando si compartir ambos o si no tiene sentido hacerlo. Iremos actualizando el hilo semanalmente con las novedades y con el roadmap semanal (los objetivos que nos marquemos para esa semana).
Comunidad de Mediavida, ¿qué puedo hacer yo?
He aquí la síntesis de toda la idea anterior. Este hilo está para no solo mostraros lo que vamos haciendo sino para intentar involucraros a vosotros con el proyecto. ¿Cómo? Como queráis. Ya pueden ser opiniones y críticas como si queréis cuando haya ya cosas hechas testearlo (iremos publicando links para que vayáis probando lo que hay hecho) o si en un momento dado queréis aportar una habilidad en forma de script o un gráfico o uniros al proyecto y pasar al equipo de desarrollo.
Valoraremos todas las ideas que nos deis, las discutiremos y decidiremos si incorporarlas o no. Por favor, no dediquéis mucho tiempo a hacer algo y luego enviarlo. Hablad con nosotros primero para saber si estamos interesados en incorporarlo o no para no haceros perder el tiempo.
Y por supuesto, ¡comentadlo todo! Si veis que falta algo, si veis que hay algo que se podría mejorar o algo que añadir a la documentación, etc, ¡decidlo!.
Links del juego
Vamos a dejar que vayáis probando los progresos. Vamos a tener dos links: el de desarrollo y el de la última versión estable.
Última versión estable
Desarrollo. Esta podrá o no tener los últimos cambios. Además podréis ver una consola con los errores que lance el juego.
¡Ojo! A veces se la va la olla al navegador y hay que recargar presionando Ctrl+F5. Además, hay que clickar la pantalla antes de poder usar los controles lo cual es bastante molesto.
print("¡¡Y empieza el MV Longrun!!");
Roadmap 20/08/2018 - 02/09/2018
- Abrir hilo en Mediavida ✓
- Git, trello y herramientas para gestión ✓
- Estructura del proyecto ✓
- Personaje: movimiento, controles, cámara ✓
- Mapas
- Tilemaps ✓
- Colisiones ✓
- Iluminación ✓
- Oclusión X
- Instancias (cómo crear el mapa y sus objetos) X
- Buscar un conjunto de tileset gratuitos y gráfico de personaje para empezar ✓
- Extras:
- Primer enemigo: Devourer
- Movimiento, colisión e interacción entre personaje y enemigo ✓
- Primer enemigo: Devourer
- Añadidos de segunda semana:
- Probar un player con físicas reales y no kinematic body
- GUI y menú principal
- Implementar ataque de personaje
- Añadidos de tercera y cuarta semana y anteriores (hemos tenido un pequeño parón):
- Probar un player con físicas reales y no kinematic body ✓
- GUI y menú principal (en desarrollo @kidandcat)
- Implementar ataque de personaje ✓
- Implementar boomerang ✓
- Implementar cofres ✓
- Implementar puertas ✓
- Nuevos assets añadidos ✓
- Historia planteada ✓
Roadmap 02/10/2018
Hacemos parón para la MV Jam. No hemos actualizado roadmaps por semanas, lo sentimos. Pero sí hemos hecho cosas. Está todo en el roadmap log.
Roadmap log
- Git, trello y herramientas para gestión ✓
- Buscar un conjunto de tileset gratuitos y gráfico de personaje para empezar ✓
- Estructura del proyecto ✓
- Personaje: movimiento, controles, cámara ✓
- Clases
- Atributos
- Objetos
- Armas
- Armaduras
- Consumibles
- Habilidades e interacción
- Espadazo
- Boomerang
- Empujar bloques
- Coger llaves
- Abrir cofres
- Abrir puertas
- Cambiar de escena
- Mapas
- Tilemaps ✓
- Colisiones ✓
- Iluminación ✓
- Eventos
- Instancias (cómo crear el mapa y sus objetos)
- NPCs
- Enemigos
* Devourer ✓ (lo hemos quitado por ahora del proyecto)
* Evil block ✓
* Kab ✓- Bosses
- Neutrales
- Aliados
- Enemigos
- GUI y menús
- Multijajajugador
Iremos actualizando este hilo semanalmente, aunque sea para decir que no hay actualizaciones.