<?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>La Patata Mecanica &#187; software</title>
	<atom:link href="http://patatamecanica.es/category/software/feed/" rel="self" type="application/rss+xml" />
	<link>http://patatamecanica.es</link>
	<description>Blog de tecnologia y videojuegos</description>
	<lastBuildDate>Tue, 27 Jul 2010 19:58:21 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Framework RedDwarf a fondo (II): Gestión de hilos</title>
		<link>http://patatamecanica.es/2010/02/24/framework-reddwarf-a-fondo-ii-gestion-de-hilos/</link>
		<comments>http://patatamecanica.es/2010/02/24/framework-reddwarf-a-fondo-ii-gestion-de-hilos/#comments</comments>
		<pubDate>Wed, 24 Feb 2010 15:15:21 +0000</pubDate>
		<dc:creator>danielskun</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[videojuegos]]></category>
		<category><![CDATA[darkstar]]></category>
		<category><![CDATA[mmorpg]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[reddwarf]]></category>

		<guid isPermaLink="false">http://patatamecanica.es/?p=877</guid>
		<description><![CDATA[Siguiendo con la serie que empecé con Framework RedDwarf a fondo (I): Comunicación, esta vez toca hablar de hilos. Como ya comenté en aquel post, este framework libre escrito en Java facilita el desarrollo de videojuegos multijugador en varias áreas distintas que no suelen ser contempladas por soluciones comerciales; siendo los hilos una de ellas.

A <a href="http://patatamecanica.es/2010/02/24/framework-reddwarf-a-fondo-ii-gestion-de-hilos/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Siguiendo con la serie que empecé con <a href="http://patatamecanica.es/2010/02/16/framework-reddwarf-a-fondo-i-comunicacion/">Framework RedDwarf a fondo (I): Comunicación</a>, esta vez toca hablar de hilos. Como ya comenté en aquel post, este framework libre escrito en Java facilita el desarrollo de videojuegos multijugador en varias áreas distintas que no suelen ser contempladas por soluciones comerciales; siendo los hilos una de ellas.</p>
<p><a href="http://patatamecanica.es/wp-content/uploads/2010/02/HilosParody.png"><img class="aligncenter size-medium wp-image-879" title="Parodia hilos" src="http://patatamecanica.es/wp-content/uploads/2010/02/HilosParody-300x231.png" alt="" width="300" height="231" /></a><span id="more-877"></span></p>
<p>A la hora de crear el servidor, siempre surge la siguiente pregunta: ¿cómo voy a gestionar las conexiones y eventos de los distintos clientes <strong>en paralelo</strong>? ¿un hilo de ejecución por cada cliente, un hilo por partida, o una <em><a href="http://en.wikipedia.org/wiki/Thread_pool_pattern">thread pool</a></em>?</p>
<div id="attachment_878" class="wp-caption alignleft" style="width: 310px"><a href="http://patatamecanica.es/wp-content/uploads/2010/02/580px-Thread_pool.svg_.png"><img class="size-medium wp-image-878" title="580px-Thread_pool.svg" src="http://patatamecanica.es/wp-content/uploads/2010/02/580px-Thread_pool.svg_-300x155.png" alt="" width="300" height="155" /></a><p class="wp-caption-text">Thread pool o &quot;piscina de hilos&quot;</p></div>
<p>Y la respuesta a estas preguntas es que con el framework RedDwarf, <em>debes</em> olvidarte de ello. RedDwarf te proporciona un motor el cual, efectivamente, es multitarea y multihilo. Pero este núcleo se esconde para proporcionar al programador un entorno que parece monohilo, como si éstos no existieran. Si quieres, puedes olvidarte de todo lo aprendido en el pasado acerca de los hilos, <strong>o mejor aún, puedes no aprenderlo para invertir tu tiempo en la verdadera lógica de tu juego</strong>.</p>
<p>Por detrás, RedDwarf funciona siguiendo el patrón de diseño <em>Thread Pool, </em>en el cual se crean un número fijo de hilos o &#8220;trabajadores&#8221; al que se le envían tareas como paquetes de trabajo. La piscina gestionará las tareas y repartirá el trabajo entre los hilos disponibles.  Esto es muy importante ya que <strong>esta piscina de hilos determinará automáticamente y en función de las capacidades de nuestra CPU el número de hilos a crear para la ejecución de tareas en paralelo.</strong> Vamos, que RedDwarf sacará todo el provecho de tu máquina sin que te tengas que preocupar de programar algo que, seguramente, te traería muchos dolores de cabeza. A esto hay que sumar que si un día decides ejecutar tu servidor en otro PC diferente, la piscina de hilos se adaptará a la nueva CPU al arrancar el servidor. Como muchos frameworks para otro tipo de cosas (<a href="http://arstechnica.com/apple/reviews/2009/08/mac-os-x-10-6.ars/12">Grand Central Dispatch</a>, de Apple o <a href="http://qt.nokia.com/products">Qt</a> por ejemplo, de Nokia, también libre) han ido marcando, <strong>el</strong><strong> futuro de la programación en paralelo son las tareas</strong>, no los hilos. Os dejo un video que lo explica muy bien, aplicado en Grand Central Dispatch. Aprovecho para recordar que en el <a href="http://patatamecanica.es/2009/09/14/podcast-04-patata-mecanica/">Podcast 4 hablé de GCD en la sección de tecnología.</a></p>
<p align="center">
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="295" 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://vimeo.com/moogaloop.swf?clip_id=6291019&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=ff9933&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="295" src="http://vimeo.com/moogaloop.swf?clip_id=6291019&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=1&amp;color=ff9933&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Vale, perfecto y maravilloso. ¿Pero cómo se utiliza esta piscina en un servidor que utilice RedDwarf? El gestor al que nos tendremos que dirigir será <strong>TaskManager</strong> (Gestor de tareas, no podía tener un mejor nombre), el cual nos permitirá programar tareas para su ejecución basándonos en un tiempo máximo de espera. Un ejemplo sería: &#8220;TaskManager, por favor, comienza a prepararme un café de aquí a un segundo&#8221; o también, por supuesto, &#8220;ahora mismo&#8221;. Otra utilidad que nos ofrece es la de programar tareas periódicas, que tengan que repetirse cada cierto tiempo (en un MMORPG, un buen ejemplo sería el amanecer y el anochecer, ejecutados cada 24 horas). <strong>Nosotros definiremos las tareas implementando la interface Task</strong>, la cual nos obligará a incorporar un método <em>run()</em> a nuestra clase. La piscina de hilos ejecutará este método el cual, al finalizar, indicará que se ha completado la tarea (fijaos en la imagen de arriba).</p>
<p>Resumiendo:</p>
<ul>
<li>Acceso al TaskManager: <em>AppContext().getTaskManager();</em></li>
<li>Servicios del TaskManager: <em>schedulePeriodicTask</em><em>()</em> y <em>scheduleTask()</em></li>
<li>Definición de taras: interface <em>Task</em></li>
</ul>
<p>¡Espero que os haya parecido interesante!</p>
<p>Links: <a href="http://reddwarfserver.org">RedDwarf</a>, <a href="http://projectdarkstar.com">ProjectDarkstar</a></p>
]]></content:encoded>
			<wfw:commentRss>http://patatamecanica.es/2010/02/24/framework-reddwarf-a-fondo-ii-gestion-de-hilos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Framework RedDwarf a fondo (I): Comunicación</title>
		<link>http://patatamecanica.es/2010/02/16/framework-reddwarf-a-fondo-i-comunicacion/</link>
		<comments>http://patatamecanica.es/2010/02/16/framework-reddwarf-a-fondo-i-comunicacion/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 16:39:49 +0000</pubDate>
		<dc:creator>danielskun</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[videojuegos]]></category>
		<category><![CDATA[darkstar]]></category>
		<category><![CDATA[mmorpg]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[reddwarf]]></category>

		<guid isPermaLink="false">http://patatamecanica.es/?p=805</guid>
		<description><![CDATA[Bueno pues, para seguir con esta temática, y sobre todo, para dejar bien claro las bondades y capacidades del framework RedDwarf, escribo este post. Recordar que RedDwarf es un framework escrito en Java que facilita enormemente el desarrollo de MMORPGs, que salió de los laboratorios de Sun Microsystems y que antes era llamado Project Darkstar.

Voy <a href="http://patatamecanica.es/2010/02/16/framework-reddwarf-a-fondo-i-comunicacion/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Bueno pues, para seguir con esta temática, y sobre todo, para dejar bien claro las bondades y capacidades del framework RedDwarf, escribo este post. <a href="http://patatamecanica.es/2010/02/15/desarrollo-de-mmorpgs-framework-libre-reddwarf-y-iii/">Recordar que </a><strong><a href="http://patatamecanica.es/2010/02/15/desarrollo-de-mmorpgs-framework-libre-reddwarf-y-iii/">RedDwarf es un framework escrito en Java que facilita enormemente el desarrollo de MMORPGs</a></strong>, que salió de los laboratorios de Sun Microsystems y que antes era llamado Project Darkstar.</p>
<p style="text-align: left;"><a href="http://patatamecanica.es/wp-content/uploads/2010/02/CommParody1.png"><img class="aligncenter size-full wp-image-823" title="CommParody" src="http://patatamecanica.es/wp-content/uploads/2010/02/CommParody1.png" alt="" width="375" height="279" /></a><span id="more-805"></span></p>
<p style="text-align: left;">Voy a analizar 5 áreas distintas en las que este framework <strong>nos facilita la vida: comunicación, hilos, acceso concurrente, persistencia y, por último, escalabilidad</strong>. En cada una, explicaré las herramientas de las que podemos hacer uso para ahorrarnos horas y horas de desarrollo, testeo y debug al desarrollar cualquier juego online multijugador.</p>
<h2 style="text-align: left;">Comunicación</h2>
<p style="text-align: left;">La comunicación en un videojuego online a través de internet suele ser un tema muy delicado. Una mala implementación hará que el lag se apodere de nuestro juego. Puedes hacerte varias preguntas sobre qué tecnología utilizar: <strong>¿Sockets, RMI,&#8230;?</strong> ¿No sería más fácil centrarnos en la lógica de nuestro juego? Además, la mayoría de los juegos online se basan en un login, enviar mensajes (atacar, moverse, chat, etc) y una desconexión o logout. Sólo implementar la base para que esto funcione costaría mucho trabajo. <strong>RedDwarf nos permite abstraernos de TODA la mecánica de la comunicación por red. </strong></p>
<p style="text-align: left;"><strong> </strong>Se basa en tres interfaces por el lado del servidor:</p>
<ul style="text-align: left;">
<li>AppListener: puerta principal para inicializar el servidor y hacer login.</li>
<li>ClientSessionListener: para atender las peticiones, eventos y mensajes de un cliente.</li>
<li>ClientSession: para enviar mensajes a un cliente.</li>
</ul>
<p style="text-align: left;">Y una clase y una interfaz en el cliente:</p>
<ul style="text-align: left;">
<li>SimpleClient: para hacer login y logout y para enviar mensajes. Representa la conexión de salida.</li>
<li>SimpleClientListener: recibir mensajes y notificaciones como login y logout fallidos/no fallidos. Representa la conexión de entrada.</li>
</ul>
<p style="text-align: left;">La siguiente imagen ilustra el funcionamiento de la comunicación cliente-servidor:</p>
<p style="text-align: left;"><a href="http://patatamecanica.es/wp-content/uploads/2010/02/RedDwarfComms.png"><img class="size-medium wp-image-813" title="RedDwarfComms" src="http://patatamecanica.es/wp-content/uploads/2010/02/RedDwarfComms-300x104.png" alt="" width="300" height="104" /></a></p>
<p style="text-align: left;"><strong>Pero esto no es todo. </strong>¿Qué pasa cuando queremos enviar y recibir mensajes de un grupo de usuarios del juego, pero no de todos? Por ejemplo, un chat de clan, recibir mensajes sólo del área visible del mapa, un juego online basado en diferentes partidas (como un servidor de partidas de poker), etc&#8230; <strong>Para eso existen los Channels o canales</strong>. Los canales se crean en el servidor, el cual puede subscribir/eliminar clientes de un canal, mientras que todo lo que sea enviado al canal por alguien será recibido automáticamente por los clientes suscritos.</p>
<p style="text-align: left;">
<p style="text-align: left;"><a href="http://reddwarfserver.org">Página oficial RedDwarf</a>.</p>
<p style="text-align: left;">Fuente: <a href="http://www.projectdarkstar.com/w/images/9/9d/AGCPresentation.pdf">ProjectDarkstar/Learn</a></p>
]]></content:encoded>
			<wfw:commentRss>http://patatamecanica.es/2010/02/16/framework-reddwarf-a-fondo-i-comunicacion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Desarrollo de MMORPGs: Framework libre RedDwarf (y III)</title>
		<link>http://patatamecanica.es/2010/02/15/desarrollo-de-mmorpgs-framework-libre-reddwarf-y-iii/</link>
		<comments>http://patatamecanica.es/2010/02/15/desarrollo-de-mmorpgs-framework-libre-reddwarf-y-iii/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 08:47:10 +0000</pubDate>
		<dc:creator>danielskun</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[videojuegos]]></category>
		<category><![CDATA[darkstar]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[masivo]]></category>
		<category><![CDATA[mmorpg]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[programacion]]></category>
		<category><![CDATA[reddwarf]]></category>
		<category><![CDATA[rol]]></category>
		<category><![CDATA[tibia]]></category>

		<guid isPermaLink="false">http://patatamecanica.es/?p=767</guid>
		<description><![CDATA[RedDwarf, heredero de Project Darkstar
Si leísteis el artículo anterior de esta serie, os acordaréis que faltan ciertas áreas que no se ven muy cubiertas por esta serie de motores o componentes comerciales: la concurrencia, la conectividad, la persistencia, y muy importante, la escalabilidad. ¿No hay componentes (frameworks) que nos simplifiquen todo esto? ¿frameworks que nos <a href="http://patatamecanica.es/2010/02/15/desarrollo-de-mmorpgs-framework-libre-reddwarf-y-iii/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<h2>RedDwarf, heredero de Project Darkstar</h2>
<p><a href="http://patatamecanica.es/2010/02/13/desarrollo-de-mmorpgs-¿tarea-faraonica-ii/">Si leísteis el artículo anterior de esta serie</a>, os acordaréis que faltan ciertas áreas que no se ven muy cubiertas por esta serie de motores o componentes comerciales: la concurrencia, la conectividad, la persistencia, y muy importante, la escalabilidad. ¿No hay componentes (frameworks) que nos simplifiquen todo esto? ¿frameworks que nos den lo que prácticamente todos los MMORPG necesitan en estas áreas comunes ya hecho y programado? Yo conozco uno, y he alucinado: <a href="http://reddwarfserver.org" target="_blank">RedDwarf</a>.</p>
<p><a href="http://patatamecanica.es/wp-content/uploads/2010/02/Untitled.png"><img title="RedDwarf" src="http://patatamecanica.es/wp-content/uploads/2010/02/Untitled-300x65.png" alt="Project Darkstar" width="300" height="65" /></a></p>
<p><span id="more-767"></span></p>
<p>Hasta hace unos pocos días, RedDwarf, como parece que será finalmente el nombre elegido, se llamaba <a href="http://www.projectdarkstar.com">Project Darkstar</a>. Se trata de un proyecto que se inició en el año 1999, y que ha sido desarrollado hasta ahora por Sun Microsystems. La causa del cambio de nombre ha sido el abandono del proyecto por parte de Sun, <a href="http://www.genbeta.com/actualidad/oracle-compra-sun">debido a la compra de esta compañía por parte de Oracle</a>. Ya que se trata de un proyecto abierto, la comunidad está en proceso de relanzarlo. Pero expliquemos mejor qué es esto.</p>
<p>RedDwarf cubre todos los aspectos que he nombrado anteriormente, aspectos complejos comunes a todos los MMORPGs. Para el desarrollador, el problema de la concurrencia quedaría totalmente subsanado: no existen los hilos al usar framework, ni la sincronización, el programador sólo piensa en tareas que RedDwarf se encargará de ejecutar cuando pueda creando los hilos que crea necesarios dependiendo del sistema (núcleos de CPU, etc). Tampoco tienes que encargarte de las comunicaciones: la base ya está programada, y de la forma más eficiente posible. Toda la comunicación entre los clientes y el servidor ha sido simplificada al máximo mediante conceptos como &#8220;Channels&#8221; o canales de subscripción. Y qué pasa con la persistencia, culpable de los rollbacks (perder cosas cuando te caes del servidor o el servidor se cae) del resto de MMORPGs por una programación no tan óptima: arreglada por completo, no existen los rollbacks ni los &#8220;server save&#8221;, el servidor siempre está guardado.  Ah, espera, falta la escalabilidad: tan fácil como conectar una nueva máquina, no haría falta reprogramar nada de nada (aunque esto último estaban a punto de conseguirlo en el momento en el que Oracle anunció que dejaba de apoyar al Project Darkstar).</p>
<p>Este proyecto, en la versión 0.9.11 es totalmente funcional, de hecho existen empresas que han desarrollado juegos online comerciales utilizándolo. Las posibilidades son tremendas, y la comunidad lo sabe, por lo que muy seguramente RedDwarf, como ahora ha sido bautizado, tenga un buen futuro. Si os interesa, deberíais acudir a la página de  <a href="http://www.projectdarkstar.com">Project Darkstar</a> para buscar información, ya que el traslado a RedDwarf comenzó hace sólo 6 días. Por último comentar que estoy migrando un juego de mus online a este framework, y espero poder contaros más al respecto, aunque puedo decir ya que es tremendamente fácil utilizarlo y simplifica muchísimo el desarrollo de este tipo de sistemas.</p>
]]></content:encoded>
			<wfw:commentRss>http://patatamecanica.es/2010/02/15/desarrollo-de-mmorpgs-framework-libre-reddwarf-y-iii/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Desarrollo de MMORPGs: ¿Tarea faraónica? (II)</title>
		<link>http://patatamecanica.es/2010/02/13/desarrollo-de-mmorpgs-%c2%bftarea-faraonica-ii/</link>
		<comments>http://patatamecanica.es/2010/02/13/desarrollo-de-mmorpgs-%c2%bftarea-faraonica-ii/#comments</comments>
		<pubDate>Sat, 13 Feb 2010 11:13:04 +0000</pubDate>
		<dc:creator>danielskun</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[videojuegos]]></category>
		<category><![CDATA[darkstar]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[masivo]]></category>
		<category><![CDATA[mmorpg]]></category>
		<category><![CDATA[online]]></category>
		<category><![CDATA[rol]]></category>
		<category><![CDATA[tibia]]></category>

		<guid isPermaLink="false">http://patatamecanica.es/?p=769</guid>
		<description><![CDATA[Complejidad de un MMORPG
Como visteis en el primer artículo, me interesan mucho los MMORPG, y muchas veces pienso en intentar trastear para crear algo. Pero el desarrollo de MMORPG no es nada fácil: entran en juego multitud de áreas de la informática, y es necesario tener mucha habilidad en todas ellas para crear algo utilizable. <a href="http://patatamecanica.es/2010/02/13/desarrollo-de-mmorpgs-%c2%bftarea-faraonica-ii/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<h2>Complejidad de un MMORPG</h2>
<p><a href="http://patatamecanica.es/2010/02/12/desarrollo-de-mmorpgs-¿tarea-faraonica-i/">Como visteis en el primer artículo</a>, me interesan mucho los MMORPG, y muchas veces pienso en intentar trastear para crear algo. Pero el desarrollo de MMORPG no es nada fácil: entran en juego multitud de áreas de la informática, y es necesario tener mucha habilidad en todas ellas para crear algo utilizable. Como la mayoría sabemos, un MMORPG suele estar alojado en un servidor al que se conectan multitud de clientes que toman parte en un mismo juego, del cual pueden desconectarse para luego conectarse otro día sin perder la turbo-espada que consiguieron. Así que tenemos:</p>
<p><span id="more-769"></span></p>
<ul>
<li><strong>Concurrencia:</strong> el servidor debe procesar tareas en paralelo por cada jugador, lo que precisa de programación multihilo, y la sincronización entre estos hilos lo cual complica la programación.</li>
<li><strong>Conectividad:</strong> En un MMORPG, la respuesta al usuario debe ser rápida o aparecerá el lag, por lo que es posible que deban utilizarse técnicas complejas para simular la respuesta instantánea del servidor y no saturar la conexión si queremos ser capaces de soportar muchos usuarios. Por ejemplo, es posible que el juego en nuestro pc, cuando queramos avanzar hacia adelante con nuestro personaje, nos haga creer que hemos avanzado sin esperar a que el servidor le diga &#8220;Sí, puedes ir para adelante&#8221;. Luego si resulta que el servidor le dice que no puede, veremos una especie de rebote de nuestro personaje hacia una posición anterior (efectos del lag).</li>
<li><strong>Persistencia:</strong> si queremos que los jugadores no pierdan lo que consiguen entre conexiones al juego, necesitamos algún lugar donde guardar su estado. Normalmente se utilizan bases de datos.</li>
<li><strong>Gráficos:</strong> los jugadores cada vez son más exigentes con los gráficos, tienes que ser un experto en DirectX, OpenGL, e infinidad de herramientas de modelado 3D.</li>
<li><strong>Físicas:</strong> Si quieres que tu mundo se parezca al mundo real&#8230; tendrás que implementar las leyes que rigen nuestro mundo. Estaría bien que repasaras lo que estudiaste sobre la gravedad, las colisiones entre sólidos rígidos. Ufff&#8230;. suena jodido.</li>
<li><strong>Audio:</strong> y encima contratar a músicos que creen la música para tus escenarios, o buscarte en internet ruidos que se parezcan a las pisadas sobre un suelo de madera. Ah, y sobre un suelo de hormigón, y sobre el barro&#8230;</li>
<li><strong>Escalabilidad:</strong> Vaya, tu juego va tan bien que ya vas por los 1000 usuarios, pero el servidor ya no es capaz de funcionar bien y se te quejan por el lag. Tienes que añadir un nuevo servidor. Muchos juegos lo que hacen es crear un nuevo servidor con el mismo juego, pero digamos &#8220;paralelo&#8221;, en realidad no es el mismo mundo. Seguro que se os ocurren ejemplos (OGame, el propio Tibia&#8230;). Pero esto, claramente, no es lo ideal. Si quieres poder aumentar la capacidad de un solo &#8220;mundo&#8221; o &#8220;juego&#8221;, tienes que conseguir que tu programa se distribuya entre distintos ordenadores el solito. ¿Parece que se complica verdad?</li>
</ul>
<p>Creo que ya se entiende mejor el título del post: desarrollar un MMORPG es una tarea muy, muy complicada y que requiere de muchas horas de trabajo y esfuerzo, ademas de mucha experiencia y dominar muchos temas distintos. Ya no basta con un MMORPG en 2D como el Tibia, ahora como no saques un WoW o Lineage, te será difícil conseguir usuarios. Pero&#8230; ¿puede esto cambiar en el futuro?</p>
<p style="text-align: center;"><a href="http://patatamecanica.es/wp-content/uploads/2010/02/UDK_01_small.jpg"><img class="size-full wp-image-770 aligncenter" title="Unreal Development Kit" src="http://patatamecanica.es/wp-content/uploads/2010/02/UDK_01_small.jpg" alt="Unreal Engine" width="264" height="100" /></a></p>
<p>Sin duda, sí, es el camino que se ha seguido desde el principio: motores gráficos, motores físicos&#8230; todos hemos escuchado hablar de ellos. Al final, no son más que piezas ya hechas, altamente reutilizables, para hacer cosas comunes a la mayoría de juegos: en muchos de ellos necesitas calcular una colisión entre objetos, la fuerza de la gravedad, los tiros parabólicos&#8230; por no hablar de los destellos al disparar un arma, los reflejos de luz, etc. Por poneros unos ejemplos, como motor gráfico tendríamos el <a href="http://www.udk.com/">Unreal Engine </a>y como físico el <a href="http://developer.nvidia.com/object/physx.html">PhysX</a>. Ya tenemos la física y los gráficos &#8220;cubiertos&#8221;. ¡Pero todavía nos falta cosas! <a href="http://patatamecanica.es/2010/02/15/desarrollo-de-mmorpgs-framework-libre-reddwarf-y-iii/">Atentos a la próxima edición.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://patatamecanica.es/2010/02/13/desarrollo-de-mmorpgs-%c2%bftarea-faraonica-ii/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>No te quedes sin internet (I)</title>
		<link>http://patatamecanica.es/2009/10/06/no-te-quedes-sin-internet-i/</link>
		<comments>http://patatamecanica.es/2009/10/06/no-te-quedes-sin-internet-i/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 17:38:19 +0000</pubDate>
		<dc:creator>danielskun</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://patatamecanica.es/?p=285</guid>
		<description><![CDATA[O mejor dicho, sin router con NAT que sólo asigna IPs públicas. Para entenderlo mejor, pongámonos en situación: tenemos un router WiFi en casa, pero sólo nos deja navegar a un par de PC&#8217;s. O más generalmente, hay un PC con conexión a internet y queremos compartirla porque, por cualquier motivo, el resto de nuestros <a href="http://patatamecanica.es/2009/10/06/no-te-quedes-sin-internet-i/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>O mejor dicho, sin router con <a href="http://es.wikipedia.org/wiki/Network_Address_Translation" target="_blank">NAT</a> que sólo asigna IPs públicas. Para entenderlo mejor, pongámonos en situación: tenemos un router WiFi en casa, pero sólo nos deja navegar a un par de PC&#8217;s. O más generalmente, hay un PC con conexión a internet y queremos compartirla porque, por cualquier motivo, el resto de nuestros equipos no pueden conectarse. En este post explicaré cómo se puede convertir al PC con conexión en un servidor proxy para que nos de conexión al resto.</p>
<p><strong>¿Qué es un proxy?</strong></p>
<p><span id="more-285"></span>Básicamente un proxy es un PC intermediario gracias al cual, en este caso, conseguimos conectarnos a internet. Seguro que muchos ya habréis oído hablar sobre proxys, ya sea porque haya uno en vuestro lugar de estudio o en el trabajo. Las razones para incluir un proxy son muchas; es gracias a los proxys que no podemos utilizar redes P2P como emule o jugar a minijuegos en los ordenadores del trabajo o colegio. Al configurar un proxy en nuestro ordenador, todo el tráfico de internet debe pasar por él. Eso le permite controlar este tráfico, pudiendo capar P2P, ciertas páginas web o incluso puede ser utilizado con fines menos honestos como fisgonear datos privados. En una segunda o tercera parte hablaré sobre <span style="text-decoration: underline;">cómo saltarse un proxy</span>.</p>
<h3>¡¡Ya se ve la solución!!</h3>
<p>Ahora bien, si tenemos un ordenador con conexión a internet que queremos compartir, podemos aprovechar los proxys: pasamos todo el tráfico al PC que tiene internet como si fuese un proxy, y el se encarga de él. Lo único que necesitamos es configurar este PC correctamente y también hacer algunos cambios en los ordenadores que vallan a conectarse a él. Existe un programa muy bueno que convierte a un PC en un proxy en cuestión de unos pocos clicks: se llama <a href="http://www.analogx.com/contents/download/Network/proxy/Freeware.htm" target="_blank">AnalogX</a>.</p>
<p><strong>Instalando y configurando</strong></p>
<p>La instalación de AnalogX es muy, muy sencilla. Es el típico &#8220;next, next, next, next&#8230;&#8221;. Lo importante es, cuando esté instalado, hacer click en su icono en la barra de herramientas y darle a Configure. Hay que asegurarse que todos los servicios estén en On.</p>
<p style="text-align: center;"><img class="size-full wp-image-287  aligncenter" title="AnalogX" src="http://patatamecanica.es/wp-content/uploads/2009/10/AnalogX.png" alt="AnalogX" width="361" height="221" /></p>
<p>Ahora viene la configuración, la parte algo más complicada si no estamos acostumbrados a las IPs y tal. En el PC que hace de proxy y está conectado a internet, vamos a inicio-&gt;ejecutar&#8230; y escribimos cmd. Escribimos<strong> ipconfig /all </strong>y apuntamos la dirección IP, la máscara de subred y los servidores DNS. En los PCs que van a conectarse al proxy, hacemos click derecho en el icono de conexión, le damos a estado y luego a propiedades. Aquí elegimos <strong>Protocolo TCP/IP </strong>y le damos a propiedades. Seleccionamos <strong>Usar la siguiente dirección IP </strong>e introducimos los siguientes datos:</p>
<ul>
<li>Como dirección IP, la misma que el PC proxy sumándole uno al último número (basta con que el último número sea diferente)</li>
<li>Como máscara de subred, la del PC proxy</li>
<li>Como Puerta de enlace, la IP del PC proxy</li>
<li>Como servidores DNS, los del PC proxy</li>
</ul>
<p>Aceptamos y, lo último que nos queda por hacer, acudimos a las opciones de Internet Explorer y en la ficha Conexiones le damos a Configuración de LAN. Aquí activamos la opción <strong>Utilizar un servidor proxy</strong> y rellenamos como sigue, teniendo en cuenta que como dirección, tenemos que poner la dirección IP del PC proxy (puerto 6588).</p>
<p style="text-align: left;"><img class="size-medium wp-image-288  aligncenter" title="ConfIE" src="http://patatamecanica.es/wp-content/uploads/2009/10/ConfIE-291x300.png" alt="ConfIE" width="291" height="300" />Hay que configurar de la misma manera Firefox, Chrome y cualquier programa que se conecte a internet para que use el proxy. El caso es que si se configura IE, muchos de ellos funcionarán automáticamente. Y listo, debería funcionar!!</p>
<p>Espero que os ayude, en la próxima parte comentaré como recuperar contraseñas WiFi WEP si se nos ha olvidado o cómo testear la seguridad de nuestra red WiFi.</p>
]]></content:encoded>
			<wfw:commentRss>http://patatamecanica.es/2009/10/06/no-te-quedes-sin-internet-i/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Podcomentarios, sin salir del navegador</title>
		<link>http://patatamecanica.es/2009/10/03/podcomentarios-sin-salir-del-navegador/</link>
		<comments>http://patatamecanica.es/2009/10/03/podcomentarios-sin-salir-del-navegador/#comments</comments>
		<pubDate>Sat, 03 Oct 2009 16:26:11 +0000</pubDate>
		<dc:creator>danielskun</dc:creator>
				<category><![CDATA[general]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[tecnologia]]></category>
		<category><![CDATA[audiocorreo]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://patatamecanica.es/?p=238</guid>
		<description><![CDATA[Resulta que hoy me he puesto a pensar en algo que pudiera mejorar y aumentar la participación de los oyentes de los podcasts, haciéndoles más fácil una tarea que aporta mucha vida al asunto: grabar audiocorreos. Y se me ha ocurrido que lo más sencillo sería que me saliese un botoncito rojo de REC, pulsarlo, <a href="http://patatamecanica.es/2009/10/03/podcomentarios-sin-salir-del-navegador/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p>Resulta que hoy me he puesto a pensar en algo que pudiera mejorar y aumentar la participación de los oyentes de los podcasts, haciéndoles más fácil una tarea que aporta mucha vida al asunto: grabar audiocorreos. Y se me ha ocurrido que lo más sencillo sería que me saliese un botoncito rojo de REC, pulsarlo, hablar, y pulsarlo otra vez. Ya está, audiocorreo grabado y enviado automáticamente y sin salir del propio navegador. Ahora claro, el tema está en como conseguir esto. Me he puesto a indagar en el tema, y he encontrado<a href="http://www.loudblog.com/forum/viewtopic.php?id=21" target="_blank"> personas que han intentado pero no se si conseguido incluir esta funcionalidad</a> en la página de su podcast.</p>
<h3 style="font-size: 1.17em;">¿¿Pero cómo lo hacemos??</h3>
<p><span id="more-238"></span></p>
<div>
<dl id="attachment_226" style="border: 1px solid #dddddd; margin: 10px; float: left; text-align: center; background-color: #f3f3f3; padding-top: 4px; width: 287px;">
<dt><img style="padding: 0px; margin: 0px; border: 0px none initial;" title="diagrama-php" src="http://patatamecanica.es/wp-content/uploads/2009/10/diagrama-php-277x300.gif" alt="Diagrama PHP" width="277" height="300" /></dt>
</dl>
</div>
<p>Aunque me gustaría mucho, todavía no tengo buenos conocimientos de desarrollo web, así que lo primero que le pregunté a google fue &#8220;grabar audio en PHP&#8221;. Esto es un poco burrada, dado que el código PHP de una página web es siempre ejecutado por el servidor que aloja a la misma, por lo que no puede acceder al hardware (en este caso el micrófono) de la máquina cliente. Había que mirar otras opciones.</p>
<p>Y entonces fue cuando leí la opción de usar Flash. Pensé que tenía sentido, al fin y al cabo para escuchar los podcasts, podemos hacer click en el botón y escuchar sin descargar nada ni salir del navegador. Así que de la misma manera debería permitirnos añadir el fabuloso botón REC para dejar podcomentarios por aquí y por allá.</p>
<h3 style="font-size: 1.17em;">Flash</h3>
<p>Pues bueno, parecía que se vislumbraba ya una posible forma de crear este botón, pero hay más peros. Cuando hacemos click en el botón PLAY para escuchar un podcast, estamos utilizando flash player para reproducir un archivo mp3 sin tener que esperar a descargarlo entero. Flash Player permite que veamos la aplicación que reproduce este mp3, pero ahora queremos que esta aplicación grabe uno. Y eso no es posible sin utilizar un servidor flash, servidor el cual dota a estas aplicaciones de muchísimas opciones más. Y entre ellas se encuentra la posibilidad de grabar audio a través del micrófono.</p>
<p><img class="alignright size-full wp-image-241" title="rtmp" src="http://patatamecanica.es/wp-content/uploads/2009/10/rtmp1.jpg" alt="rtmp" width="149" height="399" /></p>
<h3 style="font-size: 1.17em;">Servidor Flash</h3>
<p>Me ha costado bastante tiempo entender el porqué de la necesidad del servidor flash, y no se si lo he entendido del todo bien. Tampoco supe del todo bien cómo funcionaba en general este servidor hasta que encontré el esquema de la derecha. La aplicación flash sigue siendo servida por el servidor web, pero cuando ésta lo requiere, se conecta al servidor flash. <a href="http://www.flashcomguru.com/articles/fms2_basics.cfm" target="_blank">Flashcomguru</a> aclara bastantes dudas.</p>
<p>Adobe distribuye, aunque no gratis,  Flash Media Server. Pero existe un proyecto de servidor flash sobre Java de código libre llamado <a href="http://www.osflash.org/red5" target="_blank">Red5</a>, totalmente gratuito y con bastantes <a href="http://osflash.org/red5/help">tutoriales</a>.</p>
<p>¿Alguien interesado?</p>
]]></content:encoded>
			<wfw:commentRss>http://patatamecanica.es/2009/10/03/podcomentarios-sin-salir-del-navegador/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>La muerte del IE6</title>
		<link>http://patatamecanica.es/2009/07/19/la-muerte-del-ie6/</link>
		<comments>http://patatamecanica.es/2009/07/19/la-muerte-del-ie6/#comments</comments>
		<pubDate>Sun, 19 Jul 2009 22:23:17 +0000</pubDate>
		<dc:creator>Harchet</dc:creator>
				<category><![CDATA[software]]></category>
		<category><![CDATA[tecnologia]]></category>
		<category><![CDATA[internet explorer]]></category>
		<category><![CDATA[youtube]]></category>

		<guid isPermaLink="false">http://patatamecanica.es/?p=22</guid>
		<description><![CDATA[Parecía que el IE6 no quería acabar de morirse, estaba agonizando esperando la puntilla final. Y ahora parece que hay webs que empiezan a desentenderse de este nuestro querido navegador.
Youtube ha anunciado que dejará de dar soporte a internet explorer 6, y por ahora si entras con dicho navegador, obtendrás una advertencia de que actualices <a href="http://patatamecanica.es/2009/07/19/la-muerte-del-ie6/" class="more-link">More &#62;</a>]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-28" title="internet_explorer_logo" src="http://patatamecanica.es/wp-content/uploads/2009/07/internet_explorer_logo.jpg" alt="internet_explorer_logo" width="180" height="180" />Parecía que el IE6 no quería acabar de morirse, estaba agonizando esperando la puntilla final. Y ahora parece que hay webs que empiezan a desentenderse de este nuestro querido navegador.</p>
<p>Youtube ha anunciado que dejará de dar soporte a internet explorer 6, y por ahora si entras con dicho navegador, obtendrás una advertencia de que actualices tu navegador a uno más moderno. Parece ser que el explorador más usado de todos los tiempos va a ser jubilado, de lo que se alegrarán muchos programadores web.</p>
]]></content:encoded>
			<wfw:commentRss>http://patatamecanica.es/2009/07/19/la-muerte-del-ie6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
