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.

domingo, março 11

Apresentação Inicial


Caros leitores,

Este novíssimo blog foi criado para mantê-los a par do desenvolvimento de um projeto para a matéria de PDS (Práticas de Desenvolvimento de Sistemas) do Instituto Federal de São Paulo, ministrada neste ano pelos professores Ivan e Renato. Ao longo do ano atualizaremos o blog com as novidades relacionadas ao desenvolvimento.

Nós criaremos um jogo ARPG estilo Hack'n'Slash, para Desktops. A premissa do jogo é (sujeita a alterações durante o desenvolvimento):

O mago Abramelin, extremamente devoto a Deus, gostaria de purificar a raça humana com a ajuda desse Ser superior. Ele encontra um grimório com escritas antigas que descrevia como invocar o "Salvador", o "Ser Superior". Acreditando que esse Ser era Deus, Abramelin seguiu as instruções do grimório encontrado, mas acabou por invocar Lucifer, a Estrela da Manhã. Abramelin e seu grimório foram utilizados por Lucifer como meio de sua materialização no mundo humano. O jogador, um aventureiro, ao retornar ao seu vilarejo descobre que este foi atacado por uma das legiões demônicas de Sabnock. Sem sua esposa e suas filhas, passa a trilhar o caminho da vingança, acabando por erroneamente ser visto como o salvador da humanidade.

Algumas das características do jogo serão:

-> Singleplayer campaign - história para um jogador, envolvendo NPCs e quests, com suporte a saves;
-> Multiplayer - controle feito por servidor, possibilidade para jogadores criarem salas de jogo com limite de quatro jogadores, seria possível jogar a campaign com amigos. A limitação para entrar numa sala seria estar na mesma quest ativa pelos jogadores daquela sala, a fim de evitar que jogadores de nível baixo joguem com jogadores de nível alto, além de manter os jogadores num mesmo ponto da história. Além disso, pretende-se possibilitar a criação de salas no modo PvP, com mapas no estilo arena em que jogadores lutem entre si. Personagens criados pelos jogadores seriam salvos num banco de dados do servidor, e jogadores não seriam capazes de utilizar um personagem do singleplayer (armazenado localmente) para jogar no multiplayer. Jogadores precisariam criar uma conta (diretamente no cliente do jogo) para jogar no modo multiplayer, e para essa criação pretendemos utilizar ativação de conta via e-mail.
-> Multiplayer em lan - funcionamento semelhante ao multiplayer, porém não requer conexão à Internet nem conta. Um jogador cria uma sala local como host, e os outros se conectam a ele para jogar. A mesma restrição de quest ativa do multiplayer normal se aplica. Os personagens utilizados são os mesmos do singleplayer.
-> Skill trees completas, sendo que skills básicas melhorariam conforme uso, e skills avançadas seriam melhoradas com o uso de skill points, ganhos ao longo dos níveis.
-> Customização simples do personagem do jogador, com possibilidade de mudança de cores (roupa básica, cabelo, ...) e gênero.
-> Uso de arquivos de recursos .properties para internacionalização, tendo disponíveis pelo menos duas línguas (Português e inglês).
-> Customização de hotkeys.
-> "Cinematics" - eventos programados em que há animações e falas de NPCs, como se fosse um vídeo, mas feito dentro da engine do jogo.
-> AI para mobs, grande quantidade de áreas e mobs com propriedades diferentes (por exemplo, uma caverna escura com campo de visão limitado, ou um mob que causa envenenamento), UI de usuário que incluí inventário, janela de quests ("diário"), skill tree, stats e uma skill bar customizável, boss fights com eventos programados ativados de acordo com a vida restante do boss, drops de itens customizados (maiores chances de receber algo de sua classe; mais chances de receber poções quando com vida baixa; ...), dentre outras.

Por hoje é isso. Ao mais tardar, na próxima semana teremos mais.

Grupo PE (Prime Evils)