<?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>Nuss... E Agora?!? &#187; Gerência de Projetos</title>
	<atom:link href="http://www.nusseagora.blog.br/category/gerencia-de-projetos/feed" rel="self" type="application/rss+xml" />
	<link>http://www.nusseagora.blog.br</link>
	<description></description>
	<lastBuildDate>Fri, 04 Feb 2011 12:56:52 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.5</generator>
		<item>
		<title>Fazendo seu projeto Cair na Real com o Getting Real</title>
		<link>http://www.nusseagora.blog.br/fazendo-seu-projeto-cair-na-real-com-getting-real</link>
		<comments>http://www.nusseagora.blog.br/fazendo-seu-projeto-cair-na-real-com-getting-real#comments</comments>
		<pubDate>Sun, 08 Nov 2009 13:56:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Análise de Sistemas]]></category>
		<category><![CDATA[Game Design]]></category>
		<category><![CDATA[Gerência de Projetos]]></category>
		<category><![CDATA[Leitura recomendada]]></category>
		<category><![CDATA[Padrões de Projeto]]></category>
		<category><![CDATA[Caindo na Real]]></category>
		<category><![CDATA[Getting Real]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/?p=821</guid>
		<description><![CDATA[E, de repente, me surge um eMail na empresa mandado pelo Diego Botelho. Ele tinha um link para um artigo no iMasters que, por sua vez, falava de como desenvolver aplicações para a web com o Flex. Esse artigo falava sobre um livro... um tal de Getting Real. E então, tudo mudou. Como falei com [...]]]></description>
			<content:encoded><![CDATA[<p>E, de repente, me surge um eMail na empresa mandado pelo <a href="http://www.diegobotelho.com.br/" target="_blank">Diego Botelho</a>. Ele tinha um link para <a href="http://imasters.uol.com.br/artigo/14430/flex/criando_sistemas_reais_com_flex_%E2%80%93_parte_01/" target="_blank">um artigo no iMasters</a> que, por sua vez, falava de como desenvolver aplicações para a web com o Flex. Esse artigo falava sobre um livro... um tal de <a href="https://gettingreal.37signals.com/" target="_blank">Getting Real</a>. E então, tudo mudou.</p>
<p><span id="more-821"></span>Como falei com o <a href="http://gamedesign.agilonline.info/" target="_blank">Adauto</a>, o Getting Real <em>"é a coisa mais genial que eu li sobre gerência de projetos nos últimos 8 anos. É tão genial q chega a assustar."</em> Ele vai diretamente contra tudo que a teoria nos empurra a fazer. O livro não passa de uma coletânea de práticas e estudos de caso do desenvolvimento dos produtos da <a href="http://37signals.com/" target="_blank">37signals</a>, uma empresa de chicago que está no mercado desde 1999 fazendo software web. Por mais idiota que isso possa parecer (e, à primeira vista, ISSO PARECE), a 37signals produz softwares que, intencionalmente, FAZEM MENOS QUE A CONCORRÊNCIA. Antes de você desistir de continuar lendo saiba que são eles por trás do framework <a href="http://rubyonrails.org/" target="_blank">Ruby on Rails</a>...</p>
<p>O próprio livro se define assim:</p>
<ul>
<blockquote>
<li>(<em>Getting Real</em>) é sobre pular todas as coisas que representam a realidade (cartas, gráficos, caixas, setas, esquemas, wireframes, etc.) e realmente construir a coisa real.</li>
<li>(<em>Getting Real</em>) é menos. Menos massa, menos software, menos funcionalidades, menos papéis, menos tudo que não é essencial (e a maioria do que você pensa ser essencial realmente não é).</li>
<li>(<em>Getting Real</em>) é permanecer pequeno e ser ágil.</li>
<li>(<em>Getting Real</em>) inicia com a construção da interface, ou seja, as telas reais que as pessoas irão utilizar. Começa com as experiências reais dos clientes, construindo a partir disso para trás. Dessa forma você obtém a interface adequada antes de obter um software errado.</li>
</blockquote>
</ul>
<p><em>"Ah Tiago. Essa parada ae é de desenvolvimento de sistemas na web. Eu só quero fazer um jogo. Prá quê você me manda ler isso?".</em> Pois o Getting Real é justamente isso: cair na real, limpar tudo aquilo com o que você NÃO precisa gastar tempo agora e deixar para pensar no futuro. É sobre não pensar agora em resolver um problema que ainda não é um problema. É sobre não perder incontáveis dias otimizando uma rotina que só vai precisar ser otimizada quando você tiver 500 usuários ao mesmo tempo. É sobre <a href="http://nusseagora.blog.br/design-inchado-voce-esta-fazendo-seu-primeiro-jogo-nao-seu-ultimo/" target="_blank">não inchar o seu design, enxugar seu escopo</a>, <a href="http://nusseagora.blog.br/talvez-normalizar-nao-seja-normal/" target="_blank">fugir da febre dos padrões e fazer SOMENTE o necessário para que seu projeto funcione com a qualidade que ele exige no momento</a>.  Essas dicas, apesar de voltadas para uma aplicação web, são absolutamente verdadeiras para diversos outros tipos de projetos. Além disso, sua idéia principal pode ser adotada em todo e qualquer tipo projeto, seja de software ou não. Vai depende somente da forma com que a empresa encara eles.</p>
<p>Falando em empresas, As desenvolvedoras de jogos online já utilizam tais conceitos há anos: lançam <a href="http://nusseagora.blog.br/atualizacao-inteligente-e-o-que-ha/" target="_blank">atualizações constantes para seus jogos</a>, aumentando gradativamente sua complexidade, começando a subir uma escada lá debaixo no primeiro degrau. Além disso, fazem correções de bugs críticos em tempo real, horas após sua descoberta. No final, o produto cresce naturalmente e não só ao trocar de pele: você se preocupa com pequenos problemas por vez, faz pequenos designs por vez, implementa pequenas novidades  por vez e tira pequenas funcionalidades por vez, tudo constantemente, em pequenos períodos por vez.</p>
<p>O Getting Real vai muito além de qualquer livro de gerência de projetos. Ele é uma coletânea de dicas que se torna seu livro de cabeceira já nos primeiros 15 minutos de leitura, daqueles que você não vai deixar de mostrar para todo mundo. E não tem essa de desculpa para não ler: ele é fácil, rápido, direto, tem <a href="http://gettingreal.37signals.com/GR_por.php" target="_blank">versão em português muito bem traduzida e, ainda por cima, gratuita para ler na net</a>. Tá esperando o quê para Cair na Real também?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/fazendo-seu-projeto-cair-na-real-com-getting-real/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Conheça as etapas de produção de um game moderno &#8211; G1</title>
		<link>http://www.nusseagora.blog.br/conheca-etapas-de-producao-de-um-game-moderno-g1</link>
		<comments>http://www.nusseagora.blog.br/conheca-etapas-de-producao-de-um-game-moderno-g1#comments</comments>
		<pubDate>Thu, 01 Oct 2009 22:16:06 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Gerência de Projetos]]></category>
		<category><![CDATA[Jogos]]></category>
		<category><![CDATA[Leitura recomendada]]></category>
		<category><![CDATA[Mercado de Jogos]]></category>
		<category><![CDATA[desenvolvimento de jogos]]></category>
		<category><![CDATA[etapas do desenvolvimento]]></category>
		<category><![CDATA[profissão]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/?p=752</guid>
		<description><![CDATA[Já foi publicado há algum tempo, mas achei extremamente válido postar mesmo assim: saiu na G1 o artigo Conheça as etapas de produção de um game moderno mostrando as etapas do desenvolvimento de um jogo digital da atualidade. Ele conta com um infográfico" (imagem interativa educacional) que torna o aprendizado intuitivo e interessante. Quem é [...]]]></description>
			<content:encoded><![CDATA[<p>Já foi publicado há algum tempo, mas achei extremamente válido postar mesmo assim: saiu na G1 o artigo <a href="http://g1.globo.com/Noticias/Games/0,,MUL1241561-9666,00-CONHECA+AS+ETAPAS+DE+PRODUCAO+DE+UM+GAME+MODERNO.htm" target="_blank">Conheça as etapas de produção de um game moderno</a> mostrando as etapas do desenvolvimento de um jogo digital da atualidade. Ele conta com um infográfico" (imagem interativa educacional) que torna o aprendizado intuitivo e interessante.</p>
<p>Quem é leitor antigo lembra que postei, ainda no início do Nuss... E agora?!? uma série de artigos (parte <a href="http://nusseagora.blog.br/um-por-todos-e-todos-por-um-as-diversas-profissoes-necessarias-para-fazer-um-jogo-parte-1/" target="_blank">1</a>, <a href="http://nusseagora.blog.br/um-por-todos-e-todos-por-um-as-diversas-profissoes-necessarias-para-fazer-um-jogo-parte-2/" target="_blank">2</a> e <a href="http://nusseagora.blog.br/um-por-todos-e-todos-por-um-as-diversas-profissoes-necessarias-para-fazer-um-jogo-parte-3/" target="_blank">3</a>) entitulada "Um por todos e todos por um: as diversas profissões necessárias para fazer um jogo". Se gostou da série não pode deixar de conferir o da G1.</p>
<p style="text-align: right;"><em>Agradecimetos ao Rafael Barboza pela indicação do link</em> <a href="http://twitter.com/nusseagora" target="_blank"><em>pelo twitter</em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/conheca-etapas-de-producao-de-um-game-moderno-g1/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Marios, Máquinas de Estados e o Padrão de Projetos State &#8211; Parte 1</title>
		<link>http://www.nusseagora.blog.br/marios-maquinas-de-estados-padrao-de-projetos-state-parte-1</link>
		<comments>http://www.nusseagora.blog.br/marios-maquinas-de-estados-padrao-de-projetos-state-parte-1#comments</comments>
		<pubDate>Sat, 19 Sep 2009 20:27:29 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Análise de Sistemas]]></category>
		<category><![CDATA[Gerência de Projetos]]></category>
		<category><![CDATA[Padrões de Projeto]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[máquina de estados]]></category>
		<category><![CDATA[Mario]]></category>
		<category><![CDATA[state]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/?p=712</guid>
		<description><![CDATA[Pense em um jogo onde o seu personagem muda de habilidades no decorrer da aventura. Não importa se pegando itens ou ganhando poderes especiais, o importante é que saibamos o quanto de trabalho isso dá para a programação. “Ué Tiago, não é só criar as classes de cada um desses poderes especiais e ir transformando [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float: left"><!--rec6--></span></p>
<p style="margin-left: 70pt; text-align: justify">Pense em um jogo onde o seu personagem muda de habilidades no decorrer da aventura. Não importa se pegando itens ou ganhando poderes especiais, o importante é que saibamos o quanto de trabalho isso dá para a programação. <em>“Ué Tiago, não é só criar as classes de cada um desses poderes especiais e ir transformando o personagem em outro objeto?”</em></p>
<p><em><span id="more-712"></span></em>Na realidade, isso é só o início dos nossos problemas. Quer ver só: vamos pensar no Mario. Em um jogo clássico como o Super Mario Bros. ele tem as seguintes formas: Mario, Super Mario (quando pega um Super Mushroom), Mario Flor de Fogo (quando pega uma Fire Flower), Mario Invencível (quando pega um Starman) e, claro, Mario Morto, quando ele morre. Para que isso funcione, o Mario precisa de um conjunto de ações simples: <em>Pegar Cogumelo</em>, <em>Pegar Starman</em>, <em>Pegar Fire Flower,</em> e, como nem tudo é perfeito, ele também tem que poder, <em>Encostar em um inimigo.</em></p>
<p><em>“E o que isso tem a ver?”</em> Se você ainda não percebeu, cada um dessas formas do Mario tem o mesmo conjunto de ações: seja um Mario, um Mario Flor de Fogo ou qualquer outra forma de Mario, todos têm que poder encostar em um inimigo, pegar um cogumelo, um starman ou uma fire flower. O que muda é o comportamento daquela forma de Mario perante aquela ação. Não entendeu? Bom... enquanto <strong>Mario</strong> <strong>encosta em um inimigo</strong> e <strong>morre</strong>, <strong>Super Mario encosta em um inimigo</strong> e <strong>volta a ser Mario</strong>. A mesma ação (encostar em um inimigo) engatilha 2 ações diferentes (<strong>Virar Mario Morto</strong> e <strong>Virar Mario</strong>).</p>
<p>Mapeando todas essas relações entre as formas do Mario temos...</p>
<table style="height: 269px;" border="1" cellspacing="0" cellpadding="0" width="544">
<tbody>
<tr>
<td width="115" valign="top">
<p align="center">
</td>
<td width="115" valign="top">
<p align="center"><strong>Pegar<br />
Cogumelo</strong></p>
<p align="center"><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/super-mushroom.png"><img class="size-full wp-image-714" title="super-mushroom" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/super-mushroom.png" alt="Super Mushroom" width="90" height="90" /></a></p>
</td>
<td width="115" valign="top">
<p align="center"><strong>Pegar<br />
Starman</strong></p>
<p style="text-align: center;" align="center"><strong><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/starman.png"><img class="size-full wp-image-715 aligncenter" title="starman" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/starman.png" alt="starman" width="90" height="90" /></a><br />
</strong></td>
<td width="115" valign="top">
<p align="center"><strong>Pegar<br />
Fire Flower</strong></p>
<p align="center"><strong><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/fire-flower.png"><img class="aligncenter size-full wp-image-716" title="fire-flower" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/fire-flower.png" alt="fire-flower" width="90" height="90" /></a><br />
</strong></td>
<td width="115" valign="top">
<p align="center"><strong>Encostar em<br />
um Inimigo</strong></p>
<p align="center"><strong><a href="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/bob-omb.png"><img class="aligncenter size-full wp-image-717" title="bob-omb" src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2009/09/bob-omb.png" alt="bob-omb" width="90" height="90" /></a><br />
</strong></td>
</tr>
<tr>
<td width="115" valign="top">
<p align="center"><strong>Mario</strong></p>
</td>
<td width="115">
<p align="center">Super Mario</p>
</td>
<td width="115">
<p align="center">Mario<br />
Invencível</td>
<td width="115">
<p align="center">Mario Flor<br />
de Fogo</td>
<td width="115">
<p align="center">Mario Morto</p>
</td>
</tr>
<tr>
<td width="115" valign="top">
<p align="center"><strong>Super<br />
Mario</strong></td>
<td width="115">
<p align="center">Super Mario</p>
</td>
<td width="115">
<p align="center">Mario<br />
Invencível</td>
<td width="115">
<p align="center">Mario Flor<br />
de Fogo</td>
<td width="115">
<p align="center">Mario</p>
</td>
</tr>
<tr>
<td width="115" valign="top">
<p align="center"><strong>Mario<br />
Flor de Fogo</strong></td>
<td width="115">
<p align="center">Mario<br />
Flor de Fogo</td>
<td width="115">
<p align="center">Mario<br />
Invencível</td>
<td width="115">
<p align="center">Mario Flor<br />
de Fogo</td>
<td width="115">
<p align="center">Mario</p>
</td>
</tr>
<tr>
<td width="115" valign="top">
<p align="center"><strong>Mario<br />
Invencível</strong></td>
<td width="115">
<p align="center">Mario<br />
Invencível</td>
<td width="115">
<p align="center">Mario<br />
Invencível</td>
<td width="115">
<p align="center">Mario<br />
Invencível</td>
<td width="115">
<p align="center">Mario<br />
Invencível</td>
</tr>
<tr>
<td width="115" valign="top">
<p align="center"><strong>Mario Morto</strong></p>
</td>
<td width="115">
<p align="center">Mario Morto</p>
</td>
<td width="115">
<p align="center">Mario Morto</p>
</td>
<td width="115">
<p align="center">Mario Morto</p>
</td>
<td width="115">
<p align="center">Mario Morto</p>
</td>
</tr>
</tbody>
</table>
<p>Na 1a coluna, temos os estados iniciais. A 1a linha tem as ações e o corpo da tabela é a forma que o Mario assume após aquele evento. Por exemplo, <strong>Mario</strong> pega um <strong>cogumel</strong>o e vira <strong>Super Mario</strong>. Esse mapeamento de troca de formas é o que chamamos de <strong>Máquina de Estados:</strong> ela indica quais formas aquele objeto tem (o que chamamos de <strong>estado</strong>), quais ações aquele estado pode realizar e qual novo estado ele vai assumir após realizar tal ação.<em> </em></p>
<p>Quem joga os jogos do Mario sabe que, na realidade, o estado Mario Invencível depende do estado onde o Mario estava anteriormente. Então teríamos além de <strong>Mario Invencível</strong>, as formas <strong>Super Mario Invencível</strong> e <strong>Mario Flor de Fogo Invencível</strong>... Olhe como adicionar essa simples característica aumenta muito nossa complexidade: no nosso exemplo, temos <strong>4 ações x 5 formas =</strong> <strong>20 métodos</strong> a serem implementados. Aumentar 3 estados significaria passar para <strong>4 ações x 7 formas = 28 métodos.</strong></p>
<p><em>“Até aí tudo bem</em>, <em>Tiago!”</em> Sim, mas o problema vem agora: também precisamos saber qual ação foi executada e em qual forma o Mario estava. Para fazer isso, precisaríamos de um conjunto imenso de testes aninhados que fariam, para cada ação:</p>
<pre>Se o jogador pegou um Cogumelo:
    está na forma Mario, troque para a forma Super Mario
    está na forma Super Mario, mantenha-se como Super Mario;
    está na forma Fire Flower Mario, mantenha-se como Fire Flower Mario;
    está na forma Mario Invencível, mantenha-se como Mario Invencível;
    está na forma Mario Morto, mantenha-se como Mario Morto;</pre>
<p>... muito trabalho, né não? Além disso, para cada uma dessas novas formas, teríamos que ir nesse conjunto de testes aninhados para adicionar as novas regras. Estruturas mais complexas seriam tão trabalhosas de gerenciar que se tornariam inviáveis. Essa complexidade crescente é das grandes vilãs quando trabalhamos com estados: a cada estado adicionado temos que mapear todas as relações entre ele e os estados já existentes programando suas relações.</p>
<p>Para resolver esse problema de manutenibilidade, utilizamos o Padrão de Projetos State (ou “Estado”). No próximo artigo implementaremos essa Máquina de Estados do Mario. Então, até lá!</p>
<p style="text-align: right;">Imagens de <em><a href="http://mario.wikia.com">http://mario.wikia.com</a></em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/marios-maquinas-de-estados-padrao-de-projetos-state-parte-1/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>&#8220;Talvez normalizar não seja normal&#8221;</title>
		<link>http://www.nusseagora.blog.br/talvez-normalizar-nao-seja-normal</link>
		<comments>http://www.nusseagora.blog.br/talvez-normalizar-nao-seja-normal#comments</comments>
		<pubDate>Thu, 10 Jul 2008 21:17:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Análise de Sistemas]]></category>
		<category><![CDATA[Artigos Exteriores]]></category>
		<category><![CDATA[Gerência de Projetos]]></category>
		<category><![CDATA[Padrões de Projeto]]></category>
		<category><![CDATA[Problemas]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[bancos de dados]]></category>
		<category><![CDATA[normalização]]></category>
		<category><![CDATA[projeto de sistemas]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/talvez-normalizar-nao-seja-normal/</guid>
		<description><![CDATA[Hoje vai mais um lembrete que propriamente um artigo: a idéia dele me foi mandada pelo Mário. Ele me mandou esse artigo em inglês lá do Coding Horror que mostra problemas causados pela extrema normalização em Banco de Dados. Prestem bastante atenção quando o Jeff Atwood diz que "você deve normalizar quando os dados te [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje vai mais um lembrete que propriamente um artigo: a idéia dele me foi mandada pelo <a href="http://vovoviuarede.blogspot.com/" target="_blank">Mário</a>. Ele me mandou <a href="http://www.codinghorror.com/blog/archives/001152.html">esse</a> artigo em inglês lá do <a href="http://www.codinghorror.com/blog/" target="_blank">Coding Horror</a> que mostra problemas causados pela extrema normalização em Banco de Dados.</p>
<p>Prestem bastante atenção quando o Jeff Atwood diz que "você deve normalizar quando os dados te disserem para fazê-lo" e não simplesmente por ser mais elegante ou teoricamente correto. Isso <strong>não</strong> significa que seu código deva ser anárquico, completamente contrário às regras de boa programação, e sim que ele seja <strong>adequado </strong>ao que escopo que o projeto prevê.</p>
<p>Para quem quiser mais informação sobre essa lógica, coloquei aqui no <em>Nuss... e Agora?!?</em> há algum tempo o artigo <a href="http://nusseagora.blog.br/wp-admin/Padr%C3%B5es%20de%20Projeto:%20quest%C3%A3o%20de%20bom%20senso" target="_blank"><em>Padrões de Projeto: questão de bom senso</em></a>. Ele fala exatamente sobre essa briga entre os pontos de vista de "<em>faça por ser útil</em>" e "<em>faça por ser elegante</em>" focado na análise de sistemas.</p>
<p>Lembrem-se: <em>"Adequação, não perfeição"</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/talvez-normalizar-nao-seja-normal/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Padrões de Projeto: questão de bom senso</title>
		<link>http://www.nusseagora.blog.br/padroes-de-projeto-questao-de-bom-senso</link>
		<comments>http://www.nusseagora.blog.br/padroes-de-projeto-questao-de-bom-senso#comments</comments>
		<pubDate>Tue, 22 Apr 2008 11:52:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Análise de Sistemas]]></category>
		<category><![CDATA[Gerência de Projetos]]></category>
		<category><![CDATA[Padrões de Projeto]]></category>
		<category><![CDATA[Problemas]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/padroes-de-projeto-questao-de-bom-senso/</guid>
		<description><![CDATA[Tá, eu já falei várias vezes sobre as maravilhas de se usar padrões de projeto, como eles resolvem problemas e coisas do gênero. Porém, fica sempre uma dúvida no ar: quando usar Padrões de Projeto? Os Padrões são receitas prontas e já muito testadas para resolver problemas recorrentes: aqueles que milhares programadores tinham. Logicamente falando, [...]]]></description>
			<content:encoded><![CDATA[<p>Tá, eu já falei várias vezes sobre as maravilhas de se usar padrões de projeto, como eles resolvem problemas e coisas do gênero. Porém, fica sempre uma dúvida no ar: <strong>quando usar Padrões de Projeto?</strong></p>
<p><span id="more-62"></span>Os Padrões são receitas prontas e já muito testadas para resolver problemas recorrentes: aqueles que milhares programadores tinham. Logicamente falando, eles são para <strong>simplificar</strong> a nossa vida. Se você pode dizer <em>"Ih. Já vi isso antes. A gente resolve isso com o State"</em>, não tenha dúvidas em aplicar o padrão. Ele vai fazer maravilhas pelo cronograma e tirar da cabeça dos programadores mais um problema.</p>
<p>Agora... uma coisa ninguém pode negar: padrões, sejam os de projeto quanto arquiteturais, <strong>sempre</strong> complicam programas simples. Se você tem um jogo simples de tabuleiro assim...</p>
<p align="center"><!--[if gte vml 1]> <![endif]--><img src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2008/04/padroes-de-projeto-questao-de-bom-senso1.jpg" alt="Jogo de tabuleiro v1" align="middle" /></p>
<p>... sabe como ele poderá ficará depois de aplicado o MVC?</p>
<p align="center"><!--[if gte vml 1]> <![endif]--><img src="http://nusseagora.dominiotemporario.com/wp-content/uploads/2008/04/padroes-de-projeto-questao-de-bom-senso2.jpg" alt="Jogo de tabuleiro v2" align="middle" /></p>
<p>Não preciso nem perguntar se alguém notou como a complexidade aumentou, né? E olha que o MVC é só um padrão de arquitetura, hein? Imagina ainda adicionar estados para as <em>TPeca</em> e <em>TTabuleiro</em>, um <em>Singleton</em> para a <em>TJogo</em>...</p>
<p>Os padrões de projeto tornam as coisas mais coesas, porém aumentam o acoplamento geral de seu programa, pois as classes de um padrão são extremamente dependentes entre si. Eles aumentam muito a complexidade do código, coisa que muitas vezes não é necessário. Voltando ao exemplo acima, alguém acha necessário aplicar o MVC à um projeto que só tem 3 classes?</p>
<p>Usar Padrões de Projeto é uma questão de <strong>bom senso</strong>: utilize-os só quando eles simplificarem o problema, nunca para jogar mais gasolina no fogo que você tenta apagar, ok?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/padroes-de-projeto-questao-de-bom-senso/feed</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Post mortem de um projeto que não nasceu</title>
		<link>http://www.nusseagora.blog.br/post-mortem-de-um-projeto-que-nao-nasceu</link>
		<comments>http://www.nusseagora.blog.br/post-mortem-de-um-projeto-que-nao-nasceu#comments</comments>
		<pubDate>Sat, 29 Mar 2008 15:29:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Gerência de Projetos]]></category>
		<category><![CDATA[Problemas]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/post-mortem-de-um-projeto-que-nao-nasceu/</guid>
		<description><![CDATA[Aí eu vejo pessoas na Unidev que ridicularizam os novatos com o já clássico "vou fazer um MMORPG". Ta, é realmente absurdo ver um cara falar "sou iniciante" e "quero fazer um MMOG" na mesma sentença. É como entrar na faculdade de engenharia e querer montar no quintal de casa a torre mais alta do [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float: left"><!--rec6--></span></p>
<p style="margin-left: 70pt; text-align: justify">Aí eu vejo pessoas na Unidev que ridicularizam os novatos com o já clássico <em>"vou fazer um MMORPG"</em>. Ta, é realmente absurdo ver um cara falar "sou iniciante" e "quero fazer um MMOG" na mesma sentença. É como entrar na faculdade de engenharia e querer montar no quintal de casa a torre mais alta do mundo.Agora, sejamos francos: os caras são iniciantes e, graças aos programistas de revistinha de banca, o mercado foi banalizado: qualquer um acha que é muito fácil fazer qualquer coisa. Então, ao invés de metralhar (mais) os sujeitos falando <em>"isso não vai ser terminado"</em>, pq não dizer pra eles <em>"por quê não vão terminar"</em>?</p>
<p>É pra isso que eu vou começar essa lista e esperar que vocês a debatam, enfeitem, critiquem e aumentem. Eu vou editando assim que novas coisas forem surgindo e espero que tenhamos uma lista bem grande de motivos com os quais se preocupar. Ah, é claro, é também pra ter uma lista para linkar toda vez que alguém vier com mais um <em>"eu sou iniciante mas vou fazer um MMORPG".<br />
</em><span id="more-60"></span><br />
Então, vamo lá. Listando sem ordem de prioridade, os erros mais comuns nos quais consigo pensar:</p>
<ul class="unIndentedList">
<li> pessoas querendo "ajudar" ou "dar idéias" não são úteis ao projeto por incharem demais o design: se você não tá dando conta de fazer tudo a tempo, não vai terminar nunca com aquele "eu tive uma idéia boa..." adicional toda semana. Um design é o que deve ser seguido e terminado. Aí sim arruma-se mais coisa prá fazer.<br />
<em><br />
Links relacionados:<br />
<a href="http://nusseagora.blogspot.com/2007/08/design-inchado-voc-est-fazendo-seu_03.html" target="_blank">Design Inchado</a></em></li>
</ul>
<ul class="unIndentedList">
<li> se já é difícil gerenciar muitos profissionais que ganham e trabalham 6h por dia juntos, imagina 30 profissionais que nunca se viram e tão trabalhando no período de lazer... <strong>DUVIDO </strong>que alguém deixe de ir àquela festa fodônica no fim de semana, ou deixe de assistir aquele filme pela 15a vez só pq o seu cronograma tá apertado. Ah, falando nele...<br />
<em><br />
Links Relacionados:<br />
<a href="http://nusseagora.blog.br/wp-admin/vide%20http://nusseagora.blogspot.com/2007/09/atraso-em-projetos-de-horas-vagas-ou.html" target="_blank">Atraso em Projetos de Horas Vagas</a></em></li>
</ul>
<ul class="unIndentedList">
<li> Inexistência completa, total e absoluta de um cronograma a se seguir. O cronograma é uma tabelinha que, resumidamente, diz quem tá fazendo o que, há quanto tempo tá fazendo e quando tem que terminar de fazer. Assim vocÊ controla o que tá atrasando mais e quem tá à toa, podendo ser empregado em outra parte do projeto. Cronogramas nesses projetos são tão raros quanto lançamentos para Atari.</li>
</ul>
<ul class="unIndentedList">
<li> Os grupos são sempre uma porrada de profissionais de conhecimento, no máximo, mediano. Um jogo é algo avançado e extremamente difícil de ser feito até mesmo quando todo engambiarrado.</li>
</ul>
<ul class="unIndentedList">
<li> Cadê a <em>Especificação de Requisitos</em>? Somente um <em>"vamos fazer um jogo"</em> é absurdamente raso. É difícil achar alguém com conhecimento profundo das tecnologias que vão ser utilizadas nem do público alvo ao qual se destina. Isso, claro, sem falar no design básico: como o jogo vai ser, o que ele vai ser e como vão jogá-lo. Isso tudo se reflete nos profissionais que se consegue. Acaba-se criando o que eu chamo de <strong>projeto Torre de Babel</strong>: você tem umas 30 linguagens de programação diferentes e artistas em 2d, 3d, 4d e 5d.<br />
<em><br />
Links Relacionados</em><br />
<a href="http://nusseagora.blog.br/a-roda-do-tempo-parte-2/" target="_blank"><em>A Roda do Tempo</em></a></li>
</ul>
<ul class="unIndentedList">
<li> Gerência é algo em 15º plano. <em>"Gerência? Não não, queremos só fazer um jogo"</em>. Quando muito, o cara que resolve juntar o pessoal saca um cado de programação. Sem gerência nada vai pra frente: você precisa impor limites, cobrar resultados e motivar pessoas. Precisa mover recursos, precisa solucionar problemas. Isso tudo requer estudo profundo e extenso ou então esteja preparado para muita bateção de cabeça.</li>
</ul>
<p>Algumas coisas aí estão realmente necessitando de uma explicação mais profunda, como o <em>Cronograma</em>. Por isso, assim que eu abordar esses documentos de desenvolvimento aqui, prometo eu linká-los diretamente aqui.</p>
<p>Além disso, peço que vocês também enviem-me links sobre os tópicos aqui relacionados, fazendo essa biblioteca crescer cada vez mais!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/post-mortem-de-um-projeto-que-nao-nasceu/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Configurações gráficas abrangentes: Para não parar no tempo</title>
		<link>http://www.nusseagora.blog.br/configuracoes-graficas-abrangentes-para-nao-parar-no-tempo</link>
		<comments>http://www.nusseagora.blog.br/configuracoes-graficas-abrangentes-para-nao-parar-no-tempo#comments</comments>
		<pubDate>Mon, 04 Feb 2008 02:17:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Game Design]]></category>
		<category><![CDATA[Gerência de Projetos]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/configuracoes-graficas-abrangentes-para-nao-parar-no-tempo/</guid>
		<description><![CDATA[Antes de tudo, leiam esse post do Rodrigo Flausino sobre a Blizzard e o Warcraft. Já leu? Então agora a gente pode começar a destrinchar o problema. O que vou expor aqui é um pensamento que pode vai mudar drasticamente dependendo do projeto, principalmente quando levamos em conta coisas como escopo, público-alvo e recursos. Mas [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float: left"><!--rec6--></span></p>
<p style="margin-left: 70pt; text-align: justify">Antes de tudo, leiam <a href="http://www.rodrigoflausino.com/blog/escalabilidade-grafica-em-mmorpgs/" target="_blank">esse post</a> do Rodrigo Flausino sobre a Blizzard e o Warcraft. Já leu? Então agora a gente pode começar a destrinchar o problema. O que vou expor aqui é um pensamento que <s>pode</s> vai mudar drasticamente dependendo do projeto, principalmente quando levamos em conta coisas como escopo, público-alvo e recursos. Mas pensando na Blizzard, duvido muito que tenha faltado alguma coisa ou que algum limite intelectual tenha sido alcançado. Isso faz com que tracemos uma linha possível: mercado.</p>
<p><span id="more-46"></span></p>
<p><em>"Mas Tiago, não pode ser problema nos servidores deles?"</em>. Não, não pode. Gráficos não afetam em nada o tráfego de informações. Eles rodam localmente, não vêm de um servidor. Portanto, se você joga Tibia ou Lineage, o que vem pela net é virtualmente a mesma coisa: pacotes com informações de localização, características e ações de personagens, monstros e NPCs. Aliás, o Tibia é conhecido por pesar mais a rede que jogos de gráficos bem mais avançados, como o Silkroad Online. Portanto, ta mais que provado que a carga na rede <strong>não</strong> pode ser o foco dessa tal decisão. <em>"Mas se não é, então o que será?"</em></p>
<p>Ouvi por aê que o World of Warcraft já é relativamente pesadinho do jeito que já tá, não sendo um jogo para qualquer máquina. Pode ser que estejam perdendo um cado de clientes que simplesmente não conseguem jogar por limitações de hardware, como placas de vídeo ou memória RAM. Se for o caso (e acredito que seja), a Blizzard está querendo ampliar seu público-alvo, alcançando uma fatia maior do mercado.</p>
<p><em>"Então eles estão certos em parar de melhorar graficamente seu jogo, já que isso vai fazer com que parem de perder clientes"</em>, você diz.<em> "Não! Eles estão justamente ERRADOS em fazer isso"</em> eu respondo e vou explicar por quê eu acho isso.</p>
<p>A Blizzard pensou muito mal em parar de melhorar graficamente seu jogo pois parar no tempo é burrice e quem pára é atropelado. Ponto final. <em>"Mas Tiago, estamos falando de WoW, não de qualquer coisinha aí."</em> É, estamos falando de WoW. Mas antes dele tinha um MMOG foderoso que dominava o mercado... um que foi atropelado pelo WoW tão logo tenha chegado a data de lançamento do último. Entendeu o que eu quis dizer?</p>
<p>Não é só por ser uma grande empresa que a Blizzard não vai errar. Olha o lixo em que transformaram o Mortal Kombat, olha o fracasso que tem sido os últimos jogos do Sonic, olha o fiasco que foi o Crysis. Todo mundo erra e, ao invés disso, deveriam ter pensado no óbvio: configurações gráficas abrangentes.</p>
<p><em>"Mas hein?"</em> Ah gente, sabe aquele basicão do Age of Empires III de desativar tanto efeito gráfico que o jogo roda numa placa de vídeo arcaica de 64mb? Pois então, eles estão fazendo com que o MESMO jogo lindo para as máquinas absurdamente potentes seja jogável pelas máquinas cansadas de 5 anos atrás.</p>
<p>É um assunto bem complicado, principalmente pois hoje em dia as pessoas acham que um jogo bom é um jogo que tem gráficos bons: se você não os tem, já vai ter que suar pra mostrar que o jogo é bom. À quem duvida disso, recomento lembrar-se de como falaram merda do Zelda: Wind Waker por usar cel shadding ao invés dos gráficos realistas que mostraram no lançamento do Game Cube.</p>
<p>Essa escalada rumo à perfeição cria jogos injogáveis pela maioria absoluta da população mundial. Excessos e utopias do gênero foram o que jogaram o Atari Jaguar no lixo, foram o que jogaram o Crysis no lixo e são o que está jogando o PS3 no lixo. Aplaudo a Blizzard em ir contra essa tendência: critico mesmo é a forma com que definiram a situação.</p>
<p>Então fica só um artigo de ponto de vista pessoal com uma pitada de desabafo e experiência adquirida com o erro de outros jogos. Afinal de contas, jogar também é aprender!</p>
<p>Um abração e até a próxima.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/configuracoes-graficas-abrangentes-para-nao-parar-no-tempo/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>A Roda do Tempo (Parte 2)</title>
		<link>http://www.nusseagora.blog.br/a-roda-do-tempo-parte-2</link>
		<comments>http://www.nusseagora.blog.br/a-roda-do-tempo-parte-2#comments</comments>
		<pubDate>Sat, 26 Jan 2008 21:31:54 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Game Design]]></category>
		<category><![CDATA[Gerência de Projetos]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/a-roda-do-tempo-parte-2/</guid>
		<description><![CDATA[É gente, tá aí a 2a parte do meu exercício de Game Design. A 1a parte você encontra aqui e o exercício você encontra lá no blog do Flausino, aqui. Dessa vez vou destrinchar um cado o que exatamente vai ser o jogo, como ele vai funcionar, as tecnologias que eu quero usar e coisas [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float: left"><!--rec6--></span></p>
<p style="margin-left: 70pt; text-align: justify">É gente, tá aí a 2a parte do meu exercício de Game Design. A 1a parte você encontra <a href="http://nusseagora.blog.br/a-roda-do-tempo/">aqui </a>e o exercício você encontra lá no blog do Flausino, <a href="http://www.rodrigoflausino.com/blog/exercicio-de-game-design-01/">aqui</a>. Dessa vez vou destrinchar um cado o que exatamente vai ser o jogo, como ele vai funcionar, as tecnologias que eu quero usar e coisas do gênero. Paratal feito, vou usar um documento de gerência chamado <em>Especificação de Requisitos</em>. Como o assunto é um tanto quanto extenso, falarei sobre a confecção de uma num outro artigo. Na situação atual, basta que vocês saibam que ela é muito boa para esboçarmos o que temos que fazer no nosso projeto, sem entrar em grandes detalhes sobre eles. Quando bem feita, ela pode ser a base do seu Diagrama de Casos de Uso, Cronograma, contrato  e também do seu Game Design. Poderosa, não?</p>
<p>Vamos logo ao que interessa, a <strong>Especificação de Requisitos</strong>:</p>
<p align="justify"><span id="more-44"></span>A Roda do Tempo é um jogo completamente 3D multiplataforma feito em C++ e OpenGL. Permite que o jogador salve seu progresso em pontos específicos utilizando um sistema de estados salvos em arquivos, estrutura que facilita a troca de jogos salvos pela internet. Sua duração varia de acordo com a quantidade de auxílio para resolver os quebra-cabeças, mas pretende-se uma diversão entre 10 e 15 horas.</p>
<p>É um jogo predominantemente de ação, exploração e solução de quebra cabeças, idealizado para concorrer diretamente com o jogo Tomb Raider (Eidos). O jogador, na pele do explorador Jonathan Williams, tem a missão de desmembrar todas as 36 áreas periféricas de uma gigantesca cidadela circular em ruínas coletando 36 medalhões. Cada medalhão é uma fatia da chave que abre a última área da cidadela de Taklan, da qual sabe-se somente que é protegida pela Sala da Corrente. Essa 37ª área é o centro de tal cidadela, localizada no topo de uma torre.</p>
<p>Para decifrar os mistérios e solucionar os quebra-cabeças, o jogador pode fazer com que Jonathan corra, se abaixe, escale muros e outras superfícies íngremes, empurre e puxe objetos, atire, se arraste, escorregue, role, lute com seu facão, se pendure em cordas, balance em cipós, nade, mergulhe e até se impulsione com a ajuda de galhos. Os comandos são simples e condicionais: se Jonathan está na águaeles mudam para refletir o novo ambiente em que se encontra. Se estivesse correndo, poderia realizar outras ações.</p>
<p>Taklan possui ambientação geral de um templo asteca, construído em pedra mas já em ruínas, desgastado pelo tempo e pelas plantas que passaram a nascer em sua arquitetura. Dentro de seus muros Jonathan e Bobby encontrarão ambientes variados, incluindo restos de uma vila, um templo em ruínas, uma cripta dentro de uma pirâmide, um lago, rios, cavernas, uma floresta e uma série de passagens subterrâneas.</p>
<p>Tais áreas não são fases isoladas. Ao contrário: fazem parte de um gigantesco mapa livre, como no jogo Banjo Kazooie (Rareware). Será necessário que o explorador volte várias vezes às áreas passadas para continuar explorando-as com cada um dos artefatos especiais que encontrará na cidadela, no melhor estilo The Legend of Zelda (Nintendo). Só assim o jogador conseguirá encontrar todos os segredos ocultos em Taklan. Estes artefatos especiais conferem ao explorador novas habilidades, como aumento de velocidade, resistência a elementos e aumento de força.</p>
<p>Ainda sobre as áreas da cidadela, elas não são temáticas. Ao contrário, obedecem ao mapa da região. Dessa forma, pode ser necessário atravessar 2 ou mais áreas para ter acesso completo à um setor das ruínas, estilo de exploração muito bem utilizado no jogo Super Metroid (Nintendo).</p>
<p>Comparado com Tomb Raider, uma grande mudança de jogabilidade é a parceiria entre Bobby, o cão, e Jonathan, o explorador. Extremamente inteligente, o cão é capaz de entender diversas ordens do homem (diferenciadas pelo tipo de assobio), como pisar em ladrilhos, puxar correntes, farejar ou até atacar inimigos. Em algumas áreas onde o homem é muito grande para se mover, o jogador pode assumir o controle do cão como no jogo Overlord (Codemasters).</p>
<p>A maior dificuldade é que Bobby é um personagem bem diferente de Jonathan e, portanto, possui características bem diferentes de tal. Por várias vezes, o cão é necessário para realizar uma tarefa, mas não consegue chegar onde Jonathan está. Inicialmente, Jonathan pode simplesmente carregar Bobby, mas a dificuldade incremental do jogo faz com que seja necessário criar caminhos para que o eles cheguem aos locais desejados, o que torna os quebra-cabeças muito mais complexos e desafiadores. Enquanto não está sendo ordenado, Bobby seguirá Jonathan por onde ele for.</p>
<p>As ações de Bobby são rosnar para inimigos, farejar, correr, atacar inimigos, puxar coisas pequenas, carregar coisas pequenas, parar em algum lugar, pular e escalar superfícies limitadas (não verticais como as de Jonathan). Bobby também pode nadar na superfície da água e mergulhar por um tempo bem mais curto que Jonathan, normalmente para pegar itens. Vale lembrar que, como acontece com Jonathan,suas ações dependem do ambiente onde se encontra.</p>
<p>Durante toda a aventura, flashes de memória explicam ao jogador o porque da aventura, algumas vezes introduzindo dicas sutis para que ele desvende segredos e adquira artefatos. Alguns destes flashes são interativos, sendo considerados como fases e, portanto, não podendo ser re-explorados. Esses flashes interativos não afetam diretamente a aventura, mas incluem dinamismo no desenrolar da história.</p>
<p>A diversão não acaba com o final do jogo: o jogador pode reiniciá-lo com A Roda em  mãos. Com uma limitada manipulação do tempo em jogo, ele poderá alcançar locais que não conseguiria no jogo normal, alcançando 100% de exploração. Poderá, por exemplo, entrar em uma caverna antes que uma cachoeira a cubra, ou então correr por uma ponte que ele deve derrubar para alcançar uma área nova.<br />
<strong><br />
A Sala da Corrente</strong></p>
<p>A Sala da Corrente é assim chamada por esse nome na 1ª vez que Jonathan a vê e é assim referenciada por várias vezes no jogo. Mais tarde o jogador descobre, num flash, que era assim que as anotações de John falavam sobre ela.</p>
<p>Fica localizada no exato centro matemático de Taklan, numa torre tão alta quanto as muralhas da cidadela. A torre possui uma espécie de labirinto coalhado de armadilhas que protege a sala.</p>
<p>Visualmente possui forma circular e é feita completamente de pedra. Há goteiras em algumas áreas e rachaduras no teto deixam passar a luz do dia. O chão e paredes possuem musgo e alguns cogumelos, mas a característica marcante é a grande corrente que desce do teto e atravessa o chão por um buraco.</p>
<p>Há pilares em toda a extensão das paredes, cada um com uma fenda em forma de fatia de pizza: nesses pilares o jogador deve inserir os medalhões para, só assim, acessar a 37ª área.<br />
<strong><br />
A Música</strong></p>
<p>A trilha sonora de A Roda do Tempo é predominantemente orquestrada, com arranjos que mesclam música indígena e rock. Os vocais são tratados como instrumentos à parte, já que nenhuma das músicas tem letra específica.</p>
<p><strong>Os inimigos<br />
</strong><br />
Os inimigos não são comuns como em outros jogos. Compreendem animais em sua maioria, mas também pode-se encontrar eventuais remanescentes da expedição que Glenn banca que estão dispostos a acabar com você por um pagamento extra.</p>
<p>A ação acontece principalmente nas armadilhas da cidadela, como paredes que se movem ou salas que se inundam. Por vários momentos também é possível batalhar diretamente contra Glenn que, normalmente, está em posições de vantagem estratégica (batalhas clássicas do universo de Resident Evil, da Capcom).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/a-roda-do-tempo-parte-2/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Casos de Uso? Mas hein?</title>
		<link>http://www.nusseagora.blog.br/casos-de-uso-mas-hein</link>
		<comments>http://www.nusseagora.blog.br/casos-de-uso-mas-hein#comments</comments>
		<pubDate>Tue, 11 Dec 2007 11:27:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Análise de Sistemas]]></category>
		<category><![CDATA[Game Design]]></category>
		<category><![CDATA[Gerência de Projetos]]></category>
		<category><![CDATA[UML]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/?p=37</guid>
		<description><![CDATA[Tá, tá, foi vacilo meu, mas é que eu nem me toquei que o termo Casos de Uso pudesse significar interrogações pra vários de vocês. Pra resolver isso, ta aí: uma explicação sobre os Casos de Uso!Esses tais Casos de Uso (CdUs daqui pra frente) não são nada mais que cada uma das diversas interações [...]]]></description>
			<content:encoded><![CDATA[<p style="text-align: justify">Tá, tá, foi vacilo meu, mas é que eu nem me toquei que o termo Casos de Uso pudesse significar interrogações pra vários de vocês. Pra resolver isso, ta aí: uma explicação sobre os Casos de Uso!Esses tais Casos de Uso (CdUs daqui pra frente) não são nada mais que cada uma das diversas interações que o usuário vai ter com o seu programa. Na maioria das vezes, cada tela ou janela diferente significa um CdU diferente, mas como jogos são muito mais complexos, várias vezes tempos diversos CdUs na mesma janela. “Andar com o personagem”, “utilizar magia”, “selecionar alvo”, “pegar item” e “conversar” são diversos CdU que você realiza na mesma tela: a tela de jogo.<span id="more-37"></span></p>
<p>Mas como sempre passo um estudo de caso de exemplo, eu vou escolher o Star Fox 64? O QUÊ?!? VOCÊ NÃO CONHECE O STAR FOX 64?!?!?! Ele é um jogaço de 1997 pro Nintendo 64. Sozinho o jogo já era absurdamente maneiro, mas ficava muito melhor quando você jogava com o Rumble Pack, que tremia o joystick quando você batia ou atravessava uma explosão. Foi um dos melhores na sua época e por isso vou usá-lo, além de ter lembrado dele por qualquer aleatoriedade universal.</p>
<ul>
<li>Descobrindo o jogo:</li>
</ul>
<p>Sempre antes de encontrarmos os CdUs de um programa, precisamos identificar o uso desse programa. Um documento de design do jogo não é muito válido, mas o pessoal do PMBOK pode (E DEVE!) usar a Especificação de Requisitos. Ela é um texto beeeeem parecido com o que eu escrevi aí embaixo pro Star Fox 64</p>
<p>Logo no início do jogo pede-se que você aperte o START para escolher o modo de jogo. Você escolhe um dos diversos modos e confirma novamente. Vamos escolher o modo Main Game, ok? Escolhido seu modo, aparece na tela um Arwing girando e a história do jogo, nada fora do comum. Confirmando de novo, você é jogado na tela do Sistema Solar Lylat, (se não me engano... faz tempo que joguei isso) onde deve-se escolher qual área será seu próximo destino. Caso você tenha mais de um possível destino, pode escolher um deles tranqüilamente. Caso queria refazer a fase anterior, você perderá uma vida.</p>
<p>As fases se dividem em 4 tipos: No Blue-Marine, o submarino, no tanque Landmaster e nas Arwings, as naves, tanto no típico “vai direto pra frente” quanto no “gire por esse lugar até completar a fase”, que eles chamam de all-range mode. O conjunto de ações que você pode realizar depende do tipo de fase, mas normalmente você atira, carrega o tiro teleguiado, lança a bomba, se move, acelera, breca, dá um barrel roll (giro em parafuso) e um loop.</p>
<p>Quando a fase termina, você vê uma tela onde os pilotos conversam e, logo em seguida, o dano das naves de suporte é recuperado baseado na contagem de inimigos que você destruiu na fase. Caso alguma nave tenha sido abatida na fase anterior, ela será recuperada para a próxima.</p>
<p>Com esse basicão aí nós podemos começar a definir alguns dos casos de uso que o Star Fox 64 tem.</p>
<ul>
<li>Descobrindo os CdUs:</li>
</ul>
<p>Já que cada interação é um CdU, vem a hora de definir quais são os nossos CdUs. Lendo o texto, marcamos cada coisa que o usuário pode fazer. Nesse exemplo aí a gente pode tirar:</p>
<p>1. Sair da tela principal<br />
2. Escolher modo de Jogo<br />
3. Cortar introdução<br />
4. Selecionar fase<br />
5. Escolher fase<br />
6. Voltar à fase anterior<br />
7. Atirar<br />
8. Carregar tiro teleguiado<br />
9. Lançar tiro teleguiado<br />
10. Lançar bomba<br />
11. Mover veículo<br />
12. Acelerar<br />
13. Brecar<br />
14. Realizar Barrel Roll<br />
15. Realizar Loop</p>
<p>Nesse curto texto conseguimos identificar 15 interações diferentes, ou seja 15 Casos de Uso diferentes. É importantíssimo deixar claro que, mesmo coisas simples como “acelerar” ou “atirar” não devem ficar por fora da lista: CdU podem ser extremamente simples ou incrivelmente complexos, depende de sua aplicação.</p>
<p>Algumas pessoas trabalham com CdUs extensos, mas eu não gosto de fazer isso. Fica como dica tentar dividir aqueles extremamente complexos em diversos pequenos, como eu fiz na lista. Não há um jogar. Ao invés disso, eu desmembrei ele nas diversas ações que constituem jogar, como Acelerar, Brecar, Atirar e Realizar Loop.</p>
<p>Já com a lista em mãos, precisamos guardar isso tudo de uma forma clara de se entender. É claro que já há uma ferramenta na UML para tal e é dela que vou falar agora. Vamos desenhar isso tudo num Diagrama de Casos de Uso.</p>
<ul>
<li>Desenhando o Diagrama de CdUs (DCU):</li>
</ul>
<p>Um DCU é extremamente simples, porém poderoso. Ele é uma forma infalível de definir o grau de interação com o usuário, o que gera uma maior complexidade na interface. Vale lembrar que a quantidade de CdUs não indica a complexidade lógica de um programa: jogos normalmente possuem uma quantidade de CdU inferior ao número de CdUs, mas de complexidade unitária muito maior.</p>
<p>Para desenhar um DCU, nós jogamos um bonequinho ali que chamamos de ator. É esse ator quem realiza as ações do CdU. Se iniciar sistema é feito só por administrador, temos que ter um ator administrador lá no dagrama. Ah, importante: cada CdU está relacionado com pelo menos um ator, mesmo que indiretamente.</p>
<p>Os CdU são as elipses, cada uma com seu respectivo nome. Todas elas estão dentro do grande retângulo que identifica o escopo do seu sistema: o conjunto de coisas que define tudo aquilo que ele faz e exclui tudo aquilo que ele não irá fazer. No final, nosso DCU fica assim:</p>
<p style="text-align: center"><img src="http://www.brasilvision.com.br/home/tsfrossard/nuss/ArtigoCdU/DCU.jpg" alt="" /></p>
<p>Esse exemplo é bem simples. Podemos ter herança de Casos de Uso, bem como extensão (extends) e inclusão (includes) de casos de uso em outros Casos de Uso (onde a relação fica de CdU para CdU, ao invés de CdU para ator), mas isso já é assunto para um próximo artigo. Até lá!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/casos-de-uso-mas-hein/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Organizando os pensamentos com um Mapa Mental</title>
		<link>http://www.nusseagora.blog.br/organizando-os-pensamentos-com-um-mapa-mental</link>
		<comments>http://www.nusseagora.blog.br/organizando-os-pensamentos-com-um-mapa-mental#comments</comments>
		<pubDate>Sat, 01 Dec 2007 07:23:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Game Design]]></category>
		<category><![CDATA[Gerência de Projetos]]></category>
		<category><![CDATA[Programas Recomendados]]></category>

		<guid isPermaLink="false">http://nusseagora.blog.br/?p=35</guid>
		<description><![CDATA[Sabe quando a gente ta cheio de coisas na cabeça e precisa documentar, mas não sabe por onde começar? Sabe quando a gente tem um brainstorming em mãos e tem que organizar aquilo tudo? Sabe quando queremos mostrar o passo-a-passo de um jogo? Para esse tipo de coisas, vou mostrar-lhes o Diagrama de Mapeamento Mental, [...]]]></description>
			<content:encoded><![CDATA[<p><span style="float: left"> </span></p>
<p style="margin-left: 70pt; text-align: justify">Sabe quando a gente ta cheio de coisas na cabeça e precisa documentar, mas não sabe por onde começar? Sabe quando a gente tem um brainstorming em mãos e tem que organizar aquilo tudo? Sabe quando queremos mostrar o passo-a-passo de um jogo? Para esse tipo de coisas, vou mostrar-lhes o <em>Diagrama de Mapeamento Mental</em>, <em>Mapa Mental</em>, ou <em>Mental Mapping Diagram</em>.    O nome é pomposo, mas o diagrama em si é a coisa mais simples de ser feita, pois não pode atrapalhar seu fluxo de raciocínio: é pensar numa coisa e inserir um nó relativo à ela.</p>
<p style="text-align: justify"><span id="more-35"></span>Mas o importante é saber como fazer um diagrama desse funcionar. Primeiro, escolhemos o assunto a ser mapeado. <em>“Quero mapear os terrenos possíveis para meu RPG, Tiago”</em>. Beleza. Então, para encontrar diferentes terrenos, vamos começar pelo começo:<em> Iniciamos o      modelo com uma Bolha:</em></p>
<p class="MsoNormal" style="text-align: justify">
<p style="text-align: center"><img src="http://www.brasilvision.com.br/home/tsfrossard/nuss/Artigo31/Terrenos-1.jpeg" alt="" /></p>
<p class="MsoNormal" style="text-align: justify">É pela bolha que começaremos a dividir nossos terrenos. Ela vai receber o nome do que a gente quer mapear. Nesse caso, “terrenos”.</p>
<p style="text-align: justify">
<ol>
<li class="MsoNormal"><em>Começamos a organizar nosso pensamento</em></li>
</ol>
<p style="text-align: justify">
<p class="MsoNormal" style="text-align: justify">Eu vou colocar os grandes grupos de terrenos já como filhos, para direcionar mais ainda meus pensamentos desorganizados. O troço inicialmente ta assim, ó:</p>
<p style="text-align: justify">
<p class="MsoNormal" style="text-align: justify">
<p style="text-align: center">
<p class="MsoNormal" style="text-align: justify">
<p style="text-align: center"><img src="http://www.brasilvision.com.br/home/tsfrossard/nuss/Artigo31/Terrenos-2.jpeg" alt="" /></p>
<p class="MsoNormal" style="text-align: justify">
<p style="text-align: justify">
<ol>
<li class="MsoNormal"><em>Hora do Brainstorming</em></li>
</ol>
<p style="text-align: justify">
<p class="MsoNormal" style="margin-left: 18pt; text-align: justify"><em> </em></p>
<p style="text-align: justify">
<p class="MsoNormal" style="text-align: justify">Agora podemos começar a realizar um brainstorming: vamos deixar nossa mente voar em cima desses 4 títulos, anotando ali tudo o que pintar. Não podemos esquecer de adicionar os filhos nos locais certos, afinal, estamos <strong>organizando</strong> nosso pensamento!</p>
<p style="text-align: justify">
<p class="MsoNormal" style="text-align: justify">
<p style="text-align: center">
<p class="MsoNormal" style="text-align: justify">
<p style="text-align: center"><img src="http://www.brasilvision.com.br/home/tsfrossard/nuss/Artigo31/Terrenos-4.jpeg" alt="" /></p>
<p style="text-align: justify">
<p class="MsoNormal" style="text-align: justify">
<p style="text-align: justify">
<p class="MsoNormal" style="text-align: justify"><em>“Vixe! O troço ficou muito maior que o esperado.”</em> Claro! Essa que é a idéia. Enquanto fazíamos o brainstorming, note que apareceram vários outros grupos de terrenos (como <strong>Deserto</strong>, <strong>Polar</strong> e<strong> Cidades</strong>) que não estavam no exemplo inicial. Além disso, conseguimos subdividir alguns desses terrenos em diversos outros terrenos, como aconteceu em <strong>Construções</strong>, em <strong>Cavernas</strong> e <strong>Subaquático</strong>.</p>
<p style="text-align: justify">
<p class="MsoNormal" style="text-align: justify">
<p style="text-align: justify">
<p class="MsoNormal" style="text-align: justify">Ainda faltam MUITOS outros terrenos nesse exemplo, como terrenos v<strong>ulcânicos</strong>,<strong> ilhas</strong> e <strong>cachoeiras</strong>,<strong> </strong>mas a idéia principal eu aposto que vocês já pegaram. Basta lembrar que esse diagrama vai servir pra virtualmente qualquer coisa. O Mário já me disse que leu um artigo sabe-se lá onde ensinando uma técnica para escrever artigos baseada nesse mesmo diagrama (Mário, to esperando pelo link!), enquanto eu já passei pra ele todo o funcionamento do <em>Caso de Uso</em> Batalha no mesmo diagrama.</p>
<p style="text-align: justify">
<p class="MsoNormal" style="text-align: justify">
<p style="text-align: justify">
<p class="MsoNormal" style="text-align: right"><span style="font-size: 85%">Nota: Eu usei o programa FreeMind para fazer esses diagramas. Ele é gratuito e absurdamente fácil de usar. O programa você encontra <a href="http://freemind.sourceforge.net/wiki/index.php/Main_Page">aqui</a>, já o arquivo do exemplo pode ser baixado <a href="http://www.brasilvision.com.br/home/tsfrossard/nuss/Artigo31/Terrenos.mm">aqui</a>.</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.nusseagora.blog.br/organizando-os-pensamentos-com-um-mapa-mental/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

