<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Gorkin, hijo de Perkin, hijo de Hamperdine...</title>
	<atom:link href="http://gorkasg.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gorkasg.wordpress.com</link>
	<description></description>
	<lastBuildDate>Thu, 15 Dec 2011 20:52:37 +0000</lastBuildDate>
	<language>es</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='gorkasg.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Gorkin, hijo de Perkin, hijo de Hamperdine...</title>
		<link>http://gorkasg.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://gorkasg.wordpress.com/osd.xml" title="Gorkin, hijo de Perkin, hijo de Hamperdine..." />
	<atom:link rel='hub' href='http://gorkasg.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Diapositivas de la charla sobre XNA 4.0</title>
		<link>http://gorkasg.wordpress.com/2011/12/15/diapositivas-de-la-charla-sobre-xna-4-0/</link>
		<comments>http://gorkasg.wordpress.com/2011/12/15/diapositivas-de-la-charla-sobre-xna-4-0/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 20:52:35 +0000</pubDate>
		<dc:creator>Gorkin</dc:creator>
				<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://gorkasg.wordpress.com/?p=1086</guid>
		<description><![CDATA[Bueno, sin duda alguna la pereza es todo un pecado y tal, y estar enganchado al WoW de nuevo puede que sea otro, jej. Aprovechando que hoy di una charla introductoria sobre XNA 4, he subido las diapositivas y el prototipo de snake hecho con este maravilloso framework. Que lo disfruteis, si podeis, jej&#8230; xD [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=1086&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bueno, sin duda alguna la pereza es todo un pecado y tal, y estar enganchado al WoW de nuevo puede que sea otro, jej. Aprovechando que hoy di una charla introductoria sobre XNA 4, he subido <a href="http://sites.google.com/site/hamperdine/Home/tutoriales/XnaGueim.zip" target="_blank">las diapositivas y el prototipo</a> de snake hecho con este maravilloso framework. Que lo disfruteis, si podeis, jej&#8230; xD</p>
<br />Filed under: <a href='http://gorkasg.wordpress.com/category/proyectos/net-framework/c/xna/'>XNA</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gorkasg.wordpress.com/1086/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gorkasg.wordpress.com/1086/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gorkasg.wordpress.com/1086/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gorkasg.wordpress.com/1086/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gorkasg.wordpress.com/1086/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gorkasg.wordpress.com/1086/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gorkasg.wordpress.com/1086/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gorkasg.wordpress.com/1086/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gorkasg.wordpress.com/1086/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gorkasg.wordpress.com/1086/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gorkasg.wordpress.com/1086/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gorkasg.wordpress.com/1086/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gorkasg.wordpress.com/1086/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gorkasg.wordpress.com/1086/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=1086&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gorkasg.wordpress.com/2011/12/15/diapositivas-de-la-charla-sobre-xna-4-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9665cdcc5511b18bc86e63c5d5555e39?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Gorkin</media:title>
		</media:content>
	</item>
		<item>
		<title>Planificando el futuro&#8230;</title>
		<link>http://gorkasg.wordpress.com/2011/10/20/planificando-el-futuro/</link>
		<comments>http://gorkasg.wordpress.com/2011/10/20/planificando-el-futuro/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 18:39:40 +0000</pubDate>
		<dc:creator>Gorkin</dc:creator>
				<category><![CDATA[Weblog]]></category>

		<guid isPermaLink="false">http://gorkasg.wordpress.com/?p=1083</guid>
		<description><![CDATA[Bueno, llevo bastante tiempo con el blog abandonado, porque estaba pensando en migrar a un servidor web que había pagado, pero últimamente he estado dudando. De todos modos, he aprovechado hoy para hacer un poco de limpieza, porque de cara a los próximos meses quiero reorganizar el blog y centrarlo en la programación y mis [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=1083&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bueno, llevo bastante tiempo con el blog abandonado, porque estaba pensando en migrar a un servidor web que había pagado, pero últimamente he estado dudando. De todos modos, he aprovechado hoy para hacer un poco de limpieza, porque de cara a los próximos meses quiero reorganizar el blog y centrarlo en la programación y mis proyectos solamente. Además quiero poner una versión en inglés. Así que poco a poco, durante el próximo año estaré reorganizando el blog y espero que publicando algún artículo de interés sobre programación, así como también noticias sobre mis próximos proyectos.</p>
<br />Filed under: <a href='http://gorkasg.wordpress.com/category/weblog/'>Weblog</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gorkasg.wordpress.com/1083/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gorkasg.wordpress.com/1083/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gorkasg.wordpress.com/1083/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gorkasg.wordpress.com/1083/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gorkasg.wordpress.com/1083/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gorkasg.wordpress.com/1083/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gorkasg.wordpress.com/1083/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gorkasg.wordpress.com/1083/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gorkasg.wordpress.com/1083/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gorkasg.wordpress.com/1083/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gorkasg.wordpress.com/1083/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gorkasg.wordpress.com/1083/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gorkasg.wordpress.com/1083/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gorkasg.wordpress.com/1083/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=1083&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gorkasg.wordpress.com/2011/10/20/planificando-el-futuro/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9665cdcc5511b18bc86e63c5d5555e39?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Gorkin</media:title>
		</media:content>
	</item>
		<item>
		<title>Master finalizado</title>
		<link>http://gorkasg.wordpress.com/2011/07/15/master-finalizado/</link>
		<comments>http://gorkasg.wordpress.com/2011/07/15/master-finalizado/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 10:42:26 +0000</pubDate>
		<dc:creator>Gorkin</dc:creator>
				<category><![CDATA[Master]]></category>

		<guid isPermaLink="false">http://gorkasg.wordpress.com/?p=1039</guid>
		<description><![CDATA[Bueno, aquí estoy en el iDÉAME de este año, presentando el juego que hemos hecho y bueno ha sido un año algo duro y bueno a ver si un día de estos escribo un postmortem o algo parecido. Al final hemos conseguido tener un juego terminado, aunque ciertamente hubiera estado genial haber tenido un juego [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=1039&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bueno, aquí estoy en el iDÉAME de este año, presentando el juego que hemos hecho y bueno ha sido un año algo duro y bueno a ver si un día de estos escribo un postmortem o algo parecido. Al final hemos conseguido tener un juego terminado, aunque ciertamente hubiera estado genial haber tenido un juego con más contenido y mecánicas, pero dentro de lo &#8220;malo&#8221; lo bueno a mi juicio es que al menos tenemos un juego bastante estable y eso no es nada desdeñable. En fin, lo dicho, a ver si en un rato libre consigo escribir el postmorten y comentar algunas experiencias sobre el master.</p>
<br />Filed under: <a href='http://gorkasg.wordpress.com/category/proyectos/master/'>Master</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gorkasg.wordpress.com/1039/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gorkasg.wordpress.com/1039/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gorkasg.wordpress.com/1039/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gorkasg.wordpress.com/1039/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gorkasg.wordpress.com/1039/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gorkasg.wordpress.com/1039/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gorkasg.wordpress.com/1039/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gorkasg.wordpress.com/1039/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gorkasg.wordpress.com/1039/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gorkasg.wordpress.com/1039/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gorkasg.wordpress.com/1039/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gorkasg.wordpress.com/1039/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gorkasg.wordpress.com/1039/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gorkasg.wordpress.com/1039/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=1039&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gorkasg.wordpress.com/2011/07/15/master-finalizado/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9665cdcc5511b18bc86e63c5d5555e39?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Gorkin</media:title>
		</media:content>
	</item>
		<item>
		<title>Small Basic en español</title>
		<link>http://gorkasg.wordpress.com/2011/07/15/small-basic-en-espanol/</link>
		<comments>http://gorkasg.wordpress.com/2011/07/15/small-basic-en-espanol/#comments</comments>
		<pubDate>Fri, 15 Jul 2011 10:34:08 +0000</pubDate>
		<dc:creator>Gorkin</dc:creator>
				<category><![CDATA[Small Basic]]></category>

		<guid isPermaLink="false">http://gorkasg.wordpress.com/?p=1037</guid>
		<description><![CDATA[Buenas, he migrado mi subsección sobre Small Basic a un blog externo, para centrar la atención del visitante solo sobre el lenguaje y porque estoy pensando en hacer un curso/tutorial durante los próximos meses para enseñar programación a los niños, para si algún día tengo alguno y se interesa, tener algo preparado para no hacer [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=1037&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Buenas, he migrado mi subsección sobre Small Basic a un <a href="http://mssbesp.wordpress.com/" target="_blank">blog externo</a>, para centrar la atención del visitante solo sobre el lenguaje y porque estoy pensando en hacer un curso/tutorial durante los próximos meses para enseñar programación a los niños, para si algún día tengo alguno y se interesa, tener algo preparado para no hacer el panoli más de lo necesario, jej.</p>
<p>Ala, un saludo a todo el mundo.</p>
<br />Filed under: <a href='http://gorkasg.wordpress.com/category/proyectos/net-framework/small-basic/'>Small Basic</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gorkasg.wordpress.com/1037/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gorkasg.wordpress.com/1037/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gorkasg.wordpress.com/1037/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gorkasg.wordpress.com/1037/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gorkasg.wordpress.com/1037/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gorkasg.wordpress.com/1037/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gorkasg.wordpress.com/1037/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gorkasg.wordpress.com/1037/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gorkasg.wordpress.com/1037/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gorkasg.wordpress.com/1037/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gorkasg.wordpress.com/1037/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gorkasg.wordpress.com/1037/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gorkasg.wordpress.com/1037/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gorkasg.wordpress.com/1037/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=1037&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gorkasg.wordpress.com/2011/07/15/small-basic-en-espanol/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9665cdcc5511b18bc86e63c5d5555e39?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Gorkin</media:title>
		</media:content>
	</item>
		<item>
		<title>El principio del fin&#8230; del master, jej&#8230;</title>
		<link>http://gorkasg.wordpress.com/2011/05/31/el-principio-del-fin-del-master-jej/</link>
		<comments>http://gorkasg.wordpress.com/2011/05/31/el-principio-del-fin-del-master-jej/#comments</comments>
		<pubDate>Tue, 31 May 2011 01:13:49 +0000</pubDate>
		<dc:creator>Gorkin</dc:creator>
				<category><![CDATA[Master]]></category>

		<guid isPermaLink="false">http://gorkasg.wordpress.com/?p=988</guid>
		<description><![CDATA[Bueno, no es que actualizando el blog tenga un ritmo constante, ni frecuente, y reconozco que en los últimos meses he estado especialmente ausente y eso que tengo diversas cosas que comentar. Ya que últimamente he mejorado mi nivel de C++ (que todavía me quedan unas cuantas cosas interesantes que contar), he aprendido un poco [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=988&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Bueno, no es que actualizando el blog tenga un ritmo constante, ni frecuente, y reconozco que en los últimos meses he estado especialmente ausente y eso que tengo diversas cosas que comentar. Ya que últimamente he mejorado mi nivel de C++ (que todavía me quedan unas cuantas cosas interesantes que contar), he aprendido un poco más de F# (un lenguaje francamente muy interesante) e incluso me han descubierto algún motor para iPhone/Android llamado <a href="http://www.anscamobile.com/corona/" target="_blank">Corona SDK</a> que pinta bastante interesante. El caso es que desde navidades he estado viendo como cada vez más y más el proyecto del master me ha ido consumiendo todo el tiempo del que disponía, pero el final está cerca, ya que en julio de forma obligatoria se termina el master, habiendo que entregar una versión &#8220;alpha&#8221; mínima del juego &#8220;terminado&#8221;.</p>
<p>Así que a partir de julio empezaré a retomar el blog un poco para comentar algunas de las cosas que he ido aprendiendo últimamente. También querría comentar a modo de post-mortem como ha sido la experiencia de realizar el master y sobre todo el proyecto en el que he participado, del cual espero poder hablar durante el verano poco a poco, porque hay mucho que contar. Que por cierto es gracioso que hace tiempo intenté aprender Ogre con muy poco éxito y el proyecto que estamos realizando está montado sobre dicho motor gráfico, así que para bien o para mal al final he aprendido a utilizarlo y bueno&#8230; puedo decir que más o menos es un motor aceptable, aunque hay algunas zonas oscuras que no disponen de una documentación muy clara, pero qué se le va a hacer. En fin, mientras tanto a programar hasta el fallo el proyecto hasta julio&#8230; xD</p>
<br />Filed under: <a href='http://gorkasg.wordpress.com/category/proyectos/master/'>Master</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gorkasg.wordpress.com/988/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gorkasg.wordpress.com/988/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gorkasg.wordpress.com/988/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gorkasg.wordpress.com/988/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gorkasg.wordpress.com/988/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gorkasg.wordpress.com/988/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gorkasg.wordpress.com/988/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gorkasg.wordpress.com/988/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gorkasg.wordpress.com/988/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gorkasg.wordpress.com/988/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gorkasg.wordpress.com/988/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gorkasg.wordpress.com/988/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gorkasg.wordpress.com/988/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gorkasg.wordpress.com/988/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=988&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gorkasg.wordpress.com/2011/05/31/el-principio-del-fin-del-master-jej/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9665cdcc5511b18bc86e63c5d5555e39?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Gorkin</media:title>
		</media:content>
	</item>
		<item>
		<title>Tu amigo RTTI (comprobando tipos en C++)</title>
		<link>http://gorkasg.wordpress.com/2011/03/17/tu-amigo-rtti-comprobando-tipos-en-c/</link>
		<comments>http://gorkasg.wordpress.com/2011/03/17/tu-amigo-rtti-comprobando-tipos-en-c/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 20:53:00 +0000</pubDate>
		<dc:creator>Gorkin</dc:creator>
				<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://gorkasg.wordpress.com/?p=976</guid>
		<description><![CDATA[Uno de esos vicios heredados de programar en C, es que te lo tienes que montar todo por tu propia cuenta, el lenguaje te da lo mínimo para poder funcionar. Es una situación que para aprender a programar está bien, ya que C es un lenguaje lo suficientemente sencillo como para enseñar la base de [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=976&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Uno de esos vicios heredados de programar en C, es que te lo tienes que montar todo por tu propia cuenta, el lenguaje te da lo mínimo para poder funcionar. Es una situación que para aprender a programar está bien, ya que C es un lenguaje lo suficientemente sencillo como para enseñar la base de la programación. Pero no es especialmente productivo, ya que por ejemplo para hacer un array genérico de información hay que recurrir a cosas como la siguiente:</p>
<p><pre class="brush: cpp; wrap-lines: false;">
typedef struct _GenericData {
    int type;
    void * data;
} GenericData;
</pre></p>
<p>No es el fin del mundo, ni mucho menos, pero luego llega el típico include con una lista de <span style="color:#0000ff;">#define</span> para recoger todos los posibles tipos de información, reunidos en un solo fichero para evitar equivocarnos y poner como identificador de tipo a dos estructuras distintas el mismo entero. El problema de esto, es que al añadir un nuevo identificador, a recompilar todos los .c que lo incluían. La vida así no es especialmente cómoda, la verdad. Y no es especialmente natural esta forma de trabajar.</p>
<p><pre class="brush: cpp; wrap-lines: false;">
#include &lt;iostream&gt;
#include &lt;string&gt;
using namespace std;

class Father {
public:
    Father() {}
    virtual ~Father() {}
    virtual void ShowMsg() {
        cout &lt;&lt; &quot;Father wins...&quot; &lt;&lt; endl;
    }
};

class Child : public Father {
public:
    Child() {}
    virtual ~Child() {}
    virtual void ShowMsg() {
        cout &lt;&lt; &quot;Child wins...&quot; &lt;&lt; endl;
    }
    void ShowExtraMsg() {
        cout &lt;&lt; &quot;Child extra wins...&quot; &lt;&lt; endl;
    }
};
</pre></p>
<p>Así que ahora estamos en C++, recién llegados de C y tras leer libros, tutoriales y manuales, hemos más o menos comprendido de qué va eso de la encapsulación, la herencia y el polimorfismo. Tras un buen rato alucinando y maldiciendo, afirmando incluso que esto es una locura y que en C todo es mucho más sencillo, nos acabamos acostumbrando a la forma de expresarnos en C++. Pero llegamos al punto de hacer una lista con punteros a la clase padre, para poder contener todo tipo de hijos&#8230; y tras un buen rato, uno frunce el ceño y se pregunta: &#8220;¿Y ahora como coño voy a saber de qué tipo es cada objeto?&#8221;</p>
<p>La primera idea que viene a la cabeza es meter en el padre un entero para poder indicar el tipo del objeto, que es exactamente lo mismo que se haría en C. ¿El problema? Pues el mismo que C o mayor, porque el número de .cpp que tendrían incluida la cabecera con la lista de constantes de identificadores de tipo sería mayor, al final perderíamos la cordura de un modo u otro. Entonces sumido en la desesperación, es posible que uno recuerde de haber leído algo sobre un operador parecido a <span style="color:#0000ff;">sizeof</span>, pero que se llama <span style="color:#0000ff;">typeid</span>, algo que leímos y pensamos en su momento: &#8220;Bah, esto seguro que no sirve para nada&#8230;&#8221;</p>
<p><pre class="brush: cpp; wrap-lines: false;">
Father father;
Child child;

string fatherTypeName = &quot;(father: &quot; +
       string(typeid(father).name()) + &quot;)&quot;;
string childTypeName = &quot;(child: &quot; +
       string(typeid(child).name()) + &quot;)&quot;;
string classFatherTypeName = &quot;(&quot; +
       string(typeid(Father).name()) + &quot;)&quot;;

bool fstEq = typeid(father) == typeid(child);
bool sndEq = typeid(father) == typeid(Father);

cout &lt;&lt; fatherTypeName &lt;&lt; &quot; == &quot; &lt;&lt; childTypeName
     &lt;&lt; &quot; -&gt; &quot; &lt;&lt; fstEq &lt;&lt; endl;
cout &lt;&lt; fatherTypeName &lt;&lt; &quot; == &quot; &lt;&lt; classFatherTypeName
     &lt;&lt; &quot; -&gt; &quot; &lt;&lt; sndEq &lt;&lt; endl;
</pre></p>
<p>Como se puede ver en este ejemplo al final sí que valía para algo. Por supuesto para poder darle uso a este operador tiene que estar activado el RTTI, que lo único que hará es que el código ocupe un poco más para almacenar la información relativa a la descripción del tipo. Así de forma sencilla podemos comprobar con una mera igualdad si dos objetos son de la misma clase, o si un objeto es de un tipo determinado o no. Incluso podemos hacer más cosas como obtener una cadena con el nombre identificador del tipo, que para temas del log y de depuración podría ser interesante.</p>
<p><pre class="brush: cpp; wrap-lines: false;">
Father * ptr = &amp;child;
cout &lt;&lt; &quot;typeid information&quot; &lt;&lt; endl;
cout &lt;&lt; &quot; Name:   &quot; &lt;&lt; typeid(*ptr).name() &lt;&lt; endl;
cout &lt;&lt; &quot;         &quot; &lt;&lt; (long long)typeid(*ptr).name() &lt;&lt; endl;
cout &lt;&lt; &quot;         &quot; &lt;&lt; (long int)typeid(*ptr).name() &lt;&lt; endl;
cout &lt;&lt; &quot; Raw:    &quot; &lt;&lt; typeid(*ptr).raw_name() &lt;&lt; endl;
cout &lt;&lt; &quot; Before: &quot; &lt;&lt; typeid(*ptr).before(typeid(father)) &lt;&lt; endl;
cout &lt;&lt; &quot; Before: &quot; &lt;&lt; typeid(*ptr).before(typeid(child)) &lt;&lt; endl;
cout &lt;&lt; &quot; Before: &quot; &lt;&lt; typeid(*ptr).before(typeid(char)) &lt;&lt; endl;
cout &lt;&lt; &quot; Before: &quot; &lt;&lt; typeid(*ptr).before(typeid(int)) &lt;&lt; endl;
cout &lt;&lt; &quot; Before: &quot; &lt;&lt; typeid(*ptr).before(typeid(float)) &lt;&lt; endl;
cout &lt;&lt; &quot; Before: &quot; &lt;&lt; typeid(*ptr).before(typeid(string)) &lt;&lt; endl;
cout &lt;&lt; &quot; Before: &quot; &lt;&lt; typeid(*ptr).before(typeid(Father)) &lt;&lt; endl;
cout &lt;&lt; &quot; Hash:   &quot; &lt;&lt; typeid(*ptr).hash_code() &lt;&lt; endl;
</pre></p>
<p>Lo primero que hay que entender es que al aplicar el operador <span style="color:#0000ff;">typeid</span> obtendremos un objeto de tipo <span style="color:#0000ff;">type_info</span>, que es un tipo de clase que no podemos instanciar, ya que de poder hacerlo alguno se dedicaría a liarla parda. Esta clase nos da algunos métodos y sobrecarga el operador == y el != para poder comprobar la igualdad entre tipos. Sus métodos son:</p>
<ul>
<li>const char * <span style="color:#0000ff;">name</span>() const; → Nos da el nombre completo del tipo, con los namespace incluidos.</li>
<li>const char * <span style="color:#0000ff;">raw_name</span>() const; → Nos da el nombre del tipo sin traducir al lenguaje.</li>
<li>size_t <span style="color:#0000ff;">hash_code</span>() const; → Devuelve el valor hash del tipo.</li>
<li>int <span style="color:#0000ff;">before</span>(const type_info &amp; rhs) const; → Este método es raro y así de primeras da la sensación intuitiva de servir para comprobar si un tipo hereda de otro, pero es una asunción equivocada. En teoría serviría para saber si un <span style="color:#0000ff;">type_info</span> está antes que otro en la memoria, una información que no alcanzo a imaginar para qué podría ser útil, pero ahí está ^_^U</li>
</ul>
<p>Como se puede ver algunos métodos son un poco esotéricos y tal, y la mayoría de las veces con obtener el descriptor del tipo y de ahí su nombre tendremos más que suficiente para trabajar, pero nunca está de más poder saber un poquito más por si acaso&#8230; nunca se sabe cuando la mierda te va a llegar hasta el cuello, jej&#8230;</p>
<p>Si queréis leer más, y sabéis inglés (algo inexorablemente necesario), en la MSDN tenéis una entrada sobre <a title="typeid Operator" href="http://msdn.microsoft.com/en-us/library/fyf39xec.aspx" target="_blank">typeid</a> y <a title="type_info Class" href="http://msdn.microsoft.com/en-us/library/70ky2y6k.aspx" target="_blank">type_info</a>, que siempre se pierde algo con la traducción de la información o algo así xDDD</p>
<br />Filed under: <a href='http://gorkasg.wordpress.com/category/proyectos/c-proyectos/'>C++</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gorkasg.wordpress.com/976/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gorkasg.wordpress.com/976/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gorkasg.wordpress.com/976/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gorkasg.wordpress.com/976/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gorkasg.wordpress.com/976/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gorkasg.wordpress.com/976/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gorkasg.wordpress.com/976/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gorkasg.wordpress.com/976/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gorkasg.wordpress.com/976/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gorkasg.wordpress.com/976/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gorkasg.wordpress.com/976/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gorkasg.wordpress.com/976/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gorkasg.wordpress.com/976/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gorkasg.wordpress.com/976/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=976&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gorkasg.wordpress.com/2011/03/17/tu-amigo-rtti-comprobando-tipos-en-c/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9665cdcc5511b18bc86e63c5d5555e39?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Gorkin</media:title>
		</media:content>
	</item>
		<item>
		<title>Haciendo el cabra con C++ (casting de tipos)</title>
		<link>http://gorkasg.wordpress.com/2011/03/17/haciendo-el-cabra-con-c-casting-de-tipos/</link>
		<comments>http://gorkasg.wordpress.com/2011/03/17/haciendo-el-cabra-con-c-casting-de-tipos/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 03:35:39 +0000</pubDate>
		<dc:creator>Gorkin</dc:creator>
				<category><![CDATA[C++]]></category>

		<guid isPermaLink="false">http://gorkasg.wordpress.com/?p=963</guid>
		<description><![CDATA[Hace un par de semanas me puse a intentar refinar un poco más mis conocimientos de C++ que no son precisamente los de un &#8220;maestro&#8221;&#8230; No es que no pudiera defenderme cómodamente con el lenguaje, pero sería negligente por mi parte no intentar mejorarlo y tratar de eliminar los vicios de programador de C, que [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=963&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hace un par de semanas me puse a intentar refinar un poco más mis conocimientos de C++ que no son precisamente los de un &#8220;maestro&#8221;&#8230; No es que no pudiera defenderme cómodamente con el lenguaje, pero sería negligente por mi parte no intentar mejorarlo y tratar de eliminar los vicios de programador de C, que en C++ hay herramientas disponibles para hacer ciertas cosas.</p>
<p>Uno de los clásicos es el tema de realizar un cast de tipos, en C con simplemente poner <em>(tipo)expresión</em> podemos indicar el tipo final que tiene el resultado de una expresión. Pero esto era así en C, porque básicamente los tipos eran muy sencillos, sin mecanismos dinámicos &#8220;oscuros&#8221; y desde luego sin ninguna clase de comprobación, para poder asegurar que aquello que se hacía no era una locura. De ahí que clásicos también son todos esos fallos de seguridad en programas hechos en C, porque no hay mecanismos dentro del lenguaje para controlar nada&#8230; entre eso y la pereza de los desarrolladores, pasa lo que pasa&#8230; jej&#8230;</p>
<p>En C++ hay 4 nuevos operadores para poder realizar un cast, que son los siguientes:</p>
<ul>
<li><span style="color:#0000ff;">dynamic_cast</span>&lt;<span style="color:#008000;">tipo</span>&gt;(<span style="color:#008000;">expresión</span>)<span style="color:#000000;"> → </span>Se utiliza sólo con punteros y referencias a clases, para poder indicar cuál es el tipo del objeto apuntado, comprobando si es válida esa indicación. En caso de no ser válido el cast que se pretende realizar se lanzará una excepción si se trata de una referencia y en el caso de un puntero se devolverá el valor null. Esta es una operación que puede ser útil para cuando en una función recibimos un puntero a una clase genérica y queremos comprobar si es de algún tipo hijo en la jerarquía. En otros lenguajes como <strong>C#</strong> o <strong>AS3</strong>, por poner ejemplos de lenguajes modernos, tienen el operador <strong>as</strong> que realiza la misma operación de casting.</li>
<li><span style="color:#0000ff;">static_cast</span>&lt;<span style="color:#008000;">tipo</span>&gt;(<span style="color:#008000;">expresión</span>)<span style="color:#000000;"> → Se utiliza con cualquier tipo no constante y no tiene ningún mecanismo de comprobación, por lo que si la pifiamos el programa podría acabar teniendo algún fallo de seguridad o dar algún fallo de ejecución y cerrarse el programa.</span></li>
<li><span style="color:#0000ff;">const_cast</span>&lt;<span style="color:#008000;">tipo</span>&gt;(<span style="color:#008000;">expresión</span>)<span style="color:#000000;"> → Se utiliza para poder quitar o añadir el const al tipo de una expresión o variable. También sirve para quitar o añadir el volatile a un tipo.<br />
</span></li>
<li><span style="color:#0000ff;">reinterpret_cast</span>&lt;<span style="color:#008000;">tipo</span>&gt;(<span style="color:#008000;">expresión</span>)<span style="color:#000000;"> → Se utiliza para convertir un tipo de puntero a cualquier otro tipo de puntero, sin ningún tipo de comprobación. También permite convertir un tipo puntero a <span style="color:#0000ff;">int</span> y viceversa.</span></li>
</ul>
<p>Para poder usar el <span style="color:#0000ff;">dynamic_cast</span> es necesario tener activado el RTTI a la hora de compilar, es una opción que normalmente viene activada, pero a veces para optimizar el ejecutable final se puede desactivar. Si usamos el cast dinámico no podremos desactivar esa opción, por lo que hay que pensárselo bien si le estamos dando un uso necesario o no, en caso de querer desactivar el RTTI.</p>
<p>El caso es que todo esto me puse a mirarlo a raíz de una situación a la que me estoy enfrentando, ya que el proyecto del master las entidades están compuestas por componentes, en vez de formar una jerarquía de clases, y entre los componentes se envían mensajes. ¿Qué es lo que pasa con los mensajes? Que estos sí tienen al menos una jerarquía de información, lo que implica hacer casting de tipos padres a tipos hijos. Y estaba probando yo alguna forma semánticamente más natural de expresar ese cast.</p>
<p><pre class="brush: cpp; wrap-lines: false;">
#include &lt;iostream&gt;
using namespace std;

template&lt;class T&gt;
class IBastard {
public:
    virtual T * GetPointer() = 0;
    virtual T &amp; GetReference() = 0;
protected:
    IBastard() {}
};

class BastardChild : public IBastard&lt;BastardChild&gt; {
private:
    int _foo;
public:
    BastardChild() { _foo = 42; }
    int GetFoo() { return _foo; }
    virtual BastardChild * GetPointer() { return this; }
    virtual BastardChild &amp; GetReference() { return *this; }
};

int main(int argc, char ** argv) {
    cout &lt;&lt; &quot;IBastard template class test...&quot; &lt;&lt; endl;
    IBastard&lt;BastardChild&gt; * victim = new BastardChild();
    cout &lt;&lt; &quot;Pointer:   &quot; &lt;&lt; victim-&gt;GetPointer()-&gt;GetFoo()
         &lt;&lt; endl;
    cout &lt;&lt; &quot;Reference: &quot; &lt;&lt; victim-&gt;GetReference().GetFoo()
         &lt;&lt; endl;
    return 0;
}
</pre></p>
<p>Mi primera ida de olla fue utilizar una plantilla para intentar obtener el tipo real del objeto actual. Pero aunque queda muy bonito, no deja de ser una auténtica ida de olla, porque entonces ¿qué tipo englobaría a todos los tipos de hijos? Pues dada la naturaleza de las plantillas ninguno, sin evitar tener que meter un cast de por medio, que era justo lo que intentaba evitar. Entonces probé otra opción también bizarra.</p>
<p><pre class="brush: cpp; wrap-lines: false;">
#include &lt;iostream&gt;
using namespace std;

class IBastard {
public:
    template&lt;class T&gt; T * GetPointer() {
        return static_cast&lt;T *&gt;(this);
    }
    template&lt;class T&gt; T &amp; GetReference() {
        return static_cast&lt;T &amp;&gt;(*this);
    }
protected:
    IBastard() {}
};

class BastardChild : public IBastard {
private:
    int _foo;
public:
    BastardChild() { _foo = 42; }
    int GetFoo() { return _foo; }
};

int main(int argc, char ** argv) {
    cout &lt;&lt; &quot;IBastard template method test...&quot; &lt;&lt; endl;
    IBastard * victim = new BastardChild();
    cout &lt;&lt; &quot;Pointer:   &quot;
         &lt;&lt; victim-&gt;GetPointer&lt;BastardChild&gt;()-&gt;GetFoo()
         &lt;&lt; endl;
    cout &lt;&lt; &quot;Reference: &quot;
         &lt;&lt; victim-&gt;GetReference&lt;BastardChild&gt;().GetFoo()
         &lt;&lt; endl;
    return 0;
}
</pre></p>
<p>Como se puede ver aquí se hace un <span style="color:#0000ff;">static_cast</span>, por lo que realmente no nos lo hemos ahorrado, pero de esta forma podemos llamar a la función como nos dé la gana y poner algo como GetAs, que es a mi juicio una forma más clara de saber qué estás haciendo y usas los operadores de C++ correctamente. La otra opción es acostumbrarse a los operadores y tener que explicárselos a los que sean duchos en el lenguaje. En fin, como decía al principio, una ida de olla tremenda el asunto este.</p>
<br />Filed under: <a href='http://gorkasg.wordpress.com/category/proyectos/c-proyectos/'>C++</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gorkasg.wordpress.com/963/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gorkasg.wordpress.com/963/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gorkasg.wordpress.com/963/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gorkasg.wordpress.com/963/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gorkasg.wordpress.com/963/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gorkasg.wordpress.com/963/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gorkasg.wordpress.com/963/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gorkasg.wordpress.com/963/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gorkasg.wordpress.com/963/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gorkasg.wordpress.com/963/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gorkasg.wordpress.com/963/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gorkasg.wordpress.com/963/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gorkasg.wordpress.com/963/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gorkasg.wordpress.com/963/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=963&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gorkasg.wordpress.com/2011/03/17/haciendo-el-cabra-con-c-casting-de-tipos/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9665cdcc5511b18bc86e63c5d5555e39?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Gorkin</media:title>
		</media:content>
	</item>
		<item>
		<title>Mandamientos tras la Global Game Jam</title>
		<link>http://gorkasg.wordpress.com/2011/02/01/mandamientos-tras-la-global-game-jam/</link>
		<comments>http://gorkasg.wordpress.com/2011/02/01/mandamientos-tras-la-global-game-jam/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 23:44:52 +0000</pubDate>
		<dc:creator>Gorkin</dc:creator>
				<category><![CDATA[Concursos y eventos]]></category>

		<guid isPermaLink="false">http://gorkasg.wordpress.com/?p=957</guid>
		<description><![CDATA[Este fin de semana ha sido la Global Game Jam y el evento ha salido incluso en las noticias de la noche, este domingo en la primera. En fin, dejando la &#8220;gloria&#8221; de haber salido en segundo plano en las noticias de la televisión pública (por fin mis impuestos han valido para algo, jej&#8230;), esta [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=957&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Este fin de semana ha sido la <a href="http://globalgamejam.org/" target="_blank">Global Game Jam</a> y el evento ha salido incluso en las noticias de la noche, este domingo en <a href="http://www.rtve.es/mediateca/videos/20110130/superado-reto-crear-videojuego-dos-dias/1001730.shtml" target="_blank">la primera</a>. En fin, dejando la &#8220;gloria&#8221; de haber salido en segundo plano en las noticias de la televisión pública (por fin mis impuestos han valido para algo, jej&#8230;), esta experiencia me ha servido para aprender mucho. Se dice que se aprende más de un fracaso, que de un éxito&#8230; puedo decir que no sabría decir qué habría aprendido de haber tenido éxito, porque el fracaso fue total. No es que no ganáramos, algo ciertamente nimio y carente de importancia en un concurso donde lo principal es ir a demostrarse a uno mismo que es capaz de realizar un reto. El problema llegó a tal punto de gravedad que finalmente no entregamos nada como proyecto, porque no logramos terminarlo, de hecho estaba tan lejos de estar mínimamente terminado que retirarse y no entregar era la única opción &#8220;digna&#8221;.</p>
<p>Así que finalmente, allí estaba yo con 3 de mis 4 compañeros, charlando y maldiciendo nuestro sino&#8230; Intentando hacer un poco de auto-reflexión, y del ejercicio de la misma elaboré una lista de mandamientos para futuras experiencias, con la esperanza de que en el futuro no la acabemos cagando tanto. Estos son los puntos que recopilamos:</p>
<ol>
<li><strong>El juego tiene que “funcionar”, no tiene que estar pulido hasta el fallo.</strong><br />
Esta fue de hecho una recomendación que se nos hizo en el video introductorio al evento. Lo que quiere decir es que la meta es hacer un juego al que se pueda jugar, sin importar el millón de bugs que tenga, o que solo funcione para una determinada resolución, o que solo funcione en un ordenador para unas determinadas circunstancias. Lo importante es que después de 2 días, la gente pueda ver que hay algo, cutre y ortopédico quizás, pero algo a fin de cuentas.</li>
<li><strong>El productor deberá ser el encargado de diseñar el juego.</strong><br />
Si tienes un productor eficiente y competente como nosotros teníamos, por favor, que sea él quien se encargue de diseñar el juego. ¿Por qué? Pues muy sencillo mi querido amigo Watson, siendo el plazo de tiempo tan corto, lo más óptimo es que la persona encargada de asignar las tareas sepa perfectamente de qué trata el juego. Si dicha idea está en su cabeza mejor, porque todos sabemos que la comunicación entre dos personas no es el mejor canal de comunicación existente en el universo.</li>
<li><strong>El juego debe tener una sola mecánica central y a lo mejor otra más secundaria.</strong><br />
Esta quizás parezca exagerada, pero ciertamente cuantas menos mecánicas tenga tu juego antes se podrá terminar de hacer. Es algo lógico y comprensible, pero el entusiasmo &#8220;alegre&#8221; de mucha gente puede acabar haciendo que olviden una premisa tan básica. El resultado de no tener este mandamiento en cuenta es acabar el concurso sin tener un juego.</li>
<li><strong>La explicación de las mecánicas no debe ocupar más de un folio.</strong><br />
Y si ocupa menos de una página todavía mejor. Cuanto más breve y esquemática pueda ser la explicación más sencilla será de entender por los demás. Ponerse a escribir un documento de diseño &#8220;completo&#8221; con un montón de cosas que no sirven para entender cómo se tiene que implementar el juego, solo servirá para aturdir al que lo lea, ya que el tiempo es escaso y perder el tiempo en intentar comprender lo escrito por otro es siempre un tema complicado. No es que esté abogando por no usar jamás un documento de diseño al crear videojuegos, para desarrollos largos y grandes es muy necesario, pero cuando no hay tiempo es perderlo gratuitamente y de forma demencial.</li>
<li><strong>Dicha explicación debe tender a ser lo más zen o KISS (&#8220;Keep It Stupidly Simple&#8221; o &#8220;Keep It Simple, Stupid&#8221;) posible.</strong><br />
Es una forma cursi de insistir en que hay que tender a la máxima sencillez posible. En serio, la comunicación verbal o escrita es un proceso extraordinariamente costoso cuando tu plazo es escasísimo no, lo siguiente. Por dios, evita enrollarte como una persiana gratuitamente solo porque quieras lucirte como diseñador, lo único que lograrás es que el resto del equipo no se lea el documento porque el estrés y el ansia de la escasez de tiempo les agobia y no conseguirán concentrarse en entender tu &#8220;obra maestra&#8221;.</li>
<li><strong>El menú con tener un fondo, los “créditos” endosados por ahí, el botón de “empezar” y el de “salir”, será más que suficiente.</strong><br />
Si te da tiempo a poner una imagen explicando cómo se juega también estaría bien, pero si no tienes tiempo ahórratelo. De hecho también te puedes ahorrar el botón de salir, haz el juego en modo ventana y no seas huevón, que así ya tienes implementado el botón de salir. En serio, cuando no tienes tiempo, no necesitas ponerte a crear un menú de la hostia, ni un HUD del copón, ni cualquier chorrada que no sea el juego&#8230; Y si tu juego necesita mucha tralla de estas cosas, te estás equivocando de juego para un evento tan corto.</li>
<li><strong>No coger la primera idea que se ocurra, darle vueltas hasta que quede claro.</strong><br />
Puede que no tengas tiempo para hacer mucho y esta parezca una regla que te hará perder tiempo, pero puede ser peor empezar algo que no está claro. Razones para afirmarlo, que luego cada cual tenga su propia interpretación y finalmente hayáis perdido tiempo porque tenéis que tirar lo que habéis hecho en las últimas horas. O que por ejemplo a medida que pasa el tiempo la idea va engordando masivamente hasta el delirio más absoluto y demente.</li>
<li><strong>No empezar a desarrollar el juego sin tener claro el diseño final.</strong><br />
Por la misma razón que lo anterior, hasta que no se tenga el diseño en una hoja claro y comprensible para el resto de los mortales, empezar sería un suicidio potencial. Por ello es importante tender a lo simple y así evitar emplear más tiempo de lo necesario a cualquier cosa que no sea desarrollar el juego.</li>
<li><strong>No elijas un género espeso (estrategia, aventura gráfica,  RPG, &#8230;)</strong><br />
En realidad puedes elegirlo, pero te puedes exponer a acabar teniendo una idea demasiado compleja para 48 horas. Recuerda que cuantas menos mecánicas mejor, con lo que por lo general si te puedes olvidar de los géneros mejor, pero si no lo haces evita uno que implique un valle entero de mecánicas de una complejidad enorme cual coloso de Rodas.</li>
<li><strong>No uses nunca una tecnología que no conoces bien.</strong><br />
No tienes tiempo para aprenderla, así que si no la conoces no la uses a no ser que estés completamente desesperado. Usa algo que conoces o al final acabarás dando vueltas a cómo funciona más que a cómo hacer el juego.</li>
<li><strong>Recuerda que un evento de 48 horas significa que como mucho tienes 24 reales de trabajo (comer, dormir, ducharse, etcétera… ocupan tiempo).</strong><br />
No diseñes un juego para estar trabajando 48 horas si solo tienes 24 realmente. Puede que seas un terminator y no necesites dormir, comer, ducharte o lo que sea, pero el resto de los mortales normalmente sí lo necesitamos, así que no dormir al final solo sirve para que al siguiente día en vez de aprovecharlo al final seas un infrahumano poco productivo. Además es muy difícil lograr en un día ser productivo más de 8 horas dándolo todo, por lo que no peques de &#8220;alegre&#8221; e intentes hacer que te va a llevar más tiempo del que tienes.</li>
<li><strong>No mantener discusiones estúpidas, porque el tiempo que discutes es tiempo que no desarrollas.</strong><br />
Discutir gratuitamente hace que no estés produciendo. Aquí no se trata de hacer el mejor juego del universo, ni el más perfecto, ni el que tiene la mejor tecnología de la galaxia, se trata de terminar algo que funcione mínimamente en el tiempo especificado. Por muy buena que creas que sea tu idea para un problema, si no es simple es que algo falla y si encima te pones a discutir para defenderla estarás saboteando el proyecto solo por orgullo, terquedad y obstinación. Así que por favor, evita perder el tiempo que no tienes por tu estúpido ego, el objetivo no es demostrar que eres el más guay, sino que el juego funcione tras 2 días de desarrollo.</li>
</ol>
<p>Y eso es todo de momento, a la espera de pegarme otro piñazo en el futuro y ampliar la lista claro. Espero que os pueda ser de utilidad y que si sois novatos, os pueda salvar del desastre total y absoluto en el que me vi envuelto.</p>
<p>P.S.: Término el KISS descubierto gracias a mi compañero de master Gabriel, el chaval tan majo que estaba hablando en la tele que hizo el <a href="http://globalgamejam.org/2011/evil-god" target="_blank">Evil God</a>, un juego bastante interesante y que a mi era el que más me gustaba.</p>
<br />Filed under: <a href='http://gorkasg.wordpress.com/category/proyectos/concursos-y-eventos/'>Concursos y eventos</a>  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gorkasg.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gorkasg.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gorkasg.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gorkasg.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gorkasg.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gorkasg.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gorkasg.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gorkasg.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gorkasg.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gorkasg.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gorkasg.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gorkasg.wordpress.com/957/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gorkasg.wordpress.com/957/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gorkasg.wordpress.com/957/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gorkasg.wordpress.com&amp;blog=4809401&amp;post=957&amp;subd=gorkasg&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gorkasg.wordpress.com/2011/02/01/mandamientos-tras-la-global-game-jam/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/9665cdcc5511b18bc86e63c5d5555e39?s=96&#38;d=http%3A%2F%2F1.gravatar.com%2Favatar%2Fad516503a11cd5ca435acc9bb6523536%3Fs%3D96&#38;r=G" medium="image">
			<media:title type="html">Gorkin</media:title>
		</media:content>
	</item>
	</channel>
</rss>
