seuqram Posted June 22, 2012 Report Share Posted June 22, 2012 Este é meu 1º topico aqui nesta parte... queria que voces me dessem algumas sugestoes e raciocinio de um gerador de terrenos 2d de um jogo que vou fazer. Chamasse Earth Dragon e preciso de que o jogo crie zonas de montanhas(relevo), arvores, oceanos, rios, grutas... se conhecem este jogo, minecraft, é um gerador destes que preciso mas 2d... só ainda fiz o menu: http://www.youtube.c...so&feature=plcp e conto com voces para a colaborão do projeto. Link to comment Share on other sites More sharing options...
pikax Posted June 22, 2012 Report Share Posted June 22, 2012 queres automaticamente ou queres ser tu a criar? Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast." Link to comment Share on other sites More sharing options...
seuqram Posted June 23, 2012 Author Report Share Posted June 23, 2012 queria que voces me dessem algumas sugestoes e raciocinio de um gerador de terrenos 2d de um jogo que vou fazer. automaticamente! Link to comment Share on other sites More sharing options...
pikax Posted June 23, 2012 Report Share Posted June 23, 2012 automaticamente! tens varias maneiras, crias uma matriz e vais gerando numeros, consoante o numero que gerou escolhes se e' terreno, agua, relva,etc Por muito mais que que estude só aprendo uma coisa, que ainda tenho muita coisa para aprender. A beleza de um código está em decompor problemas complexos em pequenos blocos simples. "learn how to do it manually first, then use the wizzy tool to save time." "Kill the baby, don't be afraid of starting all over again. Fail soon, learn fast." Link to comment Share on other sites More sharing options...
xtrm0 Posted June 23, 2012 Report Share Posted June 23, 2012 Se quiseres criar um jogo como o terraria é impossível guardares a matriz toda em memória ao mesmo tempo, e se for gerada aleatoriamente, o mapa será um pouco impossível de jogar. Terraria utiliza um algoritmo procedural (http://en.wikipedia.org/wiki/Procedural_generation) para gerar os terrenos. Nao sei exatamente como funciona o do terraria, mas o seguinte pseudolgoritmo devera funcionar para o que tu queres. Algoritmo A 1 - Geras uma seed aleatória que ajudara na tomada de decisões na geração do mapa. 2 - A coluna (0,Y) será sempre igual, consoante a que deres ao jogo. 3 - Todas as colunas (a, Y) sao geradas consoante as seguintes variáveis: I) a coluna (a-1, Y) ou consoante a coluna (a+1, Y); II) a seed; III) a posição da coluna atual IV) os blocos que se encontram a coluna atual. 4 - a forma degredar consoante a coluna anterior devera ser feita consoante as alturas a que queres que haja ar, terra, diamantes, etc... E devera ser possível de a partir da coluna(a, Y) gerar (a-1, Y) e vice-versa. Assim, basicamente usas o algoritmo A para gerares o terreno original, sem nunca ter sido alterado pelo jogador. Depois disso, sempre que o jogador fizer uma alteração no mapa (destruir ou puser um bloco), guardas as alterações num ficheiro que diz basicamente: (x,y,iddobloco), representando que o bloco(x,y) foi alterado e que agora se encontra um bloco do id descrito na sua posição. Quando começares a abrir áreas que já foram editadas pelo jogador no jogo, terás de fazer o seguinte: I)Geras com o algoritmo A a coluna inicial e de seguida fazes as substituições necessárias. II) tens de manter em memória a coluna inicial para que possa ser gerada a coluna seguinte. Após conseguires ter o gerador de mapas a fazer o que foi descrito a cima, terás de optimizá-lo para evitar lag. Pelo que me apercebi ao abrir a pasta do minecraft, este faz-lo de duas maneiras: (adaptado para duas dimensões): 1 - Cada alteração das colunas é organizada em ficheiros diferentes para minimizar a pesquisa por edições na coluna atual. Assim, por exemplo, todos as alterações entre as colunas de abcissa 0 e 999 ficariam no ficheiro 0.map, todas as alterações entre as colunas 1000 e 1999 no 1.map, entre -1 e -999 no -0.map, etc. 2 - Os ficheiro encontrasse comprimidos para poupar espaço no disco e sao depois carregados pelo jogo consoante necessário. 3- Quando carregados, sao organizados por ordem de ordenada, seguida de ordem de abcissa, de modo a diminuir a complexidade das pesquisas. Sei que esta poderá não ser a melhor explicação, mas ao menos orienta-te mais ou menos para a direcção certa. <Signature goes here> Link to comment Share on other sites More sharing options...
pmg Posted June 23, 2012 Report Share Posted June 23, 2012 Le um artigo do Paul Martz sobre geracao fractal de terreno. Talvez te de ideias para o que pretendes. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código! Link to comment Share on other sites More sharing options...
seuqram Posted June 23, 2012 Author Report Share Posted June 23, 2012 meu mapa esta numa matriz de 1000 100 é de mais?de menos? Link to comment Share on other sites More sharing options...
Warrior Posted June 23, 2012 Report Share Posted June 23, 2012 Depende do jogo que estás a criar, é impossível responder a essa pergunta assim. Link to comment Share on other sites More sharing options...
xtrm0 Posted June 23, 2012 Report Share Posted June 23, 2012 Essa matriz de 100x1000 é impossivel de renderizar toda de uma vez ao mesmo tempo, sem utilizares optimizações. Sao 100.000 rectângulos. Uma forma de a utilizares, seria renderizares apenas os blocos que o jogador pode ver a cada passo do jogo. Se o mapa todo for apenas essa matriz (que fica bastante pequeno se os quadrados forem do tamanho dos do terraria), então podes gerar apenas o terreno consoante o método que o pmg deu, e depois guardares todos num ficheiro, que fica com um tamanho de poucos mb (menos de 1mb). Se quiseres um mapa maior, então nao podes guardares o mapa todo num ficheiro, e tens de arranjar um metodo como o que eu tentei descrever, ou utilizares o modo de gerar mapas do pmg, em combinação com seeds que vais guardando em ficheiros. <Signature goes here> Link to comment Share on other sites More sharing options...
seuqram Posted June 23, 2012 Author Report Share Posted June 23, 2012 então meto o mapa em 1 ficheiro? e depois vai lendo e escrevendo ao longo das modificações? Link to comment Share on other sites More sharing options...
xtrm0 Posted June 24, 2012 Report Share Posted June 24, 2012 Depende o mapa total e de 100x1000 ou nao? Se for então quando o jogo inicia geras o mapa/carregas de um ficheiro e manténs o mapa em memória. Depois, gravas de volta para o ficheiro sempre que o jogador puser em pausa ou jogo, ou sempre que o jogador sair do jogo. <Signature goes here> Link to comment Share on other sites More sharing options...
seuqram Posted June 24, 2012 Author Report Share Posted June 24, 2012 (edited) gravas de volta para o ficheiro sempre que o jogador puser em pausa não posso guardar só quando o jogador sair? Edited June 24, 2012 by seuqram Link to comment Share on other sites More sharing options...
xtrm0 Posted June 24, 2012 Report Share Posted June 24, 2012 Claro que podes. É só para se ocorrer algum bug o jogador não perder o jogo todo. <Signature goes here> Link to comment Share on other sites More sharing options...
seuqram Posted June 25, 2012 Author Report Share Posted June 25, 2012 ainda não comecei o gerador,depois quando começar digo algo! Link to comment Share on other sites More sharing options...
seuqram Posted June 27, 2012 Author Report Share Posted June 27, 2012 (edited) vou começar! vejam como esta o menu agora! http://www.youtube.com/watch?v=5kGaJFjN3PQ&feature=plcp comentem no video e no tópico do jogo: http://www.portugal-a-programar.pt/topic/54674-c-earth-dragon/ Edited June 27, 2012 by seuqram Link to comment Share on other sites More sharing options...
Flinger Posted June 27, 2012 Report Share Posted June 27, 2012 Le um artigo do Paul Martz sobre geracao fractal de terreno. Talvez te de ideias para o que pretendes. Está bem interessante o artigo... Cheguei a gerar terrenos usando mapas de alturas, com interpolação, em OpenGL, mas as imagens eram geradas manualmente. Também tinha dado jeito na altura o mapa de texturas 😛 . Paciência, agora que está, está 😄 Link to comment Share on other sites More sharing options...
seuqram Posted June 27, 2012 Author Report Share Posted June 27, 2012 é melhor não fazer as cavernas :'( só se eu sortear tipo uns explosivos e rebentarem,faz uma caverna... há algum método melhor? Link to comment Share on other sites More sharing options...
pmg Posted June 28, 2012 Report Share Posted June 28, 2012 Podes gerar o terreno e a(s) caverna(s) em duas fases distintas. Por exemplo metes o terreno com altitudes entre -100 e 8000 e a(s) caverna(s) em altitudes entre -200 e -1000. What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código! Link to comment Share on other sites More sharing options...
seuqram Posted June 28, 2012 Author Report Share Posted June 28, 2012 o problema é como faço a caverna :/ Link to comment Share on other sites More sharing options...
pmg Posted June 28, 2012 Report Share Posted June 28, 2012 Se te chega um "buraco" (ou mais) para a caverna, podes fazer como o mapa do Paul Martz, mas em vez de cada valor calculado representar uma altura, representa buraco ou rocha consoante esteja acima ou abaizo dum valor. Ao variares este valor varias o tamanho do buraco (e a quantidade de buracos). What have you tried? Não respondo a dúvidas por PM A minha bola de cristal está para compor; deve ficar pronta para a semana. Torna os teus tópicos mais atractivos e legíveis usando a tag CODE para colorir o código! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now