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

Mapeamento Colossal

Iniciado por Sasaki, 06/03/2020 às 09:53

06/03/2020 às 09:53 Última edição: 07/03/2020 às 14:41 por Sasaki
Mapeamento
Colossal


Apresentação


O presente mapa está sendo inspirado pela ambientação dos filme: 'Maze Runner' e animes: 'The promised Neverlad' e 'Attack on Titan', bem como em ilustrações de ilhas/plataformas de terra flutuantes. Segue os exemplares:

Spoiler
Maze Runner:
Spoiler


 
[close]
Animes:
Spoiler






[close]
Outras referências:
Spoiler




[close]
[close]

Informações


Atualmente o mapa apresenta uma dimensão de 130x130; está sendo elaborado a partir dos gráficos provenientes do RMXP, com pequenas alterações. Sua versão final deve ser semelhante as imagens, isto é, uma ilha/plataforma flutuante cercada por uma grande muralha. Elementos como árvores e outros objetos serão inseridos depois, visto que, serão criados a partir de eventos. Ao conclui-lo, será incorporado ao RMVXace na forma de paralax.

Explicações


Essa seção tem o intuito de apresentar as justificativas das escolhas tomadas acerca do mapa em si e sua aplicabilidade no projeto.

Se tratando de um jogo do gênero "sobrevivência", que apresenta como plano de fundo uma mecânica de interação entre populações. A qual envolverá comportamentos predatórios, mutualísticos, entre outros, bem como uma série de parâmetros como: Natalidade, mortalidade, extinção, etc. Faz-se necessário a construção de um único e extenso mapa, em virtude de sua continuidade e, além disso, verossimilhança a um ambiente natural, o qual, progressivamente modifica-se em microrregiões e seus respectivos intercâmbios. Não obstante, o mesmo assume um carácter exploratório, uma vez que, eventos (animais) e o jogador precisarão passear  diversas regiões em busca de recursos para sua sobrevivência.

Problemáticas


Como bem alertado nos comentários, há uma série de problemas que podem surgir durante o desenvolvimento do jogo. Como resolver isso?

A probabilidade do projeto ter problemas com lag, seja por conta da extensão do mapa ou pela imensa quantidade de eventos, é alta. Uma possível solução seria a fragmentação desse mapa em vários outros menores, no entanto, como ficariam os eventos móveis que precisam passear por ele?
O script sugerido superaria estas dificuldades?
Poderia haver uma outra possibilidade? Isto é, desenvolver um mapa extenso, seja ele composto por um único ou vários mapas menores, e ainda possibilitar a transição dos eventos por todo ele. Além de, obviamente, minimizar o lag produzido?

Mídias


Aqui estarão as imagens e vídeos de todo o processo de elaboração do mapa.

Spoiler

Imagens:
Spoiler
OBS.: Para visualizar as imagens em tamanho real basta clicar sobre elas e depois neste ícone, na nova página que será aberta.

[close]
Vídeos:
Spoiler
[close]
[close]

Fica um pouco complicado avaliar pelo tamanho. Sem zoom dá pra perceber pouca coisa, com ele fica distorcido. A pergunta é por que o mapa precisa ser único? Tipo, se for uma região explorável até é compreensível, mas você pode fazer teleportes sem fade que dão a impressão de um mapa único. Ou usar um daqueles scripts que colam mapas menores em um maior, me esqueci do nome mas está em algum canto do fórum. Digo porque estou pressentindo o lag daqui mesmo sem saber quais serão as camadas superiores - árvores, construções e afins. Se não travar pelo tamanho vai travar pelos eventos. E se houver alguma pirotecnia ou iluminação, suspeito que já terei problemas pra rodar.

Da formação em si, não sei quais trechos estão finalizados e quais você ainda vai polir, então tem vários tiles fora do lugar. Principalmente nos cantinhos das paredes no terreno e na água (se não me engano, existem tiles de água para as bordas arredondadas também). De toda forma, admiro quem tem ânimo pra pegar cenários deste tamanho de uma vez. QUando puder, poste um vídeo do personagem andando por aí para termos uma ideia melhor da dimensão e da performance. o/

