O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Yu-Gi-Oh! - The Curse of The Past

Iniciado por Resque, 01/11/2019 às 19:33

01/11/2019 às 19:33 Última edição: 27/11/2019 às 14:37 por Resque
Yu-Gi-Oh! - The Curse of The Past
Fangame




Enredo

Nos tempos atuais, em um lugar remoto chamado Valley of the Kings, onde os muitos faraós foram enterrados, um trio de arqueólogos em busca de tesouros perdidos, encontraram um antigo amuleto dourado em formato de pilar. Logo os três arqueólogos perceberam que aquele amuleto se parecia muito com vários símbolos comumente encontrados no Antigo Egito.

  Após a descoberta do estranho artefato, os três arqueólogos desapareceram misteriosamente com o amuleto um dia após do anuncio da descoberta para o mundo.

  Muitas pessoas afirmam que existem propriedades malígnas no amuleto para proteger o mundo de segredos que não podem ser revelados para a humanidade.

  Ao ser informado que eventos estranhos estão acontecendo no Egito, Yugi Muto, um jovem de 13 anos sente o seu Enigma do Milênio brilhar de uma forma estranha, e pulsar como se fosse um coração, desde então ele tinha certeza que algo não estava certo.

  Preocupado com os acontecimentos, Yugi reune os seus amigos o mais rápido possível para explicar o que está sentido.

  Como sempre, seus amigos (Joey Wheeler e Téa Gardner) estão prontos para ajuda-lo em tudo que for preciso.

  O grupo embarca para um dos lugares mais misteriosos do planeta, e procuram por informações que possam ajuda-los a desvendar os acontecimentos.

  Movido pelo seu instinto e pela forma de seu Enigma do Milênio, Yugi e seus amigos precisam investigar diversos casos sobrenaturais que ocorrem no clima seco e remoto do deserto, mas mal sabem eles que o perigo está se aproximando cada vez mais do seu coração e do coração das cartas.

  Após várias comparações da imagem divulgada do amuleto com antigos símbolos, pesquisadores descobriram que ambos representam a mesma figura, o Djed (também conhecido como ded, dad ou tet). Um hieróglifo em forma de pilar que representa a estabilidade.

  O amuleto em forma de pilar (Djed) está associado a Osíris, o deus egípcio do pós-morte, do submundo e dos mortos.

  Uma lenda antiga diz que se o amuleto em forma de pilar (Djed) for colocado próximo às colunas vertebrais de corpos mumificados, acontecerá a ressurreição do falecido, permitindo-o viver eternamente.




Personagens


Yugi Muto



    Yugi Muto, um novato muito inteligente de 13 anos na escola da cidade Dominó, ganhou o Enigma do Milênio em peças de seu avô, Solomon Muto.


Joey Wheeler




    Joey é cabeça-quente e fala de boca para fora freqüentemente. Joey torna-se o melhor amigo de Yugi Muto quando este entra na escola.


Téa Gardner




    Téa é uma garota de 18 anos que atua como uma das cabeças pensantes do grupo de Yugi. É amiga de infância de Yugi e sempre o ajudou a se livrar das ameaças dos encrenqueiros.




Vídeo


 





Imagem


 





DOWNLOAD LINK

Em Breve




Créditos


Programação: Resque (rogessonb@gmail.com)
UI Sprites: Resque
Game Engine: RPG Maker VX Ace
Imagens: Konami
Imagem dos Personagens: Marcos Freire
Efeitos Especiais: Enterbrain
Yu-Gi-Oh!: Takahashi Kazuki

Musica: Afterlife
Artista: Amaranthe
Remix Por: TheNCimpact

Ficou muito bom, só não uma coisa, eu não entendi se a tela de batalha foi simulada/editada no vídeo ou não teve transição mesmo, ficaria legal o efeito.

Citação de: Crixus online 01/11/2019 às 20:11
Ficou muito bom, só não uma coisa, eu não entendi se a tela de batalha foi simulada/editada no vídeo ou não teve transição mesmo, ficaria legal o efeito.


@Crixus Valeeu!

