devlog #1 - Sam Daniels
Hace un poquito más de una semana instalé Unity con el objetivo de diseñar y programar por lo menos un capítulo de un juego. No es la primera vez que lo intento, pero esta vez estoy aplicando un enfoque ligeramente distinto.
Esta vez compré un asset pack de la gente de Synty Studios que tiene todo lo necesario para armar una oficina. Esto principalmente para poder invertir el tiempo en aprender a utilizar Unity.
![](https://blog.joaquinwojcik.com/content/images/2024/04/image.png)
Me pareció excelente como punto de partida porque es super completo y modular: trae paredes, puertas, ventanas, objetos de oficina (tazas, sillas, escritorios) y demás. Tambien trae varios modelos que se pueden usar como personajes / NPCs.
Quiero armar un capítulo piloto de un juego en el que un detective / investigador privado tenga que juntar pistas para resolver un caso. Algo similar a lo que proponia el magnífico y ya un poco viejo Jack French.
![](https://blog.joaquinwojcik.com/content/images/2024/04/image-1.png)
Hace poco estuve viendo un gameplay y me impresionó lo sencillo que es el juego a nivel interacción: no se puede hacer mucho más que hacer clic en algunas flechas que te permiten moverte por las distintas salas, en algunos objetos y en algunos personajes para hacerle preguntas sobre el caso. El juego no necesita más que eso para hacerte sentir en la piel de un detective.
Volviendo al juego, desde hace mucho tiempo tengo en la cabeza el nombre "Sam Daniels" como nombre del personaje.
Por ahora solamente me dediqué a desarrollar algunas features básicas tales como el movimiento del personaje y la cámara, un sistema de interacción con objetos (por ahora solo puertas y una tarjeta de acceso) y un sistema de inventario básico (sin interfaz por el momento).
La interacción entre los distintos sistemas que componen el juego es algo que me llama mucho la atención. Considero que es clave mantener los distintos sistemas por separado y construir capas que puedan "interconectar" sistemas.
Por ejemplo, el inventario del jugador no tiene porque saber si una puerta requiere una llave para abrirla y una puerta no tiene porque saber como buscar una llave en el inventario del jugador. Entonces, cuando el jugador quiera abrir una puerta ¿qué sistema es el encargado de saber que esa acción pueda realizarse?
Por ahora lo resolvi sumando un sistema de interacción, que está en el medio de cualquier interacción entre un "Interactor" (quien desea interactuar, ej. el jugador) y un "Interactable" (con que desea interactuar, ej. una puerta).
Si el Interactable requiere algún item, el sistema de interacción sabe que tiene que buscar en el inventario del Interactor. Si encuenta el item requerido, permite la interacción, de lo contrario la impide.
Me queda pendiente agregar algunos SFX para las interacciones, como asi tambien darle feedback al jugador de que no puede realizar una acción (algo como: la puerta esta cerrada).
Eso es todo por hoy!