Muito obrigado pelo feedback e por ter jogado!
Peço desculpas pela otimização precária, não tive ninguém pra testar pra mim e só descobri isso faltando um dia kkkkk ai teve que ir assim mesmo. Sobre o diálogo, eu tava fazendo uns testes e a distância entre ele (o boneco) e a saída da floresta era um pouco curta, ai pra não mexer nas outras variáveis, eu optei por fazer o diálogo aparecer antes dele mesmo, porque se o player usasse o dash rapidamente ele conseguia sair da floresta logo e ia bugar o resto todo (vai que alguém quisesse sair rápido).
Infelizmente ainda não estudei sobre sistema de save, mas vou aderir pros próximos jogos com certeza. Sobre o mouse sair da tela, vou procurar uma maneira disso não ocorrer, não tinha pensado em como resolver e então deixei passar, mas vejo que foi um erro da minha parte.
Kkkkkkkk posso dar umas dicas hack sem hack de como alcançar os dois finais bem mais rápido.
O primeiro você tem que fazer a ordem correta dos pecados, pode tanto fazer de primeira quanto de segunda (quando você derrota todos pela ordem errada a primeira vez acontece umas paradas e você volta pro começo com dicas sobre a ordem certa), se fizer de primeira, o diálogo é bem curto, se fizer de segunda, o diálogo é bem mais extenso e explicativo, pois vai ter ocorrido os
*mini spoiler*
.
.
.
.
.
.
é spoiler mesmo em: problemas temporais.
Já o segundo final, você tem que fazer a ordem errada nas duas tentativas.
Uma dica de ouro é fazer a ordem certa até a Gula, ai somente inverter os dois últimos.
Outra dica também é o dash no Orgulho quando ele tiver se movendo rápido, não sei se já testou, mas caso acerte, ele vai cair no chão tonto por uns 3 segundos.
Eu tinha deixado o Orgulho atordoado antes ksksks, mas achava que foi um soco que eu poderia ter dado!
Depedendo do tipo de arquivo vc escolhe, o sistema de save vária em complexidade. (só vi o básico de ini, onde salva, posição, vida e etc de inimigos e player. O tenso mesmo é salvar array já que é manual ksksksk (estruturas de dados t em uma função que salva elas numa forma de texto e dps ler esse texto mais tarde.))
Parece que esses chefões, não são o pecado do próprio personagem né? (igual aquele bem e mal, não parecem ser do personagem tbm), já que eles dizem estarem naquele mundo antes do player entrar no game.
Inicialmente eu pensei em colocar pra ser soco mesmo kkkkkk porém iria ficar muito "fácil", ai decidi deixar no dash mesmo já que também faria sentido o impacto da velocidade de ambos.
Interessante, eu ainda não vi absolutamente nada sobre esses sitemas ai, cê acredita que até hoje array ainda me pega? Kkkkkk pensa em um negócio complicado pra mim, mas vou estudar mais sobre e também como fazer essa paradinha ai do arquivo ini que acredito que seja o texto que você se refere, obrigado pelas dicas e esclarecimento!
Se eu te contar vai ser um baita de um spoiler, mas caso não ligue, vou tentar falar o mínimo possível sobre.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Os pecados e o bem e mal são sim do próprio jogador. Mais pra frente é explicado que aquele mundo é como se fosse a consciência coletiva da mesma pessoa em diferentes universos. É tipo como se fosse a vida após a morte, então como cada consciência viveu antes e acumulou pecados, para reencarnar em um corpo puro precisa se purificar primeiro, os eliminando (ou purificando, fazendo na ordem correta). Lembra que é citado que o protagonista perdeu as memórias e que as vezes o bem e o mal também perdem? A cada vez que alguém consegue reencarnar, aquele mundo sofre um "reset", então eles sabem o que devem fazer, mas não sabem que já viram o jogador em outras ocasiões naquele mesmo mundo. Por isso o tempo que cada viajante aparece é perto dos 80 anos, que seria +/- a expectativa de vida no nosso mundo. Um dos finais explica isso melhor, fazendo a ordem errada primeiro e depois fazendo a ordem certa. Caso faça a ordem certa primeiro ele só vai reencarnar e pronto, mas caso faça ela na sua segunda chance (que é fazendo a ordem errada primeiro) vai ser citado como esse problema temporal afetou as suas memórias e eles vão se recordar brevemente do que aconteceu antes. Esse final é bem mais completo do que fazendo a ordem certa logo de cara. Talvez tenha ficado um pouco confuso, mas espero que tenha dado pra entender a ideia principal.
Arquivo ini é literalmente isto aqui:
o código básico seria assim: vc abre o arquivo ini, dá um nome a ele ( . (ponto) alguma coisa, n importa mt), e dentro dele vc escolhe se vai escrever a posição do player, vida, room, etc (write). ou se vai pegar essas informações, e dá para o player de agora (read). ai sempre que vc leu ou escreveu algo, vc precisa fechar o arquivo. Pq só o Game Maker só permite rodar um arquivo por vez. E tbm se n colocar isso aparentemente não vai escrever ou ler nada.
// a forma que vc escreve algo no arquivo pode ser real - (ini_write_real) ou string -> (ini_write_string).
=================SALVANDO VALORES===================
var _file_name = "save.lin";
// se o save já existe, apague ele
if(file_exists(_file_name)) file_delete(_file_name);
// abrindo arquivo
ini_open(_file_name);
// escrevendo inforamações dentro do arquivo
if(instance_exists(obj_player))
{
// --- Player
// Seção Chave valor
ini_write_real("Jogador", "X", obj_player.x);
ini_write_real("Jogador", "Y", obj_player.y);
ini_write_real("Jogador", "Vida Max", obj_player.vida_max);
ini_write_real("Jogador", "Vida", obj_player.vida);
ini_write_real("Jogador", "Animation", obj_player.image_index);
ini_write_real("Jogador", "Sprite", obj_player.sprite_index);
}
ini_close();
=================ACESSANDO VALORES====================
// para ler um arquivo, ele primeiro precisa existir
if(file_exists("save.lin"))
{
// abrindo arquivo
ini_open("save.lin");
// Atribuindo/dando informações do save ao player.
// --- Player
if(instance_exists(obj_player))
{
obj_player.x = ini_read_real("Jogador", "X", room_width/2);
obj_player.y = ini_read_real("Jogador", "Y", room_height/2);
obj_player.vida_max = ini_read_real("Jogador", "Vida Max", 50);
obj_player.vida = ini_read_real("Jogador", "Vida", 50);
obj_player.image_index = ini_read_real("Jogador", "Animation", 0);
obj_player.sprite_index = ini_read_real("Jogador", "Sprite", spr_player);
}
// fechando arquivo
ini_close ();
==============
Para aprender firmemente array, é só com prática e constantemente usar ele skksksk. mas ao aprender isto, é mais fácil usar estruturas de dados. Eu tinha pensado que vc tinha feito os dialogos do jogo com array ksksksksk. (dps vou assaltar a ideia dos diálogos.)
Eu entendi completamente a história skksksksks, ficou bem interessante. Deu até vontade de escrever agora ksksk, antigamente eu pagava uma de "Escritor", mas nunca fiz nada skksksksksksk. Mas com uma boa história (completa), dá para fazer a arte/ código / som, bem mais facilmente, pq saberiamos em que tipo de "clima" estaria as coisas, e oq queremos para o jogo. É basicamente um roteiro skksks.
Cara... Que explicação detalhada, MUITO obrigado! Eu consegui entender perfeitamente como ele funciona. Eu já até tinha mexido com alguns arquivos ini antes porém nunca tinha pesquisado a fundo pra ver como realmente funcionava, mas com a sua explicação esclareceu bastante coisa a respeito. Vou começar o quanto antes a olhar mais sobre, se eu tivesse estudado o assunto antes acredito que seria bem menos dor de cabeça pro pessoal tentar novamente caso o jogo dê pau. Me pareceu bem trabalhoso, mas isso é o de menos, as possibilidades que tem pra fazer quebra de quarta parede com isso são gigantes (eu amo fazer isso as vezes) e também de manipular melhor o jogo do jeito que a gente quiser, como gosto bastante de fazer histórias pros jogos, isso vai ser ótimo pra fazer cada vez mais ideias mirabolantes.
Em relação ao array, eu fiz usando alguns sim, foi difícil pra desgraça mas ficou funcional kkkkkk tem algumas gambiarras aqui e ali, mas tá funcionando direitinho (pode roubar a vontade, tem o evento do draw vazio lá mas foi gambiarra pro diálogo funcionar no draw gui, se você tirar ele o objeto vai ser desenhado dentro do próprio jogo mesmo que não bote nenhum código). Acredito que o meu maior erro no game foi ter tentando usar a estrutura de dados sem saber usar o array direito, deve ter sido isso que causou a má otimização que faz o jogo travar durante alguns bosses, só vejo essa explicação, mas posso estar errado.
Até hoje eu pago uma de "escritor" as vezes kkkkkkk sempre gostei bastante de fazer histórias também e mesmo que o tempo seja curto, eu tento pelo menos escrever alguma historinha pra fazer como você disse ai, ter uma base mais sólida sobre o clima do jogo, arte, sons, etc, fica bem mais fácil. Isso se tornou frequente principalmente depois que aprendi a fazer diálogos, os meus três primeiros jogos não tinham absolutamente nenhum, não que eu não quisesse fazer, até fiz a história, porém meus conhecimentos eram mais limitados e tive que me virar na gambiarra mesmo. E como você disse ai que gostava de escrever também, na próxima jam é uma boa se arriscar nisso, dependendo do tempo que tiver você pode elaborar algo mais simples ou complexo, depende do seu gosto e do tema da jam, claro. Ai você pega o primeiro dia pra pensar na ideia e em uma história por trás dessa ideia, depois disso, só anotar as partes principais do roteiro e ir criando as mecânicas aos poucos, finalizando com a arte e os efeitos sonoros.
Quanto a otimização do game ser provavelmente a estrutura de dados, vc lembrou de destruir a estrutura de dado após o objeto ser destruido/limpo da memoria(evento cleanup)?
Faz bastante tempo que eu parei de escrever. Mas leio muito ksksksksks, mas basicamente antigamente quando eu escrevia, acabava que a história parecia muito paia, crichê ksksksksksksk -> "Namorada morta... rapitada, e a procura por vigança/resgate", "Morre assim que arrumou a primeira namorada...", " Retornar no tempo, e fazer as coisas de forma diferente", "Reencarnar e surgir num mundo que permita ultrapassar o limite humano com ajuda de 'artes marciais' ", etc. Maioria bastante inspirada no que eu leio -> novel chinesa.
Quanto a "Quarta dimensão", eu até hj tenho minha dúvidas doq ela realmente seria, o que eu entendi disso é simplesmente -> o jogador tem o poder de reescrever a história/mudar o final, com base nas escolhas dele.
Pior que eu tenho quase certeza que não cara, se não me engano eu destruí no próprio evento que ele tava sendo executado. Tipo, ele era executado durante a colisão dos frames de ataque e após terminar, era destruído. Mas parando pra analisar, talvez eu tenha errado a ordem do código e ele ficou se acumulando ou algo parecido.
Mas essas ai são as melhores kkkkkkkk tipo, você pega uma história clichê e analisa como quebrar ela, cria uma expectativa na pessoa e no final vai lá e taca um plot que ela nunca ia imaginar na vida. Apesar de ser bem comum, ao meu ver são todas ideias bastante interessantes, então acho que vale a pena o investimento nelas. Acredito que você vai participar da próxima jam, né? Caso ainda permaneça com a ideia de criar histórias até lá, adoraria ver um game seu com foco em alguma dessas narrativas.
Sobre a "quarta dimensão" o que entendi sobre é que o próprio jogo ou algum personagem (ou vários) tem a capacidade de alterar o jogo ao seu favor com base na realidade, já que ele seria programado pra ter "consciência" de que está em um game, fazendo com que o contato entre o jogador e o personagem seja muito mais imersivo.