Time Nick Message 00:38 Ruslan1 I still can’t login to minetest forums 00:41 Ruslan1 Can anyone fix my account in minetest forums 02:06 Extex How do I get the text from a text list based on an index? 02:07 Extex So I've got the textlist 02:07 Extex And I need to get the number selected (comes out as "CHG:#") 02:08 Extex And I need to get the text contained at that index 02:08 Extex Of the textlist 02:22 luk3yx Extex: You'll have to store the text server-side. 02:23 Extex Ya I am.. But how would I get the index when the output is "CHG:#"? 04:03 oil_boi_ So if you set_attach to the player you can no longer see the object? 05:49 solrac Hello. I wanted to know if there were more technical requirements (RAM, GPU 'generation', etc) I ask cause I am contemplating a rather ambitious port that I'm almost certain it might be impossible 09:34 sfan5 solrac: you need a c++11 compiler for your target platform; your target platform needs to be supported by sqlite3; [Irrlicht-related requirements] it needs to have either OpenGL or GL ES (officially supported) or DirectX 8 or 9 (not explicitly supported, but works); Irrlicht needs to know how to create a window and/or rendering context plus how to do keyboard/mouse input 09:34 sfan5 the RAM requirement is roughly the same everywhere, the processor does not matter it just can't be too slow or nothing will work out in the end 09:40 sfan5 to be more precise on GL/GLES: I think the minimum OpenGL requirement is somewhere around 2.x (2.0?). With OpenGL ES either 1.0 or 2.0 are supported by Irrlicht and work with MT. 09:44 solrac Thaks for the replies! I was contemplating the original Xbox, I noticed a bare MTG runs with 68~mb of ram, and sadly the OGXB has 64, so I was thinking maybe reduce few things here and there. But while thinking, I'd figured I might go for Switch instead. 09:44 solrac That being said, I believe there is no Controller support just yet, correct? 09:45 sfan5 I have seen some code for joysticks here and there but I don't know how well it works 09:46 solrac Also I Apologize for my late replies and ignorance, I just got back ^^" 09:47 sfan5 no need to apologize 09:48 sfan5 oh and one more thing: Minetest relies that there is a working filesystem exposed by the C and C++ standard library, it'd not be impossible to replace this with a custom implementation to use system-specific way, but that'd be potentially a lot of work 09:49 solrac Could it look for a subfolder of wherever it might be running? 09:49 sfan5 "working" here means that it can read its assets from the fs and freely create and write files to save user data 09:49 solrac Understandably so. 09:49 sfan5 sure you can make it use any path you desire 11:47 Elouin Hi, in minetest only the server needs the mods/subgame installed not the clients, right? 11:48 sfan5 correct 11:50 Elouin ? 13:26 solrac Hello again. Can this game be compiled with static linking instead of dynamic linking? I'm not exactly too familiar with how CMake does things tho 13:32 sfan5 sure 13:32 sfan5 add -DCMAKE_EXE_LINKER_FLAGS="-static" to your cmake invocation 13:32 solrac is there a way to do it in a config by chance? 13:33 sfan5 what are you referring to by "config"? 13:33 solrac or I imagine the CMakeList.txt 13:34 sfan5 you can also put set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static") there, yes 13:34 solrac thanks! 13:45 solrac For some reason my tool ain't reading it (same no -rdynamic error) but I believe it's apart 13:51 sfan5 made sure to delete the cmake cache before running it again? 13:57 solrac Had to add a toolchain and clean. thank you tho ^^" Installing missing packages atm 15:03 Andrey01 I noted there are pretty lots of players on servers lately 15:04 Andrey01 regularly totally about 720-750 players online 15:07 sfan5 people have too much time on their hands due to corona 15:07 solrac Server has be de-canceled due to Corona Virus 15:07 Andrey01 I thought about it, too 15:09 Andrey01 Wow, now already 840 online 15:16 MinetestBot 02[git] 04sfan5 -> 03minetest/minetestmapper: Fix bug introduced in 9096f70 1384c4fc4 https://git.io/JvH6y (152020-03-27T11:45:31Z) 15:16 MinetestBot 02[git] 04sfan5 -> 03minetest/minetestmapper: Sort out include path mess in CMakeLists 13a160dc0 https://git.io/JvH6S (152020-03-27T10:19:25Z) 15:32 MinetestBot 02[git] 04sfan5 -> 03minetest/minetestmapper: Properly support -DENABLE_REDIS=TRUE even if library is not found 1304b9dff https://git.io/JvHiC (152020-03-27T15:27:55Z) 16:35 sfan5 !tell JDCodeIt ping 16:35 MinetestBot sfan5: I'll pass that on when JDCodeIt is around 16:36 MinetestBot JDCodeIt: Mar-27 16:35 UTC ping 16:38 JDCodeIt sfan5: ping right back at ya 16:38 sfan5 coincidence? 16:38 JDCodeIt You believe in those? 16:38 sfan5 it happens, sometimes 16:39 sfan5 the slow performance you had with minetestmapper was with an sqlite3 world right? 16:39 JDCodeIt Yes 16:40 sfan5 I have implemented some optimizations so it uses a range query whenever possible 16:40 sfan5 if you have some time, I'd appreciate some testing https://github.com/minetest/minetestmapper/tree/next 16:41 JDCodeIt At least on "Z" or all axes? 16:41 sfan5 Z-only 16:41 JDCodeIt I'll download and run against that large file... 16:42 sfan5 range queries for the other axes are not possible due to the pos hashing as far as I understand it 16:42 sfan5 I did implement range queries for all axes in the postgres backend though 16:43 JDCodeIt I read the section - any chance the map storage would change in future? 16:44 sfan5 in terms of the serialization or the storage on disk? 16:45 sfan5 for the latter any future changes will come in the form of a new backend that server owners can migrate to 16:45 JDCodeIt I meant getting rid of the hash concept and going to three part key, for example 16:48 sfan5 someone proposed that once IIRC and it wasn't done at the time, might actually happen in the future if the coredevs consider the change justified 16:59 JDCodeIt OK, it's running now on a test picture 400x400 -2 to +50 in Y. The first message says : Failed to parse color entry 'coloredwood:slope_wood_medium_redviolet_s50_outer_cut_half_raised 102 37 70' 17:00 sfan5 !c len("coloredwood:slope_wood_medium_redviolet_s50_outer_cut_half_raised") 17:00 MinetestBot 65 17:00 sfan5 I guess I could allow node names up to 128 in length 17:02 JDCodeIt or CString? 17:03 JDCodeIt I ran the old code last night for 9 of these pictures - took about 10 hours 17:11 JDCodeIt Just wondering why not compute the block hashes that include the 3D node ranges and only feed this sub-set to the rendering routine 17:29 sfan5 that's only faster if you reach a certain percentage of lookups you make and blocks that actually exist 17:30 sfan5 and doesn't work particularily well if you want to render the entire map 17:35 JDCodeIt Seems like a query optimization step may be needed to approach the problem efficiently 17:35 JDCodeIt 40 minutes and still running to make the picture 17:38 sfan5 I still plan to implement your suggestion, but I'm wondering what a good heuristic would be so it doesn't try to exhaustively search e.g. an entire map 17:39 JDCodeIt Maybe break the problem into manageable chunks when it's a big one. Smaller areas like I'm trying might just fit into a single chunk 17:40 JDCodeIt The mapper just finished at 45 minutes - better than 90! 17:40 sfan5 great! 17:40 sfan5 can you run a 'SELECT COUNT(*) FROM blocks;' on your map file? 17:40 JDCodeIt ...and it has colors and everything! 17:41 sfan5 !c 400 % 16 17:41 MinetestBot 0 17:42 sfan5 !c (400/16) * (400/16) * (52/16 + 1) 17:42 MinetestBot 2656.25 17:42 sfan5 !c (400//16) * (400//16) * (52//16 + 1) 17:42 MinetestBot 2500 17:47 JDCodeIt Sorry I didn't have the CLI installed, took a minute, and opening from the browser is a bit of a non-starter 17:49 JDCodeIt it's taking its sweet time counting the records 17:50 sfan5 hm I would have expected counting to be O(1) 17:54 JDCodeIt Guess it's a ton of i/o 17:55 sfan5 sqlite does have an index of the database contents though... 18:00 sfan5 ...are you sure it's taking more than 15 minutes to count the blocks? 18:02 JDCodeIt over 1.0 load on the system, yes it's doing something 18:02 JDCodeIt How cool is that? 18:02 JDCodeIt CPU load bouncing between 1.1 and 2.7 (2 core machine) 18:03 sfan5 o.O 18:03 JDCodeIt Just returned the value - 9764215 18:04 DS-minetest you can do ".eqp full" before doing the sql query to see the query plan 18:05 JDCodeIt error not a boolean value "full" 18:06 sfan5 !c "%.1f%%" % (2500 / 9764215 * 100) 18:06 MinetestBot '0.0%' 18:06 sfan5 eh 18:06 sfan5 !c "%.20f%%" % (2500 / 9764215 * 100) 18:06 MinetestBot '0.02560369676415359674%' 18:06 DS-minetest JDCodeIt: then try "on" or "true" instead of "full" 18:07 DS-minetest (but it probably won't show interesting information anyway) 18:08 JDCodeIt I get 0|0|0SCAN TABLE blocks USING COVERING INDEX sqlite_autoindex_blocks_1 18:10 DS-minetest yeah, I get the same 18:11 DS-minetest btw. JDCodeIt what's your sqlite version? 18:11 JDCodeIt version 3.11.0 18:12 DS-minetest (oh, and feel free to ignore me, I'm not helpful anyway) 18:13 sfan5 guess I can't run count(*) to determine if blocks should be exhaustively searched 18:16 JDCodeIt interesting if I include a keyed field this thing flies: select count(*) from blocks where pos between -1000000000 and 100000000 - less than a second 18:17 JDCodeIt I missed a couple zeros there but you get the idea 18:18 DS-minetest and what's the result then? 18:18 JDCodeIt the query plan is SEARCH TABLE blocks USING COVERING INDEX ... 18:18 JDCodeIt same number 9764215 18:18 DS-minetest ah 18:18 sfan5 huh 18:18 DS-minetest weird 18:21 JDCodeIt TABLE SCAN is usually never a good idea. 18:21 DS-minetest have you tried running select count(*) from blocks; again? maybe it's faster now 18:22 JDCodeIt You're right - it's cached now 18:22 DS-minetest or maybe sqlite added an index 18:22 JDCodeIt it can? seems odd to not control such things 18:23 DS-minetest https://www.sqlite.org/optoverview.html#autoindex 18:23 JDCodeIt They say "single statement" but is it actually the duration of the connection session? 18:27 JDCodeIt i think the plan is referring to the Internal index created because pos is unique 18:28 JDCodeIt Could it take 15 min to read the index the first time? 18:28 DS-minetest if I do .indexes blocks, I also get sqlite_autoindex_blocks_1 18:31 JDCodeIt I quit sqlite3 and went in again. The query is still fast with and without the where clause. Must be buffered in RAM? 18:32 adfeno Hi all, when using xdecor mod, how do I break xdecor:cobweb ? 18:33 sfan5 tried using a sword? 18:33 adfeno Im using a silver sword, but nothing happens 18:34 JDCodeIt groups = {snappy = 3, liquid = 3, flammable = 3}, 18:36 adfeno sfan5, JDCodeIt: Oh, so silver is weaker than bronze 18:37 adfeno Swords at least 18:37 DS-minetest https://github.com/minetest-mods/moreores/blob/e3d8f88e9cbfe2582056ec6987cff005e3e5c379/init.lua#L276 18:37 JDCodeIt Depends on how the sword_silver is implemented in moreores 18:38 DS-minetest !title 18:38 MinetestBot DS-minetest: moreores/init.lua at e3d8f88e9cbfe2582056ec6987cff005e3e5c379 · minetest-mods/moreores · GitHub 18:38 DS-minetest there's a time for snappy 3 18:41 adfeno Hm, perhaps the moreores mod version being used is older than that commit 18:47 JDCodeIt sfan5: I guess I need to reboot that box to see if the slow query is a first time read thingy 18:47 sfan5 you can also drop caches without rebooting 18:53 DS-minetest did you know that farming in mtg is easier at world boarders? 18:53 DS-minetest soil won't dry out 18:54 JDCodeIt did a boot anyway - yes it's slow again even with the SEARCH TABLE plan 18:56 JDCodeIt The file system is ETX4, so should not suffer from fragmentation so much - maybe this is just thrashing the disk 18:59 JDCodeIt e4defrag says it is 162 fragments which doesn 18:59 JDCodeIt t seem awful 19:19 JDCodeIt sfan5: you mean sync; echo 1 > /proc/sys/vm/drop_caches ? 19:19 sfan5 yea 19:57 oil_boi_ texmex: Alright, I'm gonna try it, here we go 19:57 oil_boi_ texmex: I'm also working on a new mob creation tool which will make the head seperate from the body so the mob can look around 19:58 DS-minetest ^ I did that once with a tank 20:00 DS-minetest question: do we still need to use things like MutexedQueue in c++11? 20:01 sfan5 what would you propose instead? 20:04 DS-minetest using std::dequeue directly (at https://en.cppreference.com/w/cpp/container there's that c++11 thread safety block) 20:06 DS-minetest (but I'm a bit confused. does "can be called concurrently" mean that you are safe if you try calling it from multiple threads or that there are concurrency-problems because it doesn't lock?) 20:08 DS-minetest ah, forget it, I understand now 20:10 sfan5 JDCodeIt: here's another thing to test https://github.com/minetest/minetestmapper/tree/next 20:11 sfan5 if you use it with the narrow limits from before it'll try to grab the 2500 blocks it needs directly without ever making a single range query 20:11 sfan5 ...which should be much quicker than the previous run of 45 minutes 20:12 JDCodeIt Ok will give it a go - but traversing the file entirely with the count(*) takes 17 minutes alone. 20:12 sfan5 don't worry it doesn't do so 20:19 JDCodeIt 16 seconds first time, less than a second on a re-run 20:20 JDCodeIt Incredible 20:20 JDCodeIt What was the main structural change? 20:22 JDCodeIt Would this also avoid the problem where table locking starts to occur and really make minetestserver angry? 20:36 sfan5 does a read query lock the database? 20:36 sfan5 the main structural change is this -> Just wondering why not compute the block hashes that include the 3D node ranges and only feed this sub-set to the rendering routine 20:37 JDCodeIt Right I see that in the change log - now I'm checking how it scales with a 8000x8000 image 20:38 sfan5 the only remaining problem is to come up with a heuristic to devide when to do this and when to do the usual thing 20:39 JDCodeIt If this takes about 26 minutes, it's linear 20:40 sfan5 should be 20:41 sfan5 a better question is: would rendering that 8000x8000 image the usual way been faster? 20:41 sfan5 still using --min-y -2 and --max-y 50 ? 20:42 JDCodeIt Yes, same Y range. You mean the "next" version just before this one? 20:42 sfan5 yes 20:42 sfan5 !c (8000//16) * (8000//16) * (52//16 + 1) 20:42 MinetestBot 1000000 20:43 JDCodeIt Non-linear - took 16 minutes 20:43 JDCodeIt 24 MB image file 20:44 JDCodeIt You can see where players went on a walkabout 20:47 JDCodeIt Do you expect 90 minutes or more for such a large area using the old code? 20:47 DS-minetest does anyone here know how to use doxygen in minetest? 20:47 JDCodeIt I'm going to run the whole map just for grins 20:47 sfan5 likely hours 20:48 sfan5 and now that you mention it, I don't think you need to test that; it will be terribly slow either way 20:49 JDCodeIt !c (62000//16) * (62000//16) * (52//16 + 1) 20:49 MinetestBot 60062500 20:51 JDCodeIt If a lot of the blocks are not generated, think it could speed through those sections? 20:51 sfan5 how would it know without doing a range query? 20:52 JDCodeIt Not to know in advance, but I'm wondering how long this will run now with the current code - maybe overnight... 20:52 sfan5 hm, there's still some potential, it could run just one range query instead of a bunch 20:54 JDCodeIt Anyway one cannot do something that large - exceeds INT_MAX 20:54 DS-minetest ah, I have to do make doc 20:56 DS-minetest apparently the description the introducing commit is the best source of information here XP 20:57 JDCodeIt 16000x16000 image generation is running just over a gig of RAM 21:01 JDCodeIt The 16 minute job had lots of space that was not explored yet, so maybe this is why it performed better than linear 21:11 oil_boi_ Ah man, I don't think there's any doc for this https://github.com/minetest/minetest/blob/master/doc/lua_api.txt#L4472 21:12 sfan5 which documentation are you missing? 21:13 JDCodeIt documentation for the documentation? 21:13 oil_boi_ sfan5: Ohhh, that submenu doesn't reference https://github.com/minetest/minetest/blob/master/doc/lua_api.txt#L2819 that's weird 21:18 JDCodeIt Interesting - 19 minutes for the 16000x16000 image 21:19 JDCodeIt Vast majority of the map is unexplored 21:20 sfan5 !c (16000//16) * (16000//16) * (52//16 + 1) 21:20 MinetestBot 4000000 21:20 sfan5 interesting 21:20 sfan5 looks like I really need a good heuristic for this 21:30 JDCodeIt Well I like this code for my purposes - it hasn't been tested for other types of worlds e.g. skyblock 21:34 JDCodeIt It was fun going through that with you. I hope others will reap the benefits as well. 21:35 sfan5 sure, thanks for taking the time to test my changes 22:02 oil_boi_ texmex: I added in the cheat function 22:05 JDCodeIt sfan5: does a read query lock the database - yes something rather bad starts to happen if you try to read a world for a long time while the server is using the same file 22:06 JDCodeIt All the tests I did above were on an offline backup 22:08 JDCodeIt If minetest follows the sqlite protocol to obtain a SHARED lock until ready to write, then getting a RESERVED lock when writing, it all should work out 22:09 sfan5 what happens if the mapper is still inside a SELECT query while minetestserver wants to write? 22:09 sfan5 I don't see a way to avoid locking in that situation 22:10 JDCodeIt It has a journaling system, so this is what the doc says: Only one process at a time can hold a RESERVED lock. But other processes can continue to read the database while the RESERVED lock is held. 22:11 DS-minetest so, they always read the old version? 22:12 * DS-minetest wonders how many locks there are, just one for the entire db or one per table or some hierarchic thing or something else... 22:12 JDCodeIt READ processes are reading the disk image. Pages not written to the disk are in the journal. When all the reading processes are done, the journal in memory can be written to disk 22:13 sfan5 ah so that still blocks *something* but not the writing, it only blocks the journal merging 22:13 sfan5 unless this means that COMMIT will block, that would cause problems 22:14 JDCodeIt An explicit COMMIT will wait for the SHARED locks to be all gone - seems it could block the process trying to commit 22:15 DS-minetest so, if something holds a shared lock for a long time, minetest will always read the old version of the map 22:16 sfan5 sounds like it might be better for minetestmapper to use sqlite's backup functionality to take a snapshop of the db and let minetest continue working on it 22:17 JDCodeIt I think minetest is going to have to commit the change before reading back the block later, right? 22:19 JDCodeIt To be kind to the database, one should release the SHARED lock as soon as practical and often 22:20 JDCodeIt When the data base file needs to be written to the lock goes to PENDING - which delays new SHARED locks until the write is done 22:21 JDCodeIt So, instead of holding the lock during the whole activity, one should release it often and only gain it back when something new must be read 22:21 JDCodeIt docs - A PENDING lock means that the process holding the lock wants to write to the database as soon as possible and is just waiting on all current SHARED locks to clear so that it can get an EXCLUSIVE lock. No new SHARED locks are permitted against the database if a PENDING lock is active, though existing SHARED locks are allowed to continue. 22:22 JDCodeIt I think perhaps only the writer is trying to do this internally, not user code 23:18 MinetestBot 02[git] 04sfan5 -> 03minetest/minetestmapper: Implement --exhaustive y mode as another database access optimization 13cb8341a https://git.io/JvHAP (152020-03-27T23:14:47Z) 23:18 MinetestBot 02[git] 04sfan5 -> 03minetest/minetestmapper: Optimize database access further by allowing "brute-force" queries in… 137ff2288 https://git.io/JvHAX (152020-03-27T22:38:18Z) 23:18 MinetestBot 02[git] 04sfan5 -> 03minetest/minetestmapper: Rewrite DB class to allow backends to fully optimize block fetches 135b264fd https://git.io/JvHA1 (152020-03-27T19:30:13Z) 23:18 MinetestBot 02[git] 04sfan5 -> 03minetest/minetestmapper: Rewrite config file parser 13ecc2b31 https://git.io/JvHAM (152020-03-27T18:33:42Z) 23:19 sfan5 13 hours and I haven't done anything except programming 23:19 Extex Wow sfan you're on a roke 23:19 sfan5 yes, but I'm done now 23:19 Extex role* 23:28 nephele Heh, and here i am starting modding on minetest for the day :D 23:44 MinetestBot 02[git] 04sfan5 -> 03minetest/minetestmapper: Fix minY/maxY calculation (closes #66) 1348bf44c https://git.io/JvHxz (152020-03-27T23:40:38Z) 23:57 MinetestBot 02[git] 04sfan5 -> 03minetest/minetestmapper: Fix another bug in the Redis backend 13539bdbd https://git.io/JvHxb (152020-03-27T23:56:11Z)