top of page
4188cb3a745ba5e3aba80c6260f67396.jpg
  • Foto do escritorDraconyx

Primeiros 30 dias do projeto Draconyx - Desenvolvimento

Atualizado: 29 de nov. de 2023

Nesse post descreverei como foi o inicio do projeto, ideias, desafios e implementações.



Todo projeto tem um "começo, meio e fim".

Na engenharia existe o que chamamos de fases de um projeto: Conceitual, Básica, Detalhamento e Construção.


  1. Fase Conceitual: É o início do projeto, onde ideias e objetivos são delineados. Aqui, identificam-se necessidades, estabelecem-se metas iniciais e define-se a viabilidade do projeto.

  2. Fase Básica: Nesta etapa, ocorre a elaboração mais detalhada do projeto. São feitos estudos preliminares, esboços e definições iniciais das diretrizes do projeto.

  3. Fase de Detalhamento: É o momento de aprofundar os detalhes. São criados desenhos técnicos, cálculos precisos e especificações detalhadas de materiais e procedimentos. No caso do RPG seria a criação em larga escala de Itens, Magias, Monstros etc.

  4. Fase de Construção (ou Execução): Aqui acontece a implementação do projeto. Os planos e documentos das fases anteriores são usados para guiar a construção, fabricação ou implementação do produto ou sistema projetado. No caso do RPG seria o desenvolvimento da plataforma online.


É importante reassaltar que essas fases se sobrepõe.


Na fase Conceitual, foram alguns poucos dias pensando na ideia. Como eu já tinha jogado anos de RPG de mesa e muito MMORPG como Tibia, World of Warcraft, entre outros, foi muito mais fácil ter a ideia do que eu queria produzir e qual seria o produto final. Então decidi que o produto final seria uma PLATAFORMA ONLINE DE RPG DE MESA com um sistema novo chamado DRACONYX.

Essa plataforma na sua primeira versão (Alfa) deveria possuir (requisistos do projeto):

- sistema de criação de conta e login;

- uma tela inicial onde é possível selecionar diversas opções dentro da plataforma: regras, classes, magias, monstros, itens, etc;

- diversas áreas expositivas onde pode-se acessar o conteúdo de larga escala como magias, itens e monstros;

- diversas áreas explicativas onde o sistema é explicado como quais são as classes, raças, etc;

- painel de criação de personagem;

- painel de gerenciamento de todos personagens. Aqui é possível toda interação do personagem como: adicionar experiência e subir de level, adicionar ou remover itens, alterar os parâmetros como vida/mana/ouro/etc, adicionar ou remover efeitos temporários como "Dorminado" ou "Atordoado", escolher as magias permitidas, entre muitas outras funcionalidades;

- painel de combate, onde é possível adicionar os monstros e os jogadores e fazer toda interação do combate.

Na fase Básica, foram mais dias, pois aqui foi necessário passar todas essas ideias da fase conceitual para planilhas no Excel e apresentações no Powerpoint para manter a organização e permitir o desenvolvimento do projeto.


Exemplo do esboço da ideia de como o pré combate é definido. Quem tem mais perícia de "Percepção" tem mais chance de perceber primeiro a presença de um grupo inimigo, isso é determinado com os dois grupos dolando 1d20. Ainda há um sistema que caso um grupo seja muito mais forte que o outro isso pode gerar medo e fazer o outro grupo fugir.


Assim a fase Básica se tratou de transportar todas as ideias conceituais que estavam na minha mente para o "papel". Isso foi um desafio maior, pois não basta apenas colocar no papel, nessa hora é necessário detalhar um pouco mais, pois algo que é uma ideia vaga necessita ter algo concreto para que possa ser escrito. Por exemplo:


Exemplo de Design de Jogo

Na fase Conceitual eu sabia que queria que o personagem que tivesse mais "Percepção" percebesse o inimigo primeiro e tivesse a opção de fugir ou se preparar melhor para o combate. Ao colocar essa ideia no papel na fase Básica não adiantaria simplismente escrever isso que eu tinha na cabeça. Foi necessário pensar com COMO transformar minha vontade em algo concreto. Havia duas abordagens para esse problema: (1) a deterministica e (2) a probabilistica. A deterministica seria quem tem maior valor de "Percepção" percebe primeiro, a vantagem é a simplicidade e rapidez, mas a desvantagem é que não da margem para a possibilidade da sorte, ou as vezes se um possui 13 e outro 12, parece estranho por apenas 1 ponto de diferença ser 100% de chance. Então a abordagem probabilistica foi escolhida, quem tem maior "Percepção" tem MAIOR PROBABILIDADE de perceber primeiro.