Não teve transição para a tela de batalha mesmo... Ainda falta o efeito de transição e o sistema de "jokenpô" para decidir quem vai ser o primeiro a jogar.

Parabens resque!!!! seu jogo de yugioh parece estar otimo...
estou ansioso pela demo...

Oooooo tava no aguardo para esse projeto  :wow:

Como amo card games hahah, e cara, olha essa música do video. Amaranthe é tipo uma das bandas mais f*da que tem só que quase ninguém conhece  :U_U: .

No mais só dar os parabéns, porque tudo parece fluir bem legal e vou ficar no aguardo para mais novidades!

Citação de: razier online 01/11/2019 às 22:09
Parabens resque!!!! seu jogo de yugioh parece estar otimo...
estou ansioso pela demo...

Valeu @razier!!

Ainda existem muitas coisas para serem implementadas até que uma demo seja viável, mas vou postando aqui os vídeos de atualizações.


Citação de: Raizen online 02/11/2019 às 00:18
Oooooo tava no aguardo para esse projeto  :wow:

Como amo card games hahah, e cara, olha essa música do video. Amaranthe é tipo uma das bandas mais f*da que tem só que quase ninguém conhece  :U_U: .

No mais só dar os parabéns, porque tudo parece fluir bem legal e vou ficar no aguardo para mais novidades!


@Raizen Olha ele ai!!!

Card games são a minha paixão também, sempre quis fazer um. Muitos desafios estão aparecendo (você me entende), mas estamos aí!

Não sabia que você também gostava de Amaranthe, é muito legal hehe.

Também estou de olho no seu projeto, no aguardo de mais vídeos!

Após um tempo sem passar por aqui, lá vai um novo vídeo com melhorias no projeto:

- AI Melhorada
- Sistema de escolha de primeiro turno
- Melhoria na movimentação das cartas
- Cartas em modo de defesa
- Tela de GameOver




Boaaa Resque!! :D

As mecânicas parecem estar fluindo muito bem, então parabéns por essa parte que isso dá um trampo enorme. Achei estranho você comprar e jogar e só depois o oponente comprar, não sei o quão difícil seria para fazer os 2 comprarem juntos.
Uma parte que eu pessoalmente não curti foi o modo como ele escolhe o jogador inicial, Acho que tem modos mais bonitos e simples de fazer essa parte, por exemplo a imagem da face dos 2 duelistas e uma ficando opaca enquanto a outra não e piscando já daria um efeito legal. Outro jeito é o mesmo usado nos yu-gi-ohs, com cartas de papel-pedra-tesoura.

De resto está maneiros! Boa sorte com o projeto e to no aguardo para mostrar algo palpável(demo) para nós  :XD:

Pô, que bacana!

Curti a animação de distribuição das cartas e o fluir da batalha, está bem dinâmico. Também gostei de ver como usou os recursos do Maker ao seu favor e, apesar de você ainda não ter modicado nada nas Windows, até que ficou legal essa estética. Me lembrou bastante uns projetos mais antigos que eram feitos no Maker, com propostas diferentes de apenas o básico RPG, mas ainda bem com cara de Maker mesmo. Não sei se pretende mudar muito ainda desse visual, mas já está bem legal.

Desistiu de implementar o sistema de jokenpô?


Citação de: Cezar online 01/04/2020 às 00:23
Boaaa Resque!! :D

As mecânicas parecem estar fluindo muito bem, então parabéns por essa parte que isso dá um trampo enorme. Achei estranho você comprar e jogar e só depois o oponente comprar, não sei o quão difícil seria para fazer os 2 comprarem juntos.
Uma parte que eu pessoalmente não curti foi o modo como ele escolhe o jogador inicial, Acho que tem modos mais bonitos e simples de fazer essa parte, por exemplo a imagem da face dos 2 duelistas e uma ficando opaca enquanto a outra não e piscando já daria um efeito legal. Outro jeito é o mesmo usado nos yu-gi-ohs, com cartas de papel-pedra-tesoura.

De resto está maneiros! Boa sorte com o projeto e to no aguardo para mostrar algo palpável(demo) para nós  :XD:

