sábado, 10 de novembro de 2012

Huds Personalizadas

Olá a todos!!!
Vamos as novidades. Hoje, irei mostrar as novas Huds dos 5 personagem que já estão prontas.

As huds são colocadas na parte inferior da tela como se pode ver na figura 1, e muda para o personagem utilizado pelo jogador que realiza o turno atual, Nesta região também se encontra a animação do dado, e é exatamente por isso que surgiu a ideia de personalizar as huds de tal maneira que dê a impressão de que o personagem está jogando o dado. 


Figura 1 - Exemplo de Hud in game
Figura 1 - Exemplo de Hud in game 
Em seguida, pensando em um sistema de visualização das informações das cartas (Habilidades, Vantagens e Desvantagens) tive a ideia de colocar no canto direito da hud a reprodução da carta do personagem que ao ser clicada abrirá uma janela com essas informações, assim podendo tornar melhor a visibilidade do conteúdo sem poluir o layout do jogo.

Figura 2 - Exemplo de Hud nova in game
Figura 2 - Exemplo de Hud nova in game
Cada personagem tem suas habilidades, suas características e levando em consideração isto, fiz as Huds com um toque pessoal de cada um.

A bruxa usa sua magia para lançar dado, tem a predominância das cores roxo e preto.
Figura 3 - Hud Bruxa
Figura 3 - Hud Bruxa 
No demônio quis fazer algo mais sombrio e quente! Com sua habilidade é um contrato, para lançar o dado ele usa toda sua persuasão.
Figura 4 - Hud Demônio
Figura 4 - Hud Demônio
O fantasma usa-se de suas aparições misteriosas para lançar sua sorte. Tons mais enevoados com destaque dos olhos malignos.

Figura 5 - Hud Fatasma
Figura 5 - Hud Fantasma
Frank joga o dado com toda sua força! Suas cores são tons esverdeados e marrons.

Figura 6 - Hud Frank
Figura 6 - Hud Frank
E o vampiro usa seus poderes guiados pelos morcegos para jogar o dado. Usa as cores clássicas de vampiros, preto e vermelho, com um fundo azul céu noturno psicodélico para dar um contraste.
Figura 7 - Hud Vampiro
Figura 7 - Hud Vampiro

Então galera, por hora são os 5. Assim que finalizar posto os 4 que faltam, até lá!


quarta-feira, 5 de setembro de 2012

Restauração Geral do Código Concluída

Olá a todos!!!

Consegui finalizar a restauração da parte do código que precisávamos. Esta parte envolve:

1- Uma classe de abertura do jogo, para que possam ser adicionados facilmente novas imagens de logo com efeitos diferentes de transição. Por enquanto, o único efeito disponível é o velho degrade, mas é possível facilmente se adicionar novos à estrutura, como um motion blur ou escala.

2- Uma tela de menu e créditos, para que eu pudesse testar a classe de renderização, bem como o sistema de telas.

3- Uma tela de jogo, contendo o cenário totalmente desenhado, para que eu percebesse as estruturas iniciais do jogo a serem desenvolvidas a partir daqui.

Demais implementações da interface antiga, como Super Meele, peões e animações serão adiadas para capítulos futuros, pois o objetivo a partir de agora será a implementação de uma classe concreta de jogador, que seja inteligente e fracamente ligada o suficiente para que possamos de modo fácil executar as conversas entre objetos jogadores a fim de melhor coordenar trocas de turno, ativação de habilidades, desvantagens, etc...

Enfim, há muito trabalho pela frente, mas a partir de agora nem um pouco deste passará a ser totalmente destinado à recuperação do código anterior, mas sim na programação de novas funcionalidades.

No próximo post estarei falando sobre as novas implementações do jogo que corrigem problemas da versão anterior. Até mais!

terça-feira, 4 de setembro de 2012

Restauração do Código

Olá a todos!!!

Estive estudando maneiras de tornar o código visto no post anterior mais limpo e encapsulado. Para tal, modifiquei a estrutura antiga do código para uma nova utilizando alguns conhecimentos que possuía em construções de engines para jogos.

Só para contextualizar, o código anterior baseava-se numa estratégia em que certas classes facilitavam a organização de alguns blocos de código para o "GameLoop" que estava na main. São elas:
  • Renderer;
  • Peao;
  • Cenario;
  • S_Behavior;
  • Menu;
  • Power.
E na main, o código era dividido em duas funções, sendo uma delas responsável por gerenciar o Super Meele e a outra o Trick or Treat. Com isso já é possível perceber os erros grotescos de planejamento de projeto realizados. Os erros mais visíveis são descritos abaixo:
  • A maioria das classes não representam objetos do jogo;
  • O código parece mais um C disfarçado do que um código orientado a objetos;
  • Programa-se para implementações e não para interfaces;
  • Não se encapsulou o que varia;