Agora o desafio é: como implementar isso? Pois maior probabilidade significa ter matemática envolvida. Primeiro é necessário pensar, o óbvio, se os dois tem a mema quantidade de percepção, obviamente deve ser 50% de chance. Então vem a pergunta crucial, para cada ponto a mais de percepção, quanto % a mais tem que ter de chance? Exemplo, eu 7 e ele 5. Tenho 2 pontos a mais, então ao invés de 50% quanto deveria ser? 70%? 10% para cada ponto adicional?

Bom, aí que os conceitos de design de jogos entram.

Eu nunca estudei design de jogos na vida, mas sou engenheiro projetista, então projetar/design tenho muita experiência. Para avaliar esse problema de quantos % deve ser maior para cada ponto adicional deve-se olhar qual a percepção mínima e máxima possível, avaliar o que é uma percepção razoável para cada level, fazer testes e simulações e usando essa CIÊNCIA E ARTE determinar um valor que acha plausível. Inicialmente cheguei que 5% a mais para cada ponto em percepção seria o ideal. Assim toda vez que um grupo de aproximasse de outro, os personagens com maior percepção de cada grupo são comparados. Calcula-se a diferença entre essas percepções e calcula-se a probabilidade do grupo que se aproxima ter sucesso, então esse grupo rola um dado para a probabilidade.

Ficou matematicamente perfeito essa implementação, porém não é só esse aspecto que importa em um jogo. A usabilidade e praticidade não era boa, pois nesse método apenas um grupo rolava os dados e outro problema, a porcentagem era de 1 a 100, ou seja, precisaria de dado 1d100 que é mais chato de jogar pois são dois dados. Como resolver esse problema sem alterar a matemática?

Simples, procurar um outro método que tenha os mesmo resultados matemáticos. Dessa maneira tive a ideia de ao invés de apenas um grupo lançar o dado, os dois lançam. Como para cada diferença de pontos é 5% de diferença, somente haverão probabilidades multiplas de 5, dessa maneira pode-se usar o 1d20 ao invés do 1d100. Então com uso do excel e alguns testes, descobri que se cada grupo rodar 1d20 e somar o valor de sua percepção e comparar o resultado era matematicamente idêntico ao método anterior, porém os dois problemas se resolveram. Agora os dois grupos rolam dados e o dado rolado é apenas 1d20.


Esse foi apenas um das dezenas de desafios que tive que enfrentar para implementar as ideias no papel durante a fase Básica.

Ainda durante a fase básica, o núclo do sistema foi desenvolvido. O núcleo do sistema trata-se de como é a MECÂNICA do sistema de RPG, como a matemática funciona por trás. Fazem parte os atributos, pontos de vida, mana, itens, ataque, defesa, como funciona o dano, chance de acerto, esquiva, turnos, ações, etc... ou seja, todas as regras de dinâmica do jogo. Isso é o coração de qualquer RPG e faz toda diferença de um para o outro.

Foi desenvolvendo então a mecânica do sistema, colocando em excel e sempre que uma nova peça da mecânica foi adicionada era necessário fazer uma análise de como ela impacta em todo o resto do sistema. Assim, desenvolver a mecânica e funcionamento de qualquer jogo vai se tornando mais trabalhoso quanto maior vai ficando o sistema, pois um componente depende do outro e há muito trabalho para harmonilá-los, muitas vezes necessitando de ajustes e alterações.

Representação do trabalho exponencial para desenvolver a parte da mecânica de um sistema de jogo.


Faz sentido conforme for desenvolvendo a mecânica também desenvolver alguns poucos exemplos de atores que utilização essa mecânica. Isso é necessário para poder testar e ajustar o desenvolvimento das mecânicas. Por exemplo, quando o sistema de atributos, vida, mana, ataque, defesa, etc... foram criados, também tive que criar um protótipo de monstro com essas mesmas características para poder testar e analisar a coerência do sistema. Da mesma maneira com os itens, pois eles alteram as características do personagem. Enfim, a única forma de desenvolver de maneira balanceada e harmonilzada otimizando o tempo é ir desenvolvendo cada parte na quantidade correta. Se ao desenvolver uma parte percebe que depende de outra que ainda não existe, está na hora de parar essa e começar a esboçar a outra. Por exemplo, seria um grande erro tentar desenvolver o sistema de vida e mana sem desenvolver o sistema de ataque, mas para o sistema de ataque estar coerente é necessário os itens de ataque (armas), então é necessário criar alguns itens (não muitos para não perder tempo). Depois deve-se voltar e ajustar o sistema de vida com o de ataque, depois o de defesa deve-se criar itens de defesa (armaduras, elmos, etc), e depois ajustar os três sistemas: ataque, defesa e vida. Por isso desenvolver um sistema vai ficando cada vez mais complexo e demorado quanto maior o sistema.

