MovingBlocks / Terasology

Terasology - open source voxel world
http://terasology.org
Apache License 2.0
3.68k stars 1.34k forks source link

Add list of world generators as module extension #1795

Open msteiger opened 9 years ago

msteiger commented 9 years ago

Currently, a module must be loaded in order to discover all world generators. There is an extension that defines the default world gen, but the others are unknown. As a result, players do not know which world gens. are available and in which modules.

I therefore suggest adding the list of world gens. as a (standard) module extension (probably together with a list of gameplay modes). Thus, required modules for a gameplay or a world generator can be activated automatically.

MarcinSc commented 9 years ago

I have a feeling this is what I've been talking about recently. I believe the "isGameplay=true" modules should define a list of world generators they are compatible with and only those should be allowed to be chosen to start a game with, if this gameplay module is chosen.

immortius commented 9 years ago

I think we've had this discussion before. My thoughts:

MarcinSc commented 9 years ago

If you had "gametype" module specify world generators, and you wanted to add a new generator - just create a module with that generator and have the previous "gametype" module as a dependency and set the flag for the new module to be "gametype" as well.

immortius commented 9 years ago

But it isn't a gametype.

MarcinSc commented 9 years ago

Then maybe introduce a "setting" module type that defines "gametype" module and "worldgenerator" type and allow only choosing a "setting" module.

MarcinSc commented 9 years ago

Alternatively, add 2 new flags to "gameplay" module:

And then modules can also define what "gameplay"s they are compatible with, the same for generators.

So, if a "gameplay" module allows only compatible modules, only those that mark as being specifically compatible with that gameplay module and version can be enabled in addition to those that are dependencies of that "gameplay" module. The same applies for world generators.

That will allow strict approach to "gameplay" types defining what is being included, as well as a free-form if someone wishes to create a "Minecraft" experience.

Cervator commented 9 years ago

This is getting into "optional" / "supporting" module territory IMHO :-)

Maybe use "soft" systems on either side plus disclaimers. A module can declare a default world it expects, in which case any other choice would provoke a disclaimer / confirmation prompt. Yet then another module could declare itself to override / augment something specific which would either remove or alter the disclaimer.

At no point do we then explicitly block anything or need an action taken elsewhere to make a change in a new module available.

MarcinSc commented 9 years ago

I'm fine with that, as long as the disclaimer is clearly visible to the user and specifies that this might make the game unplayable.

immortius commented 9 years ago

Hmm, what I would like to see is less world generators and more things that introduce additional facets and rasterizer steps. What I had in mind was that rather than all-or-nothing world generators to choose between, a mod would be able to provide additions on top of a base world generator. This would help avoid these sorts of problems.

immortius commented 9 years ago

That aside, I'm happy with whatever solution as long as it doesn't block support for mods.

Cervator commented 9 years ago

So kinda like how the Caves module could be enabled with Perlin and expose additional world config options for it. I like that.

MarcinSc commented 9 years ago

Caves is probably a bad example, as it causes trees growing midair and requires changing all the other facets to stop that.

Cervator commented 9 years ago

Hehe. But it is an example :-) We just need to make it better :D

Maybe we should have @Josharias tackle a new tutorial episode on clean integration of a new facet attaching to an existing world gen. Doooo eeeeet!

Cervator commented 9 years ago

Related topic I wanted to put somewhere: we should flag world preview options better and maybe default to off. TTA currently does technically try to produce a preview but it is empty and takes maybe 20-30 seconds with a stalled game. Then crashes the game if you try to return to the main menu :-)

In that case it may just be easier to flag it as un-previewable until effort is put in to making it.

If better cooperation between world generators / facets is introduced where preview won't be as brittle that could be another option too. Needs hardening in general like we've talked about on occasion.