• Do not use Discord to host any images you post, these links expire quickly! You can learn how to add images to your posts here.

Idea Simulating an Ecosystem in Essentials

Zardae

Novice
Member
Joined
Aug 21, 2017
Posts
14
Disclaimer: This is not a help thread. If someone has ideas/suggestions they are very welcome, but in theory this is probably me rambling about ideas/progress.

I got the following idea to simulate a Pokémon Ecosystem in Essentials. As a non-native English speaker I feel like I need to explain myself more:
I want the game to generate a Pokémon population for each location at the beginning. These Pokémon then grow, migrate, mate, lay eggs, hatch eggs, and so on.
I won't simulate every single Pokémon of course, that would probably break RMXPs limits "slightly".

How do I want to go about it?
I want to create a PBS File containing the initial population for each location.
Instead of choosing a mon from an encounter table when encountering a mon in a location a mon from this population will be chosen. Catching it will remove it from this population, fainting it not necessarily.
When progressing to the next day (don't know how I want to handle time yet, probably similar to Stardew Valley) Pokémon might migrate, mate, lay eggs, hatch and so on.

What are my goals?
Have the world feel more real and alive with Pokémon having "lives" and behaving like a real species would.
I want to make it possible to release Pokémon into the wild and introducing them as such when they weren't present.
And I want to simulate interactions between species, as hinted in Dex entries, which I might change to fit my needs. Heatmors will actually hunt Durants and so on. Herbivors will just have food, but carnivores will need to catch other mons to survive, so the population will balance itself like in real life.

That's the first of hopefully many dumps of ideas and progress, I will try to get some sort of proto-location working with a population instead of an encounter table now!
 

Atlat

Novice
Member
Joined
Jan 8, 2023
Posts
21
This is a rather interesting idea and I would love to see how it goes. I'm interested to know how egg groups are considered here as well. After all, while a Heatmor can breed with another Heatmor, it can also breed with a Pikachu. Plus, they're genderless Pokémon who can technically lay eggs, but can't really do so because of in-game logic. For example, Cryogonal is a part of the mineral egg group, but the only way to get a Cryogonal egg is by breeding with a Ditto (which is another can of worms for this concept).
 

Zardae

Novice
Member
Joined
Aug 21, 2017
Posts
14
This is a rather interesting idea and I would love to see how it goes. I'm interested to know how egg groups are considered here as well. After all, while a Heatmor can breed with another Heatmor, it can also breed with a Pikachu. Plus, they're genderless Pokémon who can technically lay eggs, but can't really do so because of in-game logic. For example, Cryogonal is a part of the mineral egg group, but the only way to get a Cryogonal egg is by breeding with a Ditto (which is another can of worms for this concept).
To be honest, I don't think I will consider egg groups (much). I have thought of getting rid of them entirely as they would not fit the game I would implement the ecosystem in.
 

Zardae

Novice
Member
Joined
Aug 21, 2017
Posts
14
Little update, not very surprisingly all of this is even more difficult than I anticipated, even the initial steps.
I can't get away with using only one extra PBS File/Game Data class.
Right now I think I'll have the following setup:
  • Location: This is a new parameter added to the map metadata. Each location can have multiple habitats, meaning mons that can be found in the grass, in trees, in the water etc.
  • Habitats: Each habitat contains a population of different Pokémon. A habitat can span multiple locations and is not exclusive with other habitats.
The reasoning behind this is that at the edge of a forest, there might be Pokémon from inside and outside the forest, but they respectively don't venture out far from their habitat. And "removing" a deer at the edge of the forest affects the forest habitat as a whole.
- HabitatTypes (hardcoded): each Habitat is of a type, like Forest, Grassland, River, Lake, and so on.

I feel like this is not enough, though. With the current setup there is not enough to differentiate the habitats of the same type.
As it stands and how I imagine things, I would set the initial population but all Pokémon that live in grassland would migrate to every other grassland over time, leading to a mess of Pokémon being everywhere.

Ideas on how to fix that:
Add more Habitat Parameters, like Humidity, general weather, temperature and so on, and give each Pokémon a set of preferred and accepted circumstances.
Breeding and as such, baby Pokémon would happen in preferred circumstances, not everywhere.
Suggestions for even more parameters are very welcome!
 

Vendily

Elite Trainer
Member
Been ages since I studied Population Ecology, neat stuff. (Plenty of equally interesting things in community ecology, but you say you aren't working into that in much depth.)

I think if you seed locations differently, the same habitats existing in multiple locations wouldn't result in the same population distribution. Because it's a lot harder to break into a new location (even if it's the same habitat) if there's just fewer of the new species compared to the already existing species. Especially if they end up competing for the same resource.

How are you determining these factors for the species by the way? How would you determine competition (directly or indirectly) between species, or resolve competition between species? In the case of protections against predators, some protections like toxins or hard shells are metabolically expensive, so they'd be less effective in areas where there are no predators. There's also mutual relationships between Pokémon, like Shelder and Slowpoke, or how Mantyke can't evolve without Remoraid (this one is important because Mantyke is a baby pokemon, so it can't breed).

Another way of differentiating is breeding seasons and suitable locations for breeding. I know with the Florida panther, they are generally solitary except for mating, so their incredibly fragmented habitat makes it difficult to find partners, and increases the chance of cars hitting them. This is also where you can think about survivorship types, r/K selection, and gender distribution affecting breeding rates.

What about recovering populations/releasing Pokémon into the wild? The Lapras dex entry used to say it was critically endangered, but now their numbers have recovered and then some due to protective regulations in the Gen 7 dex entries (I am also reminded of the reddit poster who saw those older dex entries, and breed and released a lot of Lapras to "fix it"). In some species, having too low of a population can fall afoul of the Allee effect ("undercrowding").

Are you considering invasive species at all?
 

Zardae

Novice
Member
Joined
Aug 21, 2017
Posts
14
Because it's a lot harder to break into a new location
That's right, I didn't think of that. I guess it would depend on how I implement all of this.

How are you determining these factors for the species by the way? How would you determine competition (directly or indirectly) between species, or resolve competition between species?
Right now I have some sort of file planned where I define the relationships between different Species. When they are competing for the same natural resource, I think I will say each species will be able to gather a part of these depending on the portion of the total population in this location.
I am unsure as of yet how to handle a Predator/Prey relationship. I guess each predator will have a need of prey per "foodcycle", the more prey there is, the more likely they are to meet the quota and have some to spare to generate offspring. This could lead to cycles of having starving pedators, so the prey can flourish again and the flipside of that.

I just had the idea for migratory pressure, if that is even a real word. Because why leave an area if you have everything you need?

This is also where you can think about survivorship types, r/K selection, and gender distribution affecting breeding rates.
I already had gender distribution in mind, believe it or not! :D And a distribution of different age brackets, where being in a certain bracket means they are able to breed, have certain levels in wild battles, and so on.

What about recovering populations/releasing Pokémon into the wild?
I definitely want to make that a thing. I want the player to be able to (re)introduce species to certain areas.

Are you considering invasive species at all?
If everything works as I have planned, invasive species will become a thing "by accident" anyways.
I understand invasive species like this:
They aren't native to an area, got introduced by some means and flourish in the new environment, driving native species away / to extinction. If everything goes to plan, I will have species of Pokémon in places where they realisticly would have came from, but they'd have a set of preferences which is met perfectly by other locations not accessible by (easy) migratory routes.
So the player can introduce them there or some sort of strange circumstances may lead them there, I have lots of ideas and a lack of skill, it feels like, lol
 

Zardae

Novice
Member
Joined
Aug 21, 2017
Posts
14
Hurray, I didn't abandon the idea (yet)!
What's new? Not much I am afraid, I am still a bit sick, was at my parents place and other life things got in the way.
But there has been a new idea, namely having seasons in the project. This will hopefully work like this:
The game keeps track of the time and date and in different seasons Pokémon will behave differently: In spring they'll mate and breed, in summer they will mostly just be around, in Spring they will prepare for winter, in winter they do winter stuff :D
What's not going to be fun about this will be the creation of 4 tilesets for areas that are affected by seasons so I can switch them via code.
 

glassbetelgeuse

Hoenn Enjoyer
Member
Joined
Jan 19, 2023
Posts
11
What's not going to be fun about this will be the creation of 4 tilesets for areas that are affected by seasons so I can switch them via code.
Depending on the tileset being used, I might be willing to help out with some recolors for seasons. (I'm pretty invested in this concept and I want to help it succeed if I can, but I'm trash at code.)

I have a similar problem for areas affected by something related to time (I have an intertidal zone in my project, which requires tides a la gen 3) but I ended up switching the map itself rather than the tileset--if switching the tilesets ends up being too much of a pain, that's always an option, too.
 

Zardae

Novice
Member
Joined
Aug 21, 2017
Posts
14
New update!
There will be ageing in the game, not only for wild Pokémon, but also for the Players Pokémon!
If I find a solution for NPCs and such maybe even for the player.
 

Zardae

Novice
Member
Joined
Aug 21, 2017
Posts
14
Hey there, I am not dead and this idea isn't either!
My issue at the moment is sadly not dev related, but a personal one:
I have assignments, which I'd have plenty of time for, but no motivation to do. But I feel really bad about it.
So, when deciding on what to do, work or procrastination, I often default to the latter and then go the way of least mental resistance which often is gaming and listening to music.
But I am seriously frustrated with this so I try to change. But it's hard :/
Advice is very welcome!
 

HeroicAlter

Rookie
Member
Joined
Mar 7, 2024
Posts
2
This project actually sounds really cool!
Unfortunately, I'm bad at pretty much everything this project would require, so I can't help at all T-T
Good luck with it, though!
 

Zardae

Novice
Member
Joined
Aug 21, 2017
Posts
14
Soo, long time no post. You probably think that this is abandoned and since my last post, it was.
I am still very invested in this idea, and I keep feeling that it would be really cool to do this in Essentials, as the concept could make it into a proper game of mine.
Wish me luck, I'm coming back! For like 2 hours, lol
 
Back
Top