Time Nick Message 01:57 repetitivestrain - 03:24 repetitivestrain sfan5: emerge_area is too slow: enqueueing a 6x6x6 region of mapblocks requires 6-9 ms, and i must reload every mapblock in range that is not yet generated on every globalstep, even if it is already in the emerge queue, because core.compare_block_status is unreliable in reporting whether a mapblock is actually imminently to be emerged 03:25 repetitivestrain however, reading RemoteClient::GetNextBlock, it appears that server side occlusion culling only applies to mapblocks that are not yet loaded 03:25 repetitivestrain is that correct?? 03:27 repetitivestrain if it is, then i see no downsides in simply disabling server side occlusion culling in mineclonia when my mapgen is enabled and i apologize contritely for wasting your time 04:16 [MatrxMT] forums are down again, R.I.P. 07:37 sfan5 repetitivestrain: no, SSOC applies to all blocks 07:44 sfan5 trying to coax the block loading to serve the requirements of your mapgen is probably futile 07:44 sfan5 it sounds like what you need is a custom chunksize setting or something similar but more precise 07:45 sfan5 also please report bugs you encounter. I get the impression there are a bunch of features known as "oh this is broken, don't rely on it" in the community meanwhile the engine devs have never heard about this problem. 07:45 [MatrxMT] we have several people who are github detractors and won't post to the issue tracker for that reason 07:46 [MatrxMT] this is not helpful to the project as a whole 07:47 [MatrxMT] https://forum.luanti.org/viewtopic.php?p=444793#p444793 07:48 repetitivestrain sfan5: i see, can you direct me to where occlusion culling is applied to blocks already emerged? 07:48 repetitivestrain i have explained my requirements on the forums and i'd love to report them as issues too, only i would rather not sign up for GitHub 07:49 [MatrxMT] https://forum.luanti.org/viewtopic.php?t=29291 07:49 repetitivestrain Voted, FWIW 07:49 sfan5 it's indeed unfortunate but linking a pastebin with a filled in issue template in #luanti-dev would be better than literally nothing 07:49 sfan5 fwiw I think most devs don't read the forums actively, so that's not the right place 07:49 sfan5 repetitivestrain: https://github.com/luanti-org/luanti/blob/master/src/server/clientiface.cpp#L338 07:50 sfan5 in words this condition is "if the block is loaded already or about to be loaded" 07:50 [MatrxMT] look, I'm checking the forums quite regularly, but it honestly feels like people asking me to write and mail a letter for them when they report an issue there but won't post to the issue tracker 07:51 repetitivestrain sfan: Ah, I see 07:52 repetitivestrain wouldn't "if the block is loaded already or is not about to be generated" more accurate? 07:52 repetitivestrain since a queued block is about to be generated 07:53 sfan5 "if the block is loaded already and wasn't already enqueued to be generated" to be exact 07:53 repetitivestrain Makes sense, thanks 07:56 sfan5 @Blockhead256 especially for feature requests, getting someone else to open the issue for you is not a sustainable solution. yeah 07:56 repetitivestrain Where is the issue/ticket template? 07:56 sfan5 https://github.com/luanti-org/luanti/blob/master/.github/ISSUE_TEMPLATE/bug_report.yaml 07:56 repetitivestrain Sorry if i come across as a whit blind 07:57 repetitivestrain Noted 07:57 [MatrxMT] https://github.com/luanti-org/luanti/tree/master/.github/ISSUE_TEMPLATE 08:00 repetitivestrain On a totally unrelated score, has there been any consideration in engine development regarding storing metadata in schematics? 08:00 sfan5 has not been talked about but my gut feeling says "intentional, wontfix" 08:01 repetitivestrain Well I'm only asking because it strikes me as a feature that would be broadly useful to all mod developers 08:03 repetitivestrain e.g. here i've implemented a system of structure templates, which are akin to schematics but also encode metadata, which nodes' constructors must be executed, and also data blocks that hold directives indicating how to post-process adjacent nodes, etc. https://codeberg.org/mineclonia/mineclonia/src/commit/mineclonia_mapgen/mods/MAPGEN/mcl_levelgen/templates.lua 08:04 repetitivestrain and what's awful is that previously two copies of an inferior mechanism existed in mineclonia, one in mcl_villages and another i recall in mcl_structures 08:05 repetitivestrain and this just must be unsustainable 08:05 [MatrxMT] I have a feeling the engine won't do anything to aid in that unless there's something that can be done to make a library for that kind of thing faster 08:06 [MatrxMT] just like pathfinding is limited to a C++-side A* algorithm that can accelerate the Lua 08:06 repetitivestrain The engine already provides schematics, though 08:06 repetitivestrain which could easily be extended to store metadata 08:06 [MatrxMT] different schematic formats will exist, and that's okay. They all need different data in them 08:07 sfan5 repetitivestrain: did you check that chunksize=6 actually makes your mapgen work? 08:07 repetitivestrain We'll see whether you change your mind after being made to convert 16 structures from mts schematics with standalone metadata for an improvised system to use structure and jigsaw blocks 08:07 repetitivestrain sfan5: you mean in the case of occlusion? 08:08 sfan5 no 08:08 sfan5 what is the "entire vertical area of a chunk" height that you need? 08:08 repetitivestrain chunksize=24 08:08 repetitivestrain vertically, and any value horizontally 08:10 repetitivestrain otherwise, it does "work", but it needs to regenerate every mapchunk-sized subsection of a 24 block column anew, which renders map generation 4x slower than it could be 08:11 sfan5 "mapchunk" being what? 08:12 repetitivestrain a chunksize^3 volume of mapblocks 08:12 repetitivestrain i think this is the term that's in lua_api.md 08:12 sfan5 then I don't understand why you say it has to regenerate stuff twice 08:14 repetitivestrain upon on_generate, my map generator produces a 80x384x80 block region of the world, which is truncated to [minp.y - maxp.y] before being written to the VoxelManip 08:15 sfan5 ah okay 08:15 sfan5 by the way it appears the engine limits chunksize to 10 08:15 repetitivestrain therefore, generating a complete column (80x384x80 nodes) requires that the very same column must be processed four times, although in effect it's just two, as clients tend not to trigger mapblock generation at any further distances 08:15 repetitivestrain Hmm? 08:15 repetitivestrain Feels pretty arbitrary to me 08:16 sfan5 most limits are arbitrary 08:16 [MatrxMT] it's pretty common for programs like Luanti to have a bunch of arbitrary magic numbers in them like that though 08:17 repetitivestrain My map generator can't handle horizontal chunksizes beyond 9, i think, as it manipulates various types of extensively with the bitop library which only takes 32-bit integers 08:18 sfan5 so even ignoring that the engine can't do it your mapgen can't handle chunksize=24 08:18 repetitivestrain but it has no conception of vertical chunks, and always generates complete columns, which is ultimately the only means of ensuring determinism 08:18 repetitivestrain not _horizontally_, but _vertically_ 08:18 repetitivestrain i need the engine to generate 80x384x80 mapchunks 08:18 sfan5 yes I know 08:18 repetitivestrain Yeah, so you see my predicament 08:19 repetitivestrain once i finish the mapgen i'll try my hand at implementing this 08:21 sfan5 chunksize 24³ makes mapgen quite slow, has high memory consumption, probably causes extra server lag 08:21 sfan5 and with mgv7 you get holes in terrain https://0x0.st/8lEG.jpg 08:22 repetitivestrain 24*3 is really extreme, but 5x24x5 is only 600 mapblocks, much fewer than 10x10x10, and should be managable 08:22 repetitivestrain 24^3 i mean 08:23 sfan5 !c 24^3 08:23 MinetestBot 27 08:23 sfan5 *wink* 08:23 repetitivestrain That's 24 xor 3 08:23 sfan5 anyway sure. I just gave it a try out of curiosity 08:23 repetitivestrain and really color me not surprised that mgv7 is slightly broken lol 08:23 sfan5 if the engine allows non-cubic chunks keeping the upper limit at 10³ makes sense 08:24 repetitivestrain the y slice issue is in part what prompted me to write my own mapgen 08:24 repetitivestrain and also all of the issues on mineclonia's tracker that concern structure placement 08:28 repetitivestrain also, non cubic chunks could easily be a solution to the y slice issue 08:28 repetitivestrain i hope 10:42 sfan5 repetitivestrain: have fun https://github.com/sfan5/luanti/tree/chonky 11:27 WoGoMo Hi I was wondering if someone could tell me if there was a way to force grass to grow on plain dirt if there are no pre-existing "dirt with grass" blocks with just the default server mods 11:34 sfan5 use creative mod and place some grassy dirt, it will spread 11:34 sfan5 mode* 11:35 [MatrxMT] if you have tall grass, then that will also spread grass to dirt blocks under it 11:43 repetitivestrain sfan5: thanks! i'll probably wind up adding the ability to specify the base Y offset too (chunk_offset.Y in EmergeManager::getContainingChunk), to enable the overworld to continue originating from Y=-128 11:50 WoGoMo thanks! 11:58 sfan5 https://0x0.st/8lIp.jpg mapgen made a cool arc 12:10 WoGoMo Well the tall grass worked like a charm. I have some patches of grass growing. One last thing though, is sunlight required for the grass to spread to adjacent dirt blocks? 12:12 [MatrxMT] sunlight or artificial light - the light level is checked before deciding whether the grow 12:12 [MatrxMT] whether to grow 12:12 WoGoMo thanks again. cheers! 12:24 WoGoMo Well, it's almost fully covered in grass now. Once done I can cover up the ceiling and my dirt monster trap will be done. :D https://0x0.st/8lIU.png 14:20 repetitivestrain sfan5: i needed one additional change to retain the current dimension configuration: https://codeberg.org/halon/Minetest/commit/adf680ef1347170c05ff1498805e945113c211eb 14:24 repetitivestrain and in a cursory benchmark it yields the expected 4x speedup in /emergeblocks and feels roughly twice as fast 14:31 repetitivestrain https://codeberg.org/mineclonia/mineclonia/commit/ad84598c0ca31af071012c33ee3410101715c55d 14:31 repetitivestrain Also for what it's worth, these were the changes required to adapt my mapgen to this branch 14:36 sfan5 I can't promise the arbitrary offset will make it into the engine 14:37 sfan5 there are good arguments for it however 14:37 repetitivestrain yes, we have y=-128 specifically so that sea level may be located at y=0 14:37 [MatrxMT] yeah, terrain level/sea level isn't really something the engine needs to dictate 14:37 repetitivestrain afaik before our world height was extended to 384, the overworld commenced at y=-64 14:39 repetitivestrain Blockhead256: and without this change, our sea level would need to be a very counterintuitive -64, to speak nothing of the difficulties that would introduce in upgrading existing worlds 14:40 sfan5 strictly speaking it only dictates the implementation. you can generate any sea level with any chunk grid in theory 14:40 repetitivestrain not as efficiently though 14:40 repetitivestrain i would either have to raise the chunksize again (which translates into greater memory consumption) 14:40 repetitivestrain or return to generating columns redundantly 14:43 repetitivestrain so i suppose the proper nomenclature would be "quality of implementation" 14:43 [MatrxMT] appropriateness of the solution to the problem as presented 14:45 repetitivestrain But on balance I am pleasantly surprised by how much Minetest has progressed since 5.0.0 14:45 repetitivestrain lua map generators of this complexity would never have been feasible 5 years ago 14:49 repetitivestrain https://codeberg.org/attachments/44ab1891-a60c-43a9-936c-974603305c73 14:50 repetitivestrain e.g. it has never been possible to reproduce minecraft-style plains with the existing map generators 14:50 repetitivestrain as their biomes simply aren't influenced by terrain 14:51 [MatrxMT] I've got a set of parameters for carpathian that I quite like, it's VERY flat https://forum.luanti.org/viewtopic.php?t=17174&start=50 14:51 repetitivestrain whereas in minecraft (and in my map generator), continentalness and erosion, which define terrain height, are also dimensions in the biome lookup tree 14:51 [MatrxMT] that has plains, mountains and lakes. That's about it for landforms... 14:52 repetitivestrain No WindsweptSavannahs? :P 14:53 * [MatrxMT] looks that up 14:53 [MatrxMT] honestly that looks VERY cubic, the output of carpathian is really round 14:57 repetitivestrain Yes, but in minecraft they coexist in the same world 14:57 repetitivestrain and biomes are assigned on the basis of terrain rather than exclusively from separate heat and humidity noises 14:58 repetitivestrain By the way, is anyone aware of a Lua implementation of the v7 mapgen? 14:59 [MatrxMT] a Lua implementation of a C++ mapgen? I think the only ones that exist on other languages were prototypes of what we have like valleys 14:59 repetitivestrain Too bad 15:00 repetitivestrain i'm still investigating how properly to convert existing worlds to this mapgen, and i'd have liked to implement conversion using the elegant approach, to wit, blending the noise values of blocks generated near old blocks with values produced by the previous map generator 15:00 [MatrxMT] I thought not even mojang bother with that sort of thing 15:00 repetitivestrain most of the infrastructure already exists, excepting some means of invoking v7 from Lua 15:00 repetitivestrain Mojang does 15:01 repetitivestrain the blending approach i'm referring to was first implemented by them in Minecraft 1.18 15:01 repetitivestrain https://minecraft.wiki/w/Density_function#blend_alpha 15:01 [MatrxMT] okay, my MC knowledge is very limited after like 1.2.5 or 1.7 15:02 repetitivestrain the other approach i am considering if this fails is some manner of moving average, but i suspect such an approach could only run as an external tool 15:02 [MatrxMT] Luanti mapgen was always backwards compatible with adding new biomes :P 15:03 repetitivestrain So is mine (and mojang's), since biomes are saved to disk and terrain defines biomes rather than vice versa 15:03 repetitivestrain but 1.18 featured a complete reimplementation of their level generator 15:04 [MatrxMT] you're probably aware that it didn't used to be like that, you used to update and get big stone walls and stuff 15:04 repetitivestrain i have only ever played minecraft 1.7.2, the release where pistons were introduced 15:04 repetitivestrain ca. 2011 15:04 repetitivestrain Beta 1.7.2* 15:05 repetitivestrain since which time i have not opened minecraft otherwise than in the course of developing mineclonia 15:06 [MatrxMT] this is.. exactly the sort of thing that any old player could tell you but is proving REALLY hard to try to find a screenshot of 15:07 [MatrxMT] https://www.howtogeek.com/213964/how-to-upgrade-your-old-minecraft-maps-for-seamless-transitions-to-new-biomes/ 15:07 repetitivestrain don't worry, i was advised of this by other veteran minecraft players 15:07 repetitivestrain but i'm specifically speaking of and implementing the level generator introduced in 1.18 15:08 repetitivestrain where biomes are defined by terrain, and additional biomes produce no visible chunk boundaries 15:08 Helenah Is there any way of showing a dialog box and expecting the player select some stuff in the dialog box before their character and the world will spawn for them? 15:08 Helenah I haven't seen a solution for this. 15:09 [MatrxMT] Helenah: My hack would be to check for first spawn and move them way up in the air, revoke all privileges, then force the formspec to reopen every time they close it. Then teleport them to their actual spawn when they complete the dialogue 15:10 [MatrxMT] *way up in the air, but inside an unbreakable prison with no light 15:12 [MatrxMT] a bit like techage server 15:12 Helenah Would there ever come more direct way? I think there are things which could be broke out the engine and put into the API. 15:13 [MatrxMT] you could disable closing the formspec on 5.12 afaik 15:14 [MatrxMT] and now there's an escape code of Shift+Esc, which people keep doing accidentally ... . . 15:14 [MatrxMT] why even, i don't see any benefits 15:15 [MatrxMT] so you can leave to the main menu without quitting the game if you get stuck 15:17 Helenah Why disable closing a formspec? Doesn't it need to close at some point? Or do you mean preventing the player from just escaping it without actually running through its options? That's beneficial and something I wanted, the idea is different players will start at different points in the world depending on what attributes they apply to their 15:17 Helenah character. 15:18 [MatrxMT] disabled from the PLAYER being able to close it - the server will decide when to do it instead 15:18 Helenah I'm trying to make an MMORPG, infact, I might just have this as a game instead of a mod now because it's getting pretty forceful but then I suppose I could provide a configuration option for server admins on whether they want players to be forced to play as a race and class or not. 15:19 [MatrxMT] whats a morg 15:19 [MatrxMT] a morgue is where they keep dead people 15:19 [MatrxMT] mmorpg* 15:19 [MatrxMT] (use a search engine) 15:20 [MatrxMT] bruh why am i so stupid sometimes 15:20 [MatrxMT] I'm guessing autocorrect did that 15:20 Helenah For me, it makes no sense to have an MMORPG where a player can opt out of being a member of a race or class, but then I've heard some server admin wanting to implement that choice into their own server, I suppose for him, it makes sense because that server didn't start as an MMORPG and he wants to keep things fair. 15:21 [MatrxMT] It's easier to code for fewer possibilities 15:21 Helenah Yeah 15:22 Helenah It's going to be an API, that's my intention so it makes sense to open up as many possibilities as possible. 15:22 [MatrxMT] you could write an MMORPG game, tossing existing games aside, or you could write a mod to add MMORPG elements to an existing game(s) 15:22 [MatrxMT] McMMO (for the proprietary game) would be an example of the latter 15:23 Helenah It's currently a mod, it went from a game to a mod. 15:23 [MatrxMT] well, mcMMO is probably most like runescape of all MMOs.. so grindy 15:23 [MatrxMT] no races, just skilling up when you repeat actions and sometimes gaining new benefits 15:24 Helenah Oh yeah, played runescape and remember all that, this has races and classes, register_race() and register_class() 15:24 [MatrxMT] game to a mod is not the typical way around, interesting 15:24 Helenah You can define the level scaling, etc, etc, etc, base stats, you name it. 15:24 [MatrxMT] I hope you're not just stretching yourself trying to please more peopl 15:25 Helenah This isn't about pleasing, I just think Luanti deserves a proper MMORPG engine. 15:26 [MatrxMT] thing is, when I think of MMOs, I think of custom engines 15:27 [MatrxMT] minecraft MMOs are the exception rather than the rule. I'm not up with how custom those are, but they would surely be made of many plugins per server 15:30 Helenah Yes, I mean, I have shortfalls, I can do MMORPG style music, I can write code, where I think I'll fall short is when it comes to graphics design for items, nodes, etc, that's where I think I'll fall short, as an API, people will be able to expand their luanti based MMORPG all they want and as much as they like, adding what they feel they can add, 15:30 Helenah whether it be new items, new nodes, new races, classes, spells, potions, you name it. 15:30 Helenah New levels... and new XP definitions, etc, new armour. 15:31 Helenah It will allow for a system of modularity as an API too in that people will have freedom to define how MMORPG works on their own server. 15:32 Helenah Like, I'm thinking anything I implement, there should be some alternatives, like if I implement a feature, there should be an option to disable it or define it. 15:32 [MatrxMT] modularity 15:33 Helenah Yes, it will be a mod that uses mods created by others, I might make a basic mod to go with it myself, to demonstrate it. 15:37 Helenah It may actually attract more to luanti, I spoke to some players of MMORPGs, who play the likes of guildwars and runescape, they think it's an excellient idea, the idea of a sandbox where you build and create and explore that has incorporated into it an MMORPG. 15:40 [MatrxMT] come to think of it, a lot of MMOs have separate character selection and creation screens. Those would be what is presented after logging into the Luanti server 15:40 Helenah I think Blizzard wanted to implement little sandbox type guild houses into WoW, but they must've gone back on that idea a long time ago because when I messed with their test features around all that, it was like "Cast this spell, right now, you can dump a guild house down with your cursor", but in a finite world like WoW where most areas are 15:40 Helenah populated, would that have been sustainable? :D At least with Luanti, a community can define their own world. 15:40 Helenah Yes, I got that code working. 15:41 [MatrxMT] doesn't that conflict somehow with your initial question today? 15:41 Helenah You define races and classes, when you log in, these defined races will show into a scrollbox, selecting one, a set of classes which you can play as that race will show up into another scrollbox, you can from a dropdown box select gender, upon clicking Create, you are teleported to the starting area for that particular race, I did not implement a 15:41 Helenah creation bit for skins though. 15:42 Helenah Not sure, what do you mean? I just felt it was janky to spawn in one place only to spawn into the other, but if that's the only solution, that's the only solution, right? 15:42 [MatrxMT] oh I see, it's in formspecs and those can be closed, except in 5.12 15:43 [MatrxMT] I was thinking you could attach the player to an immobile object and show them the real character as an entity in front of them while they customiseit 15:44 Helenah I mean, that's definitely doable, I've seen UIs in luanti like that. 15:45 Helenah Along those lines, I was thinking two days ago that if I was to implement something like that, I'd have per-race skins so that a human looks like a human, a dwarf looks like a dwarf and so on and so forth, and of course when using register_race(), the developer will be able to define skins available for race. 15:47 Helenah When using register_race(), it kind of looks like register_node(), etc, in that you pass into it a name for your race, and a structure, or as lua calls it, a table, this table contains all the different attributes. 15:47 [MatrxMT] have you seen https://forum.luanti.org/viewtopic.php?t=28251 ? 15:50 [MatrxMT] register_racisim 15:51 MTDiscord counter proposal register_ban 15:57 Helenah Oh wow, I had not seen that... that's cool! 15:59 Helenah Bracket: It has the terminology "racial" 16:02 [MatrxMT] Hey, this is the skins mod from which mcl_skins descends 16:10 [MatrxMT] Is it also impossible for Lua mapgens to provide heightmaps of their own 16:57 Helenah I wonder how feasible different armour types would be, for example, cloth, mail, plate and leather... 16:59 Helenah It would be nice if different classes would wear different materials from each other, for example, a druid being only able to wear leather and cloth, a warrior being only able to wear mail and plate. 17:31 [MatrxMT] never seen it be the cast that plate classes can't wear lower classes of armour like cloth 17:31 [MatrxMT] *the case 17:32 [MatrxMT] anyway, not particularly hard, just use a custom field for it and check the armour class against the player's proficiencies 17:32 [MatrxMT] when trying to equip 17:37 MinetestBot 02[git] 04lhofhansl -> 03luanti-org/luanti: Use MapBlock::copyTo to fill MeshMakeData 13fcbf05f https://github.com/luanti-org/luanti/commit/fcbf05fc3030dbf5519f2ba748c89604a669a3a6 (152025-06-27T17:36:33Z) 18:44 Helenah One thing that just came to mind is, I need to incorporate some way in which... via my API, developers can say use the armour, weapons, etc of other mods, applying things like classifications (cloth, leather, etc) to them, etc. 20:25 pgimeno is it possible nowadays to make conveyor belts that can transport players? 20:36 MTDiscord Yes 20:40 Helenah pgimeno: Yes, a server I have played on (LinuxForks) used a conveyor belt within a train station, it seems if I stood on it, it would move me. 20:41 Helenah Like you could use conveyor belts as one of those band type escalators, not sure if you've seen those, at least in the UK, it's stair escalators which are common, but I had once seen a band type one. :) 20:51 pgimeno how is that done? set_physics_override perhaps? 20:52 sfan5 the other way I can think of is attachments 20:52 pgimeno I actually don't see how set_physics_override can help, if there's no possibility to set a force acting continuously on the player, but maybe I've missed something 20:53 MTDiscord You can add velocity, or you could attach, or you could moveto in increments which would trap them 20:53 MTDiscord add velocity is how I send you flying in tnt 20:53 pgimeno add velocity how? 20:54 MTDiscord player:add_velocity(vector.new(1,2,3)) 20:54 pgimeno ahh thanks 20:54 MTDiscord You're welcome. You might want to make a little ledge in the conveyer so the player cannot auto step over it 20:55 pgimeno so that could also be used for, say, a water current that doesn't allow the player to swim upstream, right? 20:55 pgimeno tombraider-like 21:04 MTDiscord Yes, but you are at the mercy of the server step and if the player is making contact with the ground 21:04 pgimeno yeah I was wondering about the server step too 21:06 MTDiscord your biggest enemy in luanti is not the dungeon master as commonly believed: it is the server step 21:37 Helenah I was just thinking, MMORPGs tend to have items with stats, that's fine, it makes sense for how an MMORPG works, but their style is fixed, what if... there are armors along with their stats that can be made, but you have the freedom to define how it looks... I know in WoW, you get something called transmogerification, or however it's spelled where 21:37 Helenah you could for example have "Red Leather Vest", it would be a red leather vest, literally have the attribute "leather" applied to it, and also a red design, with transmogerification, you can say apply the design of another piece to this item. I don't like that though, it's janky, it would still be called "Red Leather Vest", just it would look like 21:37 Helenah another item in-game, but hey, this is not WoW, it's Luanti, and I'm coding an MMORPG engine mod for it, so I could come up with a nicer solution, just need to work out how to go about such. 21:41 Helenah I have an idea, what if players could somehow stat their armour, so they'll make a piece of armour, then they would stat it, for example, applying to it 3 stamina or whatever, I know in WoW, you have things such as armour kits where if you apply them to a piece of armour, it ups the armour stat on the piece, and there are enchantments which can be 21:41 Helenah applied to the armour to change other stats, for example, the spirit stat or the agility stat or whatever, hmm, of course I don't want to copy WoW, but I am looking into other MMORPGs for ideas, seeing how they go about things, seeing how I could do these things better. 21:46 Helenah With Luanti being more about freedom than an MMORPG is, in that it's a sandbox, you create items, you craft things, you build structures, you create towns and cities, and it's all blocks in a world, it's very dynamic and flexible, I'm thinking an MMORPG engine for it should try to be as dynamic and flexible as possible, allowing many freedoms as 21:46 Helenah possible, that means I believe players should have some control over the definition of their armour, their items, weapons, staffs, swords, you name it, I don't think it should be as simple as kill a mob, look some armour, it has a load of base stats and you may be able to up those stats a bit, and that's all there is to it, it could be a bit too 21:46 Helenah rigid for an engine like Luanti, also, perhaps when it comes to Luanti, armour shouldn't be dropped by mobs, simply crafted. 21:52 Helenah Sorry, for my monologue, what do you guys think of the idea of trainer NPCs? I like that idea, I don't think players should simply have spells, skills, etc as they level up, there could be Race Trainers, Class Trainers, and trainers for different skills. You'd go to a trainer, you pay the trainer in return for knowing new spells, abilities, having 21:52 Helenah new skills. I was thinking of a function like "register_npc()" where you would register an NPC, giving it a name, defining what type of NPC it is, NPC types could have corresponding formspecs and functionality. I just want to hear opinions from developers, there could be limitations I'm not aware of or that didn't come to mind, some idea of mine 21:52 Helenah could be unfeasible. 22:24 Helenah celeron55: Is there any issue with me calling a project "LuantiRPG"? Originally, it was called "Luanti RPG", in code, it was called "luanti_rpg", it seems the channel name "#luanti-rpg" looks better than "#luanti_rpg" but clashes with your project channel namespace, plus you have channels like "#luanti-dev", I am of course not trying to seem like 22:24 Helenah my project is something to do with the Luanti development team, anyway, I have decided to rename the project to "LuantiRPG" (Note there is no space now), I hope it is fine that I create the channel "#LuantiRPG". 22:25 Helenah I mean, I thought of naming my project like this because the name of the project is self-descriptive, it's a Luanti RPG engine. 22:42 MTDiscord not all luanti games have a dungeon master what were they on about 22:44 MTDiscord He was joking around about the fact that your biggest enemy is not the enemy in the game, it's getting your mods/game running in the engine. The dungeon master used to be part of the actual engine. This was a reference to this 22:44 MTDiscord oh ok 22:44 MTDiscord We are old peoples 23:32 Helenah orwell96: Long time, no chat! :D 23:32 Helenah How are things going? :)