Mesmo fazendo os objetos do cenário através de Eventos você estará bloqueado a usar apenas tiles do tileset que seu mapa pertence. Pra mim isso acaba estragando um pouco a variedade que os mapas colossais podem apresentar, sem contar que provavelmente com os sistemas que você quer usar e as toneladas de eventos interativos como árvores, moitas, animais e outros provavelmente vai criar uma série de complicações em framerate e estabilidade. A distância do print deixa tudo muito bonito, mas seria legal ver in-game pra ter uma noção melhor. No geral a única coisa que consigo perceber até então é que a paleta de cores está ótima. No aguardo para ver as próximas versões, abraço  :coffee:

06/03/2020 às 23:29 #3 Última edição: 07/03/2020 às 14:12 por Sasaki
Acabei refazendo o post inteiro e modifiquei muita coisa, tanta que nem sei se ele pode ficar na seção de mapeamento. Por isso, peço encarecidamente que se algum moderador perceber que o mesmo não se enquadra mais, transfira para o local adequado. Obrigado!
 
Citação de: Corvo online 06/03/2020 às 10:10
Fica um pouco complicado avaliar pelo tamanho. Sem zoom dá pra perceber pouca coisa, com ele fica distorcido. A pergunta é por que o mapa precisa ser único? Tipo, se for uma região explorável até é compreensível, mas você pode fazer teleportes sem fade que dão a impressão de um mapa único. Ou usar um daqueles scripts que colam mapas menores em um maior, me esqueci do nome mas está em algum canto do fórum. Digo porque estou pressentindo o lag daqui mesmo sem saber quais serão as camadas superiores - árvores, construções e afins. Se não travar pelo tamanho vai travar pelos eventos. E se houver alguma pirotecnia ou iluminação, suspeito que já terei problemas pra rodar.

Da formação em si, não sei quais trechos estão finalizados e quais você ainda vai polir, então tem vários tiles fora do lugar. Principalmente nos cantinhos das paredes no terreno e na água (se não me engano, existem tiles de água para as bordas arredondadas também). De toda forma, admiro quem tem ânimo pra pegar cenários deste tamanho de uma vez. QUando puder, poste um vídeo do personagem andando por aí para termos uma ideia melhor da dimensão e da performance. o/
Agora fiquei bem preocupado quanto a questão da lag... Bom, vou buscar o script que você mencionou e ver se cobre as necessidades do projeto.
Tentarei postar uma imagem com uma qualidade melhor e, aliás, você poderia circular as áreas com tiles incompletos? Acabei não entendendo muito bem o que você quis dizer. Desculpa rsrs...
Quanto ao vídeo, ainda não tive tempo para fazer isso, mas em breve postarei!
Muito obrigado pela avaliação.

@Edit: Já postei o vídeo, infelizmente a qualidade dele não ficou tão boa, mas acredito que serve.

Citação de: Reward online 06/03/2020 às 13:42
Mesmo fazendo os objetos do cenário através de Eventos você estará bloqueado a usar apenas tiles do tileset que seu mapa pertence. Pra mim isso acaba estragando um pouco a variedade que os mapas colossais podem apresentar, sem contar que provavelmente com os sistemas que você quer usar e as toneladas de eventos interativos como árvores, moitas, animais e outros provavelmente vai criar uma série de complicações em framerate e estabilidade. A distância do print deixa tudo muito bonito, mas seria legal ver in-game pra ter uma noção melhor. No geral a única coisa que consigo perceber até então é que a paleta de cores está ótima. No aguardo para ver as próximas versões, abraço  :coffee:
Então Reward, acho que dá pra modificar a variedade de objetos por eventos, uma vez que posso utilizar os gráficos dos Characters. Eu já tenho alguns charset de arvores prontos que fiz no photoshop. Isso resolveria o problema que você mencionou?
A respeito da quantidade de eventos, acho que pode ser um problema mesmo.
Não sei se seria uma solução, mas o Brandt estava me ajudando com um script que replica eventos, então... Isso melhoraria? Afinal é apenas um único evento, não é mesmo? Kkkkk...