Já diz o meu velho conhecido Vinicius Mendonça: "Se você vê seus códigos anteriores e acha que você programava bem, você deve começar a se preocupar". Logo, não podemos chamar a versão anterior de jogo, mas sim de um milagre que funciona na base da fé. 

Bem, confesso que não sou uma pessoa apegada à religião o suficiente para seguir aquela abordagem sem piores riscos, então resolvi botar a mão na massa e criar uma nova estrutura para o projeto. Na nova abordagem temos:

  • Uma classe que inicializa a janela e as classes base e contém a estrutura do GameLoop (GameManager);
  • Uma classe para renderização que recebe uma matriz com as transformações e coordenadas do objeto e o desenha na tela de acordo com a câmera ou não (Renderer);
  • Uma classe exclusiva para controle da câmera (Câmera2D);

O novo GameLoop utiliza uma abordagem baseada em telas e polimorfimo. Ou seja, é responsabilidade da tela atual retornar ela mesma enquanto o usuário não estiver saido desta, e retornar outra tela ou até mesmo nenhuma tela para que o jogador vá para a tela correspondente ou, no ultimo caso, saia do jogo.

Tendo um código baseado em telas, fica fácil encapsular as diversas partes do jogo, pois temos Menu, Creditos, GameOver, JogoTrickOrTreat, Abertura, dentre outras telas que podem ser facilmente programadas utilizando a abordagem.

No próximo post falarei sobre a implementação da Abertura, Menu e Cenário realizadas para o novo código. Até lá...

domingo, 2 de setembro de 2012

Desenvolvimento inicial do game

Olá a todos!!!

Já falamos sobre o Game Design e sobre os aspectos da arte do game. Agora só resta contextualizar o desenvolvimento inicial do game.

Para a disciplina de Oficina de Jogos II, desenvolvemos um prototipo digital deste game contendo cenário animado, tabuleiro sendo desenhado com culling, peões andando sobre o tabuleiro e as telas iniciais de menu e abertura básica.

Nessa época, eu desconhecia os prazeres do polimorfismo e os princípios de projeto necessários para manter um código limpo e modificável. Ou seja, a estrutura inicial programada do jogo não poderá ser aproveitada.

O jogo foi desenvolvido na linguagem C++ utilizando a Chien2D, uma engine didática desenvolvida pelo professor Radke.

Para mais informações sobre a versão, consultem o vídeo abaixo:

http://www.youtube.com/watch?v=OYvLxXRBlGg&feature=g-upl

domingo, 26 de agosto de 2012

Design e Mecânica Geral


Primeiramente, olá pessoal!!!

Estamos novamente reunidos para realizar um projeto ou melhor, continuar um projeto o que é muito gratificante.

Então, vamos lá! Confira abaixo o tabuleiro do jogo:

(Figura 01 - Tabuleiro)
(Figura 01 - Tabuleiro


Como o Ráfagan já comentou, a mecânica do jogo foi baseada primeiramente num desafio proposto em aula de Game Design(II) no qual precisávamos usar como base o jogo "Escadas e Escorregadores":

(Figura 02 - Tabuleiro de uma das primeiras versões de "Escadas e Escorregadores" aqui eram serpentes)
Figura 02 - Tabuleiro de uma das primeiras versões de "Escadas e Escorregadores" aqui eram serpentes)


Essa base, pode-se ver presente na esquemática das casas, as de vantagens "Amarelas" na qual você pode adquirir poderes e nas de desvantagens "Vermelhas" onde se perde o poder adquirido. Classes como o Humano, que ao cair na casa amarela e optar por não escolher um poder anda duas casas e ao cair numa vermelha volta duas casas e habilidades como a da Múmia, que pode puxar adversários para trás demonstram bem a mecânica base.
Quanto as casas roxas, são marcadas para tornar mais intuitivo a utilização do poder da Bruxa, que ao cair nesta casa tem sua habilidade ativa. (Veremos a seguir as habilidades de cada classe)

Design do Tabuleiro:

No design do tabuleiro, utilizei o "caminho" clássico para as acomodar as casas, já pensando na ideia que tive de terminar em um castelo seguindo a temática empolgante escolhida pela equipe, ai também surgiu parte da história do jogo, onde os personagens atravessam o caminho(por isso estilo caminho de pedras) para chegar num castelo cujo os boatos, guarda os melhores doces da noite de Halloween! Conversamos sobre o que seria legal colocar no cenário, surgiu a ideia do cemitério com um acumulado de casas vermelhas e pensei na mão saindo da tumba para deixar mais "macabra" está parte que já é indo para as casas finais. Outros elementos gráficos como as abóboras, coruja, gato preto... foram surgindo com a inspiração do tema enquanto em estava desenhando o tabuleiro, muitos deles possuem animação na versão digital.