Outro erro que não deve-se cometer jamais é tentar detalhar algo que depende de outros sistemas que ainda são protótipos, esboços ou ainda não foram detalhados. Exemplo, criaturas e monstros possuem todos os atributos e mecânicas do jogo, vida, mana, ataque, itens, perícias, etc... seria quase que uma total perda de tempo criar mais do que alguns poucos monstros. Alguns poucos monstros serão úteis para testar e ajudar a desenvolver o sistema. Mais do que isso não é necessário, pois quando o sistema sofrer alterações E VÃO SOFRER (pois todo sistema vai mudando durante o desenvolvimento), quase todo trabalho feito detalhando e criando monstros pode ser perdido, pois ao detalhar vários monstros quando o sistema mudar aqueles monstros vão estar configurados para uma versão obsoleta e os monstros provavelmente estarão "desbalanceados". Isso se aplica também um pouco a itens e menos para magias. As magias devem ser detalhadas logo sim, pois afetam muito o sistema, mas devem também ser desenvolvidas em conjundo com os outros sistemas e classes.

A vantagem porém de criação de monstros, itens e magias é que é linear, ou seja, novos monstros, magias e itens não alteram como o sistema funciona, então para cada novo adicionado é o mesmo trabalho.


Representação do trabalho linear para desenvolver monstros, itens e magias.



A fase de Detalhamento é muito importante, ela detalha e consolida os elementos do sistema como regras, monstros, magias, itens, etc. A primeira coisa que deve ser detalhada é o sistema (atributos, status, vida/mana/ataque/defesa/dano, turnos, ações, etc), depois as classes e suas magias, depois os itens e por último as criaturas.

Ainda nos primeiros 30 dias já comecei o Detalhamento do sistema, das classes e das magias. Para os itens criei muitos protótipos para testes e monstros apenas alguns para testes, já que são os mais trabalhosos de criar.

No detalhamento todas regras do sistema devem ser pensadas.


Exemplo de Design de Jogo

Na fase Conceitual: os personagens e criaturas devem as vezes acertar as vezes errar seus ataques.

Na fase Básica: um atributo chamado "Destreza" determinará a chance de acertar isso também dependerá da distância ao alvo.

Na fase de Detalhamento: A chance de acerto é igual a (32+Destreza)/(49+Distância^1.5). Obviamente de 0 a 100%.


Exemplo do detalhamento da ideia de "Acerto do Ataque". Uma fórmula matemática complexa que depende da Destreza do atacante e da distância até o alvo é utilizada. Nesse gráfico podemos visualizar facilmente com auxilio de cores que quanto maior a destreza e menor a distância maior a chance de acerto.


Esse método é matematicamente muito bom, porém tem um problema: a praticidade.

Em teoria deveria-se olhar a destreza, medir a distância, entrar na fórmula ou olhar na tabela, depois rolar 1d100. Isso seria feito a cada ataque por cada jogador, ou seja, um processo que aumentaria muito o tempo gasto em cáculos etc.

Esse problema, porém, é eliminado com o uso da plataforma que tem já o valor da destreza e mantém registrado a distância do alvo e calcula automaticamente a probabilidade, inclusive podendo fazer a "rolagem" do 1d100 automaticamente. Observe isso na figura abaixo retirada da plataforma online:

O personagem acima tem 3 em Destreza e está a 2 de distância do seu alvo, então automaticamente é monstrado o valor da chance de acerto que é 68%.




Após aproximadamente 10 dias, já na fase Básica e com parte do Detalhamento iniciado, resolvi começar o esboço da plataforma, ou seja inicar fase de Construção.

Como o objetivo é uma plataforma web, iniciei o projeto programando em React.

Os primeiros componentes foram algumas magias, depois itens.