Acho que meu maior dificuldade é não ter experiência suficiente para identificar melhor tais problemas, bem como saber como resolvê-los.
Muito obrigado pelo comentário!

Tiles incompletos são... tiles incompletos.
[close]

Entendi o que você quer fazer agora. Sua proposta não parece ser simples, então arrisco dizer que o mapa está é pequeno. As populações não terão espaço para se desenvolver, buscar recursos e afins. E o RPG Maker não vai colaborar. Eu acho antilags uma solução bem porca, porque se o jogo está precisando deles já tem coisa errada. De toda forma, não custa testar. Recomendo um chamado Effectus, era o melhor código do tipo pro Ace durante muito tempo, mas não sei se ainda vendem licenças. Sim, ele é pago, mas era coisa de quinze ou vinte dólares, acho.

Também pode fazer o jogo baseado no RGD - tem tópico sobre na área de programação -, mas vai fazer pouca diferença. O foco dele é permitir mais liberdade pra programação de efeitos visuais em geral, porém, também não custa testar. Sobre dividir os mapas, resolve a maior parte do lag, mas você é quem vai precisar estudar a melhor forma dos NPCs transitarem e programar soluções pros problemas que encontrar. Por padrão, os eventos do RM nem caminham por outros eventos. Seria interessante até pesquisar sobre como funciona a criação de um mapa por tiles pra ter uma boa base. Tó um pontapé superficialmente inicial.

Enfim, mapear o cenário em si vai ser o menor dos problemas. Mas quanto mais complicado for, mais você aprende durante o processo e melhor será o resultado.

07/03/2020 às 16:34 #5 Última edição: 07/03/2020 às 16:37 por Sasaki
Citação de: Corvo online 07/03/2020 às 15:02
Tiles incompletos são... tiles incompletos.
[close]

Entendi o que você quer fazer agora. Sua proposta não parece ser simples, então arrisco dizer que o mapa está é pequeno. As populações não terão espaço para se desenvolver, buscar recursos e afins. E o RPG Maker não vai colaborar. Eu acho antilags uma solução bem porca, porque se o jogo está precisando deles já tem coisa errada. De toda forma, não custa testar. Recomendo um chamado Effectus, era o melhor código do tipo pro Ace durante muito tempo, mas não sei se ainda vendem licenças. Sim, ele é pago, mas era coisa de quinze ou vinte dólares, acho.

Também pode fazer o jogo baseado no RGD - tem tópico sobre na área de programação -, mas vai fazer pouca diferença. O foco dele é permitir mais liberdade pra programação de efeitos visuais em geral, porém, também não custa testar. Sobre dividir os mapas, resolve a maior parte do lag, mas você é quem vai precisar estudar a melhor forma dos NPCs transitarem e programar soluções pros problemas que encontrar. Por padrão, os eventos do RM nem caminham por outros eventos. Seria interessante até pesquisar sobre como funciona a criação de um mapa por tiles pra ter uma boa base. Tó um pontapé superficialmente inicial.

Enfim, mapear o cenário em si vai ser o menor dos problemas. Mas quanto mais complicado for, mais você aprende durante o processo e melhor será o resultado.
Muito obrigado pela resposta!
Bem, o que posso dizer? Foi definitivamente um tapa na minha cara rsrs... É interessante de se notar que quanto menos experientes somos mais coisas mirabolantes pensamos em produzir, não é mesmo!?
Eu não acreditava que isso seria algo tão difícil assim... Mas ver alguém que tem experiência no assunto assumir tal dificuldade me faz pensar duas vezes mais sobre o que desejo produzir.
Obrigado por todas as dicas e, sinceramente, gostaria mesmo de pegar esse desafio para aprender bastante e aplicar em meu projeto, porém eu tenho prazos a cumprir e um TCC a entregar, então devo buscar maneiras mais simples pra alcançar o que quero.
Acho que seu comentário me fez abrir os olhos a outra possibilidade, que seria: A fragmentação desse mapa em outros menores e em cada um deles aconteceria, se assim posso dizer, um fragmento da dinâmica de populações. O que quero dizer é que cada "fragmapa" seria responsável por sua própria dinâmica. Tendo até mesmo as mesmas presas e predadores. E cada mudança gerada em cada um deles afetaria nas populações em geral.

