14.04.2013 Views

Untitled - Departamento de Ciencias e Ingeniería de la Computación

Untitled - Departamento de Ciencias e Ingeniería de la Computación

Untitled - Departamento de Ciencias e Ingeniería de la Computación

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Composer. A<strong>de</strong>más, el motor sobre el que me base utiliza a FX Composer como herramienta principal <strong>de</strong> <strong>de</strong>sarrollo<br />

<strong>de</strong> sha<strong>de</strong>rs. Por estas razones, indiscutiblemente <strong>la</strong> opción elegida fue FX Composer.<br />

El lenguaje <strong>de</strong> <strong>la</strong> aplicación es C# dado que es un lenguaje muy limpio y cómodo <strong>de</strong> usar. Aún así fue mi <strong>de</strong>cisión más<br />

difícil, dado que tenía aparejada una gran <strong>de</strong>sventaja: muchos <strong>de</strong> los ejemplos están escritos en C++ <strong>de</strong>bido a que es<br />

el lenguaje utilizado por excelencia en el <strong>de</strong>sarrollo <strong>de</strong> aplicaciones 3D, particu<strong>la</strong>rmente por su velocidad y<br />

esparcimiento en <strong>la</strong> comunidad <strong>de</strong> <strong>de</strong>sarrol<strong>la</strong>dores <strong>de</strong>s<strong>de</strong> ya hace años. Por suerte, más tar<strong>de</strong> <strong>de</strong>scubrí que fue una<br />

buena elección elegir C#. El código es mucho más fácil <strong>de</strong> seguir, <strong>la</strong> performance <strong>de</strong>l motor es buena y a<strong>de</strong>más<br />

encontré un muy buen motor escrito en C# para seguir <strong>de</strong> ejemplo, motor en el que me base.<br />

A2.3 Recursos y aprendizaje inicial<br />

Probablemente <strong>la</strong> etapa más difícil, <strong>la</strong> documentación es muy variada y poco regu<strong>la</strong>r en materia <strong>de</strong> calidad. Es más, a<br />

pesar <strong>de</strong> que disponía <strong>de</strong> una buena base en lo referente a conceptos <strong>de</strong> computación gráfica y en lo referente a<br />

programación general, en el tema sha<strong>de</strong>rs estaba prácticamente en b<strong>la</strong>nco.<br />

Comencé leyendo algún que otro libro, varios artículos y trate <strong>de</strong> basarme en los ejemplos que incluía el SDK <strong>de</strong><br />

DirectX. Esos ejemplos tenían <strong>la</strong> ventaja <strong>de</strong> estar enfocados en el tema que querían mostrar, con <strong>la</strong> <strong>de</strong>sventaja <strong>de</strong><br />

una pobre organización, lo que impedía el esca<strong>la</strong>miento <strong>de</strong>l código hacia un motor gráfico.<br />

Gracias a estos ejemplos y a toda <strong>la</strong> documentación que tenia a mi disposición es como nació mi primer motor<br />

gráfico (segundo si consi<strong>de</strong>ro un muy pequeño motor que hice en OpenGL hace ya un tiempo en <strong>la</strong> materia<br />

computación gráfica). En síntesis, el motor era muy limitado, permitía cargar objetos <strong>de</strong>s<strong>de</strong> un archivo, aplicarles<br />

texturas, ren<strong>de</strong>rizarlos con iluminación por vértice y luego por pixel, utilizando un sistema <strong>de</strong> cámaras primitivo.<br />

En ese momento me di cuenta <strong>de</strong> que el motor no podía progresar más sin un serio reestructuramiento. Descartarlo,<br />

era una <strong>de</strong>cisión difícil <strong>de</strong> tomar dado que tenía que comenzar nuevamente <strong>de</strong> cero. Sin embargo, fue <strong>la</strong> <strong>de</strong>cisión<br />

correcta, una buena base es vital para este tipo <strong>de</strong> proyecto. Aún así, <strong>la</strong> evaluación <strong>de</strong>l proyecto en si fue más que<br />

positiva, me permitió enten<strong>de</strong>r muchos conceptos y organizar mejor mis i<strong>de</strong>as, especialmente sobre <strong>la</strong><br />

estructuración <strong>de</strong> <strong>la</strong>s c<strong>la</strong>ses.<br />

Parale<strong>la</strong>mente a esto, seguía mi búsqueda <strong>de</strong> nuevo material y documentación, y es aquí don<strong>de</strong> encontré <strong>la</strong> página<br />

<strong>de</strong> Benjamin Nitschke. Por ese entonces, Benjamin había <strong>la</strong>nzado muy recientemente un tutorial <strong>de</strong> cómo crear un<br />

juego l<strong>la</strong>mado Rocket Comman<strong>de</strong>r en C#, utilizando DirectX y FX Composer. Los tutoriales consisten <strong>de</strong> 10 vi<strong>de</strong>os,<br />

cada uno <strong>de</strong> 40 minutos <strong>de</strong> duración aproximadamente, los cuales están muy bien explicados. Los tutoriales son<br />

gratis, y a<strong>de</strong>más disponen <strong>de</strong> todo el código fuente <strong>de</strong>l Rocket Comman<strong>de</strong>r. Benjamin Nitschke tiene experiencia real<br />

en el <strong>de</strong>sarrollo <strong>de</strong> juegos, y eso se nota. El código es muy bueno, es complejo don<strong>de</strong> se enfoca el proyecto, y muy<br />

simple en temas secundarios, y por si no es poco <strong>la</strong> organización general es impecable. Definitivamente una opción<br />

muy tentadora.<br />

Es aquí don<strong>de</strong> comenzó realmente el <strong>de</strong>sarrollo <strong>de</strong> mi motor. Ya sabía lo que quería lograr, sabia aproximadamente<br />

cómo y tenía a mi disposición una guía <strong>de</strong> muy buena calidad. El Final Engine comenzó a escribirse, utilizando como<br />

base al Rocket Comman<strong>de</strong>r.<br />

Página 95

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!