<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2375290822297479397</id><updated>2012-01-31T01:07:02.751-08:00</updated><category term='painter tool sai'/><category term='musica'/><category term='artwork'/><category term='terror'/><category term='wallpapers'/><category term='ogre'/><category term='storyboard'/><category term='3d'/><category term='sketches'/><category term='tutorial'/><category term='blender'/><category term='personagens'/><category term='mortos-vivos'/><category term='lua'/><category term='animação'/><category term='cenário'/><category term='programação'/><category term='referências'/><category term='homenagem'/><category term='Cibele'/><category term='inteligência artificial'/><category term='notícia'/><category term='fotografia'/><category term='vetorial'/><category term='audio'/><category term='game design'/><category term='Projeto Filho'/><category term='Ruby'/><category term='python'/><category term='action script 3'/><category term='2D'/><category term='32'/><category term='Marketing'/><category term='video'/><category term='infância80'/><category term='java script'/><category term='cg'/><title type='text'>Wild Witch Project</title><subtitle type='html'>Projeto de Game estilo Anime.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default?start-index=101&amp;max-results=100'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>153</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-2063344349136252480</id><published>2012-01-26T18:06:00.000-08:00</published><updated>2012-01-26T18:06:25.550-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='audio'/><title type='text'>Separando áudio parte 1</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.freesound.org/people/jakeharries/sounds/6716/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="252" src="http://3.bp.blogspot.com/-xqbgzsEP-8c/TyIByR63bfI/AAAAAAAAChI/BpTKbOtL_rQ/s640/Captura+de+tela+em+2012-01-26+20:32:43.1.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Hoje separei umas trilhas de áudio para usar em parte do game, um pouco foi inspiração (cutucada) pelo artigo &lt;a href="http://www.rpgvale.com.br/2012/01/game-over-03-soundtrack.html" target="_blank"&gt;Game Over #3&lt;/a&gt; da RPG Vale, escrito pelo &lt;a href="http://www.twitter.com/xthiii" target="_blank"&gt;Thiago&lt;/a&gt;, que trata sobre a trilha sonora de games.&lt;br /&gt;&lt;br /&gt;Comecei por escolher alguns binaurais, muitos conhecem esse tipo de som graças ao &lt;a href="http://www.youtube.com/watch?v=IUDTlvagjJA" target="_blank"&gt;Virtual Barber Shop&lt;/a&gt; (ouça de olhos fechados).&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.freesound.org/people/inchadney/sounds/20204/" imageanchor="1" style="margin-left: 1em; margin-right: 1em;" target="_blank"&gt;&lt;img border="0" height="252" src="http://2.bp.blogspot.com/-FBCVMi69Gtc/TyIBxv_zWAI/AAAAAAAAChA/4WX4cPAguzU/s640/Captura+de+tela+em+2012-01-26+20:32:43.2.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;O site &lt;a href="http://www.freesound.org/"&gt;www.freesound.org&lt;/a&gt; tem ótimos arquivos, bom ainda não sei totalmente se os áudios são realmente free, mas vou tranquilo pois todo arquivo de terceiro é creditado no game, qualquer coisa é só tirar e por a culpa no kra que gravou e pôs lá.&lt;br /&gt;&lt;br /&gt;Tem horas que dá vontade de comprar um microfone binaural pra mim, as vezes se eu entro numa estrada mais deserta por aqui ouço tantos pássaros e até gaviões na estrada... seria algo muito melhor que pegar um áudio de trilha sonora de europeu mas por enquanto vamos no improviso.&lt;br /&gt;&lt;br /&gt;Por último deixo esse video de referência, ele é simplesmente fantástico.&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="474" src="http://www.youtube.com/embed/VYBuUaKyq0s" width="655"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-2063344349136252480?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/2063344349136252480/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=2063344349136252480&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/2063344349136252480'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/2063344349136252480'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2012/01/separando-audio-parte-1.html' title='Separando áudio parte 1'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-xqbgzsEP-8c/TyIByR63bfI/AAAAAAAAChI/BpTKbOtL_rQ/s72-c/Captura+de+tela+em+2012-01-26+20:32:43.1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-4658269109128180600</id><published>2012-01-26T01:30:00.000-08:00</published><updated>2012-01-26T01:30:32.134-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Revisão do instalador para Windows</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-AgSk-MGWMRM/Twn8wO2xPHI/AAAAAAAACfc/MZw6RnnTC4Y/s1600/Captura+de+tela+em+2012-01-08+01%253A37%253A49_3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="380" src="http://1.bp.blogspot.com/-AgSk-MGWMRM/Twn8wO2xPHI/AAAAAAAACfc/MZw6RnnTC4Y/s640/Captura+de+tela+em+2012-01-08+01%253A37%253A49_3.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;O feedback que recebi me deu umas orientações boas. Bom até alguns comentários bizarros apareceram, fazer oque faze de testes é sempre um momento tenso.&lt;br /&gt;Estou contente com a velocidade do feedback. Segue agora um relato do impacto disso tudo.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;O usuário Jëff Leadmann da GameDeve me lembrou do UPX, destinado a aprimorar o empacotamento de softwares ele tem versões para Win, Linux e Mac.&lt;br /&gt;Ele representou uma boa economia no produto final do instalador. tipo comeu 20% do total oque me permitiu passar para um passo mais ousado: incorporar compressão LZMA ao projeto. A imagem abaixo mostra o resultado do produto final com uma economia de 27%.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-LoUbr6bLXNg/TyCoPRX3DHI/AAAAAAAACgg/dfyH0Lw0tbc/s1600/Captura+de+tela+em+2012-01-25+21%253A13%253A11.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="156" src="http://1.bp.blogspot.com/-LoUbr6bLXNg/TyCoPRX3DHI/AAAAAAAACgg/dfyH0Lw0tbc/s640/Captura+de+tela+em+2012-01-25+21%253A13%253A11.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Vírus&lt;/b&gt; &lt;br /&gt;O meu aplicativo em estado bruto também chegou a ser considerado vírus pelo Norton. Provavelmente pelo tamanho pequeno e pela capacidade de acessar a Internet e escrever no disco o mecanismo identificou características de vírus.&lt;br /&gt;Para me assegurar fiz uma verificação extra com o &lt;a href="http://www.clamav.net/lang/pt/about/"&gt;ClanAV&lt;/a&gt; e nada. A maquina virtual que usei para a produção parece estar limpa.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-vf1jASiaGBM/TyCsuDtOMsI/AAAAAAAACgo/Skq9n39jeHI/s1600/Captura+de+tela+em+2012-01-25+23%253A28%253A48.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-vf1jASiaGBM/TyCsuDtOMsI/AAAAAAAACgo/Skq9n39jeHI/s1600/Captura+de+tela+em+2012-01-25+23%253A28%253A48.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Também ando ouvindo relatos do UPX ter sido identificado como vírus! Justamente por alguns usarem ele para compactar seus trojans mau feitos.&lt;br /&gt;&lt;br /&gt;Continuando os feedbacks... &lt;span style="font-size: x-small;"&gt;(cuidado a linguagem agora será quase algorítmica)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Foco da janela e arrastar&lt;/b&gt;&lt;br /&gt;Eu tirei muito código de fóruns e colei no corpo da WindowProcedure, prático e rápido mas pelo visto não respondia a tudo.&lt;br /&gt;Consegui ver o problema na máquina virtual e estou localizando os suspeitos de fazer a janela ficar sempre no topo (não era para isso estar acontecendo) e eliminando por tentativa e erro.&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;table style="border: 1px solid red; width: 100%;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;WindowProcedure&lt;/b&gt;&lt;br /&gt;Aqui que rola a maioria dos pepinos, essa é uma função do tipo "Gigante Guerreiro" que por mais que você subdivida seu fluxo com mais funções ela vai ser extensa e confusa.&lt;br /&gt;Para quem não conhece essa é a função base de uma janela do Windows e nela são tratadas todas as mensagens recebidas do sistema e dela própria. Por exemplo se o mouse passa perto ou se um Pendrive for inserido na USB alguma coisa passa por aqui.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Uma preocupação que parecia desnecessária no inicio foi quanto ao usuário poder arrastar e soltar a janela. Já que o código que tirei dos fóruns fazia isso fiquei despreocupado. No entanto esse código fazia que o usuário arrastasse a janela e ela só aparecesse na posição que ele soltava o mouse.&lt;br /&gt;Mas isso não estava dando uma aparência natural e os usuários começaram a reclamar.&lt;br /&gt;&lt;br /&gt;Agora ignorei o drag and drop natural e criei um novo temporizador dentro da janela que é ativado quando o mouse é pressionado sobre ela. Assim a janela segue o mouse ao arrastar. Ao invés de só aparecer quando você solta o mouse.&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Nota: &lt;/b&gt;o temporizador esta marcado em 30 fps para não sobrecarregar o sistema.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Piscadela nas barras de progresso&lt;/b&gt;&lt;br /&gt;Reclamaram de umas piscadelas nas barras de progresso, achei estranho pois vi algumas no texto e não nelas.&lt;br /&gt;Suspeitei de alguma conta errada na hora de mandar os dados e adicionei umas variáveis extras, antes de mudar o tamanho da barra eu sempre verifico se o tamanho novo é maior que o anterior.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Velocidade das imagens&lt;/b&gt;&lt;br /&gt;O deslizar das imagens também incomodou um pouco pois o pessoal não estava conseguindo ler e apreciar as imagens ao mesmo tempo, então reduzi a velocidade.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Imagens&lt;/b&gt;&lt;br /&gt;Tive também reclamações curiosas, basta lembrar aqui que o estilo base é o mangá. &lt;span style="font-size: xx-small;"&gt;Mesmo que no futuro eu consiga patrocínio para alguma coisa e consiga um desenhista fodão tudo será nesse estilo&lt;/span&gt;&lt;span style="font-size: xx-small;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Finarsmentes&lt;/b&gt;&lt;br /&gt;Por fim troquei o download do Wild.rar por um conjunto de media kit, já tinha gente querendo jogar!&lt;br /&gt;&lt;div style="color: #cc0000;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;i&gt;Calma que o &lt;a href="http://www.wildwitchproject.com/2012/01/primeiro-rascunho-do-roteiro-da-fase.html"&gt;primeiro beta&lt;/a&gt; esta saindo, já estou produzindo o roteiro da fase.&lt;/i&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Coisas legais que descobri&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Outro teste pra reduzir o tamanho, como eu não sei tudo que um compilador faz resolvi fazer assim:&lt;br /&gt;Tirei as definições estáticas como: unsigned char tela[WxHx3]; e troquei por um unsigned char* tela; onde eu crio o buffer na hora de iniciar o programa. O resultado foi NADA! O compilador já é bonitinho ^_^&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Agora o golpe de misericordia: Compressão 7Z (LZMA)&lt;/b&gt;&lt;br /&gt;Fiquei curioso com a economia usando o UPX, e no tempo livre baixei o source do 7Z.&lt;br /&gt;7Z é realmente potente basta olhar a tabela de comparação de resultados:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-ugayXeYePWU/TyC1ZH8rLCI/AAAAAAAACgw/exkcocDmrC0/s1600/tabela7z.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="283" src="http://4.bp.blogspot.com/-ugayXeYePWU/TyC1ZH8rLCI/AAAAAAAACgw/exkcocDmrC0/s640/tabela7z.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;O próprio UPX usa o 7Z, basta que você use --lzma no lugar de -9 na hora de comprimi.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Peguei o exemplo em C puro e desmontei, extraindo o mínimo que eu queria apenas para descompactar as coias e tirei os includes desnecessários. Na verdade dos quase 80 MB só 150KB é onde está o código propriamente dito.&lt;br /&gt;&lt;br /&gt;Aconteceu uma coisa "bizonha" durante a incorporação no instalador, ao compilar o MinGW pirava parava na metade do processo pois perdia a referência aos arquivo principal mas não dava nenhuma mensagem de erro, só warnings!&lt;br /&gt;&lt;br /&gt;Optei pela prática padrão nesses casos: chutei o balde, fui fazer café, coxilar, jogar joguinho... para depois voltar no dia seguinte com a cabeça fresca.&lt;br /&gt;Não achei o motivo, e resolvi apelar para brutalidades: De novo montei uma lib estática.&lt;br /&gt;Funcionou ^^&lt;br /&gt;30Kb a mais que passam a ser 15.3Kb depois do UPX (compressão -9).&lt;br /&gt;&lt;br /&gt;Pronto, era o ultimo elemento que faltava para esse modulo do projeto,&amp;nbsp; e já deixo o extrator 7Z pronto, pois apartir da primaria instalação o usuário conta com updates apartir do próprio jogo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-4658269109128180600?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/4658269109128180600/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=4658269109128180600&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/4658269109128180600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/4658269109128180600'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2012/01/revisao-do-instalador-para-windows.html' title='Revisão do instalador para Windows'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-AgSk-MGWMRM/Twn8wO2xPHI/AAAAAAAACfc/MZw6RnnTC4Y/s72-c/Captura+de+tela+em+2012-01-08+01%253A37%253A49_3.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-3657299957896954741</id><published>2012-01-22T11:25:00.000-08:00</published><updated>2012-01-22T11:25:21.328-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='storyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><title type='text'>Primeiro rascunho do roteiro da fase tutorial</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Xs5UjPpYEc0/TxxiY0ym-GI/AAAAAAAACgY/hy09HZQLyyA/s1600/cibele_apontando_cor.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-Xs5UjPpYEc0/TxxiY0ym-GI/AAAAAAAACgY/hy09HZQLyyA/s1600/cibele_apontando_cor.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Acho que faz tempo que não posto nada humanamente compreencivel aqui no blog.&lt;br /&gt;&lt;br /&gt;A fase tutorial também é uma forma de cativar o jogador apresentando os recursos do jogo de cara. Bom essa tática funcionou em Assasins Creed 1.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;A construção é muito baseada em MMOs com a mesma ideia de graduação.&lt;br /&gt;A história com o necromante não esta muito no padrão que gosto pois é bem "batida", se devo mexer nela ou deixar como está para deixar o jogador num ambiente mais familiar eu ainda não sei.&lt;br /&gt;E acho que devo continuar o trabalho na personagem para deixar ela mais realista.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Notem que a história não é linear, por isso ela aparece mais como um infográfo. Enjoy.&lt;br /&gt;&lt;br /&gt;&lt;img alt="http://imageshack.us/photo/my-images/440/roteirofasetreinamento.jpg/" height="5416" src="http://img440.imageshack.us/img440/802/roteirofasetreinamento.jpg" title="Roteiro da fase tutorial - primeiro esboço" width="603" /&gt;&lt;br /&gt;Uploaded with &lt;a href="http://imageshack.us/" target="_blank"&gt;ImageShack.us&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-3657299957896954741?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/3657299957896954741/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=3657299957896954741&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3657299957896954741'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3657299957896954741'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2012/01/primeiro-rascunho-do-roteiro-da-fase.html' title='Primeiro rascunho do roteiro da fase tutorial'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-Xs5UjPpYEc0/TxxiY0ym-GI/AAAAAAAACgY/hy09HZQLyyA/s72-c/cibele_apontando_cor.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-8302434256945647759</id><published>2012-01-17T16:14:00.000-08:00</published><updated>2012-01-17T16:26:38.600-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notícia'/><title type='text'>No SOPA/PIPA Sim ao progresso</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-f4aiuI0FHZI/TxYEX6QAKzI/AAAAAAAACgM/y2Pi5yMKItM/s1600/sobrave.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-f4aiuI0FHZI/TxYEX6QAKzI/AAAAAAAACgM/y2Pi5yMKItM/s1600/sobrave.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Tá beleza e qual a importância de eu estar publicando isto num blog de poucas visitas, que não está nos Estados Unidos e não influência ninguém?&lt;br /&gt;&lt;br /&gt;Pensei até em contar uma história parábolizando a coisa mas achei melhor ir aos fatos.&lt;br /&gt;Se eles abrirem precedentes por lá logo isso irá servir de base para outros países. E nossos deputados não estão longe disso. Principalemnte influênciados por empresas grandes como Globo, Warner, Sony e CIA.&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;A web é nossa, nossa casa e devemos cuidar bem dela.&lt;br /&gt;Somos nós os usuários que fazemos a web e não empresas, nenhuma IBM, nenhuma Apple, nenhum Google e nenhuma Microsoft e nem mesmo designeres e engenheiros em seus tronos de pedra, mas sim o usuário com seus desejos e necessidades que guiam a ferramenta.&lt;br /&gt;&lt;br /&gt;Então levante seu traseiro e faça alguma coisa, pinte a cara que nem o Mel Gibson e ponha a foto no twitter, mande emails e mensagens em massa para sites que você participa, mande uma caixa de bombons de R$1.99 para seu vereador para ele ver o valor do trabalho dele, sei-lá.&lt;br /&gt;A web é um campo fértil de idéias fluindo e não é bom que algo barre &amp;nbsp;a evolução dela.&lt;br /&gt;&lt;br /&gt;Agora sim parábolizando e explicando a frase inicial desse post:&lt;br /&gt;&lt;i&gt;Se aparecer uma rachadura numa represa logo ela pode aumentar e inundar tudo ao redor, mas se cada um jogar uma pedrinha na frente logo tem-se uma montanha para segurar a água.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;Mais detalhes:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.revista.espiritolivre.org/revista-espirito-livre-adere-ao-sopablackoutbr"&gt;Revista Espirito Livre (descrição bem detalhada)&lt;/a&gt;&lt;br /&gt;&lt;a href="http://softwarelivre.org/portal/nao-ao-totalitarismo-na-internet-no-brasil/18-de-janeiro-tire-seu-site-do-ar-contra-pipa-e-sopa"&gt;Software Livre Brasil&lt;/a&gt;&lt;br /&gt;&lt;a href="http://softwarelivre.org/portal/nao-ao-totalitarismo-na-internet-no-brasil/18-de-janeiro-tire-seu-site-do-ar-contra-pipa-e-sopa"&gt;Forum Uunted (portugal)&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-8302434256945647759?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/8302434256945647759/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=8302434256945647759&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/8302434256945647759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/8302434256945647759'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2012/01/no-sopapipa-sim-ao-progresso.html' title='No SOPA/PIPA Sim ao progresso'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-f4aiuI0FHZI/TxYEX6QAKzI/AAAAAAAACgM/y2Pi5yMKItM/s72-c/sobrave.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-6231252008621707341</id><published>2012-01-08T15:02:00.000-08:00</published><updated>2012-01-17T15:26:09.939-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Projetando a instalação Windows</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-DJiAyMIc5-o/Twn7WaWXIMI/AAAAAAAACe8/lsRE31uZcaQ/s1600/Captura+de+tela+em+2012-01-08+01%253A37%253A49_4.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="380" src="http://2.bp.blogspot.com/-DJiAyMIc5-o/Twn7WaWXIMI/AAAAAAAACe8/lsRE31uZcaQ/s640/Captura+de+tela+em+2012-01-08+01%253A37%253A49_4.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Eu estava estou acompanhando alguns artigos no Ubuntu Games sobre criação de pacotes .deb para instalação e acabei me inspirando/animando para essa etapa.&lt;br /&gt;&lt;br /&gt;Para Windows existe uma outra filosofia já difundida, eu deveria estar pensando em Win8 e um modelo de instalação tipo Android e&amp;nbsp;Linux&amp;nbsp;mas com certeza o modelo de instalador clássico deve se manter por mais alguns anos.&lt;br /&gt;&lt;br /&gt;E como parte do objetivo é brincar de grande Softare House resolvi seguir as leis de Esparta e desenhar meu próprio instalador que ficou com 146 KB !&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-8-m31QVN9bs/Twn8BLkWYNI/AAAAAAAACfE/HTdwOS23gKk/s1600/Captura+de+tela+em+2012-01-08+01%253A37%253A49_2.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="190" src="http://2.bp.blogspot.com/-8-m31QVN9bs/Twn8BLkWYNI/AAAAAAAACfE/HTdwOS23gKk/s320/Captura+de+tela+em+2012-01-08+01%253A37%253A49_2.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Idealizando um usuário final, o instalador devera ser um software simples que baixe os arquivos principais da Internet e ponha eles para rodar.&lt;br /&gt;Obviamente não conto com a credibilidade de uma Blizzard ou DC que podem gerar um instalador de 10MB tranqüilos, assim resolvi criar o aplicativo com o menor tamanho possível.&lt;br /&gt;&lt;br /&gt;Para tentar resolver isso comecei pela questão das imagens e procurei uma biblioteca de tamanho reduzido. E encontrei a &lt;a href="http://keyj.emphy.de/nanojpeg/" target="_blank"&gt;NanoJpeg&lt;/a&gt; um único arquivo adicional com 690 linhas!&lt;br /&gt;Claro que no entanto ela perde um pouco de flexibilidade, por exemplo ela tem dificuldade de carregar imagens tipo "progressiva", a imagem tem que estar obrigatoriamente em 72dpi, ao preparar as imagens tenho q tomar o cuidado de "achatar a imagem" quando trabalho com as mascaras em "Tom de Cinza" e ela falha em alguns formatos por exemplo as barras tem 6 pixels de altura porque com 4 dava algum erro e até o botão de lançar teve que ser feito em 66x64 pixels porque com 64x64 não estava abrindo! Resolvendo esses pepinos por tentativa e erro foi o menor dos empecilhos.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-oqmWM0U9JuQ/Twn8J5j3zQI/AAAAAAAACfM/WTaI3gV7fV0/s1600/Captura+de+tela+em+2012-01-08+01%253A37%253A49.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="500" src="http://4.bp.blogspot.com/-oqmWM0U9JuQ/Twn8J5j3zQI/AAAAAAAACfM/WTaI3gV7fV0/s640/Captura+de+tela+em+2012-01-08+01%253A37%253A49.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Descartei o Visual Studio Express pois apenas em lembrar que precisava baixar as VC Runtime no cliente já saia do orçamento (mas não tentei compilar nele com o código finalizado ainda).&lt;br /&gt;A saída foi o MinGW sem incorporar &amp;nbsp;as bibliotecas iostream (450KB só pra dar um #include &amp;lt;iostream&amp;gt;).&lt;br /&gt;O chato é que estou muito acostumado a usar cout pra debugar e agora tinha que usar printf.&lt;br /&gt;&lt;br /&gt;Após isso o passo seguinte foi procurar uma biblioteca para baixar o arquivo. A CURL naturalmente gerou um executável obsceno, afinal ela dá suporte a tudo que é protocolo usado na Internet desde HTTP até SSH! Tem como compilar ela usando o mínimo de dependências mas começou a dar muita do de cabeça, principalmente no rwindows.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-AgSk-MGWMRM/Twn8wO2xPHI/AAAAAAAACfc/MZw6RnnTC4Y/s1600/Captura+de+tela+em+2012-01-08+01%253A37%253A49_3.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="190" src="http://1.bp.blogspot.com/-AgSk-MGWMRM/Twn8wO2xPHI/AAAAAAAACfc/MZw6RnnTC4Y/s320/Captura+de+tela+em+2012-01-08+01%253A37%253A49_3.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Após uma Googlada mais nervosa achei uma solução dentro do próprio Windows o WinHTTP, uma DLL inclusa no sistema com configurações mínimas mas que "dava pro gasto".&lt;br /&gt;&lt;br /&gt;No entanto a biblioteca da MinGW não tinha um winhttp.h nos includes.&lt;br /&gt;&lt;br /&gt;A primeira "cagada" foi pensar em montar uma LIB no Visual Studio que pudesse ser incluída no CodeBlocks apenas com as chamadas de função básicas.&lt;br /&gt;Dores de cabeça depois até eu ver que em muitos casos os conflitos em se fazer isso eram enormes.&lt;br /&gt;A segunda "cagada" foi montar uma DLL e chamar ela pelo CodeBlocks...&lt;br /&gt;&lt;br /&gt;Fiz as duas até me tocar que uma alternativa secreta que consistia em copiar os cabeçalhos das funções em forma de ponteiros. E usar uma chamada básica da WinAPI para carregar a WinHTTP.DLL e apontar aquelas funções XP&lt;br /&gt;Passado a raiva por não ter pensado nisso procurei as referências e copiei as chamadas.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-v3ezUnWSs4I/TwogewhQlEI/AAAAAAAACgE/wJRAMPNnlzU/s1600/Captura+de+tela+em+2012-01-08+20%253A02%253A28.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="130" src="http://4.bp.blogspot.com/-v3ezUnWSs4I/TwogewhQlEI/AAAAAAAACgE/wJRAMPNnlzU/s640/Captura+de+tela+em+2012-01-08+20%253A02%253A28.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;No final acrescentei 1,5KB ao executável final!!!&lt;br /&gt;&lt;br /&gt;Até aqui o código C (mesmo estando num CPP a coisa é baixaria pura) estava bem zoneado (não que eu esperasse menos desse tipo de projeto) tinha tanta função que a leitura estava pior doque a leitura desse parágrafo.&lt;br /&gt;Ai eu acrescentei funções para "blending de imagem" ("mesclagem" pros phtotoshopescos e GIMPescos) ai fudeu tudo.&lt;br /&gt;&lt;br /&gt;Desenhar o texto informativo foi uma descoberta sinistra, o sistema tem uma "viadagem" para trabalhar com Fontes que me surpreendeu pois estou acostumado a usar bibliotecas como GTK, Swing e WxWidgets para isso.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;O Design&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Por botão no negócio também foi meio complicado, afinal fazer uma interface customizada e usar um botão padrão seria bem feio, criei uma estrutura com os dados do retângulo e faço o calculo manualmente para ver se o mouse esta em cima dele ou não durante o "over" e o "click".&lt;br /&gt;&lt;br /&gt;Também optei por uma alternativa pouco acadêmica: usar &lt;b&gt;UM BOTÃO&lt;/b&gt; na interface. No lugar onde você geralmente fecha a janela ele chama um menu com o primeiro item "Fechar" como as pessoas estão acostumadas e os itens adicionais de controle.&lt;br /&gt;&lt;br /&gt;Alguns detalhes mais divertidos estão por conta das saídas para manter o aplicativo em um único arquivo. No caso da Ajuda que é um arquivo HTML, resolvi usar a opção de incluir o arquivo .html direto no arquivo de resource, assim ele vai embutido no .exe. Na hora de exibir basta ler o resource, salvar em disco e chamar o navegador. Considerando que o usuário pode estar usando o Micro$oft Interner Explorer achei melhor não incluir imagens no documento (o IE não suporta base64 na HTML).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Download&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Você pode escolher uma alternativa abaixo:&lt;br /&gt;&lt;strike&gt;baixador.exe&lt;/strike&gt; (147KB)&lt;br /&gt;&lt;strike&gt;baixarod.zip&lt;/strike&gt; (110KB) - melhor contra firewall&lt;br /&gt;&lt;span style="background-color: #ffd966;"&gt;&lt;b&gt;&lt;span style="color: #990000;"&gt;nota:&lt;/span&gt;&lt;/b&gt; removi os downloads temporariamente, breve disponibilizarei novos ^_~&lt;/span&gt;&lt;br /&gt;Ao executar ele carrega um arquivo no meu DropBox chamado "simplelist" que indica dois arquivos de teste a serem baixados. Um deles é a primeira versão Wild Witch ainda com técnologia arcaica e experimental de 2003!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Dê sua opinião / FeedBack&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Deixei este formulário no Google Docs para que quem teste possa reportar problemas e idéias de melhoria.&lt;br /&gt;Acesse o &lt;a href="https://docs.google.com/spreadsheet/viewform?formkey=dFNkQm8tbHF1LWpRRlE5Y3E0RUM3elE6MQ"&gt;este link&lt;/a&gt; ou use o frame abaixo. Tnks&lt;br /&gt;&lt;iframe frameborder="0" height="300" marginheight="0" marginwidth="0" src="https://docs.google.com/spreadsheet/embeddedform?formkey=dFNkQm8tbHF1LWpRRlE5Y3E0RUM3elE6MQ" width="655"&gt;&amp;amp;amp;lt;p&amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;Carregando...&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;amp;amp;amp;amp;lt;/p&amp;amp;amp;amp;amp;amp;amp;gt;&amp;amp;amp;lt;/p&amp;amp;amp;gt;&lt;/iframe&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Capas&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Imagens rascunho utilizadas nos slides/banners (feitos todos "nas coxa" sem pensar muito)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-1xHrxlpI4QU/TwofeQS9vBI/AAAAAAAACfk/-pgU4Oly8b0/s1600/slide01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="177" src="http://1.bp.blogspot.com/-1xHrxlpI4QU/TwofeQS9vBI/AAAAAAAACfk/-pgU4Oly8b0/s320/slide01.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-KdVvdlcft2w/TwoffDpGu0I/AAAAAAAACf0/oMiim2ne1P4/s1600/slide03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="177" src="http://3.bp.blogspot.com/-KdVvdlcft2w/TwoffDpGu0I/AAAAAAAACf0/oMiim2ne1P4/s320/slide03.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-fY5bblGFs3c/Twofff9lcAI/AAAAAAAACf8/DutTWrQe8g8/s1600/slide04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="177" src="http://2.bp.blogspot.com/-fY5bblGFs3c/Twofff9lcAI/AAAAAAAACf8/DutTWrQe8g8/s320/slide04.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-gnFHXUj_XGg/Twofe-yqpcI/AAAAAAAACfs/-AS9KV0bTSk/s1600/slide02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="177" src="http://1.bp.blogspot.com/-gnFHXUj_XGg/Twofe-yqpcI/AAAAAAAACfs/-AS9KV0bTSk/s320/slide02.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-6231252008621707341?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/6231252008621707341/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=6231252008621707341&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6231252008621707341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6231252008621707341'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2012/01/projetando-instalacao-windows.html' title='Projetando a instalação Windows'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-DJiAyMIc5-o/Twn7WaWXIMI/AAAAAAAACe8/lsRE31uZcaQ/s72-c/Captura+de+tela+em+2012-01-08+01%253A37%253A49_4.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-2323361986721932913</id><published>2012-01-08T09:49:00.000-08:00</published><updated>2012-01-31T01:07:02.755-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wallpapers'/><category scheme='http://www.blogger.com/atom/ns#' term='Cibele'/><category scheme='http://www.blogger.com/atom/ns#' term='2D'/><title type='text'>This is Isparta</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-VJP8wXuTnXs/TyevDe93DoI/AAAAAAAAChQ/ZQoqADUlYk8/s1600/Tux+Spartan.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="466" src="http://4.bp.blogspot.com/-VJP8wXuTnXs/TyevDe93DoI/AAAAAAAAChQ/ZQoqADUlYk8/s640/Tux+Spartan.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Enquanto eu preparava um post eu tive essa ideia na cabeça e achei que seria melhor começar o ano com essa imagem doque falando de programação XP&lt;br /&gt;&lt;br /&gt;Sob efeitos do café rascunhei meu pinguim&lt;strike&gt;&lt;span style="font-size: x-small;"&gt; (totalmente sem lembrar de procurar referências) &lt;/span&gt;&lt;/strike&gt;e aqui esta um Tux Espartano ^^&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Ud-8saQudUE/TwnNYBkxbWI/AAAAAAAACec/hV2Whfzinfg/s1600/Captura+de+tela+em+2012-01-08+09%253A03%253A55.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-Ud-8saQudUE/TwnNYBkxbWI/AAAAAAAACec/hV2Whfzinfg/s640/Captura+de+tela+em+2012-01-08+09%253A03%253A55.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Passo a passo, eu poderia ter feito um video tipo speed paint mas sempre lembro de fazer isso depois que começo, o traço a lápis 2B é a base mesmo usando media digital.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-u9Y34ygA96w/TwnOInai7AI/AAAAAAAACek/VTt8JQEJlP8/s1600/Captura+de+tela+em+2012-01-08+09%253A27%253A13.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-u9Y34ygA96w/TwnOInai7AI/AAAAAAAACek/VTt8JQEJlP8/s640/Captura+de+tela+em+2012-01-08+09%253A27%253A13.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;r&gt;Optei, na verdade tentei, dar um aspecto de arte-final mais grosseiro tipo aqueles de que parecem mais rascunho doque outra coisa.&lt;/r&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-kI-egyF2bQc/TwnOkdeacQI/AAAAAAAACes/Qgq-j0IBLIY/s1600/Captura+de+tela+em+2012-01-08+09%253A45%253A33.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-kI-egyF2bQc/TwnOkdeacQI/AAAAAAAACes/Qgq-j0IBLIY/s640/Captura+de+tela+em+2012-01-08+09%253A45%253A33.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;r&gt;Talvez eu possa colocar nas metas de estudo para esse ano "aprender a pintar". Venho usando a mesma técnica há séculos. Quem sabe se eu estudar alguma coisa nova consiga um resultado melhor de cores.&lt;/r&gt;&lt;br /&gt;&lt;r&gt;Já uma coisa que poderia fazer maior diferencial seria eu tentar praticar para deixar o desenho com um aspecto menos bi-dimensional pois não sinto um bom volume no resultado final, as cores até enganam mas olhando o preto no branco a coisa fica meio chapada.&lt;/r&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-raFZVsuqSPY/TwnPCDd05PI/AAAAAAAACe0/yzjoTWZoKPE/s1600/Captura+de+tela+em+2012-01-08+10%253A31%253A58.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-raFZVsuqSPY/TwnPCDd05PI/AAAAAAAACe0/yzjoTWZoKPE/s640/Captura+de+tela+em+2012-01-08+10%253A31%253A58.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;r&gt;O cenário foi na preguiça mesmo, peguei uns brushes diferentes e rabisquei algo sem muita forma alem de umas montanhas de pedra.&lt;/r&gt;&lt;br /&gt;&lt;r&gt;Depois foi dar pós produção no GIMP.&lt;/r&gt;&lt;br /&gt;&lt;r&gt;&lt;br /&gt;&lt;/r&gt;&lt;br /&gt;TODO: Acertar aquelas pernas do pinguim pois os pinguins não tem penas nas pernas. O Pinguim Imperador até tem uma soberba cobertura mas não em toda a perna.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-2323361986721932913?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/2323361986721932913/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=2323361986721932913&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/2323361986721932913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/2323361986721932913'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2012/01/this-is-isparta.html' title='This is Isparta'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-VJP8wXuTnXs/TyevDe93DoI/AAAAAAAAChQ/ZQoqADUlYk8/s72-c/Tux+Spartan.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-8602350386973662309</id><published>2011-12-26T16:27:00.000-08:00</published><updated>2011-12-26T16:27:59.063-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notícia'/><title type='text'>Feliz 2012 Galera!!!</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-wRsWg6CL0N4/TvkG6lLX-KI/AAAAAAAACd0/3qaXbYjizug/s1600/natal2011.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-wRsWg6CL0N4/TvkG6lLX-KI/AAAAAAAACd0/3qaXbYjizug/s640/natal2011.jpg" width="514" /&gt;&lt;/a&gt;&lt;/div&gt;O Natal passou comemoramos o nascimento de &lt;a href="http://www.youtube.com/watch?v=VsFdK0brGnM" target="_blank"&gt;Inri Cristo&lt;/a&gt; com muito amor e cerveja e este ano quem vai ganhar o presente são vocês que acompanham este projeto desde o primeiro momento que esbarraram com esse blog sem sentido XD&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Balanço de 2011&lt;br /&gt;Estou fechando a parte bruta do sistema e projetando a faze de tutorial (aquela que você joga pra sentir o gostinho do jogo antes do jogo). Para tanto ando lendo e ouvindo bastante o pessoal do grupo de &lt;a href="http://www.facebook.com/groups/rpgbrasil/" target="_blank"&gt;20 anos de rpg brasileiro&lt;/a&gt;, muitas idéias maneiras andam correndo por lá e fora os artigos de game design da &lt;a href="http://www.google.com.br/search?sourceid=chrome&amp;amp;ie=UTF-8&amp;amp;q=rpgvale+game+over" target="_blank"&gt;RPG Vale&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Entrei e fui bem recebido no portal &lt;a href="http://www.ubuntugames.org/social/groups/viewgroup/17-wild-witch-project" target="_blank"&gt;Ubuntu Games&lt;/a&gt; onde devo soltar os primeiros alphas.&lt;br /&gt;&lt;br /&gt;As versões para Windows e Android também devem sair ao mesmo tempo &lt;span style="font-size: xx-small;"&gt;(a única dificuldade no momento é a clássica dor de cabeça de configurar as malditas IDEs, desde Eclipse à Visual Studio todas sempre tem um pauzinho ou outro)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Alguns frutos do projeto eu já disponibilizei no &lt;a href="https://github.com/marcosbitetti" target="_blank"&gt;GitHub&lt;/a&gt;, como o mecanismo de scroll de fundo de página em parallax. Logo devo inserir suporte para swf object e uma versão tipo plugin para Wordpress.&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="363" src="http://www.youtube.com/embed/pRt1ldSPYfw" width="655"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;E em janeiro devo publicar mais 2 projetos OpenSource que já estão prontos faltado apenas documentação, um servidor UDP usando node.js e um projeto de instalador para Windows.&lt;br /&gt;&lt;br /&gt;Também iniciei os testes com uma plataforma de desenvolvimento em cloud da Red Hat chamada &lt;a href="https://openshift.redhat.com/app/" target="_blank"&gt;Open Shift&lt;/a&gt;. Ela tem um apelo interessante: é mais gostosa de usar doque o Google Apps.&lt;br /&gt;&lt;br /&gt;Fora isso os aplicativos para Facebook tanto do &lt;a href="http://www.wildwitchproject.com/" target="_blank"&gt;WWP&lt;/a&gt; quanto da &lt;a href="http://www.rpgvale.com.br/" target="_blank"&gt;RPGVale&lt;/a&gt; estão na reta.&lt;br /&gt;&lt;br /&gt;Também ando de zóio grande no &lt;a href="https://one.ubuntu.com/" target="_blank"&gt;Ubuntu One&lt;/a&gt;, que usa o &lt;a href="http://pt.wikipedia.org/wiki/CouchDB" target="_blank"&gt;CouchDB&lt;/a&gt; como base de dados.&lt;br /&gt;&lt;br /&gt;Espero que com esses dois últimos eu consiga atingir a máxima do GitHub: "Be social"&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-xLCrnyGtV94/TvkOHn1573I/AAAAAAAACeA/U_X_IoverBA/s1600/socialite.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-xLCrnyGtV94/TvkOHn1573I/AAAAAAAACeA/U_X_IoverBA/s640/socialite.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Calma gente, não vai ter nada no jogo que twitte quando você passa de nível, prometo.&lt;br /&gt;&lt;br /&gt;2012 MUITO &lt;a href="http://www.twitter-trends.de/pt/rpgpower.html" target="_blank"&gt;RPG POWER&lt;/a&gt; E LIBERDADE DE &lt;a href="http://br-linux.org/faq-softwarelivre/" target="_blank"&gt;ESCOLHA&lt;/a&gt; E &lt;a href="http://www.embaixadaamericana.org.br/democracia/speech.htm" target="_blank"&gt;EXPRESSÂO&lt;/a&gt; PRA TODOS!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-8602350386973662309?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/8602350386973662309/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=8602350386973662309&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/8602350386973662309'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/8602350386973662309'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/12/feliz-2012-galera.html' title='Feliz 2012 Galera!!!'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-wRsWg6CL0N4/TvkG6lLX-KI/AAAAAAAACd0/3qaXbYjizug/s72-c/natal2011.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-6442309095611956424</id><published>2011-11-19T15:42:00.001-08:00</published><updated>2011-11-19T16:21:45.749-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Ajustes na seleção de objetos</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-2LDzVywdTGc/Tsg_HATDqTI/AAAAAAAACcg/CHk_WTLeKYc/s1600/Captura+de+tela+em+2011-11-19+21%253A24%253A28.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="460" src="http://2.bp.blogspot.com/-2LDzVywdTGc/Tsg_HATDqTI/AAAAAAAACcg/CHk_WTLeKYc/s640/Captura+de+tela+em+2011-11-19+21%253A24%253A28.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Esse sistema que mostra os dados básicos e umas marcas de seleção derão mais trabalho doque parece e se esperava. &lt;br /&gt;Mexer com GUI é mais complicado doque parece! Logo deu para perceber que preciso fazer um casamento melhor entre o 3D e o 2D.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;O primeiro passo é padronizar nos modelos o uso de Emptys para servirem de referência.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-hJTHZt6wAJY/Tsg_uXwqlRI/AAAAAAAACco/celA4Qj_XHk/s1600/Captura+de+tela+em+2011-11-19+07%253A44%253A07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="484" src="http://1.bp.blogspot.com/-hJTHZt6wAJY/Tsg_uXwqlRI/AAAAAAAACco/celA4Qj_XHk/s640/Captura+de+tela+em+2011-11-19+07%253A44%253A07.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Um para ser usado como ponto de seleção e outro acima da cabeça para exibir indicadores (como os ícones de quests nos MMORPG).&lt;br /&gt;&lt;br /&gt;E fiquei um bom tempo trabalhando nas funções de projeção, que me devolvem as coordenadas 2D de tela com base no 3D.&lt;br /&gt;&lt;br /&gt;Nessa sexta a noite trabalhei intensamente na linha indicadora. Ela é um complemento da GUI, você seleciona o objeto e a linha aponta um quadro com detalhes do personagem.&lt;br /&gt;&lt;br /&gt;Ela nada mais é doque uma linha gerada por OpenGL "bruto". Apesar disso eu tive que criar um "White" material para resolver o problema de reinicializar o OpenGL na hora de desenhar a linha.&lt;br /&gt;&lt;br /&gt;Tive que apelar para usar código de desenho de baixo nível, o passo principal foi caçar em fóruns e ver que o melhor jeito é implementar um RenderQueueListenner no sistema.&lt;br /&gt;&lt;br /&gt;O mais chato é que eu conheço bem a OpenGL e todo o conceito erá simples e fácil. Mas dentro do framework tudo ficou mais dificil. Bom, na verdade essa é a função dele: simplificar as coisas complexas mas logiccamente as vezes isso complica as mais simples.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Linhas consomem mais processamento doque simples faces, mas como o numero delas é reduzido acredito que deve o impacto será mínimo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Estranhamente não estou conseguindo renderizar texto pelo overlay padrão da OGRE, é algum problema com o manipulador de recursos.&lt;br /&gt;Mas a Rocket está dando um gás muito bom no processo. Com uma HTML simples deu pra fazer muita coisa.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-rNVe3mXyeYs/TshBlh7ur_I/AAAAAAAACcw/aDZuFRhS5Ok/s1600/Captura+de+tela+em+2011-11-19+21%253A51%253A13.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="358" src="http://3.bp.blogspot.com/-rNVe3mXyeYs/TshBlh7ur_I/AAAAAAAACcw/aDZuFRhS5Ok/s640/Captura+de+tela+em+2011-11-19+21%253A51%253A13.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Esse HTML ainda vai carregar mais algumas seções como a caixa de informação de probabilidade de dano e talvez um indicador de status dizendo como esta o personagem.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Por enquanto os pontos de seleção quando inseridos em cena perdem seu parent (objeto pai), talves eu tenha que fazer a conexão usando o C++, mas ainda não olhei com calma todos os exemplos da GameKit.&lt;br /&gt;O ideal é que eles sejam aparentados com os bones.&lt;br /&gt;&lt;br /&gt;Foi bom eu ter visto estas coisas no inicio, por enquanto o teste esta sendo feito apenas com 2 modelos se tivesse mais prontos teria muito trabalho.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-6442309095611956424?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/6442309095611956424/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=6442309095611956424&amp;isPopup=true' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6442309095611956424'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6442309095611956424'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/11/ajustes-na-selecao-de-objetos.html' title='Ajustes na seleção de objetos'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-2LDzVywdTGc/Tsg_HATDqTI/AAAAAAAACcg/CHk_WTLeKYc/s72-c/Captura+de+tela+em+2011-11-19+21%253A24%253A28.png' height='72' width='72'/><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-8099781911281078311</id><published>2011-11-13T06:49:00.001-08:00</published><updated>2011-12-18T09:41:49.413-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notícia'/><title type='text'>Ubuntu 11.10 opinião de Game Developer</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/--W1BwTHVxew/Tr_ZHfqOk0I/AAAAAAAACaU/flYQyX7BDcU/s1600/Usando+o+Uuntu+11.10.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/--W1BwTHVxew/Tr_ZHfqOk0I/AAAAAAAACaU/flYQyX7BDcU/s640/Usando+o+Uuntu+11.10.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Comecei nesta quarta a usar o novo Ubuntu 11.10. Eu pulei de propósito o 11.04 por ter dificuldade em achar tempo para fazer uma formatação geral no maquinário.&lt;br /&gt;&lt;br /&gt;Como Game Developer eu posso lhes passar a impressão de quem precisa de um sistema operacional que precisa ao mesmo tempo atender necessidades da parte artística e e funcional dos jogos (design e programação).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Caso precisem da opinião de alguém mais conceituado recomendo a &lt;a href="http://blogdodesenhador.blogspot.com/"&gt;divindade brasileira Mozzart Couto&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Na tela acima esta a principal razão de impacto pra quem utiliza um Linux ou mesmo Mac em relação à concorrência. A utilização de vários espaços de trabalho torna o a nossa mente, que em geral é uma zona de ideias contínuas que ocorrem ao mesmo tempo, em um lugar ordenado por secções mais fáceis de manipular.&lt;br /&gt;&lt;br /&gt;No geral eu divido em 4: social, programação, 3D e outros (no caso 2D).&lt;br /&gt;&lt;br /&gt;Também pude retomar os projetos em menos de 1 hora após a formatação, onde para comemorar comecei a &lt;a href="http://www.wildwitchproject.com/2011/11/uma-brasilia-amarela-de-portas-abertas.html"&gt;Brasília Amarela&lt;/a&gt; e mais tarde um &lt;a href="http://issuu.com/bitetti/docs/o_encontro_com_o_preto_veio"&gt;rascunho de cena&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Teve uma hora durante a formatação que fiquei preocupado pois o sistema parou de responder, talvez estivesse baixando alguma coisa da Internet e não apareceu mostradores.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;Vamos ao pós instalação:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;A primeira coisa que me espantou foi ver TODOS as minhas pastas na Área de Trabalho.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Este problema deve ter ocorrido pelo meu processo de formatação, que não é o mais simples mas é muito adequado pra quem não tem condições de fazer um backup de 900GB. O processo é:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;desligar os cabos a HD de dados&lt;/li&gt;&lt;li&gt;formatar/ferrar/zerar e instalar tudo na HD de sistema&lt;/li&gt;&lt;li&gt;reconectar a HD de dados e configurar a /home no arquivo /etc/fstab&lt;/li&gt;&lt;/ol&gt;Mas tudo é facilmente resolvido editando o arquivo:&lt;br /&gt;~/.config/user-dirs.dirs&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Como eu já esperava a Waccon funcionou 100% sem precisar fazer nada, lembro que no 10 eu tive que desliga-la do PC para instalar o sistema.&lt;br /&gt;Na verdade o driver esta tão bom que esta usando TODOS os recursos da tablet sem que eu tivesse que fazer nada.&lt;br /&gt;&lt;br /&gt;O driver da NVidia esta operando normalmente também.&lt;br /&gt;&lt;br /&gt;O plugin do Flash também veio 100% na versão 11, atormentei a galera aqui de casa com a abertura dos Ursinhos Gummy XP&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Uow4JN4P-pA/Tr_ZEv8fDiI/AAAAAAAACaM/pIQukP_-PHc/s1600/Captura+de+tela+em+2011-11-09+17%253A59%253A53.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-Uow4JN4P-pA/Tr_ZEv8fDiI/AAAAAAAACaM/pIQukP_-PHc/s640/Captura+de+tela+em+2011-11-09+17%253A59%253A53.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Em seguida tentei rodar meu jogo, o instalador funcionou legal baixando as 2 unicas dependências que pude identificar até agora e tudo rodou 100%.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1twpO3ClEPs/Tr_haHg5QsI/AAAAAAAACac/RNOhjTGxLrI/s1600/2-5_alpha0_small.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="359" src="http://2.bp.blogspot.com/-1twpO3ClEPs/Tr_haHg5QsI/AAAAAAAACac/RNOhjTGxLrI/s640/2-5_alpha0_small.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Instalar o Blender me deixou cabreiro. Pois não uso a versão dos repositórios, mas sim a versão mais atual e estável. No caso a 2.58.&lt;br /&gt;Só que ao baixar o software ele roda normal, mas não consegui de forma alguma adicionálo à lista do menu do sistema!&lt;br /&gt;&lt;br /&gt;Tive que me contentar em criar um atalho .desktop e coloca-lo na barra lateral. Solução que acho meio porca já que não curto ícones poluindo a tela.&lt;br /&gt;Na comunidade não puderam me dar uma dica de como resolver isso diferente da solução que encontrei. Acho que tem algum banco de dados de aplicações escondido em algum lugar para isso, mas eu encontro mais tarde.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-D3n9-46Kpmc/Tr_jRDhERgI/AAAAAAAACak/kxF23A9D-S8/s1600/Captura+de+tela+em+2011-11-13+13%253A30%253A45.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="467" src="http://1.bp.blogspot.com/-D3n9-46Kpmc/Tr_jRDhERgI/AAAAAAAACak/kxF23A9D-S8/s640/Captura+de+tela+em+2011-11-13+13%253A30%253A45.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="color: #666666;"&gt;Outra coisa não muito boa foi a navegação por pastas.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;Geralmente só digito as primeiras letras do nome da pasta e dou um Enter e na pasta seguinte repito digitando as primeiras letras...&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #666666;"&gt;Só que no novo Ubuntu ele "não" esta apagando o conteúdo da caixa de digitação quando eu entro numa página. Oque esta tornando a navegação por pastas meio lenta (sim, eu sei que o mouse esta do lado mas não tenho a menor paciência para procurar o maldito).&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;UPDATE&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color: red;"&gt;&lt;b&gt;Após uma correção do sistema esse problema foi resolvido.&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;Central de Programas&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-p0xD7o8HIwY/Tr_lOLQU7UI/AAAAAAAACas/hmZQN4VPeXk/s1600/Captura+de+tela+em+2011-11-13+13%253A40%253A21.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="442" src="http://2.bp.blogspot.com/-p0xD7o8HIwY/Tr_lOLQU7UI/AAAAAAAACas/hmZQN4VPeXk/s640/Captura+de+tela+em+2011-11-13+13%253A40%253A21.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Muito boa, todos os programas estavam lá.&lt;br /&gt;Na hora de instalar ela mostra recomendações de adicionais, plugins e etc. Bem como opiniões de outros usuários. &lt;br /&gt;Os downloads ocorrem rápido e você pode continuar usando a Central enquanto a instalação de um aplicativo ocorre. &lt;br /&gt;E não difere muito do Synaptic. No entanto instalei o Synaptic para tarefas mais "espartanas" como localizar dependências especificas. Mas isso foi nos primeiros momentos e já faz dias que não recorro a ele.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;Multimedia&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;O Banshee, player padrão de musicas, deu umas travadas violentas no inicio. Mas agora parou. Suspeito de algum problema com o gstreamer talvez durante o mapeamento de minhas coleções, são 50 MB acho.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;Rede&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Umilha as versões anteriores do Ubunto pela simplicidade. Eu estava preocupado em fazer ajustes manuais usando o VIM, mas basta clicar com o direito no ícone de rede e você resolve tudo ali.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;Ubuntu One e Dropbox&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Comecei a usar agora o Ubuntu One, obviamente irei criar uns links para as pastas do DropBox. Isso é outro fator que faz você amar o sistema, clicar com o direito e escolher "criar link" e cola-lo em qualquer lugar e deixar de se preocupar com onde os arquivos estão é muito bom para projetos complexos.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;Escritório&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Estou com preguiça de clicar nos ícones do OpenOffice... já entrei usando o Acrobat da Adobe e o Docs do Google.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;Preparar para desenvolvimento&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Aqui não muda nada. Apenas nas minhas posturas pessoais porque dessa vez baixei o Eclipse completo e não apenas o CDT. Afinal vou portar isso para o Android.&lt;br /&gt;&lt;br /&gt;O Eclipse mostrou alguns bugzinhos ao se integrar com o Unity do Ubuntu na hora que você precisa de uma barra de rolagem. Nada que o scroll do mouse não resolva.&lt;br /&gt;&lt;br /&gt;Aqui também você tem que usar um pouco o terminal. Apesar de eu ser um absoluto desencorajador do uso do terminal ele é meio necessário ao desenvolvimento.&lt;br /&gt;(sim acho que ficar exigindo e estimulando o terminal é coisa de usuário Linux que quer que usuário comum use Linux mas não dá a o outro a liberdade de usar o sistema como ele quer usar).&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;Preparando para a parte artística&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Como todos os documentos que trabalho estão em "cloud" não mudou nada na hora de escrever roteiros e ideias, qualquer sistema operacional meia-boca resolve.&lt;br /&gt;&lt;br /&gt;Quanto aos softwares gráficos faltou alguns como Hugin, Pitivi, WinFF, Synfig Studio, Scribus, GIMP, MyPaint, Audacity, etc. Bom, Central de Programas e pronto.&lt;br /&gt;&lt;br /&gt;Geralmente uso o Ubuntu Studio que vem com a maioria mas dessa vez resolvi experimentar uma versão mais&amp;nbsp; normal para ver se evita conflitos de bibliotecas.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: x-large;"&gt;Conclusão&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;É um ambiente com algumas mudanças mas o básico e primordial ainda esta lá. Resta me acostumar às mudanças já que elas são inevitáveis.&lt;br /&gt;&lt;br /&gt;O Ubuntu é um sistema que me ajudou a entrar na "Nuvem" e me deu mais contato com um mundo onde tudo é em rede. Esta foi a principal razão pela escolha dele, ele não tem uma liberdade apenas de escolha, mas uma liberdade de comportamento. E indo a fundo uma oportunidade de aprender como a realidade funciona dentro de um ambiente de rede, para quem vive e trabalha com Internet é talvez a melhor escolha.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-8099781911281078311?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/8099781911281078311/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=8099781911281078311&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/8099781911281078311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/8099781911281078311'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/11/ubuntu-1110-opiniao-de-game-developer.html' title='Ubuntu 11.10 opinião de Game Developer'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/--W1BwTHVxew/Tr_ZHfqOk0I/AAAAAAAACaU/flYQyX7BDcU/s72-c/Usando+o+Uuntu+11.10.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-809338615826185808</id><published>2011-11-13T03:41:00.000-08:00</published><updated>2011-11-15T11:19:49.345-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='storyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='personagens'/><title type='text'>O Preto Velho</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-DGhFejx10FA/TsK1sG5A8DI/AAAAAAAACbo/cgH9vbE_GJ8/s1600/Captura+de+tela+em+2011-11-15+09%253A52%253A29.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="404" src="http://2.bp.blogspot.com/-DGhFejx10FA/TsK1sG5A8DI/AAAAAAAACbo/cgH9vbE_GJ8/s640/Captura+de+tela+em+2011-11-15+09%253A52%253A29.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;U&lt;/i&gt;&lt;i&gt;m velho ermitão com sua roupa rasgada e carcomida pelos longos anos, fumando constantemente um cachimbo, um sorriso "amarelo" nos lábios e um casco de tartaruga amarrado às costas.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Sua aparição sempre causa temor. Dizem que ele é um guardião das matas outros que é um espírito que foi enclausurado no mato.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;O fato é que ele conhece muitos segredos do mato e das artes marciais.&lt;/i&gt;&lt;br /&gt;&lt;i&gt;Os que ousaram descobrir seus segredos nunca mais voltaram, mas as vezes ele é solidário com quem lhe dá agrados em busca de ajuda.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;DETALHE: Essa é a primeira vez que mostro um personagem do concept ao game XD&lt;br /&gt;&lt;div&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="f01f8f70-4732-7f60-8150-29b9b494cab4" style="height: 465px; width: 655px;"&gt;&lt;param name="movie" value="http://static.issuu.com/webembed/viewers/style1/v2/IssuuReader.swf?mode=mini&amp;amp;backgroundColor=%23222222&amp;amp;documentId=111113103736-62cdf3e679304e8c870a0b092568c07c" /&gt;&lt;param name="allowfullscreen" value="true"/&gt;&lt;param name="menu" value="false"/&gt;&lt;param name="wmode" value="transparent"/&gt;&lt;embed src="http://static.issuu.com/webembed/viewers/style1/v2/IssuuReader.swf" type="application/x-shockwave-flash" allowfullscreen="true" menu="false" wmode="transparent" style="width:655px;height:465px" flashvars="mode=mini&amp;amp;backgroundColor=%23222222&amp;amp;documentId=111113103736-62cdf3e679304e8c870a0b092568c07c" /&gt;&lt;/object&gt;&lt;/div&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;É uma suave mistura de uma entidade chamada de Preto Velho com o a imagem do velho tarado dos animes. Mais cliché simbolizando a ponte Brasil Japão impossível.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-d9kQxw3RQs4/TsK146Wk98I/AAAAAAAACcI/6lAWhqudLgs/s1600/Captura+de+tela+em+2011-11-15+13%253A18%253A55.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-d9kQxw3RQs4/TsK146Wk98I/AAAAAAAACcI/6lAWhqudLgs/s640/Captura+de+tela+em+2011-11-15+13%253A18%253A55.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;Modelagem&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Finalmente boas noticias, o acumulo de material esta rendendo ^_^&lt;br /&gt;Apenas peguei a malha do &lt;a href="http://www.wildwitchproject.com/2011/02/o-homem-da-roupa-velha.html" target="_blank"&gt;Seu MacGayver&lt;/a&gt; e modifiquei alguns detalhes, como o rosto e a barriguinha saliente de verminose e os dedos nos pés descalços.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-FFz1__CLRwc/TsK11xZMUjI/AAAAAAAACb4/yyotOooO-hY/s1600/Captura+de+tela+em+2011-11-14+08%253A26%253A13.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-FFz1__CLRwc/TsK11xZMUjI/AAAAAAAACb4/yyotOooO-hY/s640/Captura+de+tela+em+2011-11-14+08%253A26%253A13.jpg" width="446" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;E também estou pegando a mãnha de fazer o sculpt para o normalmap. Um pouco mais de exagero no relevo dá uma impressão mais evidente.&lt;br /&gt;A vantagem dos NPCs inimigos é essa, você não precisa se preocupar muito com a beleza e acaba aprendendo mais com a liberdade de experimentação.&lt;br /&gt;E no final eu achei que meu Preto Velho ficou muito bonitinho.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-qLsWiPaJzPE/TsK13EVLzWI/AAAAAAAACcA/Ol0lhBhpGPE/s1600/Captura+de+tela+em+2011-11-14+22%253A06%253A37.jpg" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-qLsWiPaJzPE/TsK13EVLzWI/AAAAAAAACcA/Ol0lhBhpGPE/s640/Captura+de+tela+em+2011-11-14+22%253A06%253A37.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;As cores também, ao invés de fazer o bake do occlusion map pelo Blender, pintei algumas sombras de volume na mão mesmo. Além de outros retoques de luz e sombra nas cores.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-SnH7BjXfIlI/TsK11B5LK6I/AAAAAAAACbw/8hGjc18WaVw/s1600/Captura+de+tela+em+2011-11-14+07%253A11%253A48.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="434" src="http://3.bp.blogspot.com/-SnH7BjXfIlI/TsK11B5LK6I/AAAAAAAACbw/8hGjc18WaVw/s640/Captura+de+tela+em+2011-11-14+07%253A11%253A48.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Ao modelar o cachimbo revi os storyboards. O close no Velho é sempre feito de um ângulo baixo. Além dele ser mais alto doque a personagem tem sempre a questão de passar uma atmosfera de superioridade do inimigo.&lt;br /&gt;Assim eu vi que não precisaria detalhar a parte interior do cachimbo, a textura se encarrega disso e economizo muitos polígonos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Estou mais esperto de onde trocar os materiais, assim preparo melhor as texturas com transparência.&lt;br /&gt;&lt;br /&gt;O resultado jogado na engine com toon shader ficou ótimo.&lt;br /&gt;&lt;br /&gt;Também descobri que meu shader não tem suporte à transparência. Coisa aparentemente fácil de resolver já que pegar o alpha da textura é:&lt;br /&gt;No Fragent Program (GLSL):&lt;br /&gt;&lt;div style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;float alpha = texture2D(diffmap, gl_TexCoord[0].st).a;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;E no material adiciono ao pass:&lt;br /&gt;&lt;div style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&lt;span style="font-size: x-small;"&gt;scene_blend src_alpha one_minus_src_alpha&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Me atrasou bastante a parte do pass, pois não estava conseguindo a dica de como pegar a cor de fundo de cena pela GLSL, geralmente uso a Internet... mas minha Speedy tem o valor de um punhado de &lt;a href="http://pt.wikipedia.org/wiki/Casseta_%26_Planeta" target="_blank"&gt;"substrato de pó de bosta"&lt;/a&gt; e eu fiquei 2 dias sem nada. Geralmente isso ocorre 2 vezes por mês.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-809338615826185808?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/809338615826185808/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=809338615826185808&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/809338615826185808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/809338615826185808'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/11/o-preto-velho.html' title='O Preto Velho'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-DGhFejx10FA/TsK1sG5A8DI/AAAAAAAACbo/cgH9vbE_GJ8/s72-c/Captura+de+tela+em+2011-11-15+09%253A52%253A29.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-6052025882976807801</id><published>2011-11-12T03:22:00.001-08:00</published><updated>2011-11-12T06:23:52.952-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='referências'/><category scheme='http://www.blogger.com/atom/ns#' term='blender'/><title type='text'>Uma Brasilia Amarela de portas abertas</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-sBFZwAgnvzY/Tr5kHOhgdHI/AAAAAAAACZo/rhKRaYb_Bnw/s1600/Captura+de+tela+em+2011-11-12+10%253A08%253A23.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="378" src="http://3.bp.blogspot.com/-sBFZwAgnvzY/Tr5kHOhgdHI/AAAAAAAACZo/rhKRaYb_Bnw/s640/Captura+de+tela+em+2011-11-12+10%253A08%253A23.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Clássicos imortais as vezes se criam instantaneamente como em uma explosão.&lt;br /&gt;Foi o que aconteceu com a Brasília Amarela que se mesclou como imagem e mitologia urbana de uma geração e se depender da divulgação estará presente nas próximas gerações.&lt;br /&gt;E a figura do carro de povão chega na forma mais homérica possível, através de uma canção da banda mais carismática de todos os tempos.&lt;br /&gt;&lt;br /&gt;Lembro bem que vi eles no Faustão, na época meu pai ainda era vivo e na hora eu pensei: -Pow, o veio vai começar a reclamar no meio da musica por causa da zueira deles... acabou o quadro e me surpreendi que ele também tinha curtido e olha que entre ele e eu havia 30 anos de cultura de distância.&lt;br /&gt;&lt;br /&gt;Sem ter como explicar já que fenomenos apenas acontecem &lt;span style="font-size: xx-small;"&gt;(a ciência sabe os seus aspectos, mas não os porquês a ponto de cria-los em laboratório)&lt;/span&gt; só posso deixar um exemplo da obra.&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="477" src="http://www.youtube.com/embed/rmMj8UC5Mig" width="660"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Em alguns momentos a fase vai exigir alguns veículos, alguns já estão prontos como o &lt;a href="http://www.wildwitchproject.com/2009/04/correcoes-e-mais-objetos.html"&gt;cavalinho de pau e o pogo-ball&lt;/a&gt; ou o &lt;a href="http://www.wildwitchproject.com/2009/04/mais-veiculos.html"&gt;patinete e a mobilete&lt;/a&gt;, outros preciso terminar como a barata mágica...&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;(trata-se de uma cena em que Cibele tem que subir nas costas de um deus-dragão e portanto precisa de uma montaria alada e de preferência magica. Discussões sobre o fato de uma barata ser ou não ser a melhor espécie para este fim estão doravante sumariamente ignoradas)&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-4tAoxKITTAk/Tr5qTB6sQyI/AAAAAAAACZw/0hWm4x3_BLA/s1600/Captura+de+tela+em+2011-11-10+19%253A03%253A43.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-4tAoxKITTAk/Tr5qTB6sQyI/AAAAAAAACZw/0hWm4x3_BLA/s640/Captura+de+tela+em+2011-11-10+19%253A03%253A43.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Eu consegui um blue-print da base do modelo num &lt;a href="http://www.smcars.net/forums/wip-critique-video-game-real-time/28914-1980-volkswagen-brasilia-ls.html"&gt;fórum&lt;/a&gt; e à partir dele estou revendo fotos de referência da Internet. Não quero nada "tunado" estou fazendo uma com aspecto de carrão velho mesmo.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-pg1oGflm9EA/Tr51HmBm0WI/AAAAAAAACZ4/q5CqBVXcTIk/s1600/Captura+de+tela+em+2011-11-12+11%253A23%253A45.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="278" src="http://2.bp.blogspot.com/-pg1oGflm9EA/Tr51HmBm0WI/AAAAAAAACZ4/q5CqBVXcTIk/s640/Captura+de+tela+em+2011-11-12+11%253A23%253A45.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Ao aplicar uma textura reflexiva no Blender o resultado foi meio desanimador, mas eu quero ver o que acontece assim que testar dentro da engine.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-pMSlU6umZmo/Tr51ltxTJ3I/AAAAAAAACaE/EnXk0aCB8us/s1600/Captura+de+tela+em+2011-11-11+21%253A11%253A28.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-pMSlU6umZmo/Tr51ltxTJ3I/AAAAAAAACaE/EnXk0aCB8us/s1600/Captura+de+tela+em+2011-11-11+21%253A11%253A28.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;O uso dos materiais esta me dando um certo trabalho devido aos nomes terem um limite de caracteres. Ai eu optei por deixar alguns materiais com descrição coerente apenas como comentário nos arquivos .material.&lt;br /&gt;&lt;br /&gt;Uma coisa que tem ocorrido direto na GameKit é ela dar "crash" quando encontra um nome de objeto já em uso, então estou em busca de um padrão para nomes de objetos, bones e materiais para tentar evitar esse problema.&lt;br /&gt;&lt;br /&gt;Ainda estou decidindo se faço realmente o interior da Brasilia ou deixo os vidros sem transparência mesmo... vou jogar alguns jogos de corrida pra tirar ideias.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: x-large;"&gt;&lt;b&gt;Links e referências:&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.mamonascoversomrisal.com.br/"&gt;Mamonas Assassinas Cover&lt;/a&gt; (show os vídeos)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-6052025882976807801?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/6052025882976807801/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=6052025882976807801&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6052025882976807801'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6052025882976807801'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/11/uma-brasilia-amarela-de-portas-abertas.html' title='Uma Brasilia Amarela de portas abertas'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-sBFZwAgnvzY/Tr5kHOhgdHI/AAAAAAAACZo/rhKRaYb_Bnw/s72-c/Captura+de+tela+em+2011-11-12+10%253A08%253A23.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-5695871755313906450</id><published>2011-11-08T09:50:00.000-08:00</published><updated>2011-11-08T09:51:01.289-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='cg'/><category scheme='http://www.blogger.com/atom/ns#' term='blender'/><title type='text'>Skyboxe em produção</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-9s3q-mAor3g/TrlnmD7VgAI/AAAAAAAACZY/R3JGa3VoX8M/s1600/Captura_de_tela-507.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-9s3q-mAor3g/TrlnmD7VgAI/AAAAAAAACZY/R3JGa3VoX8M/s640/Captura_de_tela-507.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;A parte mais chata antes de você começar a espalhar nuvens e rezar para ficar bonito na foto é configurar o material da nuvem.&lt;br /&gt;Simplesmente há dezenas de possibilidades e combinações. Não apenas a nuvem em si, que é um render volumétrico de uma malha distorcida, mas &amp;nbsp;a luz, a atmosfera e o céu tem que ser setados. Tudo é feito na base do "testômetro".&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-u7wqHplQ0Mc/Trlnk9QU_wI/AAAAAAAACZQ/bwx26Rh6ZYw/s1600/Captura_de_tela-508.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-u7wqHplQ0Mc/Trlnk9QU_wI/AAAAAAAACZQ/bwx26Rh6ZYw/s640/Captura_de_tela-508.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;E para piorar o render é bem lento. Antes de começar é feito algum calculo que limita o programa a um núcleo do processador apenas.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Montagem do SkyBox&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;No meio do processo achei um macete, configurei a camera com uma abertura de 90° e posicionei ela no meio da cena.&lt;br /&gt;Inseri 6 quadro-chaves, cada um com a camera rotacionada para o angulo da SkyBox a ser renderizado.&lt;br /&gt;Na hora de render é só clicar em "Animation" e pronto, o Blender já salva os 6 arquivos para a textura do SkyBox.&lt;br /&gt;Na OGRE fica assim:&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;b&gt;texture_unit&lt;br /&gt;  {&lt;br /&gt;      cubic_texture 0001.jpg 0002.jpg 0003.jpg 0004.jpg 0005.jpg 0006.jpg separateUV&lt;br /&gt;     tex_address_mode clamp&lt;br /&gt;}&lt;/b&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;Deixei a base da camera na seção de &lt;a href="http://www.wildwitchproject.com/p/downloads.html"&gt;downloads&lt;/a&gt; do blog. Enjoy ;P&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Bases&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Parti de um &lt;a href="http://www.blenderguru.com/create-volumetric-clouds"&gt;tutorial bem realista do Blender Guru&lt;/a&gt; e depois fui modificando o material para combinar com os shaders do jogo.&lt;br /&gt;As pequenas nuvens ainda "dão um pau" estranho em alguns pontos, talvez as faces estejam transpassando-se e desordenando as normais.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-L4iokNywTL4/Trlqpmef50I/AAAAAAAACZg/shbjoS0u1s0/s1600/cloudworld-1024-e1271409325571.jpeg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="344" src="http://4.bp.blogspot.com/-L4iokNywTL4/Trlqpmef50I/AAAAAAAACZg/shbjoS0u1s0/s640/cloudworld-1024-e1271409325571.jpeg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;O Blender também tem um &lt;a href="http://www.blendernation.com/2010/04/16/cloud-generator-script-for-blender-2-5/"&gt;script que ajuda a construir nuvens&lt;/a&gt;, criado durante a produção do Big Buck Buny. Foi portado para o 2.5 mas ainda não experimentei, no entanto ele parece promissor.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-5695871755313906450?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/5695871755313906450/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=5695871755313906450&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/5695871755313906450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/5695871755313906450'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/11/skyboxe-em-producao.html' title='Skyboxe em produção'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-9s3q-mAor3g/TrlnmD7VgAI/AAAAAAAACZY/R3JGa3VoX8M/s72-c/Captura_de_tela-507.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-3249660625129992544</id><published>2011-11-04T18:23:00.000-07:00</published><updated>2011-11-04T18:23:32.313-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>HUD marca de seleção animada</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-BYCm2WLwzFs/TrSKkCdu4vI/AAAAAAAACYs/5dtEFN8YsvY/s1600/Captura_de_tela-501.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="444" src="http://1.bp.blogspot.com/-BYCm2WLwzFs/TrSKkCdu4vI/AAAAAAAACYs/5dtEFN8YsvY/s640/Captura_de_tela-501.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Parece bobagem mas essa marca de seleção deu muito mais trabalho doque parecia que ia dar.&lt;br /&gt;Rebater as coordenadas 3D na tela foi fácil, ao invés de pensar peguei uma base no Google.&lt;br /&gt;&lt;br /&gt;Problem na GameKit...&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Além de não ter métodos de controle para os Overlays (o circulo verde) perdi um bom tempo até descobrir alguma espécie de falha quando precisava localizar um objeto em cena!&lt;br /&gt;Funciona assim o Seu McGeiver aparece automaticamente com o nome de roupavelha/UID{11} e ao procurar por esse nome para usar os métodos da OGRE como getBoundBox ele simplesmente falha!&lt;br /&gt;&lt;br /&gt;Respirei emputecido, e simplesmente implementei um WWP.get(nome) que localiza pela OGRE o objeto e retorna uma variável do tipo userdata.&lt;br /&gt;Acabou que ficou bem mais prático já que isso evita que eu fique correndo a cena atrás de um nome, a referência direta ao objeto fica armazenada no objeto Char.&lt;br /&gt;Em cenas com milhares de objetos isso será um alivio.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-A1H5xQO0BWg/TrSKjHBYWuI/AAAAAAAACYk/Wc4-4Xef0tM/s1600/Captura_de_tela-500.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="444" src="http://1.bp.blogspot.com/-A1H5xQO0BWg/TrSKjHBYWuI/AAAAAAAACYk/Wc4-4Xef0tM/s640/Captura_de_tela-500.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Depois foi simples, agora posso pegar a boundbox do personagem e calcular a escala para a seleção 3D, esses raios em circulo em volta do personagem, de forma que eles envolvam o personagem selecionado.&lt;br /&gt;&lt;br /&gt;Fiquei bem extressado com esses emperramentos, apesar de que em todo trabalho de informática esses imprevistos são bastante comuns.&lt;br /&gt;&lt;br /&gt;Falta agora rebater a marca de seleção no minimapa, mas isso é fácil, além de serem coordenadas 2D não tem necessidade de usar matrizes nesse calculo.&lt;br /&gt;&lt;br /&gt;Peguei uma referência bem legal com esse video&lt;iframe allowfullscreen="" frameborder="0" height="477" src="http://www.youtube.com/embed/I2d312_dXEs" width="660"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-3249660625129992544?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/3249660625129992544/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=3249660625129992544&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3249660625129992544'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3249660625129992544'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/11/hud-marca-de-selecao-animada.html' title='HUD marca de seleção animada'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-BYCm2WLwzFs/TrSKkCdu4vI/AAAAAAAACYs/5dtEFN8YsvY/s72-c/Captura_de_tela-501.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-666771176746776057</id><published>2011-11-04T03:23:00.000-07:00</published><updated>2011-11-04T03:32:01.945-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><title type='text'>Fazendo ficha de personagem</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-C7dBR3kGk3g/TrO4C4mtAlI/AAAAAAAACYU/sy-uuMy7Utw/s1600/Captura_de_tela-495.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="430" src="http://4.bp.blogspot.com/-C7dBR3kGk3g/TrO4C4mtAlI/AAAAAAAACYU/sy-uuMy7Utw/s640/Captura_de_tela-495.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Comecei a preparar a ideia da ficha para monitorar o personagem, esta ficha irá servir para qualquer personagem. É a ficha de detalhes comentada no &lt;a href="http://www.wildwitchproject.com/2011/10/arte-e-magia-estudando-conceitos-para-o.html"&gt;post anterior&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Totalmente baseada no sistema Daemon, eu apresento ainda alguns elementos simplificados.&lt;br /&gt;Além da pontuação normal onde eu destaquei como mais fundamental para o jogo o PV (pontos de vida) e PM (pontos de magia), abaixo temos o circulo mostrando os caminhos da magia do personagem, um botão para o inventário e outro para as armas em mãos.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;iframe allowfullscreen="" frameborder="0" height="365" src="http://www.youtube.com/embed/NtpH9I2xQhg" width="660"&gt;&lt;/iframe&gt;&lt;br /&gt;O fundo é baseado no &lt;a href="http://www.wildwitchproject.com/2008/12/book-is-on-blender.html"&gt;speelbook que criei logo no comecinho do projeto&lt;/a&gt;. Ele ficou bem simpático e para aproveita-lo eu descaradamente fiz a ficha sem fundo e o livro irá aparecer em cena centralizado na &amp;nbsp;cena. Quando o dispositivo não permitir isso usarei uma simples imagem de fundo.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Yl5m2nOa9yc/TrO4BzvQ2_I/AAAAAAAACYM/aoLm7t9aAng/s1600/Captura_de_tela-497.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="474" src="http://2.bp.blogspot.com/-Yl5m2nOa9yc/TrO4BzvQ2_I/AAAAAAAACYM/aoLm7t9aAng/s640/Captura_de_tela-497.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Com o layout no Inkscape parti para codificar o HTML, o Bluegriffon me da uma interface bonitinha de arrastar e soltar divs, bem como uma boa aba de configuração. O legal é que o código HTML ficou bem enxuto bastando copiar e colar no .blend.&lt;br /&gt;&lt;br /&gt;A quem interesar &lt;a href="http://pastebin.com/DRrbCwsR"&gt;deixei aqui o código HTML&lt;/a&gt; usado nesta tela.&lt;br /&gt;&lt;br /&gt;Deixei umas marcações em {nomeVariavel} isso servira para localizar as variáveis dentro do template e subistituilas por objetos mais complexos, talvez usando o recurso de customização de TAGs da LibRocket.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-gi0ACJbgZYs/TrO4DXiu8jI/AAAAAAAACYc/6zUnbaTwUWQ/s1600/Captura_de_tela-499.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="348" src="http://1.bp.blogspot.com/-gi0ACJbgZYs/TrO4DXiu8jI/AAAAAAAACYc/6zUnbaTwUWQ/s400/Captura_de_tela-499.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;O resultado em cina ficou bem empolgante resta incorporar o spellbook.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-666771176746776057?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/666771176746776057/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=666771176746776057&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/666771176746776057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/666771176746776057'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/11/fazendo-ficha-de-personagem.html' title='Fazendo ficha de personagem'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-C7dBR3kGk3g/TrO4C4mtAlI/AAAAAAAACYU/sy-uuMy7Utw/s72-c/Captura_de_tela-495.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-3992585111299133060</id><published>2011-11-01T07:01:00.000-07:00</published><updated>2011-11-01T07:02:03.177-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='cg'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><title type='text'>Implementando materiais com shaders</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-5Hp_LAQLzzI/Tq_2j8VkG2I/AAAAAAAACX8/WorKqDkZjug/s1600/Captura_de_tela-490.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="610" src="http://4.bp.blogspot.com/-5Hp_LAQLzzI/Tq_2j8VkG2I/AAAAAAAACX8/WorKqDkZjug/s640/Captura_de_tela-490.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Estou agora preparando os toon shaders e se possível um mecanismo para o usuário poder escolher entre esse tipo de material ou um com&amp;nbsp;menos&amp;nbsp;cara de desenho.&lt;br /&gt;&lt;br /&gt;Não estou usando os exemplos da OGRE nesta cena.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-9f2p1xnQUwg/Tq_2o2NtGUI/AAAAAAAACYE/Ae2nVf0XnOQ/s1600/Captura_de_tela-491.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;img border="0" height="416" src="http://3.bp.blogspot.com/-9f2p1xnQUwg/Tq_2o2NtGUI/AAAAAAAACYE/Ae2nVf0XnOQ/s640/Captura_de_tela-491.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Preferi&amp;nbsp;trabalhar em um shader próprio que atendesse minhas expectativas.&lt;br /&gt;O meu programa trabalha junto com um normalmap além da geometria como da para observar na imagem acima onde as dobras da calça ficam visíveis, elas são geradas pelo normalmap.&lt;br /&gt;&lt;br /&gt;Além disso no caso de paredes e terrenos ele irá trabalhar com duas camadas de diffusemap e normalmap. Entre outras loucuras.&lt;br /&gt;&lt;br /&gt;O shader em si ainda esta em aprimoramento onde deverei trabalhar em uma sombra que mate menos os detalhes e no aprimoramento da iluminação. Afinal as veias do braço do Seu MacGeiver deram uma sumida.&lt;br /&gt;&lt;br /&gt;Sim, Seu MacGeiver o omnipotente e omnisciente. A razão do nome inesperado pode ser encontrada no &lt;a href="http://www.wildwitchproject.com/2011/02/o-homem-da-roupa-velha.html"&gt;post que ele aparece&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://www.wildwitchproject.com/2011/01/fazendo-shaders.html"&gt;&lt;span id="goog_1718264177"&gt;&lt;/span&gt;&lt;span id="goog_1718264180"&gt;&lt;/span&gt;&lt;span id="goog_1718264183"&gt;&lt;/span&gt;&lt;span id="goog_1718264186"&gt;&lt;/span&gt;&lt;span id="goog_1718264190"&gt;&lt;/span&gt;&lt;span id="goog_1718264194"&gt;&lt;/span&gt;&lt;span id="goog_1718264198"&gt;&lt;/span&gt;&lt;span id="goog_1718264206"&gt;&lt;/span&gt;&lt;span id="goog_1718264210"&gt;&lt;/span&gt;&lt;img border="0" height="480" src="http://2.bp.blogspot.com/-KMLFuP8UYsY/TTx_DLesMqI/AAAAAAAABfg/jpai9Q9x9NQ/s640/desenvolvendo-shaders.07.jpg" width="640" /&gt;&lt;span id="goog_1718264211"&gt;&lt;/span&gt;&lt;span id="goog_1718264207"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span id="goog_1718264202"&gt;&lt;/span&gt;&lt;span id="goog_1718264203"&gt;&lt;/span&gt;&lt;span id="goog_1718264199"&gt;&lt;/span&gt;&lt;span id="goog_1718264195"&gt;&lt;/span&gt;&lt;span id="goog_1718264191"&gt;&lt;/span&gt;&lt;span id="goog_1718264187"&gt;&lt;/span&gt;&lt;span id="goog_1718264184"&gt;&lt;/span&gt;&lt;span id="goog_1718264181"&gt;&lt;/span&gt;&lt;span id="goog_1718264178"&gt;&lt;/span&gt;&lt;/div&gt;Bom nos &lt;a href="http://www.wildwitchproject.com/2011/01/fazendo-shaders.html"&gt;testes o programa (shader)&lt;/a&gt; se comportava relativamente bem, agora em um ambiente igual ao final que "a porca torce o rabo" que eu finalmente vou trabalhar legal.&lt;br /&gt;Estou ficando bem animado ^_^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-3992585111299133060?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/3992585111299133060/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=3992585111299133060&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3992585111299133060'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3992585111299133060'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/11/implementando-materiais-com-shaders.html' title='Implementando materiais com shaders'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-5Hp_LAQLzzI/Tq_2j8VkG2I/AAAAAAAACX8/WorKqDkZjug/s72-c/Captura_de_tela-490.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-2434527138175350986</id><published>2011-10-31T12:16:00.000-07:00</published><updated>2011-10-31T12:16:26.457-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Mais testes com a LibRocket - performance e design</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-rozESxPoInE/Tq6G2480ntI/AAAAAAAACXk/ADgoiuuUKl0/s1600/performance+analizys+for+LibRocket.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="470" src="http://3.bp.blogspot.com/-rozESxPoInE/Tq6G2480ntI/AAAAAAAACXk/ADgoiuuUKl0/s640/performance+analizys+for+LibRocket.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;O uso da LibRocket ainda me preocupa um pouco. Nessa imagem dá pra se ver claramente o FPS antes e depois da janela de dialogo abrir.&lt;br /&gt;Mas ela esta ajudando a embunitar e elaborar uma ótima interface de controle.&lt;br /&gt;&lt;br /&gt;E a GameKit ainda se mostrou bem flexível para usar vários .blend como bibliotecas.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Game Design&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;A janela de dialogo tem 3 camadas (DIVs):&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;O menu superior&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;1. Histórico de conversas&lt;/b&gt;&lt;br /&gt;O registro de todas as conversas do jogo. É uma página em tela cheia e para garantir performance na hora que eu selecionar esta opção o mecanismo de dialogo ativa uma camera livre e a coloca num espaço fora do campo de desenho para que nada alem da RML seja desenhado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Tentar saber mais&lt;/b&gt;&lt;br /&gt;Obter mais dados do personagem ou item. Muito provavelmente abrira uma RML com uma ficha estilo Daemon.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;3. Inserir marcador&lt;/b&gt;&lt;br /&gt;Esta opção faz uma marca no histórico que mais tarde pode ser usada para consulta ou retornar no mapa. Para mim é uma boa opção para resolver "puzzles", eu sou um dos que ficam impacientes em ficar caçando dados nos livros de quests nos jogos por ai.&lt;br /&gt;Para deixar a coisa mais legal eu penso em gravar no marcador uma captura da tela. Esta é uma opção legal para Desktops e Notebooks, mas não parece muito boa para Tablets com SSDs limitados em torno de 2 à 4 GB.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;O avatar&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;É a foto do personagem clicado. Quando não disponível vou mostrar a imagem da Cibele.&lt;br /&gt;Acho que vou experimentar trocara a imagem JPEG por um PNG com transparência assim eu mesclo o avatar com o fundo da cena.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;E o texto&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Até agora não tive nenhum travamento da aplicação mudando o texto dinamicamente.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Oque ta me irritando é não conseguir o maldito valor do parâmetro onclick da tag BUTTON oque deixaria a marcação HTML mais legível. Mas isto são mistérios do C++ e por enquanto fico improvisando com INPUT mesmo.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A estrutura&lt;br /&gt;Como mencionei da para usar um arquivo .blend diferente para cada coisa, então a estrutura deve ficar assim:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/--LqK6jku64k/Tq7f05Po5MI/AAAAAAAACX0/3ClGkbLZnyE/s1600/Diagrama2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/--LqK6jku64k/Tq7f05Po5MI/AAAAAAAACX0/3ClGkbLZnyE/s1600/Diagrama2.png" /&gt;&lt;/a&gt;&lt;/div&gt;O biblioteca.blend leva todos as imagens e HTML da GUI. Também outros elementos comuns como cursores, marca de seleção, emoticons, etc&lt;br /&gt;cibele.blend é a malha e animações da personagem principal e o sistema pode carregar outros personagens também.&lt;br /&gt;&lt;br /&gt;O cenario.blend é que vai dar trabalho, é nele que fica toda a cena corrente e toda vez que eu mudo de cenário eu devo reinstanciar a personagem principal, elementos de controle e etc.&lt;br /&gt;Por isso a estrutura do script Lua acaba ficando enorme, pois precisa fazer muito mais doque simplesmente carregar um .blend e rodar, precisa gerenciar TODOS os objetos e arquivos.&lt;br /&gt;Por enquanto esta assim:&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-XXir2oIj4rE/Tq7XsZlxLUI/AAAAAAAACXs/Sub1bX4I7yA/s1600/Diagrama1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="294" src="http://2.bp.blogspot.com/-XXir2oIj4rE/Tq7XsZlxLUI/AAAAAAAACXs/Sub1bX4I7yA/s640/Diagrama1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;E vai aumentar quando eu fizer a linkagem com a inteligencia artificial dos personagens.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Performance&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Uma queda de 803 para 340 realmente é preocupante. Mas como mencionei em outro post não é fácil avaliar, vou saber melhor quando formatar o PC (que já esta no segundo ano sem formatar) e tiver a versão para Android em teste.&lt;br /&gt;&lt;br /&gt;Eu pensava inicialmente que a queda da velocidade quando usava a LibRocket se dava pela quantidade de texto inserida. Eu fiz o teste inicial com um Loren Ipsun. Mas acho que parte da questão ainda é baseada no uso de recursos.&lt;br /&gt;&lt;br /&gt;Infelizmente é apartir de tentativa e erro que vou achar as razões. Por exemplo a lib pode estar redesenhando elementos a cada render (redesenho da tela que ocorre a cada FPS) ao invés de fazer cache.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-2434527138175350986?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/2434527138175350986/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=2434527138175350986&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/2434527138175350986'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/2434527138175350986'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/10/mais-testes-com-librocket-performance-e.html' title='Mais testes com a LibRocket - performance e design'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-rozESxPoInE/Tq6G2480ntI/AAAAAAAACXk/ADgoiuuUKl0/s72-c/performance+analizys+for+LibRocket.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-3644242468670453967</id><published>2011-10-29T19:09:00.000-07:00</published><updated>2011-10-29T19:09:58.319-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='blender'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Adaptando objetos clicáveis do Blender</title><content type='html'>&lt;iframe allowfullscreen="" frameborder="0" height="480" src="http://www.youtube.com/embed/DMSs1ctY_O8" width="640"&gt;&lt;/iframe&gt;&lt;br /&gt;Comecei o mecanismo dos diálogos. Por enquanto uma tela simplezinha mas operacional.&lt;br /&gt;No Blender eu define 3 propriedades no Logic Editor para cada personagem NPC.&lt;br /&gt;"click" avisando que ele pode ser clicado;&lt;br /&gt;"avatar" o nome da imagem do personagem;&lt;br /&gt;"texto" o caminho de um arquivo texto embutido no próprio .blend ou na base de dados.&lt;br /&gt;O bom é que posso usar marcação HTML para deixar tudo mais bonito.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;O mecanismo esta simples, mas assim que eu começar a conexão com a IA os textos irão interagir melhor.&lt;br /&gt;&lt;br /&gt;Deu um pouco a mais de trabalho doque deveria porque cometi um erro bobo!&lt;br /&gt;Simplesmente não prestei atenção na forma que a OGRE recebe o valor do mouse para fazer o Ray na cena.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Explicando: &lt;/b&gt;A OGRE tem uma função chamada &lt;i&gt;getCameraToViewportRay&lt;/i&gt; que recebe um valor entre 0 e 1 (0 o canto esquerdo da tela e 1 o canto direito).&lt;br /&gt;A questão é que eu confundi ela com outras engines e usei um valor entre -1 e 1... resultando num vai e vem de troca de código insano que me fez perder uma boa parte do dia até perceber a "cagada".&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;b&gt;        gkScene* scene = gkEngine::getSingleton().getActiveScene();&lt;br /&gt; Ogre::Camera* camera =scene-&amp;gt;getMainCamera()-&amp;gt;getCamera();&lt;br /&gt; Ogre::Ray ray = camera-&amp;gt;getCameraToViewportRay(x,y);//(v1, v3.normalisedCopy());&lt;br /&gt; Ogre::RaySceneQuery* query = camera-&amp;gt;getSceneManager()-&amp;gt;createRayQuery(ray);&lt;br /&gt;&lt;br /&gt; Ogre::RaySceneQueryResult &amp;amp;result = query-&amp;gt;execute();&lt;br /&gt;&lt;br /&gt; lua_pushnumber(L,result.size());&lt;br /&gt; if (result.size()&amp;gt;0)&lt;br /&gt; {&lt;br /&gt;  int i = 1;&lt;br /&gt;  lua_newtable(L);&lt;br /&gt;  for( Ogre::RaySceneQueryResult::iterator itr = result.begin(); itr != result.end(); itr ++ )&lt;br /&gt;  {&lt;br /&gt;   lua_pushnumber(L,i);&lt;br /&gt;   lua_pushstring(L, itr-&amp;gt;movable-&amp;gt;getName().c_str() );&lt;br /&gt;   lua_settable(L,-3);&lt;br /&gt;   i++;&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;&lt;br /&gt; camera-&amp;gt;getSceneManager()-&amp;gt;destroyQuery(query);&lt;br /&gt; query = 0;&lt;/b&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-3644242468670453967?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/3644242468670453967/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=3644242468670453967&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3644242468670453967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3644242468670453967'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/10/adaptando-objetos-clicaveis-do-blender.html' title='Adaptando objetos clicáveis do Blender'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/DMSs1ctY_O8/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-132551931612669405</id><published>2011-10-29T12:00:00.000-07:00</published><updated>2011-10-29T12:00:51.843-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='2D'/><title type='text'>Arte e magia, estudando conceitos para o jogo</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-dquDxbNoRaU/TqsMBL8S7MI/AAAAAAAACXI/VS8y1YSY68Q/s1600/art_demon_angel.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="418" src="http://4.bp.blogspot.com/-dquDxbNoRaU/TqsMBL8S7MI/AAAAAAAACXI/VS8y1YSY68Q/s640/art_demon_angel.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Lendo o manual do sistema Daemon e pensando... pensando... &lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;i&gt;café&lt;/i&gt; XP&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;Caminhos de Magia segundo o manual:&lt;/b&gt; São divisões da Magia que um feiticeiro pode escolher para aprender. Existem 6 Caminhos de Magia Elementais: Fogo, Água, Ar, Terra, Luz e Trevas. Além deles, existem outros 6 Caminhos: Humanos, Animais, Plantas, Arkanun, Spiritum e Metamagia.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Em minha interpretação livre (livre mesmo) se eu quiser usar esse mecanismo eu faria assim:&lt;br /&gt;Para controlar uma fada eu precisaria de Ar e Luz&lt;br /&gt;Para controlar um familiar eu precisaria de Fogo e Trevas&lt;br /&gt;Para controlar um &lt;a href="http://www.dandwiki.com/wiki/Ell's_Handy_Homunculus_(3.5e_Spell)"&gt;homúnculo&lt;/a&gt; eu precisaria de Terra e Trevas&lt;br /&gt;Para controlar uma ondina eu precisaria de água e Luz&lt;br /&gt;&lt;br /&gt;Assim dispensaria os caminhos extras para ter menos dor de cabeça programando e produzindo material.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-FCLV3qlbtc8/TqsjIIDX18I/AAAAAAAACXQ/wDdSHJiIDvc/s1600/bregui-night-mode-estruturar.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="152" src="http://3.bp.blogspot.com/-FCLV3qlbtc8/TqsjIIDX18I/AAAAAAAACXQ/wDdSHJiIDvc/s200/bregui-night-mode-estruturar.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://2.bp.blogspot.com/-TD5wvNaxMtU/TqxGhrWUluI/AAAAAAAACXc/YBuUJuOcYiw/s1600/bregui-night-mode-estruturar2.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"&gt;&lt;img border="0" height="153" src="http://2.bp.blogspot.com/-TD5wvNaxMtU/TqxGhrWUluI/AAAAAAAACXc/YBuUJuOcYiw/s200/bregui-night-mode-estruturar2.jpg" width="200" /&gt;&lt;/a&gt;Isso ainda me permite representar um gráfico do caminho seguido pelo jogador. Quem jogou Ragnarock viu que a ficha do personagem apresenta um circulo com pontas onde o polígono dá uma representação da caracteristica do personagem, isso é baseado naqueles testes de psicologia que as empresas japonesas usam para definir funcionários.&lt;br /&gt;&lt;br /&gt;Por ai também posso dizer se o personagem esta encaminhando para o "lado negro da força" XP&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://28.media.tumblr.com/tumblr_ltqt6tPUoI1qd0n0vo1_500.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://28.media.tumblr.com/tumblr_ltqt6tPUoI1qd0n0vo1_500.gif" width="263" /&gt;&lt;/a&gt;&lt;/div&gt;O pior é que não me seguro, demorei um fim de tarde todo só pra fazer essas duas imagens ehehhe.&lt;br /&gt;Fiz o contorno usando a ferramenta path do GIMP... eu só não desisti porque já tinha começado, a ferramenta de edição de paths dele deixa muito a desejar, mas eu estava com preguiça de ir e voltar ao Inkscape.&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-132551931612669405?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/132551931612669405/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=132551931612669405&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/132551931612669405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/132551931612669405'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/10/arte-e-magia-estudando-conceitos-para-o.html' title='Arte e magia, estudando conceitos para o jogo'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-dquDxbNoRaU/TqsMBL8S7MI/AAAAAAAACXI/VS8y1YSY68Q/s72-c/art_demon_angel.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-1156972037501725560</id><published>2011-10-28T11:51:00.000-07:00</published><updated>2011-10-28T11:51:07.571-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ogre'/><category scheme='http://www.blogger.com/atom/ns#' term='cg'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Ajustando a Camera</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-9x2d-7nuzZE/TqrrKPGN0GI/AAAAAAAACWw/AzJYuHAH6Ac/s1600/Captura_de_tela-476.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-9x2d-7nuzZE/TqrrKPGN0GI/AAAAAAAACWw/AzJYuHAH6Ac/s640/Captura_de_tela-476.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;O jogo vai contar com um sistema de camera composto por 4 cameras:&lt;br /&gt;Uma de visão em primeira pessoa para visão dos espaços;&lt;br /&gt;Uma ortogonal que mostra o plano geral como num RPG normal;&lt;br /&gt;Uma "livre" para os cinematics;&lt;br /&gt;Cameras gerais fixas no cenário, para alternar ângulos dramáticos.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;De início ja montei as duas principais, baseando-me no exemplo da própria GameKit.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Cw64tImpQCI/TqrxFgYUtnI/AAAAAAAACXA/n6gsTtDqvEw/s1600/sistema+de+cameras+da+OGREkit.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-Cw64tImpQCI/TqrxFgYUtnI/AAAAAAAACXA/n6gsTtDqvEw/s1600/sistema+de+cameras+da+OGREkit.png" /&gt;&lt;/a&gt;&lt;/div&gt;O sistema é basicamente assim: são inseridos dois objetos vazios (emptys) no espaço global.&lt;br /&gt;O objeto que fará revolução no eixo &lt;i&gt;X&lt;/i&gt; (vermelho) é conectado ao objeto que fará revolução no eixo &lt;i&gt;Z&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;A camera é conectada ao objeto do eixo &lt;i&gt;X&lt;/i&gt; e praticamente faz o movimento de 360 graus em todos os lados. Esta é a camera de primeira pessoa e fornece uma visão em perspectiva ótima para o jogador observar as coisas do ângulo do personagem, observar inimigos e mirar com armas de mão.&lt;br /&gt;&lt;br /&gt;Outra camera é conectada ao objeto do eixo &lt;i&gt;Z&lt;/i&gt; e sofre apenas rotação neste eixo, como a camera do Ragnarok. Esta camera também difere da outra porque esta usando pojeção ortogonal.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-YaNX2mRVR2M/Tqrw-Q-PHoI/AAAAAAAACW4/PNF_A6kQ0pA/s1600/Captura_de_tela-477.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="398" src="http://3.bp.blogspot.com/-YaNX2mRVR2M/Tqrw-Q-PHoI/AAAAAAAACW4/PNF_A6kQ0pA/s640/Captura_de_tela-477.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-size: large;"&gt;&lt;b&gt;Tradução para leigos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;Esta imagem acima esta usando a projeção em perspectiva, &amp;nbsp;as linhas retas vão se aproximando umas das outras conforme vão se distanciando da camera.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c;"&gt;Já a projeção ortogonal isso não acontece, é um meio de visão usado para estudos técnicos e muito comum essa visão em jogos que não usavam 3D, mas um 2D que permitisse a visão tridimensional.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Isto &amp;nbsp;produz umas diferenças de como as cameras se comportam no caso do zoom. A camera em perspectiva basta eu aproximar ou afastar do personagem, já a ortogonal é indiferente à distância dos objetos assim para dar o zoom nela eu preciso mudar a escala da camera.&lt;br /&gt;&lt;br /&gt;Permutar entre os sistemas de camera sera um ponto que espero que agrade e aumente a jogabilidade. Bom, eu sempre me pego querendo uma visão mais introspectiva em jogos como Mu Online, Warcraft 3 e Diablo por isso espero que outros jogadores também queirão o mesmo.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Programando a malvada&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Pegar o modelo da GameKit e expandir foi fácil, mais dificil foi implementar as funções extras.&lt;br /&gt;&lt;br /&gt;No começo bastou pegar a cena corrente e nela a camera corrente e mudar seu modo de projeção. Isso apenas no C++ pois a engine não oferecia essa função em tempo de execução.&lt;br /&gt;&lt;br /&gt;Ai tive uns probleminhas ao trocar de camera, pois toda vez que eu mudava a forma de projetar a matriz de visão era reiniciada e perdia o "aspect ratio" da tela. Deixando a imagem bem distorcida.&lt;br /&gt;&lt;br /&gt;Após isso tive que ter o cuidado de recalcular o "aspect ratio". Isso é feito dividindo-se a largura da janela pela altura. Esse valor é injetado na matriz de visão para corrigir a distorção visual.&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;b&gt;int WWP_Ex::setProjectionType( lua_State* L)&lt;br /&gt;{&lt;br /&gt; int stack = lua_gettop(L);&lt;br /&gt; if (stack&amp;gt;0 &amp;amp;&amp;amp; lua_isstring(L,1))&lt;br /&gt; {&lt;br /&gt;  bool perspective = true;&lt;br /&gt;  char type = ((const char*) lua_tostring(L,1))[0];&lt;br /&gt;  if (type=='o' || type=='O')&lt;br /&gt;   perspective = false;&lt;br /&gt;  gkScene* scene = gkEngine::getSingleton().getActiveScene();&lt;br /&gt;  gkCamera* camera;&lt;br /&gt;  if(scene)&lt;br /&gt;   camera = scene-&amp;gt;getMainCamera();&lt;br /&gt;&lt;br /&gt;  if (camera)&lt;br /&gt;   if (perspective)&lt;br /&gt;    camera-&amp;gt;setProjType( gkCameraProperties::CA_PERSPECTIVE );&lt;br /&gt;   else {&lt;br /&gt;    camera-&amp;gt;setProjType( gkCameraProperties::CA_ORTHOGRAPHIC );&lt;br /&gt;   }&lt;br /&gt;  Ogre::Real ratio = (double) scene-&amp;gt;getDisplayWindow()-&amp;gt;getWidth() / (double) scene-&amp;gt;getDisplayWindow()-&amp;gt;getHeight();&lt;br /&gt;  scene-&amp;gt;getDisplayWindow()-&amp;gt;getViewport(0)-&amp;gt;getViewport()-&amp;gt;getCamera()-&amp;gt;setAspectRatio(ratio);&lt;br /&gt; }&lt;br /&gt;}&lt;/b&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-1156972037501725560?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/1156972037501725560/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=1156972037501725560&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/1156972037501725560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/1156972037501725560'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/10/ajustando-camera.html' title='Ajustando a Camera'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-9x2d-7nuzZE/TqrrKPGN0GI/AAAAAAAACWw/AzJYuHAH6Ac/s72-c/Captura_de_tela-476.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-2195195972860657284</id><published>2011-10-27T08:49:00.000-07:00</published><updated>2011-10-27T08:50:00.694-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ogre'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Montando um mini-mapa</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-ZCWntZv9qp8/TqlhAh9AgOI/AAAAAAAACWE/EsZHRWPtTiA/s1600/minimap_anim_examplo.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-ZCWntZv9qp8/TqlhAh9AgOI/AAAAAAAACWE/EsZHRWPtTiA/s1600/minimap_anim_examplo.gif" /&gt;&lt;/a&gt;&lt;/div&gt;Este é o mini-mapa do jogo, depois irei adicionar mais uns sprites para servirem de botões e decoração.&lt;br /&gt;&lt;br /&gt;Deu um trabalho bastante razoável fazer esse danadinho. A parte chata ficou em acertar as transformações de coordenadas do personagem no mapa para o mini-mapa. &lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Mas falarei delas abaixo&lt;/span&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt; para não torturar os que não programam.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;O design do mini-mapa&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Ficou a cargo do Blender, achei ele mais interessante para produzir gráficos vetoriais. Depois um pintura por cima pode dar um retoque.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-0cI4Z7G4mDg/Tqlt0Ai6QwI/AAAAAAAACWU/IdHMQIT4XOI/s1600/Captura_de_tela-472.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="360" src="http://4.bp.blogspot.com/-0cI4Z7G4mDg/Tqlt0Ai6QwI/AAAAAAAACWU/IdHMQIT4XOI/s640/Captura_de_tela-472.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Produzi 3 texturas cada um dos elementos da interface.&lt;br /&gt;Precisei mais uma textura para servir de mascara para recortar o mapa e uma outra para ficar dando scroll e gerar o efeito da animação.&lt;br /&gt;&lt;br /&gt;O legal da OGRE é que você pode fazer muita coisa sem programar, apenas setando parâmetros no material. O material e a definição dos elementos foram fáceis de produzir:&lt;br /&gt;&lt;b&gt;minimap.material&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;material minimap01&lt;br /&gt;{&lt;br /&gt; technique&lt;br /&gt; {&lt;br /&gt;  pass miniatura&lt;br /&gt;  {&lt;br /&gt;            lighting off&lt;br /&gt;            scene_blend alpha_blend&lt;br /&gt;            depth_write off&lt;br /&gt;            &lt;br /&gt;            texture_unit mapa&lt;br /&gt;            {&lt;br /&gt;                //texture           minimap_vazio.jpg&lt;br /&gt;                texture             mapa_00_0.jpg 2d 1&lt;br /&gt;                tex_address_mode    border&lt;br /&gt;                tex_border          colour 0.0 0.0 0.0 1.0&lt;br /&gt;           colour_op           modulate&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            texture_unit&lt;br /&gt;            {&lt;br /&gt;               texture minimap_mask.png&lt;br /&gt;            }&lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;material minimap02&lt;br /&gt;{&lt;br /&gt; technique&lt;br /&gt; {&lt;br /&gt;  pass&lt;br /&gt;  {&lt;br /&gt;            lighting off&lt;br /&gt;            scene_blend alpha_blend&lt;br /&gt;            depth_write off&lt;br /&gt;            &lt;br /&gt;            texture_unit&lt;br /&gt;            {&lt;br /&gt;                texture minimap_over.png 2d 1&lt;br /&gt;           colour_op modulate&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;material minimap03&lt;br /&gt;{&lt;br /&gt; technique&lt;br /&gt; {&lt;br /&gt;  pass&lt;br /&gt;  {&lt;br /&gt;            lighting off&lt;br /&gt;            scene_blend alpha_blend&lt;br /&gt;            depth_write off&lt;br /&gt;            &lt;br /&gt;            texture_unit marcas&lt;br /&gt;            {&lt;br /&gt;                texture      minimap_over_mk.png 2d 1&lt;br /&gt;                color_op     modulate&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;            texture_unit radar&lt;br /&gt;            {&lt;br /&gt;                texture      minimap_radar.png 2d 1&lt;br /&gt;                color_op     add&lt;br /&gt;                scroll_anim  0 0.35&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;material minimap04&lt;br /&gt;{&lt;br /&gt; technique&lt;br /&gt; {&lt;br /&gt;  pass&lt;br /&gt;  {&lt;br /&gt;            lighting off&lt;br /&gt;            scene_blend add&lt;br /&gt;            depth_write off&lt;br /&gt;            &lt;br /&gt;            texture_unit&lt;br /&gt;            {&lt;br /&gt;                texture minimap_over_l.png 2d 1&lt;br /&gt;           colour_op modulate&lt;br /&gt;            }&lt;br /&gt;            &lt;br /&gt;  }&lt;br /&gt; }&lt;br /&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;b&gt;minimap.overlay&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;MiniMap&lt;br /&gt;{&lt;br /&gt; zorder 200&lt;br /&gt;&lt;br /&gt;&lt;br /&gt; container Panel(MiniMap/Map)&lt;br /&gt;    {&lt;br /&gt;        metrics_mode pixels&lt;br /&gt;        width       128&lt;br /&gt;        height      128&lt;br /&gt;        left        -130&lt;br /&gt;        top         2&lt;br /&gt;        vert_align  top&lt;br /&gt;        horz_align  right&lt;br /&gt;        material    minimap01&lt;br /&gt;        uv_coords   0.0 0.0 1.0 1.0&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    container Panel(MiniMap/Ov3)&lt;br /&gt;    {&lt;br /&gt;        metrics_mode pixels&lt;br /&gt;        width       128&lt;br /&gt;        height      128&lt;br /&gt;        left        -130&lt;br /&gt;        top         2&lt;br /&gt;        vert_align  top&lt;br /&gt;        horz_align  right&lt;br /&gt;        material    minimap03&lt;br /&gt;        uv_coords   0.0 0.0 1.0 1.0&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    container Panel(MiniMap/Ov2)&lt;br /&gt;    {&lt;br /&gt;        metrics_mode pixels&lt;br /&gt;        width       128&lt;br /&gt;        height      128&lt;br /&gt;        left        -130&lt;br /&gt;        top         2&lt;br /&gt;        vert_align  top&lt;br /&gt;        horz_align  right&lt;br /&gt;        material    minimap04&lt;br /&gt;        uv_coords   0.0 0.0 1.0 1.0&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    container Panel(MiniMap/Ov1)&lt;br /&gt;    {&lt;br /&gt;        metrics_mode pixels&lt;br /&gt;        width       128&lt;br /&gt;        height      128&lt;br /&gt;        left        -130&lt;br /&gt;        top         2&lt;br /&gt;        vert_align  top&lt;br /&gt;        horz_align  right&lt;br /&gt;        material    minimap02&lt;br /&gt;        uv_coords   0.0 0.0 1.0 1.0&lt;br /&gt;        &lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Certos recursos da OGRE também são muito bem pensados, como o de poder atribuir um nome a os elementos do material, como no caso da textura "mapa" que é o mapa do cenário.&lt;br /&gt;Pelo nome fica fácil pega-la e manipula-la, infelizmente essa é a parte que foi complicada.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Código do Mini-mapa&lt;/span&gt; (C++ from Hell)&lt;/b&gt;&lt;br /&gt;Resolvi implementar o mini-mapa direto em C++ mandando uma classe de controle para Lua.&lt;br /&gt;Isso tornou um tanto trabalhoso acertar o mini-mapa pois toda hora que eu tentava acertar meus cálculos de projeção tinha que compilar todo o fonte e testar de novo.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-tS-S_t4BRTU/TqlxJxw7n9I/AAAAAAAACWc/GHqNQmwJ1-M/s1600/grafico_tosco.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="http://3.bp.blogspot.com/-tS-S_t4BRTU/TqlxJxw7n9I/AAAAAAAACWc/GHqNQmwJ1-M/s400/grafico_tosco.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Esse cálculo foi bem chato, onde &lt;b&gt;&lt;i&gt;char&lt;/i&gt;&lt;/b&gt; é o personagem e &lt;b&gt;&lt;i&gt;ter&lt;/i&gt;&lt;/b&gt; o terreno. Como o centro do terreno esta em 0,0 tenho que adicionar a metade da distância do terreno à posição do personagem e depois dividir pela distância total do terreno para obter um valor da fração do terreno que o personagem esta. Assim posso fazer o scroll direto na textura. (é esse cálculo ai em cima)&lt;br /&gt;&lt;br /&gt;&lt;b&gt;No final ficou assim:&lt;/b&gt;&lt;br /&gt;&lt;pre&gt;&lt;code&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;int MiniMap::OnUpdate(lua_State* L)&lt;br /&gt;{&lt;br /&gt; if (player)&lt;br /&gt; {&lt;br /&gt;  int stack = lua_gettop(L);&lt;br /&gt;  if (stack&amp;gt;0 &amp;amp;&amp;amp; lua_isnumber(L,1))&lt;br /&gt;  {&lt;br /&gt;   double delta = (double) lua_tonumber(L,1);&lt;br /&gt;&lt;br /&gt;   gkVector3 pos = player-&amp;gt;getWorldPosition();&lt;br /&gt;   gkEuler rot = player-&amp;gt;getWorldRotation();&lt;br /&gt;&lt;br /&gt;   double sc = 8.0f / 2.0f;&lt;br /&gt;   unit-&amp;gt;setTextureScale(sc,sc);&lt;br /&gt;&lt;br /&gt;   static double RAD = 0.017453293f;&lt;br /&gt;   gkRadian rad( (rot.toVector3().z-180) * RAD );&lt;br /&gt;   //unit-&amp;gt;setTextureRotate( rad );&lt;br /&gt;&lt;br /&gt;   double x = pos.x + limits2.x;// - limitsViewPort.x;&lt;br /&gt;   double y = -pos.y + limits2.y;// - limitsViewPort.y;&lt;br /&gt;&lt;br /&gt;   x /= limits.x;&lt;br /&gt;   y /= limits.y;&lt;br /&gt;   unit-&amp;gt;setTextureScroll(x-0.5f,y-0.5f);&lt;br /&gt;   &lt;br /&gt;  }&lt;br /&gt; } else {  }&lt;br /&gt; return 0;&lt;br /&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;Independente do trabalho extra ficou mais fácil apartir desta classe controlar atributos mais detalhados e usar todos os recursos da OGRE no mini-mapa.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Idéias que podem dar certo&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Abwiz1VBDIE/Tql2K-n3JyI/AAAAAAAACWk/26XuDdqCK6w/s1600/anjo_demo_croqui.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://2.bp.blogspot.com/-Abwiz1VBDIE/Tql2K-n3JyI/AAAAAAAACWk/26XuDdqCK6w/s400/anjo_demo_croqui.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Pensei numa coisa simples mas pode funcionar bem:&lt;br /&gt;Conforme a tendência da personagem vai se ajustando (pela pontuação das ações e dialogos) pode aparecer um anjo ou um demônio abaixo do mostrador do mini-mapa.&lt;br /&gt;Se a figura for o anjo vai indicar ao jogador lugares perigosos.&lt;br /&gt;Se for o demônio vai indicar lugares perigosos ou não e "talvez" tesouros. Ou seja, essa figura mostra mais coisas mas é menos confiável.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-2195195972860657284?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/2195195972860657284/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=2195195972860657284&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/2195195972860657284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/2195195972860657284'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/10/montando-um-mini-mapa.html' title='Montando um mini-mapa'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-ZCWntZv9qp8/TqlhAh9AgOI/AAAAAAAACWE/EsZHRWPtTiA/s72-c/minimap_anim_examplo.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-5455028544041957482</id><published>2011-10-26T06:01:00.000-07:00</published><updated>2011-10-26T06:01:56.111-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lua'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Lua e LibRocket - Relatório de uso</title><content type='html'>&lt;iframe allowfullscreen="" frameborder="0" height="464" src="http://www.youtube.com/embed/LsmN8kE-NIA" width="640"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;Não achei uma referencia do uso da biblioteca na API Lua da GameKit, oque parece dizer que ainda não esta implementado, e como eu estava com pressa improvisei uns métodos de acesso.&lt;br /&gt;&lt;br /&gt;Este é um relatório do processo para chegar neste vídeo.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-dKY3taGgVE4/Tqf6YXNsQUI/AAAAAAAACV0/Sg2_W-z9fP8/s1600/Captura_de_tela-461.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-dKY3taGgVE4/Tqf6YXNsQUI/AAAAAAAACV0/Sg2_W-z9fP8/s640/Captura_de_tela-461.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;HTML (RML)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;A marcação aceita é denominada RML (Rocket Markup Language) e aceita a maioria das tags fundamentais da HTML4.&lt;br /&gt;Entre as não listadas na documentação estão as STRONG, I e U.&lt;br /&gt;Ela tem recursos chamados "decorators" que facilitam o fatiamento e controle de imagens permitindo que você use texturas para fazer o backgroud de botões e janelas.&lt;br /&gt;&lt;br /&gt;Algumas tags próprias para você criar itens arrastáveis e redimencionáveis.&lt;br /&gt;&lt;br /&gt;Curiosamente a INPUT não tem o tipo "buttom", oque é de de estranhar para uma lib feita para criar GUI de jogos onde botões são muito importantes.&lt;br /&gt;Uma saída é usar o tipo "submit" como um botão normal já que os FORMs não aparentão utilidade sem o C++. Ou "text input" sem fundo assim eu simularia Links.&lt;br /&gt;&lt;br /&gt;A tag IMG pode ser usada tranquilamente, mas só carrega imagens locais.&lt;br /&gt;Inserir ícones no texto também é fácil, só esige um certo cuidado, como usar uma imagem inteira ao invés das texturas grandes.&lt;br /&gt;&lt;br /&gt;Estou pensando seriamente em usar o set de emotions criados pelo &lt;a href="http://smgbas.deviantart.com/art/Emix-1-emoticons-pack-162285666"&gt;sgmbas do DeviantArt&lt;/a&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-oCH4eLgzYac/TqgEARFmixI/AAAAAAAACV8/slcpEs643Xo/s1600/Emix_1_emoticons_pack_by_smgbas.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://2.bp.blogspot.com/-oCH4eLgzYac/TqgEARFmixI/AAAAAAAACV8/slcpEs643Xo/s320/Emix_1_emoticons_pack_by_smgbas.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Mãnhas da RML&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Por padrão a LibRocket posiciona o documento no centro da janela. Então para posicionar um elemento como no caso da "caixa de fala" o jeito é usar posicionamento absoluto assim:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;div#window {&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; z-index: 1;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; position: absolute;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; left: 0px;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; bottom: 0px;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;width: 480px;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; height: 128px;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;padding: 10px 15px;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;overflow: hidden auto;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;background-decorator: tiled-box;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;background-top-left-image: gui_rocket.png 10px 13px 84px 139px;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;background-top-right-image: gui_rocket.png 118px 13px 126px 139px;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;background-top-image: gui_rocket.png repeat-stretch 84px 13px 118px 139px;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;background-bottom-left-image: gui_rocket.png 10px 139px 17px 139px;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;background-bottom-right-image: gui_rocket.png 118px 139px 126px 139px;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;background-bottom-image: gui_rocket.png repeat-stretch 18px 139px 100px 139px;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;background-left-image: gui_rocket.png repeat-stretch 10px 87px 17px 137px;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;background-center-image: gui_rocket.png stretch 18px 87px 100px 137px;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Ela também tem um bom mecanismo de debug.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-xx-JY9cMHs4/Tqf6VZbo36I/AAAAAAAACVk/xuzp-Nfgozw/s1600/Captura_de_tela-459.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-xx-JY9cMHs4/Tqf6VZbo36I/AAAAAAAACVk/xuzp-Nfgozw/s640/Captura_de_tela-459.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Dentro do C++&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Criei uma ponte para as funções da LibRocket e fui trabalhando meio nas coxas mesmo. Esta dando certo e não tive que fazer muita coisa, em outras palavras quando tiver uma implementação descente na própria GameKit o trabalho de migração deve ser mínimo.&lt;br /&gt;&lt;br /&gt;Na verdade onde preciso de um método que levo mais de 30 segundos para encontrar na referência de Lua da engine eu corro pra minha classe WWP_Ex e meto o método la dentro.&lt;br /&gt;&lt;br /&gt;Para encorajar o uso da LibRocket vou compartilhar o código que criei:&lt;br /&gt;&lt;a href="http://pastebin.com/MrJrMYEy"&gt;LRocket.h&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pastebin.com/qz2PfPqD"&gt;LRocket.cpp&lt;/a&gt;&lt;br /&gt;Não esta aquela beleza de código mas esta operacional.&lt;br /&gt;&lt;br /&gt;Um método conveniente para alterar o conteúdo HTML dinamicamente é o innerHTML que na libRocket foi definido como SetInnerRML e GetInnerRML.&lt;br /&gt;Curiosamente o Get retorna void (nada!) na biblioteca. O que faz aparentar que por algum motivo esse método não esta satisfatoriamente implementado.&lt;br /&gt;&lt;br /&gt;Quando fui inserir conteúdo obtive uma falha critica bem destrutiva. Aparentemente o problema ocorre quando se insere marcação RML no texto.&lt;br /&gt;Esse contratempo me fez pesquisar melhor e parece ter umas dicas na seção do site que explica a manipulação de um datagrid. Vou ver com calma. Talvez tenha que improvisar um analisador com a TinyXML para suprir as falhas.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Eventos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;O exemplo da GameKit mostra a adição de eventos no botão no nível do C++ e se eu usasse o mesmo padrão teria que criar código a mais nos scripts Lua para adicionar monitores de evento.&lt;br /&gt;&lt;br /&gt;Achei isso um saco então parti para uma solução menos potente mas que permite fazer tudo pela RML facilmente:&lt;br /&gt;Ao carregar o documento RML eu adiciono monitores a todos as INPUT que acho.&lt;br /&gt;Ao receber o evento verifico a existência da string "luascript:". Fica como a JavaScript só que passo dois parâmetros separados por virgula: o nome da função Lua e uma string qualquer.&lt;br /&gt;Assim:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;lt;form&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="submit" value="luascript:cameraTarget,entrada_cidade"&amp;gt;+&amp;lt;/input&amp;gt; entrada da cidade.&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input type="submit" value="luascript:cameraTarget,coreto"&amp;gt;+&amp;lt;/input&amp;gt; coreto da praa.&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;lt;input value="luascript:cameraTarget,veia_louca"&amp;gt;+&amp;lt;/input&amp;gt; casa da veia louca.&amp;lt;br /&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #0b5394; font-family: 'Courier New', Courier, monospace; font-size: xx-small;"&gt;&amp;lt;/form&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Momento off-topic: Meu Desktop&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Bati um print-screen da tela enquanto pensava em elementos pro jogo...&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-mHrKNkDCcLw/Tqf6UZLlBlI/AAAAAAAACVc/arv8G1a22Uw/s1600/Captura_de_tela-458.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-mHrKNkDCcLw/Tqf6UZLlBlI/AAAAAAAACVc/arv8G1a22Uw/s640/Captura_de_tela-458.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;É... fazer jogos tumultua a mente e as áreas de trabalho.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-5455028544041957482?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/5455028544041957482/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=5455028544041957482&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/5455028544041957482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/5455028544041957482'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/10/nao-achei-uma-referencia-do-uso-da.html' title='Lua e LibRocket - Relatório de uso'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/LsmN8kE-NIA/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-1925517791428942338</id><published>2011-10-18T10:22:00.000-07:00</published><updated>2011-10-18T10:22:41.173-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sketches'/><category scheme='http://www.blogger.com/atom/ns#' term='personagens'/><title type='text'>Loira do Banheiro - mais detalhes da personagem</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-09oagHnw0wk/Tp2pTZ1uRlI/AAAAAAAACVI/Ut1mD5OsrCc/s1600/loira_do_banheiro_to_quase_chegando_num_consenso_com_migo_mesmo_proprio_sobre_o_visual.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://1.bp.blogspot.com/-09oagHnw0wk/Tp2pTZ1uRlI/AAAAAAAACVI/Ut1mD5OsrCc/s640/loira_do_banheiro_to_quase_chegando_num_consenso_com_migo_mesmo_proprio_sobre_o_visual.jpg" width="480" /&gt;&lt;/a&gt;&lt;/div&gt;Personagens bonitos dão trabalho, mesmo porque agente &lt;b&gt;não&lt;/b&gt; para de pensar neles! Enquanto vou fazendo a programação as vezes paro e ouvindo musica no ultimo rabisco umas ideias.&lt;br /&gt;Quando percebi não mudei quase nada em relação ao &lt;a href="http://www.wildwitchproject.com/2010/02/loira-do-banheiro-caracter-design-02.html"&gt;último concept da Loira da Banheiro&lt;/a&gt;,&amp;nbsp;apenas os detalhes.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-In2nGO-GxnM/Tp21agnorCI/AAAAAAAACVQ/4ThJKEYX3QA/s1600/PUNK_RAVE_punk_Gothic_pant_clothes_Skirt_Tee.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-In2nGO-GxnM/Tp21agnorCI/AAAAAAAACVQ/4ThJKEYX3QA/s200/PUNK_RAVE_punk_Gothic_pant_clothes_Skirt_Tee.jpg" width="200" /&gt;&lt;/a&gt;&lt;/div&gt;Coloquei um pingente (na verdade não sei o nome que dão à esse enfeites de roupa) representando um gato próximo ao coração.&amp;nbsp;Esse &lt;a href="http://www.wildwitchproject.com/2011/02/demom-miau.html"&gt;gato tem um papel importante&lt;/a&gt; na história da personagem.&lt;br /&gt;Fitas inspiradas nas "Cyber Goths" e mais rendas.&lt;br /&gt;&lt;br /&gt;A história da Loira do Banheiro é popularmente simples: um acidente dos mais idiotas num banheiro de escola e a loirinha fica presa assombrando a meninada.&lt;br /&gt;Claro eu adicionei uns elementos radioativos para deixar a história mais emocionante.&lt;br /&gt;&lt;br /&gt;Irei partir para a modelagem ainda essa semana.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Loira do Banheiro Nível 2&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Sim ela tem um nível 2 de poder pra deixar as coisas mais interessantes, afinal nada mais cliché doque o inimigo que levanta mais forte quando o herói pensa que o derrotou XP&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-UAEB3UmG4wc/Tp2pRq1ra6I/AAAAAAAACVA/YHpPPtnnqcc/s1600/loira_do_banheiro_armadura_do_gato_demonio.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-UAEB3UmG4wc/Tp2pRq1ra6I/AAAAAAAACVA/YHpPPtnnqcc/s640/loira_do_banheiro_armadura_do_gato_demonio.jpg" width="386" /&gt;&lt;/a&gt;&lt;/div&gt;Mais uma vez o gato aparece na história. Na verdade vai ter seitas satânicas, demónios traídos, anjos salvadores, zumbis e vendedores ambulantes estão na minha cabeça.&lt;br /&gt;&lt;br /&gt;A armadura tem tons negros e é baseada em ossos de gato, talvez eu coloque umas asinhas para lembrar as &lt;a href="http://pt.wikipedia.org/wiki/Espectros_de_Hades"&gt;Sapuris dos Cavaleiros do Zodíaco&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-1925517791428942338?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/1925517791428942338/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=1925517791428942338&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/1925517791428942338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/1925517791428942338'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/10/loira-do-banheiro-mais-detalhes-da.html' title='Loira do Banheiro - mais detalhes da personagem'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-09oagHnw0wk/Tp2pTZ1uRlI/AAAAAAAACVI/Ut1mD5OsrCc/s72-c/loira_do_banheiro_to_quase_chegando_num_consenso_com_migo_mesmo_proprio_sobre_o_visual.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-6156413297416322388</id><published>2011-10-17T04:17:00.000-07:00</published><updated>2011-10-17T04:17:49.082-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='cenário'/><title type='text'>Ipiraporinha do Oesta a primeira cidade</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-pR9PEL-QIek/TpwKIvD0TdI/AAAAAAAACU4/pra0-GXxeBg/s1600/montando+uma+cidade+3d+no+blender+-+WIld+Witch+Project.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/-pR9PEL-QIek/TpwKIvD0TdI/AAAAAAAACU4/pra0-GXxeBg/s640/montando+uma+cidade+3d+no+blender+-+WIld+Witch+Project.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Com os mecanismos importantes na mão comecei a montar a primeira cidade.&lt;br /&gt;É uma cidadezinha não muito pobre, não muito rica não muito agitada e nem muito calma.&lt;br /&gt;Casinhas simples de gente que veio para trabalhar na ferrovia, um mercadinho com traços Colónias, uma praçinha com coreto, uma mansão de um coronel rico e uma catedral gótica básica feita por imigrantes franceses uns 300 anos antes de Ipiraporinha do Oeste ser fundada, etc.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="480" src="http://www.youtube.com/embed/zz84P6vtAZQ" width="640"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;A textura que mescla a grama e terra tem 1024x1024 mas a impressão que tenho é que ficara boa com 512x512.&lt;br /&gt;&lt;br /&gt;Só estou usando um modelo de casa por enquanto para ajudar a mensurar os terrenos.&lt;br /&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;Pela manha vou para a rua tentar tirar foto de umas cercas na rua para textura, &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;é um trabalho meio delicado pois aqui o bairro que mais tem as referências que quero é onde tem mais "bocas"&lt;/span&gt;.&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Realidade realista&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Fiz uma pesquisa de placas e cartazes pela Internet para aprimorar o grau de realismo da cena.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Uo1PIOMCK3c/TpghuwGAvOI/AAAAAAAACUc/wmRWSlLL35Y/s1600/20080603161829168_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-Uo1PIOMCK3c/TpghuwGAvOI/AAAAAAAACUc/wmRWSlLL35Y/s320/20080603161829168_1.jpg" width="303" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-OY6iD2oePr8/TpghoW3G7VI/AAAAAAAACTM/GvR55D7SMKc/s1600/fotos_260_Cuidado+-+Bebados+Atravessando.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="220" src="http://1.bp.blogspot.com/-OY6iD2oePr8/TpghoW3G7VI/AAAAAAAACTM/GvR55D7SMKc/s320/fotos_260_Cuidado+-+Bebados+Atravessando.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-_ZYd41Waoy4/TpghnVr56YI/AAAAAAAACS8/MJMDpXej-B4/s1600/PLACAS%257E1.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="201" src="http://1.bp.blogspot.com/-_ZYd41Waoy4/TpghnVr56YI/AAAAAAAACS8/MJMDpXej-B4/s320/PLACAS%257E1.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-QXsfGFH79K0/TpghmYJwMZI/AAAAAAAACSs/bBoDKpVuTtI/s1600/praca136.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="221" src="http://2.bp.blogspot.com/-QXsfGFH79K0/TpghmYJwMZI/AAAAAAAACSs/bBoDKpVuTtI/s320/praca136.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-TWvma8_2Mj0/Tpghm_AGcYI/AAAAAAAACS0/dnb9poZkPok/s1600/Placas-do-Brasil.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="227" src="http://4.bp.blogspot.com/-TWvma8_2Mj0/Tpghm_AGcYI/AAAAAAAACS0/dnb9poZkPok/s320/Placas-do-Brasil.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-oz5h4tTVc2A/TpghnxXNeqI/AAAAAAAACTE/unQWlEd28e8/s1600/placas3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://1.bp.blogspot.com/-oz5h4tTVc2A/TpghnxXNeqI/AAAAAAAACTE/unQWlEd28e8/s320/placas3.jpg" width="261" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-RFrE3Dh4hYg/TpghoycyDnI/AAAAAAAACTU/G4BNBZFXOOw/s1600/tiro.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-RFrE3Dh4hYg/TpghoycyDnI/AAAAAAAACTU/G4BNBZFXOOw/s320/tiro.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-W-2nHKbIUiI/Tpghpjr1i_I/AAAAAAAACTc/-W19-Ndvfh4/s1600/Placas-engra%25C3%25A7adas-03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-W-2nHKbIUiI/Tpghpjr1i_I/AAAAAAAACTc/-W19-Ndvfh4/s1600/Placas-engra%25C3%25A7adas-03.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-enG9BI4M9bU/Tpghq7aX4fI/AAAAAAAACTs/KX2odUGWqDI/s1600/fuxico-na-net-placas-erradas-3.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="http://4.bp.blogspot.com/-enG9BI4M9bU/Tpghq7aX4fI/AAAAAAAACTs/KX2odUGWqDI/s320/fuxico-na-net-placas-erradas-3.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-mJjC7b5yAzs/TpghrgWYATI/AAAAAAAACT0/9chcInd1ENw/s1600/placa_engra%25C3%2583%25C2%25A7ada.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="234" src="http://1.bp.blogspot.com/-mJjC7b5yAzs/TpghrgWYATI/AAAAAAAACT0/9chcInd1ENw/s320/placa_engra%25C3%2583%25C2%25A7ada.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-1o4F6pYNZuw/TpghrzIQDGI/AAAAAAAACT8/bEdzha2PV-k/s1600/placas+erradas.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-1o4F6pYNZuw/TpghrzIQDGI/AAAAAAAACT8/bEdzha2PV-k/s1600/placas+erradas.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-JruAxEfSra4/TpghsemA3rI/AAAAAAAACUE/CK6xolB_6Rs/s1600/photos16.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-JruAxEfSra4/TpghsemA3rI/AAAAAAAACUE/CK6xolB_6Rs/s1600/photos16.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-3ClYGjxeCVg/TpghtNmIg0I/AAAAAAAACUM/XNNuDj5hgow/s1600/1+%25281%2529.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="248" src="http://1.bp.blogspot.com/-3ClYGjxeCVg/TpghtNmIg0I/AAAAAAAACUM/XNNuDj5hgow/s320/1+%25281%2529.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Vj51d7MDFrk/TpghuTO2fAI/AAAAAAAACUU/Cgzq73WulD8/s1600/2008060303572974_1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/-Vj51d7MDFrk/TpghuTO2fAI/AAAAAAAACUU/Cgzq73WulD8/s320/2008060303572974_1.jpg" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-6156413297416322388?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/6156413297416322388/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=6156413297416322388&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6156413297416322388'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6156413297416322388'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/10/ipiraporinha-do-oesta-primeira-cidade.html' title='Ipiraporinha do Oesta a primeira cidade'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-pR9PEL-QIek/TpwKIvD0TdI/AAAAAAAACU4/pra0-GXxeBg/s72-c/montando+uma+cidade+3d+no+blender+-+WIld+Witch+Project.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-6944588180213244447</id><published>2011-10-14T20:11:00.000-07:00</published><updated>2011-10-14T20:17:11.274-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='lua'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Implementações na GameKit pt1</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-8eSKX4M3i-k/TpjydX9BivI/AAAAAAAACUk/M5hYJn3S6Jw/s1600/amostra+codigo+1+-+Wild+Witch+Project.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-8eSKX4M3i-k/TpjydX9BivI/AAAAAAAACUk/M5hYJn3S6Jw/s640/amostra+codigo+1+-+Wild+Witch+Project.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Deu um trampo mexer no CMake. Mas depois que peguei as manhas foi só jogar as coisas.&lt;br /&gt;As classes que eu já tinha montado, &lt;a href="http://www.wildwitchproject.com/2010/12/estudo-de-dados-em-html5.html"&gt;Carregamento de dados pela Web&lt;/a&gt; e &lt;a href="http://www.wildwitchproject.com/2009/11/incorporando-banco-de-dados.html"&gt;Banco de Dados&lt;/a&gt; não deram trabalho adicional para se misturarem no código.&lt;br /&gt;&lt;br /&gt;A OgreKit tem bons recursos, mas não tem o de carregar arquivos de uma página da Internet.&lt;br /&gt;Assim criei minha própria classe de carregamento WWP_URLLoader.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;Além da classe carregar os arquivos da Internet eu adicionei o opcional dela gravar os arquivos numa pasta temporária, antes de iniciar o carregamento o sistema procura por um arquivo correspondente ao endereço sendo carregado e o retorna no lugar do HTML.&lt;br /&gt;&lt;br /&gt;No script Lua fica fácil controlar o cache e sua sintaxe não ficou humanamente ruim:&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;WWPNet.load( "http://url...", "funcaoQueRecebeOsDados", "funcaoQueTrataErros", usarArquivo[true/false])&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Isso também permite que eu carregue imagens e outros arquivos da Internet (como os paths de atualização).&lt;br /&gt;Alguém ai quer por um banner no jogo?&lt;br /&gt;&lt;br /&gt;Outra necessidade foi implementar um banco de dados, a minha classe de SQLite estava pronta. Apesar de primária, apenas retorna uma tabela SQL em forma de metatabela de Lua, ela esta funcionando e dando conta do recado.&lt;br /&gt;&lt;br /&gt;Agora tenho todos os dados de arranque da Engine dentro do banco de dados.&lt;br /&gt;&lt;br /&gt;Agora a engine conta com as seguintes novas funções:&lt;br /&gt;&lt;table style="border: none 0px; width: 90%;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;SQLite.open_database&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;SQLite.close&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;SQLite.getMainDatabase&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;{SQLite}:query&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;{SQLite}:fetch&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;{SQLite}:reset&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;{SQLite}:sql_error&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;WWPNet.load&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;WWPNet.clearCache&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;td&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;WWPNet.checkUpdates&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Preparar para receber funções de Lua em C++ exige bastante cuidado, por isso Lua tem muitas funções de teste. Aqui nesta função eu faço testes para ver se o argumento existe e se o tipo dele bate com a função.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-Ob1TyVhZQV0/Tpj4OiHEzzI/AAAAAAAACUs/4en5Aido9eU/s1600/Captura_de_tela-454.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/-Ob1TyVhZQV0/Tpj4OiHEzzI/AAAAAAAACUs/4en5Aido9eU/s1600/Captura_de_tela-454.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Não notei onde fica isso na GameKit, talvez tenham tido pouca preocupação com isso.&lt;br /&gt;&lt;br /&gt;O próximo trabalho sera fazer uma implementação emergencial para manipular a libRocket.&lt;br /&gt;&lt;br /&gt;Um pouco de desanimo ocorreu quando eu tentei trabalhar com o padrão da GameKit, mas falta comentários no código e o manual das API não passa de um arquivo gerado automaticamente apartir do código, ou seja não tem nenhuma informação a mais além de nomes de variáveis para você adivinhar a funcionalidade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-6944588180213244447?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/6944588180213244447/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=6944588180213244447&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6944588180213244447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6944588180213244447'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/10/implementacoes-na-gamekit-pt1.html' title='Implementações na GameKit pt1'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-8eSKX4M3i-k/TpjydX9BivI/AAAAAAAACUk/M5hYJn3S6Jw/s72-c/amostra+codigo+1+-+Wild+Witch+Project.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-4951245329328897691</id><published>2011-10-13T18:31:00.000-07:00</published><updated>2011-10-13T18:31:27.495-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='cg'/><title type='text'>Casinhas muito simples saindo</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-oV7xGH4tKg4/TpeNwfpR6TI/AAAAAAAACSU/hEZlruVvHdE/s1600/casa_simples_para_o_jogo_wild_witch_project.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="492" src="http://2.bp.blogspot.com/-oV7xGH4tKg4/TpeNwfpR6TI/AAAAAAAACSU/hEZlruVvHdE/s640/casa_simples_para_o_jogo_wild_witch_project.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Voltando a biblioteca de elementos do jogo fiz a casa mais boba possível. Mas é bem eficiente para tapar buracos e tem poucos polígonos. Sempre me baseando na altura da personagem principal.&lt;br /&gt;Irei criar também algumas variações de cor e modelos mais complexos.&lt;br /&gt;Mas mesmo simples a casa tem um troque na manga...&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-dypkOJNoSzM/TpeOWUnWMJI/AAAAAAAACSc/BL1_WMO77AA/s1600/Captura_de_tela-451.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="520" src="http://4.bp.blogspot.com/-dypkOJNoSzM/TpeOWUnWMJI/AAAAAAAACSc/BL1_WMO77AA/s640/Captura_de_tela-451.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Na parte posterior eu fiz uma pedreiragem e fingi que o pedreiro não fechou a parede de trás até o cume do telhado para facilitar mexer na caixa d'aguá.&lt;br /&gt;O espaço entre a caixa d'aguá e a parede é um ponto viável para esconder objetos e uma ótima desculpa para Cibele praticar um "parkour".&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-EvstnUD6klg/TpePVWtVR1I/AAAAAAAACSk/wAj5yEFaQZ0/s1600/Captura_de_tela-449.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-EvstnUD6klg/TpePVWtVR1I/AAAAAAAACSk/wAj5yEFaQZ0/s640/Captura_de_tela-449.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;A textura foi trabalhada direto no GIMP apartir do "oclusion map". Foi tudo bem económico pois essa será uma casa geral.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-4951245329328897691?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/4951245329328897691/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=4951245329328897691&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/4951245329328897691'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/4951245329328897691'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/10/casinhas-muito-simples-saindo.html' title='Casinhas muito simples saindo'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-oV7xGH4tKg4/TpeNwfpR6TI/AAAAAAAACSU/hEZlruVvHdE/s72-c/casa_simples_para_o_jogo_wild_witch_project.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-1941591519442562672</id><published>2011-10-11T15:26:00.000-07:00</published><updated>2011-10-11T15:27:54.225-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ogre'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Olhando de novo a Gamekit</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-06cYBlTMK6s/TpMOaYhFm-I/AAAAAAAACSI/UdJFzh05MDY/s1600/Captura_de_tela-446.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="386" src="http://1.bp.blogspot.com/-06cYBlTMK6s/TpMOaYhFm-I/AAAAAAAACSI/UdJFzh05MDY/s640/Captura_de_tela-446.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Resolvi baixar o release atual da &lt;a href="http://code.google.com/p/gamekit/"&gt;GameKit&lt;/a&gt; e como sempre me surpreendo com a forma que os desenvolvedores da engine refletem meus desejos.&lt;br /&gt;Alias este encontro de ideias foi oque me cativou de inicio.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Recursos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Uma das "features" implementadas é a &lt;a href="http://librocket.com/"&gt;libRoquet&lt;/a&gt; que tem o diferencial de usar uma base em HTML para montar a GUI do game.&lt;br /&gt;&lt;object height="360" width="640"&gt;&lt;param name="movie" value="http://www.youtube.com/v/Mqt7CavpoNo&amp;hl=en_US&amp;feature=player_embedded&amp;version=3"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowScriptAccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/Mqt7CavpoNo&amp;hl=en_US&amp;feature=player_embedded&amp;version=3" type="application/x-shockwave-flash" allowfullscreen="true" allowScriptAccess="always" width="640" height="360"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;br /&gt;Ela tem os métodos clássicos da javascript como innerRML (innerHTML) para alterar o conteúdo de uma DIV por exemplo. E pode usar Python como linguagem de script, mas duvido que eu precise disso.&lt;br /&gt;&lt;br /&gt;Também possui TAGs próprias especiais para criar janelas e outros elementos de GUI.&lt;br /&gt;&lt;br /&gt;As desvantagens esta no fato dela ter sido implementada no C++ mas ainda não na API de script da GameKit.&amp;nbsp;Eu posso implementar os comando que preciso para essa lib mas assim fico fora do contexto dos desenvolvedores da GameKit.&lt;br /&gt;E tem o CSS que fica um pouco mais carregado pois usa-se muito a propriedade background para fazer o mapeamento de texturas para as imagens dos elementos da interface (botões, barras, etc).&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Imagens&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-NZwdxPGEVTU/TpNOvzZf66I/AAAAAAAACSQ/JGMYIe0WaOU/s1600/imagem_11_2011_512x521.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-NZwdxPGEVTU/TpNOvzZf66I/AAAAAAAACSQ/JGMYIe0WaOU/s1600/imagem_11_2011_512x521.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Todas as imagens tem que ser de tamanho base 2 (128x128, 256x256...) pois apesar dos micros desktop não terem mais essa limitação desenvolver para Android e iPhone ainda requer este cuidado.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Facilidade meeesmo&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-YGax3ewA_ic/TpMS4dKDYpI/AAAAAAAACSM/2IQ31uNCtw4/s1600/Captura_de_tela-445.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-YGax3ewA_ic/TpMS4dKDYpI/AAAAAAAACSM/2IQ31uNCtw4/s640/Captura_de_tela-445.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;A vantagem crucial na GameKit é a integração com o Blender, após abrir o .blend ele ainda converte a cena para a OGRE&amp;nbsp;em "tempo de execução".&lt;br /&gt;&lt;br /&gt;Escrever os atributos para um material no Editor de Texto pode assustar os preguiçosos, mas é onde dá pra fazer muito mais na engine doque simplesmente usar os materiais nativos do Blender.&lt;br /&gt;&lt;br /&gt;Outro cuidado especial é com a Luz, nativamente a GameKit ativa o uso de lâmpadas e projeção de sombras o que reduz a performance consideravelmente pois todo objeto emite sombra. Ai é melhor desligar e fazer ajustes manuais.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;Versões da GameKit&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Ao baixar o demo, o editor e o código fonte vi que havia uma disparidade entre as versões.&lt;br /&gt;Oque significa que se você for usar uma função mais nova, como controlar os "overlays" de imagens por exemplo, dará erro no editor.&lt;br /&gt;&lt;br /&gt;A solução foi compilar o ultimo release de código.&lt;br /&gt;Me atrapalhei todo com o CMAKE, simplesmente me perco na sintaxe de configuração dele. Acabei modificando diretamente o fonte de um dos samples para se adequar a meus propósitos.&lt;br /&gt;&lt;br /&gt;E no presente momento ainda não consegui compilar no Windows.&lt;br /&gt;A versão para Android também esta na reta e será o próximo desafio, tanto que a tela de testes se baseia na proporção da tela do Galaxy com 1024 x 600 pixels.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Por hora&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Estou implementando coisas básicas como a SQLite, CURL e TinyXML pois estes são simples de inserir no sistema.&lt;br /&gt;Bom, na verdade o CMake esta se mostrando muito sinistro. Só para linkar a CURL eu apanhei dele um dia inteiro.&lt;br /&gt;&lt;br /&gt;Mas arrumado ele garante que logo soltarei um executável de testes ao menos rodando algumas animações.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-large;"&gt;&lt;b&gt;Informação Bonus&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;h3&gt;&lt;b&gt;Corrigindo o erro&amp;nbsp;warning: the use of `tmpnam' is dangerous, better use `mkstemp':&lt;/b&gt;&lt;/h3&gt;Na linha 657 do arquivo luaconfi.h subistitua:&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;#define lua_tmpnam(b,e) &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; { e = (tmpnam(b) == NULL); }&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;por&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;#define lua_tmpnam(b,e)&lt;span class="Apple-tab-span" style="white-space: pre;"&gt;  &lt;/span&gt;{ e = (mkstemp(b) == NULL); }&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Na linha 117 do arquivo OgreDeflate.cpp subistitua o trecho:&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;// Write to temp file&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;char tmpname[L_tmpnam];&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;tmpnam(tmpname);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;mTempFileName = tmpname;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;std::fstream *f = OGRE_NEW_T(std::fstream, MEMCATEGORY_GENERAL)();&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;f-&amp;gt;open(tmpname, std::ios::binary | std::ios::out);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;mTmpWriteStream = DataStreamPtr(OGRE_NEW FileStreamDataStream(f));&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;por&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;// Write to temp file&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;char tmpname[L_tmpnam];&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;mkstemp(tmpname);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;mTempFileName = tmpname;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;std::fstream *f = OGRE_NEW_T(std::fstream, MEMCATEGORY_GENERAL)();&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;f-&amp;gt;open(tmpname, std::ios::binary | std::ios::out);&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #134f5c; font-family: 'Courier New', Courier, monospace; font-size: x-small;"&gt;&lt;b&gt;mTmpWriteStream = DataStreamPtr(OGRE_NEW FileStreamDataStream(f));&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esse errinho chato acontece por usarem uma função considerada não "standard".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-1941591519442562672?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/1941591519442562672/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=1941591519442562672&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/1941591519442562672'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/1941591519442562672'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/10/olhando-de-novo-gamekit.html' title='Olhando de novo a Gamekit'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-06cYBlTMK6s/TpMOaYhFm-I/AAAAAAAACSI/UdJFzh05MDY/s72-c/Captura_de_tela-446.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-8667349457908343761</id><published>2011-10-10T05:53:00.000-07:00</published><updated>2011-10-10T05:53:54.445-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='storyboard'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><title type='text'>Cibele contra o Supremo Sumu Sacerdote Maligno</title><content type='html'>&lt;div&gt;&lt;object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="2a91480f-162a-dfe0-df60-1ca94f534936" style="height: 298px; width: 420px;"&gt;&lt;param name="movie" value="http://static.issuu.com/webembed/viewers/style1/v2/IssuuReader.swf?mode=mini&amp;amp;backgroundColor=%23222222&amp;amp;documentId=111005135043-be2dfeda0313404e813dc818a1e31b45" /&gt;&lt;param name="allowfullscreen" value="true"/&gt;&lt;param name="menu" value="false"/&gt;&lt;param name="wmode" value="transparent"/&gt;&lt;embed src="http://static.issuu.com/webembed/viewers/style1/v2/IssuuReader.swf" type="application/x-shockwave-flash" allowfullscreen="true" menu="false" wmode="transparent" style="width:420px;height:298px" flashvars="mode=mini&amp;amp;backgroundColor=%23222222&amp;amp;documentId=111005135043-be2dfeda0313404e813dc818a1e31b45" /&gt;&lt;/object&gt;&lt;br /&gt;&lt;div style="text-align: left; width: 420px;"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&lt;a href="http://issuu.com/bitetti/docs/cibele_o_ataque_do_sacerdote_maligno?mode=window&amp;amp;backgroundColor=%23222222" target="_blank"&gt;Open publication&lt;/a&gt; - Free &lt;a href="http://issuu.com/" target="_blank"&gt;publishing&lt;/a&gt; - &lt;a href="http://issuu.com/search?q=anime" target="_blank"&gt;More anime&lt;/a&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;br /&gt;Com certeza eu andei vendo muito Lost Canvas na hora que pensei nesse story-board.&lt;br /&gt;Dessa vez eu passei corretor ortográfico na parada, li 5 vezes (nada de escrever "princesa" Léia sem acento) e coloquei marcações de camera e indicações de ações do jogo.&lt;br /&gt;&lt;br /&gt;Explicação para os leigos que entraram aqui por engano&lt;br /&gt;Um Story-Board é um rascunho de como deve ser uma animação ou desenho animado.&lt;br /&gt;No caso esta é uma animação para um jogo.&lt;br /&gt;;P&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-8667349457908343761?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/8667349457908343761/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=8667349457908343761&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/8667349457908343761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/8667349457908343761'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/10/cibele-contra-o-supremo-sumu-sacerdote.html' title='Cibele contra o Supremo Sumu Sacerdote Maligno'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-1609382587473158571</id><published>2011-10-09T15:32:00.000-07:00</published><updated>2011-10-09T15:32:44.939-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notícia'/><title type='text'>Retornando do mundo dos mortos</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-scn2xxZWPLE/TpIWRCaZUBI/AAAAAAAACSE/7SFqLEe0oRg/s1600/cibele_menina_corredor_2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/-scn2xxZWPLE/TpIWRCaZUBI/AAAAAAAACSE/7SFqLEe0oRg/s640/cibele_menina_corredor_2.jpg" width="532" /&gt;&lt;/a&gt;&lt;/div&gt;Há meses eu tive que abortar todos os projetos profissionais e pessoais e até a vida pessoal parou.&lt;br /&gt;&lt;br /&gt;Bom perdi sangue suficiente para ressuscitar uma armadura do Zodíaco. E acreditem a sensação é bastante desanimadora.&lt;br /&gt;Agora menos uns órgãos internos no abdomem mas o que sobrou esta operativo. No final do ano já devo estar arriscando carne de porco XP&lt;br /&gt;Meus amigos não me reconhecem já que emagreci quase 20kg!&lt;br /&gt;&lt;br /&gt;No começo não aguentava nem 20 min no PC, agora fazendo meu exercício nerd diário estou extendendo o tempo para quase 2 horas consecutivas e logo estarei em forma.&lt;br /&gt;&lt;br /&gt;Ao longo dos dias irei relatar meus avanços. E continuar com os planos.&lt;br /&gt;Além do &lt;a href="http://www.wildwitchproject.com/"&gt;WWP&lt;/a&gt; também estarei retornando para a &lt;a href="http://www.rpgvale.com.br/"&gt;RPG Vale&lt;/a&gt; XD&lt;br /&gt;&lt;br /&gt;E caçando uns freelas pra complementar a renda porque ficar na mão do INSS mesmo que por alguns meses é um decreto de entrada no SPC.&lt;br /&gt;&lt;br /&gt;Enjoy.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-1609382587473158571?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/1609382587473158571/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=1609382587473158571&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/1609382587473158571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/1609382587473158571'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/10/retornando-do-mundo-dos-mortos.html' title='Retornando do mundo dos mortos'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-scn2xxZWPLE/TpIWRCaZUBI/AAAAAAAACSE/7SFqLEe0oRg/s72-c/cibele_menina_corredor_2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-7760548207627611620</id><published>2011-07-17T15:01:00.000-07:00</published><updated>2011-07-17T15:01:54.596-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Mais rascunhos da interface de usuário (ui)</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-iOWlULliVLQ/TiM0EoRx8-I/AAAAAAAACRo/VmS4-cVu4Bo/s1600/esboco_char_status_01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://2.bp.blogspot.com/-iOWlULliVLQ/TiM0EoRx8-I/AAAAAAAACRo/VmS4-cVu4Bo/s640/esboco_char_status_01.jpg" width="496" /&gt;&lt;/a&gt;&lt;/div&gt;Este é o esboço de tela do status do personagem, pude reaproveitar a mesma tela de análise dos atributos nela (direita), elta tem acordions que mostram os elementos.&lt;br /&gt;Mas estou pensando seriamente em deixar a tela com o boneco separada e esta como uma expansão.&lt;br /&gt;De fato a maior conclusão que tenho é que preciso comprar um tabletpc com Android logo.&lt;br /&gt;&lt;br /&gt;A ideia, ou devaneio melhor dizendo, é um modelo que as partes do corpo afetadas sejam mostradas separadas, por exemplo uma perna inutilizada já é o suficiente para reduzir a agilidade e destreza para zero.&lt;br /&gt;No entanto esse raciocínio serve apenas para os membros inferiores, bloquear com escudos e outros recursos já não faria tanta diferença.&lt;br /&gt;Traduzindo isto para uma linguagem de programador é assim: "Fudeu que o bicho vai pega feio!"&lt;br /&gt;Então por enquanto isso fica no conceito. Pois no próprio manual do Daemon não encontrei nada que tratasse afundo o problema.&lt;br /&gt;&lt;br /&gt;De fato acho que pegar a colisão pelas boundboxes dos bones e informar o dano do membro para o script e usar um número geral para mostrar na tela a saúde do personagem e tratar os eventos com uns "ifs" para verificar se o membro usado na ação pode ser usado parece uma saída óbvia, mas não creio que será simples.&lt;br /&gt;Voltar a UML talves me ajude a solucionar o problema.&lt;br /&gt;&lt;br /&gt;Outro elemento é o mostrador de eventos, indicando quais efeitos o personagem esta sofrendo (vantagens e desvantagens ativas no momento, venenos, buffs, etc) e as ocorrências.&lt;br /&gt;&lt;br /&gt;&lt;div style="color: #444444;"&gt;&lt;i&gt;Imagino no meio do jogo aparecer: "-10HP de dano, desconhecido".&lt;/i&gt;&lt;/div&gt;&lt;i style="color: #444444;"&gt;Só pra fazer o jogador se virar e ativar os sentidos especiais para achar criaturas invisíveis.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Estética&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Os ícones e outros elementos gráficos também estou com um pouco de dificuldade para manter a identidade.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-H3VXKCdMafw/TiMvKWRL2eI/AAAAAAAACRk/aPUTpn2Di_E/s1600/Captura_de_tela-410.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-H3VXKCdMafw/TiMvKWRL2eI/AAAAAAAACRk/aPUTpn2Di_E/s1600/Captura_de_tela-410.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;O coração à esquerda foi um dos primeiros rascunhos que fiz, há uns 2 anos acho, com uma horrenda influência da moda. Lembram? Tudo cristalzinho como o iMac.&lt;br /&gt;O ideal é chegar no conceito dos dois outros ícones retirados do &lt;a href="http://www.wildwitchproject.com/2009/12/icones-e-sua-identidade-visual.html"&gt;set do Mattahan&lt;/a&gt;, um óptimo artista que achei no Deviant Art.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Textos&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Já estou inserindo os textos em português na interface.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-MtwRdHPxehw/TiLlvVOvPfI/AAAAAAAACRY/jUHndLwdUMQ/s1600/Captura_de_tela-407.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-MtwRdHPxehw/TiLlvVOvPfI/AAAAAAAACRY/jUHndLwdUMQ/s1600/Captura_de_tela-407.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Eu optei por usar o &lt;a href="http://pt.wikipedia.org/wiki/Markdown"&gt;Markdown&lt;/a&gt; para fazer os textos, se forem olhar pela Internet todos os RPG (MMORPG na verdade) usam textos simples, e Markdown oferece uma simplicidade muito grande de se trabalhar.&lt;br /&gt;Notem que na imagem ainda falta alguns bugs na minha implementação.&lt;span style="font-size: xx-small;"&gt; (não achei nenhuma implementação em AS3 pronta)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Recursos (Resources)&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;E por enquanto o melhor de todos os métodos para organizar os resurces do jogo é usar o "Gerenciador de Arquivo" XD&lt;br /&gt;Simples e prático, organizo todos os elementos em pastas, e ainda tenho a vantagem do "Link Simbólico" deixando o sistema bem flexível.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-XzrLnFaU0U4/TiL-DVImebI/AAAAAAAACRg/g9wRdex7AKA/s1600/Captura_de_tela-409.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="484" src="http://2.bp.blogspot.com/-XzrLnFaU0U4/TiL-DVImebI/AAAAAAAACRg/g9wRdex7AKA/s640/Captura_de_tela-409.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;Depois basta eu comprimir tudo num arquivo store.zip e incorpora-lo no SWF.&lt;br /&gt;Assim basta eu usar:&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: #38761d;"&gt;GUIManager.&lt;/span&gt;&lt;span style="color: #134f5c;"&gt;addDica&lt;/span&gt;( &lt;span style="color: #38761d;"&gt;WText&lt;/span&gt;.&lt;span style="color: #134f5c;"&gt;parse&lt;/span&gt;(&lt;span style="color: #990000;"&gt;"strings/pt.br/ui/dicas/interface/dica001&lt;/span&gt;"), mpointer, &lt;span style="color: blue;"&gt;300&lt;/span&gt;,&lt;span style="color: blue;"&gt;50&lt;/span&gt; );&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Enquanto OGRE e GameKit tem seus próprios gerenciadores de recursos (todo e qualquer elemento que compõe o aplicativo) eu não tinha a mesma opção dentro do Flash.&lt;br /&gt;Mesmo o Away3D tendo o seu próprio eu achei melhor começar um customizado para o sistema de cargas do jogo.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-GoYTeK6u7DU/TiLOxz7a4EI/AAAAAAAACRM/gzQn6yV7Zzw/s1600/Captura_de_tela-404.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="374" src="http://3.bp.blogspot.com/-GoYTeK6u7DU/TiLOxz7a4EI/AAAAAAAACRM/gzQn6yV7Zzw/s640/Captura_de_tela-404.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Desenvolver um mecanismo que trabalhe simultâneo com o C++ não seria problema, mas decidir se o recurso será carregado de imediato ou será feito um download deixou a coisa mais confusa.&lt;br /&gt;Resolvi testar dois métodos, um para download e outro de carga imediata.&lt;br /&gt;&lt;br /&gt;Em elementos como imagens eu posso usar o carregamento tipo download, desenhando o mesmo no evento onLoad.&lt;br /&gt;&lt;br /&gt;Já em casos como os scripts Lua a coisa é mais complicada, o ideal é que todos os arquivos já tenham sido carregados.&lt;br /&gt;O sistema ainda não suporta múltiplas formas de recursos, como um ZIP e um SQLite juntos.&lt;br /&gt;&lt;br /&gt;Uma coisa interessante no desenvolvimento de jogos é que você acaba sempre usando recursos que nunca imaginaria usar.&lt;br /&gt;Eu por exemplo nunca dei bola para as Interfaces, mesmo porque bastava herdar classes e resolvia tudo. Criar interfaces sempre foi um processo extra de digitação que só come tempo.&lt;br /&gt;Mas finalmente surgiu a necessidade de usá las. Em termos leigos crio um "template" de classe e crio classes para manipular arquivos ZIP, SQLite, downloads e etc e trabalho nelas como se fossem a mesma coisa.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Preparando ambiente de testes&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Estou fazendo uns testes com o Logmein Hamachi, um bom mecanismo de VPN.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-Sgp7ErG3RgU/TiLO1KOuNlI/AAAAAAAACRQ/9SG7Cvj7ltg/s1600/Captura_de_tela-405.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="254" src="http://4.bp.blogspot.com/-Sgp7ErG3RgU/TiLO1KOuNlI/AAAAAAAACRQ/9SG7Cvj7ltg/s640/Captura_de_tela-405.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Imagino que com um Samba habilitado e um mecanismo de sockets eu consiga um bom sistema de comunicação.&lt;br /&gt;Outras alternativas seriam a Dropbox, mas essa além de não ter um controle adequado, não gerência feedback.&lt;br /&gt;&lt;br /&gt;Sim, é oque estão pensando, eu estou realmente pensando em preparar UI para testes com usuários.&lt;br /&gt;Talvez eu use o Facebook para isso, afinal é um ambiente online que o povo esta acostumado, apesar de ter uma usabilidade porca para foruns.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-7760548207627611620?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/7760548207627611620/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=7760548207627611620&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/7760548207627611620'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/7760548207627611620'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/07/mais-rascunhos-da-interface-de-usuario.html' title='Mais rascunhos da interface de usuário (ui)'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-iOWlULliVLQ/TiM0EoRx8-I/AAAAAAAACRo/VmS4-cVu4Bo/s72-c/esboco_char_status_01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-4828256854946630311</id><published>2011-07-10T19:06:00.000-07:00</published><updated>2011-07-10T19:06:35.849-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Marketing'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='cenário'/><category scheme='http://www.blogger.com/atom/ns#' term='blender'/><title type='text'></title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-dNhbJNDi2zc/ThpWew7D_xI/AAAAAAAACQU/f4NlgVfK-os/s1600/Captura_de_tela-400.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-dNhbJNDi2zc/ThpWew7D_xI/AAAAAAAACQU/f4NlgVfK-os/s640/Captura_de_tela-400.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Nada como uma boa taverna é um ótimo ponto de encontro. Tem cerveja, tem carne, tem sangue, informantes, assassinos e mercenários com preços módicos, bebados, ratos, baratas e as vezes até pessoas normais podem ser encontradas.&lt;br /&gt;&lt;br /&gt;Uma bem localizada em um vilarejo é um bom centro para o jogador se estruturar na história.&lt;br /&gt;O papo dos bebados pode mudar conforme o jogo para mostrar a história correndo, posso fazer a banda tocar musicas, seria um bom meio de obter contribuições de pessoas para o jogo. Tipo: "mande sua musica e veja ela num jogo" XD&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/qEhIDJ63fFM" width="640"&gt;&lt;/iframe&gt;&lt;br /&gt;Economizei o máximo de poligonos que pude na modelagem.&lt;br /&gt;Mas em alguns lugares percebi que não havia muito sentido, como nos paus do corrimão. Afinal um pouco de embelezamento é essencial.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-8ebIdp6xjWI/ThpXkfdBAEI/AAAAAAAACQY/4vKOhToyB0s/s1600/Captura_de_tela-399.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-8ebIdp6xjWI/ThpXkfdBAEI/AAAAAAAACQY/4vKOhToyB0s/s640/Captura_de_tela-399.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;As molduras dos quadros também, são 80% texturas.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-mBgbPH_cXoQ/ThpaLfjh-pI/AAAAAAAACQc/RaCEPGdndOM/s1600/Captura_de_tela-395.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="http://4.bp.blogspot.com/-mBgbPH_cXoQ/ThpaLfjh-pI/AAAAAAAACQc/RaCEPGdndOM/s320/Captura_de_tela-395.jpg" width="254" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Alguns elementos também, os cilindros e esferas consomem muitos poligonos para ficarem razoavelmente com cara de redondos.&lt;br /&gt;&lt;br /&gt;Tem coisas que ralmente não tive imaginação como no nome da bebida: "Pinga chapa ogre"&lt;br /&gt;&lt;br /&gt;Mas tudo bem. A coisa esta andando.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-4828256854946630311?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/4828256854946630311/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=4828256854946630311&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/4828256854946630311'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/4828256854946630311'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/07/nada-como-uma-boa-taverna-e-um-otimo.html' title=''/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-dNhbJNDi2zc/ThpWew7D_xI/AAAAAAAACQU/f4NlgVfK-os/s72-c/Captura_de_tela-400.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-7458079692043430593</id><published>2011-07-10T12:01:00.000-07:00</published><updated>2011-07-10T12:01:00.067-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><title type='text'>Atualizações do HUD em Flash</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-isPx1pv_DFc/Thnt2F4TABI/AAAAAAAACQE/h-Mknbo3CAU/s1600/Captura_de_tela-398.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="364" src="http://3.bp.blogspot.com/-isPx1pv_DFc/Thnt2F4TABI/AAAAAAAACQE/h-Mknbo3CAU/s640/Captura_de_tela-398.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Duvido muito que eu vá encontrar todo o poder do Flash em algum outro sistema de GUI para games.&lt;br /&gt;Na verdade cheguei a ver que já existem um &lt;a href="http://gskinner.com/talks/KGC/"&gt;frameworks comerciais&lt;/a&gt; para usar gráficos de Flash nas GUIs de jogos. Tadinhas das grandes empresas, nós já tínhamos o &lt;a href="http://www.ogre3d.org/tikiwiki/Hikari"&gt;Hikari&lt;/a&gt; faz séculos.&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="390" src="http://www.youtube.com/embed/4RZ9On5YIuU" width="480"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;a href="http://2.bp.blogspot.com/-91WjAnjkhCk/ThnwfuXcK1I/AAAAAAAACQI/jVLWfqlHp4Y/s1600/Captura_de_tela-384.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-91WjAnjkhCk/ThnwfuXcK1I/AAAAAAAACQI/jVLWfqlHp4Y/s1600/Captura_de_tela-384.png" /&gt;&lt;/a&gt;Basicamente eu trabalho com duas camadas, uma para a arte do HUD e outra com as janelas nativas da ASWing.&lt;br /&gt;Ainda sobre a ASWing eu tenho uma camada para efeitos especiais, usando uma biblioteca de partículas e os recursos nativos de desenho do Flash.&lt;br /&gt;&lt;br /&gt;O mostrador genérico do personagem exibe 3 atributos básicos, criados apartir do zero mesmo. Além dos famosos HP e MP mostro também o poder da armadura.&lt;br /&gt;&lt;br /&gt;Logo irei trabalhar na tela de inventário que havia comentado com vocês neste &lt;a href="http://www.wildwitchproject.com/2010/08/concept-de-bolsa-de-iventario.html"&gt;post sobre a bolsa da personagem&lt;/a&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-YMSnpDeYTWs/Thnx_EwPoLI/AAAAAAAACQM/CfNIdzTavT8/s1600/Captura_de_tela-383.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-YMSnpDeYTWs/Thnx_EwPoLI/AAAAAAAACQM/CfNIdzTavT8/s640/Captura_de_tela-383.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;O gráfico foi feito no Blender, ainda estou no começo dela e tenho que refinar bastante tanto o design quanto a animação.&lt;br /&gt;Mas o resultado deve ficar bem dinâmico.&lt;br /&gt;&lt;br /&gt;Apesar de que terei que me esforçar um pouco para economizar KBytes, pois ficou uma sequência de 24 frames em .PNG.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-nhJQGITYIy0/Thn0F-sn-pI/AAAAAAAACQQ/sLc8IdnZLT0/s1600/Captura_de_tela-382.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="475" src="http://3.bp.blogspot.com/-nhJQGITYIy0/Thn0F-sn-pI/AAAAAAAACQQ/sLc8IdnZLT0/s640/Captura_de_tela-382.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Meu grande problema atualmente é não saber o quanto posso contar com o Molehill para o Engine de 3D.&lt;br /&gt;E infelizmente a Adobe oficialmente parou de dar suporte ao AIR para Linux. Infelizmente os downloads de AIR já são pequenos para plataformas como Windows e OSX e essa proporção diminuio com a proporção de usuários Linux.&lt;br /&gt;Em outras palavras AIR não é mais totalmente multiplataforma mesmo aceitando Android, OSX e Windows. Um ponto bem negativo para a Adobe.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-7458079692043430593?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/7458079692043430593/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=7458079692043430593&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/7458079692043430593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/7458079692043430593'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/07/atualizacoes-do-hud-em-flash.html' title='Atualizações do HUD em Flash'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-isPx1pv_DFc/Thnt2F4TABI/AAAAAAAACQE/h-Mknbo3CAU/s72-c/Captura_de_tela-398.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-5821493804115245293</id><published>2011-06-22T06:21:00.000-07:00</published><updated>2011-07-10T12:01:35.953-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Base estrutural do jogo feita [alpha]</title><content type='html'>&lt;a href="https://picasaweb.google.com/lh/photo/7Na7a-LT0cYBgxQEf-1DU_IbKX_lYjjGH5wVS76L8Zs?feat=embedwebsite"&gt;&lt;img height="245" src="https://lh4.googleusercontent.com/-FM6NonbV5VI/TgHeA0qzYOI/AAAAAAAACDM/rQI0FAWOK7c/s640/Captura_de_tela-372.jpg" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;Fiz algumas implementações mais robustas no ambiente de teste.&lt;br /&gt;Terminei a conexão com o ambiente Lua e estou adicionando funções para ajudar a monitorar os objetos.&lt;br /&gt;Seguindo a dica do &lt;a href="http://twitter.com/#%21/o_rpgista"&gt;Alexandre (@O_RPGista)&lt;/a&gt;&amp;nbsp;estou usando o &lt;a href="http://www.daemon.com.br/rpgwiki/index.php?title=Sistema_Daemon"&gt;Sistema Daemon&lt;/a&gt;, apesar de ainda não ter noção total da possibilidade de uso ainda é uma boa pedida, mesmo porque muita coisa terei que modificar, tornar mais simples, etc.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;Uma coisa que percebi é que os MMORPG da vida viciaram o povo em barras de vida e magia grandes, bem incompatíveis com o RPG de mesa, por exemplo é comum ter HP 5 na mesa, mas no PC os números podem ser maiores, inclusive para dar a sensação de ver a vida se esvaindo na tela.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;A engine gráfica&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;Pode ser que eu esteja perdendo tempo, afinal OGRE me oferece um ambiente estupidamente completo enquanto Molehill ainda esta em desenvolvimento.No entanto ele é muito bem convidativo. Ainda mais se analisar a facilidade que é você incorporar bibliotecas na AS3.&lt;br /&gt;Por enquanto estou estruturando as coisas pelo FlashDevelop via máquina virtual, mas o FlexSDK permite que eu compile direto no Linux, coisa que será muito útil na hora que eu estiver incorporando mais media.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;Na verdade estou fazendo muitos estudos em "me dar" um &lt;a href="http://fdt.powerflasher.com/blog/tag/eclipse/"&gt;FDP&lt;/a&gt; de Natal.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;A estrutura interna&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="https://picasaweb.google.com/lh/photo/rOXCDAYdcr4agYHRWthXrfIbKX_lYjjGH5wVS76L8Zs?feat=embedwebsite"&gt;&lt;img height="412" src="https://lh3.googleusercontent.com/-LcGkJjPZe-o/TgHeAQhg0QI/AAAAAAAACDI/ON9VzYrIU4I/s640/Captura_de_tela-371.jpg" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;Ainda sigo os mesmos padrões do desenvolvimento usando OGRE (mesmo porque eu sempre copiava o Flash).&lt;br /&gt;No entanto esta parecendo mais viável fazer tudo pela AS3 doque incorporar SWF no C++, assim tenho mais recursos de interface para usuário.&lt;br /&gt;&lt;br /&gt;A incorporação de bibliotecas é simples, e eu estou incorporando sem medo já que o projeto é off-line.&lt;br /&gt;&lt;br /&gt;Aquela pasta lua_assets foi bem chatinha de incorporar, o VMWare não seguia os links simbólicos do Linux e o projeto em Lua estava em outra pasta de trabalho (recursos que o povo que usa NTFS nem imagina, mas como são eficientes XP). Por sorte foi &lt;a href="http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&amp;amp;cmd=displayKC&amp;amp;externalId=1007277"&gt;fácil resolver&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Estou usando a ASWing mesmo, além de poder usar o editor dela também posso usar o Eclipse ou NetBeans pra fazer o esqueleto da GUI. &lt;span class="Apple-style-span" style="font-size: x-small;"&gt;("código auto gerado")&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-5821493804115245293?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/5821493804115245293/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=5821493804115245293&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/5821493804115245293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/5821493804115245293'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/06/base-estrutural-do-jogo-feita-alpha.html' title='Base estrutural do jogo feita [alpha]'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh4.googleusercontent.com/-FM6NonbV5VI/TgHeA0qzYOI/AAAAAAAACDM/rQI0FAWOK7c/s72-c/Captura_de_tela-372.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-395541438647952646</id><published>2011-06-19T21:00:00.000-07:00</published><updated>2011-06-19T21:00:45.497-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Alguns videos do projeto</title><content type='html'>Um software pra capturar desktop e o som dos coolers à noite dá nisso.&lt;br /&gt;&lt;br /&gt;O primeiro é um teste que estou montando com umas bibliotecas novas.&lt;br /&gt;O segundo é eu fazendo mediçoes na malha e o corte dela para criar a estrutura da torre.&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="500" src="http://www.youtube.com/embed/245S_fPBt5U" width="600"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;iframe allowfullscreen="" frameborder="0" height="500" src="http://www.youtube.com/embed/kU4MsPMMkqQ" width="600"&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;AS bibliotecas em AS3 que estou usando são:&lt;br /&gt;Lua-Alchemy - &lt;a href="http://code.google.com/p/lua-alchemy"&gt;http://code.google.com/p/lua-alchemy&lt;/a&gt;/&lt;br /&gt;aswing - &lt;a href="http://www.aswing.org/"&gt;http://www.aswing.org/&lt;/a&gt;&lt;br /&gt;flash-console  -  &lt;a href="http://code.google.com/p/flash-console/"&gt;http://code.google.com/p/flash-console/&lt;/a&gt;&lt;br /&gt;FZip - &lt;a href="http://codeazur.com.br/lab/fzip/"&gt;http://codeazur.com.br/lab/fzip/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-395541438647952646?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/395541438647952646/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=395541438647952646&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/395541438647952646'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/395541438647952646'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/06/alguns-videos-do-projeto.html' title='Alguns videos do projeto'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/245S_fPBt5U/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-382212695405124913</id><published>2011-06-19T06:09:00.000-07:00</published><updated>2011-06-19T06:09:58.358-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='inteligência artificial'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Retomando os estudos Lua-Alchemy e Orientação à Objeto</title><content type='html'>&lt;span&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-MixxYnPHPoI/Tf3yJ9yKpvI/AAAAAAAACC4/1qngFyTh_s0/s1600/header_lua_alchemy_loop.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="446" src="http://3.bp.blogspot.com/-MixxYnPHPoI/Tf3yJ9yKpvI/AAAAAAAACC4/1qngFyTh_s0/s640/header_lua_alchemy_loop.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;Animado com o avanço do &lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;Molehill&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt; e retomando os testes com Inteligência Artificial fui rever o sistema e checar os &lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;updates&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt; do &lt;a href="http://code.google.com/p/lua-alchemy/"&gt;Lua-Alchemy&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;Seguindo a orientação do pessoal do &lt;a href="http://groups.google.com/group/lua-br"&gt;grupo de debates sobre Lua&lt;/a&gt; eu passei a usar uma biblioteca chamada &lt;a href="http://loop.luaforge.net/"&gt;LOOP&lt;/a&gt; para fazer a implementação de classes em Lua.&lt;/span&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;LOOP trabalha usando "&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;módulos&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;" assim eu posso separar as classes em arquivos.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-UuB4KPfGqRU/Tf3zd9oRvBI/AAAAAAAACC8/z3L_Wp4HDhM/s1600/Captura_de_tela-367.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://4.bp.blogspot.com/-UuB4KPfGqRU/Tf3zd9oRvBI/AAAAAAAACC8/z3L_Wp4HDhM/s1600/Captura_de_tela-367.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;Eu organizei as classes de forma a &lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;reaproveitar&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt; o código entre elas e defini classes para os atributos e &lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;modificadores&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-JHWrmBqRiCc/Tf3znCBcUcI/AAAAAAAACDA/7ENp15z3gto/s1600/Captura_de_tela-366.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-JHWrmBqRiCc/Tf3znCBcUcI/AAAAAAAACDA/7ENp15z3gto/s1600/Captura_de_tela-366.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;Assim se um personagem precisar de resistência a veneno ou coisa assim basta &lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;acoplar&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt; o "&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;modificador&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt; resistência a veneno" na &lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;metatabela&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt; "&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;modificadores&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;" do mesmo.&lt;/span&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/-BQzu3ucjnVY/Tf3z3Ba8YnI/AAAAAAAACDE/nAQwbBXxV4E/s1600/Captura_de_tela-368.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="614" src="http://2.bp.blogspot.com/-BQzu3ucjnVY/Tf3z3Ba8YnI/AAAAAAAACDE/nAQwbBXxV4E/s640/Captura_de_tela-368.jpg" width="640" /&gt;&lt;/a&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;Para minha alegria o projeto Lua-Alchemy &lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;evolúio&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt; bastante oferecendo um suporte perfeito para a linguagem.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;Agora eu posso carregar os arquivos .lua de qualquer maneira que precisar, eles podem ser deixados localmente no cliente através do sistema de &lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;armazenamento&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt; do Flash, podem ser carregados de uma base &lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;SQLite&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt; ou no caso que estou usando num ZIP.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;A implementação do Lua-Alchemy é tranqüila, funciona como no C tendo como única diferença que nós precisamos de uma classe &lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;Assets&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt; para inserir na memória os arquivos soltos.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;Eu resolvi isso com o auxílio de outra biblioteca que lê arquivos &lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;zip&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;Falei um pouco da &lt;a href="http://as3devs.com.br/2011/marcosbitetti/lendo-arquivos-com-compressao-zip-pelo-flash/"&gt;implementação dessa biblioteca na ASDevs&lt;/a&gt;. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;Modifiquei no &lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;FlashDevelop&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt; para executar uma série de comandos de &lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;Shell&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt; antes de compilar (&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;pre&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;-&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;buind&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt; &lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;commands&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;) ele comprime em .&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;zip&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt; todo o sistema em lua e depois incorpora o .&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt;zip&lt;/span&gt;&lt;span style="font-family: Minion Pro; font-size: 12pt;"&gt; dentro do SWF. O resultado é um acréscimo de 2Kb no SWF.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-382212695405124913?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/382212695405124913/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=382212695405124913&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/382212695405124913'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/382212695405124913'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/06/retomando-os-estudos-lua-alchemy-e.html' title='Retomando os estudos Lua-Alchemy e Orientação à Objeto'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-MixxYnPHPoI/Tf3yJ9yKpvI/AAAAAAAACC4/1qngFyTh_s0/s72-c/header_lua_alchemy_loop.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-1871242210879255747</id><published>2011-06-05T09:45:00.000-07:00</published><updated>2011-06-05T12:58:31.370-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sketches'/><title type='text'>Preparando um header de blog com Molehill</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-csC8tV5-YcE/TeuyReBIEUI/AAAAAAAAB-c/CNJUdMiYAng/s1600/vestir2_cores.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="422" src="http://2.bp.blogspot.com/-csC8tV5-YcE/TeuyReBIEUI/AAAAAAAAB-c/CNJUdMiYAng/s640/vestir2_cores.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;Concept da tela do novo header, além de embelezar o blog esse header irá me dar um feedback da nova tecnología da Adobe o Molehill. &lt;/div&gt;&lt;br /&gt;Este header também irá incorporar a nuvem de tags que fica no rodapé do blog, ele foi bem &lt;a href="http://www.wildwitchproject.com/2009/10/experiencia-do-usuario.html"&gt;projetado mas usando tecnología antiga&lt;/a&gt;. &lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/-F5WeeV2RJig/TcC5-3iCn_I/AAAAAAAAB4Y/R6cNYYIk9tg/s1600/molehill_cubinho_png.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="424" src="http://4.bp.blogspot.com/-F5WeeV2RJig/TcC5-3iCn_I/AAAAAAAAB4Y/R6cNYYIk9tg/s640/molehill_cubinho_png.png" width="640" /&gt;&lt;/a&gt;&lt;br /&gt;O suporte ao Molehill esta sendo desenvolvido por várias engines 3D e até a Unity 3D aderiu a tecnología (também o player deles vai perder de longe pela flexibilidade do flashplayer). &lt;br /&gt;&lt;br /&gt;Estou começando a falar sobre Molehill em outro &lt;a href="http://tutoriaisedesenvolvimento.blogspot.com/2011/05/away3d-e-molehill-super-simples.html"&gt;blog que criei sobre desenvolvimento em geral&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Ai eu penso se não é viável trocar OGRE por Flash para o projeto final. &lt;br /&gt;Bom, nada como uma experiência para descobrir.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-1871242210879255747?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/1871242210879255747/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=1871242210879255747&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/1871242210879255747'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/1871242210879255747'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/06/preparando-um-header-de-blog-com.html' title='Preparando um header de blog com Molehill'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-csC8tV5-YcE/TeuyReBIEUI/AAAAAAAAB-c/CNJUdMiYAng/s72-c/vestir2_cores.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-2059714620016261253</id><published>2011-05-28T15:34:00.000-07:00</published><updated>2011-05-28T15:34:39.215-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Inserindo suporte a tradução dentro do jogo pt 1</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-vYUI9mWi2lM/TeFzlwBcgwI/AAAAAAAAB5Q/J56kYPnxu2I/s1600/DB_update1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="278" src="http://1.bp.blogspot.com/-vYUI9mWi2lM/TeFzlwBcgwI/AAAAAAAAB5Q/J56kYPnxu2I/s640/DB_update1.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Resolvi aproveitar de forma mais inteligente os webservices e medias sociais, ao invés de fazer o jogo twittar inutilmente sua subida de nível, resolvi usar os recursos de APIs públicas como o Google Translator.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;br /&gt;O sistema é bem simples, após disparar a requisição de idioma o sistema inicia um fila de requisições.&amp;nbsp; &lt;br /&gt;São feitas 4 requisições por vez, e as outras aguardam até que haja um espaço disponível para o próximo.&amp;nbsp; &lt;br /&gt;Uma requisição mal sucedida é repetida, até um número máximo, após isso ela é jogada para o final da fila.&amp;nbsp; &lt;br /&gt;Uma requisição bem sucedida dispara uma trigger chamada uma função customizada que envia um evento ao sistema para atualizar a GUI e uma recontagem na porcentagem de tradução.&amp;nbsp; &lt;br /&gt;&lt;br /&gt;Sim, se parar para reparar dá para fazer esse processo mesmo durante o jogo rodando.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-2059714620016261253?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/2059714620016261253/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=2059714620016261253&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/2059714620016261253'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/2059714620016261253'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/05/inserindo-suporte-traducao-dentro-do.html' title='Inserindo suporte a tradução dentro do jogo pt 1'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-vYUI9mWi2lM/TeFzlwBcgwI/AAAAAAAAB5Q/J56kYPnxu2I/s72-c/DB_update1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-6897224235223416184</id><published>2011-05-15T18:51:00.000-07:00</published><updated>2011-05-15T18:51:09.087-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notícia'/><title type='text'>Uma pausa grande demais, mas estou de volta</title><content type='html'>As surpresas da vida são sempre gozadas, veem sempre quando você não tem disponibilidade ou condições de responder a elas rápido.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-mUppHO2P_YY/TdB5WqFoDjI/AAAAAAAAB4k/d5AVqdsUKC8/s1600/DSCF2897.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://4.bp.blogspot.com/-mUppHO2P_YY/TdB5WqFoDjI/AAAAAAAAB4k/d5AVqdsUKC8/s640/DSCF2897.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Além do mórbido prejuizo financeiro, tem o prejuizo profissional, já que tinha planos para mexer nesse blog e no &lt;a href="http://www.rpgvalr.com.br/"&gt;RPGVale&lt;/a&gt;, iniciar um &lt;a href="http://tutoriaisedesenvolvimento.blogspot.com/2011/05/away3d-e-molehill-super-simples.html"&gt;tutorial em português completo de Molehill&lt;/a&gt; (que consegui fazer meio nas coxas). Sem falar que a ausência no mundo Web é sempre perigoso.&lt;br /&gt;&lt;br /&gt;A quase um mês minha fonte veio a falecer de forma bizarra, na verdade segundo o único técnico que fazia concertos nessa peça de hardware que achei aqui na região foi uma queima muito estranha.&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;Realmente estranho, já que a Zalmam tinha um aval do Guia do Hardware sobre essas sobrecarga e o no-break deveria ter desarmado já que o fusível queimou!&lt;br /&gt;Ai foi uma maratona pela forma mais económica de resolver o pepino.&lt;br /&gt;Não achei nenhuma forma económica! Pelo contrário só me ferrei.&lt;br /&gt;Primeiro ao desmontar todo a maquina para identificar se algo além da fonte tinha queimado acabei levando o micro inteiro para manutenção atoa! (testar pc de jogo com fonte genérica não adianta mesmo).&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-Ko4TkBSUkwc/TdB-BkfOxjI/AAAAAAAAB4o/b6IvLtQK6zI/s1600/DSCF2895.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://2.bp.blogspot.com/-Ko4TkBSUkwc/TdB-BkfOxjI/AAAAAAAAB4o/b6IvLtQK6zI/s640/DSCF2895.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Por ultimo foi a tarde de domingo inteira brigando com esse maldito  cooler do socket 775, enfiar esse negócio maligno na placa-mãe é quase  uma missão impossível com conotações camikase!&lt;br /&gt;Até hoje fico impressionado pelo fato de existirem pessoas que dizem ter  "tesão pela parte de hardware", só em emergência mesmo pra você fazer  tanto malabarismo.&lt;br /&gt;&lt;br /&gt;Mesmo porque manutenção nas máquinas agora parece manutenção de moto, você tem que desmontar TODA ela pra chegar na peça X !!!&lt;br /&gt;E ainda tive que descobrir uma lógica da sequência de encaixe das peças para que uma não atrapalhasse a colocação de outra!&lt;br /&gt;&lt;br /&gt;Sem falar que manipular o processador me obrigou a trocar a pasta  térmica, coisa que nunca havia feito (a CPU com o Cooler mal encaixado  chegou a 98 graus PARADA, imagina se eu usasse 100% dela).&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-Yy85VAObnIE/TdB-W04BxMI/AAAAAAAAB4w/oIan3N6whp8/s1600/DSCF2898.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://1.bp.blogspot.com/-Yy85VAObnIE/TdB-W04BxMI/AAAAAAAAB4w/oIan3N6whp8/s640/DSCF2898.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Por fim agora estou com uma fonte Seasonic de 620W.&lt;br /&gt;Eu não tive muitas opções para comprar, e não tive muitas informações dessa marca, a não ser que ela esta entrando no Brasil e não há recomendações em contrário no &lt;a href="http://www.hardware.com.br/"&gt;Guia do Hardware&lt;/a&gt; (até onde eu tenha conseguido pesquisar, afinal estava acessando via iPod). Até vi um elogio e o preço dela estava bom em compensação a marcas similares com potências menores.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-UQpTOBbdt5E/TdB-RLttBoI/AAAAAAAAB4s/_ylCEbqzXtg/s1600/DSCF2896.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="480" src="http://4.bp.blogspot.com/-UQpTOBbdt5E/TdB-RLttBoI/AAAAAAAAB4s/_ylCEbqzXtg/s640/DSCF2896.JPG" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Não posso dizer nada da fonte em relação a qualidade mesmo que use ela  por meses, mas na hora de fazer os encaixes fiquei satisfeito. A pinagem  se adequou totalmente à placa-mãe.&lt;br /&gt;Os conectores extras para a CPU são completos e os da PCI-E também, não ficou nenhum plug fêmea vazio.&lt;br /&gt;Depois de desemanharar os cabos vi que ela tinha fartas conexões para os HDs, 6 SATA (2 cabos de 3 pinos).&lt;br /&gt;&lt;br /&gt;Aparentemente máquina esta bem alimentada.&lt;br /&gt;Agora irei fazer algo que deveria ter feito a tempos des-de que me  mudei: Um bom aterramento, pois acho que teria me salvo desse prejuizo.&lt;br /&gt;&lt;br /&gt;Agradeço principalmente ao pessoal do Forum do Guia do Hardware pela força e paciência, ao dono da &lt;a href="mailto:exoressservuces@ig.com.br"&gt;Express Services&lt;/a&gt; que olhou minha MOBO e ao &lt;a href="http://www.chapolininformatica.com.br/"&gt;Chapolin Informática&lt;/a&gt; que ainda deve estar fazendo não sei oque com a fonte velha.&lt;br /&gt;&lt;br /&gt;Bom, estou de volta à ativa com as mãos tremendo por ter parado de criar e com dificuldade de me segurar (esperem mais insanidades e erros de portugues) ^_^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-6897224235223416184?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/6897224235223416184/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=6897224235223416184&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6897224235223416184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6897224235223416184'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/05/uma-pausa-grande-demais-mas-estou-de.html' title='Uma pausa grande demais, mas estou de volta'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-mUppHO2P_YY/TdB5WqFoDjI/AAAAAAAAB4k/d5AVqdsUKC8/s72-c/DSCF2897.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-6469616606339844386</id><published>2011-04-10T18:09:00.000-07:00</published><updated>2011-04-10T18:09:50.864-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sketches'/><title type='text'>Rascunhos e ultimas noticias</title><content type='html'>Essas ultimas semanas foram meio desordenadas, estou reconstruindo o ritmo ^_~&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-tGTNJRR8G40/TaI_5is3kRI/AAAAAAAAByk/2GAU8k8_KEA/s1600/Captura_de_tela-309.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/-tGTNJRR8G40/TaI_5is3kRI/AAAAAAAAByk/2GAU8k8_KEA/s640/Captura_de_tela-309.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Hoje só fiz alguns rascunhos pela manhã.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-bthJEvkvbcU/TaJABtVCRQI/AAAAAAAAByw/4Sz5nnw9JPE/s1600/kobold-inspiracao.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-bthJEvkvbcU/TaJABtVCRQI/AAAAAAAAByw/4Sz5nnw9JPE/s1600/kobold-inspiracao.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Não devo usar este nome, mas a fonte de inspiração são os Kobolds:&lt;br /&gt;Criaturas de origem draconiana, ferozes, mortais, sádicos, cruéis... os pesquisadores que tentaram encontrar mais adjetivos para essas criaturas se aventurando em seus covis nunca mais foram vistos.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-dmpX3HDR1go/TaI_-OE1QBI/AAAAAAAAByo/tthFh1dD2hs/s1600/bolotinha.concept.01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://1.bp.blogspot.com/-dmpX3HDR1go/TaI_-OE1QBI/AAAAAAAAByo/tthFh1dD2hs/s1600/bolotinha.concept.01.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Bolotinha &lt;br /&gt;A primeira ideia que me veio na cabeça pela manha.&lt;br /&gt;Eu preciso mesmo de um inimigo nível 1.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-_QYAAzWoAFA/TaI__Q76jrI/AAAAAAAABys/OK222naTTw4/s1600/cenoura.concept.01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://2.bp.blogspot.com/-_QYAAzWoAFA/TaI__Q76jrI/AAAAAAAABys/OK222naTTw4/s1600/cenoura.concept.01.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;Cenouras&lt;br /&gt;Nunca confiei nelas desde criancinha e hoje confio menos ainda.&lt;br /&gt;&lt;br /&gt;Também comecei a ferramenta de sincronismo para o arquivo de dados.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-MtGyM8uUomA/TaJRlJrRgqI/AAAAAAAABy0/sDQw5NSy0Ks/s1600/Captura_de_tela-310.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-MtGyM8uUomA/TaJRlJrRgqI/AAAAAAAABy0/sDQw5NSy0Ks/s640/Captura_de_tela-310.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;Usarei MySQL para o ambiente de desenvolvimento e SQLite para o ambiente de produção.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-6469616606339844386?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/6469616606339844386/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=6469616606339844386&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6469616606339844386'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6469616606339844386'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/04/rascunhos-e-ultimas-noticias.html' title='Rascunhos e ultimas noticias'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-tGTNJRR8G40/TaI_5is3kRI/AAAAAAAAByk/2GAU8k8_KEA/s72-c/Captura_de_tela-309.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-1313127623815936119</id><published>2011-03-13T15:55:00.000-07:00</published><updated>2011-03-13T15:55:19.051-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='storyboard'/><title type='text'>Cena da Morte ajudando Cibele</title><content type='html'>&lt;div&gt;&lt;embed align="middle" allowfullscreen="true" flashvars="mode=embed&amp;amp;layout=http%3A%2F%2Fskin.issuu.com%2Fv%2Fcolor%2Flayout.xml&amp;amp;backgroundColor=CCCCCC&amp;amp;showFlipBtn=true&amp;amp;documentId=110313223454-0c961522af93497899edd743530f87ab&amp;amp;docName=cibele_on_dead_space&amp;amp;username=bitetti&amp;amp;loadingInfoText=Storyboard%20-%20Cibele%20on%20Dead%20space&amp;amp;et=1300056439264&amp;amp;er=70" menu="false" name="flashticker" quality="high" salign="l" scale="noscale" src="http://static.issuu.com/webembed/viewers/style1/v1/IssuuViewer.swf" style="height: 298px; width: 420px;" type="application/x-shockwave-flash"&gt;&lt;/embed&gt;&lt;br /&gt;&lt;div style="text-align: left; width: 420px;"&gt;&lt;/div&gt;Estou experimentando o Issuu, um bom mecanismo para publicações on-line.&lt;br /&gt;&lt;br /&gt;Resolvi compartilhar a idéia da participação do ultimo personagem criado.&lt;br /&gt;&lt;a href="http://issuu.com/bitetti/docs/cibele_on_dead_space"&gt;http://issuu.com/bitetti/docs/cibele_on_dead_space&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-1313127623815936119?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/1313127623815936119/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=1313127623815936119&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/1313127623815936119'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/1313127623815936119'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/03/cena-da-morte-ajudando-cibele.html' title='Cena da Morte ajudando Cibele'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-6099275244943713800</id><published>2011-03-08T12:55:00.000-08:00</published><updated>2011-03-08T12:55:34.290-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='personagens'/><title type='text'>Criando personagens NPC</title><content type='html'>Este documento acabou se tornando um ensaio para um projeto dentro do &lt;a href="http://www.rpgvale.com.br/"&gt;RPGVale&lt;/a&gt;.&lt;br /&gt;Vou tratar aqui da criação de um NPC, de como introduzir um na história e como dar "vida" para ele.&lt;br /&gt;Vamos ao que interessa como ele surgiu?&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-TZeqmXu1_kA/TXY4yvV0qbI/AAAAAAAABpE/CYY5f4Bsa-8/s1600/Captura_de_tela-254.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="https://lh5.googleusercontent.com/-TZeqmXu1_kA/TXY4yvV0qbI/AAAAAAAABpE/CYY5f4Bsa-8/s640/Captura_de_tela-254.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Eu precisava fazer a cena da personagem morrendo, assim poderia por o clássico menu de Continue.&lt;br /&gt;&lt;br /&gt;Um NPC nem sempre serve só para vender coisas ou dar XP, mas pode ser usado para dar pistas, indicar caminhos ou até mudar o rumo da história.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Conceito ou visão geral&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Um representante da morte, que orientasse a personagem quando morresse sobre onde ela pode voltar e outras informações.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-GpuTtsaaMo8/TWt9rST0-SI/AAAAAAAABog/pJqDMvhJDQ0/s1600/morte1.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="https://lh5.googleusercontent.com/-GpuTtsaaMo8/TWt9rST0-SI/AAAAAAAABog/pJqDMvhJDQ0/s400/morte1.jpg" width="178" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;A primeira ideia que me veio na cabeça&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;E uma vez achei na Internet uma imagem de um grafite que o cara trocou a caveira da morte por esse rostinho feliz.&lt;br /&gt;Feito! Além do "continue" simples, eu &amp;nbsp;tinha um cenário rico com um NPC de fundo.&lt;br /&gt;&lt;br /&gt;Ótimo agora vem o pulo do gato, com o personagem em mãos eu posso pensar em usar ele na história.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Objetivos primeiro&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Com o que eu tinha de antemão da personagem: o momento de encontro, quando o jogador morre.&lt;br /&gt;Eu teci uma ligação dele com a história, ele vai ressuscitar e dar dicas de como o jogador vai proceder (newbies guide). E também vai dar uma quebra na tensão com diálogos de bom humor.&lt;br /&gt;&lt;br /&gt;Agora que enriqueci a personagem explorando o potencial de seu papel posso dar o golpe final.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Carisma, personalidade&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;A ideia da personagem pede que ela seja de idade avançada (talvez do inicio do tempo) e que seja séria e centrada. Obviamente o sério "já mandei pras cucuias".&lt;br /&gt;&lt;br /&gt;Nomes reais não tem isso, mas em uma campanha é ótimo você ter um nome que ajude o jogador a se lembrar da personagem, objeto ou lugar. Então:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;i&gt;&lt;b&gt;Obtuarius Necrofantis&lt;/b&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;E invento uma história para ele, rápida para uma introdução dinâmica:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;i&gt;Nas filas de soldados romanos o jovem Obtuarius Necrofantis era conhecido pelo seu jeito tranquilo. Era o tipo de cara que podia acordar com a cama em chamas que não se abalava e primeiro consultava o relógio para ver se pode dormir mais 5 minutos.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;i&gt;Foi numa noite de batalha onde seus companheiros foram massacrados ao invadir uma fortificação dos "barbados" do norte que ele escorregou numa possa de sangue e ao limpar os olhos viu um homem de barbas longas &amp;nbsp;e rosto cansado fumando um cachimbo que lhe falou:&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;i&gt;- Olá, tenho te observado há tempos e vou fazer uma proposta para você. A chefia abriu novas vagas. Salário bom, hora extra bem remunerada e plano de saúde.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;i&gt;Obtuarius não pensou muito, fez uma pequena entrevista, uma reunião de integração rápida, vestiu a capa preta e saiu com sua lista&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A salada de ideias vai de acordo com o freguês, pode ser mista ou até acrescentar feijão e repolho se você não se importar com as conseqüências.&lt;br /&gt;Vamos analisar o texto com calma para vocês compreenderem melhor &lt;span class="Apple-style-span" style="font-size: x-small;"&gt;(analisando o meu próprio texto, até parece que sei escrever)&lt;/span&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-fGN4RHtXAHs/TXY5PuoxKJI/AAAAAAAABpI/8PcWxyk5M6Y/s1600/Captura_de_tela-249.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="462" src="https://lh6.googleusercontent.com/-fGN4RHtXAHs/TXY5PuoxKJI/AAAAAAAABpI/8PcWxyk5M6Y/s640/Captura_de_tela-249.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;"Quem era", "onde está" e "para onde vai" são conceitos que costumo usar para posicionar o leitor.&lt;br /&gt;O elemento "conflito" é a base para TODAS as grandes histórias (lições de "Diário de Teatro"); O conflito é o elemento que motiva a ação. Eu poderia fechar a descrição com um:&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="color: #073763; font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;i&gt;... vestiu sua capa preta e saiu com sua lista. E vem fazendo seu trabalho a anos, anos, anos e mais anos... sem parar para uma cervejinha que seja!&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Isso seria um "gancho" que puxa para a ideia que o personagem está cansado do trabalho e vai querer fazer alguma proposta ou estar aberto a ideias.&lt;br /&gt;Outras formas mais brutas e diretas: "Aquele cara matou minha família", "Preciso que você consiga esse item para mim."&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh6.googleusercontent.com/-fSmt_y7qPjE/TXY5ayTkmLI/AAAAAAAABpM/WJhiHdBsep8/s1600/Captura_de_tela-250.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="474" src="https://lh6.googleusercontent.com/-fSmt_y7qPjE/TXY5ayTkmLI/AAAAAAAABpM/WJhiHdBsep8/s640/Captura_de_tela-250.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;No caso deixei a construção sem detonar que o personagem vai realizar alguma ação pelos motivos que veremos aseguir.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Decupagem&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Você já deve ter ouvido aquele dito popular "menos é mais", certo? Bom eu não concordo com ele.&lt;br /&gt;Sou do tipo que não tem paciência para um conceito vago assim, pois eu prefiro a &lt;a href="http://pt.wikipedia.org/wiki/Decupagem"&gt;decupagem&lt;/a&gt;, essa palavra remete à um contexto mais amplo que na verdade significa que você tem que ter "bom senso".&lt;br /&gt;&lt;br /&gt;É super natural você se empolgar e criar um universo muito extenso para um personagem e pode perder o equilirio dos outros personagens e criar um desvio da história corrente. Então oque fazemos é "cortar", "lapidar" ou "reposicionar" os elementos.&lt;br /&gt;Eliminamos inicialmente os "excessos" da construção que não são necessários à história principal.&lt;br /&gt;Eliminar não quer dizer simplesmente que você vai excluir aquilo, mas um elemento pode ficar simplesmente inplicito, como "onde aquela elfa conseguiu aquele bastão mágico?".&lt;br /&gt;&lt;br /&gt;Ao decupar o personagem para o jogo em si, temos que nos focar em questões:&lt;br /&gt;No cenário em curso, de forma que ele não interfira na história;&lt;br /&gt;Na digestão, isto é, tanto o tempo que ele demora a ser apresentado como a forma e o momento que ele vai aparecer pois por melhor que seja o personagem se ele atrapalhar o ritmo dos jogadores eles não vão simpatizar com ele;&lt;br /&gt;Tirar os excessos, lembrem-se "apenas Chuck Norriz pode cortar Chuck Norriz", um personagem muito forte não encontra dificuldades então nada de dar super poderes.&lt;br /&gt;Especificamente em games devemos ter em mente os limites técnicos, o personagem pode pedir efeitos especiais, ou mesmo artifícios especiais &amp;nbsp;que nem sempre são condizentes com a tecnologia envolvida. Explico adiante.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-Tq6w3i6PZ-U/TXY5tKCptiI/AAAAAAAABpQ/8aU3LDnDeuM/s1600/coincidencia+du+caraio.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="https://lh4.googleusercontent.com/-Tq6w3i6PZ-U/TXY5tKCptiI/AAAAAAAABpQ/8aU3LDnDeuM/s640/coincidencia+du+caraio.jpg" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;É óbvio que derrepente quando criamos um personagem as vezes nos pegamos de surpresa e descobrimos que ele tem um potencial imenso.&lt;br /&gt;Anote os detalhes e deixe de lado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Dica:&lt;/b&gt;&lt;br /&gt;Observem os personagens de Naruto, são ricos, mas não foram empurrados com tudo de uma vez só. Mas impactaram direto na primeira vista porque se nota que são muito bem trabalhados.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Limites técnicos&lt;/b&gt;&lt;br /&gt;Um personagem que usa teleporte pode parecer simples na hora de você pensar, mas se você for utiliza-lo em um mapa isso vai dificultar a vida dos programadores.&lt;br /&gt;Isso porque o personagem se move por I.A. e já temos de sobra formulas &amp;nbsp;prontas para isso, no entanto as formulas não entendem o teleporte como um elemento de cenário ou obstáculo.&lt;br /&gt;&lt;br /&gt;Um que possui uma roupa muito cheia de detalhes por exemplo, torna mais trabalhosa a modelagem ou redesenho pelo artista e vai consumir recursos para ser desenhado pelos processador.&lt;br /&gt;&lt;br /&gt;Sempre converse com a equipe técnica para ajudar nessa hora.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;Visual&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Até agora só falamos do conceito, mas um bom conceito morre se não tiver uma boa execução. No caso a aparência.&lt;br /&gt;&lt;a href="https://lh3.googleusercontent.com/-f-T19amOsAY/TXY3rdELctI/AAAAAAAABpA/W8hHAyLuFAI/s1600/2661.gif" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="https://lh3.googleusercontent.com/-f-T19amOsAY/TXY3rdELctI/AAAAAAAABpA/W8hHAyLuFAI/s1600/2661.gif" /&gt;&lt;/a&gt;Nesta hora sempre contamos com o Google, uma rápida pesquisa sobre "símbolos da morte" obtive umas informações gerais.&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;A ampulheta, eu nem me lembrava, mas muitos filmes e séries ela aparece indicando o tempo de vida de alguém.&lt;/li&gt;&lt;li&gt;Descobri novos símbolos, como esse da alquimia onde o circulo com três pontos representa uma caveira!&lt;/li&gt;&lt;li&gt;A morte também é descrita com "anjo da morte", então se ele serve á uma força superior, uma roupa de clérigo pode dar mais beleza e elegância.&lt;/li&gt;&lt;li&gt;Lembram de Yu Yu Hakusho? A pequena Botan é uma menina de cabelo azul. O azul também tem conotações de frio, amizade, amor.&lt;/li&gt;&lt;li&gt;A Morte de Neil Gaiman.&lt;/li&gt;&lt;li&gt;Os clássicos capuz e foice, influencia da Europa e da Igreja, onde temos o capuz do carrasco e a foice ceifador de trigo&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;(*)&lt;/span&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;Junto isso tudo e tenho então a minha salada.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;"Tunning" do visual da foice&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-IfOtCa13940/TXY54wM7WnI/AAAAAAAABpU/trhBvaMPIrA/s1600/foice_concept.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="320" src="https://lh5.googleusercontent.com/-IfOtCa13940/TXY54wM7WnI/AAAAAAAABpU/trhBvaMPIrA/s320/foice_concept.jpg" width="133" /&gt;&lt;/a&gt;&lt;/div&gt;Um exemplo de como uma boa construção pode render frutos.&lt;br /&gt;Lógico no contexto do game foi algo bom, numa campanha de RPG você estaria perdendo tempo ao invés de jogar.&lt;br /&gt;&lt;br /&gt;A foice ficou tão bem conceituada, que acabou virando item especial.&lt;br /&gt;Ficou assim:&lt;br /&gt;&lt;br /&gt;Os elementos estão separados e unidos por uma força invisível&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;(**)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;A lâmina em forma de meia-lua beeem grande, o exagero é uma técnica muito comum e bem eficiente XP&lt;br /&gt;&lt;br /&gt;A ampulheta é representada nela, indicando a ligação com o tempo. E na animação a areia corre ao contrário (de baixo para cima) para indicar o tempo restante.&lt;br /&gt;&lt;br /&gt;Entre os dois cones da ampulheta coloquei uma esfera com 3 furos (símbolo da alquimia)&lt;br /&gt;&lt;br /&gt;E o bastão é de aparência rústica, na verdade um galho da Árvore da Vida!&lt;br /&gt;&lt;br /&gt;Em combate além de ser uma foice normal (+14, indestrutível) ela pode ser usada para evocar guerreiros já falecidos. Com a "tendência" do portador da foice.&lt;br /&gt;&lt;br /&gt;(&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;*) - A dualidade no ceifador que mata as plantas em grande quantidade, mas que também prove alimento, o pão da mesa, vida/recriação/ressusreição. Isso seria uma interpretação livre, mas temos essa ideia muito mais evidente em outras culturas. Mas na nossa que recebeu influencia da europeia o medo é a caracteristica predominante.&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;(**) - A idéia dos elementos soltos no ar vem de&amp;nbsp;um livro com imagens muito insanas "A rebelião de Lúcifer" de J. J. Benítez, que conta a história de um planeta artificial que chega no nosso sistema solar e os seres celestiais de lá escolhem um homem e uma mulher para representar a humanidade no julgamento de Lúcifer que estava preso após a derrota da rebelião.&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;No livro o conceito de física vai pro lixo, já que o autor imagina os protagonista em vários universos diferentes. Oque curti é que alguns elementos nem sempre são conectados por matéria visível ou palpável.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-6099275244943713800?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/6099275244943713800/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=6099275244943713800&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6099275244943713800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6099275244943713800'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/03/criando-personagens-npc.html' title='Criando personagens NPC'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-TZeqmXu1_kA/TXY4yvV0qbI/AAAAAAAABpE/CYY5f4Bsa-8/s72-c/Captura_de_tela-254.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-7230742880555633049</id><published>2011-02-28T07:32:00.000-08:00</published><updated>2011-02-28T07:32:29.479-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='artwork'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><title type='text'>Morte do personagem, Continue or Exit ?</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh5.googleusercontent.com/-GpuTtsaaMo8/TWt9rST0-SI/AAAAAAAABog/pJqDMvhJDQ0/s1600/morte1.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="https://lh5.googleusercontent.com/-GpuTtsaaMo8/TWt9rST0-SI/AAAAAAAABog/pJqDMvhJDQ0/s640/morte1.jpg" width="284" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Clássico mas resolvi apimentar um pouco.&lt;br /&gt;Ao morrer quem recebe Cibele é um NPC, eles batem um papo, tomam um chá ou ela sai vazada para a fase.&lt;br /&gt;Uma coisa que estou pensando em fazer é inserir "conselhos" neste personagem. Assim, além das tiradas que um dá no outro ele também mostra uma interação com o enredo e com o jogador.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="https://lh4.googleusercontent.com/-CImUgWg9l7U/TWt9tjl6N-I/AAAAAAAABok/TmD_Clp5Ahs/s1600/morte2.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="https://lh4.googleusercontent.com/-CImUgWg9l7U/TWt9tjl6N-I/AAAAAAAABok/TmD_Clp5Ahs/s640/morte2.jpg" width="275" /&gt;&lt;/a&gt;&lt;/div&gt;Pra deixar a coisa mais sem noção, em uma das fases pensei na hipótese dela ser teleportada para outra fase, como se estivesse em outro mundo acessado apenas pelo limbo.&lt;br /&gt;Penso em fazer isso aleatóriamente, mas ai surge o problema da quebra da jogabilidade. No entanto deixa a história mais realista.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-7230742880555633049?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/7230742880555633049/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=7230742880555633049&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/7230742880555633049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/7230742880555633049'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/02/morte-do-personagem-continue-or-exit.html' title='Morte do personagem, Continue or Exit ?'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='https://lh5.googleusercontent.com/-GpuTtsaaMo8/TWt9rST0-SI/AAAAAAAABog/pJqDMvhJDQ0/s72-c/morte1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-8114766669331816666</id><published>2011-02-20T13:05:00.000-08:00</published><updated>2011-02-20T13:24:06.924-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='personagens'/><title type='text'>Demom Miau</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-nNxc4dqP0i4/TWGAYbwfN1I/AAAAAAAABmo/bM-fnTrs8V4/s1600/demoncat.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="223" src="http://4.bp.blogspot.com/-nNxc4dqP0i4/TWGAYbwfN1I/AAAAAAAABmo/bM-fnTrs8V4/s400/demoncat.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;Um demônio muito peculiar e raro.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;Diz a lenda que o senhor negro que o criou, feliz com a capacidade de sua criação, o incumbiu de guardar um tesouro fantástico o Periquito de Ouro Sagrado.&amp;nbsp;&amp;nbsp;A tarefa não &amp;nbsp;deu muito certo...&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;Abandonado por qualquer mestre negro pela sua incapacidade de cumprir ordens.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;Ele não faz parte de nenhuma legião e não participa de nenhuma guerra entre céu e inferno.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;a name='more'&gt;&lt;/a&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;Procura espíritos de jovens para se alimentar, selecionando apenas os mais fortes e de espírito rebelde.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #073763;"&gt;Sua manifestação física é uma gataria com corpos enevoados interligados pelas caudas a uma entidade hospedeira.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-71osZvsCOl4/TWGAqL-woTI/AAAAAAAABms/ebNOB2f7Buo/s1600/loira_03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-71osZvsCOl4/TWGAqL-woTI/AAAAAAAABms/ebNOB2f7Buo/s400/loira_03.jpg" width="313" /&gt;&lt;/a&gt;&lt;/div&gt;Ele é o demônio que se juntou a Loira do Banheiro e lhe confere poderes, vai aparecer quando ela se transforma, algo como uma &amp;nbsp;Loira do Banheiro nível 2 XD&lt;br /&gt;&lt;br /&gt;Este personagem vai exigir um pouco mais de jogo de cintura. Além de só saber depois dos testes se ele vai ficar melhor com sistema de partículas ou textura animada tem a cauda.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-wjhJvCcaqXU/TWGBinmfpwI/AAAAAAAABm0/RG5QGPssN8A/s1600/Captura_de_tela-217.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/-wjhJvCcaqXU/TWGBinmfpwI/AAAAAAAABm0/RG5QGPssN8A/s400/Captura_de_tela-217.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Como consegui uns bons resultados com curvas de bézier estes dias, estou achando que o melhor vai ser disparar vetores em zigue-zague apartir do inicio da cauda (Loira) até o gato.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-SM-nrrbIQD4/TWGA63HkpSI/AAAAAAAABmw/Wpp2M6NrsmY/s1600/curva.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="212" src="http://1.bp.blogspot.com/-SM-nrrbIQD4/TWGA63HkpSI/AAAAAAAABmw/Wpp2M6NrsmY/s400/curva.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-8114766669331816666?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/8114766669331816666/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=8114766669331816666&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/8114766669331816666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/8114766669331816666'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/02/demom-miau.html' title='Demom Miau'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-nNxc4dqP0i4/TWGAYbwfN1I/AAAAAAAABmo/bM-fnTrs8V4/s72-c/demoncat.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-4560096954990899727</id><published>2011-02-13T17:51:00.000-08:00</published><updated>2011-02-13T18:01:31.822-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='homenagem'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='personagens'/><title type='text'>O Homem da Roupa Velha</title><content type='html'>Bem dito o provérbio do sábio: Deus ajuda quem cedo Madruga!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-ufPe4rt9mqg/TViFDFiQ37I/AAAAAAAABjY/7l3-EXrk21o/s1600/Captura_de_tela-215.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/-ufPe4rt9mqg/TViFDFiQ37I/AAAAAAAABjY/7l3-EXrk21o/s400/Captura_de_tela-215.JPG" width="351" /&gt;&lt;/a&gt;&lt;/div&gt;Fim de semana, estressado queria pensar em coisas felizes. Não sei porque uma imagem de um cara carrancudo provoca tanta sensação de riso.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-5o6W_TTlvqs/TViFHwItaaI/AAAAAAAABjc/g_61Mg9jgjg/s1600/o+homen+da+roupa+velha_sketch01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/-5o6W_TTlvqs/TViFHwItaaI/AAAAAAAABjc/g_61Mg9jgjg/s400/o+homen+da+roupa+velha_sketch01.jpg" width="213" /&gt;&lt;/a&gt;&lt;/div&gt;Lógico irei desfigurar a figura para não configurar plágio, e sim uma homenagem.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/-o8I6Gu0Hxp8/TViHedsVOGI/AAAAAAAABjk/QFR33OecE3w/s1600/residentevil4_conceptart_wvepg.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/-o8I6Gu0Hxp8/TViHedsVOGI/AAAAAAAABjk/QFR33OecE3w/s200/residentevil4_conceptart_wvepg.jpg" width="155" /&gt;&lt;/a&gt;&lt;br /&gt;Ele vai aparecer do nada com um saco de roupas velhas e outras bugigangas, comprando tudo e vendendo tudo.&lt;br /&gt;Me parece insano, mas a imagem dele aparecendo do nada de um cofre aberto, de um vaso sanitário, de dentro de um vulção em chamas com uma cara de quem chupou limão vendendo qualquer coisa pra Cibele me veio na cabeça.&lt;br /&gt;&lt;br /&gt;Em uma situação idêntica tem o Stranger do Resident Evil... fica estranho você matar o chefão de uma seita secreta e o mesmo cara estar lá como se fosse via pública!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-YKrlXzVNedA/TViE2qHbD9I/AAAAAAAABjA/h-TNJKtyt9Y/s1600/Captura_de_tela-202.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="336" src="http://1.bp.blogspot.com/-YKrlXzVNedA/TViE2qHbD9I/AAAAAAAABjA/h-TNJKtyt9Y/s400/Captura_de_tela-202.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Depois de uma modelage low-poly não lá essas coisas, mas dando pro gasto, preparei a malha para o sculpt.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-vnTsCclS1P8/TViIAQCUhoI/AAAAAAAABjo/RTTu01k2FJU/s1600/Captura_de_tela-203.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="323" src="http://3.bp.blogspot.com/-vnTsCclS1P8/TViIAQCUhoI/AAAAAAAABjo/RTTu01k2FJU/s400/Captura_de_tela-203.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-pWSjXNZB45w/TViE4_yOxWI/AAAAAAAABjE/UU-0w_7SmPo/s1600/Captura_de_tela-207.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="331" src="http://4.bp.blogspot.com/-pWSjXNZB45w/TViE4_yOxWI/AAAAAAAABjE/UU-0w_7SmPo/s400/Captura_de_tela-207.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/-e91_eI6KdlI/TViE59UmPlI/AAAAAAAABjI/eKXiwGlUSNI/s1600/Captura_de_tela-209.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="365" src="http://3.bp.blogspot.com/-e91_eI6KdlI/TViE59UmPlI/AAAAAAAABjI/eKXiwGlUSNI/s400/Captura_de_tela-209.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-wvdAmOZC2S8/TViE9o3tfiI/AAAAAAAABjM/7HfFceUXUe0/s1600/Captura_de_tela-211.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/-wvdAmOZC2S8/TViE9o3tfiI/AAAAAAAABjM/7HfFceUXUe0/s400/Captura_de_tela-211.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-PMbLDx46o5w/TViE_SWRKlI/AAAAAAAABjQ/odtVt7FfE1I/s1600/Captura_de_tela-213.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://2.bp.blogspot.com/-PMbLDx46o5w/TViE_SWRKlI/AAAAAAAABjQ/odtVt7FfE1I/s400/Captura_de_tela-213.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/-lEqe8WtVbg8/TViFBvasgDI/AAAAAAAABjU/zjMPkn9XyII/s1600/Captura_de_tela-214.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="257" src="http://1.bp.blogspot.com/-lEqe8WtVbg8/TViFBvasgDI/AAAAAAAABjU/zjMPkn9XyII/s400/Captura_de_tela-214.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Eu pensei em descaracterizar as cores... mas não dá!&lt;br /&gt;Eu vou pensar em algo para não deixar a homenagem não ficar apenas no blog.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-4560096954990899727?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/4560096954990899727/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=4560096954990899727&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/4560096954990899727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/4560096954990899727'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/02/o-homem-da-roupa-velha.html' title='O Homem da Roupa Velha'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/-ufPe4rt9mqg/TViFDFiQ37I/AAAAAAAABjY/7l3-EXrk21o/s72-c/Captura_de_tela-215.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-7589588342915165649</id><published>2011-01-30T15:57:00.000-08:00</published><updated>2011-01-30T15:57:22.145-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='homenagem'/><title type='text'>Clarisse</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TUXyzd2NqHI/AAAAAAAABf8/7z873YPckTA/s1600/DSCF8484.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TUXyzd2NqHI/AAAAAAAABf8/7z873YPckTA/s400/DSCF8484.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Hoje vou prestar homenagem à uma companheira que esteve junto desde os primeiros passos da publicação desse projeto.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TUXzG03CP_I/AAAAAAAABgA/Q8hnqidPALg/s1600/DSCF9116.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TUXzG03CP_I/AAAAAAAABgA/Q8hnqidPALg/s400/DSCF9116.JPG" width="302" /&gt;&lt;/a&gt;&lt;/div&gt;Ela me acompanhava nas madrugadas as vezes no meu colo ou quase sempre entre o vão do teclado e monitor.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TUXzVDz6idI/AAAAAAAABgE/iqfEdnDq-ME/s1600/minha+gatinha+tem+um+estranho+fascinio+por+gabinetes.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TUXzVDz6idI/AAAAAAAABgE/iqfEdnDq-ME/s400/minha+gatinha+tem+um+estranho+fascinio+por+gabinetes.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Na verdade ela achava que a máquina era a casa dela.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TUXzoPqlbyI/AAAAAAAABgI/eWTqcpTFe64/s1600/DSCF8567_b.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TUXzoPqlbyI/AAAAAAAABgI/eWTqcpTFe64/s400/DSCF8567_b.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Ela me mostrou que muito doque eu conhecia sobre gatos era pura lenda. E nela vi amizade e companheirismo.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TUXz3ljMRRI/AAAAAAAABgM/uTnmMThMfZI/s1600/DSCF1218.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="362" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TUXz3ljMRRI/AAAAAAAABgM/uTnmMThMfZI/s400/DSCF1218.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Nem sempre nos entendíamos, o que rendeu até um acréscimo num personagem do jogo inspirado em um dos seus momentos de crise.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TUX0vW0TE7I/AAAAAAAABgQ/eHexNjNxoxo/s1600/DSCF8485.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="326" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TUX0vW0TE7I/AAAAAAAABgQ/eHexNjNxoxo/s400/DSCF8485.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Outras vezes era apegada demais, como em tantas que tive que correr para lavar roupa de cama por ela ter "me" demarcado.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TUX13AaBYGI/AAAAAAAABgY/RlBdhhZ77-o/s1600/DSCF2087.JPG" imageanchor="1"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TUX13AaBYGI/AAAAAAAABgY/RlBdhhZ77-o/s1600/DSCF2087.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Ela chegou de um jeito inesperado e misterioso. Ouvi um miado na porta abri e ela entrou.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TUX3jd1sBCI/AAAAAAAABgc/JOWz6mrge4A/s1600/DSCF9385.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TUX3jd1sBCI/AAAAAAAABgc/JOWz6mrge4A/s400/DSCF9385.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;E como num estranho círculo ela se foi, sem explicação e da mesma forma que eu fui o primeiro da família a lhe ver também fui o ultimo.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TUX6T2kERjI/AAAAAAAABgk/9CqNKGHjvNQ/s1600/DSCF8974b.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TUX6T2kERjI/AAAAAAAABgk/9CqNKGHjvNQ/s400/DSCF8974b.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Clarisse morreu 9:00 da manhã de uma quinta (26/01/2011) com uns 2 anos. De causas desconhecidas após passar por um procedimento rotineiro numa clinica veterinária.&lt;br /&gt;&lt;br /&gt;De cada 100 que passam por uma castração 1 tem complicações e minha filinha foi sorteada.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TUX5gsXGaMI/AAAAAAAABgg/8huiBiCyq_k/s1600/DSCF2043.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="240" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TUX5gsXGaMI/AAAAAAAABgg/8huiBiCyq_k/s320/DSCF2043.JPG" width="320" /&gt;&lt;/a&gt;&lt;/div&gt;Ela deixou dois filhos que vão ficar comigo e muita saudade.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-7589588342915165649?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/7589588342915165649/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=7589588342915165649&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/7589588342915165649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/7589588342915165649'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/01/clarisse.html' title='Clarisse'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_yqRkvDx98Fs/TUXyzd2NqHI/AAAAAAAABf8/7z873YPckTA/s72-c/DSCF8484.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-900515609575733528</id><published>2011-01-23T13:08:00.000-08:00</published><updated>2011-01-23T13:08:58.937-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cg'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Fazendo Shaders</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TTx_DLesMqI/AAAAAAAABfg/01swhH1AOhE/s1600/desenvolvendo-shaders.07.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;br /&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TTx_DLesMqI/AAAAAAAABfg/01swhH1AOhE/s400/desenvolvendo-shaders.07.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Hoje fiquei lembrando de um método de aprendizado que uso desde meus cinco anos: &lt;i&gt;"Se não entende, pega o bagulho e desmonta!"&lt;/i&gt;&lt;br /&gt;Nem todos os brinquedos daquela época sobreviveram. Mas hoje em dia temos esse processo mais formalizado.&lt;br /&gt;&lt;br /&gt;De fato cansei mesmo de tentar pegar código pronto e tentar juntar os pedaços para um resultado. A maioria dos projetos hoje em dia faz isso.&lt;br /&gt;Mas não estava dando um resultado muito bom, tendo conflitos, dor-de-cabeça pra entender o shader, conflitos de linguagens, de perfis e minúsculos fatores. As vezes eu simplesmente esquecia os drivers de vídeo desconfigurados e não compilava!&lt;br /&gt;Além doque a maioria dos exemplos que vi era de gente pegando os códigos existentes e adaptando.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Procurando tutorial ?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Eu escrevi o texto acima para os que vieram atrás de código para seus projetos, mas deixei os links que vocês procuram no &lt;a href="http://www.blogger.com/post-create.g?blogID=2375290822297479397#finaldopostshaders"&gt;final do post&lt;/a&gt;.&lt;br /&gt;Fica esse alerta, a programação de shaders é de baixo nível, mas muito recompensador.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Os passos&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TTx_NPBZBNI/AAAAAAAABfk/QbGi_8RbUG8/s1600/desenvolvendo-shaders.01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TTx_NPBZBNI/AAAAAAAABfk/QbGi_8RbUG8/s400/desenvolvendo-shaders.01.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Quando o assunto é shader você tem quase nenhum material em português e muito falatório sobre o assunto em inglês. E nenhuma referência para newbie para aquilo que você quer fazer.&lt;br /&gt;&lt;br /&gt;Comecei com um esdrúxulo &lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;void main(void)&lt;/b&gt;&lt;/span&gt; pegando a componente de cor e uns 3 ou 4 exemplos de toon shader.&lt;br /&gt;&lt;br /&gt;O algoritmo do toon é fácil, você pega a intensidade do brilho e joga numa sequência de ifs. Simplesmente a coisa a parte mais babaca de programação. Outra vantagem de eu estar fazendo o shader &amp;nbsp;é que eu posso customizar ainda mais o sistema, ou eu faço uma textura linear de entrada ou uma array.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TTx_OlkahQI/AAAAAAAABfo/jKo-n60Zj4o/s1600/desenvolvendo-shaders.02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TTx_OlkahQI/AAAAAAAABfo/jKo-n60Zj4o/s400/desenvolvendo-shaders.02.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;A iluminação "per pixel" que começou a dar trabalho. Não tanto o de copiar e colar, mas ir lendo os comandos passo a passo.&lt;br /&gt;Do exemplo acima eu fui sondando, essa parte de programação é muito voltada a matemática, não aquela chata que agente fazia decorando formulas estranhas, mas exige bastante conceito que eu não aprendi na escola. E a capacidade de "visualizar" a equação funcionando, "ver" a equação sempre foi a melhor maneira de aprender pra mim doque decorar a formula.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TTx_PirrsoI/AAAAAAAABfs/WLt90bvkX2U/s1600/desenvolvendo-shaders.03.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TTx_PirrsoI/AAAAAAAABfs/WLt90bvkX2U/s400/desenvolvendo-shaders.03.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Me acalmei e vi que era só eliminar todo o calculo correspondente a cor na equação. E pronto, tinha um valor para ser analisado e dividido no degrade.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TTx_RCuDNVI/AAAAAAAABfw/lN37-XstXwU/s1600/desenvolvendo-shaders.04.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TTx_RCuDNVI/AAAAAAAABfw/lN37-XstXwU/s400/desenvolvendo-shaders.04.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Tem uma hora que me confundo entre usar um + (adição) e um *(multiplicação) na equação, mas é só fazer uma "tentativa e erro" que acerto.&lt;br /&gt;&lt;br /&gt;A luz foi resolvida de forma mais simples, eu entro com os valores na mão ao invés de usar os definidos dentro da OpenGL, isso vai ser bom para controlar os pontos de luz de entrada. No caso do toon shading é uma escolha melhor já que a luz nem sempre fica boa se for muito realista, então se eu controlar manualmente por script deve dar um resultado melhor.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TTx_SfZuYrI/AAAAAAAABf0/8vJco-FYwkY/s1600/desenvolvendo-shaders.05.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TTx_SfZuYrI/AAAAAAAABf0/8vJco-FYwkY/s400/desenvolvendo-shaders.05.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Agora o passo do normalmap, acabou virando uma técnica vital e me surpreendeu a facilidade que foi inserir ele.&lt;br /&gt;A única coisa problemática foi computar a exata direção do vetor da luz e o vetor da normal na posição correta.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TTx_TdgeogI/AAAAAAAABf4/HRcCpGDabKs/s1600/desenvolvendo-shaders.06.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TTx_TdgeogI/AAAAAAAABf4/HRcCpGDabKs/s400/desenvolvendo-shaders.06.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;O shader esta quase pronto, eu deixei de lado coisas como os dados de cor do vértice, oque limita o sistema a sempre precisar de texturas para todos os modelos.&lt;br /&gt;Não creio que vai ser preciso uma versão mais simples desse shader, eu poderia usar os dados de cor dos vértices por exemplo mas se o sistema não suportar texturas eu deixo a cargo da OGRE escolher a técnica mais correta.&lt;br /&gt;&lt;br /&gt;Mas uma mais complexa com o efeito paralax sim tem que sair, no entanto esse me dá medo! Mas é o desafio para a próxima semana.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.blogger.com/post-create.g?blogID=2375290822297479397" name="finaldopostshaders"&gt;&lt;/a&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Links:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;a href="http://pastebin.com/t19atNV0"&gt;Código fonte do shader *&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.lighthouse3d.com/opengl/glsl/index.php?toon"&gt;Tutorial de Toon Shading e GLSL&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.lighthouse3d.com/opengl/glsl/index.php?toon"&gt;Tutorial no NeHe&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.blender.org/documentation/250PythonDoc/bge.types.html?highlight=shader#bge.types.BL_Shader"&gt;Referência da Blender Game Engine para o 2.5x&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.tutorialsforblender3d.com/"&gt;Realmente grande site de tutoriais de Blender&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.khronos.org/"&gt;www.khronos.org&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Discussões e fóruns que pesquisei:&lt;/b&gt;&lt;br /&gt;&lt;a href="http://blenderartists.org/forum/showthread.php?t=176674"&gt;link1&lt;/a&gt;&amp;nbsp;&lt;a href="http://efreedom.com/Question/1-2740874/Get-Current-Color-Fragment"&gt;link2&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.gamedev.net/topic/453941-glsl-getting-depth-of-fragment/"&gt;link3&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.cs.cmu.edu/~462/projects/p4/"&gt;link4&lt;/a&gt;&amp;nbsp;&amp;nbsp;&lt;a href="http://www.gamedev.net/topic/588948-very-simple-glsl-coordinates-question/"&gt;link5 (++)&lt;/a&gt;&amp;nbsp;&lt;a href="http://www.blitzbasic.com/Community/posts.php?topic=85263"&gt;link6&lt;/a&gt;&amp;nbsp;e mais....&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;* o código está conforme oque se vê aqui, não esta pronto mas funciona com duas texturas em um material. Fica como contribuição para novos projetistas.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-900515609575733528?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/900515609575733528/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=900515609575733528&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/900515609575733528'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/900515609575733528'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/01/fazendo-shaders.html' title='Fazendo Shaders'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_yqRkvDx98Fs/TTx_DLesMqI/AAAAAAAABfg/01swhH1AOhE/s72-c/desenvolvendo-shaders.07.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-3529706742398613222</id><published>2011-01-07T14:31:00.000-08:00</published><updated>2011-01-09T04:30:59.779-08:00</updated><title type='text'>Pensando em RPG de novo</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TSeJnGV0nFI/AAAAAAAABc0/qQQiZ0oToSk/s1600/cibele_vs_cobra.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="255" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TSeJnGV0nFI/AAAAAAAABc0/qQQiZ0oToSk/s400/cibele_vs_cobra.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Já perdi a conta de quantas vezes falei de lógica de RPG aqui, e acho que ainda tem “pano pra manga”, quanto mais eu analiso mais eu vejo que um RPG, mesmo o mais simples, é composto de minúsculas regras que se amontoam para interagir.&lt;br /&gt;Minha técnica é fazer um simulado mental de uma ação e tentar juntar os recursos que preciso, em vários momentos isso se mostrou monstruoso, dado que vários fatores interferem juntos no resultado.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: Georgia, 'Times New Roman', serif;"&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="color: #0c343d;"&gt;“No começo do jogo Cibele ganha do mega-arqui-mago-fodão o Anel do Senhor da Guerra que lhe permite empunhar qualquer arma do jogo”&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TSeRShpCC4I/AAAAAAAABdA/X4OHrkEWdU0/s1600/anel_do_senhor_da_guerra.rasc.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="200" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TSeRShpCC4I/AAAAAAAABdA/X4OHrkEWdU0/s200/anel_do_senhor_da_guerra.rasc.jpg" width="130" /&gt;&lt;/a&gt;&lt;/div&gt;Um simples paragrafo muito comum que vai ajudar o herói de uma campanha épica, mas que implica em ser transformado em realidade, oque me faz pensar que o anel possui uma função que interfere nos testes quando Cibele tenta carregar qualquer arma só pra dizer: -sim ela pode carregar.&lt;br /&gt;Como eu faço isso? Digo pra sistema que o “não pode” deve mudar para “sim”? Ou na hora do teste digo que a força dela é “infinita”, se digo isso quando devo dizer?&lt;br /&gt;Me veio uma solução na cabeça, de atribuir propriedades à um elemento dessa forma um teste caça nelas a que lhe convém.&lt;br /&gt;&lt;br /&gt;Proposta:&lt;br /&gt;&lt;b&gt;Atos&lt;/b&gt;&lt;br /&gt;+ e - = Transação&lt;br /&gt;&amp;lt; e &amp;gt; = Ação&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;ato( Cibele &amp;gt; Cobra )&lt;/b&gt;&lt;/span&gt; &amp;nbsp;= &amp;nbsp;Ataque normal&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;ato( Cibele.magias.fireball &amp;nbsp;&amp;gt; cobra )&lt;/b&gt;&lt;/span&gt; = Ataque mágico, a função ato() recebe nulo se ela não puder usar a magia.&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;ato( Cibele &amp;lt; veneno )&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;ato( Cibele &amp;lt; Cobra )&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;b&gt;ato( Cibele &amp;lt; Cobra.veneno )&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Os atos operam entre atributos e modificadores.&lt;br /&gt;De um modo geral quando dois personagens interagem é um ataque.&lt;br /&gt;&lt;b&gt;Cibele &amp;gt; cobra&lt;/b&gt; = chama a rotina de ataque. A rotina padrão faz com que a cobra receba os dados de dano. O dano nada mais é que um modificador de efeito imediato ou não.&lt;br /&gt;&lt;i&gt;Exemplo&lt;/i&gt;: se Cibele ataca normalmente o dano é físico (atributo força da personagem + força da arma de mão) cria-se um Modificador chamado dano e passa-se ele para cobra que faz os testes em sua função de receber dano. assim: cobra.recebeDano( dano )&lt;br /&gt;Como dano é um modificador, ele pode alterar os atributos, geralmente “vida” diminuindo-a.&lt;br /&gt;Aqui começa o problema do RPG, diminuir a vida implica em fazer um teste se você pode diminuir esse atributo.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TSeLSVkVQMI/AAAAAAAABc4/ewhdR3Erp70/s1600/diagrama_objetos_acao_ataque.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TSeLSVkVQMI/AAAAAAAABc4/ewhdR3Erp70/s400/diagrama_objetos_acao_ataque.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Um cenário tipico:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;b&gt;Cibele.modificadores + ResistenciaAVeneno(+5)&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;b&gt;Cibele.equipamento + CotaDeMeiasVivarina&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;b&gt;Cibele.equipamento + AnelAntiCobra&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-family: 'Courier New', Courier, monospace;"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;b&gt;Cobra &amp;gt; Cibele -- ou Cibele &amp;lt; Cobra&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Na primeira linha Cibele recebe direto um modificador na sua tabela de modificadores. Assim dizemos ao sistema que ela é naturalmente resistente ao veneno (+5).&lt;br /&gt;Na segunda linha ela recebe uma &lt;b&gt;Cota de Meias Vivarina&lt;/b&gt;, que suportam perfuração de faca, flecha e bala (exceto as &lt;b&gt;facas Guinsu&lt;/b&gt;). (armadura/resistência +20)&lt;br /&gt;Na terceira ela ganha um &lt;b&gt;Anel Anti Cobra&lt;/b&gt;, que dá 30 de dano no ofidio que tocar na pele dela.&lt;br /&gt;A ultima linha a cobra ataca Cibele &amp;gt;. Essa função &amp;gt; desencadeia o mecanismo de teste do de ataque do personagem.&lt;br /&gt;A função de ação passa primeiro pelos testes básicos como esquiva e defesa que diminuem um pouco ou todo o dando.&lt;br /&gt;Depois pelos modificadores da personagem, depois pelo equipamento em uso e executa suas funções de comparação. Se o modificador &lt;b&gt;ResistenciaAVeneno&lt;/b&gt; achar o valor “veneno” nas informações de ataque ele tira os 5 do valor que foi infligido.&lt;br /&gt;Por ultimo o equipamento &lt;b&gt;MeiasVivarina&lt;/b&gt; fazerem um teste e verem que o valor “perfuracao” deve ser ignorado e que o objeto também tem um “cobra” no meio e aplicam a função &lt;b&gt;AnelAntiCobra&lt;/b&gt; &amp;gt; Cobra.&lt;br /&gt;&lt;br /&gt;Note que a primeira parte do teste usa-se os valores constituintes dos próprios personagens e depois os testes secundários com os modificadores.&lt;br /&gt;O grande problema é que um modificador também interfere em um atributo! Em outras palavras o atributo também é uma classe que faz testes e seus objetos precisão conhecer o seu contéiner.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TSeQj1bsuuI/AAAAAAAABc8/__OFrk6R4J0/s1600/uml_rpg_zona.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="337" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TSeQj1bsuuI/AAAAAAAABc8/__OFrk6R4J0/s400/uml_rpg_zona.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;E ainda tenho que optimizar isto para que não ocorra um teste desnecessário a cada frame (uma placa hi-end ultimamente dá em torno de 500 a 1000 frames por segundo), seria um esforço inútil calcular toda a lógica para isso, por isso as classes contém um mecanismo de cache.&lt;br /&gt;&lt;br /&gt;Por ultimo uma modificação a informar no framework descrito acima é a substituição da biblioteca de classes que não estava mais sendo atualizada pelo autor.&lt;br /&gt;Agora estou usando a &lt;a href="http://loop.luaforge.net/"&gt;LOOP&lt;/a&gt;. Muito prática.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Postagens relacionadas&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;a href="http://www.wildwitchproject.com/2009/11/incorporando-banco-de-dados.html"&gt;Incorporando banco de dados&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.wildwitchproject.com/2009/08/religando-os-sistemas.html"&gt;Progeto de I.A.&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-3529706742398613222?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/3529706742398613222/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=3529706742398613222&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3529706742398613222'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3529706742398613222'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2011/01/pensando-em-rpg-de-novo.html' title='Pensando em RPG de novo'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_yqRkvDx98Fs/TSeJnGV0nFI/AAAAAAAABc0/qQQiZ0oToSk/s72-c/cibele_vs_cobra.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-3059277042415997106</id><published>2010-12-30T12:47:00.000-08:00</published><updated>2010-12-30T12:47:20.849-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='tutorial'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Colorindo console - Stress dá nisso</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TRxDhPPI00I/AAAAAAAABa0/vPzEwhthyTM/s1600/Captura_de_tela-128.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="306" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TRxDhPPI00I/AAAAAAAABa0/vPzEwhthyTM/s400/Captura_de_tela-128.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Em um estado de stress meu cérebro travou, concordo que eu deveria me afastar da máquina, mas como não consigo fiquei jogando Assassins Creed, até matar todo mundo da cidade, e me distrai com coisas totalmente inúteis pra não esquecer que programação é divertida.&lt;br /&gt;&lt;br /&gt;Basicamente peguei alguns informativos em blogs e artigos sobre as cores em console. Mais uma vez deu vontade de matar a "anta" que projetou a WinAPI.&lt;br /&gt;&lt;br /&gt;Usando o GIMP você pode pegar qualquer imagem em torno de 78x20 pixels e converte-la em algo para aparecer no console.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;Tutorial&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Primeiro instale a palete com as cores de console no GIMP.&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt; Tem um tutorial &lt;/span&gt;&lt;a href="http://docs.gimp.org/en/gimp-concepts-palettes.html"&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;aqui&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;&amp;nbsp;para você fazer isso.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Pegue a imagem no GIMP, imagem/modo/cores indexadas e selecione esta &lt;a href="http://dl.dropbox.com/u/270587/2011/console-shell.gpl"&gt;palete (download)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TRzrOepESGI/AAAAAAAABa4/MKR1t5P1S18/s1600/Captura_de_tela-125.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TRzrOepESGI/AAAAAAAABa4/MKR1t5P1S18/s400/Captura_de_tela-125.jpg" width="395" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Feito isso vá em &amp;nbsp;imagem/modo/rgb isso volta ao padrão RGB necessário para salvar o HTML.&lt;/li&gt;&lt;li&gt;Agora vá em salvar como e salve com a extensão HTML.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TRzr8-YUNuI/AAAAAAAABa8/Q_HQq-jqnhM/s1600/Captura_de_tela-127.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="237" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TRzr8-YUNuI/AAAAAAAABa8/Q_HQq-jqnhM/s400/Captura_de_tela-127.jpg" width="400" /&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Abra o arquivo no bloco-de-notas e vá no topo de tudo, antes do HTML você vai colar &lt;a href="http://pastebin.com/PDigwK0A"&gt;este script&lt;/a&gt; que vai converter a tabela gerada no GIMP em código multi-plataforma.&lt;/li&gt;&lt;li&gt;Abra o arquivo no navegador, ele irá gerar código C/C++,&amp;nbsp;&amp;nbsp;um array de &lt;i&gt;const char&lt;/i&gt; para o Linux e um array de &lt;i&gt;int&lt;/i&gt; pro Windows.&lt;/li&gt;&lt;li&gt;Em seguida abra a IDE de programação C++&lt;/li&gt;&lt;li&gt;Crie um novo projeto do tipo console&lt;/li&gt;&lt;li&gt;Copie e cole este arquivo &lt;a href="http://pastebin.com/wZ069xSK"&gt;download&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Basta você substituir as linhas 25 e 50 com as linhas geradas para Linux ou Windows.&lt;/li&gt;&lt;/ol&gt;Enjoy ^_~&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-3059277042415997106?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/3059277042415997106/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=3059277042415997106&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3059277042415997106'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3059277042415997106'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/12/colorindo-console-stress-da-nisso.html' title='Colorindo console - Stress dá nisso'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_yqRkvDx98Fs/TRxDhPPI00I/AAAAAAAABa0/vPzEwhthyTM/s72-c/Captura_de_tela-128.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-4904839388341943015</id><published>2010-12-24T21:39:00.000-08:00</published><updated>2010-12-24T21:39:09.244-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='artwork'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='Cibele'/><title type='text'>O poder da insônia - Danos na Armadura</title><content type='html'>&lt;div style="float: left; margin: 4px;"&gt;&lt;br /&gt;&lt;object data="http://dl.dropbox.com/u/270587/wwp/testes_2010/RascunhoDano2.swf" height="375" id="header_swf_wwp" type="application/x-shockwave-flash" width="108"&gt;&lt;param name="allowScriptAccess" value="sameDomain"&gt;&lt;param name="wmode" value="transparent"&gt;&lt;param name="loop" value="false"&gt;&lt;param name="menu" value="false"&gt;&lt;/object&gt; &lt;/div&gt;Natal meus gatos brincando no lado os cachorros com um papo chato e sem a mínima vontade de tentar lembrar como funciona essa tal de televisão.&lt;br /&gt;&lt;br /&gt;Duas horas de desenho no MyPaint e umas linhas no Flex e rascunhei a primeira ideia doida que me veio na mente.&lt;br /&gt;&lt;br /&gt;Ao receber dano um conjunto de texturas deve dar conta de deixar a aparência da personagem bem detonada no melhor estilo anime.&lt;br /&gt;&lt;br /&gt;Tenho que dar um outro nome para a caracteristica de &lt;i&gt;"vida"&lt;/i&gt; da armadura/roupa para não ficar muito idêntico aos RPGs mais conhecidos. Infelizmente não tem como não seguir a mesma ideia que eles seguem, é tudo baseado na realidade.&lt;br /&gt;&lt;br /&gt;Mas uma coisa o meu &lt;i&gt;sistema&lt;/i&gt; tem que os outros não tem:&lt;br /&gt;Ao diminuir o &lt;i&gt;poder da armadura&lt;/i&gt; o &lt;i&gt;carisma&lt;/i&gt; da personagem aumenta em bónus XP&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-4904839388341943015?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/4904839388341943015/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=4904839388341943015&amp;isPopup=true' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/4904839388341943015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/4904839388341943015'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/12/o-poder-da-insonia-danos-na-armadura.html' title='O poder da insônia - Danos na Armadura'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-2066289124840477148</id><published>2010-12-21T00:57:00.000-08:00</published><updated>2010-12-21T00:57:41.617-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Estudo de dados em HTML5</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TPpo-hV0EbI/AAAAAAAABYo/2pZ3l3NlTFg/s1600/Captura_de_tela-116+Projetando+HTML+e+CSS+para+aplicacao.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TPpo-hV0EbI/AAAAAAAABYo/2pZ3l3NlTFg/s400/Captura_de_tela-116+Projetando+HTML+e+CSS+para+aplicacao.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Normatizando a estrutura de dados para o sistema de atualização.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;Para quem chegou agora, este é um blog de projeto, ele contém relatórios sobre o desenvolvimento do jogo bem como os estudos dos personagens e tecnologias envolvidas.e a documentação em sí, como é o caso agora.&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Sim eu sei, nem tem demo, mas quando tiver ele já vai estar preparado para ser "legal". Na verdade fiz isso por estudo e para distrair a cabeça.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;As Informações&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;São preciso apenas 3 dados para se ter uma informação de update: o endereço, a data e o tamanho do download.&lt;br /&gt;Lógico acrescentamos a descrição, assim temos 4 dados passando uma informação concreta.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Como passar as informações?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;A forma mais comum de dados na web é o HTML.&lt;br /&gt;O problema é como passar as informações junto com a página HTML.&lt;br /&gt;&lt;br /&gt;Resolver foi muito mais complicado doque achei de inicio, mas deu para manter o padrão webstandard.&lt;br /&gt;&lt;br /&gt;Um usuário comum estaria satisfeito com isso como sua página de downloads:&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TQ6YNJdedCI/AAAAAAAABas/aNRvoWZbSP8/s1600/baixe_meu_jogo_aki.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="38" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TQ6YNJdedCI/AAAAAAAABas/aNRvoWZbSP8/s400/baixe_meu_jogo_aki.png" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Isto &lt;b&gt;não&lt;/b&gt; esta errado já que o a HTML também se destina a usuário final&amp;nbsp;e foi criada com a finalidade principal de passar infomação e ser fácil de usar mesmo sem grandes conhecimentos&amp;nbsp;&amp;nbsp;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;(sim&amp;nbsp;&lt;/span&gt;&lt;a href="http://pt.starwars.wikia.com/wiki/Padawan"&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;padawan&lt;/span&gt;&lt;/a&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&amp;nbsp;a web não é criação exclusiva de empresas e designers).&lt;/span&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Mas se perde muitos dos recursos valiosos como facilidade de ser encontrado em buscadores (Google), boa aparência nos navegadores e esteticamente não fica grande coisa mesmo para quem não vê o código.&lt;br /&gt;&lt;br /&gt;Então quando se fala em padrão webstandards nós praticamente nos limitamos ao uso profissional, e como este é o meu caso vou partilhar com vocês o sofrimento:&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;span class="Apple-style-span" style="font-size: small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;O código ficou assim:&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TPppOXt6jLI/AAAAAAAABYs/GzfWWTQyRzw/s1600/codigo_html_update_widget.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TPppOXt6jLI/AAAAAAAABYs/GzfWWTQyRzw/s640/codigo_html_update_widget.jpg" width="516" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;a href="http://pastebin.com/L75xaRWm"&gt;Veja o código na integra no pastebim&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Este é o conteúdo do widget.&lt;/b&gt;&lt;br /&gt;Com um mínimo de esforço uma pessoa que não conhece HTML já deve ter começado a entender o código. A marcação HTML5 deixa o significado das tags mais simples, mas vamos começar a explicar a estrutura por traz da simplicidade passo a passo.&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;O &lt;b&gt;STYLE&lt;/b&gt; &lt;/span&gt;como você percebeu é onde fica todo nossa definição de visual, cor e tipo de letra por exemplo. Aqui esta esta uma área separada, o &lt;b&gt;STYLE&lt;/b&gt; é onde se agrega o CSS, uma linguagem de configuração separada da HTML. Também chamada de folha de estilo.&lt;br /&gt;Antigamente a formatação era incluída junto da HTML, mas isso dava um trabalho absurdo para manutenção das páginas então se criou uma segunda linguagem.&lt;br /&gt;Aos que estão acostumados com HTML notem que há um atributo a mais na tag &lt;b&gt;STYLE SCOPED&lt;/b&gt;. Isto isola o estilo dentro da tag pai, no caso &lt;b&gt;ASIDE&lt;/b&gt;.&lt;br /&gt;Evitaria usar tanto a repetição de &lt;b&gt;#CabecalhoDeAtualizacaoWWP&lt;/b&gt; mas preferi manter uma compatibilidade com a HTML4.&lt;br /&gt;Aqui também eu poderia comprimir a imagem de fundo em um formato textual e inseri-la no código sem precisar carregar a imagem separado!&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;HEADER&lt;/b&gt;&lt;/span&gt; é uma seção de cabeçalho, aqui indico informações relevantes sobre a peça.&lt;br /&gt;Escolhi que ele passaria o título e a descrição da atualização, tudo ficando bem avista para o usuário.&lt;br /&gt;Aproveitei-me da tag &lt;b&gt;TIME&lt;/b&gt; que pode inserir datas dentro do texto. Obviamente não existe nenhuma informação visual além do texto, esta tag apenas serve para um mecanismo de busca ou indexação ter uma referência.&lt;br /&gt;Os espertos notaram umas tags de &lt;b&gt;META&lt;/b&gt;, a rigor uma tag dessas deve ser introduzida no cabeçalho da pagina principal e não num elemento. Mas ficou omisso o caso dos widgets na descrição oficial, o próprio &lt;a href="http://www.data-vocabulary.org/"&gt;www.data-vocabulary.org&lt;/a&gt; apenas traz uma indicação de usar estes dados no texto bruto do documento. Então esses metadados estão &lt;i&gt;fora do padrão&lt;/i&gt; e aparecem aqui apenas para mostrar algumas coisas que eu acho que tem "pano pra manga" no padrão web.&lt;br /&gt;&lt;br /&gt;Em seguida o link de download num paragrafo normal &lt;b&gt;P&lt;/b&gt;. Exencial, pode parecer redundância de dados com o widget na mesma pagina do projeto, mas a proposta é uma unidade independente.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;DETAILS&lt;/b&gt;&lt;/span&gt; esta tag provém detalhes para a página principal ou de elementos desta. No caso serão passados nossos detalhes de update.&lt;br /&gt;Inseri um par de comentários, antes e depois de details para facilitar a identificação da área dentro do código HTML.&lt;br /&gt;Os comentários na HTML tem a exata função de delimitar áreas de código com algum comentário que facilite sua identificação para o scripter e no caso para meu interpretador em C++.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;ADDRESS&lt;/b&gt;&lt;/span&gt; como o nome diz, meus dados de contato.&lt;br /&gt;Não há uma obrigatoriedade de dados físicos, até porque na verdade &lt;a href="http://www.google.com/url?q=http%3A%2F%2Fwww.geo-tag.de%2Fgenerator%2Fen.html&amp;amp;sa=D&amp;amp;sntz=1&amp;amp;usg=AFQjCNGrDuuPxkOdm-IQc3fFaWvdHHtCOQ"&gt;GEOTAGS&lt;/a&gt; são inseridas usando METADADOS, os mesmos que como citado acima não podem ser incluídos fora do cabeçalho da página principal.&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Os dados de atualização em si&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Escolhi demarcar os dados dentro da tag &lt;details&gt;, inicialmente pensei em mandar os dados em forma de seção CDATA, assim eu passaria um XML simples, que é muito mais simples de ser analisado, mas a HTML5 tem uma série a mais de tags que facilitou meu trabalho.&lt;/details&gt;&lt;br /&gt;&lt;br /&gt;A HTML prove 2 tags que comportão esses dados: &lt;b&gt;A&lt;/b&gt; e &lt;b&gt;TIME&lt;/b&gt; sendo que &lt;b&gt;A&lt;/b&gt; já guarda o endereço inplicitamente em forma de parâmetro.&lt;br /&gt;&lt;br /&gt;Eu devo passar uma lista com as ultimas atualizações válidas, inclusive para o jogador fazer um downgrade. Então os dados serão passados em dentro da estrutura &lt;b&gt;UL&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Na tag &lt;b&gt;A&lt;/b&gt; além do atributo &lt;b&gt;href&lt;/b&gt; usei também um atributo personalizado conforme descrito &lt;a href="http://www.w3.org/TR/html5/elements.html#custom-data-attribute"&gt;aqui&lt;/a&gt;&amp;nbsp;para passar o tamanho do download.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Nota:&lt;/b&gt;&lt;/span&gt; Toda a definição de TAGs descrita aqui pode ser encontrada neste endereço &lt;a href="http://www.w3.org/TR/html5/"&gt;http://www.w3.org/TR/html5/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;O Visual&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Aqui deixamos as informações definidas acima com uma aparência&amp;nbsp; mais humana.&lt;br /&gt;Escolhi o background uma imagem que irá ter o tema de RPG como convém ao jogo.&lt;br /&gt;Dai bastou manter um pequeno valor de contraste das cores para permitir leitura.&lt;br /&gt;&lt;br /&gt;Como não é tão interessante que o usuário use os links, alterei os links das revisões para que aparecem sem destaque. Já os do link de download mantive o padrão de destaque com uma cor viva contrastante e o sublinhado. Aproveitei um efeitinho da CSS3 o text-shadown.&lt;br /&gt;&lt;br /&gt;Nada muito maior é necessário.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Os textos &lt;/span&gt;&lt;/b&gt;&lt;br /&gt;As informações passadas ao usuário são poucas e se limitam ao relevante.&lt;br /&gt;No caso do widget apenas tem relevância o link de download.&lt;br /&gt;&lt;br /&gt;As descrições nos updates serão coisa de no máximo 2 linhas, se possível uma lauda de tamanho de texto.&lt;br /&gt;&lt;br /&gt;Também será informado o tamanho da atualização. &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ex.s:&lt;/b&gt;&lt;br /&gt;Nova fase disponível. Fase da Aracne (2MB)&lt;br /&gt;Corrigido: problema na textura tal (0.4MB)&lt;br /&gt;&lt;br /&gt;Aqui uma referência que tirei do site do &lt;a href="http://www.soulorderonline.com/"&gt;Soul Order&lt;/a&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TQUaTf8sbzI/AAAAAAAABY0/W7fzl2t31E0/s1600/Captura_de_tela-122.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="248" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TQUaTf8sbzI/AAAAAAAABY0/W7fzl2t31E0/s400/Captura_de_tela-122.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;Opinião pessoal&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Este já é o terceiro projeto independente sério em HTML5 que faço (sendo 1 freela) em todos fiz uma árdua pesquisa e procurei conselhos de &lt;a href="http://www.edersilva.com/"&gt;outros profissionais&lt;/a&gt;.&lt;br /&gt;A ideia por trás dela é a websemantica, por isso as tags tem nomes sugestivos à seções comuns encontradas em páginas atualmente. Talvez numa HTML6 isto provavelmente vai mudar também de acordo com um novo contexto.&lt;br /&gt;&lt;br /&gt;Sistematicamente todos os blogs em português e a maioria dos estrangeiros se limita a passar informações relativa a multimédia e afins chamando tudo de revolução sem se dar conta de como e para que a tecnologia &lt;span class="Apple-style-span" style="font-size: xx-small;"&gt;(na verdade cheguei a ver demos de HTML5 sem uma linha sequer de HTML5)&lt;/span&gt;. Então se você esta procurando informação não-poluída sobre HTML 5 a melhor fonte é a W3C mesmo.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Vamos agora finalmente falar de programação (Welcome to the &lt;span style="font-size: small;"&gt;&lt;strike&gt;Hell&lt;/strike&gt;&lt;/span&gt; C++)&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;HTML é lindona o conceito de dados estruturados com semântica é show, mas obviamente conceito e nada é a mesma coisa se você não tem onde visualizar os dados.&lt;br /&gt;&lt;br /&gt;Não vou descrever a parte da programação a fundo, basta saber que é nela que pegamos os dados e fazemos alguma coisa com eles.&lt;br /&gt;Quem quiser ver um pouco de programação mais explicada pode olhar meu tutorial de &lt;a href="http://www.wildwitchproject.com/2010/06/tutorial-blender-away3d-as3-o-principio.html"&gt;Away3D e Blender&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Usei as seguintes bibliotecas:&lt;br /&gt;&lt;b&gt;CURL&lt;/b&gt; é uma excelente biblioteca, já implementa os mecanismos de conexão com servidor e recebimento de dados facilmente.&lt;br /&gt;&lt;b&gt;TinyXML&lt;/b&gt; é ainda mais fácil de instalar e bastante prática. Não é a mais fundida biblioteca de análise XML mas é a que me responde bem e rápido.&lt;br /&gt;&lt;b&gt;POSIX Threads&lt;/b&gt; a terceira cabeça do cão do inferno, sem comentários, mas sem ela não tem como fazer um mecanismo de checagem de atualização que não TRAVE o jogo.&lt;br /&gt;&lt;br /&gt;Criei uma classe auto-suficiente para fazer a checagem de dados e o aviso ao sistema principal.&lt;br /&gt;&lt;br /&gt;Automaticamente a classe procura por um endereço principal e caso seja preciso em endereços redundantes.&lt;br /&gt;&lt;br /&gt;Ela pega os dados que estão delimitados entre &lt;b&gt;ini: wwp_update_details&lt;/b&gt; e &lt;b&gt;end: wwp_update_details&lt;/b&gt;. E joga eles num analizador XML simples.&lt;br /&gt;Infelizmente tive que usar uma marcação de comentário, uma solução não muito elegante, mas pratica.&lt;br /&gt;A TinyXML não conseguiria analizar os dados HTML já que a HTML ao contrário da XML prevê dados mau formatados.&lt;br /&gt;&lt;br /&gt;Com a POSIX eu rodo ela em um processo separado de baixa prioridade (assim espero que ocorra).&lt;br /&gt;Assim a classe faz seu trabalho da forma mais silenciosa possível.&lt;br /&gt;&lt;br /&gt;Os arquivos para quem quizer ver melhor estão aqui:&lt;br /&gt;&lt;a href="http://pastebin.com/SWvpz18t"&gt;main.cpp&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pastebin.com/WvTkCWUQ"&gt;WWP::WWP_UpdateChecker.h&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pastebin.com/g7RN6w2u"&gt;WWP::WWP_UpdateChecker.cpp&lt;/a&gt;&lt;br /&gt;&lt;a href="http://pastebin.com/AWxAz9i3"&gt;WWP::WWP_UpdateInfo.h&lt;/a&gt; &lt;br /&gt;&lt;a href="http://pastebin.com/y7Y7gMFf"&gt;WWP::WWP_UpdateInfo.cpp&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-2066289124840477148?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/2066289124840477148/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=2066289124840477148&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/2066289124840477148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/2066289124840477148'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/12/estudo-de-dados-em-html5.html' title='Estudo de dados em HTML5'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_yqRkvDx98Fs/TPpo-hV0EbI/AAAAAAAABYo/2pZ3l3NlTFg/s72-c/Captura_de_tela-116+Projetando+HTML+e+CSS+para+aplicacao.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-7932996473572162535</id><published>2010-12-19T09:29:00.000-08:00</published><updated>2010-12-19T09:29:07.952-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fotografia'/><category scheme='http://www.blogger.com/atom/ns#' term='cenário'/><category scheme='http://www.blogger.com/atom/ns#' term='referências'/><title type='text'>Exploração urbana 02</title><content type='html'>As chuvas mortais que caíram no estado fizeram alguns estragos e não foi só a minha Internet que caiu.&lt;br /&gt;Aproveitei para tirar umas fotos diversas de texturas e de exemplos de terreno.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TQ46lk9aDKI/AAAAAAAABaM/6YjYW6rSh7U/s1600/01_DSCF1692.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TQ46lk9aDKI/AAAAAAAABaM/6YjYW6rSh7U/s400/01_DSCF1692.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Este é um riozinho passando pela cidade, depois de transbordar a parede e parte de uma casa caiu.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TQ46rsIOB8I/AAAAAAAABaQ/dBZQ6aAwxP8/s1600/02_DSCF1680.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TQ46rsIOB8I/AAAAAAAABaQ/dBZQ6aAwxP8/s400/02_DSCF1680.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Estes detalhes de entulho em corregos são realmente interessantes, sempre que passo por eles fico imaginando a sensação de explorar entre eles como se fossem cavernas ou vales hostis (se não fosse o fato do esgoto acho que até exploraria).&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TQ46xB4PEeI/AAAAAAAABaU/lW-9JYqUEAk/s1600/03_DSCF1699.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TQ46xB4PEeI/AAAAAAAABaU/lW-9JYqUEAk/s400/03_DSCF1699.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Geralmente eles tem TODOS os elementos necessários para você por num game, vários obstáculos e pontos de apoio para fazer caminhos alternativos e lugares para esconder itens.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TQ462m0WH_I/AAAAAAAABaY/SaNPHvh36J8/s1600/04_DSCF1695.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TQ462m0WH_I/AAAAAAAABaY/SaNPHvh36J8/s400/04_DSCF1695.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Também oferecem ótimas texturas.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TQ468rJOLjI/AAAAAAAABac/4HxnuJeGD5U/s1600/05_DSCF1676.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TQ468rJOLjI/AAAAAAAABac/4HxnuJeGD5U/s400/05_DSCF1676.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Fico olhando para os canos e imagino que Cibele pode usa-los facilmente para escalar e chegar em obstáculos. &lt;a href="http://pt.wikipedia.org/wiki/Parkour"&gt;Parkour&lt;/a&gt; de pobre!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TQ47Cpd5tUI/AAAAAAAABag/HJZhgbHB2Pc/s1600/06_DSCF1676.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TQ47Cpd5tUI/AAAAAAAABag/HJZhgbHB2Pc/s400/06_DSCF1676.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Muros fudidos e muito fungo.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TQ47Irnv3LI/AAAAAAAABak/2jyFdXlBY9g/s1600/07_DSCF1716.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TQ47Irnv3LI/AAAAAAAABak/2jyFdXlBY9g/s400/07_DSCF1716.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;Invadir quintais parece fácil.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TQ47O33N5OI/AAAAAAAABao/tYuzx6bBcRU/s1600/08_DSCF1712.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TQ47O33N5OI/AAAAAAAABao/tYuzx6bBcRU/s400/08_DSCF1712.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Preciso me segurar para não abrir o Blender e sair modelando.&lt;br /&gt;&lt;br /&gt;Estas fotos foram tiradas &lt;a href="http://maps.google.com.br/maps?f=q&amp;amp;source=s_q&amp;amp;hl=pt-BR&amp;amp;geocode=&amp;amp;q=Rua+Bertolino+Cipriano+Pinto,+Cruzeiro+-+S%C3%A3o+Paulo&amp;amp;sll=-22.576454,-44.963434&amp;amp;sspn=0.410848,0.66124&amp;amp;ie=UTF8&amp;amp;hq=&amp;amp;hnear=R.+Bertolino+Cipriano+Pinto+-+Cruzeiro+-+S%C3%A3o+Paulo,+12711-000&amp;amp;ll=-22.566171,-44.965185&amp;amp;spn=0.00321,0.00721&amp;amp;t=k&amp;amp;z=18"&gt;aqui (google maps)&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-7932996473572162535?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/7932996473572162535/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=7932996473572162535&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/7932996473572162535'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/7932996473572162535'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/12/exploracao-urbana-02.html' title='Exploração urbana 02'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_yqRkvDx98Fs/TQ46lk9aDKI/AAAAAAAABaM/6YjYW6rSh7U/s72-c/01_DSCF1692.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-8322181690223424307</id><published>2010-11-28T17:05:00.000-08:00</published><updated>2010-11-28T17:05:09.146-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='animação'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='mortos-vivos'/><category scheme='http://www.blogger.com/atom/ns#' term='blender'/><title type='text'>Animando o Corpo-Seco</title><content type='html'>&lt;object height="261" width="420"&gt;&lt;param name="movie" value="http://www.youtube.com/v/HQMQ2hrywgU?fs=1&amp;amp;hl=pt_BR&amp;amp;color1=0xe1600f&amp;amp;color2=0xfebd01"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/HQMQ2hrywgU?fs=1&amp;amp;hl=pt_BR&amp;amp;color1=0xe1600f&amp;amp;color2=0xfebd01" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="420" height="261"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;Gente eu apanhei feio, mas comecei a descobrir onde estão os controles do Blender 2.5 para animação.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TPL6Yibza5I/AAAAAAAABYg/9f9yajFoZGI/s1600/Captura_de_tela-113.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TPL6Yibza5I/AAAAAAAABYg/9f9yajFoZGI/s400/Captura_de_tela-113.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Muitos dos controles não mudaram, simplesmente ficaram mais aprimorados, pelo menos é oque aparente dando uma olhada inicial no &lt;a href="http://www.sintel.org/"&gt;DVD de Sintel&lt;/a&gt;.&lt;br /&gt;O difícil é agente se readaptar aos atalhos.&lt;br /&gt;&lt;br /&gt;&lt;span class="Apple-style-span" style="font-size: large;"&gt;&lt;b&gt;&lt;i&gt;Offtopic&lt;/i&gt;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;O DVD é realmente luxuoso, tem tutoriais, o filme, documentário, extras e todos os elementos de produção&lt;span class="Apple-style-span" style="font-size: x-small;"&gt; (sim eu comprei na pré-venda ano passado antes de começar a produção)&lt;/span&gt;.&lt;br /&gt;Se quando eu comecei a usar o Blender tivesse essa quantia de material para aprender eu teria sido muito feliz.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TPL7DvuFuTI/AAAAAAAABYk/_FnwwdOnpTM/s1600/sintel_chegou.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="640" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TPL7DvuFuTI/AAAAAAAABYk/_FnwwdOnpTM/s640/sintel_chegou.jpg" width="332" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-8322181690223424307?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/8322181690223424307/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=8322181690223424307&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/8322181690223424307'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/8322181690223424307'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/11/animando-o-corpo-seco.html' title='Animando o Corpo-Seco'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_yqRkvDx98Fs/TPL6Yibza5I/AAAAAAAABYg/9f9yajFoZGI/s72-c/Captura_de_tela-113.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-2647968132001350941</id><published>2010-11-15T16:18:00.000-08:00</published><updated>2010-11-15T16:18:16.511-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='personagens'/><title type='text'>Jacaré e o aprendizado da nova interface de animação</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TOHGkNzLH5I/AAAAAAAABWg/EqZhEerKbHA/s1600/jacare1.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="224" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TOHGkNzLH5I/AAAAAAAABWg/EqZhEerKbHA/s400/jacare1.gif" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Jacarés ficam esperando suas presas no charco, nos mangues e nas montanhas geladas e nos esgotos das cidades.&lt;br /&gt;Predadores vorazes sua poderosa mandíbula é capaz de entortar o aço mas seus dentes não cortam. Ele esmaga sua presa e em seguida tenta arrancar pedaços dela com violentos movimentos.&lt;br /&gt;As raças conhecidas são os jacarés dos mangues, jacarés do esgoto, jacarés mandíbula-gigante (que vivem nas montanhas) e jacarés alados.&lt;br /&gt;Os especialistas dizem que os jacarés evoluíram de largatixas do período permiano. E que uma maneira de se imobilizar o jacaré é pô-lo de barriga para cima e fazer-lhe cafuné na barriga.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TOHKe1jt1vI/AAAAAAAABWk/NeTgD9wuyKI/s1600/Captura_de_tela-101.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TOHKe1jt1vI/AAAAAAAABWk/NeTgD9wuyKI/s400/Captura_de_tela-101.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&amp;nbsp;E modelagem foi extreme-low-poly, talvez meu senso numérico tenha falhado um pouco mas no final das contas acho que atingi um bom custo benefício.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TOHKiVsYJSI/AAAAAAAABWo/7KCthAo7w1o/s1600/Captura_de_tela-103.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TOHKiVsYJSI/AAAAAAAABWo/7KCthAo7w1o/s400/Captura_de_tela-103.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Pintar foi gostosinho os pincéis do Blender agora aparecem com miniaturas para seleção.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TOHKlXwd_XI/AAAAAAAABWs/2Wnhn4-Pvp8/s1600/Captura_de_tela-105.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TOHKlXwd_XI/AAAAAAAABWs/2Wnhn4-Pvp8/s400/Captura_de_tela-105.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Animar que esta sendo complicado, ainda não entendi direito o novo mecanismo, não acho onde estão os controles de frames individuais para cada bone e o menu de propriedades do lado é muito mais cheio de coisas (também esta condensando vários painéis do Blender antigo).&lt;br /&gt;Mas logo animo ele direito.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-2647968132001350941?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/2647968132001350941/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=2647968132001350941&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/2647968132001350941'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/2647968132001350941'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/11/jacare-e-o-aprendizado-da-nova.html' title='Jacaré e o aprendizado da nova interface de animação'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_yqRkvDx98Fs/TOHGkNzLH5I/AAAAAAAABWg/EqZhEerKbHA/s72-c/jacare1.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-3010385119498707920</id><published>2010-11-14T08:17:00.000-08:00</published><updated>2010-11-14T08:17:55.954-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='terror'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='personagens'/><title type='text'>Corpo Seco NPC</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TOAHQ6KsSfI/AAAAAAAABWY/UdJUiKSfIT8/s1600/Captura_de_tela-98.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TOAHQ6KsSfI/AAAAAAAABWY/UdJUiKSfIT8/s400/Captura_de_tela-98.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Um "Corpo-Seco" é tradicionalmente um morto-vivo que se confunde com a vegetação pois o aspecto da sua carcaça lembra galhos de árvores secos e distorcidos.&lt;br /&gt;Só se transformam em corpos-secos pessoas que foram extremamente más em vida, essa ideia é bem antiga deve vir até da Europa pré cristã e chegou à nossas roças.&lt;br /&gt;A saber um Litch é um mago que viveu pela maldade e fez grandes crueldades em nome do mal para re-viver como um dos demônios mais fortes. Já um corpo-seco é uma pessoa que fez uma maldade tão grande, como por exemplo um funkeiro que vai num asilo e fica cantando creu no ouvido dos velhinhos, uma mulher que põe laxante em saco de bala de São Cosme e Damião, etc. Essas pessoas por sua maldade tão grotesca são renegados até no inferno e a própria terra enojada os cospe.&lt;br /&gt;São almas condenadas com sede de sangue dos vivos.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TOAHSoaEFKI/AAAAAAAABWc/4btKKQtDuA8/s1600/Captura_de_tela-100.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="372" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TOAHSoaEFKI/AAAAAAAABWc/4btKKQtDuA8/s400/Captura_de_tela-100.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;No jogo eles estarão escondidos no mato camuflados.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TOAHMVCLURI/AAAAAAAABWU/OpFWG_FkTRY/s1600/Captura_de_tela-96.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="256" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TOAHMVCLURI/AAAAAAAABWU/OpFWG_FkTRY/s400/Captura_de_tela-96.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Eu gostei do resultado da modelagem, fiz ela em um dia, e depois o normalmap.&lt;br /&gt;Ainda irei pintar e se possível acrescentar detalhes de folhas e galhos de árvores na pintura e no normalmap.&lt;br /&gt;&lt;br /&gt;Mas que ele ficou bonitinho ele ficou, o resultado ficou mais a cara de SD do jogo do que os meus primeiros &lt;a href="http://www.wildwitchproject.com/2009/05/espadas-magicas-encantos-livros-antigos.html"&gt;mortos-vivos&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-3010385119498707920?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/3010385119498707920/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=3010385119498707920&amp;isPopup=true' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3010385119498707920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3010385119498707920'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/11/corpo-seco-npc.html' title='Corpo Seco NPC'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_yqRkvDx98Fs/TOAHQ6KsSfI/AAAAAAAABWY/UdJUiKSfIT8/s72-c/Captura_de_tela-98.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-5615541745983791688</id><published>2010-11-13T17:44:00.000-08:00</published><updated>2010-11-13T17:44:33.917-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='personagens'/><title type='text'>Coelhinhos from hell</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TN88fCNfokI/AAAAAAAABWQ/OSNBI0rJXlA/s1600/coelinhu.01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="328" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TN88fCNfokI/AAAAAAAABWQ/OSNBI0rJXlA/s400/coelinhu.01.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;i style="color: #351c75; font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;Cibele encontra uma multidão indo em direção oposta, e imediatamente os adverte:&lt;br /&gt;-Não, pera! Onde vocês vão? Não podem ir por esse caminho.&lt;br /&gt;-O que? Por que não?&lt;br /&gt;-Tá cheio de "coelhinhos" lá! Eles são medonhos e surgem do nada.&lt;br /&gt;-Ora menina, não nos atrapalhe. Essas pessoas perderam suas casas essa semana, e ontem mesmo tivemos que passar por um pântano cheio de crocodilos.&lt;br /&gt;-Crocodilos não são NADA! Aqueles coelhinhos são o diabo, eles vão matar vocês!&lt;br /&gt;-Desapareça!&lt;br /&gt;Dando um safanão que a jogou longe o homem saiu conduzindo a multidão de pessoas tristes. Enquanto passava Cibele ouve deles os lamentos: "-Eles vieram de noite!", "-Minha esposa, meus filhos...", "-Malditos clérigos de Nagdahbastarthen!", "-Minha plantação, todo meu trabalho", "-Meu ouro, minhas ferramentas".&lt;/i&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TN88bWH9CXI/AAAAAAAABWM/xjchaQinP5Q/s1600/Captura_de_tela-93.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="380" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TN88bWH9CXI/AAAAAAAABWM/xjchaQinP5Q/s400/Captura_de_tela-93.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-family: Georgia,&amp;quot;Times New Roman&amp;quot;,serif;"&gt;&lt;i&gt;Coelhinhos, entidades abissais que surgiram na terra após fugir do  inferno. Criaturas com uma sede de sangue insaciável e selvageria  impressionante, atacando mesmo o oponente depois de morto.&lt;br /&gt;Caracterizam-se pela emboscada onde a vitima distraída é morta quase que  instantaneamente pelas suas pressas gigantes. Ou se sobreviver ao  ataque morre em poucas horas devido ao poder infeccioso das bactérias  mutantes que vivem na gengiva do coelhinho.&lt;/i&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Uma boa saída entre fases, para situar o jogador dentro da trama. E uma desculpa para pôr coelhinhos na cena.&lt;br /&gt;Notem que pela descrição os coelhinhos além de dano de perfuração tem  dano de veneno e técnicas como "fingir de morto" não funcionam.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-5615541745983791688?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/5615541745983791688/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=5615541745983791688&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/5615541745983791688'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/5615541745983791688'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/11/coelhinhos-from-hell.html' title='Coelhinhos from hell'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_yqRkvDx98Fs/TN88fCNfokI/AAAAAAAABWQ/OSNBI0rJXlA/s72-c/coelinhu.01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-6977517187479890814</id><published>2010-11-13T16:08:00.000-08:00</published><updated>2010-11-13T16:25:27.186-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notícia'/><title type='text'>101 postagens</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TN8iFnRn63I/AAAAAAAABWI/SuPjTELTLS4/s1600/Captura_de_tela-95.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="218" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TN8iFnRn63I/AAAAAAAABWI/SuPjTELTLS4/s400/Captura_de_tela-95.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Puxa eu nem tinha reparado até ver o número redondo 100 no painel de controle do Blogger&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;a href="http://wildwitchproject.tumblr.com/"&gt;&lt;span style="font-size: x-small;"&gt;http://&lt;/span&gt;&lt;span style="font-size: large;"&gt;wildwitchproject.tumblr.com&lt;/span&gt;&lt;span style="font-size: x-small;"&gt;/ &lt;/span&gt;&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;Bom, uma ferramenta nova que estou usando é o Tumblr, um sistema de blogs que se propõe a ser simples até o talo, tanto que mais lembra um Twitter doque um site de blog, Só que com as vantagens de ser encorpado.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TN8iB5tDG3I/AAAAAAAABWE/Y3UerFClSZM/s1600/Captura_de_tela-94.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="286" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TN8iB5tDG3I/AAAAAAAABWE/Y3UerFClSZM/s400/Captura_de_tela-94.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Comecei as primeiras customizações no serviço, que me permitiram fazer muitas coisas, como faço atualmente no Blogger.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TN8h-EQxHGI/AAAAAAAABWA/P29pJuQPdYA/s1600/Captura_de_tela-91.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TN8h-EQxHGI/AAAAAAAABWA/P29pJuQPdYA/s400/Captura_de_tela-91.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Um mínimo de conhecimento de CSS já da pra fazer estrago. Acho até que vou fazer uns tutoriaizinhos pra chamar a atenção pro blog :P&lt;br /&gt;&lt;br /&gt;Bom, em outras palavras isso representa uma ferramenta extra e não uma futura substituição.&lt;br /&gt;O Blogger continua sendo a unidade principal que gera textos e documentos para o jogo, o Tumblr entra substituindo o twitipic, onde eu posso postar imagens e ideias rápidas sem compromisso.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-6977517187479890814?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/6977517187479890814/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=6977517187479890814&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6977517187479890814'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/6977517187479890814'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/11/101-postagens.html' title='101 postagens'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_yqRkvDx98Fs/TN8iFnRn63I/AAAAAAAABWI/SuPjTELTLS4/s72-c/Captura_de_tela-95.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-3733892827188106458</id><published>2010-11-07T12:41:00.000-08:00</published><updated>2010-11-07T12:41:52.773-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='artwork'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='2D'/><title type='text'>Modelos para Dezembro Hárpia, Rapy and Zody e Mecha</title><content type='html'>Bom, vamos aos progressos coisas soltas mais recentes.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TNbron6bXxI/AAAAAAAABUM/ZT7mCYx3SrU/s1600/Captura_de_tela-85.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TNbron6bXxI/AAAAAAAABUM/ZT7mCYx3SrU/s400/Captura_de_tela-85.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Vocês já estavam pensando que ele não ia sair do concept, né? Este é o inicio da modelagem do Dr Rapy and Zody.&lt;br /&gt;Pra quem não se lembra ele é um cientista louco que ficou décadas preso num sanatório e quando escapou durante uma guerra civil montou um monstro com pedaços de corpos que encontrou no campo de batalha. Vejam os &lt;a href="http://www.wildwitchproject.com/2009/03/mais-um-inimogo.html"&gt;detalhes &amp;nbsp;aqui&lt;/a&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TNbrkQ4exvI/AAAAAAAABUI/LpePegv4jfI/s1600/Captura_de_tela-81.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TNbrkQ4exvI/AAAAAAAABUI/LpePegv4jfI/s400/Captura_de_tela-81.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;A modelagem da hárpia também começou. As hárpias são seres metade pássaro e metade sapatão que sequestraram a "linda" filha do Rei Trololow e a prenderam numa gaiola para que só elas desfrutassem da sua linda e melodiosa voz. &amp;nbsp;Ela é outro modelo que estou refazendo e esta bem melhor &lt;a href="http://www.wildwitchproject.com/2008/12/book-is-on-blender.html"&gt;olhem só&lt;/a&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TNbrtV30F1I/AAAAAAAABUQ/CkmrxGwQuXA/s1600/Captura_de_tela-87.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TNbrtV30F1I/AAAAAAAABUQ/CkmrxGwQuXA/s400/Captura_de_tela-87.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Este modelo esta meio que na modelagem ~ concept, mas é um mecha para uma das fases.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TNbrv7G4M2I/AAAAAAAABUU/BHQSmgb6-o0/s1600/Captura_de_tela-88.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="316" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TNbrv7G4M2I/AAAAAAAABUU/BHQSmgb6-o0/s400/Captura_de_tela-88.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Bom, não sou muito bom no design de mechas, mas acho que dá pra quebrar o galho.&lt;br /&gt;Algumas soluções surgem no momento da necessidade, como nesse sistema de conexão das asas. Acabou que deu uma boa visão esteticamente.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TNcK6c0AlGI/AAAAAAAABUc/khmEkuLGz60/s1600/Captura_de_tela-86.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TNcK6c0AlGI/AAAAAAAABUc/khmEkuLGz60/s400/Captura_de_tela-86.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Abro o MyPaint em segundo plano, a cabeça começa a flutuar em tantas coisas que aproveito para rascunhar algumas imagens. Olha a &lt;a href="http://www.wildwitchproject.com/2010/02/loira-do-banheiro-caracter-design-02.html"&gt;Loira do Banheiro&lt;/a&gt; ai, o problema desses personagens bonitos é que agente se apaixona por eles e fica o tempo todo repensando.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TNcK1TS6dPI/AAAAAAAABUY/lAlqXzmrjXk/s1600/Captura_de_tela-82.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TNcK1TS6dPI/AAAAAAAABUY/lAlqXzmrjXk/s400/Captura_de_tela-82.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TNcMFkGCX-I/AAAAAAAABUg/yTwbun_Bi44/s1600/Captura_de_tela-89.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TNcMFkGCX-I/AAAAAAAABUg/yTwbun_Bi44/s400/Captura_de_tela-89.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-3733892827188106458?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/3733892827188106458/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=3733892827188106458&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3733892827188106458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3733892827188106458'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/11/modelos-para-dezembro-harpia-rapy-and.html' title='Modelos para Dezembro Hárpia, Rapy and Zody e Mecha'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_yqRkvDx98Fs/TNbron6bXxI/AAAAAAAABUM/ZT7mCYx3SrU/s72-c/Captura_de_tela-85.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-3160010236080234518</id><published>2010-11-02T16:30:00.000-07:00</published><updated>2010-11-02T17:01:04.579-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='artwork'/><category scheme='http://www.blogger.com/atom/ns#' term='personagens'/><title type='text'>Homem Poraque</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TNCahxv9rvI/AAAAAAAABUE/nAb4nwRdxOg/s1600/homem_poraque.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TNCahxv9rvI/AAAAAAAABUE/nAb4nwRdxOg/s400/homem_poraque.jpg" width="353" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span style="font-size: large;"&gt;Thessalius Ludicus Victor&lt;/span&gt;&lt;br /&gt;Convencido, inescrupuloso e bastante forte. &lt;br /&gt;A palavra cuzão é a que seus "amigos" melhor usavam para descreve-lo.&lt;br /&gt;Sempre arrumou confusão na cidade onde vivia até que um dia sua ambição o fez ser banido para uma ilha deserta no meio do "grande rio".&lt;br /&gt;E porque ele não saiu de lá nadando? Simplesmente porque a ilha fica circundada por fendas como se tivesse cachoeiras por todos os lados. Nenhum navio consegue entrar ou sair de lá.&lt;br /&gt;&lt;br /&gt;Tessalius é um poraque, bem mais abrasileirado doque um tritão com tridente de raios, mas igualmente mortal.&lt;br /&gt;&lt;br /&gt;A ideia é que Cibele encontre ele com algo em mãos que o ajudará a escapar da prisão se possível em uma quest alternativa.&lt;br /&gt;&lt;br /&gt;Bom, não estava muito inspirado hoje. Quem sabe mais adiante eu melhore sua história.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-3160010236080234518?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/3160010236080234518/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=3160010236080234518&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3160010236080234518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/3160010236080234518'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/11/homem-poraque.html' title='Homem Poraque'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_yqRkvDx98Fs/TNCahxv9rvI/AAAAAAAABUE/nAb4nwRdxOg/s72-c/homem_poraque.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-7726300169809008871</id><published>2010-10-30T13:06:00.000-07:00</published><updated>2010-10-31T04:10:17.385-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cenário'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='lua'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Pensando no sistema de update</title><content type='html'>Nada muito grande mas como se trata de um jogo que pode levar muito tempo até chegar no final uma opção é realmente os updates.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TMxwc6XG1CI/AAAAAAAABTc/2g_w6uBmRFk/s1600/game+design+10-2010-+wwp.01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="281" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TMxwc6XG1CI/AAAAAAAABTc/2g_w6uBmRFk/s400/game+design+10-2010-+wwp.01.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Bom, como abrir um jogo e receber um aviso: "Favor atualizar seu cliente" é uma coisa chata até no cliente do World of Warcraft.&lt;br /&gt;&lt;br /&gt;Então vou tentar incorporar a carga durante a execução do jogo. Teoricamente é simples e usando a experiência adquirida com sockets e threading desses últimos messes será "pá-pimba".&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TMx2U3n3MWI/AAAAAAAABTg/SiqLZdX9i_A/s1600/game+design+10-2010-+wwp.02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="281" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TMx2U3n3MWI/AAAAAAAABTg/SiqLZdX9i_A/s400/game+design+10-2010-+wwp.02.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Isso também representa problemas como o desses desenhos: do jogador entrar num cenário, sair, fazer uma quest e voltar e encontrar um cenário modificado.&lt;br /&gt;&lt;br /&gt;No entanto usando a arquitetura de database fica mais prático fazer isso do que com estruturas de arquivos, além de poder ter um controle de versionamento do jogo nas mãos do jogador!&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TMx3Quva2fI/AAAAAAAABTk/3_PY5ZVsNbg/s1600/sistema+de+atualiza%C3%A7%C3%A3o.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TMx3Quva2fI/AAAAAAAABTk/3_PY5ZVsNbg/s400/sistema+de+atualiza%C3%A7%C3%A3o.png" width="396" /&gt;&lt;/a&gt;&lt;/div&gt;É um rascunho de ideia meio doida mas coerente.&lt;br /&gt;&lt;br /&gt;Estou adicionando essa ideia no documento de de &lt;a href="https://docs.google.com/Doc?docid=0AacWl9Nlsty3ZGRkdnJyZzRfOTFnaDg0d25nNA&amp;amp;hl=en"&gt;coisas boas e ruins sobre jogos&lt;/a&gt;. Lembram-se dele? É uma tabela colaborativa que eu disponibilizei esses tempos &lt;a href="http://www.wildwitchproject.com/2009/12/game-design.html"&gt;aqui&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Como adotei a ideia de banco de dados como estrutura de arquivos, essa estratégia deve ser fácil de ser adotada, nem que represente clonar uma tabela que esta sendo usada em tempo de execução para realizar o update de forma suave.&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;(Sim tenho um certo vicio em databases, afinal são quase 15 anos de programação web&amp;nbsp; XP )&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esses tempos eu me estressei com o recurso das "migrates" do framework Rails, e agora estou eu aqui pensando em montar scripts Lua para fazer o mesmo!!!&lt;br /&gt;&lt;br /&gt;Teoricamente é só mandar código que automatize a migração de maquinas de estado dentro e fora do jogo. Bom o tempo dirá se essa teoria é de fato tão simples quanto parece.&lt;br /&gt;^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-7726300169809008871?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/7726300169809008871/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=7726300169809008871&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/7726300169809008871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/7726300169809008871'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/10/pensando-no-sistema-de-update.html' title='Pensando no sistema de update'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_yqRkvDx98Fs/TMxwc6XG1CI/AAAAAAAABTc/2g_w6uBmRFk/s72-c/game+design+10-2010-+wwp.01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-17980707525829110</id><published>2010-10-24T16:53:00.000-07:00</published><updated>2010-10-24T16:53:41.955-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='artwork'/><category scheme='http://www.blogger.com/atom/ns#' term='Projeto Filho'/><category scheme='http://www.blogger.com/atom/ns#' term='Marketing'/><category scheme='http://www.blogger.com/atom/ns#' term='action script 3'/><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='cg'/><category scheme='http://www.blogger.com/atom/ns#' term='Cibele'/><category scheme='http://www.blogger.com/atom/ns#' term='2D'/><title type='text'>Distraindo a cabeça com um novo header</title><content type='html'>Não vai ajudar nada no desenvolvimento, mas vai fazer um bem a mim e bem pro blog mudar um pouco a cara.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TMTCMKHg2hI/AAAAAAAABSo/M_a3QR4QcU8/s1600/Captura_de_tela-72.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TMTCMKHg2hI/AAAAAAAABSo/M_a3QR4QcU8/s400/Captura_de_tela-72.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Desenhar e projetar um novo header me faz relaxar.&lt;br /&gt;Meu traço e habilidades de desenho taum um lixo. Só dão pro gasto.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TMTCRp5QqaI/AAAAAAAABSs/xtDduaN0kbM/s1600/Captura_de_tela-73.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TMTCRp5QqaI/AAAAAAAABSs/xtDduaN0kbM/s400/Captura_de_tela-73.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;To sem ideias de pose, mas a clássica serve também.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TMTCV82u2WI/AAAAAAAABSw/tkdzPpbAdK4/s1600/Captura_de_tela-75.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TMTCV82u2WI/AAAAAAAABSw/tkdzPpbAdK4/s400/Captura_de_tela-75.jpg" width="353" /&gt;&lt;/a&gt;&lt;/div&gt;Para deixar o desenho um pouco mais bombado resolvi esculpir o relevo da personagem e jogar como um bumpmap para iluminação.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TMTCaP9HyyI/AAAAAAAABS0/StaqKBjAK_o/s1600/Captura_de_tela-76.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TMTCaP9HyyI/AAAAAAAABS0/StaqKBjAK_o/s400/Captura_de_tela-76.jpg" width="368" /&gt;&lt;/a&gt;&lt;/div&gt;Agora o novo header vai ter uma interação com a fonte de luz (também).&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TMTCb2VlHxI/AAAAAAAABS4/rw_QKW0QXpo/s1600/Captura_de_tela-78.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="216" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TMTCb2VlHxI/AAAAAAAABS4/rw_QKW0QXpo/s400/Captura_de_tela-78.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Esse teste de implementação ainda esta pouco animador. Usei um exemplo que achei &lt;a href="http://wonderfl.net/c/qBVf/"&gt;neste site&lt;/a&gt;, mas o algoritmo serve apenas para "luz direcional".&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TMTCdrijsKI/AAAAAAAABS8/sOBlaI2o9FA/s1600/Captura_de_tela-79.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="216" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TMTCdrijsKI/AAAAAAAABS8/sOBlaI2o9FA/s400/Captura_de_tela-79.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;A chave do bump é essa matriz muito simples, até impressiona &lt;span style="font-size: xx-small;"&gt;(se eu soubesse matemaquiques nesse nível estaria feliz!)&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TMTCe_zXkiI/AAAAAAAABTA/d9b23W5QIc4/s1600/Captura_de_tela-80.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="233" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TMTCe_zXkiI/AAAAAAAABTA/d9b23W5QIc4/s400/Captura_de_tela-80.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Bom, terminando o freela chato, e acertando o ritmo de postagem no &lt;a href="http://www.rpgvale.com.br/"&gt;RPG Vale&lt;/a&gt; eu volto com força pro projeto.&lt;br /&gt;&lt;br /&gt;Recebi uns feed-back positivos do projeto essa semana que me deixaram muito feliz e deram um animo ^^&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-17980707525829110?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/17980707525829110/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=17980707525829110&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/17980707525829110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/17980707525829110'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/10/distraindo-cabeca-com-um-novo-header.html' title='Distraindo a cabeça com um novo header'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_yqRkvDx98Fs/TMTCMKHg2hI/AAAAAAAABSo/M_a3QR4QcU8/s72-c/Captura_de_tela-72.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-4701079625942135665</id><published>2010-10-17T17:08:00.000-07:00</published><updated>2010-10-17T17:08:45.522-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='cg'/><category scheme='http://www.blogger.com/atom/ns#' term='cenário'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><title type='text'>terra brasilis et difficile</title><content type='html'>Meu ritimo de postagem diminuiu um pouco, por sorte meus acessos não muito.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&amp;nbsp;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TLuJRhPP2ZI/AAAAAAAABQo/hO1-Kk6gC2g/s1600/Captura_de_tela-58.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TLuJRhPP2ZI/AAAAAAAABQo/hO1-Kk6gC2g/s400/Captura_de_tela-58.jpg" width="400" /&gt;&lt;/a&gt; &lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: left;"&gt;&lt;/div&gt;&lt;br /&gt;Bom, olhando a imagem acima vocês podem ver que as plantas parasitárias ficaram um lixo.&lt;br /&gt;Então vou deixar a modelagem manual de lado um pouco. Assim que estiver plotando esta arvore no ambiente do game, vou tentar implementar um sistema de particulas para fazer o trabalho. &lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TLuJ44wD8UI/AAAAAAAABQ0/7KOzLOVEutY/s1600/Captura_de_tela-55.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TLuJ44wD8UI/AAAAAAAABQ0/7KOzLOVEutY/s400/Captura_de_tela-55.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;A ideia de fazer arvores próximas à realidade que eu encontro ainda esta meio confusa e complicada.&lt;br /&gt;Este modelo de arvore ficou com cerca de 1000 triângulos. Algo bem realista, e fácil de aplicar um LOD.&lt;br /&gt;&lt;br /&gt;Pode parecer muito polígono, mas essa é uma das coisas que eu sabia que iam aparecer desde antes de começar o projeto oficialmente.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TLuJuQgBgJI/AAAAAAAABQs/l4xK4N7GuC0/s1600/Captura_de_tela-52.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TLuJuQgBgJI/AAAAAAAABQs/l4xK4N7GuC0/s400/Captura_de_tela-52.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;A implementação com a OgreKit ainda esta nos testes, mas pelo visto vai ser ela mesmo. Talvez eu tenho que migrar do Eclipse para o CMake (texto puro), algo que não deve ser tão ruim assim. No final das contas o Eclipse só esta servindo pra corrigir erros de digitação.&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;Não me acerto em fazer o Code Blocks funcionar e o Visual Studio não mostro nenhuma vantagem sobre o Eclipse.&lt;/span&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TLuJz4L7KxI/AAAAAAAABQw/rD5rdMigur4/s1600/Captura_de_tela-53.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TLuJz4L7KxI/AAAAAAAABQw/rD5rdMigur4/s400/Captura_de_tela-53.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Estou preparando o projeto de objetos interativos. Essa imagem é um aviso que o jogador terá que fazer algum teste para conseguir decifrar.&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TLuJ9laeR0I/AAAAAAAABQ4/4Je10nKCsNA/s1600/cibele_model_sheet_work01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TLuJ9laeR0I/AAAAAAAABQ4/4Je10nKCsNA/s400/cibele_model_sheet_work01.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Outro passo corrido é o "model sheet" da Cibele. Eu tenho alguns outros estudos dela em alguma pilha de papel mofado mas não no formato SD que irei usar no jogo.&lt;br /&gt;&lt;br /&gt;Bom, uma semana e meia de freela dor-de-cabeça atrapalhando tudo, mas os problemas foram pro ralo.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-4701079625942135665?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/4701079625942135665/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=4701079625942135665&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/4701079625942135665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/4701079625942135665'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/10/terra-brasilis-et-difficile.html' title='terra brasilis et difficile'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_yqRkvDx98Fs/TLuJRhPP2ZI/AAAAAAAABQo/hO1-Kk6gC2g/s72-c/Captura_de_tela-58.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-4745445237023434833</id><published>2010-09-20T03:35:00.000-07:00</published><updated>2010-09-20T03:35:22.631-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='fotografia'/><category scheme='http://www.blogger.com/atom/ns#' term='cg'/><category scheme='http://www.blogger.com/atom/ns#' term='cenário'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><title type='text'>Arvores da floresta de Aracne</title><content type='html'>Criando árvores gigantes para a cena da &lt;a href="http://www.wildwitchproject.com/2009/01/arakne.html"&gt;Aracne&lt;/a&gt;.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TJZT58pH6DI/AAAAAAAABHw/UURnIdl3mcI/s1600/arvore_em_producao_blender_2.50.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TJZT58pH6DI/AAAAAAAABHw/UURnIdl3mcI/s400/arvore_em_producao_blender_2.50.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;A produção da malha textura da árvore esta em andamento, o primeiro passo foi pegar uma textura real de árvore...&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="297" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TJaDXvG_1YI/AAAAAAAABIo/I9anRrpbJcM/s400/DSCF8383.jpg" style="margin-left: auto; margin-right: auto;" width="400" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;a href="http://maps.google.com.br/maps?q=-22.567717,-44.962803&amp;amp;num=1&amp;amp;t=k&amp;amp;sll=-22.576454,-44.963434&amp;amp;sspn=0.164896,0.256119&amp;amp;ie=UTF8&amp;amp;ll=-22.5677,-44.962846&amp;amp;spn=0.001724,0.002339&amp;amp;z=19&amp;amp;iwloc=A"&gt;&lt;span style="font-size: xx-small;"&gt;Lugar da foto no Google Maps&lt;/span&gt;&lt;/a&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TJaDXvG_1YI/AAAAAAAABIo/I9anRrpbJcM/s1600/DSCF8383.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;e transformar em textura ladrilhável com a ferramenta clone e o filtro de "Tornar encaixável".&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TJZwHHxRonI/AAAAAAAABH4/aatRIy43q8A/s1600/DSCF8375b.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TJZwHHxRonI/AAAAAAAABH4/aatRIy43q8A/s400/DSCF8375b.JPG" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Dei também um acabamento de desenho à árvore. O processo inclui saturação, posterização e sobreposição de camadas.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/TJZxdGss-EI/AAAAAAAABIQ/lMhKlEjutWU/s1600/DSCF8375.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/TJZxdGss-EI/AAAAAAAABIQ/lMhKlEjutWU/s400/DSCF8375.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;O segundo passo foi criar um plano, multiplica-lo com Alt+D (clone). Setar a UV para pegar todo o quadrado e depois sub-dividilo em centenas de vezes. Agora o relevo é feito com o Sculpt.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TJZ1YldocMI/AAAAAAAABIY/wdBhjCwzOGM/s1600/Captura_de_tela-46.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TJZ1YldocMI/AAAAAAAABIY/wdBhjCwzOGM/s400/Captura_de_tela-46.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Já as pequenas trepadeiras foram acertadas no GIMP com auxílio do normalmap plugin.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TJZ22-ROhuI/AAAAAAAABIg/TYqUEHZnuRY/s1600/Captura_de_tela-44.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="265" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TJZ22-ROhuI/AAAAAAAABIg/TYqUEHZnuRY/s400/Captura_de_tela-44.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;A imagem gerada no GIMP foi usada no material dentro do Blender, na hora do bake ele é incorporado ao resultado final. Assim temos um mapeamento muito rico com poucos poligonos.&lt;br /&gt;&lt;br /&gt;As folhas e galhos menores serão feitos com textura. Do mesmo modo que no Yo Frankie.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TJapCv6E5dI/AAAAAAAABJA/XS4rhfqelCA/s1600/DSCF0707b.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="300" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TJapCv6E5dI/AAAAAAAABJA/XS4rhfqelCA/s400/DSCF0707b.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Minha árvore esta virando um Frankenstein, mas usar imagens de perto é tradição des-de as primeiras tentativas.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;b&gt;O tipo de mata&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;Bom, a ideia é criar um ambiente denso, sombrio e de árvores altas. Logicamente tenho dificuldade em achar um lugar como esse como referência.&lt;br /&gt;Ao olhar árvores altas vê-se que os galhos ficam em cima mesmo. Tomei a liberdade de experimentar os modelos com galhos saindo do meio, assim posso utiliza-los para deixar o cenário mais complexo. Podendo Cibele caminhar sobre as árvores.&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/_yqRkvDx98Fs/TJasjU5a-UI/AAAAAAAABJI/ogchMJjMQlU/s1600/Captura_de_tela-47.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="400" src="http://4.bp.blogspot.com/_yqRkvDx98Fs/TJasjU5a-UI/AAAAAAAABJI/ogchMJjMQlU/s400/Captura_de_tela-47.jpg" width="257" /&gt;&lt;/a&gt;&lt;/div&gt;A árvore é composta de três malhas, a principal, os galhos intermediários e as folhas. Em proporções reais ela tem 40 metros.&lt;br /&gt;&lt;br /&gt;Uma mata brasileira seria um problema mesmo para GPUs modernas.&lt;br /&gt;Tentarei posteriormente ver se consigo usar um sistema de carregamento híbrido da gamekit com o carregamento de arquivo mesh normal da OGRE para usufruir dos recursos de LOD da OGRE.&lt;br /&gt;&lt;br /&gt;A divisão do tronco da árvore em 2 malhas é para facilitar a física, os galhos menores não devem ser acessíveis (espero).&lt;br /&gt;&lt;br /&gt;&lt;table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td style="text-align: center;"&gt;&lt;img border="0" height="300" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TJayBikDDaI/AAAAAAAABJQ/yB-_R0wP8gM/s400/Pau_Mulato_WWP.jpg" style="margin-left: auto; margin-right: auto;" width="400" /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td class="tr-caption" style="text-align: center;"&gt;&lt;span style="font-size: xx-small;"&gt;Páu Mulato - Deve ter uns 25~30 m.&lt;/span&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TJayBikDDaI/AAAAAAAABJQ/yB-_R0wP8gM/s1600/Pau_Mulato_WWP.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-4745445237023434833?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/4745445237023434833/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=4745445237023434833&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/4745445237023434833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/4745445237023434833'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/09/arvores-da-floresta-de-aracne.html' title='Arvores da floresta de Aracne'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_yqRkvDx98Fs/TJZT58pH6DI/AAAAAAAABHw/UURnIdl3mcI/s72-c/arvore_em_producao_blender_2.50.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-5702668390288801258</id><published>2010-09-06T18:24:00.000-07:00</published><updated>2010-09-06T18:24:58.392-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='inteligência artificial'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='lua'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Escrevendo roteiro e pensando em I.A.</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/TIWRlA4S6FI/AAAAAAAABGY/YMBEFAt7tFM/s1600/aracne.sp01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="317" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/TIWRlA4S6FI/AAAAAAAABGY/YMBEFAt7tFM/s400/aracne.sp01.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Eu aqui pensando reversamente: o personagem, a ação e oque precisaria em forma de código.&lt;br /&gt;Lembra um pouco aquela dos “&lt;a href="http://www.guanabara.info/2010/06/ditados-populares-em-php-1/"&gt;ditos populares em php”&lt;/a&gt;. Mas em fim.&lt;br /&gt;&lt;br /&gt;Sou Aracne, não lembro qual nome usei no passado antes de ser esta forma que me conheço agora. Não importa mais.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;class&lt;/span&gt; CAracne (Char)&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;CAracne.passado = &lt;span style="color: blue;"&gt;nil&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;CAracne.nome = “Aracne”&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;CAracne.idade = “?”&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Aracne = CAracne.&lt;span style="color: blue;"&gt;new&lt;/span&gt;()&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Escuro, húmido e gostoso. O sol lá fora não me incomoda, estou feliz na sombra. Ouço os pássaros e os insetos da floresta. Apenas a harmonia escura a sombra. O cheiro do musgo, da casca da árvore e da flor, o cheiro do que me serviu de alimento.... a harmonia me afasta a solidão.&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Aracne:&lt;span style="color: #274e13;"&gt;attachSensor&lt;/span&gt;( Vista:&lt;span style="color: blue;"&gt;new()&lt;/span&gt; )&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Aracne:&lt;span style="color: #274e13;"&gt;attachSensor&lt;/span&gt;( Audio:&lt;span style="color: blue;"&gt;new()&lt;/span&gt; )&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Aracne:&lt;span style="color: #274e13;"&gt;attachSensor&lt;/span&gt;( Olfato:&lt;span style="color: blue;"&gt;new()&lt;/span&gt; )&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #6aa84f; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;-- regula parãmetros para o personagem&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Aracne.olfato.dist = 5&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;Aracne.audio.dist = 30 -- 30 metros&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #6aa84f; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;-- procura sombra, as áreas de sombra já estão demarcadas&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #6aa84f; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;-- no terreno. Escrita como função genérica para ser reaproveitada&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #6aa84f; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;-- por outros personagens.&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;function&lt;/span&gt; Char:procuraSombra( )&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;local&lt;/span&gt; pos = &lt;span style="color: #274e13;"&gt;self&lt;/span&gt;.phys.position&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;local&lt;/span&gt; initialDist = 50&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sombra = nil&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;for&lt;/span&gt; el &lt;span style="color: blue;"&gt;in&lt;/span&gt; mapa:&lt;span style="color: #274e13;"&gt;getElementByGroup&lt;/span&gt;(“sombra”)&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; el:dist( &lt;span style="color: #274e13;"&gt;self&lt;/span&gt; ) &amp;lt; initialDist &lt;span style="color: blue;"&gt;then&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; initialDist = el:dist(&lt;span style="color: #274e13;"&gt;self&lt;/span&gt;)&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; sombra = el&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;end&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;end&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;return&lt;/span&gt; sombra&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;end&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;Mas... que som é este? Se esgueira, é pesado, não é rato, nem coelho. Alguém talves? Comida para mais meses ou um sonho que me despertou?&lt;br /&gt;É cheiro de homem... não tem algo a mais nele me incomodando. É cheiro de fêmea. Humpf, apenas comida.&lt;br /&gt;Está chegando perto,&amp;nbsp; mais perto, quase perto, perto, AGORA!&lt;br /&gt;&lt;div style="color: blue;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&lt;span style="color: blue;"&gt;function&lt;/span&gt; CAracne:main()&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; self.repouso &lt;span style="color: blue;"&gt;then&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; &lt;span style="color: #274e13;"&gt;self&lt;/span&gt;.audio:proximidade() &lt;span style="color: blue;"&gt;or&lt;/span&gt; &lt;span style="color: #274e13;"&gt;self&lt;/span&gt;.visao:proximidade() &lt;span style="color: blue;"&gt;or&lt;/span&gt; &lt;span style="color: #274e13;"&gt;self.&lt;/span&gt;olfato:proximidade() &lt;span style="color: blue;"&gt;then&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #274e13;"&gt;self&lt;/span&gt;.epouso = &lt;span style="color: blue;"&gt;false&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;end&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; &lt;span style="color: #274e13;"&gt;self&lt;/span&gt;.primeiroAtaque &lt;span style="color: blue;"&gt;then&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #274e13;"&gt;self&lt;/span&gt;.animation.set(“camuflagem”)&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;local&lt;/span&gt; dist, char = minimo( {s&lt;span style="color: #274e13;"&gt;elf&lt;/span&gt;.audio.alvo(), &lt;span style="color: #274e13;"&gt;self&lt;/span&gt;.visao.alvo(), &lt;span style="color: #274e13;"&gt;self&lt;/span&gt;.olfato.alvo() } )&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;if&lt;/span&gt; dist &amp;lt;= &lt;span style="color: #274e13;"&gt;self&lt;/span&gt;.distanciaDeBote then &lt;span style="color: #274e13;"&gt;self&lt;/span&gt;.bote( char ) &lt;span style="color: blue;"&gt;end&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;else&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #274e13;"&gt;self.&lt;/span&gt;cacar()&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue;"&gt;end&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #274e13;"&gt;self&lt;/span&gt;.continueAcao() &lt;span style="color: #6aa84f;"&gt;--executa a ação escolhida ou continua a ação corrente que pode ser uma acao de parado, ou movimento&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div style="color: blue; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: x-small;"&gt;&lt;b&gt;end&lt;/b&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-5702668390288801258?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/5702668390288801258/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=5702668390288801258&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/5702668390288801258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/5702668390288801258'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/09/escrevendo-roteiro-e-pensando-em-ia.html' title='Escrevendo roteiro e pensando em I.A.'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_yqRkvDx98Fs/TIWRlA4S6FI/AAAAAAAABGY/YMBEFAt7tFM/s72-c/aracne.sp01.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-469126835533777101</id><published>2010-09-02T18:04:00.000-07:00</published><updated>2010-09-02T18:04:11.088-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cg'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>Estudando o Gamekit OGRE</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/TIBFGs3yIEI/AAAAAAAABGQ/WLZ2K4ezvzU/s1600/Captura_de_tela-23.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="250" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/TIBFGs3yIEI/AAAAAAAABGQ/WLZ2K4ezvzU/s400/Captura_de_tela-23.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;span id="internal-source-marker_0.13073270114811697" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;b&gt;&lt;a href="http://code.google.com/p/gamekit/"&gt;http://code.google.com/p/gamekit/&lt;/a&gt;&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span id="internal-source-marker_0.13073270114811697" style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Este projeto me chama atenção, pois já implementa OGRE e Lua numa tacada só.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Possui  um grupo completo de 7 integrantes em seu trabalho e uma atividade  realmente alta no desenvolvimento (até o fechamento deste post eles  atualizavam o Google Code todos os dias).&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Não tem muita documentação no site, mas ao baixar o source ele vem junto com toda a API de Lua.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Lua&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Bastante completa, e com um modelo de programação lindíssimo.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Notei até que possui um objeto de maquina de estado já pronto ^_^.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Nos exemplos que vem no doc a coisa parece bem interessante.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: whitesmoke; color: black; font-family: Verdana; font-size: 9pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;div style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; margin: 0pt 8pt 0pt 2pt;"&gt;&lt;span style="background-color: whitesmoke; font-size: 9pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Demo = &lt;/span&gt;&lt;span style="background-color: whitesmoke; font-size: 9pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;BaseClass&lt;/span&gt;&lt;span style="background-color: whitesmoke; font-size: 9pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;(OgreKit.Engine)&lt;br class="kix-line-break" /&gt;function Demo:constructor() &lt;/span&gt;&lt;/div&gt;&lt;div style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; margin: 0pt 8pt 0pt 2pt;"&gt;&lt;span style="background-color: whitesmoke; font-size: 9pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;self.scene = self:getActiveScene()&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; margin: 0pt 8pt 0pt 2pt;"&gt;&lt;span style="background-color: whitesmoke; font-size: 9pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; end  &lt;/span&gt;&lt;/div&gt;&lt;div style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; margin: 0pt 8pt 0pt 2pt;"&gt;&lt;span style="background-color: whitesmoke; font-size: 9pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;function Demo:OnUpdate(delta)&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; margin: 0pt 8pt 0pt 2pt;"&gt;&lt;span style="background-color: whitesmoke; font-size: 9pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;  &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;OgreKit.&lt;/span&gt;&lt;span style="background-color: whitesmoke; font-size: 9pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;DebugPrint&lt;/span&gt;&lt;span style="background-color: whitesmoke; font-size: 9pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;("Demo main loop running ==&amp;gt; " .. self.scene:getName())&lt;br class="kix-line-break" /&gt;end &lt;/span&gt;&lt;/div&gt;&lt;div style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; margin: 0pt 8pt 0pt 2pt;"&gt;&lt;span style="background-color: whitesmoke; font-size: 9pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; demo = Demo()&lt;/span&gt;&lt;/div&gt;&lt;div style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; margin: 0pt 8pt 0pt 2pt;"&gt;&lt;span style="background-color: whitesmoke; font-size: 9pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; demo:connect(OgreKit.EVT_TICK, demo, Demo.OnUpdate)&lt;/span&gt;&lt;/div&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;C++&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Na pasta Engine tem muitos arquivos que indicam as potencialidades da engine.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;gkEngine.h mostra que ele usa uma instância de OGRESingleton.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;E  o gkSceneManager parece receber um nome como parâmetro. Apesar de eu  ainda não achar na API Lua onde se pode influenciar isso, já é algo  promissor.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Dá pra alterar facilmente conforme minhas necessidades?&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Olhando com atenção o mecanismo de carga de arquivos, vê-se que ele é bem estruturado em várias classes.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;A função loadFile na verdade é apenas um manipulador caso ocorra algum erro.&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-size: xx-small;"&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;gkBlendFile *gkBlendLoader::loadFile(const gkString &amp;amp;fname, int options, const gkString &amp;amp;inResourceGroup)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;{&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool resetLoad = false;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;try {&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return loadAndCatch(fname, options, inResourceGroup);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Depois o arquivo é pedido emloadAndCatch:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-size: xx-small;"&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;gkBlendFile *gkBlendLoader::loadAndCatch(const gkString &amp;amp;fname, int options, const gkString &amp;amp;inResourceGroup)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;{&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_activeFile = getFileByName(fname);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (m_activeFile != 0)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return m_activeFile;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_activeFile = new gkBlendFile(fname, inResourceGroup);&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Ela  tem um mecanismo de segurança para evitar que o arquivo em execução  atualmente seja recarregado. Não vejo um motivo muito sustentável para  essa segurança, mas trata-se de uma engine predestinada a usuário  intermediário talvez por isso.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Essa  classe de carregamento é na verdade um manipulador de recursos, já que  nada mais é que um gerente para uma lista de arquivos.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Indo reversamente ao código acho:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-size: xx-small;"&gt;&lt;span style="background-color: transparent; color: #0b5394; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;bool gkBlendFile::parse(int opts)&lt;/span&gt;&lt;br style="color: #0b5394;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;{&lt;/span&gt;&lt;br style="color: #0b5394;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="color: #0b5394;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;utMemoryStream fs;&lt;/span&gt;&lt;br style="color: #0b5394;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fs.open(m_name.c_str(), utStream::SM_READ);&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Esse objeto utMemoryStream tem um nome sinistro pra quem procura um stream de arquivo...&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Mas o prefixo indica que esta na pasta Utils então espero que seja mesmo útil XD&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;class utMemoryStream : public utStream&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;{&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;public:&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;utMemoryStream();&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;~utMemoryStream();&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void clear(void);&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void open(const char *path, utStream::StreamMode mode);&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void open(const utFileStream &amp;amp;fs, utStream::StreamMode mode);&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void open(const void *buffer, UTsize size, utStream::StreamMode mode);&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool &amp;nbsp;&amp;nbsp;&amp;nbsp;isOpen(void) &amp;nbsp;&amp;nbsp;&amp;nbsp;const &amp;nbsp;&amp;nbsp;{return m_buffer != 0;}&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool &amp;nbsp;&amp;nbsp;&amp;nbsp;eof(void) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const &amp;nbsp;&amp;nbsp;{return !m_buffer || m_pos &amp;gt;= m_size;}&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UTsize &amp;nbsp;position(void) &amp;nbsp;const &amp;nbsp;&amp;nbsp;{return m_pos;}&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UTsize &amp;nbsp;size(void) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const &amp;nbsp;&amp;nbsp;{return m_size;}&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UTsize read(void *dest, UTsize nr) const;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UTsize write(const void *src, UTsize nr);&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void &amp;nbsp;&amp;nbsp;&amp;nbsp;seek(const UTsize pos, int dir) const;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*ptr(void) &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{return m_buffer;}&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;const void &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*ptr(void) const &amp;nbsp;&amp;nbsp;&amp;nbsp;{return m_buffer;}&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;protected:&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;void reserve(UTsize nr);&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*m_buffer;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mutable UTsize &amp;nbsp;m_pos;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;UTsize &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_size, m_capacity;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_mode;&lt;/span&gt;&lt;br style="color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;};&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Notem  o método sobrecarregado open, a criança parece "bonbadinha". Mas aqui  já parece que estou encontrando as referências a stream de arquivo  clássicas, o lance é subistituilas por um manipulador de buffer (que a  classe já tem).&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;span style="color: #0b5394; font-size: xx-small;"&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;void utFileStream::open(const char *p, utStream::StreamMode mode)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;{&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (m_handle != 0 &amp;amp;&amp;amp; m_file != p)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;utFileWrapper::close(m_handle);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_file = p;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_handle= utFileWrapper::open(m_file.c_str(), mode);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (m_handle)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (!(mode &amp;amp; SM_WRITE))&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;m_size= utFileWrapper::size(m_handle);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;}&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Vamos ao utFileWrapper, uma função grandinha:&lt;/span&gt;&lt;br /&gt;&lt;span style="color: #0b5394; font-size: xx-small;"&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;utFileHandle utFileWrapper::open(const char *filename, int mode)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;{&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;#if UT_PLATFORM == UT_PLATFORM_WIN32 &amp;amp;&amp;amp; defined(UT_WIN32_FILE)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD dwDesiredAccess= 0;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (mode &amp;amp; utStream::SM_READ)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwDesiredAccess |= GENERIC_READ;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (mode &amp;amp; utStream::SM_WRITE)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwDesiredAccess |= GENERIC_WRITE;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD dwShareMode= 0;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (mode &amp;amp; utStream::SM_READ)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwShareMode |= FILE_SHARE_READ;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (mode &amp;amp; utStream::SM_WRITE)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwShareMode |= FILE_SHARE_WRITE;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DWORD dwCreationDisposition= OPEN_EXISTING;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (mode == utStream::SM_WRITE)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwCreationDisposition= CREATE_ALWAYS;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HANDLE h= ::CreateFile((LPCTSTR)filename, dwDesiredAccess, dwShareMode, 0,&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;dwCreationDisposition, FILE_ATTRIBUTE_NORMAL, 0);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return h == INVALID_HANDLE_VALUE ? 0 : h;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;#else&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char fm[3] = {0,0,0};&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;char *mp = &amp;amp;fm[0];&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (mode &amp;amp; utStream::SM_READ)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*mp++ = 'r';&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if (mode &amp;amp; utStream::SM_WRITE)&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*mp++ = 'w';&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*mp++ = 'b';&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;fm[2] = 0;&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return fopen(filename, fm);&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;#endif&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;}&lt;/span&gt;&lt;br style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;" /&gt;&lt;span style="background-color: transparent; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: #0b5394; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;80% dela é para o  manipulador no ambiente Windows &lt;span style="font-size: xx-small;"&gt;(Windows não se divide em módulos  bonitinhos e fáceis de organizar)&lt;/span&gt; oque não deve fazer muita diferênça já que a ideia é desviar para um manipulador SQLite.&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Ok,  deste ponto em diante é um stream de arquivo simples. Em teoria basta  trocar as chamadas de arquivo por um manipulador de campo BLOB do SQLite  (sqlite3_blob_open(), sqlite3_blob_read()...)&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="background-color: transparent; color: black; font-family: Arial; font-size: 11pt; font-style: normal; font-weight: normal; text-decoration: none; vertical-align: baseline;"&gt;Até  aqui parece humanamente fácil, pesquizei um pouco mais para ver se não  havia como diminuir a possibilidade de criar buffers de dados em  excesso. E aparentemente não tem sem ter um arduo trabalho que poderia se justificar em portes para o iPhone (por exemplo a segunda geração conta com 256MB de memória apenas por tanto não se pode esperar muito!)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/2375290822297479397-469126835533777101?l=www.wildwitchproject.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://www.wildwitchproject.com/feeds/469126835533777101/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=2375290822297479397&amp;postID=469126835533777101&amp;isPopup=true' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/469126835533777101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2375290822297479397/posts/default/469126835533777101'/><link rel='alternate' type='text/html' href='http://www.wildwitchproject.com/2010/09/estudando-o-gamekit-ogre.html' title='Estudando o Gamekit OGRE'/><author><name>Marcos Bitetti</name><uri>https://profiles.google.com/103726221895026110642</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh3.googleusercontent.com/-nC1ZclLAesI/AAAAAAAAAAI/AAAAAAAACJY/sEZgsSBLT_Q/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_yqRkvDx98Fs/TIBFGs3yIEI/AAAAAAAABGQ/WLZ2K4ezvzU/s72-c/Captura_de_tela-23.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2375290822297479397.post-1326196434423778259</id><published>2010-08-30T18:45:00.000-07:00</published><updated>2010-08-30T18:54:19.648-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='3d'/><category scheme='http://www.blogger.com/atom/ns#' term='cg'/><category scheme='http://www.blogger.com/atom/ns#' term='game design'/><category scheme='http://www.blogger.com/atom/ns#' term='programação'/><title type='text'>BlendELF mão na massa: testes e observações</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/THsi9hi1HYI/AAAAAAAABFo/3Ql4VtwIQKo/s1600/tela_02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="198" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/THsi9hi1HYI/AAAAAAAABFo/3Ql4VtwIQKo/s400/tela_02.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Após uma semana de testes consegui estabelecer um padrão para a engine. E durante a semana postarei um mini-tutorial básico.&lt;br /&gt;&lt;br /&gt;E qual a vantagem de se ter uma situação dessas se a GE do Blender é tão forte?&lt;br /&gt;Primeiro eliminar o peso dos dados de edição, segundo ter um mecanismo de teste diferente do Blender.&lt;br /&gt;&lt;span style="font-size: xx-small;"&gt;Há também uma questão de carisma, eu simpatizei imediatamente quando percebi que o autor seguia um caminho paralelo ao meu.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Exportador do Blender&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Primeira coisa que chama a atenção é a facilidade, roda-se o exporter e tem-se um cenário completo exportado.&lt;br /&gt;&lt;br /&gt;A segunda é que nem todos os atributos suportados na BGE são suportados pela BlendELF, como por exemplo múltiplas camadas de textura. Se quiser usar iluminação é pela GLSL da própria BlendELF mesmo.&lt;br /&gt;&lt;br /&gt;O que pra mim não significa tanto, já que todos os materiais tinham que ser setados manualmente quando exportados para a OGRE (não necessariamente uma falha do exporter do OGRE, mas um fator de que a OGRE tem muuuuto mais recursos no seu script de materiais que a BGE).&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/THxTTYXv19I/AAAAAAAABFw/5o5u7jO24l0/s1600/Captura_de_tela-22.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/THxTTYXv19I/AAAAAAAABFw/5o5u7jO24l0/s320/Captura_de_tela-22.jpg" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Na verdade abrindo-se o editor você verá que ele so suporta os mapas: difuse, normal, displace, height e specular.&lt;br /&gt;No entanto o difuse map pode conter o canal alpha.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Quanto à animação por bone, é imprensidivel tudo estar na escala 1x1 (malha e armature) e no mesmo pivo (ponto zero). Se não da pau total na animação (distorções bizarras)&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://1.bp.blogspot.com/_yqRkvDx98Fs/THxUIqQYwJI/AAAAAAAABF4/RK_R9GFOzdk/s1600/Captura_de_tela-12.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="305" src="http://1.bp.blogspot.com/_yqRkvDx98Fs/THxUIqQYwJI/AAAAAAAABF4/RK_R9GFOzdk/s400/Captura_de_tela-12.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Coding&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Parti para o experimento com scripts, há métodos para você capturar os “atores” da cena, e um esquema para vc criar um script lua dentro do Blender e associa-lo à instância do objeto em cena.&lt;br /&gt;No entanto quando chamei uma função global pelo script atrelado à um objeto gerou uma “falha de segmentação”.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;O modelo de programação não lembra a orientação a objetos tão bonito que estamos acostumados, em verdade me lembra meus primeiros experimentos de linkagem com Lua o que faz pensar que esta é a “primeira viagem” do autor neste tipo de linkagem.&lt;br /&gt;Ex.: &lt;b style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;meuAtor = elf.GetActorByName(“zezinho”)&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;Meu projeto preferi adotar &lt;a href="http://www.wildwitchproject.com/2009/11/incorporando-banco-de-dados.html"&gt;esta&lt;/a&gt; forma, onde uma metatable gerada pela linguagem host guarda as funções, muito mais elegante.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Acho que para um objetivo de testes dá pra encapsular usando a implementação de classes para Lua que ando usando no &lt;a href="http://github.com/marcosbitetti/RPG-A.I.-System"&gt;projeto de I.A.&lt;/a&gt; assim eu farei:&lt;br /&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;meuAtor = AtorELF.new()&lt;/b&gt;&lt;/div&gt;&lt;span style="font-size: x-small;"&gt;(onde faço todo o processo elf.GetActorByName....... e também encapsulo todo o sistema necessário)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Animação também tem que ser disparada por código.&lt;br /&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;elf.LoopEntityArmature( model_body, 1.0, 250.0, 30.0 )&lt;/b&gt;&lt;/div&gt;Até aqui nada demais, a atual API Python do Blender não da suporte à muitos recursos.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Detectar colisão é uma tarefa relativamente simples. Mas tive que entrar no forum da BlendELf para saber detalhes de como fazer os testes.&lt;br /&gt;De um modo facil:&lt;br /&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;function actorCollizionHandler()&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp; -- loop through the entity collisions&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp; local actorcolidor = elf.GetActorByName(scn,"SphereCol")&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp; for i = 0, elf.GetActorCollisionCount(actorcolidor)-1 do&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; local col = elf.GetActorCollision(actorcolidor,i)&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; local data = getColisionInfo( col )&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print( data.nor.x, data.nor.y, data.nor.z, elf.GetActorName(data.act) )&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp; end&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;end&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;O difícil é saber como manusear essas coisas. Por exemplo o objeto &lt;i&gt;collision&lt;/i&gt; retornado por &lt;i&gt;GetActorCollision&lt;/i&gt; esta listado na referência da API Lua do próprio site, mas no formato &lt;i&gt;tipoRetorno = elf.NomeDaFuncao( lista de parametros... )&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;De fato a documentação é bastante escaça, apesar de completa. Tive que fivar vasculhando a API para descobrir quais os elementos eu poderia pegar com as funções do BlendELF e criei a função getColisionInfo(objCollision).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para matar minhas duvidas e saber qual é a estrutura deste objeto tive que baixar o source de C++ e analisar as estruturas nos headers.&lt;br /&gt;Por exemplo o userdata correspondente ao objeto collision é um ponteiro para esta estrutura descrita no Physics.h&lt;br /&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;struct elf_collision {&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ELF_OBJECT_HEADER;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elf_actor *actor;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elf_vec3f position;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; elf_vec3f normal;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; float depth;&lt;/b&gt;&lt;/div&gt;&lt;div style="color: #0c343d; font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;b&gt;};&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_yqRkvDx98Fs/THxaVwZBTHI/AAAAAAAABGA/5ZeL9DDy4v4/s1600/Captura_de_tela-14.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="302" src="http://3.bp.blogspot.com/_yqRkvDx98Fs/THxaVwZBTHI/AAAAAAAABGA/5ZeL9DDy4v4/s400/Captura_de_tela-14.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;Outro fator comprometedor é que não obtive um bom resultado (pelo menos nesses primeiros testes) com colisão em malha animada.&lt;br /&gt;&lt;br /&gt;A ideia é jogar uma malha simples em volta do personagem como na imagem, e usa-la como teste de colisão. No entanto a engine não retornou resultados de colisão. Vou fazer mais testes, claro.&lt;br /&gt;&lt;br /&gt;Agradecimentos à TiZeta que deixou este &lt;a href="http://blender-archi.tuxfamily.org/Image:Gothic_woman.blend"&gt;modelo para download&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Encapsulamento, levels, shaders&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;Encapsular os dados parece ser simples, o source da engine é bem pequeno. Oque podera facilitar trocar o sistema de leitura de arquivo por um de leitura de banco de dados &lt;span style="font-size: x-small;"&gt;(aparentemente muuuito mais facil que reescrever o sistema da OGRE pra isso)&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;A criação de levels com gargas posteriores esta descrita nos foruns, e exige que se tenha um certo trabalho pesado num gerenciador de recursos em Lua, nada que seja tão negativo ja que é uma engine leve pra jogos casuais.&lt;br /&gt;&lt;br /&gt;Shaders, você fica limitado aos existentes na própria engine, a não ser que escreva a implementação em C++ ou C# apartir dos fontes.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Suporte e documentação&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;A documentação é bem precária, apesar de simples para quem já tem conhecimento em engines 3D/2D.&lt;br /&gt;&lt;br /&gt;O forum é bem bombado, tem um numero de acessos bom, e o autor aparente ter tempo e disposição para responder, até perguntas esdruxulas dos usuários.&lt;br /&gt;&lt;br /&gt;Na verdade ele foi até bem rápido e atencioso quando lhe perguntei.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Futuro?&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;É interessante, trata-se de um projeto de faculdade mas caiu num certo carisma da galera da Blender Artists&lt;br /&gt;Em verdade tive 7 visitas neste blog domindo de gente procurando por essa engine.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Se o autor receber incentivo pode ocorrer algo como no caso do Sculptriz, onde o autor foi contratado por uma empresa grande (e infelizmente o programa foi vendido junto).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: large;"&gt;Conclusão&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/_yqRkvDx98Fs/THxdF33oStI/AAAAAAAABGI/7K-qUQjlnGc/s1600/testando_o_BlendELF_02.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="307" src="http://2.bp.blogspot.com/_yqRkvDx98Fs/THxdF33oStI/AAAAAAAABGI/7K-qUQjlnGc/s400/testando_o_BlendELF_02.jpg" width="400" /&gt;&lt;/a&gt;&lt;/div&gt;Com uma qualidade de recursos gráficos inferiores ao OGRE ela acaba sendo muito prática em ve