Por exemplo: teríamos coelhos no mapa central e nos arredores, cada morte de coelho, em quaisquer mapas, implicaria na diminuição da população global dos mesmos.
Acredito que dessa forma não seria mais necessário fazer alguns predadores migrarem para outros mapas, eles atuariam apenas em seu próprio fragmento.
Assim evitaria vários problemas.

Pensando na questão da jogabilidade, acredito que o jogador iria explorando as áreas gradativamente, posto que teria recursos limitados em cada uma delas. Assim, caso os recursos de um fragmento acabassem seria necessário buscar por outros fragmentos.
Obviamente cada mapa teria sua variedade de recursos específicos e isso forçaria o jogador andar pelos mapas, em busca de outros recursos.

Não sei se vai funcionar, mas até que eu gostei desse novo modelo.
O que me diz?

Resolve, e muito bem. Separar o problema em probleminhas ajuda bastante, agora você só precisa se preocupar com os cenários menores. Se eles funcionarem individualmente, funcionarão juntos. Fugindo um pouco do assunto do mapa, veja bem. Eu recomendo você fazer uns testes das mecânicas para descobrir qual o tamanho ideal, quantidade de recursos e indivíduos. Será a parte mais chatinha.

Demorei para comentar porque fui fazer uns testes. Queria ter algum exemplo para simularmos a situação. Num cenário simples (um tipo de criatura, N recursos gerados por turno e nenhuma interferência) já tive problemas. Comecei com três indivíduos e dez unidades de comida, cada indivíduo consumindo uma ou duas por turno.

Código de exemplo (Python)
import random

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# CREATURE
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Creature:

    def __init__(self, health):
        self.health = health

    def eat(self):
        if self.health >= 5:
            pass
        else:
            self.health += random.randint(1, 2)

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# FOOD
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Food:

    def __init__(self):
        pass

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Habitat
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Habitat:

    def __init__(self, creatures, food):
        self.creatures = creatures
        self.food = food

    def update_creatures(self):
        counter = 0
        self.generate_new_creature(counter)
        for n in self.creatures:
            if self.food != list():
                self.creatures[counter].eat()
                self.food.pop()
            else:
                self.creatures[counter].health -= random.randint(1, 2)
            self.kill_creatures()
            counter += 1

    def kill_creatures(self):
        counter = 0
        for creature in self.creatures:
            if creature.health <= 0:
                del self.creatures[counter]
            counter += 1

    def generate_new_creature(self, counter):
        if counter % 3 == 0:
            self.creatures.append(Creature(random.randint(2, 3)))

    def update_food(self, counter):
        if counter % 2 == 0:
            for times in range(len(self.food) + 2,len(self.food) - 2):
                self.food.append(Food())

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# MANAGER
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Generate First Creatures:
creatures = []
for i in range(3):
    creatures.append(Creature(random.randint(2, 3)))

# Generate Initial Food:
food = []
for i in range(10):
    food.append(Food())

# Create Habitat
habitat = Habitat(creatures, food)

# Start
counter = 0
while True:
    counter += 1
    option = input("Show status? <y/n> ")
    if option != "n":
        print("Habitat has {0} creatures:".format(len(habitat.creatures)))
        for creature in habitat.creatures:
              print("Creature Health: {0}".format(creature.health))
        print("Habitat has {0} food:".format(len(habitat.food)))
    option = input("Continue? <y/n> ")
    if option != "n":
        habitat.update_creatures()
        habitat.update_food(counter)
        print("\n")
        continue
    else:
        break