Olá @Cezar!!!

Sim, dei uma boa polida nas mecânicas, e isso da muito trabalho, mas é essencial para continuar no desenvolvimento kkk.

Sobre a compra de cartas em paralelo, é algo que nunca pensei, grande ideia!! Vou adicionar essa melhoria no próximo vídeo, junto com as sugestões da tela de escolha de jogador.

No próximo vídeo também pretendo incluir mais sistemas, e aos pouco ir coletando a opinião da comunidade.

Muito obrigado pelo feedback!!!!!


Citação de: کǺпdЯØ(ک.C) online 01/04/2020 às 04:01
Pô, que bacana!

Curti a animação de distribuição das cartas e o fluir da batalha, está bem dinâmico. Também gostei de ver como usou os recursos do Maker ao seu favor e, apesar de você ainda não ter modicado nada nas Windows, até que ficou legal essa estética. Me lembrou bastante uns projetos mais antigos que eram feitos no Maker, com propostas diferentes de apenas o básico RPG, mas ainda bem com cara de Maker mesmo. Não sei se pretende mudar muito ainda desse visual, mas já está bem legal.

Desistiu de implementar o sistema de jokenpô?

Olá کǺпdЯØ(ک.C)

As alterações eu vou deixar bem para o final, ainda tem muitas mecânicas que precisam ser incluídas e ajustadas. Também da utilização do padrão Maker, dessa forma é bem fácil!

Sobre o sistema de escolha de jogador, tentei fazer algo bem básico, mas prometo melhorar!! Logo logo o sistema Jokenpô vem, hehe.

Obrigado!!!

@Raizen
@Gabriel
@Double

Sobre o feedback de vocês no ultimo vídeo que postei, peguei esse fim de semana para fazer umas melhorias na tela de escolha de primeiro jogador e implementei o sistema de Jokenpô.

Segue o resultado abaixo, estou aberto a todo tipo de sugestão de melhorias, valeeeu!

@Raizen, A próxima alteração vai ser aquela do jogador e o oponente comprarem cartas ao mesmo tempo no primeiro turno.


Muito melhor, tipo melhorou 1000% haha, boa  :XD:

13/04/2020 às 00:50 #12 Última edição: 13/04/2020 às 03:12 por Jorge_Maker
Mano, eu não entendo nada de Yu-Gi-Oh, mas curti muito o que eu vi nesse último vídeo! Parabains. :XD:
Boa sorte no projeto. o/
50% OFF
Há muito tempo, por algum motivo, eu fiz parte de um char do Yugi. Ele tava empoeirado aqui no meu HD, então lembrei dele quando vi seu jogo. Acho que da pra aproveitar algo. auheuahe'
Use à vontade, se quiser. o/
[close]
Oxe

Citação de: Raizen online 12/04/2020 às 21:49
Muito melhor, tipo melhorou 1000% haha, boa  :XD:

@Raizen, valeeu!

Citação de: Jorge_Maker online 13/04/2020 às 00:50
Mano, eu não entendo nada de Yu-Gi-Oh, mas curti muito o que eu vi nesse último vídeo! Parabains. :XD:
Boa sorte no projeto. o/
50% OFF
Há muito tempo, por algum motivo, eu fiz parte de um char do Yugi. Ele tava empoeirado aqui no meu HD, então lembrei dele quando vi seu jogo. Acho que da pra aproveitar algo. auheuahe'
Use à vontade, se quiser. o/
[close]

Jorge_Maker, Muito obrigado!

Vou usar o Yugi hehe.

02/09/2020 às 13:53 #14 Última edição: 02/09/2020 às 18:55 por Resque
Olá pessoal! Tudo bem com vocês?

Depois de um grande tempo sem gravar vídeos de atualização do projeto, vim postar o andamento das coisas. Não tenho um vídeo novo e nem imagens  legais, mas é por uma boa causa.

As duas ultimas atualizações do projeto foram bem custosas e demoradas. Estava ficando cada vez pior...

