sexta-feira, dezembro 7

Aplicativo disponível!

Olá a todos.
Hoje marca o último dia de atividades diretamente ligadas à escola desse grupo, com a entrega das versões revisadas de documentação. Assim sendo, este blog certamente sofrerá uma significativa queda em sua atividade.
Para término de nossas atividades oficiais, gostaria de disponibilizar o produto que desenvolvemos, na forma de executáveis. Escolha o(s) que você deseja, abra a página e aperte Ctrl+S, ou vá em "File->Download" ou algo como "Arquivo->Baixar", dependendo da linguagem da sua conta do Google.
Link para o servidor de jogo -> http://tinyurl.com/GoAServer
Link para o jogo - http://tinyurl.com/GoAGame
Link para o MapMaker - http://tinyurl.com/MapMaker3
Essas provavelmente serão as últimas versões desses aplicativos por um bom tempo, a não ser que algum integrante do grupo decida continuar o desenvolvimento.
Por aqui encerro minhas atividades nesse blog, grato pela atenção.

sexta-feira, novembro 30

PTSD

Olá a todos!
Ontem (29/11/2012) o grupo PrimeEvils apresentou seu projeto aos professores Ivan e Renato. No momento, os integrantes estão se esforçando para fazer os ajustes sugeridos na documentação.
Agora que o desenvolvimento em si está parado, apresento-lhes alguns gráficos, números e informações interessantes sobre o projeto:

Total de linhas de código (ignorando html e documentos): 108814
Total de mudanças nos commits: 5435




 E por hoje é só.

domingo, novembro 25

Atualização

Olá.
Lembro-me de ter dito, na semana passada, que aquela seria a última atualização semanal antes da entrega do projeto. O projeto foi entregue em sua versão inicial, mas isso não significa que paramos de trabalhar.
Nos últimos dias, focamos na correção de problemas e adição de algumas características do jogo que antes haviam sido descartadas.
Sem mais delongas, eis o que foi feito pelos membros nessa semana:

Ogawa:
Até o dia 22/11 (entrega):
- Deu ataques a todos os mobs.
- Tornou possível colocar itens na barra de habilidades, fez com que itens na barra de habilidades tivessem sua quantidade mostrada, fez com que itens na barra quando utilizados descontassem a quantidade do inventário também e fez com que itens na barra fossem removidos quando acabassem.
- Fez com que o jogo mostrasse o dano tomado pelo jogador também. Quando o seu personagem toma dano ele é mostrado em vermelho, quando inimigos tomam dano ele é mostrado em branco.
Entre dia 23/11 e 25/11 (hoje):
- Adicionou o modo PvP (Player vs Player ou Jogador contra Jogador) ao multiplayer. Para acessá-lo, basta criar uma sala no modo PvP. Neste modo, você batalha contra até outros três jogadores em um mapa pequeno, e o personagem não é deletado quando morre.
- Alterou o modo como os itens são derrubados por monstros de modo que as chances de alguns itens aparecerem se alterem de acordo com a situação do personagem jogando. Por exemplo, se a vida do personagem está baixa poções de vida aparecem com maior frequência.
- Alterou o comportamento de chefes, de forma que quando eles atingem certos níveis de vida (50%, 25% e 12.5%) eles causem cada vez mais dano, e se movam mais rapidamente.
- Arrumou um problema no multiplayer com habilidades algumas vezes não sendo utilizadas corretamente.
- Alterou as sprites da maioria dos monstros de forma que seus ataques não acertem apenas ar.
- Melhorou a comparação de anéis nas tooltip de itens, agora o jogo sempre compara o anel a ser equipado com o anel mais fraco equipado, ao invés de sempre comparar com o anel do primeiro espaço.
- Adicionou músicas diferentes para o modo PvP.
- Arrumou um problema que fazia com que nomes dos usuários e danos tomados "pulassem" toda vez que o usuário utilizasse uma habilidade.

Lucius:
Até o dia 22/11 (entrega):
- Adicionou algumas habilidades ao jogo, incluindo habilidades de longa distância;
- Adicionou mais informação às tooltips de habilidades;
- Alterou o drag de itens do inventário para que ficasse igual ao drag de habilidades.
Entre dia 23/11 e 25/11 (hoje):
- Arrumou problemas que ocorriam quando tentando equipar e desequipar itens.

Felipe:
- Testes.

Ricardo:
- Testes.

sábado, novembro 17

Atualização Semanal

Sejam bem-vindos à última atualização semanal antes da entrega do projeto. A meros cinco dias do prazo final, é de se esperar que tudo esteja pronto, ou bem perto disso.
Felizmente esse é o caso para nós, que temos como única pendência a criação de mais habilidades para os personagens e monstros, um trabalho braçal que será terminado a tempo.

Enfim, vamos ao que foi feito pelos membros na última semana:

Ogawa:
- Fez com que todos os efeitos de itens funcionassem adequadamente;
- Adicionou todos os 370 itens do jogo, e os 40 mobs, além de determinar as chances de cada item ser derrubado por cada mob e as posições dos mobs nos mapas;
- Implementou as restrições de classe para uso de equipamentos determinados;
- Adicionou tratamento de dano no modo multiplayer;
- Alterou a progressão de experiência para saltos menos bruscos de dificuldade;
- Fez com que o jogo salve o progresso do usuário no último mapa, em que monstros ficam mais fortes a cada vez que são derrotados. Desse modo, não é mais possível para o usuário sair do jogo e voltar com os monstros novamente fracos;
- Arrumou o dano causado pelos personagens, que anteriormente só tinha seu fator aleatório recalculado quando atributos mudavam e não a cada ataque. Para refletir o fator aleatório do dano, foi alterado o mostrador de dano na janela de status do personagem, que agora indica uma faixa de dano possível;
- Alterou a fórmula de redução de dano tomado (defesa) para que dependa mais da vitalidade;
- Melhorou as tooltips de itens para que mostrassem mais informações sobre seus efeitos, quais classes podem usar o item e alterou a comparação de atributos de equipamentos para que comparações sejam feitas corretamente. Por exemplo, anteriormente se um personagem tinha um total de 10 de defesa por todos os seus equipamentos e visse uma tooltip de um equipamento para a cabeça de 6 para defesa, o jogo informaria que o jogador perderia 4 de defesa (10 - 6) mesmo se ele não tivesse nada equipado no espaço para cabeça. Agora o jogo compara o equipamento com o seu devido lugar, e informaria ao usuário que ele ganharia 6 de defesa, no exemplo;
- Arrumou um problema que fazia com que o minimapa fosse desenhado erroneamente em mapas maiores que 128x128 tiles;
- Arrumou um problema que causava erros ao tentar desequipar itens com um duplo click;
- Eliminou a possibilidade do jogador gerar um espaço de inventário infinito equipando e desequipando itens;
- Revisou toda a documentação necessária.

Lucius:
- Criou um InputHandler separado para a interface de usuário, procurando evitar que comandos do jogador passem despercebidos pelo jogo;
- Criou a árvore de habilidades e iniciou a adição de habilidades ao jogo.

Felipe:
- Finalizou os manuais de usuário do jogo e do MapMaker.

Ricardo:
- Finalizou todos os sprites de personagem.

domingo, novembro 11

Atualização Semanal

Vamos direto ao assunto. Segue o que foi realizado desde a última postagem:

Ogawa:
- Adicionados sons para quando os inimigos são atingidos;
- Dano tomado por inimigos agora é mostrado acima de suas cabeças;
- Adicionada uma barra de vida para os inimigos que aparece quando o jogador ataca um. Ela mostra a vida do inimigo e seu nome;
- O personagem agora fala que não tem MP o suficiente quando o jogador tenta utilizar uma habilidade sem ter MP o suficiente;
- Arrumado um problema que fazia com que personagens não fossem salvos automaticamente quando fechando o jogo;
- Selecionados os 396 itens que estarão presentes no jogo, e iniciada a adição deles nos mapas.

Felipe/Mano:
- Atualizado o manual de usuário do jogo.

Ricardo:
- Finalizado o cabelo do Archer;
- Criados os olhos e cabelos do Wizard.

Lucius/Victor/Eu:
- Implementado sistema de dia e noite;
- Adicionada a possibilidade de se colocar itens na barra de habilidades e utilizá-lo por lá;
- Adicionado tempo de espera em itens para evitar que os mesmos sejam utilizados rápido demais;
- Adicionado tempo de uso para habilidades - habilidades que demoram mais para serem utilizadas deixam a personagem vulnerável por mais tempo e a habilidade pode ser cancelada caso a personagem sofra um ataque antes de utilizá-la;
- Adicionadas informações gerais às habilidades (nome, descrição, custo de mana);
- Criada base para os ícones de habilidades;
- Adicionadas tooltips para a barra de habilidades;
- Criada a classe PlayableCharacter e refatorada a classe Character de modo a evitar que a classe Enemy herde atributos e métodos que nunca utilizará (exclusivos dos jogadores);
- Arrumado erro no posicionamento de animações quando a personagem se encontrava próxima as bordas do mapa.