input("Press anything to quit.")
[close]
Rolo de Registro de eventos
Show status? <y/n> 
Habitat has 3 creatures:
Creature Health: 3
Creature Health: 3
Creature Health: 2
Habitat has 10 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 4 creatures:
Creature Health: 4
Creature Health: 4
Creature Health: 3
Creature Health: 4
Habitat has 6 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 5 creatures:
Creature Health: 5
Creature Health: 5
Creature Health: 4
Creature Health: 5
Creature Health: 4
Habitat has 1 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 6 creatures:
Creature Health: 5
Creature Health: 4
Creature Health: 3
Creature Health: 4
Creature Health: 2
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 6 creatures:
Creature Health: 3
Creature Health: 2
Creature Health: 1
Creature Health: 3
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 5 creatures:
Creature Health: 1
Creature Health: 1
Creature Health: 2
Creature Health: 2
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 4 creatures:
Creature Health: 1
Creature Health: 1
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 3 creatures:
Creature Health: 1
Creature Health: 2
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 3 creatures:
Creature Health: 2
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 3
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 3 creatures:
Creature Health: 1
Creature Health: 2
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 3
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 3
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 1
Habitat has 0 food:
Continue? <y/n>
[close]

O mais perto de algum tipo de equilíbrio que consegui foi manter a população entre um e dois indivíduos. Note o pico de seis no começo, enquanto havia mais comida. Enfim, divaguei bastante, o tópico me deu vontade de brincar. Voltando ao ponto, sim. Quanto mais você conseguir dividir os mapas, melhor. Repito que, para gerar a sensação de um cenário maior, você pode usar teleportes sem fade que o jogador não notará se bem aplicados.

Citação de: Corvo online 08/03/2020 às 13:12
Resolve, e muito bem. Separar o problema em probleminhas ajuda bastante, agora você só precisa se preocupar com os cenários menores. Se eles funcionarem individualmente, funcionarão juntos. Fugindo um pouco do assunto do mapa, veja bem. Eu recomendo você fazer uns testes das mecânicas para descobrir qual o tamanho ideal, quantidade de recursos e indivíduos. Será a parte mais chatinha.

Demorei para comentar porque fui fazer uns testes. Queria ter algum exemplo para simularmos a situação. Num cenário simples (um tipo de criatura, N recursos gerados por turno e nenhuma interferência) já tive problemas. Comecei com três indivíduos e dez unidades de comida, cada indivíduo consumindo uma ou duas por turno.

Código de exemplo (Python)
import random

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# CREATURE
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Creature:

    def __init__(self, health):
        self.health = health

    def eat(self):
        if self.health >= 5:
            pass
        else:
            self.health += random.randint(1, 2)

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# FOOD
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Food:

    def __init__(self):
        pass

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# Habitat
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
class Habitat:

    def __init__(self, creatures, food):
        self.creatures = creatures
        self.food = food

    def update_creatures(self):
        counter = 0
        self.generate_new_creature(counter)
        for n in self.creatures:
            if self.food != list():
                self.creatures[counter].eat()
                self.food.pop()
            else:
                self.creatures[counter].health -= random.randint(1, 2)
            self.kill_creatures()
            counter += 1

    def kill_creatures(self):
        counter = 0
        for creature in self.creatures:
            if creature.health <= 0:
                del self.creatures[counter]
            counter += 1

    def generate_new_creature(self, counter):
        if counter % 3 == 0:
            self.creatures.append(Creature(random.randint(2, 3)))

    def update_food(self, counter):
        if counter % 2 == 0:
            for times in range(len(self.food) + 2,len(self.food) - 2):
                self.food.append(Food())

# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# MANAGER
# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

# Generate First Creatures:
creatures = []
for i in range(3):
    creatures.append(Creature(random.randint(2, 3)))