Obs: Nessa época eu ainda utilizava apenas mouse, então pretendo dar mais uma finalizada no tabuleiro para a nova versão do jogo, utilizando mesa digitalizadora assim como fiz com as cartas.

Classes:

Cada classe possuí sua(s) Habilidades, Vantagens e Desvantagens, que na versão impressa fica no verso da carta do personagem correspondente, como na figura 04.

E aqui veremos o design de cada carta e a descrição de seus poderes:

(Figura 03 - Carta da Bruxa) (Figura 04 - Verso da Carta da Bruxa)
(Figura 03 - Carta da Bruxa) (Figura 04 - Verso da Carta da Bruxa)


(Figura 05 -  Carta do Cavaleiro sem Cabeça)
(Figura 05 - Carta do Cavaleiro sem Cabeça)

Cavaleiro sem Cabeça:

Habilidade:
Pode jogar uma cabeça de abóbora
explosiva no jogador ou deixar abóboras
no caminho (casas) que explodem
quando algum jogador pisa na casa.
Caso utilize a segunda habilidade,
a peça deve ser largada na casa em
que ele esta.
Range: Possui range para frente e
para trás de dez. Ao ser atingido,
o inimigo volta 2 casas.

Vantagem:
Possui bônus de +2
em casas na sua habilidade ao
acertar o Demônio. Não é afetado
pela habilidade do fantasma.

Desvantagem:
Se for pego pelas partes do Frank
, fica 3 rodadas paralisado.
Seus tokens não afetam o
Lobisomem e a Bruxa. Seus
arremessos não acertam o Fantasma.




(Figura 06 -  Carta do Demônio)
(Figura 06 - Carta do Demônio)


Demônio:

Habilidade:
Se estiver a 2 casas de um
jogador faz um “contrato” e quando
o jogador contratado anda, o
Demônio anda junto.

Vantagem:
Possui um range de 4 a frente
e atrás contra o Frank. Caso seja
pego pela habilidade do Vampiro,
quem sofre o efeito dessa habilidade
é o Vampiro que o afetou. Não é
afetado pela habilidade do Fantasma.

Desvantagem:
Se parar num range de duas casas
próximas do Lobisomem, a
habilidade do Lobisomem é ativa.
Possui desvantagem contra o
Cavaleiro sem Cabeça.



(Figura 07 - Carta do Fantasma)
(Figura 07 - Carta do Fantasma)

Fantasma:

Habilidade:
Adquire a habilidade do jogador
que estiver na mesma casa, sendo
esta cumulativa (pode ter a de
vários participantes).

Vantagem:
Não é afetado pelo Cavaleiro
sem Cabeça (as abóboras
arremessadas o atravessam).

Desvantagem:
Não pode capturar o poder do
Cavaleiro sem Cabeça, do Frank
e do Demônio.



(Figura 08 -  Carta do Frank)
(Figura 08 - Carta do Frank)

Frank:

Habilidade:
Deixa peças de seu corpo nas
casas e quem pisar fica 2
rodadas sem jogar.
A peça deve ser largada
na casa em que ele esta.
Vantagem:
Tem uma redução
pela metade das casas
quando puxado/jogado.

Desvantagem:
Pode deixar apenas 3 peças no
tabuleiro, sua habilidade não
afeta a bruxa e o lobisomem.
Possui fraqueza contra a
habilidade do demônio.



(Figura 09 -  Carta do Humano)
(Figura 09 - Carta do Humano)


Humano

Habilidade:
Ganha a partida sem
precisar tirar o valor exato para
chegar à casa cem.

Vantagem:
Se parar nas casas de
transformação
e não desejar se transformar
anda duas casas.

Desvantagem:
Se parar nas casas de virar
humano volta duas casas.



(Figura 10 -  Carta do Lobisomem)
(Figura 10 - Carta do Lobisomem)


Lobisomem:

Habilidade:
Joga outro personagem cinco casas
para trás.
Range: Pode utilizar
sua habilidade uma casa
a frente ou atrás, ou na mesma casa.

Vantagem:
Pode remover os tokens do Frank
e Cavaleiro sem Cabeça da casa
em que estiverem ao parar lá e
utilizá-los quando desejar, inclusive
arremessando a cabeça de abóbora,
limitando-se ao range de dez
casas afrente e atrás. Pode
também utilizar sua habilidade
no Demônio caso este esteja duas casas
afrente ou atrás dele.

Desvantagem:
Se for pego pela habilidade da Bruxa,
ele volta a ser humano.
Possui desvantagem contra o Vampiro.



 (Figura 11 -  Carta da Múmia)
