<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Starco Studios &#187; Game Dev</title>
	<atom:link href="http://www.starcostudios.com/blog/category/gamedev/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.starcostudios.com/blog</link>
	<description>La comunidad Starco</description>
	<lastBuildDate>Wed, 18 May 2011 18:14:24 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>General Grievous Bot y Google AI Challenge Planet Wars</title>
		<link>http://www.starcostudios.com/blog/2010/11/general-grievous-bot-y-google-ai-challenge-planet-wars/</link>
		<comments>http://www.starcostudios.com/blog/2010/11/general-grievous-bot-y-google-ai-challenge-planet-wars/#comments</comments>
		<pubDate>Thu, 18 Nov 2010 15:33:54 +0000</pubDate>
		<dc:creator>Sergio Sanchez Mendez</dc:creator>
				<category><![CDATA[Game Dev]]></category>
		<category><![CDATA[Inteligencia Artificial]]></category>
		<category><![CDATA[Tactica y Estrategia]]></category>

		<guid isPermaLink="false">http://www.starcostudios.com/blog/?p=455</guid>
		<description><![CDATA[Estamos de acuerdo que aunque técnicamente el General Grievous es un cyborg, nosotros lo vamos
a tratar como un Droide convencional y vamos a delegar sus funciones relacionadas con el Arte
de la Guerra a un cooprocesador sinergético acoplado a sus capacidades cognitivas naturales. De
esta forma justificamos el título y nos quedamos tan anchos. Nuestra función será [...]]]></description>
			<content:encoded><![CDATA[<p>Estamos de acuerdo que aunque técnicamente el General Grievous es un cyborg, nosotros lo vamos<br />
a tratar como un Droide convencional y vamos a delegar sus funciones relacionadas con el Arte<br />
de la Guerra a un cooprocesador sinergético acoplado a sus capacidades cognitivas naturales. De<br />
esta forma justificamos el título y nos quedamos tan anchos. Nuestra función será iniciar la<br />
creación de este procesador sinergético que ayude a Grievous a conquistar las Galaxias de Planet<br />
Wars.</p>
<p><a href="http://www.starcostudios.com/blog/wp-content/uploads/2010/11/Episode_3_General_Grievous_Lightsabers.jpg"><img src="http://www.starcostudios.com/blog/wp-content/uploads/2010/11/Episode_3_General_Grievous_Lightsabers-300x168.jpg" alt="General Grievous" title="General Grievous" width="300" height="168" class="aligncenter size-medium wp-image-456" /></a></p>
<p>Para introducir lo que hemos comentado más en detalle en otros artículos, Google AI Challenge Planet<br />
Wars es una iniciativa creada para competir a nivel global con aficcionados, profesionales e investigadores<br />
en materia de inteligencia artificial aplicada al entretenimiento. Se trata de gestionar las naves de<br />
batalla para conquistar las diferentes Galaxias. En ellas encontraremos un oponente neutral y un bot<br />
enemigo creado por otro adversario. Lo que vamos a hacer aqui es introducirnos en este torneo y crear<br />
un primer bot medianamente competente.</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/O0uxXZY-t-s?fs=1&amp;hl=es_ES"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/O0uxXZY-t-s?fs=1&amp;hl=es_ES" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p><a href="http://">>>>1. El entorno</a></p>
<p>Primero echadle mano a la <a href="http://ai-contest.com/quickstart.php">quick-start guide</a> y muy pronto estareis dandole<br />
caña al BOT. Descargaremos el <a href="http://ai-contest.com/starter_packages.php">kit de inicio</a> en el lenguaje de programación que creamos conveniente. Basaremos este artículo en el <a href="http://ai-contest.com/starter_packages/java_starter_package.zip">kit de inicio</a> de java. Si trabajais con Windows el procedimiento<br />
es el de siempre: descargar la SDK de Java, actualizar la variable de entorno PATH y compilar los archivos.<br />
Vereis más detalles en el <a href="http://ai-contest.com/starting_your_own.php">tutorial de creación</a> de vuestro propio bot.</p>
<p>Copiado en el directorio raiz el único archivo que tenemos que modificar es MyBot.java. En el encontraremos una<br />
estrategia sencilla que cubre todo lo que necesitamos para empezar a trabajar. Lo principal a identificar es el<br />
bucle de trabajo que se ejecuta a cada turno.</p>
<blockquote><p>
public static void DoTurn(PlanetWars pw) {</p>
<p>}
</p></blockquote>
<p>En el interior podemos crear estrategias tan elaboradas como creamos necesario, sin embargo, en cualquier caso todos<br />
los procesos de cálculo irán enfocados a decidir el origen y el destino de nuestras flotas así como el número de<br />
unidades que vamos a enviar. Determinar el planeta desde el que vamos a enviar la flota se haría de esta forma:</p>
<blockquote><p>Planet source = null;<br />
double sourceScore = Double.MIN_VALUE;<br />
	for (Planet p : pw.MyPlanets()) {<br />
	    double score = (double)p.NumShips();<br />
	    if (score > sourceScore) {<br />
		sourceScore = score;<br />
		source = p;<br />
	    }<br />
}</p></blockquote>
<p>Como se puede apreciar recorremos todos nuestros planetas y buscamos el que más naves de batalla contiene. Una vez<br />
hecho esto disponemos de la fuente desde la que se enviarán los planetas. A continuación buscamos el destino de nuestra<br />
flota, en este caso el planeta más debil.</p>
<blockquote><p>Planet dest = null;<br />
	double destScore = Double.MIN_VALUE;<br />
	for (Planet p : pw.NotMyPlanets()) {<br />
	    double score = 1.0 / (1 + p.NumShips());<br />
	    if (score > destScore) {<br />
		destScore = score;<br />
		dest = p;<br />
	    }<br />
}
</p></blockquote>
<p>Como podeis ver el hecho de que escojamos un planeta u otro depende de la puntuación que le demos y esto lo decidimos en la<br />
variable &#8217;score&#8217;. Cuanto menor sea el número de naves de batalla mayor será la puntuación. Finalmente tramitamos la orden al<br />
capitán del escuadrón.</p>
<blockquote><p>
if (source != null &#038;&#038; dest != null) {<br />
	    int numShips = source.NumShips() / 2;<br />
	    pw.IssueOrder(source, dest, numShips);<br />
}
    </p></blockquote>
<p>Con esto hemos comprendido el funcionamiento de la base mínima del coprocesador sinergético del General Grievous. Hecho esto<br />
tendremos que tener muchas más cosas en cuenta. Veremos que detalles tenemos que empezar a valorar más adelante. Con la inteligencia<br />
artificial que hemos programado no conquistaremos ni el planeta Kashyyyk de los wookies pero de momento ya nos vale para ir poniendonos<br />
al dia. </p>
<p><a href="http://">>>>2. Simulando la batalla<br />
</a><br />
Para ver nuestros progresos de forma directa sin tener que subir al servidor el paquete podemos dos cosas, o bien picarlo contra<br />
el mismo:</p>
<p>java -Duser.language=en -Duser.region=US  -jar tools/PlayGame.jar maps/map7.txt 1000 1000 log.txt &#8220;java -Duser.language=en -Duser.region=US MyBot&#8221; &#8220;java -Duser.language=en -Duser.region=US MyBot&#8221; | java -jar tools/ShowGame.jar</p>
<p>O bien picarlo contra otro bot, en este caso uno aleatorio de entre los que nos vienen con el paquete inicial:</p>
<p>java -Duser.language=en -Duser.region=US  -jar tools/PlayGame.jar maps/map7.txt 1000 1000 log.txt &#8220;java -Duser.language=en -Duser.region=US MyBot&#8221; &#8220;java -Duser.language=en -Duser.region=US -jar example_bots/RandomBot.jar&#8221; | java -jar tools/ShowGame.jar</p>
<p>El desempeño no será representativo hasta que no lo veais compitiendo contra otros bots más elaborados de forma online. En cualquier<br />
caso ya no por el hecho de competir y divertirse sino porque representa una forma excelente de ver como encara el resto de ingenieros<br />
la solución al problema. Ya os puedo avanzar que será una cuestión matemática y de anticipación.</p>
<p><a href="http://"><br />
>>>3. Subiendo el bot al concurso<br />
</a><br />
Una vez dados de alta podemos hacer la primera prueba con el bot de ejemplo. Cogemos la carpeta completa que hemos descargado, la comprimimos<br />
en zip y la enviamos a través del formulario de la web. En breve empezará a competir y podremos iniciar la modificación de la IA para conseguir<br />
mejores resultados.</p>
<p>Ejemplos de batalla que podremos ver son los siguientes:</p>
<p>> <a href="http://ai-contest.com/visualizer.php?game_id=7692225">Batalla I</a><br />
> <a href="http://ai-contest.com/visualizer.php?game_id=7704200">Batalla II</a></p>
<p>Ya veis que cada uno aplica su estrategia, lo ideal es buscar la anticipación y el equilibrio entre el ataque y la defensa. Ya veremos más detalles<br />
sin embargo lo que vamos a tratar aqui es puramente orientado a daros un punto de vista completo del concurso y no a describiros las mejores prácticas<br />
ya que sería una mala forma de enseñar. Lo interesante es plantar las bases para que vosotros mismos seais los que vais descubriendo cómo encarar el<br />
concurso y cómo ampliar la potencia ofensiva o defender con mayor eficacia. El parametrizado es un tema importante a tener en cuenta de cara a hacer<br />
sencillas las optimizaciones. </p>
<p><a href="http://"><br />
4. Resultados<br />
</a><br />
El resultado de una primera distribución de las estrategias más básicas y aplicando varios ajustes a los parámetros es el que veis a continuación, la<br />
cosa no va mal del todo. </p>
<p><a href="http://www.starcostudios.com/blog/wp-content/uploads/2010/11/media.png"><img src="http://www.starcostudios.com/blog/wp-content/uploads/2010/11/media-300x145.png" alt="media" title="media" width="300" height="145" class="aligncenter size-medium wp-image-457" /></a></p>
<p>Ahora toca aplicar los preceptos del maestro Sun Tzu en el Arte de la Guerra y ponernos las pilas como Samurais Informáticos de primera categoría. </p>
<p>En próximos artículos plantearemos algunas estrategias sencillas para ir haciendo estómago y orientar un poco a donde van los tiros. De cualquier forma<br />
es un jugete muy interesante que da muchas alegrías ademas de quebraderos de cabeza. Poco a poco vamos teniendo un general en condiciones. </p>
<p>A disfrutarlo!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.starcostudios.com/blog/2010/11/general-grievous-bot-y-google-ai-challenge-planet-wars/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Creación del grafo de claridad para juegos de estrategia</title>
		<link>http://www.starcostudios.com/blog/2009/12/creacion-del-grafo-de-claridad-para-juegos-de-estrategia/</link>
		<comments>http://www.starcostudios.com/blog/2009/12/creacion-del-grafo-de-claridad-para-juegos-de-estrategia/#comments</comments>
		<pubDate>Mon, 14 Dec 2009 17:52:41 +0000</pubDate>
		<dc:creator>Sergio Sanchez Mendez</dc:creator>
				<category><![CDATA[Game Dev]]></category>
		<category><![CDATA[Inteligencia Artificial]]></category>
		<category><![CDATA[Pathfinding]]></category>

		<guid isPermaLink="false">http://www.starcostudios.com/blog/?p=216</guid>
		<description><![CDATA[Cuando trabajamos con representaciones del mundo como las
que se utilizan en los juegos de estrategia, nos interesa
tener una abstracción máxima del entorno que represente toda
la información necesaria para el correcto desarrollo, con el
mínimo espacio.
Esto se consigue con el grafo de claridad, que en cada posición
definirá a que distancia se encuentran los obstáculos de la casilla
en [...]]]></description>
			<content:encoded><![CDATA[<p>Cuando trabajamos con representaciones del mundo como las<br />
que se utilizan en los juegos de estrategia, nos interesa<br />
tener una abstracción máxima del entorno que represente toda<br />
la información necesaria para el correcto desarrollo, con el<br />
mínimo espacio.</p>
<p>Esto se consigue con el grafo de claridad, que en cada posición<br />
definirá a que distancia se encuentran los obstáculos de la casilla<br />
en cuestión.</p>
<p><img class="aligncenter size-full wp-image-217" title="Grafo de claridad" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/12/haa-brushfire_annotatedmap.png" alt="Grafo de claridad" width="251" height="250" /></p>
<p>Se propone para crear este grafo el algoritmo de Brushfire o tambien<br />
llamado Wavefront. Sin embargo, este algoritmo presenta algunos problemas<br />
desde el punto de vista de un entorno en el que se moverán elementos<br />
de diferente tamaño. Podemos encontrar cuellos de botella que interfieren<br />
en el correcto desarrollo.</p>
<p><img class="aligncenter size-full wp-image-218" title="Fallo por cuello de botella" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/12/haa-brushfire_tankfail.png" alt="Fallo por cuello de botella" width="250" height="250" /></p>
<p>Debido a esto, se propone una variante del cálculo para la obtención del<br />
grafo de claridad para diferentes tamaños de unidades. El método en cuestión<br />
se trata de, para cada celda ir ampliando un bloque de NxN creciente hasta<br />
colisionar con un obstáculo, es decir, hasta que en las celdas que pertenecen<br />
al bloque incluyan algún elemento no travesable.</p>
<p>Vemos un ejemplo extremadamente sencillo en las siguientes imágenes donde el<br />
tamaño del bloque crece de izquierda a derecha y de arriba a abajo.</p>
<p><img class="aligncenter size-full wp-image-219" title="Expansión correcta" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/12/haa-computing_trueclearance3.png" alt="Expansión correcta" width="246" height="250" /></p>
<p>Quedando de esta forma:</p>
<p><img class="aligncenter size-full wp-image-220" title="Forma definitiva" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/12/haa-trueclearance_annotatedmap.png" alt="Forma definitiva" width="240" height="250" /></p>
<p>Este procedimiento solventa parcialmente el problema pero no lo resuelve completamente.<br />
Existen, del mismo modo, puntos que no son alcanzables cuando si debieran serlo. Esto es debido<br />
a la orientación del crecimiento de los bloques que crecen en una dirección concreta.</p>
<p>Para esto se propone añadir complejidad O(1) al algoritmo, que no supone un impacto excesivo<br />
al desempeño y que consigue resultados mucho mejores. Se trata de, por un lado repetir el proceso desde<br />
las 4 esquinas del entorno, creciendo en direcciones diferentes para cada propuesta y adquiriendo<br />
el máximo de las distancias obtenidas, esto indica que si bien no se puede llegar desde una dirección<br />
concreta, se puede llegar perfectamente por otra.</p>
<p>Con esto ya tenemos una abstracción adecuada al cálculo de nuestro problema. Conseguir un camino será cuestión<br />
de establecer un procedimiento que respete las restricciones. Esto es lo que veremos más adelante.</p>
<p>Os animo a implementarlo por vuestra cuenta, se trata de un ejercicio sencillo y un buen entrenamiento!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.starcostudios.com/blog/2009/12/creacion-del-grafo-de-claridad-para-juegos-de-estrategia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>El pathfinding en los juegos de estrategia</title>
		<link>http://www.starcostudios.com/blog/2009/12/el-pathfinding-en-los-juegos-de-estrategia/</link>
		<comments>http://www.starcostudios.com/blog/2009/12/el-pathfinding-en-los-juegos-de-estrategia/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 17:54:50 +0000</pubDate>
		<dc:creator>Sergio Sanchez Mendez</dc:creator>
				<category><![CDATA[Game Dev]]></category>
		<category><![CDATA[Inteligencia Artificial]]></category>
		<category><![CDATA[Pathfinding]]></category>
		<category><![CDATA[AI detección de caminos]]></category>
		<category><![CDATA[pathfinder]]></category>
		<category><![CDATA[pathfinding]]></category>

		<guid isPermaLink="false">http://www.starcostudios.com/blog/?p=172</guid>
		<description><![CDATA[
Entramos en materia en una de las ramas de la IA aplicada a los juegos que
casi siempre está presente en los juegos de actualidad. En este caso nos centramos
en los juegos de estrategia en los que independientemente de la visión que tengamos
del mundo en el que nos movemos, generalmente se puede representar por una malla
cuadrada. [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.starcostudios.com/blog/wp-content/uploads/2009/12/age_of_empires_3_screen_140405.jpg" alt="Age of Empires III" title="Age of Empires III" width="455" height="342" class="aligncenter size-full wp-image-175" /></p>
<p>Entramos en materia en una de las ramas de la IA aplicada a los juegos que<br />
casi siempre está presente en los juegos de actualidad. En este caso nos centramos<br />
en los juegos de estrategia en los que independientemente de la visión que tengamos<br />
del mundo en el que nos movemos, generalmente se puede representar por una malla<br />
cuadrada.   </p>
<p>Generar una estrategia de búsqueda de caminos o pathfinding en un juego de estrategia<br />
y en general para cualquier juego, calculando teniendo en cuenta todos los píxeles o<br />
incluso a una resolución menor, a nivel interno por ejemplo mediante cálculos matemáticos<br />
es una tarea tanto ineficiente como ineficaz ya que generalmente no es necesario un nivel<br />
de precisión tan ajustado, ni siquiera a la mínima unidad que podemos medir (no calcular),<br />
el píxel. </p>
<p><img src="http://www.starcostudios.com/blog/wp-content/uploads/2009/12/starcraft2screenshot8impreciso1-300x225.jpg" alt="Starcraft II. Volumen alto de unidades  " title="Starcraft II. Volumen alto de unidades  " width="300" height="225" class="aligncenter size-medium wp-image-180" /></p>
<p>Lo adecuado en este caso es generar una malla que se situa sobre el entorno y que define<br />
las posiciones que una unidad puede ocupar. Para aumentar el realismo se puede definir<br />
un sistema de posicionamiento aleatorio que genera una posición exacta a nivel de píxel<br />
que hace que la unidad se coloque de forma aleatoria en cualquier lugar de la malla.   </p>
<p>Centrandonos en los juegos de estrategia nuestros algoritmos tendrán que tratar principalmente<br />
con dos particularidades: los diferentes tamaños de unidades y los diferentes terrenos.</p>
<p>En cuanto a los tamaños de las unidades, para simplificar y hacer más rápidos y sencillos<br />
nuestros algoritmos utilizaremos unidades enteras. De este modo una unidad militar puede tener<br />
un tamaño de 1, 2 o N. </p>
<p><img src="http://www.starcostudios.com/blog/wp-content/uploads/2009/12/grouppic.jpg" alt="Diferentes unidades" title="Diferentes unidades" width="500" height="313" class="aligncenter size-full wp-image-184" /></p>
<p>Los diferentes terrenos pueden ser por ejemplo tierra, espacio solo para unidades voladoras,<br />
agua para vehículos acuáticos o cualquier otro tipo. Los diferentes vehículos pueden no solo<br />
ceñirse a terreno, por ejemplo anfibios o aéreos.  </p>
<p><img src="http://www.starcostudios.com/blog/wp-content/uploads/2009/12/out-of-the-box-iage-of-empires-iiii-first-impressions-20051017043453002.jpg" alt="Diferentes unidades Age of Empires" title="Diferentes unidades Age of Empires" width="390" height="293" class="aligncenter size-full wp-image-185" /></p>
<p>El mundo se convierte en una malla como la que vemos a continuación donde cada posición de la<br />
estructura es una posición abarcable por las unidades, en caso de que puedan moverse por el tipo<br />
de terreno. De este modo, la representación del mundo queda definida por un conjunto de posiciones<br />
con un tipo de terreno en cada posición. Las unidades se definen además de por sus características<br />
usuales, por su capacidad para moverse por diferentes terrenos.</p>
<p>Por ejemplo.    Vehículo terrestre: Movilidad { tierra }. Marine<br />
		Vehículo marino: Movilidad { agua }. Barco<br />
		Vehículo aereo: Movilidad {agua, tierra, etc}</p>
<p><img src="http://www.starcostudios.com/blog/wp-content/uploads/2009/12/ss29-hires-300x225.jpg" alt="Vista del mallado" title="Vista del mallado" width="300" height="225" class="aligncenter size-medium wp-image-181" /></p>
<p>Una vez definidos los elementos que permiten hacer el problema abarcable y manejable, nos preocuparemos<br />
en ver que algoritmos y procedimientos nos permiten generar una trayectoria o camino válido<br />
para las posiciones de las unidades: Grafos de ckaridad, A estrella simple, A estrella anotado,<br />
algoritmo de Brushfire, Algoritmo A estrella Anotado Jerárquico. Hierarquical Anotated A Star (HAA*),<br />
Pathfinding basado en grafos de claridad y búsqueda con el Algoritmo A estrella anotado jerárquico<br />
, Planificación de caminos jerárquico para agentes de múltiples tamaños en entornos heterogéneos,<br />
Búsqueda de caminos Jerárquica Casi óptima<br />
o Pathfinding y funciones potenciales.</p>
<p>A partir de Ahora cuando vayais a comprar el pan o a hacer algun recado acordaros de dividir vuestra escena en mallas para optimizar el proceso. El procedimiento automático también es valido por eso.</p>
<p>Por lo pronto hasta aqui llegamos hoy. Lo demás lo veremos en detalle.</p>
<p>Hasta la próxima</p>
]]></content:encoded>
			<wfw:commentRss>http://www.starcostudios.com/blog/2009/12/el-pathfinding-en-los-juegos-de-estrategia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instalar y Poner a punto el ORTS</title>
		<link>http://www.starcostudios.com/blog/2009/11/instalar-y-poner-a-punto-el-orts/</link>
		<comments>http://www.starcostudios.com/blog/2009/11/instalar-y-poner-a-punto-el-orts/#comments</comments>
		<pubDate>Thu, 26 Nov 2009 19:46:12 +0000</pubDate>
		<dc:creator>Sergio Sanchez Mendez</dc:creator>
				<category><![CDATA[Game Dev]]></category>
		<category><![CDATA[Inteligencia Artificial]]></category>

		<guid isPermaLink="false">http://www.starcostudios.com/blog/?p=163</guid>
		<description><![CDATA[Bueno amigos hoy una pequeña guia sobre como poner a punto el ORTS y empezar a trabajar con el.

&#62;En primer lugar instalaremos, si no lo tenemos ya, el Visual C++.
- Descargar Visual c++ 2008 Express edition
- Instalar la distribución
Es gratuito como el resto de la versión Express, sin embargo os pedirá que registreis el producto [...]]]></description>
			<content:encoded><![CDATA[<p>Bueno amigos hoy una pequeña guia sobre como poner a punto el ORTS y empezar a trabajar con el.</p>
<p><img class="aligncenter size-medium wp-image-165" title="Orts game view" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/11/shot.26.08.20051-300x225.jpg" alt="Orts game view" width="300" height="225" /></p>
<p>&gt;En primer lugar instalaremos, si no lo tenemos ya, el Visual C++.</p>
<p>- Descargar Visual c++ 2008 Express edition<br />
- Instalar la distribución</p>
<p>Es gratuito como el resto de la versión Express, sin embargo os pedirá que registreis el producto antes de 30 dias. De cualquier forma no os costará ni un duro.</p>
<p>&gt; Ahora que tenemos la IDE (Integrated Development Enviroment)<br />
pasamos a la estructura descargar los diferentes elementos<br />
de ORTS.</p>
<p>- <a href="http://linux.softpedia.com/get/GAMES-ENTERTAINMENT/RTS/ORTS-40151.shtml">Descarga los archivos del proyecto</a><br />
- <a href="http://www.cs.ualberta.ca/~mburo/orts/files/windows/win32.zip">Descargar Paquete Win32</a></p>
<p>&gt; Ponemos a punto el entorno</p>
<p>- 1. Copiamos los elementos a c:\orts<br />
De este modo quedará C:\orts\trunk&#8230;</p>
<p><img class="aligncenter size-full wp-image-168" title="Orts Sistema de Carpetas" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/11/ortsArch1.png" alt="Orts Sistema de Carpetas" width="524" height="547" /></p>
<p>- 2. Descomprimimos el archivo anterior &#8216;win32.zip&#8217; y copiamos<br />
el contenido en C:\orts\trunk\<br />
Tendremos entonces C:\orts\trunk\win32</p>
<p>- 3. Copiamos el contenido de win32\include en la carpeta<br />
de sistema de windows System32<br />
     Descargamos glew y copiamos tambien la dll en System32<br />
     http://sourceforge.net/projects/glew/</p>
<p>- 4. Nos vamos a c:\orts\trunk\misk\windows<br />
y copiamos el contenido en c:\orts\trunk\ para asegurarnos</p>
<p>- 5. Ejecutamos VSTool.exe (Nos pedirá la ruta a los datos)<br />
Escribimos&gt; c:\orts\trunk\        &lt;&#8211; No olvidar la barra<br />
Escribimos&gt; tecla enter<br />
Escribimos&gt; orts             &lt;&#8211; Nombre del ejecutable</p>
<p>- 6. Ejecutamos: c:\orts\trunk\make_vcproj.bat    (Para definir las rutas)<br />
y creae los proyectos orts.vc7 y ortsg.vc7</p>
<p>- 7. Creamos la carpeta c:\orts\trunk\bin</p>
<p>- 8. Abrimos independientemente    orts.vc7 y ortsg.vc7 y los generamos</p>
<p>- 9. Vamos a buscar los ejecutables orts.exe y ortsg.exe y los pegamos<br />
en la carpeta c:\orts\trunk<br />
- 10. Ejecutamos, asi de facil <img src='http://www.starcostudios.com/blog/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>Puede pareces un poco laborioso a simple vista sin embargo dada la cantidad<br />
de elementos que intervienen y la complejidad del sistema, esta es solo una<br />
ínfima parte. De hecho el código es tan valioso desde el punto de vista ya no<br />
del desarrollo de juegos en general sino de la inteligencia artificial, que<br />
merece la pena dedicar los esfuerzos necesarios a poner a punto el entorno.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/6wzMyfxYclo&#038;hl=es_ES&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/6wzMyfxYclo&#038;hl=es_ES&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>Al final es lo más pesado pero una vez listo ya podreis empezar a programar  todos los aspectos del juego, especialmente los que se encargan de la IA. Una vez dominado el entorno se pueden pasar a aspectos más interesantes como el pathfinding o las estrategias de batalla.</p>
<p>Animo con eso</p>
]]></content:encoded>
			<wfw:commentRss>http://www.starcostudios.com/blog/2009/11/instalar-y-poner-a-punto-el-orts/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Como Instalar Ogre desde 0</title>
		<link>http://www.starcostudios.com/blog/2009/11/como-instalar-ogre-desde-0/</link>
		<comments>http://www.starcostudios.com/blog/2009/11/como-instalar-ogre-desde-0/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 10:03:47 +0000</pubDate>
		<dc:creator>Sergio Sanchez Mendez</dc:creator>
				<category><![CDATA[Game Dev]]></category>
		<category><![CDATA[OpenGL]]></category>

		<guid isPermaLink="false">http://www.starcostudios.com/blog/?p=154</guid>
		<description><![CDATA[&#8230;en 10 minutos y de la forma más sencilla (en windoz).
Aficcionados y profesionales del renderizado gráfico somo muy
afortunados de contar con esta gran herramienta, el Open Graphics
Rendering Enviroment (Ogre).

El Ogre nos permite un abanico infinito de posibilidades en materia
de trabajo con aplicacines que requieren renderizado 3D. Si bien no
es un motor de juego completo, se [...]]]></description>
			<content:encoded><![CDATA[<p>&#8230;en 10 minutos y de la forma más sencilla (en windoz).</p>
<p>Aficcionados y profesionales del renderizado gráfico somo muy<br />
afortunados de contar con esta gran herramienta, el Open Graphics<br />
Rendering Enviroment (Ogre).</p>
<p><img class="aligncenter size-full wp-image-155" title="Ogre logo" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/11/ogre-logo-wetfloor.gif" alt="Ogre logo" width="235" height="78" /></p>
<p>El Ogre nos permite un abanico infinito de posibilidades en materia<br />
de trabajo con aplicacines que requieren renderizado 3D. Si bien no<br />
es un motor de juego completo, se encarga principalmente del apartado<br />
gráfico, proporciona una gran funcionalidad que hace que muchos juegos<br />
ya lo utilicen.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/woHZRUlOQqo&amp;hl=es_ES&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/woHZRUlOQqo&amp;hl=es_ES&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Como comenta el desarrollador principal Steve Streeting, no se trata de una<br />
solución integral sino de una especialización en el ámbito gráfico<br />
que hace que independientemente del resto de subsistemas (motor<br />
de física, sistemas de interfaces, topologías de red o tipos de<br />
juego). Esto nos permite utilizar por ejemplo ODE o Bullet<br />
(o cualquier otro vaya) para la física y Ogre para los gráficos.</p>
<p>Como lo ponemos a punto. Instalar facilmente todo lo necesario para<br />
empezar a trabajar, que es lo importante de cara a aprender un sistema.<br />
En este caso centrandonos en windows pero estando ámpliamente documentado<br />
el resto de sistemas operativos y entornos.</p>
<p><a href="http://www.ogre3d.org/wiki/index.php/Installing_An_SDK">&gt; Instalacion en todos los entornos</a></p>
<p>Para ello vamos a instalar 2 elementos en el orden que se establecen.</p>
<p>- Visual C Express<br />
- Ogre SDK</p>
<p>Una vez hecho esto, vamos a la carpeta donde hemos instalado Ogre y<br />
ponemos a punto el entorno de trabajo.</p>
<p>1. Creamos una carpeta contenedora de nuestros proyectos.<br />
Por ejemplo: &#8216;workspace&#8217;</p>
<p><img class="aligncenter size-medium wp-image-156" title="Ogre carpetas" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/11/ogreCarpetas-300x139.png" alt="Ogre carpetas" width="300" height="139" /></p>
<p>2. Copiamos el contenido de la carpeta &#8217;samples&#8217; para empezar por los<br />
ejemplos.</p>
<p>3. Ya en la carpeta &#8216;workspace&#8217; creamos una carpeta con el nombre de<br />
&#8216;resultados&#8217; donde pondremos los archivos generados de la compilación.</p>
<p>4. Dentro creamos una carpeta con nombre &#8216;intermedio&#8217; para los archivos<br />
que se generan derivados de la compilación.</p>
<p>5. Finalmente nos vamos a la carpeta &#8216;bin&#8217; del directorio raiz donde<br />
hemos instalado la Ogre SDK, entramos en la carpeta &#8216;debug&#8217; y copiamos<br />
todo el contenido. Lo pegamos en nuestra carpeta &#8216;workspace/resultados&#8217;.<br />
Podemos copiar solamente determinados archivos pero simplificando, que<br />
es gerundio.</p>
<p>Ahora que  tenemos la estructura, configuramos el Visual C++.</p>
<p>1. Abrimos el proyecto &#8216;Samples_vc9.sln&#8217;</p>
<p>2. Actualizamos las carpetas de resultados y de intermedios</p>
<p>../resultados</p>
<p>../resultados/intermedio</p>
<p><img class="aligncenter size-medium wp-image-159" title="Ogre Paths" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/11/ogreCarpetas7-300x225.png" alt="Ogre Paths" width="300" height="225" /></p>
<p>3. Compilamos todo el proyecto</p>
<p>Generar&gt; Generar Solución o F7</p>
<p>4. A partir de ahora nos centramos en uno en concreto. Por ejemplo Demo_BspCollision</p>
<p><img class="aligncenter size-medium wp-image-160" title="Ogre Proyecto" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/11/ogreCarpetas4-300x225.png" alt="Ogre Proyecto" width="300" height="225" /></p>
<p>5. Ejecutamos el ejemplo y a disfrutarlo</p>
<p>Siempre podemos encontrar algun error que nos retrase en lo que realmente<br />
nos interesa, ponernos a trabajar lo antes posible en el entorno. Sin<br />
embargo, una vez puesto en marcha el aprendizaje es rápido y el contenido<br />
tremendamente interesante.</p>
<p>Hasta la próxima</p>
]]></content:encoded>
			<wfw:commentRss>http://www.starcostudios.com/blog/2009/11/como-instalar-ogre-desde-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programar juegos de estrategia en tiempo real</title>
		<link>http://www.starcostudios.com/blog/2009/11/programar-juegos-de-estrategia-en-tiempo-real/</link>
		<comments>http://www.starcostudios.com/blog/2009/11/programar-juegos-de-estrategia-en-tiempo-real/#comments</comments>
		<pubDate>Mon, 23 Nov 2009 09:51:48 +0000</pubDate>
		<dc:creator>Sergio Sanchez Mendez</dc:creator>
				<category><![CDATA[Game Dev]]></category>
		<category><![CDATA[Inteligencia Artificial]]></category>

		<guid isPermaLink="false">http://www.starcostudios.com/blog/?p=146</guid>
		<description><![CDATA[Hola amigos,
Que se espera de alguien que vaya a encargarse de la inteligencia
artificial de un juego de estrategia en tiempo real (Real Time
Strategy). Pues bien, eso es lo que vamos a ver de forma muy resumida
en este apartado. Progresivamente nos iremos poniendo en materia y
profundizando en los diferentes aspectos.
Cuando hablo de programar la IA de [...]]]></description>
			<content:encoded><![CDATA[<p>Hola amigos,</p>
<p>Que se espera de alguien que vaya a encargarse de la inteligencia<br />
artificial de un juego de estrategia en tiempo real (Real Time<br />
Strategy). Pues bien, eso es lo que vamos a ver de forma muy resumida<br />
en este apartado. Progresivamente nos iremos poniendo en materia y<br />
profundizando en los diferentes aspectos.</p>
<p>Cuando hablo de programar la IA de juegos RTS me ciño al más puro<br />
aspecto académico, es decir, a la búsqueda de conocimiento basado<br />
en cálculos y algoritmos que simulan una situación &#8216;real&#8217; o si más<br />
no factible. ¿A qué me refiero con esto? La IA de los juegos comerciales<br />
debe en muchas ocasiones (por no decir en la práctica totalidad) hacer<br />
determinadas trampas o acceder a información que el usuario desconoce<br />
con la finalidad de ser realmente competitiva.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/pVTFV05WVfo&amp;hl=es_ES&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/pVTFV05WVfo&amp;hl=es_ES&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Por ejemplo, la IA puede conocer la posición de todas las unidades aunque<br />
estas esten en una zona de niebla de guerra (o warfog). Puede conocer<br />
las órdenes que el jugador da a sus unidades o incluso el tipo de las<br />
mismas, para centrarse en construir ella misma las que mejor pueden<br />
desenvolverse en caso de que ataque o de recibir un ataque. Puede<br />
también incrementar la velocidad de minado o incluso los recursos reales de<br />
los que dispone. Con esto, se generan IA&#8217;s altamente competitivas pero<br />
que a la hora de la verdad, NO están resolviendo problemas a situacioens<br />
reales y por lo tanto interesan solo desde el punto de vista comercial<br />
pero no desde el científico. Es por eso que estas prácticas se rechazan<br />
y se dejan como elementos a implementar en determinadas aplicaciones.</p>
<p><img class="aligncenter size-medium wp-image-147" title="Mundo orts" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/11/orts-300x211.jpg" alt="Mundo orts" width="300" height="211" /></p>
<p>Nosotros nos centraremos en estudiar diferentes áreas como:<br />
- Razonamiento de los sistemas<br />
- Planificación de estrategias<br />
- Aprendizaje o machine learning<br />
- Pathfinding o búsqueda de caminos<br />
- Cooperación o sistemas multiagente</p>
<p><img class="aligncenter size-medium wp-image-148" title="Cooperative Pathfinding in Dynamic Enviroments" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/11/orts_1_cooperative_pathfinding_indynamic_enviroments-300x218.png" alt="Cooperative Pathfinding in Dynamic Enviroments" width="300" height="218" /></p>
<p><img class="aligncenter size-medium wp-image-149" title="Strategic Tank Combat" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/11/orts_2_tank_combat-300x218.png" alt="Strategic Tank Combat" width="300" height="218" /></p>
<p><img class="aligncenter size-medium wp-image-150" title="Simplified RTS Game" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/11/orts_3_simplified_RTS_game-299x218.png" alt="Simplified RTS Game" width="299" height="218" /></p>
<p>Entre otras. Pasando a la plataforma Open Real Time Strategy (ORTS),<br />
estamos en un entorno de juego real donde creamos y gestionamos ejercitos,<br />
disponemos de movimiento en tiempo real(Real time object motion en 2.5D),<br />
tratamos con información imperfecta (niebla, desconocimiento de los recursos<br />
del oponente, detalles de unidades enemigas &#8230;etc), recursos y árbol<br />
de tecnología. Con esto tenemos juego más que de sobra para aplicar muchos<br />
de los conceptos de inteligencia artificial que nos interesan.</p>
<p>Los objetivos ahora serán:<br />
- Poner a punto el entorno.<br />
- Compilar el proyecto.<br />
- Ver la estructura general del mismo.<br />
- Empezar a profundizar en los detalles.</p>
<p>En próximos artículos pondremos veremos como poner a punto el entorno<br />
y empezaremos a trabajar con este juego de estrategia real con el mismo<br />
entorno que tendriais que utilizar si trabajaseis como programadores<br />
de inteligencia artificial para videojuegos.</p>
<p><object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/_FMzr46JZhE&#038;hl=es_ES&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/_FMzr46JZhE&#038;hl=es_ES&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object></p>
<p>Diversión y aprendizaje garantizados. ¿Quien ha dicho que los juegos<br />
no valen para nada? Por lo pronto ya facturan más que la industria del cine.<br />
Un buen aliciente para aquellos que disfrutamos creando puesto que habrán muchas inversiones<br />
y muchos proyectos en los que trabajar. La próxima vez que alguien os<br />
diga que estais demasiado enganchados a los juegos la respuesta es clara&#8230;<br />
&#8230;lo siento, soy adicto al trabajo!</p>
<p>Hasta nueva vista.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.starcostudios.com/blog/2009/11/programar-juegos-de-estrategia-en-tiempo-real/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>ORTS. Estrategia en tiempo real OpenSource</title>
		<link>http://www.starcostudios.com/blog/2009/11/orts-estrategia-en-tiempo-real-opensource/</link>
		<comments>http://www.starcostudios.com/blog/2009/11/orts-estrategia-en-tiempo-real-opensource/#comments</comments>
		<pubDate>Thu, 12 Nov 2009 10:57:29 +0000</pubDate>
		<dc:creator>Sergio Sanchez Mendez</dc:creator>
				<category><![CDATA[Game Dev]]></category>
		<category><![CDATA[Inteligencia Artificial]]></category>

		<guid isPermaLink="false">http://www.starcostudios.com/blog/?p=138</guid>
		<description><![CDATA[Hola amigos,
Hoy tengo el placer de presentaros un proyecto que hará las  delicias de muchos aficcionados y profesionales de la inteligencia artificial aplicada a los videojuegos. Se trata del Open Source Real Tyme Strategy (ORTS) que actualmente desarrolla un equipo de investigadores del grupo de Games Research del Departamento de Tecnologías de la Información de [...]]]></description>
			<content:encoded><![CDATA[<p>Hola amigos,</p>
<p>Hoy tengo el placer de presentaros un proyecto que hará las  delicias de muchos aficcionados y profesionales de la inteligencia artificial aplicada a los videojuegos. Se trata del Open Source Real Tyme Strategy (ORTS) que actualmente desarrolla un equipo de investigadores del grupo de <a href="http://www.cs.ualberta.ca/~games/">Games Research </a>del Departamento de Tecnologías de la Información de la Universidad de Alberta.</p>
<p>Todo un lujo ya que trabajan tanto en la IA aplicada a los juegos clásicos como la aplicada a los grandes juegos comerciales. Una interesante mezcla del rigor académico y las grandes posibilidades de los sistemas actuales del entorno comercial.</p>
<p>Aunque hoy vamos a ver un juego de estrategia en tiempo real, no dejeis de echarle un vistazo a la web del grupo. Poker, ajedrez e incluso &#8216;go&#8217; que es un juego difícil de trabajar con él en materia de inteligencia artificial. Uno de los integrantes Michael Buro, creador de ORTS, es el constructor de un programa de Othello que venció al campeón mundial del juego por 6 a 0.</p>
<p>El proyecto ORTS empieza en el año 2003 con la finalidad de crear un sistema cliente-servidor para el desarrollo de técnicas de Inteligencia Artificial en juegos interactivos de estrategia en tiempo real. El resultado es <a href="http://www.cs.ualberta.ca/~mburo/orts/">Open Real Time Strategy</a>.</p>
<div id="attachment_139" class="wp-caption alignleft" style="width: 160px"><img class="size-thumbnail wp-image-139" title="Elementos de ORTS" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/11/shot.26.08.2005-150x150.jpg" alt="Elementos de ORTS" width="150" height="150" /><p class="wp-caption-text">Elementos de ORTS</p></div>
<div id="attachment_140" class="wp-caption alignleft" style="width: 160px"><img class="size-thumbnail wp-image-140" title="Base" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/11/shot8-150x150.jpg" alt="Base" width="150" height="150" /><p class="wp-caption-text">Base</p></div>
<p>En este juego varias facciones disponen sus unidades sobre el campo de batalla y se encargan de  hacer crecer sus recursos.  La finalidad es acabar con el oponente. Un ejemplo de juego es el que vemos a continuación:</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/2QYBQN3e7IM&amp;hl=es_ES&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/2QYBQN3e7IM&amp;hl=es_ES&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Hay mucha <a href="http://www.cs.ualberta.ca/~mburo/orts/#Documentation">documentación </a>al respecto que podemos encontrar en la red. Además se ha documentado de forma exhaustiva la estructura del <a href="http://www.cs.ualberta.ca/~mburo/orts/doxygen/html/classes.html">código </a>por lo que no es muy difícil empezar a probar algunas cosas. En posteriores artículos nos adentraremos aún más en el mundo de ORTS que promete ser muy enriquecedor.</p>
<p>Hoy todos los interesados en la IA que no conocierais el proyecto acabais de conseguir un juguete muy pero que muy elaborado y tan divertivo o más que cualquier otro que nos pueda caer en navidad.</p>
<p>Ya tenemos un punto de vista distribuido en cuanto a las aplicaciones que podemos utilizar para adentrarnos en el mundo de la IA para videojuegos. Ahora es tiempo de profundizar en aspectos más interesantes y en conceptos propios de los problemas que nos encontramos a la hora de trabajar en esta área.</p>
<p>Hasta la próxima</p>
]]></content:encoded>
			<wfw:commentRss>http://www.starcostudios.com/blog/2009/11/orts-estrategia-en-tiempo-real-opensource/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Quake III Arena, código fuente completo.</title>
		<link>http://www.starcostudios.com/blog/2009/11/quake-iii-arena-codigo-fuente-completo/</link>
		<comments>http://www.starcostudios.com/blog/2009/11/quake-iii-arena-codigo-fuente-completo/#comments</comments>
		<pubDate>Thu, 05 Nov 2009 19:00:49 +0000</pubDate>
		<dc:creator>Sergio Sanchez Mendez</dc:creator>
				<category><![CDATA[Game Dev]]></category>
		<category><![CDATA[Inteligencia Artificial]]></category>

		<guid isPermaLink="false">http://www.starcostudios.com/blog/?p=117</guid>
		<description><![CDATA[Para la mayoría de los jugones veteranos el Quake ha sido una fuente de alegrías continuas. Para los que no lo conozcáis, el Q3 es un juego de acción shooter primera persona creado por Id Software donde la finalidad es competir contra bots o contra otros jugadores en el modo multiplayer en mapas en los [...]]]></description>
			<content:encoded><![CDATA[<p>Para la mayoría de los jugones veteranos el Quake ha sido una fuente de alegrías continuas. Para los que no lo conozcáis, el Q3 es un juego de acción shooter primera persona creado por Id Software donde la finalidad es competir contra bots o contra otros jugadores en el modo multiplayer en mapas en los que se distribuyen armas a punta pala. La acción está garantizada.</p>
<div id="attachment_122" class="wp-caption alignleft" style="width: 160px"><img class="size-thumbnail wp-image-122" title="Quake I" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/11/quake12-150x150.gif" alt="Quake I" width="150" height="150" /><p class="wp-caption-text">Quake I</p></div>
<div id="attachment_119" class="wp-caption alignleft" style="width: 160px"><img class="size-thumbnail wp-image-119" title="Quake II" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/11/Foto+Quake+II-150x150.jpg" alt="Quake II" width="150" height="150" /><p class="wp-caption-text">Quake II</p></div>
<div id="attachment_120" class="wp-caption alignleft" style="width: 160px"><img class="size-thumbnail wp-image-120" title="Quake III" src="http://www.starcostudios.com/blog/wp-content/uploads/2009/11/quake3-150x150.jpg" alt="Quake III" width="150" height="150" /><p class="wp-caption-text">Quake III</p></div>
<p>En este juego no faltan las máquinas humanas capaces de realizar proezas con el armamento. En el video a continuación se muestra un fragmento homenaje de uno de esos sujetos.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="560" height="340" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/gow5D03rKvY&amp;hl=es&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="560" height="340" src="http://www.youtube.com/v/gow5D03rKvY&amp;hl=es&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Lo realmente interesante desde nuestro punto de vista es el hecho de que el código haya sido publicado por completo. Sin embargo, no todo el material fue distribuido por lo que el juego no era completo. Desde este panorama surge la iniciativa de los chicos de <a href="http://openarena.ws/" target="_blank">Open Arena </a>mediante la que con el motor de juego del Quake III Arena se han ido creando contenidos y modos de juego.</p>
<p>Lo que nos llama la atención es el hecho de poder  trabajar con la IA del juego. Existen numerosas iniciativas y comentarios al respecto como los que vemos en <a href="http://aigamedev.com/open/highlights/quake3-engine/" target="_blank">Aigamedev</a> o <a href="http://planetquake.gamespy.com/View.php?game=4&amp;view=Quake3.List">PlanetQuake</a>.</p>
<p>Para empezar a trabajar con él debemos:</p>
<ul>
<li>Primero Descargar el <a href="ftp://ftp.idsoftware.com/idstuff/source/quake3-1.32b-source.zip" target="_blank">código fuente</a>.</li>
<li>Y segundo Conseguir la versión completa o <a href="http://www.idsoftware.com/business/techdownloads/" target="_blank">demos oficiales</a>.</li>
<li>Adicionalmente conseguir la versión de <a href="http://openarena.ws/files.html" target="_blank">Open Arena.</a></li>
</ul>
<p>Iremos viendo poco a poco la forma de profundizar en el desarrollo de la inteligencia artificial para Quake 3.</p>
<p>Otra interesante iniciativa es la <a href="http://code.google.com/p/quake3-brainworks/" target="_blank">Quake 3 Brainworks </a>mediante la que se ha organizado el desarrollo de la reescritura completa de la IA para los bots.</p>
<p>Entre las características que se han creado están:</p>
<ul>
<li>Sistema de Percepción Visual y Auditiva</li>
<li>Esquivando aleatorios en las batallas.</li>
<li> Evasión de misiles.</li>
<li>Habilidad de juego por saltos. Strafejumping.</li>
<li>Puntería del enemigo mejorada.</li>
<li>Selección inteligente de recogida de items.</li>
<li>Gestión del tiempo de las reapariciones.</li>
<li>Selección dinámica del arma.</li>
<li>Selección de metas redefinida.</li>
<li>Selección de apuntado redefinida.</li>
<li>Lógica de juego en equipo redefinida.</li>
<li>Código de chat reescrito.</li>
<li>Infraestructura lógica interna redefinida.</li>
</ul>
<p>Y además se han definido bots con 5 niveles de habilidad</p>
<ul>
<li>Skill 1: Alguien que ha jugado a Q3A durante menos de 2 semanas.</li>
<li>Skill 2: Alguien que ha jugado a Q3A durante 3 meses.</li>
<li>Skill 3: Media de un jugador en un servidor público.</li>
<li>Skill 4: El mejor jugador de un servidor público.</li>
<li>Skill 5: Jugador de clan profesional que compite en torneos.</li>
</ul>
<p>Echadle un vistazo, no os arrepentireis!</p>
<div id="_mcePaste" style="overflow: hidden; position: absolute; left: -10000px; top: 1212px; width: 1px; height: 1px;">Skill 1: Alguien que ha jugado a Q3A durante menos de 2 semanas</div>
]]></content:encoded>
			<wfw:commentRss>http://www.starcostudios.com/blog/2009/11/quake-iii-arena-codigo-fuente-completo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

