Não, eu não esqueci do Nuss.

By Tiago Frossard | 19/01/2008

O problema todo é que passei mais de semana com a internet necessitando de uma eutanásia. Quando funcionava, eu não conseguia ficá mto tempo conectado: comentar em outros blogs era um O sacrifício (ó, a net acabou de cair d novo, enquanto eu digitava isso aqui ¬¬).

Daí que o resultado todo mundo sabe: Nuss sem artigos e “surpresas de início de ano” MUITO atrasadas. As tais coisas que eu queria trazer prá esse mês já estão encaminhadas e quase prontas

Sim, foi o que você leu: QUA-SE. Tô na berolinha prá entregá-las, mas isso depende de como minha internet mal-criada vai se comportar durante a semana.

Portanto, não me espanquem nem crucifiquem se eu sumir de novo, pois não esqueci de vocês!!!

[EDIT]: Ela acabou de cair de novo ¬¬

Já que o Ano Novo tá ae,…

By Tiago Frossard | 23/12/2007

… eu tô cheio de recessos no trabalho e ainda se bateu um desespero programístico sobre mim, resolvi implementar uma série de padrões de projeto com uma visão bem voltada para os jogos. Não vou colocar nada aqui ainda, pois estou trabalhando em outras pequenas surpresas que podem vir a aparecer ainda em Janeiro.

O ano vai começar com artigos no ritmo do artigo sobre o Singleton e o MVC: explicação do conceito + Diagramação UML + Código + comentários. Deixa só passar o ressacão do Reveillon prá gente sacudir isso aqui.

“Boas festas”; “se forem dirigir, não bebam”, “Feliz Natal” e todos os outros clichês que estão nos dizendo. Aguardem o novo ano que vamos ter coisas boas por aqui! Até lá!

P.S.: Esqueci de dizer: caso alguém queira um padrão específico, pode pedir aí. Não garanto que eu consiga trazê-lo pro blog, mas vou fazer de tudo para dissecar o menino!

Casos de Uso? Mas hein?

By Tiago Frossard | 11/12/2007

Tá, tá, foi vacilo meu, mas é que eu nem me toquei que o termo Casos de Uso pudesse significar interrogações pra vários de vocês. Pra resolver isso, ta aí: uma explicação sobre os Casos de Uso!Esses tais Casos de Uso (CdUs daqui pra frente) não são nada mais que cada uma das diversas interações que o usuário vai ter com o seu programa. Na maioria das vezes, cada tela ou janela diferente significa um CdU diferente, mas como jogos são muito mais complexos, várias vezes tempos diversos CdUs na mesma janela. “Andar com o personagem”, “utilizar magia”, “selecionar alvo”, “pegar item” e “conversar” são diversos CdU que você realiza na mesma tela: a tela de jogo. Continue reading “Casos de Uso? Mas hein?” »

Personalize seu Jogo!

By Tiago Frossard | 05/12/2007

Esse fim de semana consegui o Need for Speed: Carbon (valeu Willian). Velhinho, sim, mas mesmo assim eu instalei pra testar. Primeira impressão foi de estar jogando um GTA só com carros. Provavelmente a impressão veio da tela de jogo: essa engine aí da cidade gigantesca com o radar+mapinha, saca? Deixa tudo com a mesma cara. Porém, se uma coisa me incentivou a criar essa matéria, foi a personalização do NFS:C.

Continue reading “Personalize seu Jogo!” »

Organizando os pensamentos com um Mapa Mental

By Tiago Frossard | 01/12/2007

Sabe quando a gente ta cheio de coisas na cabeça e precisa documentar, mas não sabe por onde começar? Sabe quando a gente tem um brainstorming em mãos e tem que organizar aquilo tudo? Sabe quando queremos mostrar o passo-a-passo de um jogo? Para esse tipo de coisas, vou mostrar-lhes o Diagrama de Mapeamento Mental, Mapa Mental, ou Mental Mapping Diagram. O nome é pomposo, mas o diagrama em si é a coisa mais simples de ser feita, pois não pode atrapalhar seu fluxo de raciocínio: é pensar numa coisa e inserir um nó relativo à ela.

