Curso Kotlin | #17. Proyecto: The Hero Legacy
Tags: spanish, kotlin, tutorial
Published: 2022-12-15 14:00:40

Bienvenido/a a otro capítulo del Curso de Kotlin! Podés consultar el curso completo desde [este link](https://github.com/maxwellnewage/kotlin-course) que te dejo acá. Podés seguirme por [LinkedIn](https://www.linkedin.com/in/maximilianoburgos/) o [Twitter](https://twitter.com/maxwellnewage) si querés estar al tanto de las próximas publicaciones.

Si empezaste esta serie desde cero y ya leíste 16 capítulos, ¡Felicidades! Empezaste a dominar los primeros conceptos fundamentales en Kotlin. Este es el primer paso de tu senda como desarrollador/a. Estamos en una instancia en donde podemos poner en práctica todo lo que aprendiste hasta ahora. Bienvenido/a al primer proyecto de la serie.

## The Hero Legacy
Siempre me apasionaron los juegos de rol, desde muy chico. Es por eso que cada curso donde introduzco algun tema interesante y aplicable al código, intento crear algún proyecto basado en este género de juegos. The Hero Legacy cuenta la historia de un heroe que va por el mundo tomando decisiones y peleando con enemigos.

En si misma, la historia es más genérica que esa hamburguesa que te comiste la semana pasada, la cual te vendieron por más valor porque tenía un poco más de bacon. Lo importante en este punto es aplicar todo lo que aprendimos hasta ahora en un juego funcional y entretenido.

### ¿Va a ser como Pokemon?
En principio sería como una aventura por texto, dado que nuestra herramienta actual es la consola. Pero a futuro es probable que quizá en el curso de Android con Kotlin se termine haciendo algo más gráfico utilizando las bases, y quizá alguna librería (¡súbete al tren el hype!) que terminemos generando en este curso.

Quizá lo más interesante es que, además de enseñarte a aplicar todo lo aprendido; te voy a conducir en el desarrollo de un proyecto entero, desde el planeamiento hasta la ejecución y posibles pruebas del mismo.

### ¿De que se trata el juego?
La idea es tener un personaje principal, el “Hero”, el cual tendrá una serie de atributos que se irán modificando y re-adaptando a lo largo de los demás capítulos, especialmente cuando nos metamos de lleno al paradigma de la programación orientada a objetos.

Algunos de estos atributos serán vida, ataque, defensa, persuación, dinero, entre otros. Nuestro heroe podrá viajar a distintos lugares e interactuar con otros PNJ (personajes no jugables) los cuales nos otorgarán una serie de respuestas según vayamos interactuando con ellos. Por ejemplo:

```
PNJ: Buenas tardes, ¿como te llamas?
> Maxwell
PNJ: ¡Bienvenido a Ciudad Celeste Maxwell! Te gustan las vistas? (si/no)
> patata
PNJ: No comprendo lo que me dices, mejor será que te marches.
```

Aquí podemos observar una de las increíbles interacciones que tendrá nuestro heroe. Las decisiones lo llevarán a perder o ganar sus atributos, y si la serie empieza a tener éxito, podría incluso agregar misiones y lugares en un mapa.

### ¿Puedo llevarme este proyecto a otros lenguajes, como Python?
Podrás desarrollar este juego en cualquier lenguaje de programación, aunque a medida que avancemos en el aprendizaje de Kotlin, habrán características muy específicas que serán distintas (en aplicación o incluso existencia misma) a otras tecnologías. Pero el modelado de datos, por ejemplo, es perfectamente transferible a una API desarrollada en NodeJS y ExpressJS.

### ¿Puedo utilizar este proyecto para hacerme millonario y dominar el mundo?
Podés intentarlo, absolutamente: mi proyecto es de distribución libre, y si bien es de mi autoría (la cual te pido que sigas manteniendo), podrías continuarlo y darle escalabilidad hasta convertirlo en un juego real. Estos artículos te van a dar las bases para construirlo, pero imaginarás que solo con esto no podrás tener un juego listo para producción. Sin embargo, tendrá la complejidad suficiente para ser considerado aceptable; y quizá si lo migras a algun game engine como [KorGE](https://korge.org/), lo puedas publicar en Steam y se vuelva un videojuego exitoso.

## Próximos pasos
Decidí dedicar un artículo de esta serie para dar una introducción teórica al proyecto, pero en el próximo trabajaremos directamente en el código. Espero que te encuentres tan emocionado/a como yo, porque el viaje acaba de comenzar.