# Manual instalación interactiva anticuerpos Mim
Secciones que debería tener el documento:
* Índice
* Datos de contacto de Pi
* Resumen del proyecto
* Fechas en las que fue realizado
* Fechas en las que debería estar instalado. Aclarar que el soporte se limita a estas fechas, si en 2 años quieren revivir el juego sería considerado otro proyecto.
* Contexto
* Dónde va instalado (Mim, Sala de la microbiología)
* Resumen del juego
* Explicación técnica del funcionamiento
* Cómo lanzar el juego
* Ajustes configurables
* Qué hacer si ocurren distintas situaciones
* El juego se queda pegado
* El juego funciona, pero no reconoce movimientos
* Hay un error particular que ocurre siempre
* Falla el computador. Cómo traspasar a otro PC.
## Datos de contacto
Instalación y hardware:
Rafael Labrador pepe@pi.cl
Software:
Benjamín Benavides benja@pi.cl
Comercial y otros:
Francesca Nardecchia francesca@pi.cl
## Resumen del proyecto
El objetivo es transmitir conceptos con respecto a la interacción entre virus y el cuerpo humano.
El proyecto fue trabajado desde medidados de Junio hasta medidados de Diciembre del año 2021.
Debería estar instalado en la nueva sala de microbiología del museo Mim desde el 14 de Diciembre hasta ___
* Aclarar que el soporte se limita a estas fechas, si en 2 años quieren revivir el juego sería considerado otro proyecto.
* [Contexto del proyecto]
* Va instalado en el museo Mim, en la nueva sala de microbiología
[Revisar documento inicial de Mim con el pedido para sacar info para esta parte]
[Por rellenar Fran]
## Resumen del juego
[Por rellenar Fran]
## Explicación técnica del funcionamiento
**Software**
El juego fue hecho en `Unreal Engine 4.26.2`.
Para el control de versiones del proyecto de Unreal se usa Perforce.
La instalación ejecuta una versión compilada (un ejecutable Anticuerpos.exe) del proyecto de Unreal ubicado en `C:\Instalacion_Anticuerpos\Anticuerpos_Unreal_Compilado\WindowsNoEditor\Anticuerpos.exe`.
Los datos del Kinect se leen y procesan en `Touchdesigner 099 v10330` y luego la información es enviada en tiempo real a Unreal mediante el protocolo OSC.
Touchdesigner --Puerto 8000-> Unreal
Touchdesigner <-Puerto 8001-- Unreal
El Kinect tiene la capacidad de rastrear hasta 6 personas simultáneamente. Al inicio del juego se fija como jugador la primera persona en levantar los 2 brazos y se ignora a las otras. Si se cruzan varias personas o se tapa significativamente al jugador durante el juego, el Kinect podría:
* Perder el rastreo. En este caso el juego se pondrá en pausa y el jugador tendrá 5 segundos para volver a ser reconocido por el Kinect. Si pasan los 5 segundos el juego se reiniciará.
* Cambiar el índice asignado al jugador. En este caso el juego ignorará los movimientos del verdadero jugador y otra persona tendrá el control del juego.
Para evitar estas situaciones lo ideal es que el área de juego se mantenga lo más despejada posible.
**Hardware**
Para la detección de los movimientos del jugador se utiliza una cámara Microsoft Kinect V2.
Las características del computador para el que fue diseñada la instalación son:
```
CPU: Intel Core i7-10700F
RAM: 16 GB
GPU: Nvidia GeForce RTX 3060
Sistema operativo: Windows 10
```
Para enviar la señal de video a las pantallas se ocupa un Datapath. Este crea una pantalla virtual de 4320x1920 pixeles que es detectada como un único monitor en Windows y distribuye la señal a las 4 pantallas de la instalación.
## Cómo lanzar el juego
Se debería abrir automáticamente al reiniciar el computador. Hay un acceso directo (`Anticuerpos`) en la carpeta de inicio del computador (`C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp`) que al ser ejecutado lanza el proyecto de Touchdesigner y el ejecutable de Unreal.
Si se requiere ejecutar manual, usar el acceso directo `Anticuerpos` ubicado en `C:\Instalacion_Anticuerpos` o bien abrir:
- Unreal:
`C:\Instalacion_Anticuerpos\Anticuerpos_Unreal_Compilado\WindowsNoEditor\Anticuerpos.exe`
- Touchdesigner:
`C:\Instalacion_Anticuerpos\Anticuerpos_Touchdesigner\Anticuerpos.toe`
Touchdesigner se demora unos 5 segundos en abrir.
## Ajustes configurables
Es posible hacer modificaciones al juego sin modificar su código. Estos ajustes fueron pensados para que Mim pueda aumentar/disminuir la dificultad y duraciones en base al desempeño que tengan los jugadores reales a lo largo del período de muestra.
Para hacer estos ajustes hay que modificar el archivo de texto `Game.ini` ubicado en `C:\Instalacion_Anticuerpos\Anticuerpos_Unreal_Compilado\WindowsNoEditor\Anticuerpos\Saved\Config\WindowsNoEditor\Game.ini`.
Esto se puede hacer con bloc de notas u otro editor de texto similar, teniendo cuidado de no cambiar el nombre o extensión del archivo.