(Figura 11 - Carta da Múmia)


Múmia:

Habilidade:
Puxa outro jogador para a casa
em que ela está. Range: Pode
ser até de 8 casas
. Ela também podepuxar alguém
que está exatamente a
15 casas dela.

Vantagem:
Possui uma bandagem especial
contra fantasma (permite que
ela acerte fantasmas).

Desvantagem:
Possui desvantagem contra
o Vampiro, pois fica
paralisada quando o puxa.



(Figura 12 - Carta do Vampiro)
(Figura 12 - Carta do Vampiro)


Vampiro:

Habilidade:
Pode paralisar o jogador que
estiver ou parar na mesma
casa que ele por 2 rodadas.

Vantagem:
Range aumentado de uma
casa a frente ou atrás contra o
lobisomem. Se parar na
mesma casa que um vampiro,
é o outro vampiro quem
leva o efeito. A múmia
é afetada por sua habilidade
ao puxá-lo.

Desvantagem:
Se parar na mesma casa
que o demônio,quem recebe o
efeito da paralisia é ele.



Então, é essa a visão geral de designs e mecânica do nosso jogo, espero que gostem!

Criticas, sugestões e elogios é só comentar ;)

Até a próxima!





Histórico

Olá a todos...

Como prometido, listarei um breve histórico do desenvolvimento do jogo Trick or Treat desde sua versão de tabuleiro.

Tudo começou na aula de Game Design II quando foi proposta a ideia de criar um jogo de tabuleiro que adicionasse mais jogabilidade ao automático jogo Escadas e Escorregadores. Nesse momento, criamos uma mecânica onde personagens possuiriam habilidades de acordo com uma classe específica. Nesse momento, restava apenas a criação de um tema que correspondesse à ideia inicial.

É importante ressaltar que a equipe envolvida foi eu (Ráfagan), Keli e Rafael Henrique Chaves de Oliveira, também nosso colega de classe.

Voltando ao tema, resolvemos desenvolver o jogo encima de temas de halloween, colocando monstros encenados nessa época do ano em ação no tabuleiro, estudando possíveis rivalidades entre os mesmos, habilidades e fraquezas, resultando em um jogo com aspectos de difícil balanceamento.

Finalizada essa fase, passamos a trabalhar encima do layout e das regras. O esquema do tabuleiro basicamente se resume em casas específicas onde é possível se escolher qual classe se transformar quando o peão do jogador chegar à mesma. Também optamos por deixar a classe HUMANO como default, criando também pontos no tabuleiro para o jogador eventualmente voltar a ser humano ao "cair" nesse espaço.

Definido o layout, o tipo das casas, o esquema de movimentação (pelo dado) e o número mínimo e máximo de jogadores (entre 2 e 8), restava balancear as habilidades dos personagens. Esse balanceamento foi feito através de vários playtests e de uma técnica interessante sugerida pelo professor Arthur de estimar habilidades por meio de atribuição de pontos. Quanto maior fosse os pontos, mais "apelão" seria a habilidade.

Outro aspecto a se considerar no balanceamento foi as fraquezas de cada personagem. Poderia haver um personagem com uma poderosa habilidade, mas com múltiplas fraquezas, tornando o jogo mais interessante.

Enfim, estes foram os principais detalhes da fase de produção inicial do jogo. No próximo tópico, minha parceira Keli irá mostrar o layout do tabuleiro e quais são as classes possíveis de se escolher no jogo. Por fim, falarei em um último tópico sobre o processo inicial de desenvolvimento da versão digital do game...

Até mais!

sexta-feira, 17 de agosto de 2012

Hello Blog!

Olá pessoal!

Para quem acompanhou nossa saga da construção do jogo Ticket to Ride observou os grandes problemas que eu e minha parceira Keli tivemos ao longo do desenvolvimento.

Agora, nosso objetivo será o de implementar um jogo de tabuleiro no estilo Halloween, só que partindo direto para a implementação digital.

O desenvolvimento desse game já foi iniciado por nós durante o segundo período da faculdade de Tecnologia em Jogos Digitais na PUCPR e já possui vários aspectos interessantes prontos!

Na época, estava recém conhecendo as maravilhas de uma abordagem POO, e, portanto, tem muita coisa monstruosa no código a ser revisada e substituída por código novo, seguro e principalmente modificável.

Este projeto será desenvolvido unicamente para a disciplina de Oficina de Jogos IV, juntamente com dois jogos para plataformas mobile que serão descritos em um outro blog dedicado.

Enfim, há muita coisa para ser definida antes de começarmos a descrição dos passos já dados dentro do projeto. Por enquanto só deixo aqui meu Hello World para todos os leitores e um forte abraço!!!


SEE YOU NEXT MISSION