Continue reading “Organizando os pensamentos com um Mapa Mental” »

Atualização inteligente é o que há!

By Tiago Frossard | 22/11/2007

Eu estava completamente sem assunto. Esse problema do BD e a possível implementação do Database Broker ainda estão por ai (falando nisso, o Douglas acaba de pipocá no MSN), enchendo nossas cabeças atrás de uma solução viável. Quando eu cansei, fui jogar esse Marvel: Ultimate Alliance. Procurando na net sobre o tal jogo, descobri que a versão do PC, com o uso de um Patch, permite que joguemos com 2 personagens novos: Colossus e Moon Knight [EDIT] Como o blog já recebeu uma porrada de gente atrás desse patch, fiz questão de disponibilizar o link. Basta clicar aqui ;) .

Continue reading “Atualização inteligente é o que há!” »

Mais problemas… E agora?!?

By Tiago Frossard | 15/11/2007

Nesse exato momento, estamos tentando resolver um problema meio chatinho. Até então, estávamos desenvolvendo o Jogo SEM a camada de Armazenamento, já que isso simplifica (e muito) o nosso trabalho. Para acessar as cartas do BD, usávamos métodos com lógica falsa que simulava um acesso ao Armazenamento, mas que, na realidade, construíam tudo o que era pra ser construído diretamente em código.

Eu vi um leitor ali com cara de “oO?”. Xô passar um exemplo: A gente tem um método BuscarCartas() que deveria ir à camada de Armazenamento e materializar todas as cartas para que a interface pudesse desenhá-las. DEVERIA, mas não está fazendo isso. Pelo contrário: BuscarCartas() está cheia de linhas de código que criam diretamente aquele monte de cartas que deveriam ter sido buscadas no Armazenamento.

“Ta Tiago, mas qualé o problema disso?”. O problema é que o exemplo cresceu demais. Antes isso funcionava perfeitamente, pois ainda estávamos acertando o funcionamento básico da interface e as interações dela com a lógica do caso de uso Batalhar. Agora que precisamos trabalhar corretamente com a diversidade de cartas entre os jogadores, o troço não dá vazão: temos que ficar criando métodos falsos um em cima do outro, o que tem me deixado com medo. No final, se esse monte de métodos continuar crescendo, pode dificultar muuuuito a inserção da camada de Armazenamento.

Ainda não está nada certo, mas o Douglas deu a idéia de utilizar um padrão chamado Database Broker (ou só DB Broker), uma Indireção entre a camada de Armazenamento e o resto do programa. Assim, uma vez criado o DBBroker, todos os acessos ao armazenamento vão ser realizados por ele, bem como funciona com a Controladora. Independente de como seja implementado o Armazenamento, basta trocar a lógica dos métodos do DBBroker que tudo está 100% funcional.

“E por que fazer isso?” Pois nosso BD vai ser inicialmente uma tabelona XML mesmo. Estamos tendo trabalho suficiente com a interface e a interação dela com a lógica para implementarmos um BD distribuído. Somos só 3, nada de inchar o design ;)

P.S.: Caso algum de vocês leitores já passaram por algum problema do gênero, agradeceria muito se rolasse uma ajuda com esse problema!

P.S.2: Desculpem pela falta de matérias, mas realmente não tô tendo muito sobre o que postar: graças à esse rolo, não muito tem acontecido no Jogo. Pelo menos, a solução vai virar um outro artigo.

P.S.3: Não não, realmente prefiro o Wii. – Já vi isso em algum outro lugar ;)

MVC e o Linkage: O que se deve ou não fazer? (parte 1)

By Tiago Frossard | 17/10/2007

