One of the biggest complaints I have with Minecraft is the way mobs are spawned.
In Minecraft, whether or not a location is valid for mobs to spawn in depends solely on the surrounding environment. In other words, you can build a huge fortress with massive walls, a mote, and tons of well-lit rooms. If you have an unlit room with a dirt floor somewhere, you'll get spiders spawning there.
It is really fun to build a fortress to keep out monsters, but not so much fun when they can just spawn inside your walls and completely bypass your defenses.
I've had an idea for a while as to how to improve this. It might be something to implement in Terasology:
---
Part I: Limit where monsters and other mobs can spawn
My approach divides the world into "known" and "wild" areas. In addition to the normal spawning rules, creatures can only randomly spawn in places that are "wild".
This is accomplished by adding a flag to every block location in the world (if mobs can only spawn in air blocks, this could be as simple as having two kinds of air). The flag is then set according to the following rules:
1. Locations which are observed by a player become "known".
In a realistic world, creatures can't simply appear out of thin air, they have to come from somewhere. The exact definition of "observed" would be one of the big things to tweak.
2. Unobserved locations are "wild" by default.
Since the player hasn't observed them yet, they have no way of knowing what was there to begin with. This makes them realistic sources of creatures.
3. Areas which are reached by creatures following valid paths can be re-marked as "wild".
If one creature could get in, so could others, so spawning them there is OK. A creature should have to actually reach the location for this to happen, at least if the player is watching.
Part II: Make known areas attractive to mobs, especially monsters
Obviously the above mechanism would significantly cut down on the number of mobs that get spawned in an active chunk. In order to offset this, mob path planning is adjusted to make them attracted to "known" areas.
---
This approach should result in a nice swarm of monsters outside the gates, wild animals in the wild, and the ability to build defenses that actually work.
Another interesting addition to this idea might be to keep track how recently each location was observed. All mobs would be attracted to locations that were observed a long time ago, simply to help reset them to wild, but only aggressive ones would actively seek out places the player had recently been.
There are still a few issues to figure out though, for example: What if the entire active chunk is "known"? Maybe send mobs in from the edges? What if part of the edges are inside the player's house?
In Minecraft, whether or not a location is valid for mobs to spawn in depends solely on the surrounding environment. In other words, you can build a huge fortress with massive walls, a mote, and tons of well-lit rooms. If you have an unlit room with a dirt floor somewhere, you'll get spiders spawning there.
It is really fun to build a fortress to keep out monsters, but not so much fun when they can just spawn inside your walls and completely bypass your defenses.
I've had an idea for a while as to how to improve this. It might be something to implement in Terasology:
---
Part I: Limit where monsters and other mobs can spawn
My approach divides the world into "known" and "wild" areas. In addition to the normal spawning rules, creatures can only randomly spawn in places that are "wild".
This is accomplished by adding a flag to every block location in the world (if mobs can only spawn in air blocks, this could be as simple as having two kinds of air). The flag is then set according to the following rules:
1. Locations which are observed by a player become "known".
In a realistic world, creatures can't simply appear out of thin air, they have to come from somewhere. The exact definition of "observed" would be one of the big things to tweak.
2. Unobserved locations are "wild" by default.
Since the player hasn't observed them yet, they have no way of knowing what was there to begin with. This makes them realistic sources of creatures.
3. Areas which are reached by creatures following valid paths can be re-marked as "wild".
If one creature could get in, so could others, so spawning them there is OK. A creature should have to actually reach the location for this to happen, at least if the player is watching.
Part II: Make known areas attractive to mobs, especially monsters
Obviously the above mechanism would significantly cut down on the number of mobs that get spawned in an active chunk. In order to offset this, mob path planning is adjusted to make them attracted to "known" areas.
---
This approach should result in a nice swarm of monsters outside the gates, wild animals in the wild, and the ability to build defenses that actually work.
Another interesting addition to this idea might be to keep track how recently each location was observed. All mobs would be attracted to locations that were observed a long time ago, simply to help reset them to wild, but only aggressive ones would actively seek out places the player had recently been.
There are still a few issues to figure out though, for example: What if the entire active chunk is "known"? Maybe send mobs in from the edges? What if part of the edges are inside the player's house?