Trabalhos de MAC 441

Além dos trabalhos realizados em sala de aula, teremos um projeto em várias fases para realizar em casa.

Datas de Entrega dos Trabalhos:

O projeto deste semestre deverá ser realizado em grupos de 2 a 4 alunos e será um jogo de MMORPG (Massively Multiplayer Online Role-Playing Game), porém esse escopo é muito grande então criaremos apenas um jogo online de duelos. O jogo será um sistema Web para duelos entre vários jogadores. Um jogador cria um avatar que é posto numa arena de batalha contra outros avatares.

O seu grupo deve trabalhar em conjunto com o máximo de colaboração possível e vocês podem deixar sua criatividade trabalhar desde que implementem o que foi solicitado aqui na descrição do projeto. Em caso de dúvidas, principalmente caso ninguém no seu grupo conhecer muito bem o domínio de jogos RPG, fiquem à vontade para consultar o especialista no domí­nio, nosso monitor Rafael Correia, postando uma mensagem no paca no fórum apropriado.

Fase 1 - Modelagem e implementação preliminar

A primeira fase do EP concentrar-se-á na implementação do modelo de dados, ou seja, das classes que farão parte do núcleo do jogo. Nesta fase, será cobrada a montagem de um avatar e a interação básica com os avatares, desconsiderando a arena de duelo. O avatar representa o jogador dentro do universo do jogo. Cada avatar possui 4 atributos básicos: nível, experiência, vida e energia. Além disso, cada avatar pertence a uma classe, por exemplo: Mago. A classe possui atributos; por exemplo, o guerreiro tem força e o mago inteligência; esses atributos podem modificar o montante máximo dos atributos energia e vida do avatar. Além disso, as classes possuem um conjunto de talentos e habilidades.

Modificadores

Um modificador é um bonus temporário ou permanente (no caso de talentos de avatar) que modificam o estado do avatar. Talentos de avatar são modificadores permanentes. Porém existem modificadores temporários que são ativados com habilidades, eles podem ser vantajosos (por exemplo, aumento de força por 5 rodadas), ou desvantajosos (por exemplo, um envenenamento, que gera dano no avatar afetado a cada rodada). Um avatar pode ter vários modificadores que são executados a cada rodada e podem influenciar no ataque recebido ou no ataque dado.

O que entregar

Você deverá entregar um pacote contendo um conjunto de classes implementando todos os conceitos acima descritos. Além disso, deverá entregar uma classe de teste que cria uma ou mais instâncias de todas as classes definidas e exercita todos os seus métodos. Opcionalmente, você poderá criar uma bateria de testes automatizados utilizando o arcabouço de testes automatizados SUnit que vem junto com o Squeak. Isso fará o monitor bem feliz...

O arquivo a ser entregue é um arquivo Zip que contém 2 arquivos:

O primeiro é um arquivo texto com informações sobre o jogo. Neste arquivo devem conter as seguintes informações básicas:
- Nome dos integrantes do grupo.
- Descrição do jogo e sua temática (cenário do jogo).
- Como testar o seu código. Como o monitor deve testar e averiguar se o seu código faz o que propões. (De preferencia usem o SUnit)
O segundo é um arquivo gerado pelo Monticello com os seus fontes
O Monticello é um gerenciador de versões e código fonte para o Squeak. Se você tiver a versão 3.10 do Squeak ele já vem instalado senão você terá que instalá-lo. A seguir vou escrever um passo a passo de como se instala o Monticello e como gerar seu arquivo de fonte. O Monticello também gerencia versões então você já pode ir usando-o para trocar os fontes entre os integrantes do grupo. Um mini tutorial de Monticello está disponível neste link.

Fase 2 - Duelos

Nesta fase do jogo, o grupo de alunos terá que desenvolver duas partes do jogo.

A primeira é a interface Web da construção do Avatar

A interface Web da construção do avatar, distribuição de talentos e habilidades de acordo com o nível do avatar, utilizando o arcabouço Seaside. Aparência, Legibilidade e facilidade de uso serão critérios que contarão na avaliação da interface.

A classe que inicia a interface do jogo deve se chamar WAEPJogo.
O exemplo da aula de Seaside ministrada por Hugo Corbucci se encontra aqui. Ele está em formato de arquivo do Monticello.