Eu acredito que muita gente vai me chamar de maluco depois desse artigo, mas espero que todos entendam. Pra começar, vamos falar do MVC (ou Model-View-Controller), uma arquitetura de software baseado na idéia de interações emtre camadas de alta coesão (fazem exatamente aquilo que se propõem a fazer e nada mais que isso) e baixo acoplamento (são o mais independentes possível entre si).

“CALMAÊ!!!! QUE NEGÓCIO É ESSE DE ARQUITETURA??? O MVC NÃO É UM PADRÃO DE PROJETO???” Pois então, como eu disse, muita gente vai me chamar de maluco… Deixa eu explicar:Eu já vi vários sites, artigos e livros chamando o MVC de várias coisas. Já vi chamando de padrão de projeto, com o que eu não concordo. Ele não é um padrão de projeto pelo fato de organizar todo um sistema, não somente um bloco ou pequeno problema. Além disso, para implementar o MVC nós precisamos utilizar padrões, como o controlador (Controller).

Pensando nisso, algumas pessoas começaram a chamá-lo de meta-padrão, coisa que ele não é. Um meta-padrão definiria o comportamento dos padrões, não de toda a arquitetura.

O MVC é isso: ele define como as classes vão se comportar, ditando quem fica onde, faz o quê e, o mais importante, o por quê disso ser assim, bem como faz uma planta de uma casa. Por isso é que, em vários locais (como aqui no Nuss), vocês vão encontrar o MVC como uma arquitetura de software.

Isso é um ponto de vista, não chega a influenciar diretamente no uso do MVC. Mas é importante explicar para que ninguém saia com “cara de LG”. Beleza? Então continuemos com o artigo.

Voltando às camadas, é como se você transformasse o software no corpo humano: separasse os ossos e delegasse a eles a sustentação do corpo, o sangue ficaria com o transporte de substâncias pelo organismo e o sistema neurológico se responsabilizasse pela propagação das sensações e ordens do cérebro. É claro que as funções não são bem essas, mas é assim que as coisas funcionam.

O MVC em nosso jogo fica assim:

camadas

Com esse diagrama eu posso falar da maior característica do MVC: Toda e qualquer camada só se comunica com as camadas imediatamente abaixo de si. Lembrando-se que, para evitar dúvidas, quanto mais próxima do usuário, mais “alta” ou “alto nível” está a camada. Nota-se que nenhuma classe da Lógica realiza chamadas à classe Controladora da mesma forma que a classe controladora não realiza chamadas à Interface. Além disso, a Interface não chama diretamente método algum da Lógica: isso é feito através da classe Controladora, como mostra o Diagrama de Seqüência a seguir:

sequencia

No MVC, cada camada tem uma função específica:

  • Model (Modelo / Lógica)

Essa é a camada de negócios, onde está toda a lógica do teu sistema. No Jogo, por exemplo, é onde estão as classes TCarta, TPersonagem, TLadrilho e todas as outras relacionadas ao funcionamento do núcleo do Jogo (ou engine, se preferir).

  • View (Visão / Interface)

Na camada de visão você não encontra NADA além das classes de interface com o usuário. TCartaAvatar, TPersonagemAvatar e TLadrilhoAvatar são exemplos de classes que, no Jogo, ficam na Interface. Outras classes que estão aqui são a TIdioma (que controla todos os textos do programa) e a TJukeBox (recém implementada, que controla todos os sons do jogo)

  • Controller (Controladora)

A controladora é uma camada intermediaria entre a Lógica e a Interface, que faz somente a propagação das mensagens da interface para a lógica, visto que a lógica não pode se comunicar com a interface.

A continuação do artigo, com os prós e contras da arquitetura, além do que o Linkage do flash tem a ver com isso vai ficar para o próximo. Então gente, até lá!

[EDIT] Seguem os links para as Partes 2 e 3 do artigo.

WordPress Themes

Rec6plug

Search engine optimization by SEO Design Solutions