sofar wrote:And no, making everything a DLL isn't better either.
burli wrote:sofar wrote:And no, making everything a DLL isn't better either.
Why? I can remove it if I don't need it or can replace it
setHP(getHP() - result.damage);
if (result.damage > 0) {
std::string punchername = puncher ? puncher->getDescription() : "nil";
actionstream << getDescription() << " punched by "
<< punchername << ", damage " << result.damage
<< " hp, health now " << getHP() << " hp" << std::endl;
}
paramat wrote:Indeed the engine is not as universal as some think, and some devs realise this.
sorcerykid wrote:Just for sake of a rudimentary example, let's say I want to change the ACTION text that appears in the debug log when a player is punched. Logically, this could (and even should) be accomplished in LUA, since that is how nearly all debug output is typically generated. But, not in this case. It is hard-coded into C++ source, thus requiring a complete re-build of the entire engine to override this single text string.Your phone or window isn't wide enough to display the code box. If it's a phone, try rotating it to landscape mode.
- Code: Select all
setHP(getHP() - result.damage);
if (result.damage > 0) {
std::string punchername = puncher ? puncher->getDescription() : "nil";
actionstream << getDescription() << " punched by "
<< punchername << ", damage " << result.damage
<< " hp, health now " << getHP() << " hp" << std::endl;
}
I cannot imagine how there there would be significant performance penalty by having this debug output within a LUA callback function (where it clearly belongs) rather than incorporated into a monolithic executable file. But I've seen stranger things in my life, so I guess anything is possible.
sofar wrote:try an actual functional change as a good example what is wrong with the current model. The above example is really just a terrible choice.
sorcerykid wrote:If you prefer functional changes, take the mapgens which I think could certainly be adapted as shared libraries as they are technically an extension of the core engine. Improvements to the mapgens would no longer mandate building a new executable every single time (and vice-versa, of course), assuming the API is standardized. This allows for better compartmentalization of feature sets: rather than regarding the Minetest code-base as one gigantic monolith of a system, it is subdivided into a hierarchy of modular components.
While it might not seem like a problem worth addressing now, I can assure you that as MT continues to mature with each successive release, it is going to become increasingly burdensome to maintain the "do everything as one gigantic engine" software model.
Wuzzy wrote:Interesting thread. Can you name some other concrete use cases which you think Minetest should enable (but they aren't possible right now)?
asanetargoss wrote:After much lurking, and seeing many frustrating threads like this complaining about Minetest's shortcomings, I've come to the conclusion that no amount of improvements to the modding API could possibly make Minetest better.
asanetargoss wrote:There needs to be improvement on the content creation side: more people who are willing to work inside of the limitations of the current Minetest modding API.
burli wrote:I come to the conclusion, that the modding API lacks of lot of features. As I mentioned before in another thread a lot of good modders left the community because they can't realize their mods
I want to make survival harder by adding heat and cold damage, but all I can do is checking if I walk on snow, grass or sand. It may work for snow and ice, but on sand or grass I can only guess if it is a hot or cold region. I also have no idea if I swim in tropical or arctic water. And if a mod adds new ground nodes I'm totally screwed.
It is also nearly impossible to make a good mapgen. Of course I can write one in Lua, but because of worse performance and memory issues it doesn't make sense for a real game. I had to fork Minetest and add my own C++ mapgen or I need to hope that the core devs add my mapgen to the core. It is not possible to add high performance mods in an easy way.
I want to create content, but I can't create the content I would like. There are to many limitations
zing269 wrote:Do minetest.get_heat(pos) and minetest.get_humidity(pos) not work?
Users browsing this forum: No registered users and 70 guests