Subscribe:

About

domingo, 26 de agosto de 2012

Relatório de atividades (19/08 a 25/08)

Nem vale a pena escrever um post muito longo nesta semana, já que é basicamente uma repetição do que já vem sendo realizado: alguns recursos gráficos adicionais foram feitos e a implementação avançou mais um pouco. Mais especificamente, contornamos em parte os problemas envolvendo a câmera. Bem, se há falta de novidades, isso pelo menos implica que há falta de problemas também.

quinta-feira, 23 de agosto de 2012

Desenvolvimento baseado em componentes

O desenvolvimento baseado em componentes é um paradigma dentro de engenharia de software que se preocupa principalmente com a separação de conceitos. Decidimos analisá-lo por ser uma tendência bem interessante no desenvolvimento de games.

domingo, 19 de agosto de 2012

domingo, 12 de agosto de 2012

Relatório de atividades (05/08 a 11/08)

Breve síntese do que foi feito na semana, de 05/08/2012 a 11/08/2012.

Implementação


O Felipe conseguiu resolver alguns problemas de manipulação de câmera que estávamos enfrentando e o Hugo concertou a incompatibilidade com o Android devido a arquivos corrompidos e implementou uma lógica inicial de manipulação de dados em arquivos. Quanto à implementação efetiva da mecânica do jogo, enfrentamos alguns problemas na camada lógica. Basicamente, ficamos quebrando um pouco a cabeça porque não entendíamos e/ou não concordávamos com a visão um do outro à respeito da arquitetura, que não ficou clara só com os diagramas.

Conseguimos chegar a pelo menos um consenso: ao invés de criar uma classe para cada carta, que era a intenção inicial, vamos reunir todas as informações das cartas em arquivos e estabelecer uma única classe responsável por implementar os efeitos possíveis. Por exemplo, uma carta teria informações em arquivo como algo do tipo:

nome: nome_carta
tipo: armadilha
custo: 20
duração (em segundos): 5
efeitos: {drenar_vida_lutador, drenar_vida_base_inimiga}

Assim, quando essa carta for ativada durante a partida, a aplicação vai chamar os métodos correspondentes aos efeitos drenar_vida_lutador e drenar_vida_base_inimiga. Isso inclusive deve permitir que os programadores principais, Hugo e Felipe, possam se concentrar mais na engine em si, enquanto outra pessoa pode editar os arquivos e adicionar funcionalidades extras.

Mesmo assim, ficou claro que não podemos começar direto pela lógica. Decidimos adotar uma abordagem mais top-down, ou seja, primeiro determinar como o sistema é apresentado ao jogador e só depois especificar o que ele deve fazer. Vamos dar uma atenção extra à interface gráfica, preocupando-nos em exibir as informações na tela, para apenas depois implementar a lógica e manipulação de dados.

Essa abordagem é vantajosa por cinco motivos:

  1. Temos uma visão geral do que a aplicação realmente é, então evitamos problemas de módulos que deveriam ter sido implementados, mas acabaram passando batido, e módulos que alguém pensou que o jogo precisaria, mas ficaram inutilizados.
  2. Podemos verificar desde o início as questões referentes ao design. No final das contas, o design é uma das coisas mais relevantes em um game e é o que o jogador realmente vê, apesar de ser o mais trivial em termos de programação.
  3. Com a camada visual pronta, teremos mais facilidade em divulgar o projeto e apresentar nosso progresso nele.
  4. É o modo mais natural e "concreto" de começar a implementação, sem que precisemos entrar em detalhes abstratos de lógica e organização.
  5. Torna mais flexível a alteração do design em qualquer momento, pois a lógica ainda não estará completamente pronta e poderá ser adaptada.

Recursos gráficos


Em contraste à implementação, não houve muitos problemas em relação aos gráficos. O Leon terminou mais uma carta e iniciou a interface dos menus, enquanto eu comecei a parte de animações e fiz ilustrações adicionais. Eventualmente pretendo refazer algumas coisas, principalmente animações, mas ficam aí como recursos provisórios. Como dito anteriormente, sou inexperiente e o nível dos meus trabalhos ainda está abaixo do esperado, mas isso é algo que só melhora com o tempo mesmo.

Divulgação


