sexta-feira, dezembro 7
Aplicativo disponível!
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
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
- Deu ataques a todos os mobs.
sábado, novembro 17
Atualização Semanal
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
Ogawa:
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
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
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
- 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
Ogawa:
- Adicionados:
- sprites para mais inimigos diferentes,
- colisão customizada para cada classe e inimigo,
- som para quando o personagem sobe de nível,
- 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),
- sons de movimento diferentes para cada inimigo e para cada classe,
- sons de morte específicos de cada inimigo,
- cursores animados e customizados ao jogo.
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
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
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
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
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
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
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
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
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
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
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
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
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
- 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
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
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
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
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
Deu continuidade nos manuais, só esperando o término do MapMaker para completar o manual de uso do mesmo.
domingo, maio 20
Atualização Semanal
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
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
segunda-feira, abril 30
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
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
domingo, abril 1
Atualização Semanal
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:
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.
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.