Entrar
Últimos assuntos
» Problema ao entrar por uma porta e voltar por elapor aminaro Hoje à(s) 10:08
» Alguém aqui já ganha dinheiro com seus games?
por theguitarmester Ter 30 Abr 2024, 11:43
» Colisões não funcionando
por theguitarmester Ter 30 Abr 2024, 10:16
» Como ajustar velocidade de cada frame da animação no game maker
por pequetux Sex 26 Abr 2024, 16:45
» Preciso de ajuda
por AftonDuGrau Dom 21 Abr 2024, 20:18
» Como faz o evento drawn GUI, não se repetir?
por aminaro Sex 19 Abr 2024, 20:30
» PROBLEMAS COM FÍSICAS DE ÁGUA
por aminaro Ter 16 Abr 2024, 10:07
» Retorno da GMBR!!!
por Ralphed Sex 12 Abr 2024, 22:45
» JOGADOR PARANDO NO AR QUANDO ATACA
por aminaro Qua 10 Abr 2024, 13:51
» Problemas com texto interativo
por Kaaru72 Dom 07 Abr 2024, 11:31
» Erro escondido e indecifrável
por dev_gabize.azv Qui 04 Abr 2024, 10:11
» Mudar cor de apenas uma palavra
por Ralphed Sáb 30 Mar 2024, 00:39
» Procuro Programador de game maker
por Wou Sex 15 Mar 2024, 10:27
» Mod APK
por gamerainha Qua 13 Mar 2024, 06:30
» Aceito pedidos de sprites (Com exemplos meus)
por Sevilha Qua 28 Fev 2024, 12:17
» Inventário simples
por Isquilo_Roedor Qui 22 Fev 2024, 15:18
» Problemas na programaçnao de inimigo [jogo DOOM LIKE]
por Black Mirror Dom 11 Fev 2024, 13:34
» ANDROID MULTI TOUCH
por DiegoBr Dom 04 Fev 2024, 12:13
» Servidor de Discord do fórum?
por Lighter Sáb 27 Jan 2024, 17:18
» Save e Load Json
por Klinton Rodrigues Qui 25 Jan 2024, 11:12
» Colisão com mais de um objeto
por aminaro Seg 22 Jan 2024, 15:02
» Oi sou novo aqui
por Thiago Silveira Alexandre Sáb 20 Jan 2024, 20:55
» Como acessar conteudo comprado no marketplace
por macmilam Sex 19 Jan 2024, 07:42
» Devlogs em vídeos do Block Room
por Joton Seg 15 Jan 2024, 16:56
» ACERVO GMBR MAGAZINE
por Joton Qui 11 Jan 2024, 19:21
Criação de caminho em sala isoladas
3 participantes
GMBR :: Ensine & Aprenda :: Perguntas e Respostas :: Game Maker :: GMS:Windows
Página 1 de 1
Criação de caminho em sala isoladas
Olá pessoal, estou precisando de ajuda para melhorar um código que fiz recentemente através de um site de um gringo(link do post: https://refreshertowel.games/2021/01/19/procedural-generation-in-gms-3-cellular-automata/). Ele ensina a fazer um mapa procedural, mas eu gostaria de melhorar ele, vou colocar uma imagem para melhor explicação:
como podem ver, esse mapa foi criado e existem algumas salas isoladas que não cotem saídas, e minha ideia era conectar essas salas com pequenos caminhos e corredores mas eu não sei como posso fazer isso ou por onde começar e por isso vim aqui pedir ajuda a como posso fazer isso, quero deixa claro que estou usando um sistema de matriz para posicionar os blocos no mapa
fico grato a qualquer ajuda ou ideia
como podem ver, esse mapa foi criado e existem algumas salas isoladas que não cotem saídas, e minha ideia era conectar essas salas com pequenos caminhos e corredores mas eu não sei como posso fazer isso ou por onde começar e por isso vim aqui pedir ajuda a como posso fazer isso, quero deixa claro que estou usando um sistema de matriz para posicionar os blocos no mapa
fico grato a qualquer ajuda ou ideia
PaladinoMaluko- Data de inscrição : 08/01/2021
Reputação : 0
Número de Mensagens : 15
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Re: Criação de caminho em sala isoladas
Opa, sobre geração procedural, tem um link bem útil que o @RodrigoSantiago um dia me passou:
https://medium.com/@Scriptie/3d-maze-generation-in-unity-ec36415b659a
E nesse tópico, eu achei referencia pra esse muito bacana que é cheio de algoritmos para labirinto:
https://www.jamisbuck.org/mazes/
https://medium.com/@Scriptie/3d-maze-generation-in-unity-ec36415b659a
E nesse tópico, eu achei referencia pra esse muito bacana que é cheio de algoritmos para labirinto:
https://www.jamisbuck.org/mazes/
Use geração semi-procedural
Cara, eu criei um sistema de geração semi-procedural de código super simples, no qual vc só precisa de uma ou duas variáveis randômicas para sortear as peças e alguns objetos e sprites, com alguns frames dentro.
Comecei os testes em 2009, no flash, e aperfeiçoei no GM, em 2016.
Eis um video demonstrativo da bagaça em ação, no flash:
Aqui eis como está hoje o método, no GM:
Explicando detalhes
https://gamejolt.com/games/navinha-little-ship/192960
Em miúdos, funciona assim:
No evento CREATE, vc seta uma variável que verificará a fase do game, aqui chamada de "x"; Crie também uma variável que definirá o tipo de mapa, aqui chamada de "e"; Uma terceira variável sorteará um frame específico dentro de um sprite específico, a ser exibido na tela. Essas três variávies serão responsáveis por sortear as imagens que formarão o mapa.
No evento STEP, o algoritmo fica então assim:
if(stage is number(x)){
environment_group=(e)
if(environment==(e)){
piece_of_map=(random(40);
}
}
Onde:
x = o número de fases, entre 1 a 40 (ou o número de estágios secretos) no caso esse aqui tem 40 fases, use o número de fases do seu projeto;
e = o número do grupo de ambiente. Organizei em alguns grupos, como segue:
1 = oceano com ilhas
2 = oceano sem ilhas
3 = oceano gelado com ilhas cobertas de neve
4 = Antártida
5 = deserto com dunas
6 = deserto com montanhas rochosas
7 = pântano
8 = lava
9 = selva
10 = lua/espaço
Cada grupo de ambiente é um sprite composto por 40 frames, daí a numeração de 40 no algoritmo (mas vc pode usar o nº que quiser, ok?).
No início do jogo, a variável (e) é pré-definida pelo autor, pois o estágio mostra suas propriedades ao jogador, quando o estágio é selecionado.
Se o mapa mostra a África e o jogador o seleciona, o programa atribui a (e) o valor 5, 6 ou 9, dependendo da região do mapa. No entanto, a variável para pedaço do mapa é escolhida aleatoriamente pela CPU e seu valor é obrigatório entre 1 e 40.
Se você tentar usar este sistema, você pode alterar o valor das peças, não é obrigatório você usar 40. Eu uso esse número porque é o suficiente para mim, 40 peças diferentes multiplicadas por 10 cenários diferentes multiplicados por 6 sprites no jogo geram também muitos cenários dinâmicos, é muito massa vê-lo funcionando!
Deixei o game rodando por duas horas, e não repetiu NENHUM cenário exatamente como mostrado da primeira vez. O programa combina as partes já motandas aleatoriamente em outras novas, também aleatórias. Confiram:
Comecei os testes em 2009, no flash, e aperfeiçoei no GM, em 2016.
Eis um video demonstrativo da bagaça em ação, no flash:
Aqui eis como está hoje o método, no GM:
Explicando detalhes
https://gamejolt.com/games/navinha-little-ship/192960
Em miúdos, funciona assim:
No evento CREATE, vc seta uma variável que verificará a fase do game, aqui chamada de "x"; Crie também uma variável que definirá o tipo de mapa, aqui chamada de "e"; Uma terceira variável sorteará um frame específico dentro de um sprite específico, a ser exibido na tela. Essas três variávies serão responsáveis por sortear as imagens que formarão o mapa.
No evento STEP, o algoritmo fica então assim:
if(stage is number(x)){
environment_group=(e)
if(environment==(e)){
piece_of_map=(random(40);
}
}
Onde:
x = o número de fases, entre 1 a 40 (ou o número de estágios secretos) no caso esse aqui tem 40 fases, use o número de fases do seu projeto;
e = o número do grupo de ambiente. Organizei em alguns grupos, como segue:
1 = oceano com ilhas
2 = oceano sem ilhas
3 = oceano gelado com ilhas cobertas de neve
4 = Antártida
5 = deserto com dunas
6 = deserto com montanhas rochosas
7 = pântano
8 = lava
9 = selva
10 = lua/espaço
Cada grupo de ambiente é um sprite composto por 40 frames, daí a numeração de 40 no algoritmo (mas vc pode usar o nº que quiser, ok?).
No início do jogo, a variável (e) é pré-definida pelo autor, pois o estágio mostra suas propriedades ao jogador, quando o estágio é selecionado.
Se o mapa mostra a África e o jogador o seleciona, o programa atribui a (e) o valor 5, 6 ou 9, dependendo da região do mapa. No entanto, a variável para pedaço do mapa é escolhida aleatoriamente pela CPU e seu valor é obrigatório entre 1 e 40.
Se você tentar usar este sistema, você pode alterar o valor das peças, não é obrigatório você usar 40. Eu uso esse número porque é o suficiente para mim, 40 peças diferentes multiplicadas por 10 cenários diferentes multiplicados por 6 sprites no jogo geram também muitos cenários dinâmicos, é muito massa vê-lo funcionando!
Deixei o game rodando por duas horas, e não repetiu NENHUM cenário exatamente como mostrado da primeira vez. O programa combina as partes já motandas aleatoriamente em outras novas, também aleatórias. Confiram:
tiaoferreira- Data de inscrição : 09/11/2013
Reputação : 0
Número de Mensagens : 3
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Use geração semi-procedural (parte 2)
Esse exemplo aí eu usei num jogo de nave com scroll vertical. Para fazer jogos de tela fixa é ainda melhor, é só eliminar as linhas do scroll e setar a "aleatoriedade" de montagem do mapa nos eixos X e Y (no exemplo atual muda só o X).
Resumindo:
Quando o jogo começa, o código sorteia o número de um frame, dentro de um sprite; Feito isso, sorteia a posição no eixo X em que esse sprite deverá aparecer. s sprites vão descendo a tela e quando chegam ao limite, são eliminados e ressurgem na linha de origem, sorteando-se então um novo sprite. No caso do exemplo em tela, que é de scroll vertical, todos os sprites que compõem o mapa surgem na mesma linha, fora da tela e vão descendo. para sua sala fixa, elimine o scroll e sorteie aleatoriamente os eixos X e Y.
O código é super simples, acho que não dá dez linhas, tanto no GM, quanto no flash, e os resultados são incríveis. Estou tentando adaptar pro Mega Drive e pro MSX.
Resumindo:
Quando o jogo começa, o código sorteia o número de um frame, dentro de um sprite; Feito isso, sorteia a posição no eixo X em que esse sprite deverá aparecer. s sprites vão descendo a tela e quando chegam ao limite, são eliminados e ressurgem na linha de origem, sorteando-se então um novo sprite. No caso do exemplo em tela, que é de scroll vertical, todos os sprites que compõem o mapa surgem na mesma linha, fora da tela e vão descendo. para sua sala fixa, elimine o scroll e sorteie aleatoriamente os eixos X e Y.
O código é super simples, acho que não dá dez linhas, tanto no GM, quanto no flash, e os resultados são incríveis. Estou tentando adaptar pro Mega Drive e pro MSX.
tiaoferreira- Data de inscrição : 09/11/2013
Reputação : 0
Número de Mensagens : 3
Prêmios :
x 0 x 0 x 0
x 0 x 0 x 0
x 0 x 0 x 0
Tópicos semelhantes
» ParamnésiA "A sala" [terror]
» botão de restart level n pega
» Aumentado o tamanho da sala no 3D
» Globus: Construa seu Caminho
» Escolher menor caminho
» botão de restart level n pega
» Aumentado o tamanho da sala no 3D
» Globus: Construa seu Caminho
» Escolher menor caminho
GMBR :: Ensine & Aprenda :: Perguntas e Respostas :: Game Maker :: GMS:Windows
Página 1 de 1
Permissões neste sub-fórum
Não podes responder a tópicos
|
|