minetest / minetest

Minetest is an open source voxel game-creation platform with easy modding and game creation

Home Page:https://www.minetest.net/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Mainmenu: Add a configure menu that games can customize, replacing Select Mods

kneekoo opened this issue · comments

A configure menu would allow players to change settings related to the engine or the game before entering a world.

What's unclear to me is how we could treat item 2 that I mentioned in #12246, because it's a bit of a chicken and egg issue. The game needs to run some code to know if a world requires conversion in order to either present or hide the option to/from the player. Could Minetest include a mechanism for games to query worlds before displaying the configure menu?

Also, I see the configure menu as a good place where we could also:

  • see when the world was created and last used
  • reset/regenerate the world
  • rename the world
  • create a backup, maybe zipped? (a backups directory would have to be dedicated for this)

Would these be possible?

Sorry, after we asked you to open another issue I found an older issue asking for it

Duplicate of #5332

To clarify, I wasn't saying all of your requests could be solved by one issue.

This issue / #5332 is point 1 of your first issue.

Point 2, about showing dialogs whilst loading, is #7462

Point 3, about creating backups, is kind of #10600


Regarding your specific situation, I suggest tracking whether it's a new world or an existing world, and set some mod storage / world file setting to enable/disable that feature accordingly. Conversion should be done on the fly when the setting is enabled

You can use get_gametime() < 10 to determine whether the world is new

Regarding your specific situation, I suggest tracking whether it's a new world or an existing world, and set some mod storage / world file setting to enable/disable that feature accordingly. Conversion should be done on the fly when the setting is enabled

You can use get_gametime() < 10 to determine whether the world is new

Thanks! In the case I presented initially, I see three options:

  1. ask the users if they want the conversion (ideal)
  2. don't ask, don't convert, but offer option in the configure menu (reasonable, but they might be unaware the option exists)
  3. don't ask, convert automatically at the risk of destroying something if they have incompatible stuff in their worlds (automated backups would be required in such a case, to make sure we don't ruin anyone's work)

I'd do 2. You could also do 1 from a mod, using formspecs and checking for the admin user. It depends on what the conversion process looks like

We have to increase the depth of our worlds - convert the bedrock to another node, then make new bedrock at a lower Y level and generate the nodes in between. That's why it would help if we could "pause" the engine to allow the game to first do the conversion, because option 1 would become possible.

commented

Since I made the proposal in the mineclone2 issue tracker to create a dialog for mineclone2-specific configuration options (and store those) for each world, I want to clarify that world conversion was not intended to be a part of my proposal, since that complicates matters far beyond the basic issue of having both per-world and also game-specific settings.

At the present time, minetest only allows for applying settings that are native to the minetest engine at world creation time. I would like to see it possible to apply any game defined setting at world creation time, and have these stored in some world specific configuration file (I proposed world.conf in the world directory.) The game can then define its own dialog to change some of these settings dynamically in-game.

In my proposal at the mineclone2 issue tracker I suggested an outline of what is essentially a workaround for the current lack of these features in minetest. I am not sure how feasible this will be, but I can try and see what I can achieve.

I would enthusiastically applaud a minetest engine based approach that fulfills the requirements as sketched above, but even if it were implemented today, it would likely take some time before a version of minetest that has such features has diffused into the majority of the user base. So a workaround is needed for mineclone2 in the meantime. Any comments from minetest developers that help to implement such functionality (as a game-based workaround) and to keep incompatibilities with a tentative future proper implementation of it in minetest are much appreciated.

@rubenwardy yes get_gametime() is a good suggestion, thanks!

I want to clarify that world conversion was not intended to be a part of my proposal

Indeed. I mentioned it here because it illustrates a solid reason for us to have such a feature, other than tweaking settings, so the discussion can have a broader perspective about where we need to end up.