domingo, novembro 4

Atualização Semanal

Trago a todos o que foi feito na última semana.

Ogawa:
- Alterou a música da tela de fim de jogo para uma mais apropriada.
- Adicionou a função da hotkey de mostrar os nomes dos itens, que quando ativada faz com que o jogo mostre os nomes dos itens caídos no chão acima de suas imagens.
- Organizou o código de todas as telas, diminuindo repetição (por exemplo, o desenho das caixas de diálogo que era repetido em cada tela foi externado), e facilitando o entendimento.
- Escreveu javadoc para boa parte do projeto (Servidor, Shared e a parte de telas do jogo).
- Distribuiu algumas funções da ScreenControl para novos managers (ConnectionManager, DatabaseManager e SoundManager), para diminuir a concentração de funções da classe.
- Arrumou um problema que fazia com que a altura do diálogo de opções fosse estranha em algumas telas.
- Arrumou um problema que fazia com que os itens no chão não desaparecessem se o jogador saísse do jogo e depois entrasse novamente.

Lucius:
- Criou uma classe para o mini mapa;
- Iniciou implementação da barra de habilidades (por enquanto mostra apenas a habilidade primária.

Felipe:
- Avançou no manual de usuário;
- Corrigiu algumas traduções do inglês para o português.

Ricardo:
- Continuou trabalho nos cabelos dos sprites.

domingo, outubro 28

Atualização Semanal

Olá, trago a todo agora as nossas atualizações semanais:

Ogawa:
- Adicionados os mapas restantes. Inimigos ainda não foram adicionados a todos eles.
- Adicionadas várias novas músicas. Músicas agora são separadas por grupos, e um grupo aleatório é tocado durante cada mapa, o grupo muda quando o mapa muda. Além disso, há um grupo de música que toca apenas quando um chefe aparece.
- Adicionado tratamento de drops de itens. As tabelas de drops agora são apropriadamente carregadas e utilizadas para determinar quais itens o monstro derrubará em sua morte.
- Adicionada lógica para ataques dos inimigos.
- Adicionado minimapa ao jogo. Ele mostra a posição do personagem, dos monstros, dos chefes e do portal.
- Adicionada tela de fim de jogo, e agora quando o personagem do jogador morre ele é deletado.
- Agora é possível pegar itens apenas por andar sobre eles.
- Adicionados sons para drops de itens, aparecimento de portais e para quando se anda por um portal.
- Todas as saídas e entradas dos mapas foram mapeadas.
- Barra de carregamento alterada para ser mais precisa em relação ao processo de carregamento.
- Arrumado um problema com a colisão não funcionando direito em alguns dos mapas.
- Arrumado um problema que fazia com que músicas começassem a tocar no volume máximo, e logo em seguida voltassem ao volume escolhido pelo usuário. Ainda é possível que ocorra caso o computador não seja rápido o suficiente, devido a uma restrição da biblioteca.
- Atualizou o relatório de desenvolvimento com tudo o necessário até a data de hoje.
- Revisou o que existe até agora do manual de usuário do jogo.
- O integrante sofreu de pesada intoxicação alimentar, o que o incapacitou de fazer tudo o que havia planejado para o fim de semana, o que, em consequência, pode atrasar a adição de inimigos a todos os mapas.

Ricardo:
- Finalizado os sprites de ataque do Wizard.
- Colocado olhos no Archer
- Iniciado a inserção de cabelo nos sprites do Archer

Lucius:

- Agilizado o carregamento de mapas;
- Implementada a deleção e utilização de items;
- Adicionadas mais informações nas tooltips de itens



Adiciono, também, o que falta para cada integrante fazer até o término do projeto:

Ogawa:
- Implementar projéteis
- Criar inimigos para todos os mapas
- Criar items e equipamentos
- Finalizar a documentação

Lucius:
- Terminar a adição de skills
- Adicionar a skillbar e menu de skills
- Finalizar o manual do MapMaker

Felipe:
- Fazer o manual de usuário do jogo

Ricardo:
- Finalizar os sprites


domingo, outubro 21

Atualização Semanal

Eis, novamente, um relatório de nossas atividades semanais.

Ogawa:
- Adicionados:
  1. sprites para mais inimigos diferentes,
  2. colisão customizada para cada classe e inimigo,
  3. som para quando o personagem sobe de nível,
  4. botão que aparece no canto da tela quando o personagem sobe de nível (que, se clicado, abre a janela de status e desaparece, e também desaparece se a janela de status for simplesmente aberta), 
  5. sons de movimento diferentes para cada inimigo e para cada classe,
  6. sons de morte específicos de cada inimigo, 
  7. cursores animados e customizados ao jogo.
- Quando todos os inimigos em um mapa são mortos os chefes aparecem, e quando os chefes são mortos um portal abre para o próximo mapa. No último nível, quando todos os inimigos são mortos eles apenas renascem.

- Inimigos dão experiência quando morrem. A experiência varia de acordo com o nível do inimigo, e no multiplayer há um bônus de 5 a 15% de experiência dependendo do número de pessoas jogando.

- Mensagens são mostradas de acordo com eventos, para guiar o jogador.

- Setas são desenhadas na tela para indicar a direção do portal para o jogador. 

- O jogo salva e carrega inventários, incluindo quais itens estão equipados.

- Arrumado um problema que fazia com que o Mago iniciasse com menos MP que o máximo.

- Arrumado o lag extremo que estava sendo causado por inimigos no multiplayer devido a envio muito frequente de pacotes grandes.

- Arrumada a falta de sincronia de mortes de inimigos e mudanças de mapas no multiplayer.

- Arrumado o pathfinding dos inimigos de longa distância.

- Arrumada a definição de id para cada inimigo de forma que todos tenham um id único.

Felipe/Mano:
- Finalização de um dos mapas dos ultimos chefes

Ricardo:
- Corrigido um erro nos sprites de ataque do Archer;
- Iniciados os sprites de ataque do Wizard.

Lucius/Victor/Eu:
- Criada a base para skills;
- Adicionadas animações ao jogo (por hora, apenas a de "level up");
- Editado o manual de usuário do MapMaker.

domingo, outubro 14

Atualização semanal

E vamos a mais uma atualização semanal:

Lucius:
-Adicionou a possibilidade de definir raridade de um item no MapMaker.
-Implementou a formatação via XML para Tootips.

Ricardo:
-Finalizou os sprites de ataque do arqueiro.

Ogawa:
-Adicionou a movimentação em diagonal para os inimigos.
-Eliminou o delay nos movimentos dos inimigos e reduziu substancialmente o processamento do pathfinding que eles utilizavam
-Fez correções na leitura de inimigos do mapa e alterações no mapMaker para incluir atributos dos inimigos que antes não existiam. Como resultado um dos mapas teve de ser refeito.

domingo, outubro 7

Teaser e Atualização Semanal

Olá a todos.
Hoje trago uma atualização semanal um pouco diferente das habituais. Como sou contra enrolação:


É isso aí. Um pequeno vídeo mostrando algumas das funcionalidades do nosso jogo (obviamente exagerando *um pouco* nos adjetivos), várias delas recém adicionadas.

Como não pode faltar, aqui vai o que cada um fez durante a última semana:

Ogawa:
- Adicionou inimigos ao jogo. Eles se movem aleatoriamente a cada cinco segundos, seguem o jogador mais próximo a eles, tem um sprite diferenciado e são carregados do mapa como foram criados no MapMaker. Funcionam no multiplayer também.
- Tornou possível minimizar a janela do jogo no modo fullscreen.
- Adicionou ao jogo sprites diferenciados para as outras classes, embora ainda não estejam completos.
- Adicionou imagens dos personagens na tela de criação e na tela de seleção de personagens. Não são definitivas.
- Adicionou sons para os ataques do Warrior e para os passos dos personagens.
- Arrumou um problema que fazia com que o personagem não fosse carregado corretamente se o usuário saísse pelo jogo utilizando a função do menu "Retornar ao menu principal", e depois entrasse novamente no jogo com o mesmo personagem sem fechar o jogo por completo.

Lucius:
- Tornou possível equipar e desequipar itens.
- Iniciou o menu de opções de ações para itens (equipar, desequipar, usar, excluir).

Felipe:
- Terminou mais um mapa, restando apenas os do último Ato.

Ricardo:
- Iniciou trabalho nas sprites de ataque do Archer.

Por hoje é só, mais na próxima semana.

domingo, setembro 30

Atualização Semanal

Saudações, caros leitores. Trago-lhes novamente o relatório das atividades realizadas.

Ogawa: Adicionado o envio e recebimento de listas de inimigos e atualizações de inimigos para o multiplayer - porém ainda não são carregados pelo jogo.

Felipe/Mano: Finalizado mais um mapa do jogo.

Ricardo: Criada a vestimenta para magos.

Lucius/Victor/Eu:
- Internacionalização da interface gráfica (UI - User Interface) finalizada;
- Arrumado um bug no qual o jogo, quando em modo tela cheia e caso a janela perdesse o foco, nunca mais reconhecia comandos provindos do teclado, exigindo que o jogo fosse reiniciado;
- Implementado o sistema de inventário de personagens e o mesmo foi atrelado a sua interface gráfica. Agora, na janela de inventário, são desenhados os itens e suas respectivas quantidades e, quando o mouse é colocado sobre as imagens, uma Tooltip (pequena janela informativa) aparece com o nome do item, sua descrição e seu preço. Também é possível navegar entre as páginas do inventário.

domingo, setembro 23

Atualização semanal


Olá, como novo integrante no grupo, é com grande prazer que trago a última atualização semanal:

Ogawa:
-  Arrumado um problema que fazia com que a chatbox nunca perdesse o foco no multiplayer, uma vez selecionada.
-  Continuação da implementação de inimigos.

Felipe:
-  Terminado um mapa do ato dois e começado outro.

Ricardo:
-  Criado sprites da vestimenta do personagem Arqueiro do jogo.

Lucius:
- Padronização da chatbox.
- Tentativa de internacionalizar a UI.

domingo, setembro 16

Atualização Semanal

Olá a todos.

A partir dessa semana o Henrique deixa nosso grupo, como parte de uma dinâmica imposta pelos professores Ivan e Renato, em que demitimos um membro de nosso grupo, e contratamos um dos demitidos dos outros grupos. Nosso contratado, novo integrante do grupo, Ricardo, tomará as tarefas que eram antes atribuídas ao Henrique.

Retornamos, agora, ao conteúdo de praxe:

Ogawa:
- Adicionado envio de posição de mouse para posicionamento correto das animações de habilidades.
- Adicionada checagem de sistema operacional para desabilitar o aúdio no Linux, visto que a biblioteca de som sendo utilizada não é suportada por este.
- Seguindo dicas do professor Ivan, o processamento utilizado pelo servidor foi diminuído substancialmente.

Lucius:
- Iniciada animação de habilidades.
- Adicionadas animações diagonais.
- Iniciada a padronização da chatbox como elemento da UI.
- Detecção de colisão otimizada.

Felipe:
- Atualizados dois mapas para remover erros.
- Retocadas armaduras de personagens.

Henrique:
- Nada foi feito em sua última semana no grupo.

Traremos mais novidades na próxima semana.


domingo, setembro 9

Atualização semanal


E menos uma semana até o final do projeto. Agora vamos falar sobre o que cada membro fez:

Lucius:
- Arrumou um bug onde a thread de loading não era finalizada e ficava rodando, aumentando o processamento do jogo.
- Os sprites dos chars foram centralizados na coordenada, de modo a facilitar animações futuras que possam envolver frames maiores.
- Criada ToolTip que futuramente será utilizada para mostrar a descrição de itens;
- Criado e adicionado um ícone para o jogo;
- O jogo agora lê as entidades e já é capaz de desenhar os baús (ao menos um retângulo que os represente, tendo em vista que os mesmos não possuem gráficos no momento);
- Personagens no multiplayer são desenhados corretamente;
- Personagens agora são desenhados na diagonal quando andando diagonalmente;
- Adicionado um "fix" para a repetição de teclas em sistemas Linux.

Ogawa:
- No multiplayer todos personagens passarem a ser atualizados frequentemente, de forma que o servidor e os outros clientes tenham constantemente referências recentes de todos os presentes na sala;
- No multiplayer o nome de cada personagem passou a ser desenhado sobre suas cabeças;
- Adicionou um update dinâmico para o volume sfx, assim como foi feito para os outros volumes;
- Arrumou  todo o lag de input do modo multiplayer;
- Arrumou  um problema que causava falta de sincronia no multiplayer devido a opções personalizadas de controles para cada cliente;
- Arrumou um problema que fazia com que o jogo fechasse quando se tentava alterar os controles durante um jogo multiplayer.

Felipe:
-Arrumou certos detalhes do mapa em que o personagem podia atravessar árvores/paredes;
-Criou uma roupa em todas as posições para se usar no jogo.

domingo, setembro 2

Atualização Semanal

Como de praxe, trago nossa atualização semanal dominical.

Lucius:
- Iniciou trabalho na janela de equipamentos e itens, que por enquanto abre, fecha e pode ser arrastada.
- Generalizou parte da lógica das janelas do jogo.
- Reduziu uso de CPU do jogo por tratar os tiles de forma que menos recursos são consumidos.

Ogawa:
- Melhorou um pouco o posicionamento dos personagens no multiplayer, que ainda está imperfeito.
- Arrumou um problema sério de falta de sincronia no multiplayer, qualquer jogador que entrava numa sala recebia a referência dos personagens dos outros jogadores da forma que eles estavam quando eles entraram na sala, abrindo espaço para situações interessantes como ver um jogador se movimentando na sua frente quando na verdade ele está do outro lado do mapa.
- Começou a implementação dos inimigos do jogo, com tentativa de criação do pathfinding, e pesquisas sobre como sincronizar os inimigos no modo multiplayer.

Felipe:
---

Henrique:
---

domingo, agosto 26

Atualização Semanal

Sem falta e pontualmente, trago-lhes mais uma atualização semanal.

Ogawa: Melhorou o input de comandos no multiplayer, de forma que o personagem não mais fique preso realizando a mesma ação eternamente e suavizando possíveis movimentos.

Mano (Felipe): Refez as traduções para português e incluiu o que faltava.

Henrique: Sem informações disponíveis.

Eu (Victor/Lucius): Finalizei a janela de status - agora é possível visualizar quantos pontos cada atributos (força, inteligência, agilidade, destreza e vitalidade) tem, quantos pontos ainda podem ser usados, adicionar ou remover pontos, aplicar mudanças, verificar exatamente quanta experiência o personagem possui e quanto necessita para o próximo nível (a HUD apenas exibe uma porcentagem para a experiência), quantos pontos de vida e mana o personagem tem no momento e ao todo, além de uma representação visual para vida, mana e experiência (três barras).

Para facilitar o entendimento do que fiz, segue uma pequena sequencia de imagens. Isso também servirá como um teaser para deixá-los, ó caros leitores, com algo mais palpável sobre nosso jogo e quem sabe atrair novos leitores (ou expulsar os poucos que temos xP)

Primeiramente, uma imagem mostrando a janela de status aberta, juntamente à HUD (topo) e à Chat-Box (canto inferior esquerdo)

Nessa imagem, estou colocando alguns pontos em força (STR)

Após ter distribuído meus pontos (em força, destreza e vitalidade), estou pronto para aplicar tais mudanças

Após aplicadas as mudanças, não possuo mais pontos sobrando e os atributos citados anteriormente possuem mais pontos (e como aumentei vitalidade, minha vida total também aumentou, daí o fato de parecer que perdi vida)

Não colocarei imagens dos Menus feitos pelo Ogawa pois esta é a parte dele e não perguntei se ele desejava que eu o fizesse.

Por essa semana é só, espero que este post vos tenha animado.

Até a próxima semana.

domingo, agosto 19

Atualização Semanal


E menos uma semana para a data final chegar.

O que fizemos:

Lucius:
-Criou a base para os componentes da interface de usuário.
-Iniciada a criação de janela de status(Que pode ser arrastada pela tela, aberta e fechada via hotkey ou clique no medido de experiência da HUD(para fechar há tambem um botão).
- Implementou a lógica de sobreposição para os componentes da interface gráfica.

Ogawa:
-Fez a implementação do multiplayer no jogo em si. Apesar de ainda ser necessário corrigir o posicionamento dos personagens no mapa, já é possível vê-los se movimentando.
- Arrumou alguns problemas no redimensionamento do jogo quando entra no modo fullscreen, que algumas vezes fazia com que os componentes fossem redimensionados de forma errada, deixando-os esticados.
- Arrumados problemas com hotkeys para botões do mouse, que não funcionavam anteriormente.

Felipe:
-Ficou testando o jogo/mapmaker.

Henrique:
-Foi avistado com vida na escola.

domingo, agosto 12

Atualização Semanal

Eis mais um post de progresso.

 Ogawa:
 - Implementação de JPA no lado do servidor. Ele agora salva os cadastros e os personagens de cada usuário.
 - Os personagens agora tem seu estado salvo quando o jogador sai do jogo. Também há como forçar que tudo seja salvo via novo item do menu do jogo.
- Agora é mais fácil saber quando a chatbox está selecionada por ter sido adicionado o ponteiro piscante.
 - Adicionada uma tela de carregamento ao início do jogo, visto que carregar os mapas e o banco de dados demandava um pouco de tempo, durante o qual tudo que o usuário via anteriormente era uma tela branca.

 Lucius:
 - Adicionada animação à HUD.
 - Adicionado hover no indicador de XP e detecção de clique no mesmo, para abertura da tela do personagem (a ser implementada).
 - Tentativas de balanceamento de quantidades necessárias de experiência para cada nível, de regeneração de vida e mana.
 - Implementada uma das fórmulas de dano.

 Felipe:
- Término dos mapas para o primeiro ato.

 Henrique: ? (o post será editado se houver algo).

 Essa semana foi um pouco mais produtiva, o jogo está ficando com mais cara de jogo, e vagarosamente caminhamos aos nossos objetivos. Mais na próxima semana.

domingo, agosto 5

Atualização Semanal

Trago-lhe mais uma vez, novamente de novo uma atualização semanal para informar-lhes sobre nosso progresso no desenvolvimento do projeto.

Como de praxe, eis a lista dos integrantes e o que cada um fez:

Ogawa:
- Novas músicas adicionadas ao jogo;
- Músicas são separadas entre as do jogo e as dos menus, tocando aleatoriamente;
- Chat adicionado em singleplayer e multiplayer;
- Se um cliente não consegue comunicação com o servidor quando no modo multiplayer por determinado período de tempo, ele se desconecta automaticamente;
- O ajuste de volumes na tela de opções foi alterado para "tempo real" ou seja, quando o valor na barra muda, o usuário não tem de salvar a mudança para ver se é de seu agrado;
- Iniciado o trabalho com persistência de objetos - por hora, apenas a lista local de personagens é persistida.

Eu (Victor/Lucius):
- Arrumado bug no MapMaker onde a ferramenta Retângulo não possuía mais uma preview;
- Desfazer e refazer foi re-implementado no MapMaker - havia sido removido para testes e esquecido;
- Implementada uma HUD básica para o personagem (basicamente é a barra de vida, mana e nível);
- Implementada regeneração de vida e mana - ainda é necessário balancear;
- Eliminada uma classe inútil e feita a integração do personagem do jogo com os dados persistidos (um personagem aleatória não mais é criado para testar o jogo - agora é criado um personagem usando os dados previamente salvos);
- Iniciadas as tentativas de reduzir o uso de memória e processamento na parte de desenho dos tiles.

Mano (Felipe):
- Testou o MapMaker (informou-me sobre o bug na ferramente Retângulo);
- Trabalhou em mais um mapa para o jogo.

Henrique:
- Favor avisar se o encontrar, obrigado.

domingo, julho 29

Atualização semanal

Trago a vocês mais um post de atualização semanal.
Durante a última semana, eis o que foi feito:
Ogawa:
- Término das telas de seleção e criação de salas, marcando o término do desenvolvimento das telas que não a do jogo em si. Mais detalhes no post de ontem.
- Início do trabalho no chat do jogo e persistência de dados.

Lucius (Victor):
- Tentativas de diminuir o consumo de memória do MapMaker e jogo. Sucesso moderado.

Felipe:
---

Henrique:
---

Adiciono também que a instabilidade do SVN afetou o progresso, em especial por atacar logo no início do fim de semana.

Por hoje é só, mais informações na próxima semana.

sábado, julho 28

O status do jogo... e o futuro

Caros leitores,


Esse será um post que foge um pouco ao usual "Pessoa fez isso, outro fez aquilo, mais um fez outra coisa e o último está de férias". Neste post apresentarei como está o jogo atualmente, adicionarei uma tradução do Changelog (mudanças feitas) que contem detalhadamente tudo o que foi feito no jogo e no servidor, desde o início do desenvolvimento (sim, será um longo post), e falarei sobre o que o futuro nos espera.
No presente, o nosso jogo não tem muitas características esperadas de um jogo. Você pode andar pelos mapas criados, e é basicamente isso que pode ser feito. Grande parte do trabalho feito até agora foi fora do jogo em si, nos menus. Agora, tudo o que não é o jogo em si foi finalizado, então o foco será na parte do jogo em si, ou seja, adição de inimigos, dano, itens, baús, missões, e assim por diante.
Mas, o que eu quero dizer por "o que não é o jogo em si", e por que tanta demora para essa parte ficar pronta?
As telas. A tela principal, a tela de opções gerais, a tela de mudança de controles, a tela de seleção de personagens, a tela de criação de personagens, a tela de login para o multiplayer, a tela de criação de contas para o multiplayer, a tela de seleção de salas para o multiplayer e a tela de criação de salas para o multiplayer, além das versões multiplayer das telas de criação e seleção de personagem. Fazer tudo isso funcionar não foi uma tarefa fácil, especialmente as partes que envolvem o servidor (multiplayer).
A primeira grande dificuldade é que não é agradável utilizar componentes Swing, como JTextBox, JLabel, JOptionPane, e seus companheiros. Para utilizá-los, teríamos de deixar as telas serem repintadas de forma normal, teríamos de fazer um mosaico de painéis, e, o maior problema, ficaríamos dependentes de um look and feel para as aparências. Os componentes Swing não combinam com um jogo. Portanto, tudo foi feito "na mão". Os componentes foram desenhados com Graphics2D, alinhados e dimensionados com uma míriade de cálculos matemáticos, e sua lógica de funcionamento foi feita do zero. Dessa forma, pudemos fazer tudo do jeito que queríamos, e de forma que a aparência ficasse agradável, e condizente com o tema do jogo, além de não perder funcionalidade em geral. Mas fazer tudo isso para tantas telas demanda tempo, especialmente quando várias telas tem algo diferente das outras, um componente novo, fazendo com que reaproveitamento seja difícil. 
A outra dificuldade é a comunicação entre cliente e servidor. Fazê-los conversar harmoniosamente com vários pacotes sendo enviados de um lado para o outro é complexo no início, até que se aprenda melhor como fazer a comunicação. Um problema enfrentado foi o de múltiplas tentativas de acesso às mesmas instâncias de objetos, devido às várias Threads utilizadas, causando erros de modificações concorrentes. Atualmente as soluções encontradas vêm funcionando, portanto este obstáculo em específico foi vencido.
Essas duas dificuldades foram as principais responsáveis pela demora na finalização dessa parte do jogo. De agora em diante, o desenvolvimento será voltado ao jogo em si, começando pela persistência de dados de jogadores, e adaptação do que já existe para o multiplayer, o que havia sido prometido para o mês de Junho, mas foi adiado até que todas as telas estivessem funcionando plenamente. 
Acreditamos que é possível que não tenhamos tempo para finalizar tudo o que foi prometido. O foco será nas funcionalidades do jogo, mas é provável que as "cinematics" feitas dentro do jogo sejam cortadas, e o modo história seja encurtado. Para compensar, cogitamos adicionar um modo de jogo infinito, em que o jogador começaria no nível 1 e lutaria por sua sobrevivência pelo máximo tempo que conseguisse, competindo contra outros jogadores para ver quem teria mais pontos, calculados de acordo com nível alcançado, qualidade de equipamentos e tempo de sobrevivência.
Bom, por enquanto é isso para este post de status. Anexarei traduções dos changelogs do jogo e do servidor, e amanhã teremos o usual post de atualização semanal.


Atenciosamente,
Grupo PE

Changelog do jogo
Changelog do servidor

domingo, julho 22

Atualização Semanal

Sobre esta semana cada membro fez:

Victor:
- Terminou a colisão dos mapas além de desenhar os tiles de acordo com sua layer.
- Está alterando o MapMaker para reduzir o uso de memória.

Ogawa:
- Mudou o redimensionamento dos componentes da interface, de forma que nada seja cortado nas resoluções mais comuns.
- A tela de seleção das salas está funcionando mas ainda precisa receber atualizações quando há modificações nas salas.

Felipe:
- Fez a tradução para PT-BR dos textos presentes nos menus do jogo.
- Parou por enquanto a confecção de mapas devido aos problemas de memória do MapMaker e a quantidade insuficiente de memória RAM em seu computador.

Henrique:
- Único aproveitando as férias. Ainda sem sinal de vida.

domingo, julho 15

Atualização Semanal

Ah, sim! Após duas longas semanas (como informamos, semana passada estávamos ocupados e não pudemos postar) estamos de volta, e trago-lhes agora mais uma atualização semanal:

Ogawa:
Continuou seu árduo trabalho no jogo.
- As telas de criação e deleção de personagens agora funcionam devidamente (tanto em singleplayer quanto em multiplayer), embora por enquanto tudo seja armazenado apenas em memória (nada é salvo eternamente). Além disso, quando em multiplayer, a lista de personagens já é requisitada ao servidor;
- A janela de login por padrão coloca foco no campo de email;
- Quando uma conta é criada com sucesso, o usuário automaticamente é redirecionado à tela de login;
- Quando em multiplayer, a janela do jogo é constantemente atualizada mesmo com o menu aberto, pois não há pausa no multiplayer;
- Sons foram adicionados e seus controles estão funcionais - mas por hora, temos apenas uma mesma música em um loop infinito.

Eu:
Finalmente terminei o MapMaker. Ao menos por hora. Conforme surgir a necessidade de alguma mudança, a mesma será implementada.
Basicamente, o que faltava ser feito era a parte de salvar e ler inimigos, baús e áreas em que os mesmos surgiriam - e foi isso que fiz.
Também foram realizadas duas pequenas alterações para melhorar a performance:
- Implementação do GZIP para salvar os mapas - um arquivo de um mapa 500x500 que antes tinha 25MB tem agora míseros 900KB e mapas levam menos tempo para serem abertos;
- Implementação de uma lista de minimapas para evitar que os mesmos fossem redesenhados por completo sempre que o mapa atual mudasse - para mudar de um mapa para outro nas dimensões 500x500 demorava até 5 segundos e agora é basicamente instantâneo.

Agora iniciei meu trabalho no jogo, para ajudar o Ogawa. Por hora, tudo que fiz foi que os mapas criados pelo MapMaker fossem lidos pelo jogo. A parte difícil (das entidades e afins) ainda está por vir...

Felipe:
Finalizou mais dois mapas para o jogo (o terceiro e o quarto).

Henrique:
java.lang.NullPointerException
Não entendeu? Tudo bem... basicamente a criança está desaparecida no momento então não sei dizer como está o progresso dos manuais, só sei que continua a trabalhar nos mesmos.

domingo, julho 1

Atualização Semanal

Chegamos ao final de mais uma semana e também ao fim do mês de Junho!!! Ou seja, já estamos na metade do caminho para a apresentação final do nosso projeto.
Temos as seguintes atualizações do projeto nesta semana:

Ogawa:

-Nenhuma tela é impossível de ser fechada;
- O cliente de jogo faz logoff propriamente, de forma que o servidor não continue tentando receber pacotes do cliente e feche a conexão;
- Classes que necessitam ser compartilhadas entre o cliente e servidor estão em um projeto a parte, referenciado pelos outros;
- O servidor agora checa a versão do jogo para evitar que um cliente de jogo com uma versão antiga consiga jogar no multiplayer;
- As caixas de texto agora só aceitam caracteres alfanuméricos e os caracteres especiais "!@#$%&";
- Adicionada a tela de seleção de personagens;
- Adicionada a tela de criação de conta para o multiplayer, já envia dados ao servidor que os cadastra, por enquanto apenas durante sua execução;
- Alterado o dialog de confirmação de saída do jogo para um dialog de opções que pode ser utilizado de mais modos;
- Agora há uma checagem de login real, sendo necessário criar a conta antes de ser possível fazer o login. Deve-se notar que como as contas ainda não são salvas em arquivos, a criação da conta precisa ser refeita sempre que o servidor é parado;
- Adicionada a tela de criação de personagens;
- Arrumados vários pequenos problemas, como a incapacidade de alternar entre caixas de texto com a tecla TAB, a falta da tela de seleção de personagens quando se escolhe a opção de jogo singleplayer, dentre outros;
- Terminará assim que possível o multiplayer simples do jogo, para assim entrar nas metas programadas para Julho.

Lucius:

- O código sofreu alterações no nome de algumas variáveis, para seguirem as boas práticas;
- A criação e edição de inimigos avançou e está perto de seu término;
- Foi adicionado um log usando commons-logging e log4j;
- A gravação e leitura de items, armas, armaduras e acessórios do MapMaker é feita agora por gzip para comprimir os arquivos;
- Foi adicionada uma base para salvar e ler inimigos;
- Foi criada uma classe a parte para abrir e salvar os projetos.

Felipe:

- Criou e concluiu o mapa da 2ª quest do 1º ato do jogo;
- Terá como objetivo a finalização de todos os mapas necessários para o término do 1º ato do jogo.

Henrique:

- Iniciará o manual do usuário do jogo;
- Iniciará o manual de sistema do MapMaker;

Por essa semana e só.
Infelizmente, na próxima semana não teremos uma atualização. Isso porque teremos um estudo de campo no fim de semana, impossibilitando a postagem. Mas não deixem de ficar ligados nas outras semanas do mês de Julho, pois este mês promete ser produtivo, considerando que entraremos de férias e teremos mais tempo para programar!

segunda-feira, junho 25

Atualização semanal

O que nossos membros fizeram durante a semana:

Ogawa:
O que fez:
-Arrumou erros com as novas caixas de diálogo.
-Consertou alguns bugs, entre eles: A tela que ficava piscando, a janela que pedia foco eternamente após sair do modo de tela cheia e um bug no painel de controle que surgiu após a introdução das caixas de diálogo.
-Repaints agora só acontecem quando se muda de tela no menu, para diminuir o uso de CPU.
-Adicionou menu de opções ao jogo em si.

O que vai fazer:
-Trabalhar no modo multiplayer, para fazê-lo funcionar, mesmo que seja de modo simples.

Lucius:
O que fez:
-A parte de criação dos baús e inserção de itens dentro destes e em listas, por enquanto ainda não salvas fisicamente.

O que vai fazer:
-A parte de edição dos inimigos.

Felipe:
-Continuou os desenhos das roupas básicas de cada classe.

O que vai fazer:
-Tradução dos menus.
-Criação dos restantes dos mapas.

domingo, junho 17

Atualização Semanal

Olá a todos.
Trago mais um dos infindáveis posts semanais de notícias sobre o desenvolvimento do jogo e ferramentas associadas.
O Victor "Lucius", no MapMaker, atualizou os métodos clone das classes Weapon, Armor e Accessory, pois do modo que estavam eram copiadas como simples itens. Ele também fez um método equals personalizado na classe Item. Agora está trabalhando nas checagens do diálogo de criação de baús, para evitar que itens inexistentes estejam dentro deles, além de adicionar verificações nos campos de quantidades de itens do baú, feita char a char ao invés de baseada em Exceptions, para não necessitar gerar toda a stack trace dos errors.
O Felipe continuou seu trabalho nos sprites de personagens, criando alguns estilos de cabelo, um padrão de olhos e roupas básicas.
Eu (Ogawa) arrumei alguns tamanhos de fonte errôneos que causavam cortes de palavras em alguns dos diálogos de confirmação de saída. Também foi arrumado um problema que fazia com que a tela do jogo e seus menus piscassem de modo intermitente, além de ser adicionado o menu de opções às telas do jogo. Também foi corrigido um erro na tela de opções de controles que havia sido introduzido junto ao recém-colocado diálogo de confirmação de saída do jogo. Mais uma correção de erro, a janela do jogo anteriormente ao sair do modo tela cheia permanecia no modo de exclusividade, requerindo foco initerruptamente, mas agora funciona normalmente. Por fim, mas não menos importante, alterou-se o intervalo entre os repaints realizados nas telas de menu, agora o repaint é apenas realizado quando a tela sofre alguma alteração que precisa ser retratada. Dessa forma, o processamento gasto nas telas de menu quando nenhuma ação é tomada é próximo a nulo, muito diferente do que ocorria anteriormente em que as telas do menu gastavam mais processamento que o jogo em si. Optou-se por não utilizar a mesma lógica para as telas do jogo visto que essas realmente necessitam de atualizações constantes, e checagens de mudanças para ativar repaints provavelmente piorariam o desempenho, ao invés de melhorá-lo.

Trago, ainda, um novo cronograma, mais detalhado e elaborado para melhor organização e para que possamos nos atentar a atrasos com maior precisão:

- Até o final de Junho:
Jogo/Servidor – Criação das telas de seleção e criação de salas, e de criação de contas; possibilitar que pelo menos dois jogadores juntem-se numa sala e andem pelos terrenos do jogo no modo multijogador.

MapMaker – Finalização das funções essenciais com a criação de inimigos e salvar entidades nos arquivos de mapa.

- Até o final de Julho:
Jogo/Servidor – Persistência de dados de jogadores no lado do servidor para o modo multijogador e no lado do cliente para o modo de jogador único; funcionamento pleno da criação de contas, criação de personagens, login, seleção e criação de salas; implementação de mais características do jogo, como detecção de colisões, dano (ataques e habilidades), inimigos, janelas para equipamentos, itens e habilidades, com uma interface de usuário ao mínimo simples (barras de vida e mana); adição de sons ao jogo.
Geral – Criação dos mapas até pelo menos a metade do Ato III do jogo; Término dos manuais referentes ao MapMaker; tradução dos menus tanto do MapMaker quanto do Jogo para o português.

- Até o final de Agosto:
Jogo – Adição de qualquer característica do jogo remanescente; criação dos itens, equipamentos e habilidades a serem utilizados no jogo; criação simples das missões até o fim do Ato I (apenas funcionalidade, ainda sem textos e grande parte da história em si).
Geral – Criação dos mapas restantes para o modo de história.

- Até o final de Setembro:
Jogo – Criação simples das missões até o fim do jogo; adição de textos e eventos até o fim do Ato I.

- Até o final de Outubro:
Jogo – Adição de textos e eventos até o fim do jogo.
Geral – Finalização da primeira versão das documentações necessárias.

- Até a apresentação em Novembro:
Geral – Realização de ajustes no geral, testes intensivos e preparo para a apresentação.

Por hoje é só, na próxima semana traremos mais notícias.

domingo, junho 10

Atualização semanal

Encontramo-nos aqui mais uma vez, meus caros.

Como de praxe, segue o relatório desta semana.

O que foi feito?

Felipe "O Pseudo-Designer":
- continuou o desenvolvimento dos sprites para o jogo, ainda se focando no desenvolvimento das roupas para as personagens.

Henrique "O Escriba" (sim, alterei o codinome dele):
- realizou ajustes no manual de usuário do MapMaker.

Ogawa "O Gênio Preguiçoso":

No jogo em si
- arrumou as caixas de texto (cujo tamanho às vezes ficava totalmente fora de proporção, dependendo da resolução escolhida);
- substituiu o JOptionPane por telas desenhadas dentro do próprio jogo para perguntar ao jogador se realmente deseja fechar o programa;
- adicionou diálogos de erro nos locais necessários;
- iniciou a parte de login de usuário (atualmente, apenas "finge" uma autenticação);

No servidor:
- arrumou a leitura de alguns pacotes;
- fez algumas preparações para a criação e adesão às salas;
- adicionou o necessário para se realizar logoff;
- adicionou a base para o login.

Quanto a minha pessoa, continuei meu trabalho no MapMaker, mais precisamente:
- disposição mais fluida dos componentes na janela de criação e edição de entidades;
- criação, alteração e remoção de Itens, Armas e Armaduras (possivelmente 100% funcional);
- pesquisas quanto a problemas de performance com mapas muito grandes (algumas possíveis soluções encontradas, porém serão aplicadas somente após a finalização da parte de entidades).

O que falta?

- Muitos recursos gráficos: mobs, animações de ataques, items;
- Muitos mapas: apenas um está semi-completo (ainda faltam ajustes visuais e adição de entidades);
- Finalização do manual de usuário do MapMaker (parte de entidades);
- Inicio dos manuais: de sistema do MapMaker e do Jogo e possivelmente o de usuário do jogo (talvez seja tudo dentro do jogo via tutoriais);
- Criação, deleção e edição de Mobs (monstros) no MapMaker, bem como toda a parte de salvar entidades;
- No jogo em si, ainda faltam muitas coisas para listá-las de forma específica, mas, em suma: finalização da parte de login, toda a parte de combate (criação dos mobs, desenvolvimento da AI, colisão, etc), toda a parte de interação multiplayer, desenvolvimento das quests (missões) e janelas (como de habilidades, personagem e itens).


Como podemos ver, ainda há muito trabalho a ser feito, porém também ainda há muito tempo e, se uma fração de tudo der certo, muito em breve passarei a mexer no jogo também, acelerando o processo (assim espero).

Por essa semana é só. Nos vemos dentro de sete dias.


domingo, junho 3

Atualização Semanal - 03/06/2012

Mais uma semana se passou e temos as seguintes atualizações do nosso projeto para vocês:

Ogawa:
Fez testes de conectividade com o servidor, e estes foram bem-sucedidos. Com isso, sabemos que a conexão entre máquinas, utilizando a Internet, funciona adequadamente. Agora ele iniciará o trabalho para fazer essa conexão ter utilidade.

Lucius:
Fez mudanças no design do SpinButton, baseado no look and feel chamado "Nimbus". Agora ele está trabalhando no layout das abas de criação e edição de itens na parte de entidades.

Henrique:
Terminou a primeira versão do manual de usuário do Map Maker e agora trabalhará no manual da parte que ainda está sendo implementada do Map Maker, as entidades.

Felipe:
Após terminar o template padrão dos personagens do jogo, iniciou o template das roupas e dos itens que serão utilizados pelo personagem principal do jogo.

Por essa semana é só, obrigado pela atenção e até o próximo domingo!

domingo, maio 27

Atualização semanal


Olá caros visitantes, esta semana venho informá-los de nosso progresso:
Ogawa:
Além de organizar parte do código do jogo, terminou a tela de login de multiplayer.
Henrique:
Deu continuidade nos manuais, só esperando o término do MapMaker para completar o manual de uso do mesmo.
Lucius:
Testou diferentes tipos de layouts para a aba de entidades, chegando a um que lhe agradou. Reelaborou o spinButton, baseando-se no já existente JSpinner. Além disso, fez testes unitários e organizou o código.
Felipe Moreira:
Terminou o template do personagem do jogo,  e agora irá iniciar a criação das roupas e itens que o personagem poderá utilizar.


domingo, maio 20

Atualização Semanal

Boa noite.

Nesta semana, o integrante do grupo Victor (Lucius) organizou código do MapMaker, além de separar seu SpinButton do código, tornando-o um jar separado. Ele também começou a reformular a parte de criação de inimigos.
O Henrique continou seu trabalho na documentação do MapMaker, aproximando-se do final do manual de usuário (que leva em consideração o que já está pronto no aplicativo).
O Felipe continua a trabalhar nos gráficos, em específico nos sprites base das personagens.
Eu (Ogawa) criei boa parte do necessário para o multiplayer, faltando agora o tratamento de pacotes e a interface de usuário que faça uso dos pacotes.

Mais na próxima semana.

domingo, maio 13

Atualização Semanal

Olá novamente, meus caros.

Trago-lhes mais uma atualização semanal com os progressos em cada área do desenvolvimento de nosso projeto.

Em primeiro lugar, nosso pseudo-designer Felipe continuou seu trabalho árduo no desenvolvimento de templates para personagens que fossem utilizáveis. Por hora temos templates para todas as 8 direções. Falta agora refina-los e passar para a criação de roupas, armaduras e afins.

Em segundo lugar, temos nosso senhor da burocracia, Henrique, trabalhando nos manuais de usuário para os programas. Atualmente, está apenas se forcando do MapMaker, pois este está mais próximo da finalização. Durante o desenvolvimento do dito documento, também pode relatar bugs no programa.

Em terceiro lugar, o gênio preguiçoso Ogawa avançou mais um pouco em seus estudos para o desenvolvimento do jogo no lado do servidor e deixou a base pronta. Além disso, iniciou o histórico de desenvolvimento do projeto.

Por último, eu continuei minha jornada rumo a finalização do MapMaker, arrumando pequenos bugs e continuando a adição de entidades. O que falta é que itens possam ser editados (escolha de buffs) e adicionados a baús, que baús possam ser editados e que as entidades sejam salvas. Também escrevi o histórico do desenvolvimento deste pequeno side project.

Por hoje é só. Não é muito, mas é algo.

Aguardem ansiosamente pela próxima atualização semanal.

domingo, maio 6

Atualização Semanal – 06/05/12


Nesta primeira semana de maio, tivemos mais alguns progressos em nosso projeto e iremos destacá-los aqui de maneira individual em relação a cada integrante.

No jogo, como foi dito na atualização da semana passada, o pensamento é de iniciar o desenvolvimento na parte multiplayer, e coube ao integrante Gabriel Ogawa a pesquisa sobre o assunto. Dessa maneira foi decidido que serão utilizados sockets, com envio de pacotes (objeto customizado), além disso será utilizado um sistema para sincronização de eventos e um protocolo geral de pacotes, estes dois últimos fazem parte do sistema de um jogo chamado Catacomb Snatch (para saber mais acesse:  http://www.catacombsnatch.net/).

Em relação ao Map Maker, o Victor “Lucius” foi responsável por uma nova janela no projeto, que tem como finalidade a alteração de dados em relação a um mapa, como por exemplo, alterar seu nome, suas dimensões e seu tileset. Além disso, avançou na parte de adição de entidades e agora é possível criar inimigos, áreas de ‘spawn’ selecionáveis e editáveis.

O Felipe Moreira trabalhou na edição de mapas e principalmente na criação de templates de personagens em diversas direções, como por exemplo, para cima, para baixo, para os lados e nas diagonais. Estes templates que futuramente serão utilizados como chars no jogo. Além disso verificou mais alguns bugs no Map Maker que precisavam ser consertados.

Por fim, eu, Henrique Cavalcante, iniciei a parte de documentação do projeto, tendo como ênfase, nesse inicio, a criação de um manual de usuário e de um manual de sistema para o Map Maker, tendo em vista que esse aplicativo está próximo de sua finalização e seria bom já ter uma documentação feita para esse software.

Por hoje é só, obrigado pela sua atenção e até a próxima atualização na semana que vem.
Atenciosamente, Grupo Prime Evils.

segunda-feira, abril 30

Atualização Semanal

Trago agora mais uma atualização semanal.

Desta vez será algo pequeno, tendo em vista que esta semana tivemos algumas provas e trabalhos a serem entregues.

No jogo em si, todos os menus estão completos e plenamente funcionais, antes do planejado. Dessa forma, compensamos os atraso na parte do MapMaker, cuja parte das entidades ainda não está finalizada. O próximo passo é iniciar o desenvolvimento de um multiplayer simples: dois ou mais jogadores conseguirem entrar em uma mesma sala e andarem juntos.

No MapMaker, como foi citado, ainda há trabalho a ser feito na parte de entidades. Porém não é como se nada tivesse sido feito. Foram criadas classes para a criação de entidades (inimigos, boss, baús), um bug na hora de salvar os mapas foi corrigido, um PopupMenu (aqueles menus que aparecem quando se clica com o botão direito do mouse) foi adicionado a seleção dos mapas para facilitar acessibilidade. Uma parte de alteração de propriedades de um mapa (por hora, só o nome, futuramente, talvez as dimensões) está sendo adicionada. Correção de diversos pequenos bugs (difíceis de se achar...) no SpinButton foram feitas e comentários para facilitar o entendimento do código foram adicionados em certas classes.

domingo, abril 22

Atualização semanal


Sobre as atualizações semanais:
-MapMaker:
A tab Entities já foi criada, na qual serão colocadas informações como o local em que os inimigos irão surgir, os chefes e baús.
Alguns erros foram corrigidos, entre eles um problema no botão salvar, que não salvava as alterações feitas em um mapa.
Algumas otimizações gerais no código foram e ainda estão sendo feitas para consumir menos memória no computador.
-O jogo em si:
O menu de controle está quase pronto, quando finalizado daremos inicio a criação do multiplayer.
-Mapas:
A criação do primeiro mapa está quase finalizada, atrasada devido ao erro do salvar no MapMaker.
-Gráficos em geral:
O maior problema encontrado é a falta de sprites prontos na diagonal ou até mesmo um modelo de personagem "pelado" andando na diagonal para podermos trabalhar em cima.

domingo, abril 15

Atualização Semanal

Trago a vocês as novidades da semana.

No lado do MapMaker, a layer de entidades está se aproximando de sua conclusão, sendo o que permite ao criador do mapas inserir coisas como baús com itens e áreas em que inimigos aparecerão. Também foi melhorado o mini-mapa que representa mais fielmente o mapa real, de acordo com as dimensões deste.

Já foi iniciada a criação dos mapas para o jogo, por enquanto apenas o terreno em geral.

No lado do jogo, os menus já estão próximos de sua finalização, sendo que o menu de opções já está plenamente funcional, aplicando opções escolhidas tais como resolução, modo fullscreen e linguagem, além de salvá-las e carregá-las de um arquivo de propriedades. Até o próximo Domingo espera-se finalizar os menus e iniciar-se o trabalho no jogo em si, primeiro pela parte Multiplayer.

Por hoje é só, na próxima semana traremos mais novidades.

Grupo PE

domingo, abril 8

Atualização Semanal

Como dito semana passada, o foco desta semana foi a finalização do autotile para o MapMaker.

Mas, o que é autotile?

Um autotile na realidade representa um conjunto de tiles. 47, para ser preciso. Como o nome insinua, é um tile "automático", ou seja, quando é utilizado, diferentemente de tiles normais, não há necessidade de escolher manualmente qual tile será usado em certa parte, basta ir desenhando e os tiles desenhados se ajustam de acordo. Nas imagens a seguir, podemos observar melhor o que ocorre.

Em um novo mapa, inicio o uso do autotile

Após o clique inicial, decido expandir a grama para a esquerda.

Novamente, expando a grama para a esquerda

Decido então expandir um pouco para baixo.

Por fim, na outra linha, retorno um pouco à direita


Como pode-se notar, os tiles muda dinamica e automaticamente conforme o usuário desenha.

Como o programa cria um autotile?

Observe a seguinte imagem:


Isso é uma imagem composta por 12 tiles que representam uma "grama crescida" por assim dizer. É algo útil na criação de florestas e afins, para dar um ar mais natural ao lugar e mostrar que não há (ou quase não há) ninguém por ali e a grama cresceu bastante.

Mas, enfim, esta imagem por si só não faz uma floresta, logo não faz sentido usá-la como tileset para um mapa. Poderíamos simplesmente incorporá-la a um tileset existente, porem, os 12 tiles que constituem essa imagem não são suficientes para se desenhar todos o tipos possíveis de formas. O que o programa faz, então, é criar 47 tiles a partir dessa imagem ao invés de apenas 12, gerando um autotile.

Para tanto, a imagem é dividida em 4 regiões.

Cada região, então, é novamente dividida em pequenas partes de 16x16 pixels:

Antes de prosseguir com a explicação, cabe uma observação:
Vemos que a região B é, basicamente, inútil. Como já citei, estou baseando-me fortemente no RPGMaker XP para a criação deste programa e o autotile não é exceção. Se bem me lembro, alguns autotiles possuem algo ocupando a região B, mas ainda não compreendi qual sua finalidade.

As principais regiões são as duas últimas: C e D, pois 46 dos 47 tiles gerados envolvem partes provindas delas.

Como funciona o autotiling?

Não fui capaz de observa um padrão durante a inicialização de cada um dos 47 tiles, por tanto eles são criados um a um no código, sem uso de loop algum. Talvez isso possa ser otimizado. Mas mesmo que um padrão seja detectado, teremos de manter em mente que cada um desses tiles possui um ID específico.

Para detectar qual o tile que deve ser desenhado, decidimos nos utilizar do sistema binário devido a sua propriedade onde não há repetição de resultado algum não importa quais somas sejam feitas. Dessa forma, atribuímos valores a cada um dos tiles adjacentes ao clicado. Sempre que um autotile existir em um tile adjacente, seu valor é somado a uma variável e o resultado final é o ID que deve ser utilizado. A imagem a seguir expõe os valores:

Primeiramente checamos os lados padrões (cima, baixo, esquerda, direita) e depois checamos as diagonais. Dessa forma, evitamos que certas posições sejam ignoradas por terem sido checadas precocemente. Uma vez definido o ID, o programa então faz uma checagem de todos os tiles adjacentes e manda todos aqueles que forem autotile se atualizarem.

Bom, acho que já falei demais e talvez quase nada do que tenha dito aqui faça sentido, mas, enfim, estou apenas informando o que fiz. Se parece complicado, não se assuste, porque é.

Sem mais, Victor Lucki.


domingo, abril 1

Atualização Semanal

Durante essa semana tivemos como maior objetivo o aperfeiçoamento do Map Maker. Dessa maneira foi necessária uma revisão no código o que acarretou na correção de bugs que estavam no programa. Além disso, já no jogo em si, o controle da tela que é mostrado está agora centralizado, ao invés de disperso entre as várias classes.

Agora, na primeira semana do mês de Abril, teremos como grande objetivo a finalização da funcionalidade Auto Tile que faz parte do Map Maker, este que, quando for terminado será explicado com mais detalhes, possivelmente na atualização do próximo domingo.

Atenciosamente, Grupo Prime Evils


domingo, março 25

Atualização semanal


Na ultima quinta-feira (22/03/2011) o nosso projeto foi aprovado pelos professores Ivan e Renato, permitindo continuarmos com o projeto sem maiores delongas. Como já tínhamos começado o projeto reportarei alguns avanços, um pequeno cronograma como também a divisão da tarefa, mesmo que ainda seja temporária.

Primeiramente, a respeito do Map Maker, agora ele já é capaz de criar, de excluir, salvar e abrir mapas feitos no próprio. Do jogo em si, os menus estão sendo trabalhados, assim como o projeto está sendo reestruturado para possuirmos uma maior facilidade sobre o controle de diversas telas diferentes. Além do que, já estamos incluindo a internacionalização do projeto, com opções para inglês e português.

O nosso cronograma atual tem as seguintes metas, para cada bimestre:
-No 1º Bimestre será finalizado o Map Maker.
-No 2º Bimestre teremos o jogo com menu e opções persistentes todas funcionando, um servidor simples com a  possibilidade de criação de sala e contas e ao menos um jogador podendo se movimentar pelos terrenos.
-No 3º Bimestre o jogo terá todas as características funcionais e os mapas para a campanha já terminados.
-No 4º Bimestre finalização completa do jogo, com as missões e eventos.

Enquanto a divisão de tarefas, por enquanto está atribuída assim:
Felipe Moreira: Sons, revisões do código e conteúdo e criação dos mapas para campanha.
Gabriel Ogawa: Funcionalidades gerais do jogo, servidor e comunicação cliente/servidor.
Henrique Hashimoto: Missões, textos em geral do jogo, tradução do jogo e criação de mapas para a campanha.
Victor “Lucius”: Map Maker e controlador para o servidor.

domingo, março 18

Update do primeiro semestre[1]

Como diz o título deste post, este é um update sobre o andamento do projeto (o primeiro de vários).

Geralmente irei postar apenas sobre minhas atividades mas, se for necessário, irei falar sobre o progresso geral esporadicamente.


Para iniciar então está seção de updates, trago a terceira geração do Map Maker. Se você, caro leitor, estiver se perguntando "O que raios é isto?" a resposta é simples: um editor de mapas 2D baseado em tilling que está a ser desenvolvido com o intuito de facilitar o máximo possível a criação dos mapas para o jogo.


"Mas como assim 'terceira geração'?" - se esta pergunta surgiu em vossa mente, é provavel que não tenha acompanhado o desenvolvimento dos projetos do ano passado (2011). Por isso, preparei um pequeno comparativo entre as três gerações.


A primeira geração teve um período de vida curtíssimo, servindo apenas como aprendizado. Nunca chegou a ser utilizada. Na realidade, não foi sequer finalizada, sua versão incompleta serviu de base para a segunda geração, por isso talvez pudéssemos dizer que não existe uma segunda geração, mas sim uma "geração 1.5". Mas ignoremos estes detalhes, sim?


-Na primeira geração, o mapa todo era desenhado em um JPanel, contido em um JScrollPane. Por isso, apenas mapas diminutos eram viáveis, do contrário um OutOfMemoryError ocorria, ou seja, o Java não possuía memória alocada o suficiente para suportar a imagem toda sendo desenhada. Isso marcou o fim da primeira geração (curta, não?).


-A segunda geração passou a utilizar a técnica de clipping, desenhando na tela apenas a porção visível do mapa e reduzindo drasticamente o uso de memória e permitindo a criação de mapas bem maiores mesmo em computadores menos potentes (como os de nossa escola, diga-se de passagem).

Infelizmente tornou-se impossível a utilização de um JScrollPane, pois as barras de rolagem apenas aparecem caso as dimensões do conteúdo superem às do continente, o que não ocorre quando usamos clipping. Isso levou-me a implementar a possibilidade de arrastar o mapa segurando o botão do scroll, eliminando a necessidade de barras de rolagem.

A partir daí, este "side-project" se desenvolveu até se tornar uma ferramenta funcional, capaz de salvar, editar e criar mapas, disponibilizando 2 layers - uma para o chão e uma para detalhes como árvores, pedras, e afins - 3 ferramentas de edição - brush (pincel?), retângulo e balde de tinta - possibilidade de desfazer e refazer ações - Ctrl+Z e Ctrl+Y - e um painel para seleção de tiles à esquerda.

Como pode-se notar, apesar de simples, a segunda geração tinha seu charme e era um bom editor de mapas. Mas algumas coisas ainda faltavam e quando iniciei o desenvolvimento do projeto deste ano nas férias (meu conceito de diversão difere da maioria, me processe se quiser...) tais coisas foram ficando cada vez mais evidentes, como verão a seguir.


-Na terceira geração, em andamento, mudanças radicais foram e estão sendo feitas, a principal sendo a possibilidade de selecionar múltiplos tiles do painel da esquerda para desenhá-los (na geração anterior apenas podia-se selecionar um tile por vez). Isso facilita enormemente a edição de mapas e a visualização do que está sendo selecionado.

Outra grande implementação foi um minimapa (localizado a direita), que serve tanto para se ter uma ideia geral de como o mapa está ficando quanto para navegar pelo mapa. Além do minimapa, outra forma de navegação é através das setas direcionais, das teclas WASD e do scroll do mouse (podendo alternar entre scroll horizontal e vertical utilizando-se a tecla shift).

Três layers extras foram implementadas (totalizando 5), fornecendo agora uma layer para o chão, uma para detalhes do chão (pedras, folhas, etc) e duas para detalhes acima do chão (casas, árvores, etc) e uma para inserção de entidades (inimigos, pontos de teleporte, etc), estando esta última ainda incompleta.

Diversos mapas podem ser criados em um mesmo projeto, sendo que cada mapa terá seu próprio set de tiles.

Existe agora a possibilidade de alterar o zoom entre 2x, 1x(padrão), 1/2 e 1/4.

Como podemos notar, a última geração está em um novo nível se comparada com as anteriores, possuindo diversas características vantajosas. Mas deixo claro aqui que grande parte das ideias que tive para o editor foram retiradas de um já existente, desenvolvido pela empresa Enterbrain, chamado RPG Maker. Mais precisamente, o RPG Maker XP (atualmente está na versão VX Ace, duas gerações depois do XP).



Seguem duas imagens comparando a segunda e terceira gerações:


TELA INICIAL

Segunda Geração

Terceira Geração

Antes que pense "Os gráficos do editor 'X' são melhores", já aviso que isso não é uma das diferenças entre eles, pois ambos podem se utilizar de ambos os tilesets com um pequeno ajuste. O que peço que note, se já não o fez, é a diferença de layout.
Veja como na terceira edição, a disposição das coisas é a mesma: mapa ao centro, tileset à esquerda. A diferença, então, encontra-se no que é mostrado na seção dos tilesets: observe que na terceira geração, há uma imagem completa à exibição, facilitando a fácil identificação de cada tile. Também note que as layers não ficam mais à esquerda. Isso ocorre porque não mais é necessário existir um tileset para cada layer. Atente que junto do minimapa, podemos visualizar as dimensões de nosso mapa, algo que pode não parecer útil, mas é.
Por fim, vale ressaltar as opções extras na barra de menus.

EDITANDO O CHÃO

Segunda Geração

Terceira Geração

O que quero que note aqui é como a terceira geração é menos poluída em comparação a segunda, que possui aquela película branca. Claro que podemos remover a dita película, mas na terceira geração, não há necessidade de tê-la. Veja também que o minimapa apresenta as mudanças realizadas.

ADICIONANDO DETALHES

Segunda Geração

Terceira Geração

Aqui podemos ver a marcante diferença entre as gerações. Note como na segunda, tive de selecionar 6 tiles diferentes para desenhar uma simples árvore, ao passo que na terceira tudo que fiz foi selecioná-la (a árvore) por inteira e ir pintando. Note também que ao invés de utilizar uma película branca, temos uma preta, sendo mais suave e agradável aos olhos.


Por hora, isso é tudo que tenho a oferecer. Poderia mostrar o que fiz do jogo até o presente momento, mas tendo em vista que o Ogawa está fazendo algumas alterações nesta parte, sinto que é melhor deixar que ele mostre como anda essa parte.

Sem mais, Victor Lucki.