Exemplo de itens na plataforma online. Há o nome, imagem, atributos que o item concede, há o dano, os requisitos para usar o item, há uma descrição, raridade e valor em ouro.


Os itens e magias são primeiramente feitos numa planilha excel. A plataforma, porém, em sua linguagem de programação só consegue ler dados na forma de objetos (https://analystanswers.com/what-is-a-data-object-definition-types-examples/). É necessário então converter diversos dados (muitos itens e magias) em planilha do excel para o formato de objeto.

Para isso utilizei o Python que com a biblioteca xlrd faz a leitura do excel e com um código pronto transforma no formato que preciso para plataforma. Após isso é só copiar os dados transformados e colar no banco de dados da plataforma.


Ao longo da fase de Contrução implementei diversas funcionalidades na plataforma:

- lista de magias com capacidade de filtrar por classe;

- lista de itens com capacidade de filtragem por tipo de item;

- lista de monstros;

- lista de personagens criados; e

- página de criação de personagem;


Com quase 30 dias de plataforma, coloquei ela online disponível para acesso pela internet e gravei um video para o Youtube explicando o sistema Draconyx:



Ainda faltava detalhar algumas coisas:

1) Os cards de monstros, coloquei um card que pudesse alterar o conteúdo conforme a aba escolhida:

Exemplos de criaturas monstrando com diferentes abas escolhidas: status, atributos, ataque, espólio e fraquezas/resistências.


2) Os cards de personagem. Esse, sem dúvida, foi o mais trabalhoso, pois existem muitas funcionalidades como: adicionar/remover item, equipar/desequipar item, fazer esses itens equipados alterarem os status, escolher magias, adicionar experiência, subir de level (escolhendo pontos de perícia, profissão e atributo), painel de calcula dano/cura recebido/causado, alterar vida/mana/ouro, entre outros:


Card (ficha) de personagem com todas informações necessárias para conduzir o jogo.


Foi incluido, também, o sistema de "Efeitos Temporários", que podem ser observados na parte inferior dos status do personagem. Esses efeitos podem ser bons ou ruins, conhecidos como buffs e debuffs em outros sistemas. A implementação desse sistema foi trabalhosa, pois ao receber um efeito ele automaticamente afeta o personagem. Exemplo: se receber o efeito "Lentidão", automaticamente seu movimento vai diminuir e esse valor ser mostrado em roxo.

Observe o símbolo de "Lentidão" como correntes e o valor do movimento recudizo para 2 em roxo.


3) Página de criação de personagem. Aqui é possível escolher o nome, classe e raça. Distribuir 10 pontos em perícias e escolher 3 profissões.


Painel de criação de personagem, ao escolher a classe aparece uma janela com barras descrevendo as características da classe.


4) Sistema de subir de level e escolha e subclasse. Ao subir de level é necessário escolher diversas características como 2 pontos em perícias e 1 em profissão. O personagem recebe 2 pontos de atributos, um obrigatório e outro a sua escolha. No level 5 deve escolher a subclasse.

O personagem deve fazer suas escolhas e confirmar.


No level 5 deve escolher sua subclasse. Na figura a classe Bruxo apresenta três subclasses: Necromante, Demonologia e Destruição.




A Plataforma estado atual - 16 novembro 2023


Além de tudo já descrito a plataforma já tem implementado sistema de salvamento, ou seja, personagens criados são automaticamente salvos. As alterações nos personagens podem ser salvas para posterior acesso.


Ainda há muito pela frente, segue o roadmap de planejamento para os próximos dias:

  • alterar alguns efeitos temporários para que durem uma certa quantidade de rodadas;

  • atualizar certas características menos importantes das magias;

  • ajustar as perícias dos monstros (percepção, sobrevivência, etc) para serem compatíveis com as habilidades dos jogadores;

  • implementar gênero masculino e feminino na criação do personagem;

  • implementar na ficha do personagem outra aba com estatísticas e um espaço para anotações dos jogadores e do mestre;

  • talvez criar magias que são específicas de cada raça;

  • criar diversas outras poções (atualmente só existem as de restaurar vida e mana);

  • detalhar mais as profissões;

  • detalhar mais as religiões; e

  • entre outros...

Conclusão


Os primeiros 30 dias foram intensos, mas foi o suficiente para criar boa parte do sistema e da plataforma online. Daqui pra frente há muito o que implementar e melhorar. Draconyx!

32 visualizações0 comentário
bottom of page