# Generate Initial Food:
food = []
for i in range(10):
    food.append(Food())

# Create Habitat
habitat = Habitat(creatures, food)

# Start
counter = 0
while True:
    counter += 1
    option = input("Show status? <y/n> ")
    if option != "n":
        print("Habitat has {0} creatures:".format(len(habitat.creatures)))
        for creature in habitat.creatures:
              print("Creature Health: {0}".format(creature.health))
        print("Habitat has {0} food:".format(len(habitat.food)))
    option = input("Continue? <y/n> ")
    if option != "n":
        habitat.update_creatures()
        habitat.update_food(counter)
        print("\n")
        continue
    else:
        break

input("Press anything to quit.")
[close]
Rolo de Registro de eventos
Show status? <y/n> 
Habitat has 3 creatures:
Creature Health: 3
Creature Health: 3
Creature Health: 2
Habitat has 10 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 4 creatures:
Creature Health: 4
Creature Health: 4
Creature Health: 3
Creature Health: 4
Habitat has 6 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 5 creatures:
Creature Health: 5
Creature Health: 5
Creature Health: 4
Creature Health: 5
Creature Health: 4
Habitat has 1 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 6 creatures:
Creature Health: 5
Creature Health: 4
Creature Health: 3
Creature Health: 4
Creature Health: 2
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 6 creatures:
Creature Health: 3
Creature Health: 2
Creature Health: 1
Creature Health: 3
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 5 creatures:
Creature Health: 1
Creature Health: 1
Creature Health: 2
Creature Health: 2
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 4 creatures:
Creature Health: 1
Creature Health: 1
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 3 creatures:
Creature Health: 1
Creature Health: 2
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 3 creatures:
Creature Health: 2
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 3
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 3 creatures:
Creature Health: 1
Creature Health: 2
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 3
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 3
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 3
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 1
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 1 creatures:
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 1
Creature Health: 2
Habitat has 0 food:
Continue? <y/n> 


Show status? <y/n> 
Habitat has 2 creatures:
Creature Health: 2
Creature Health: 1
Habitat has 0 food:
Continue? <y/n>
[close]

O mais perto de algum tipo de equilíbrio que consegui foi manter a população entre um e dois indivíduos. Note o pico de seis no começo, enquanto havia mais comida. Enfim, divaguei bastante, o tópico me deu vontade de brincar. Voltando ao ponto, sim. Quanto mais você conseguir dividir os mapas, melhor. Repito que, para gerar a sensação de um cenário maior, você pode usar teleportes sem fade que o jogador não notará se bem aplicados.

Dessa vez demorei um bocado pra responder ein!?
Depois da conversa que tivemos eu refleti um pouco mais e estou bem disposto a sacrificar parte de minhas ideias. Com muito pesar é claro. Ma fazer o que? É melhor ter um jogo simples e funcional do que ter algo mirabolante, mas todo bugado. Enfim, então decidi que deveria fazer apenas  único mapa de dimensões bem menores, a questão é saber bem aproveita-lo.
Também decidi fazer menos populações (População de árvores, como produtor primário; uma população de consumidores primários e outra de consumidores secundários, que serão os predadores dessa ultima). Se possível gostaria que os consumidores secundários influenciassem na taxa de natalidade dos produtores, somente se for possível.

Muito obrigado por sua dedicação em vir de mãos cheias e apresentar um esquema de simulação para embasar essas mecânica. Do que conversamos ficou claro para mim que você criou o parâmetro "Capacidade de suporte", estudado em ecologia. Ele é essencial para se saber qual o limite máximo de uma população. Agora só preciso testar e encontrar o ponte de equilíbrio adequado para meu jogo de um mapa apenas rsrsrs.

Eu fico muito feliz de ter se interessado na produção desses códigos, em certo ponto fico me sentindo útil aqui.
No mais só tenho a lhe agradecer.
Muito obrigado @Corvo por sua disponibilidade e eficiência.