Por ejemplo reemplazando el 90 seleccionado por un 120 causará que el juego dure 120 segundos.
En la siguiente tabla se explican todas las variables que son modificables desde el archivo de configuración. Solo se debe cambiar lo que está a la derecha del signo igual.
Las columnas de la tabla deberían ser:
* Nombre
* Ruta (Ruta exacta de la variable)
* Blueprint (a qué blueprint va dirigida la variable)
* Tipo de Valor (integer, float, string, etc)
* Unidad (cantidad, segundos, minutors)
* Explicación
## Requisitos para el buen funcionamiento
**Kinect**
- El Kinect debería estar ubicado a la altura de la cabeza de los jugadores o un poco más alto.
- No mover el Kinect ya que fue calibrado para un encuadre particular.
- Evitar tocar el "lente" del Kinect para no ensuciarlo.
- Evitar que se cruce gente delante del jugador mientras juega.
- Mantener la zona de juego (frente al Kinect) lo más despejada posible.
**Software**
- No cambiar la ubicación del proyecto ya que el acceso directo que se ejecuta al partir el computador referencia una ubicación particular.
- Para poder descargar cambios al proyecto es necesario que la red a la que está conectado el computador tenga abierto el `puerto 1666`. Cuando hicimos pruebas este puerto no estaba abierto y fue necesario compartirle internet desde un celular. Nos permite corregir posibles errores más rápido.
## Qué hacer si ocurre
### 1) Juego se queda pegado
Si se congela por completo (no se ve ningún movimiento en la pantalla ni se escucha sonido), reiniciar el computador y se debería reabrir todo automáticamente.
El juego cuenta con un reinicio de seguridad que ocurre luego de 6 minutos de iniciado el juego. La duración del juego es menor a esto por lo que no debería ocurrir normalmente. Este reinicio sirve en caso de que el jugador quede "atrapado" en un estado del juego en que, por alguna razón, no se puede avanzar. De esta forma la instalación estaría inactiva a lo más 6 minutos y no sería necesario que nadie intervenga.
### 2) El juego funciona, pero no reconoce movimientos
Revisar que el Kinect esté activo (deberían verse 3 luces rojas al centro y el ícono de Xbox encendido). Si no está activo podría estar mal conectado.

Kinect mal conectado

Cuando está bien conectado el adaptador rectangular debería mostrar una luz blanca
Si está bien conectado podría ser que Touchdesigner no está abierto. Probar cerrar y volver a abrir.
### 3) Borré o modifiqué donde no quería el archivo de configuración
Hay una copia del archivo `Game.ini` original en `C:\Instalacion_Anticuerpos\Archivos_Adicionales`
### 4) El Kinect se desconecta y reconecta cada 10 segundos
Asegurarse que el dispositivo "Microphone Array Xbox NUI Sensor" esté habilitado en los dispositivos de grabación en la configuración de sonidos de Windows.

Asegurarse que esté instalado el SDK de Kinect v2.
### 5) Hay un error particular que ocurre seguido
Escribir a Benjamín ([benja@pi.cl](mailto:benja@pi.cl)) con copia a Francesca (francesca@pi.cl) explicando:
* Cuál es el problema?
* Cómo replicarlo?
* Qué tan seguido ocurre?
### Computador falla
Si algo pasa con el computador de la instalación y es necesario traspasar todo a uno nuevo.
1. Copiar la carpeta `Instalacion_Anticuerpos` al disco C del computador.
2. Actualizar los drivers de la tarjeta de video. Se recomienda hacer esto instalando [Nvidia GeForce Experience](https://www.nvidia.com/en-us/geforce/geforce-experience/).
3. Instalar Unreal Engine 4.24.2 utilizando el [Epic Games Launcher](https://www.epicgames.com/store/en-US/download).
4. Descargar [Touchdesigner 099 v10330](https://derivative.ca/download/archive) e instalar. Durante la instalación, elegir instalar TouchPlayer y CodeMeter.
5. Avisar a Benjamín ([benja@pi.cl](mailto:benja@pi.cl)) para hacer el traspaso de la licencia de Touchdesigner a este nuevo computador.
6. Descargar e instalar [Kinect for Windows Runtime 2.0](https://www.microsoft.com/en-us/download/details.aspx?id=44559) y [Kinect for Windows SDK 2.0](https://www.microsoft.com/en-us/download/details.aspx?id=44561)
7. En el buscador de Windows escribir "Graphics Settings", abrir ese menú y en la parte de abajo agregar:
* Ejecutable del juego
`C:\Instalacion_Anticuerpos\Anticuerpos_Unreal_Compilado\WindowsNoEditor\Anticuerpos.exe`
* Ejecutable de Touchdesigner Player
`C:\Program Files\Derivative\TouchDesigner\bin\Touchplayer.exe`
* Ejecutable de Touchdesigner Editor
`C:\Program Files\Derivative\TouchDesigner\bin\TouchDesigner.exe`
y setear todos en "High Performance" para forzar el uso de la tarjeta de video.

8. Copiar el acceso directo llamado `Anticuerpos` que está en
`C:\Instalacion_Anticuerpos` a la carpeta `C:\ProgramData\Microsoft\Windows\Start Menu\Programs\StartUp` para que se abra automáticamente al prender el computador.