A segunda parte é a mecânica de duelos.

Quando dois jogadores vão colocar seus avatares em duelo, eles entram numa arena de batalha. Somente dois avatares poderão lutar entre si. A arena de batalha tem o poder de decidir a ordem que os ataques serão lançados e qual dos avatares foi o vencedor. Para um avatar vencer, ele deve consumir os Pontos de Saúde do adversário até chegarem a zero.

Para diminuir a saúde do adversário o avatar deve atacá-lo utilizando suas habilidades de ataque. Cada habilidade tem um efeito diferente no oponente e sua potência depende do nível do avatar e do nível do seu oponente (que pode ter uma defesa boa), lembrando que algumas habilidades podem gerar desvantagens no oponente, por exemplo, deixá-lo envenenado por 3 rodadas, o que reduziria, por rodada, um montante de saúde, que depende do nível da habilidade de envenenamento e do nível de resistência do oponente. Existem também habilidades de defesa, como o aumento da resistência, cura de pontos de saúde e outros, tais habilidades ajudam o avatar a resistir mais durante a luta. Uma habilidade (não importa se de ataque ou defesa) tem um alvo e ela causa um efeito nesse alvo que pode ser uma redução de saúde (caso seja habilidade de ataque) ou uma proteção (caso seja uma habilidade de defesa).

Não se pode esquecer que ao atacar um oponente, antes de reduzir a saúde do oponente os atributos do avatar devem ser levados em conta. Por exemplo, a resistência, esquiva (movimento feito para desviar de um ataque) e outros atributos que o grupo implementou como atributo de defesa.

A batalha na arena é dividida por rodadas (ou turnos). A cada rodada, os avatares duelando podem usar uma habilidade. Note que os efeitos das habilidades precisam ter uma ordem para ocorrer. Nesse caso a arena deve priorizar as habilidades de defesa. Quando os dois tiveram a oportunidade de usar suas habilidades, a rodada acaba e se inicia outra rodada e assim vai até acabar a luta. A luta acaba, como já dito anteriormente, quando um dos personagens tem sua saúde reduzida a zero.

Fase 3 - Jogo Duelo Completo

Nesta fase do jogo, o grupo de alunos terá que desenvolver o que falta no jogo, isto é, a interface Web completa para que o avatar seja criado e que dois avatares entrem em duelo. Lembrem-se que deve haver uma sala onde serão listados os oponentes que foram registrados para lutar. O usuário pode registrar-se na sala ou escolher um oponente que já esteja registrado. Para que a luta seja mais equilibrada não se pode batalhar com oponentes que tenham mais de 3 níveis de diferença para o seu (tanto a mais, quanto a menos).

Cada turno DEVE exibir um log na página contando o que aconteceu no turno, exemplo:

Guerreiro 1 atacou Mago 1 com a habilidade Chuva de Espada e causou um dano de 20 pontos.
Mago 1 atacou Guerreiro 1 com a habilidade Bola de Fogo e causou um dano de 13 pontos.

Outro exemplo

Mago 1 usou a habilidade Cura em si mesmo e recuperou 15 pontos de saúde.
Guerreiro 1 atacou Mago 1 com a habilidade Corte Profundo e causou um dano de 10 pontos e Mago sofrerá de Sangria por 3 turnos.

Um exemplo do turno seguinte a esse

Mago 1 atacou Guerreiro 1 com a habilidade Míssil Arcano e causou um dano de 35 pontos.
Guerreiro 1 atacou Mago 1 com a habilidade Chuva de Espada e causou um dano de 20 pontos.
Mago 1 sofreu 3 de dano por causa de Sangria que terminará em 2 turnos.

No final da batalha, deve ser mostrado quanto cada jogador ganhou de experiência. Note que o perdedor ganha metade da experiência que ganharia se tivesse vencido a luta. O montante de experiência que o avatar ganha é proporcional ao nível de seu oponente.

A classe que inicia a interface do jogo deve se chamar WAEPJogo. Vale lembrar que apresentação do trabalho conta bastante, espera-se tanto uma documentação básica explicativa quanto código bem escrito e organizado. Finalmente, a interface Web deve ser elegante, com boa usabilidade e legibilidade.


Página de MAC 441
Página do Fabio
Página do DCC