Segundo intento. Tampoco es que progresase mucho en el primer intento pero me estaba dando mucho asco el código así que vamos a empezar de nuevo y a estructurarlo y montar bien.
Penedès Apocalypse (de nuevo, título provisional) es un videojuego de texto. Es un RPG mundo abierto ambientado en un Penedès postapocalíptico. Suena lo más aburrido, mainstream y pesado de la historia pero honestamente no tengo más imaginación que esa.
Esta página será una especie de devlog. No estará bien escrito ni será demasiado agradable de leer. Su propósito es más que nada que yo me ordene las movidas. Mis habilidades de programación son bastante pésimas. El 95% de veces no tengo ni idea de lo que estoy haciendo. Si tú tienes la menor idea de esto te recomiendo que te des la vuelta y no continúes leyendo, pues encontrarás cosas realmente desagradables para tu vista e intelecto.
Antes de ponerse a hacer la parte creativa del juego (pensar en world building, historia, redactar diálogos, misiones...) se debería hacer alguna especie de "motor" sobre el que funcionará el juego. Es decir, una base sólida sobre la que poder construirlo. Esto consistiría en montar el sistema de mapas, personaje, movimiento de éste, ítems, comandos, etc.
La manera de interactuar con el juego será con comandos. Éstos podrían ser "ir norte", "ir sur", "examinar área", etc. Estos comandos consistirían en una acción + argumentos. Por ejemplo, en "ir norte", "ir" es la acción a hacer y "norte" es uno de sus argumentos. Vamos, que no estarían los comandos hardcodeados.
El juego consiste en varios mapas. Principalmente, uno para el Baix Penedès entero y otros para los interiores de edificios, dungeons (las habrá?), etc. Es una división similar a la que hacen la mayoría de videojuego. Por ejemplo, el interior de un edificio puede ser más grande que su exterior. Cosa obviamente imposible en la vida real pero común en los videojuegos.
Las áreas serían subdivisiones del mapa. Como un sistema de tiles aunque no exactamente: cada área sería una zona pequeña del mapa en la que te encuentras, y el movimiento del jugador sería a través de las áreas. Es algo similar a Colossal Cave Adventure.
El comando "ir norte" te movería un área hacia el norte, y así. No sé si implementar tambien ejes diagonales. La verdad es que moverse en diagonal sería bastante asqueroso haciendo algo como norte este norte este norte este.
Cabe decir que en el anterior intento de hacer todo esto cometí el error de guardar todos estos objetos (mapas, áreas, ítems, personaje...) en listas. Para referenciar un objeto desde otro usaba simplemente la propiedad "name" que era como el nombre de lo que fuese. Así que cuando quería acceder al objeto en cuestión mi pobre código tenía que loopear por toda la lista para encontrarlo. Y esto es algo que se hace de manera bastante recursiva. Clunky, feo, y no quiero ni imaginar lo lento que podría llegar a ser esto cuando la cantidad de datos fuese más grande. Ahora la idea es almacenar los objetos en diccionarios y referenciar estos mismos dónde sea. En teoría según se vaya haciendo más grande la cantidad de datos debería ser exactamente igual de rápido. Creo, vamos.
A ver porque yo pensaba que no iba a ser tan complicado. El mapa ha de contener la totalidad del Baix Penedès y no puede ser que haya áreas menos mapeadas que otras, más que nada porque en un juego de estas características rompería con la sensación espacial. Me explico: cada comando te mueve una cierta distancia y ésta debe ser regular, no puede ser que con un comando te desplaces de Llorenç al Vendrell con un solo comando pero luego necesites 5 comandos para ir de Segur a Cunit ya que hay mayor densidad de cosas. Escoger la "resolución" del mapa (básicamente dividirlo en zonas pequeñas entre las cuales te moverás) no va a ser tarea fácil. Tampoco es totalmente necesario que estas zonas sean del mismo tamaño, supongo que lo podré contrarrestar con alguna especie de stat de energía...