2. Ficha
Nombre Dungeon Sorrows
Versión 1.0 “Contest Edition”
David Díaz
Autor (Insomnio Studios)
Arcade 3D
Género 3ª persona
Fantasía
Windows
XNA 3.0
Plataforma NET 3.5
2
3. El Juego Cada jugador maneja un personaje distinto:
- Guerrero: mete ostias como panes pero al luchar cuerpo a
Dungeon Sorrows es un arcade 3D en tercera persona donde el
cuerpo recibe más impactos, aunque su armadura reduce el
objetivo es guiar a un grupo de héroes a través de niveles, eliminando
daño. Dispone de un poderoso grito de guerra que ralentiza y
enemigos y sus nidos, usando transportadores para moverse de un sector
disminuye el poder de ataque de los enemigos que se
al siguiente y donde deberás enfrentarte a un enemigo final muy duro de
encuentran dentro de su radio de acción, aunque consume
pelar.
sus energías y capta la atención de los enemigos.
Se presenta al concurso la versión 1.0 “Contest Edition” del juego
que, por razones de tiempo y restricción de tamaño (50Mb max.), - Arquero: este tipo es más listo, ataca a distancia y es capaz de
contempla algunas limitaciones: esprintar, lo que le acaba agotando, aunque recupera
energías rápidamente. Cuerpo a cuerpo es lo peor y como
- El número de jugadores/personajes pasa de 4 a solo 2.
armadura apenas cuenta con un taparrabos, así que mantenlo
- Solo incluye un nivel.
alejado de los enemigos.
- Banda sonora recortada (no se incluye el tema de
ambientación del nivel).
- Inteligencia artificial reducida (no hay pathfinding, no hay En tu aventura a través de Dungeon Sorrows (Contest Edition)
aprendizaje, etc.) encontrarás diferentes elementos que te conviene conocer ya que de ello
- El número de clases de enemigos se ve drásticamente depende el éxito de tu misión:
reducido.
- Sistema de experiencia/nivel suprimido.
3
4. Comida: restaura la salud personaje que la recoge.
Necesitarás mucha y su cantidad es limitada
Poción: recarga la energía del personaje que la recoge. Se
encuentran en cantidades limitadas: úsalas con cabeza.
Tesoro: contribuye a aumentar las arcas del personaje que
lo recoge.
Nido: Es la fuente de los enemigos. No podrás pasar de
sector mientras que el actual no esté limpio de ellos.
Enemigos: vienen a por ti… no intentes hablar con ellos:
no les he puesto orejas.
Portales: te permiten viajar... ¡No! ¡De esa forma no! Te
llevan de un sector al siguiente.
La dificultad en Dungeon Sorrows (Contest Edition) es
moderadamente elevada, por ello te incluyo un mapa por si eres un
perdedor nato y necesitas echar un vistacillo… nadie más lo sabrá, solo tú
y yo, pero quizá sea un peso que tu conciencia no sea capaz de arrastrar.
4
5. Menús Opciones Controles
Cuando arranques Dungeon Sorrows (Contest Edition) Desde el apartado de Controles podrás seleccionar con qué
encontrarás un menú por el que podrás desplazarte por las opciones controlador deseas manejar a cada uno de los personajes.
disponibles en el juego.
Puedes controlar el juego tanto con teclado como con gamepad.
En este último caso puedes usar cualquier gamepad genérico de PC que
Jugar
funcione bajo DirectX, no solo los gamepads de XBOX360, aunque éstos
Mediante esta opción iniciarás una partida. El jugador que elija la también funcionan perfectamente.
opción “Jugar” será el primero en entrar al juego. El resto de jugadores se
podrán ir incorporando presionando el botón “Atacar” de su
correspondiente controlador. Para configurar los controladores tienes que entrar en el menú
“Opciones Controles”. Allí puedes elegir entre 4 controladores:
Recuerda que el sistema de menús solo responde a los
controladores asignados a algún jugador. Si por cualquier circunstancia
- Gamepad1
pierdes el control de los menús (eliges usar 2 gamepads y no tienes
ninguno correctamente instalado) tendrás que reiniciar el juego para - Gamepad2
recuperar el control. - Teclado1
Opciones Vídeo - Teclado2
Desde este submenú podrás elegir entre formato 16:9 o 4:3 y
Aunque Insomnio Engine soporta la reasignación de botones y teclas,
entre jugar a pantalla completa o en ventana.
por falta de tiempo en el juego no se ha implementado la interfaz de
usuario necesaria para permitirlo, por lo que el mapeado de teclas y
botones no es modificable y queda como sigue:
5
6. Gamepads Teclado 2
Z Avanzar Y Retroceder
Q Girar a la izquierda R Girar a la derecha
Atacar / Especial /
7 num
Aceptar (menús) 8 num
Atrás (menús)
4 num Zoom Out 5 num Zoom In
X Pausar juego
¡Precaución! El sistema de menús solo responde a controladores
asignados a algún jugador: si eliges usar dos gamepads, al aplicar los
Teclado 1 cambios el sistema de menús dejará de atender al teclado. Si en ese
w Avanzar s Retroceder momento no se encuentra ningún gamepad disponible perderás el control
de los menús. Para recuperarlo deberás reiniciar el juego.
a Girar a la izquierda d Girar a la derecha
El sistema solo reconoce los gamepads disponibles al arrancar el juego. Si
Atacar / Especial /
t Aceptar (menús) y Atrás (menús) una vez arrancado el juego se conecta un gamepad éste no funcionará. Si
durante el transcurso del juego se desconecta un gamepad que estaba
g Zoom Out h Zoom In
funcionando y se vuelve a conectar, no se garantiza su correcto
X Pausar juego funcionamiento.
6
7. Créditos
Aunque este juego me lo he currado yo solito, sin duda no sería lo
que es sin la orientación de algunos amiguetes y sin el apoyo y los ánimos
de otra gente. En este apartado los recojo a todos ellos (espero no
olvidarme de nadie) como mi pequeño tributo a su ayuda desinteresada.
No dejes de ver los créditos hasta el final no vaya a ser que traigan
sorpresa…
Salir
No entiendo por qué alguien querría hacerlo, pero mediante esta
opción se sale del juego. Si estás en el trabajo y ves que tu jefe te pilla te
recomiendo el siempre socorrido:
A+$
7
8. El Proyecto carpeta Engine. Dentro de esta carpeta se han clasificado funcionalmente
en subcarpetas las diferentes partes que integran el motor. Así,
Este proyecto nació como respuesta a la convocatoria del
encontrarás las siguientes ramas:
Concurso de Desarrollo de Videojuegos en XNA promovido por el
DotNetClub Alicante y la Escuela Politécnica Superior de Alicante y han - AI: implementación de la inteligencia artificial de los enemigos.
sido necesarios 2 meses de trabajos forzados para llevarlo a su estado - Animation1: implementación de la animación de modelos 3D
actual (versión 1.0 Contest Edition). - Collision: implementación de la detección de colisiones con la
escena.
El desarrollo se ha planificado en dos fases bien diferenciadas: - Graphics: implementación de la interpretación gráfica.
- Input2: implementación de la capa de adquisición de datos de
- Desarrollo del motor
dispositivos de interfaz humana.
- Desarrollo del propio juego
- Math: implementación de algunos helpers matemáticos.
Motor - Particles: implementación de sistemas de partículas.
Desde el principio se ha planteado como un
mini-motor que implementase la funcionalidad 1
Parte del código de animación ha sido coescrito como proyecto paralelo junto
con otro autor que no desea que el código fuente sea publicado en el estado
justa y necesaria para el desarrollo de Dungeon
actual, por ello parte de esta funcionalidad se encuentra en forma de
Sorrows (Contest Edition) dentro de plazo y con ensamblado y referenciado desde la solución.
unas funcionalidades mínimas dadas. 2
Para compilar parte de este código es preciso disponer del SDK de DirectX en su
versión de Noviembre de 2008 (400 Mbs. aprox.). Para evitar a la organización
Dentro de la solución entregada puedes este inconveniente se ha incluido esta parte precompilada en forma de
ensamblado referenciado desde la solución. El código fuente está disponible bajo
localizar la implementación del motor dentro de la petición y está inspirado en XNAInput y reescrito desde cero para evitar graves
problemas de rendimiento.
8
9. - Storage: implementación de la carga de recursos (modelos, - Lightmapper (C#)
sonidos, nieveles, etc.) mediante un sistema de cachés que evitan - Texture swapper (C#)
cargar dos veces el mismo contenido, reduciendo así el tiempo de - Compilador de BSPs (C++)
carga y la memoria usada.
- UI: implementación del interfaz de usuario (pantallas, menús, Todas ellas quedan fuera del ámbito del concurso por lo que no se
etc.). entregan con el fin de aligerar el peso del entregable.
Juego
Estado actual
El juego, propiamente dicho, se encuentra
alojado en la carpeta World y subsiguientes de la Dungeon Sorrows está actualmente en plena fase de desarrollo
por lo que lo que se presenta al concurso (Contest Edition) no es más que
solución. En ellas se organizan las diferentes una pequeña y muy basta prueba de lo que se espera sea el resultado
entidades que dan forma al juego, desde las final.
cámaras a los enemigos, pasando por los En el aire (actualmente en desarrollo) quedan aspectos como una
jugadores, ítems, etc. inteligencia artificial avanzada, consciente del escenario en el que se
mueve y capaz de elaborar sus propios caminos a través de los niveles
(pathfinding) y capaz de aprender y recordar (blackboarding).
Herramientas
Se ha realizado una primera iteración en lo que a profiling, mejora
Para la realización de este juego ha sido del rendimiento y bug hunting se refiere, pero aún queda mucho por
necesario el desarrollo de varias herramientas: hacer en este aspecto.
Existen varios niveles diseñados sobre papel a la espera de ser
- Editor de niveles (C#, Win Forms, XNA). modelados e implementados en el juego.
- Preprocesador de archivos .X (C#)
9
10. Algunos bugs conocidos:
- Parte del código de adquisición de datos de interfaz humana está
- El sistema de colisiones no es 100% preciso y en ocasiones los inspirado (aunque reescrito de forma más eficiente) en el trabajo
actores se pueden colar por la geometría del escenario. Resolver
de Samuel Christie (XNAInput), publicado bajo licencia MIT.
este tema es prácticamente inabordable antes de la presentación
del juego ya que por si solo llevaría los más de dos meses que ha - Parte del código de detección de colisiones está basado en el
llevado hacer el juego entero.
trabajo de Theodor Mader, sujeto a Copyright y para el que
cuento con autorización expresa del autor para su uso y
- Pequeños ruidos y cortes en el sistema de audio al igual que derivación.
pequeños saltos en las animaciones o micro-freezes:
Probablemente son todos ellos debidos al Garbage Collector o a
- Otras partes del código están inspiradas en tutoriales de XNA
accesos incontrolados al disco duro. Creators y ZiggyWare.
Trucos - El modelo 3D del arquero ha sido adquirido en 3DBud y su licencia
comercial PROHIBE explícitamente su inclusión en otro proyecto.
- Recompila todo el proyecto añadiendo la directiva de
precompilador GOD_MODE para ser invencible, ganar velocidad y
- Algunos modelos y texturas provienen de TurboSquid, Polycount,
matar a los enemigos de un solo ataque.
BioWare FanArt Forum y no están sujetos a licencia alguna
conocida.
Licencias
Se ha tenido especial cuidado en este proyecto de no infringir - Algunos sonidos han sido recopilados de diversas fuentes y no se
ningún término de licencia. Por ello se incluyen a continuación aquellas conoce que pese sobre ellos ningún tipo de licencia restrictiva.
que así lo exigen:
- El resto de contenidos (código fuente, modelos, niveles, música,
- Parte del código referente a las animaciones de modelos 3D está sonidos, etc.) son propiedad de David Díaz Quintanilla (Insomnio
basado en el trabajo de Jon Watte y en su kW X-port, publicado Studios) y no deben ser utilizados ni publicados sin su
bajo licencia BSD. conocimiento y consentimiento explícitos.
10