Um dos principais objetivos do projeto é ter um bom alcance global, então eu dei mais alguns passos em direção a isso. Apliquei algumas técnicas de SEO (Search Engine Optimization) ao blog, a fim de melhor posicioná-lo em buscas, e encontrei bons espaços destinados a desenvolvedores indies pela web:

Indie Game Maker Brasil
GameDev
Indie DB

Também cadastrei o blog no diHITT, serviço que agrega diversos blogs.

Metas para as próximas semanas


O Felipe tinha sugerido no mês passado que utilizássemos a seguinte ordem de implementação:

  1. Carregar um mapa (já feito).
  2. Inserir um personagem no mapa que saiba se locomover à base inimiga.
  3. Inserir vários personagens.
  4. Fazer o lutador reconhecer se existe algo dentro de seu alcance e realizar a ação respectiva.
  5. Carregar o baralho do jogador.
  6. Implementar a I.A. do inimigo.

Proponho alguns passos intermediários visando principalmente o design e a interação com o usuário, além de detalhar um pouco mais:

  1. Exibir a interface de batalha (cartas, indicadores de energia e vitalidade, baralho, menu lateral).
  2. Implementar a inserção de uma carta.
  3. Implementar as ações de uma carta.
  4. Implementar o baralho do jogador e o saque (não regido pelo timer).
  5. Implementar o indicador de energia dos jogadores.
  6. Implementar a vitalidade das bases.
  7. Implementar o timer, a recuperação de energia e o saque regido pelo timer.
  8. Implementar a I.A. do inimigo.
  9. Implementar as regras de jogo (condições de vitória/derrota).
  10. Implementar a visualização de uma carta.
  11. Implementar as opções do menu lateral.

domingo, 5 de agosto de 2012

Relatório de atividades (29/07 a 04/08)

Desta vez o relatório veio mais rápido porque não houve transtornos em relação ao repositório. Enfim, ao resumo da semana.

Greve


A greve nas universidades e institutos federais a este ponto parece ser de conhecimento geral. Acontece que no IFSP Campus São Paulo apenas os servidores estavam em greve até agora, mas alguns professores decidiram aderir ao movimento. Como resultado, não teremos aulas das disciplinas Teoria de Desenvolvimento de Sistemas e Linguagem de Programação 2 por tempo indefinido.

Cremos que isso não afetará muito o andamento do projeto, até porque os professores dispuseram-se a acompanhar e auxiliar os projetos de forma remota, via e-mail. Além disso, sempre que possível vou buscar algum conhecimento extra referente a desenvolvimento de software/games e publicar por aqui. O próximo assunto deve ser o paradigma de desenvolvimento baseado em componentes, com um foco na aplicação em games através dos Sistemas de Entidades.

Hospedagem no Google Code


Foi recomendado que não utilizássemos mais de um repositório para evitar complicações, mas achamos que vale a pena tentar pelos motivos citados no relatório anterior. No caso de ocorrerem problemas, vamos deixar o Google Code apenas para casos de emergência. Aí vai a página do projeto: http://code.google.com/p/shadowstruggles/.

Reajustes no cronograma


Não conseguimos prever e/ou gerenciar muito bem os rumos do desenvolvimento, então alguns prazos do mês de julho foram descumpridos. Os planos para o resto do ano foram reavaliados e podem ser conferidos na documentação do projeto. Basicamente, pretendemos concluir a mecânica de jogo neste mês de agosto e logo em seguida trabalhar nas demais funcionalidades, deixando o modo campanha a ser implementado na etapa final. O prazo dos recursos sonoros agora ficou para outubro, já que o Hugo estará ocupado com a implementação.

Renegociação das funções


Eu assumi a responsabilidade pelos recursos gráficos junto com o Victor, a fim de acelerar e otimizar o processo, uma vez que o game design, roteiro e documentação já estão em dia. Por hora, o Victor continua a trabalhar nos mapas enquanto eu cuido de outras ilustrações. As prioridades do momento são ter pelo menos um mapa e alguns efeitos, mas também comecei a criar outros recursos, como a logo da equipe e alguns ícones.

PS: Só sei mexer com ilustração o suficiente para fingir que consigo me virar em pequenos trabalhos, então pode ser que demore um pouco até eu melhorar o suficiente para fazer algo realmente bom. Tenham paciência comigo até lá, ok? xD