O motivo de tudo isso, é que comecei o projeto que nem um maluco, programando sem parar.

Por diversas vezes, tentei introduzir o teste unitário de código no projeto, e até consegui, mas em apenas 20% das classes.

Os testes ajudam muito, mas não fazem mágica se a arquitetura de código e design de classes não estiver bem feita, e era exatamente esse o caso.

Uma das funcionalidade do Yu-gi-oh! e que tenho no game funcionando, é a de escolher um monstro em campo e deixa-lo em modo de defesa.

O fluxograma desse script é esse:


- Retângulos são classes
- Círculos são métodos (funções)
- Setas indicam o fluxo de comunicação entre eles.





Tudo começa na classe Cursor (que é onde o jogador navega pelo campo de batalha até escolher o monstro ou qualquer carta).
A classe Cursor chama diversas classes (Battle_Field, Scene_BattleCard, Window_CardAction, etc) até chegar na classe final (Card) que vai chamar o método "to_def" e finalmente deixar aquele monstro em modo de defesa.

Quem está atento, percebeu que algo não está certo...

A classe Battle_Field chama diversas outras classes e métodos até votar para ela mesma. Marquei essa anomalia em vermelho na imagem abaixo:




Tá! Mas qual é o problema nisso?

O grande acoplamento entre classes para executar uma única função, acaba deixando o código muito mais difícil de ser alterado, e isso acontece com todas as linguagens de programações do mundo, pois é um problema de design de código.

Nem o melhor teste unitário do universo, vai te salvar disso.

Os problemas que isso traz, são:

- Ao alterar uma função, você vai impactar todas as classes que estão ligadas a ela (quebra de código em massa);
- Ao testar unitariamente uma função, você terá depender de várias outras classes. Isso deixa os testes gigantes, complexos e ainda mais demorados de serem construídos. (Lembre-se de que quando você mexe no código, também precisa mexer no teste, quanto mais classes a sua função passar, maior vai ser o seu teste);
- Quebra do principio de responsabilidade única. Cada classe deve fazer apenas uma coisa, e somente aquilo.
- Classes dependendo de respostas de outras para executar uma ação própria [!]Cada classe deve ser responsável por gerenciar ela mesma, sem depender de outra.

O problema que estou passando no game, é exatamente esse. Qualquer funcionalidade nova que tento adicionar, demora horrores, e quebra outras funcionalidades.

Uma das classes do projeto (link abaixo), tem mais de 46 métodos públicos, isso é péssimo, pois ela está fazendo muito mais coisas do que deveria.

Esses 46 métodos são chamados por outras classes, e quando eu altero 1 desses métodos, todas essas classes quebram.

O ideal, seria essa classe ter perto de 1 a 5 métodos públicos, ela seria menor e poucas classes dependeriam dela:
https://github.com/rogesson/yugioh/blob/master/source/Battle_Field.rb

Chegou em um ponto que não consigo avançar sem refatorar todo o código existente.

Depois de voltar para o caderno, consegui desenhar um fluxo muito mais limpo, simples e elegante para a chamada do método "to_def", agora eu posso editar o código e deixar igual ao desenho (coisa que eu devia ter feito antes mesmo de iniciar a codificação).


Antes:




Depois:



Repare que na versão final, o fluxo ficou muito mais limpo, se já estava complexo de entender por imagem, imagina por código?

Agora, cada método é chamado pela sua classe responsável:

1) Battle_Field - Faz a leitura do evento de OK em uma carta e chama o Window_CardAction;
2) Window_CardAction - Executa o método open_card_action para exibir as ações que podem ser feitas nessa carta
3) Card - faz a leitura da opção escolhida no "open_card_action" (que no caso é a de colocar um monstro em modo de defesa) e chama o método to_def da classe Card.




Com isso, aprendi que é muito importante desenhar o fluxo de comunicação entre suas classes antes criar o código, isso em qualquer linguagem de programação!

Ainda vou levar um tempo para refatorar todo o código que está nessa situação, mas depois isso, o desenvolvimento será muito mais rápido, fácil e simples.

Em breve, volto com novidades o/