<?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>Blog do Alone &#187; games</title>
	<atom:link href="http://www.nelsonalone.com.br/category/games/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.nelsonalone.com.br</link>
	<description>A tecnologia de forma simplificada</description>
	<lastBuildDate>Fri, 30 Apr 2010 01:18:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Saga Quake. Engine e seus protocolos multiplayer</title>
		<link>http://www.nelsonalone.com.br/2009/10/24/saga-quake-engine/</link>
		<comments>http://www.nelsonalone.com.br/2009/10/24/saga-quake-engine/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 21:22:44 +0000</pubDate>
		<dc:creator>nelsonsozinho</dc:creator>
				<category><![CDATA[P2P - Peer to Peer]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[quake]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=363</guid>
		<description><![CDATA[Quando joguei Quake I online pela primeira vez fiquei absolutamente fascinado pela possibilidade de jogar, no mesmo mapa, com uma série de jogadores conectados querendo destruir um a outro. A empolgação com essa novidade foi tanta que o excesso de LAG não era problema. Por conseqüência, as desagradáveis paradas no game eram constantes, seu player [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">Quando joguei Quake I online pela primeira vez fiquei absolutamente fascinado pela possibilidade de jogar, no mesmo mapa, com uma série de jogadores conectados querendo destruir um a outro. A empolgação com essa novidade foi tanta que o excesso de LAG não era problema. Por conseqüência, as desagradáveis paradas no game eram constantes, seu player morria e você não se quer sabia quem matou você, porém, mesmo com esses problemas não deixava de continuar jogando. A verdade é que os desenvolvedores do título se preocuparam apenas com o movimento que era feito de um poto X para um Y e transmitir as coordenada via broadcast para outros players. Diga-se de passagem que esse foi o primeiro títulos (ou um dos primeiros) desenvolvidos com a possibilidade de travar batalhas pela Internet.</p>
<p style="text-align: justify;">O idealizador disso tudo foi nada menos do que <a href="http://en.wikipedia.org/wiki/John_D._Carmack">John Carmak</a>, fundados da ID Sofware que anteriormente colocou no mercado títulos de sucesso como <a href="http://en.wikipedia.org/wiki/Wolfenstein_3D">Wolfenstein </a> e <a href="http://en.wikipedia.org/wiki/Doom_(video_game)">Doom</a> (títulos que alavancaram o estilo de “jogos de primeira pessoa”). Carmak, como desenvolvedor talentoso, evoluiu a modalidade com o desenvolvimento da engine 3D para seus títulos e posteriormente o protocolo multiplayer que começou a vir a partir dos títulos posteriores.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-364" title="carmack" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/10/carmack.jpg" alt="carmack" width="225" height="290" /></p>
<p style="text-align: justify;">Carmak foi um gênio ao desenvolver e evoluir a engine dos primeiros jogos de primeira pessoa para o cenário que conhecemos hoje. Méritos para também para o desenvolvimento e evolução do protocolo de jogo. Fazendo com que o mesmo ficasse cada vez mais limpo e refinado, tanto que, na maioria das vezes a animação era mantida quando havia muito lag. Os problemas surgiram quando havia muitos jogadores no mesmo mapa, nesse ponto tínhamos a latência da rede e do processador para processar os movimentos de tantos jogadores. Uma curiosidade foi o fato de ter desenvolvido seus primeiros títulos iniciais sobre um <a href="http://en.wikipedia.org/wiki/NeXT">NeXT</a> em um <a href="http://en.wikipedia.org/wiki/NeXTSTEP">NeXTSTEP OS</a> e posteriormente ter migrado para a plataforma Windows.</p>
<p style="text-align: justify;"><img class="aligncenter size-full wp-image-365" title="NeXTSTEP_desktop" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/10/NeXTSTEP_desktop.jpg" alt="NeXTSTEP_desktop" width="500" height="390" /></p>
<p style="text-align: justify;">Os títulos da ID ficaram famosos juntamente com o estilo de jogos muiltiplayer de primeira pessoa. Fabricantes desenvolveram seus títulos que também tinha o mesmo esquema de combate e, diga-se de passagem, utilizavam a mesma engine para seus jogos de primeria pessoa (a engine é um assunto para o próximo blog).</p>
<p style="text-align: justify;">Ao desenvolver o título de maior sucesso, o Quake III, que foi, em minha opinião, o melhor título, engine e protocolo, possibilitou com que os combates fossem cada vez mais divertido e fáceis de jogar.  Essa “leveza” nos jogos muitiplayer tornou famoso, não só a engine, mas também o protocolo de comunicação que era bem mais evoluído. A forma de jogo é simples, mapas são abertos e ao mesmo tempo bem limitados, ou seja, não são tão extensos como os títulos anteriores já que a finalidade era apenas batalhas multiplayer.</p>
<p style="text-align: justify;"><img class="aligncenter size-medium wp-image-370" title="quake3arenatz8" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/10/quake3arenatz81-300x252.jpg" alt="quake3arenatz8" width="300" height="252" /></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Escrevi esse post não apenas por gostar dos títulos da ID (mesmo sem lança nada após o Quake 4 e o Doom 3), mas especificamente pelo protocolo de comunicação muitiplayer da ID. O melhor de tudo é que a ID Software disponibilizou toda engine e protocolo do Quake III na <a href="http://www.idsoftware.com/business/techdownloads/">área de download da ID Software como GPL</a>. Portanto, o próximo passo é fazer compilar os fontes e estudar os fontes do protocolo.</p>
<p style="text-align: justify;"><img class="aligncenter size-medium wp-image-371" title="visual_studio" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/10/visual_studio-300x178.jpg" alt="visual_studio" width="300" height="178" /></p>
<p style="text-align: justify;">A leitura dos fontes não é tão complexa, acredito que me ajude em melhorar meus protocolos desenvolvidos para P2P. No site a engine está configurada para abrir no Visual C++ da Microsoft e abriu perfeitamente no meu Visual Studio 2008 após pedir para remover os arquivos do Source Safe. Pra quem gosta essa é uma excelente oportunidade. Estarei postando futuramente sobre os trabalhos futuros.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2009/10/24/saga-quake-engine/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MMOGs sobre P2P -&gt; Desafios</title>
		<link>http://www.nelsonalone.com.br/2009/05/20/mmogs-sobre-p2p-desafios/</link>
		<comments>http://www.nelsonalone.com.br/2009/05/20/mmogs-sobre-p2p-desafios/#comments</comments>
		<pubDate>Wed, 20 May 2009 12:31:38 +0000</pubDate>
		<dc:creator>nelsonsozinho</dc:creator>
				<category><![CDATA[games]]></category>
		<category><![CDATA[mmog]]></category>
		<category><![CDATA[p2p]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=265</guid>
		<description><![CDATA[No post anterior explanei um pouco sobre o mundo dos MMOGs e sobre a visão universal desse tipo de entretenimento  utilizando um  protocolo totalmente descentralizado. Não passei os detalhes, mas apenas analisando o título é perceptível que essa é uma tarefa que requer muita dedicação. Atualmente os MMOGs, utilizando a arquitetura cliente-servidor, tornou-se um paradigma [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">No post anterior explanei um pouco sobre o mundo dos MMOGs e sobre a visão universal desse tipo de entretenimento  utilizando um  protocolo totalmente descentralizado. Não passei os detalhes, mas apenas analisando o título é perceptível que essa é uma tarefa que requer muita dedicação.</p>
<p style="text-align: justify;">Atualmente os MMOGs, utilizando a arquitetura cliente-servidor, tornou-se um paradigma para a indústria (consumidores assíduos, desenvolvedores, empresas, etc). Praticamente todos os títulos que vão para as lojas tem como base a arquitetura cliente-servidor como mecanismo padrão de interação dos clientes. Como tinha afirmado, essa arquitetura é dispendiosa para as empresas que disponibilizam os acessos aos datacenters para jogadores.</p>
<p style="text-align: justify;">Vendo por esse lado, não seria viável apenas distribuir o game? Bom, verificando o lado da empresa seria viável porém, a empresa perderia receita. Devido a isso, criar a infra-estrutura  de serviço é um passo fundamental, principalmente pelo pouco gasto que teria com infraestrutura.</p>
<p style="text-align: justify;">A utilização do arquitetura P2P veio como um forma de amenizar os gastos com essa com datacenters. Porém, existe alguns obstáculos para a viabilidade dessa afirmação. Esses obstáculos variam de culturais e tecnológicos.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><strong>Obstáculos culturais</strong></p>
<p style="text-align: justify;">O elaboração de uma arquitetura descentralizada para a comunicação de hosts diretamente tem início nos primórdios da computação. Porém, houve uma evolução nesse conceito, fazendo que o termo &#8220;host&#8221; tornasse um elemento abstrato, flexível e virtual chamado peer.</p>
<p style="text-align: justify;">Peer é a definição de um elemento dentro do contexto de uma rede P2P. Um peer pode ser qualquer coisa que se comunique com a rede como;  um pc, notebook, celular, ou seja qualquer dispositivo que tenha conectividade com a rede seja lá o que for. Dentro desse conceito, um pc, por exemplo, pode ter um ou diversos pares na rede P2P. Esse exemplo foi necessário para termos uma idéia de como é a conectividade entre os pares.</p>
<p style="text-align: justify;">Agora, quais são os impactos culturais da sua utilização? A elaboração da arquitetura teve finalidade oposta a fama que teve com a s redes de compartilhamento de arquivos. O problema é que a arquitetura P2P caiu como uma luva para o desenvolvimento dos softwares de compartilhamento de arquivos existente. Gnutell, Kazzaa, Emule, Napster, entre outras, todas utilizam uma implementação (com particularidades) para a sua rede.</p>
<p style="text-align: justify;">Essa, talvez seja a origem, dos problemas de violação dos direitos autorais que as gravadoras, editoras e produtoras de filmes tanto reclamam. As redes de compartilhamento tornaram fontes de troca de arquivos e com isso surgiu a forma mais eficaz da prática da pirataria.</p>
<p style="text-align: justify;"><img class="aligncenter size-medium wp-image-266" title="emule-prison" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/05/emule-prison-232x300.jpg" alt="emule-prison" width="232" height="300" /></p>
<p style="text-align: justify;"><strong>Obstáculos tecnológicos. </strong></p>
<p style="text-align: justify;">A utilização da arquitetura P2P nos protocolos de compartilhamento de arquivos aumentou consideravelmente o tráfego na internet sendo que, hoje em dia, <a href="http://www.multimediaintelligence.com/">40% do tráfego da inter vem das redes de compartilhamento de arquivos</a>. Mas foram os poucos que viram as qualidades da arquitetura para os games. A conclusão foi simples; se existem uma enxurrada de bytes trafegando sobre essa arquitetura e cada vez mais tendo usuários adeptos, logo a arquitetura pode ser robusta.</p>
<p style="text-align: justify;">Acredito que seja essa a iniciativa para modificar a camada cliente-servidor dos MMOGs para P2P. Mas para isso, existem atividades de adaptação da tecnologia e em alguns casos a adaptação do motor do game para a nova arquitetura.</p>
<p class="MsoNormal" style="text-align: justify;"><!--[if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves /> <w:TrackFormatting /> <w:HyphenationZone>21</w:HyphenationZone> <w:PunctuationKerning /> <w:ValidateAgainstSchemas /> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF /> <w:LidThemeOther>PT-BR</w:LidThemeOther> <w:LidThemeAsian>X-NONE</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables /> <w:SnapToGridInCell /> <w:WrapTextWithPunct /> <w:UseAsianBreakRules /> <w:DontGrowAutofit /> <w:SplitPgBreakAndParaMark /> <w:DontVertAlignCellWithSp /> <w:DontBreakConstrainedForcedTables /> <w:DontVertAlignInTxbx /> <w:Word11KerningPairs /> <w:CachedColBalance /> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> <m:mathPr> <m:mathFont m:val="Cambria Math" /> <m:brkBin m:val="before" /> <m:brkBinSub m:val="&#45;-" /> <m:smallFrac m:val="off" /> <m:dispDef /> <m:lMargin m:val="0" /> <m:rMargin m:val="0" /> <m:defJc m:val="centerGroup" /> <m:wrapIndent m:val="1440" /> <m:intLim m:val="subSup" /> <m:naryLim m:val="undOvr" /> </m:mathPr></w:WordDocument> </xml><![endif]--><!--[if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true"   DefSemiHidden="true" DefQFormat="false" DefPriority="99"   LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Normal" /> <w:LsdException Locked="false" Priority="9" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="heading 1" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8" /> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9" /> <w:LsdException Locked="false" Priority="39" Name="toc 1" /> <w:LsdException Locked="false" Priority="39" Name="toc 2" /> <w:LsdException Locked="false" Priority="39" Name="toc 3" /> <w:LsdException Locked="false" Priority="39" Name="toc 4" /> <w:LsdException Locked="false" Priority="39" Name="toc 5" /> <w:LsdException Locked="false" Priority="39" Name="toc 6" /> <w:LsdException Locked="false" Priority="39" Name="toc 7" /> <w:LsdException Locked="false" Priority="39" Name="toc 8" /> <w:LsdException Locked="false" Priority="39" Name="toc 9" /> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption" /> <w:LsdException Locked="false" Priority="10" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Title" /> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font" /> <w:LsdException Locked="false" Priority="11" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtitle" /> <w:LsdException Locked="false" Priority="22" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Strong" /> <w:LsdException Locked="false" Priority="20" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Emphasis" /> <w:LsdException Locked="false" Priority="59" SemiHidden="false"    UnhideWhenUsed="false" Name="Table Grid" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text" /> <w:LsdException Locked="false" Priority="1" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="No Spacing" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 1" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 1" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 1" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 1" /> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision" /> <w:LsdException Locked="false" Priority="34" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="List Paragraph" /> <w:LsdException Locked="false" Priority="29" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Quote" /> <w:LsdException Locked="false" Priority="30" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Quote" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 1" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 1" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 1" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 1" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 1" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 2" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 2" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 2" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 2" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 2" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 2" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 2" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 2" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 2" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 3" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 3" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 3" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 3" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 3" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 3" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 3" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 3" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 3" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 4" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 4" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 4" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 4" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 4" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 4" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 4" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 4" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 4" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 5" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 5" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 5" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 5" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 5" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 5" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 5" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 5" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 5" /> <w:LsdException Locked="false" Priority="60" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Shading Accent 6" /> <w:LsdException Locked="false" Priority="61" SemiHidden="false"    UnhideWhenUsed="false" Name="Light List Accent 6" /> <w:LsdException Locked="false" Priority="62" SemiHidden="false"    UnhideWhenUsed="false" Name="Light Grid Accent 6" /> <w:LsdException Locked="false" Priority="63" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6" /> <w:LsdException Locked="false" Priority="64" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6" /> <w:LsdException Locked="false" Priority="65" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 1 Accent 6" /> <w:LsdException Locked="false" Priority="66" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium List 2 Accent 6" /> <w:LsdException Locked="false" Priority="67" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6" /> <w:LsdException Locked="false" Priority="68" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6" /> <w:LsdException Locked="false" Priority="69" SemiHidden="false"    UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6" /> <w:LsdException Locked="false" Priority="70" SemiHidden="false"    UnhideWhenUsed="false" Name="Dark List Accent 6" /> <w:LsdException Locked="false" Priority="71" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Shading Accent 6" /> <w:LsdException Locked="false" Priority="72" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful List Accent 6" /> <w:LsdException Locked="false" Priority="73" SemiHidden="false"    UnhideWhenUsed="false" Name="Colorful Grid Accent 6" /> <w:LsdException Locked="false" Priority="19" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis" /> <w:LsdException Locked="false" Priority="21" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis" /> <w:LsdException Locked="false" Priority="31" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference" /> <w:LsdException Locked="false" Priority="32" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Intense Reference" /> <w:LsdException Locked="false" Priority="33" SemiHidden="false"    UnhideWhenUsed="false" QFormat="true" Name="Book Title" /> <w:LsdException Locked="false" Priority="37" Name="Bibliography" /> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading" /> </w:LatentStyles> </xml><![endif]--><strong></strong></p>
<p class="MsoNormal" style="text-align: justify;">
<p class="MsoNormal" style="text-align: justify;">
<p class="MsoNormal" style="text-align: justify;"><strong>Estudos e soluções</strong></p>
<p class="MsoNormal" style="text-align: justify;">O MMOGs considerados mais divertidos são os que possuem mapas imensos e a possibilidade de personalizar o seu jogador. Fazer com que um peer consiga gerenciar elementos como esses, seria necessário possuir praticamente a mesma estrutura, inclusive datacenters, dos servidores para que ocorra a interação dos pares conectados na rede.</p>
<p class="MsoNormal" style="text-align: justify;">Esse é um problema clássico do que pode ocorrer em situações com grande quantidade de jogadores conectados, ou seja, um caos. Para resolver esse problema, ou pelomenos minimiza-lo, seria necessário desenvolver uma estrutura de mundos e submundos tornando o ambiente utilizável e com desempenho desejado. Para isso, seria necessário a construção de um mundo virtual 2D, ou mapa, dividido em células. As células existentes no game seria um peer da rede eleito seguindo critérios.</p>
<p class="MsoNormal" style="text-align: justify;">
<p class="MsoNormal" style="text-align: justify;"><img class="aligncenter size-medium wp-image-268" title="mundos_virtuais1" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/05/mundos_virtuais1-300x153.jpg" alt="mundos_virtuais1" width="430" height="207" /></p>
<p class="MsoNormal" style="text-align: justify;">
<p class="MsoNormal" style="text-align: justify;">Esse conceito é bem parecido com o campo de visão de um jogador, ou sejam, se o jogador entrou no meu campo de visão então só a partir daí que o tráfego entre esses dois jogadores poderá surgir.</p>
<p class="MsoNormal" style="text-align: justify;">Bom, uma pergunta vem a tona: Como é feita a sincronização das informações que também não estão na minha área de visão? A necessidade de manter informações de outros jogadores que não estão dentro do “contexto”<span> </span>do jogador é necessário para manter o conjunto de informações do game como um todo. Records, ranck, mercados, guildas, etc. dependem desse tipo de informação. A pergunta em questão está sem resposta no momento mas, existem diversas soluções.</p>
<p class="MsoNormal" style="text-align: justify;"><img class="aligncenter size-medium wp-image-269" title="guilda" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/05/guilda-300x187.jpg" alt="guilda" width="345" height="215" /></p>
<p class="MsoNormal" style="text-align: justify;">A solução que, a meu ver, mais se adéqua a necessidade seria a utilização de um servidor central para prover esse tipo de informação. Bom, nesse caso a estrutura de game não é mais 100% P2P? É isso aí. Em situações do cotidiano, no caso sem soluções, seria necessário manter a arquitetura cliente-servidor através de um servidor central para realizar a “contabilidade” do game, diminuindo a existência de shits.</p>
<p style="text-align: justify;">O que acompanha as dúvidas da arquitetura nos games é principalmente a suposta facilidade de inclusão dos cheats no game, já que os arquivos de configuração seriam gravados no disco do cliente. Com isso, um desenvolvedor mais experiente poderia fazer engenharia reversa nos executáveis, verificar os arquivos que o game carrega e modifica-los conforme desejar. Porém, para que isso não aconteça, o game deve implementar inúmeras políticas de segurança como : criptografia, certificados digitais e principalmente implementar uma forma mais adequada a realidade atual, caso a empresa deseje faturar com o serviço do game.</p>
<p style="text-align: justify;"><img class="aligncenter size-medium wp-image-274" title="cooperation" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/05/cooperation-300x292.jpg" alt="cooperation" width="300" height="292" />O desafio para desenvolver a arquitetura nos MMOGs é grande. Tão grande também são as dúvidas referente ao aceite dos jogadores dessa tecnologia nos games, já que a arquitetura cliente-servidor é o padrão para esse tipo de game. Acredito que o principal desafio será encontrar a derivação do protocolo mais adequado para suportar o montante de informação referente a interação dos jogadores no game. Portanto, no próximo post detalharei alguns protocolos P2P e frameworks que mais se adequam a  essa finalidade.</p>
<p style="text-align: justify;">T+ []s</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2009/05/20/mmogs-sobre-p2p-desafios/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Os MMOGs sobre P2P</title>
		<link>http://www.nelsonalone.com.br/2009/04/27/os-mmogs-sobre-p2p/</link>
		<comments>http://www.nelsonalone.com.br/2009/04/27/os-mmogs-sobre-p2p/#comments</comments>
		<pubDate>Mon, 27 Apr 2009 02:37:09 +0000</pubDate>
		<dc:creator>nelsonsozinho</dc:creator>
				<category><![CDATA[P2P - Peer to Peer]]></category>
		<category><![CDATA[games]]></category>
		<category><![CDATA[mmog]]></category>
		<category><![CDATA[p2p]]></category>
		<category><![CDATA[r&d]]></category>

		<guid isPermaLink="false">http://www.nelsonalone.com.br/?p=220</guid>
		<description><![CDATA[O entretenimento eletrônico tornou-se um segmento econômico forte onde empresas de renome também querem se alojar nessa fatia de mercado que cada vez mais cresce. Empresas como Microsoft e Sony disputam a liderança do mercado através de seus consoles de ultima geração e com títulos cada vez mais empolgantes que enchem os olhos dos games [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify;">O entretenimento eletrônico tornou-se um segmento econômico forte onde empresas de renome também querem se alojar nessa fatia de mercado que cada vez mais cresce. Empresas como Microsoft e Sony disputam a liderança do mercado através de seus consoles de ultima geração e com títulos cada vez mais empolgantes que enchem os olhos dos games maníacos que ficam vidrados com gráficos cada vez mais realistas e com som de primeira qualidade. Sem falar do banho da interatividade que a Nintendo disponibilizou no seu novo console que faz com que o &#8220;entretenimento familiar&#8221; fosse o ponto principal da estratégia de marketing da gigante dos games.</p>
<p style="text-align: justify;"><img class="aligncenter size-medium wp-image-250" title="wii21" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/04/wii21-300x206.jpg" alt="wii21" width="300" height="206" /></p>
<p style="text-align: justify;">A iteratividade nos jogos eletrônicos pode ser considerada como elemento fundamental para o sucesso de um game, principalmente quando essa iteratividade também envolva inúmeros jogadores, coisa que torna possível com o a utilização da internet para essa finalidade. Títulos que utilizam a rede como alternativa para a interatividade de jogadores são considerados completos e divertidos pelos consumidores. Dês de 1998 temos os sucessos da ID Software como Quake (I,II,III,IV) em conjunto com a Epic Games com a séria Unreal e a modificação mais famosa do mundo, o Counter Strike, levou esse gênero a inúmeros PCs no mundo.</p>
<p style="text-align: justify;">O enredo adventure, strategy e RPG não podia ter ficado de fora. Levando pelas características do estilo como a existência de mundos, raças, povos, mapas imensos e colaboração, houve a necessidade de criar um ambiente que também suportasse as características do estilo através da rede, uma coisa semelhante a um RPG Online. Tudo isso, de forma com que o universo que precede o jogo fosse livre para exploração, interação, organização, ou seja, o mais parecido com o mundo real. Acredito que dessa forma surgiu o termo &#8220;massivo&#8221; (o primeiro M de MMOG).</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><img class="aligncenter size-medium wp-image-252" title="ultima-online-3" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/04/ultima-online-3-300x218.jpg" alt="ultima-online-3" width="300" height="218" /></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Pra quem não sabe, MMOG significa Massively Multiplayer Online Game, o termo não tem uma tradução, mas por alto significa Jogos Online para Múltiplos Jogadores.  A demanda pelo gênero cresceu de forma absurda, consequentemente foi necessário uma grande infraestrutura para suportar inúmeros jogadores online, o acesso aos servidores dos jogos começou a ser cobrado para cobrir as despesas, patchs e mais patchs de atualização foram necessários para evitar os hacks nos jogos (trapaças). Foi dessa forma que grandes investidores descobriram um modelo de negócio sustentável e que desse lucro rápido.</p>
<p style="text-align: justify;">Grandes empresas investiram pesado nesse novo modelo para tentar vender não apenas títulos, mas também uma forma de mensalidade para acessar os servidores da fabricante. Coisa que aconteceu com World of Warcraft. Muitos conseguiram criar servidores de forma ilegal, mas os melhores serviços são sempre os disponibilizados pela fabricante ou autorizados, pois não tem muitos bugs e são mais seguros (livres de trapaças).</p>
<p style="text-align: justify;"><img class="aligncenter size-medium wp-image-253" title="world_of_warcraft_01" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/04/world_of_warcraft_01-300x225.jpg" alt="world_of_warcraft_01" width="421" height="316" /></p>
<p style="text-align: justify;">Como já tinha dito, esse tipo de entretenimento tem mercado e o retorno é de médio a pequeno e médio prazo, porém, o investimento em infraestrutura de servidores é imensa. Um exemplo disso foi a empresa brasileira, desenvolvedora de jogos,  <a title="Hoplom" href="http://www.hoplon.com/home/index">Hoplon</a>, cujo principal título é o <a title="Taikodom" href="http://www.hoplon.com/content/view/8">Taikodom</a>. O game está sendo distribuído de graça, até o momento, e devido essa estratégia foi necessário criar uma grande infraestrutura de servidores que suportasse a massa de jogadores interagindo ao mesmo instante. Essa necessidade resultou da parceria com a gigante IBM trazendo mainframes para que, até o momento, suportasse os primeiros jogadores do título.</p>
<p style="text-align: justify;">A necessidade de imensas estruturas para manter jogadores interagindo é extremamente cara, ainda por cima, não é novidade as grandes empresas desenvolvedoras dessa modalidade de game cobrar mensalidades para usufruírem do acesso ao ambiente. Muitos concordam e outros discordam, mas seria bom se a banda larga brasileira fosse de qualidade e o mesmo fosse com o serviço, sendo assim poderíamos apenas opinar. Conheço pessoas que são adeptas ao <a title="WoW" href="http://www.worldofwarcraft.com/">World of Warcraft,</a> jogam horas e horas, que reclamam um absurdo da qualidade do serviço prestada no acesso aos servidores da <a title="Blizsard" href="http://www.blizzard.com">Blizzard</a>.</p>
<p style="text-align: justify;">Vendo o grande gasto com infraestrutura para manter MMOGS em funcionamento, pesquisadores e empresas do ramo viram uma alternativa nos protocolos P2P como uma forma de tentar minimizar, ou até mesmo tirar, o gasto em serviços, passando toda a responsabilidade para o cliente seguindo uma série de regras que envolvem desempenho como objetivo de minimizar ao máximo os recursos computacionais utilizados pelo cliente.</p>
<p style="text-align: justify;">Vendo por outro lado, o protocolo P2P seria uma alternativa viável para tal. Podemos ver aplicações que rodam com sucesso sobre esse protocolo, não só sistemas de compartilhamento (na qual é mais conhecido devido as redes de compartilhamento) mas também software mensageiros como MSN e SKYPE. Aplicações como essas necessitam apenas da autenticação com um servidor do mesmo segmento e o resto é tudo feito pela aplicação cliente, ou seja, a transmissão de mensagens, compartilhamento de arquivos e até mesmo a transmissão de voz (se o software suportar) é feita apenas pelos atores que estão participando da troca de informações no momento.</p>
<p style="text-align: justify;">
<p style="text-align: justify;"><img class="aligncenter size-medium wp-image-256" title="p2p1" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/04/p2p1-290x300.png" alt="p2p1" width="290" height="300" /></p>
<p style="text-align: justify;">
<p style="text-align: justify;">Idéia como essa manteve acesa a necessidade das empresas do ramo investir em pesquisa na arquitetura P2P para que possa tornar vantajosa sendo segura, simples, robusta e que atenda ao máximo os usuários adeptos dos títulos. Com isso, toda a responsabilidade de interação, transmissão e desempenho ficaria sobre os recursos do cliente na qual o titulo está sendo jogado.</p>
<p style="text-align: justify;">Bom, mas que vantagem o cliente teria se toda essa carga estaria sobre o cliente?Essa deve ser a pergunta que você deve estar fazendo. Até o momento a vantagem está praticamente TODA para a empresa desenvolvedora do título que não terá que investir em uma infraestrutura de servidores. A carga fica toda como cliente sim. Para isso, existem pesquisas feitas sobre o conjunto de protocolo que envolve a sigla P2P para que essa carga se torne a mínima possível e que seja irrelevante  para o cliente. Ao mesmo tempo, existem pesquisas feitas na utilização do esquema de mundos virtuais, onde cada usuário tem o seu mundo e o tráfego do serviço fica ativo apenas aos jogadores que participarem do seu mundo. Mas isso é assunto para o próximo post, onde darei mais detalhes sobre esse mundo empolgante dos MMOGs.</p>
<p style="text-align: justify;"><img class="aligncenter size-medium wp-image-257" title="p2p2" src="http://www.nelsonalone.com.br/blog/wp-content/uploads/2009/04/p2p2-300x261.jpg" alt="p2p2" width="215" height="187" /></p>
<p style="text-align: justify;">Isso é apenas uma pequena introdução sobre o que pode acontecer no mundo dos MMOGs, especificamente na camada de comunicação, e o que pode vir daqui pra frente nos games. Pesquisas financiadas por softwarehouse e renome para desenvolverem uma plataforma utilizável que funcione com alguma implementação P2P para que alguns títulos possam ser desenvolvidos para testar a plataforma. No próximo post falarei um pouco sobre os tipos de protocolos P2P.</p>
<p style="text-align: justify;">
]]></content:encoded>
			<wfw:commentRss>http://www.nelsonalone.com.br/2009/04/27/os-mmogs-sobre-p2p/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
