Time Nick Message 13:23 spillz Is there any interest in making a c++ api for mods? seems like it would be a reasonably simple thing to do. Instead of an init.lua, there could be a mod.so or mod.dll that gets loaded dynamically on server start. The Code::Blocks IDE has a c++ plugin framework that could serve as a model. With well designed headers the api is self documenting. 13:25 troller too hard for users, but will 10-100x faster 13:29 spillz Not as a replacement just an alternative... 13:30 troller try compile this mod for windows ;_ 13:32 spillz No worse than compiling the app itself. (but windows really stinks in this regard) 13:34 troller <10 ppls can compile mt on windows 13:38 spillz really? why is it so hard? 13:39 celeron55 i believe it is not worth the effort 13:39 celeron55 if somebody believes it is, then make it and prove otherwise, but until that this is what i think 13:39 celeron55 there will also be a rather large maintenance overhead 13:39 celeron55 we already have too much to maintain and it slows down development 13:46 spillz Fair enough. I will give it some more thought ... mostly thinking about performance of map gen stuff, which still seems a little slow even with luajit. 13:52 spillz For the record, boost.extension could probably be used to handle shared lib loading http://boost-extension.redshoelace.com/docs/boost/extension/boost_extension/tutorials/tutorial02.html 13:53 celeron55 i would suggest people to focus on other things than map generation 13:53 celeron55 it's not really minetest's weak point at the moment 13:54 spillz What is? 13:54 celeron55 almost everything else 13:55 celeron55 seriously; if minetest does something reasonably well, it's map generation 13:55 celeron55 point at any other part of it and it's probably worse than the competition 13:56 spillz The core or the Lua ones? 13:56 celeron55 (altough we don't have rather direct competitors) 13:56 celeron55 mostly referring to the engine side of things 13:56 celeron55 if the engine supports something, the content will be created; it's not really an issue 13:59 spillz For me, the worst part is the lack of cohesion between the third party mods 13:59 spillz Some people seem intent on just recreating minecraft 13:59 celeron55 it's a problem, yes; the problem of lack of packaging of content into product-like things 14:00 celeron55 if somebody can improve the situation on that, it would be great (and it's not even a technical challenge) 14:01 spillz others just do the usual open source thing of throwing incomplete idea over the wall. 14:01 celeron55 i've experimented a bit on slightly different games that use minetest and will continue on that, but i don't have anything fully-made enough to be worth trying to play 14:02 spillz Maybe having a handful of key game ideas that people can contribute to? 14:02 celeron55 making those involves not using every part of minetest fully and it has to be accepted 14:03 celeron55 this is one of my tests, if someone needs inspiration: https://github.com/celeron55/dungeon 14:03 celeron55 it's a very rough dungeon-only game 14:03 celeron55 which doesn't work as-is anymore because of things, but anyway 14:04 celeron55 (it should work if the correct mods are copied into it) 14:07 spillz interesting. are any of the servers running interesting games? It looks like most are going for more of a second life in a blocky world vibe. (not that I have even played second life) 14:08 spillz my son suggested a cops and robbers game in a living city. I had to explain GTA to him. He was like, we this could be the kid friendly version... 14:08 celeron55 at least they don't differ a lot from it 14:09 spillz *we = well 14:10 celeron55 well if anything is done, it should take some form of advantage of the two things minetest is designed to do: generating worlds easily (because they consist of a simple 3D grid) and modifying worlds (because of the same reason) 14:10 spillz The mods allow story telling right? e.g. If certain events triggered, then other things in the game happen 14:10 celeron55 it doesn't make sense to do anything that doesn't use those features because in those cases using something else is much more beneficial for the end result 14:11 spillz In the GTA style game, he wanted base upgrades instead of clicky building, which could be interesting. Having the city transform as you play... 14:13 celeron55 oh also 14:13 celeron55 i almost forgot the most important feature 14:14 celeron55 which is multiplayer over network 14:14 celeron55 if you don't use that, then you don't use 75% of minetest at all 14:14 celeron55 which again makes it very suboptimal 14:15 spillz The other idea I had was a giant ant colony. (which you could expand to a giant insect world) 14:15 spillz Yes the Multiplayer is very important part and comes almost for free... 14:16 celeron55 one thing that many things would require is some kind of global handling of entities 14:16 celeron55 there should probably be some kind of mode in minetest where it would limit the area of the world to some manageable size, and always load every entity in memory and always run everything instead of keeping the world passive everywhere except around the player 14:17 celeron55 it's rather controversial but would allow a lot of use cases 14:17 celeron55 almost every actual game would need that mode 14:17 spillz yes, I was wondering about that. 14:17 celeron55 the only thing the infinite mode is useful is those "other life" servers 14:18 celeron55 the issue is, people would probably want very large worlds nevertheless 14:18 celeron55 and then it needs some kind of efficient global handling of entities where not all details are cared of 14:19 celeron55 which likely makes actually implementing content quite cumbersome and bug-prone unless everything is practically the same 14:20 celeron55 if you're brave enough to design (= think of what features are actually needed and what would be unnecessary work and what can actually be afforded and what people actally need) and implement that mode in some way, feel free to 14:23 spillz to a certain extent all you need is a large enough range around the player to be alive, and then as you say some sort of global entity tracking such that even if those entities are in inactive parts of the map, they still respond to game events (e.g. get removed, teleported to new places etc) 14:33 CiaranG So just let the entities decide when they need to be active, and let the rest of the 'infinite' world stay passive. https://github.com/CiaranG/minetest/commit/f5b73e0baabbfe68bc6a9a52c5221930e4306ed2 14:50 spillz CiaranG: That looks useful. even without that patch I guess it is possibly to access and modify inactive objects? or do they become completely unloaded if inactive? 14:51 spillz *possibly = possible 14:55 CiaranG Completely unloaded as far as the engine is concerned, but I track them in the mods so they still kind of 'exist' 14:56 CiaranG i.e. they can be re-awakened if necessary 14:56 CiaranG Doesn't really need engine support for that 14:57 CiaranG Although I will probably add it, because it's messy doing it from lua 15:40 celeron55 16:33:59 < CiaranG> So just let the entities decide when they need to be active, and let the rest of the 'infinite' world stay passive. 15:40 celeron55 yes, but when to activate them? 15:40 celeron55 if you rely on the player walking past them for activation, it's broken for most use cases 15:41 celeron55 do you poll each entity at world startup? do you store a list of the previously activated ones to be reactivated at world startup? 15:42 CiaranG currently - not all, and yes, respectively 15:42 CiaranG i.e. if they were active when the server shut down, I poll them, otherwise not 15:43 CiaranG and yes, I keep a list of them 15:43 CiaranG Like I said above, it's messy :( 15:43 celeron55 it should definitely be in the engine 15:45 CiaranG I'm sure I'll do that in the end. For now, I just wanted something that worked. 15:45 celeron55 this will actually be useful for my current experimental project too 15:46 celeron55 where is your lua code that you use for re-awakening them? 15:46 CiaranG Only on my machine at the moment 15:46 CiaranG But it just uses that 'forceload' thing 15:46 celeron55 oh, that thing is horrible 15:47 CiaranG I can clean it up and push it somewhere if you like, but there's not much to it 15:47 celeron55 it should be removed for starters 15:48 celeron55 i think that if lua wants to load something without it being "owned" by an entity of some kind, then it must do it in a way that doesn't make the engine save them 15:48 celeron55 because they will just get hopelessly out of sync and nobody will understand what is going on 15:48 CiaranG Exactly 15:49 celeron55 you have my full permission to make every part of that happen 15:49 CiaranG When I want something non-entity-based (like a factory) to stay loaded, I just put an entity there 15:49 CiaranG Which has the added benefit of looking cool. Factory manager pacing around the place looking at the machines all day ;) 15:49 celeron55 (and also, make sure to shout here about your pull requests (applies to anyone though)) 15:50 CiaranG Hmm, this idea has already been rejected twice I think. I decided it was a waste of time trying. 15:51 CiaranG If I understand correctly, the forceload 'thing' was done instead of a previous thing similar to my 'autonomous' entities 15:51 CiaranG Because "it's too dangerous" or something 15:51 celeron55 i wasn't overseeing the "forceload thing" at all 15:52 CiaranG Yeah, well I'm only relaying what I was told, I was awol at the time 15:52 celeron55 also, i don't care if it was declined previously; it doesn't matter now 15:53 celeron55 (other than that if it was, it's probably a good idea to look there and see what might have been good and bad about that implementation (if it was implemented)) 15:53 CiaranG Well, feel free to have a go with that change of mine in your project. I've been using it for a couple of months, it's very stable 15:57 celeron55 i might attempt extending it with a reasonable saving scheme 15:59 CiaranG That would save me a job ;) 16:00 celeron55 i always hate it when people half-ass some kind of persistent data minetest stores, so i probably should half-ass it myself 16:01 CiaranG The good thing about doing it half-assed first is it gives you a better idea of what's needed when you come to do it properly :) 16:02 celeron55 do something properly? not gonna happen until hmmmm loses his day job 16:03 CiaranG three-quarter-assed then 16:08 celeron55 when stuff like this is gotten into use, we should make some kind of built-in mod processing time profiling 16:09 celeron55 it should be fairly easy for the relevant case; it's just a matter of measuring how much processing time each type of entity consumes 16:09 CiaranG Something like this: https://forum.minetest.net/viewtopic.php?id=7355 but covering on_step as well 16:09 celeron55 and how much new area it loads 16:10 CiaranG Definitely should be a built-in feature - maybe there wouldn't be so many crappy mods if it was 16:12 celeron55 probably just a sliding window with maximum and average time or so, visible in the profiler screen 16:13 CiaranG I guess it would be nice to see it on screen, but then you have to send it to the client. 16:14 CiaranG Or to all clients, always. Unless you implement additional controls and protocol stuff for it. 16:18 celeron55 well the current profiler shows server information in singleplayer games 16:18 Guest87221 only half of this info useful 16:18 celeron55 and of course you can make it output stuff in the log 16:18 CiaranG Oh, does it? 16:19 celeron55 it's process-global 16:19 * CiaranG starts his first ever single player game 16:20 celeron55 there's not that much in it though, and it only lists totals or averages 16:20 celeron55 (peak values in case of averages would be useful) 16:22 Jordach CiaranG, all the devs should be doing that... 16:25 celeron55 there's for example the average server-side object count, which is already useful in debugging persistent entities 16:25 celeron55 (SEnv: num of objects) 16:30 CiaranG Ok, so it's the same kind of stuff I usually look at via: tail -f debug.txt | grep SEnv 16:30 CiaranG Much nicer to see it in game though, for some reason 16:35 celeron55 what the fuck 16:36 celeron55 http://i.imgur.com/wBO6akS.png 16:36 celeron55 this isn't even funny; who broke this? 16:37 celeron55 water does not react to lighting changes when shaders are enabled 16:38 VanessaE looks fine here, c55. 16:38 VanessaE (amazingly... my GPU has always been touchy with MT's shaders) 16:44 celeron55 VGA compatible controller: Intel Corporation 4th Gen Core Processor Integrated Graphics Controller (rev 06) 16:44 celeron55 in other words, the one integrated in mobile haswell i7 16:45 VanessaE that thing has shaders? O_o 16:45 celeron55 what? 16:45 celeron55 this runs even the automatically generated bumpmapping 16:45 celeron55 apparently also it's broken on this: 16:45 celeron55 VGA compatible controller: NVIDIA Corporation GK104GLM [Quadro K3100M] (rev ff) 16:46 VanessaE huh. 16:46 VanessaE ah, I don't have the latest changes in my client, I'm behind a few commits 16:46 celeron55 i'll try a rebuild 16:46 VanessaE since you mentioned the autogen bumpmaps 16:47 celeron55 rebuild doesn't work either 16:47 celeron55 i mean normal maps... oh well, some kind of fancy thing anyway 16:48 celeron55 looks like the commit before those normalmaps works fine 16:48 celeron55 where's RBA when we have to curse at him 16:50 VanessaE heh 16:52 VanessaE left him a message. 16:52 VanessaE you can yell at him later :) 17:55 sapier I can confirm the water glow bug :-) but it looks somehow nice ;-) 17:56 VanessaE maybe it's just radioactive :P 17:58 sapier 1986 there was some time till russian government did tell about the tschernobyl accident ... last time it's been asia ... VanessaE do you know about some major accident in america this time? ;-) 18:02 VanessaE ok call it Cherenkov radiation then ;) 18:02 sapier when was uranium ore added? 18:03 VanessaE heh, well if you have technic mod ;) 18:03 VanessaE http://en.wikipedia.org/wiki/Cherenkov_radiation 18:03 VanessaE anyway yeah, that'll need fixed, but no idea where RBA's gotten off to. he works a lot lately 18:04 sapier sam is quite robust considering the amount of radiation necessary to cause that much cherenkov radiation ... I know what it is, it's light emitted on electrons traveling at speed above light speed 18:04 VanessaE nope.avi 18:04 sapier to be exact specific light speed in an arbitrary medium 18:04 VanessaE any charged particle traveling faster than the *phase velocity* of light in the medium 18:04 VanessaE it can never travel faster than light speed regardless of the medium 18:05 celeron55 sam can also take horizontal hits from any speed and lasts multiple seconds submerged in lava 18:05 celeron55 he's a seriously tough guy 18:05 sapier ok ok ... but as alpha radiation won't even pass a piece of paper most of it will be electrons 18:06 sapier VanessaE light speed != light speed in vacuum 18:06 VanessaE sapier: I said in the medium :P 18:07 sapier yes basicaly same 18:07 VanessaE anyway that's rather off-topic :P 18:07 sapier true unless we wanna add exact physics simulation to minetest ... do we? 18:07 VanessaE no 18:08 VanessaE celeron55: I wonder if the water brightness has anything to do with the restructuring RBA did for this other pull he has 18:08 VanessaE (one sec) 18:08 celeron55 dunno, i'm going to let him figure it out 18:09 VanessaE hm, I guess he didn't issue the new request yet. 18:10 VanessaE he's got a new water shader in the works that looks *really* good 18:10 VanessaE I do know it requires some engine change that just went in with that last shader commit, but that's about all I know of the code-side of it 18:14 VanessaE last update I saw from him was 2 weeks ago, though 18:15 VanessaE something about a rewrite that improves the smoothness of animations 18:15 VanessaE and that it's going "slowly" 18:15 VanessaE (the progress thereof) 18:16 sapier VanessaE did you recently test my android build? 18:16 VanessaE sapier: haven't had a chance. what's new in it? 18:16 sapier basicaly it's about polishing for merge 18:17 sapier everything found now wont have to be fixed after merge 18:18 VanessaE oh ok 18:25 CiaranG Random statistic - 15x less time spent saving the map on my server with leveldb instead of sqlite 18:26 sapier interesting ... seems like we use quite a lot of leveldb's best case scenarios 18:27 celeron55 oh by the way, did someone test the PRAGMA synchronous=OFF feature of sqlite? 18:28 celeron55 i suggested it a long time ago and have no memory of if anyone tried anything 18:29 celeron55 i always see those comparisons as unfair because people aren't using the best settings of sqlite 18:29 celeron55 http://web.utk.edu/~jplyon/sqlite/SQLite_optimization_FAQ.html 18:29 sapier without a defined benchmark testcase comparison is hard, if leveldb is better in one usecase that may not tell about all the others 18:31 CiaranG In this particular case, mostly just nodemeta was changing - I suspect that has a lot to do with it 18:32 celeron55 oh wait 18:32 celeron55 we actually have that flag settable in minetest.conf already 18:32 sapier ciaranG do you think you can create some sort of benchmark with different testcases? Imho adding test and benchmark cases to minetest wouldn't be a bad thing 18:33 celeron55 CiaranG: please set sqlite_synchronous = 0 in configuration and re-test 18:33 celeron55 this will be valuable information 18:37 Guest87221 it will eat less disk, but sometimes 1-5-20... seconds on save 18:38 CiaranG huh 18:38 CiaranG Ok, sqlite is actually very slightly faster than leveldb, with synchronous=0 18:38 CiaranG (disclaimer: in this very limited unscientific test scenario) 18:38 celeron55 lol maybe it should be the default 8) 18:39 * VanessaE wonders who Guest87221 is 18:39 celeron55 VanessaE: he sounds like proller 18:39 celeron55 the default (synchronous=2) is for some batshit insane reliability standards that sqlite is designed for 18:39 celeron55 0 is probably still a bit more reliable in case of power failures than leveldb... 18:40 VanessaE figures. :P 18:40 proller sometimes some blocks can broke 18:41 proller on sky server huge anomaly area 18:41 proller after power loses 18:41 sapier hmm is there a way to automaticaly detect "broken" blocks? 18:43 proller on sky millions blocks of dirt was appear near spawn (most loaded area) 18:44 proller and 16x16x16 cubes of teleporters 18:44 sapier so basically we could only implement some "sanity" check with more or less exact results :-( 18:45 CiaranG synchronous=1 is nearly, but not quite, as slow as synchronous=2 for me (just for the sake of completeness) 18:45 celeron55 sapier: but what would be the use for that? 18:45 celeron55 it's rather obvious to anyone looking if something is broken :P 18:46 CiaranG You might want to restore a backup instead of running with the corrupt map and finding out later 18:47 sapier if we think about exchanging speed for occassional errors some sort of offline error correction could fix the worst issues 18:49 celeron55 proller: how does leveldb behave in power losses? 18:49 celeron55 again there shouldn't really be decisions until someone actually tests things 18:50 proller now nothing broken, nut need to test 18:50 proller ^but 18:51 sapier celeron55 I'm just collecting information without error correction switching to a less reliable option is a very bad idea 18:54 CiaranG Well my server has a UPS, so I've un-migrated, back to sqlite, with synchronous=0 18:55 CiaranG I'll let you know if that ends up being a disaster 19:08 celeron55 random question: what if minetest used Qt 19:09 celeron55 is there opposition for using it for GUI and the basic event loop 19:10 celeron55 it does toolkit and OS stuff very well (it's like an another world compared to irrlicht's absolute shit) but it's rather large 19:10 proller +5% harder build under windows 19:10 celeron55 yes; it's not the worst though 19:11 sapier yes but using qt for gui in opengl mode is almost as using gtk and opengk 19:12 sapier if minetest was a original qt application this might me good but transition most likely will be equivalent to a rewrite of minetest 19:13 celeron55 well you can embed irrlicht inside Qt very easily as for what i can tell 19:13 celeron55 it's a somewhat weird combination though 19:14 sapier :-) what's qt supposed to do in this case? 19:16 celeron55 well, it's rather random because both of them can do partly the same things 19:16 celeron55 the toolkit thing is obvious though 19:16 sapier we could replace jthread by it 19:16 celeron55 hmm, true 19:17 sapier but we'd have to rewrite whole threading 19:17 sapier I can't see a real problem solved by this solution ;-) 19:17 celeron55 and we could remove cguittfont and gettext (probably), and maybe openal (with qtmultimedia) 19:18 sapier but we'd have to rewrite minetest about every 2 years ... which is about the time qt keeps compatibility 19:19 celeron55 and i think qt embeds sqlite inside itself (actually not sure about this), and JSON (sure) 19:19 sapier imho rewriting minetest as qmine would be way more easy then porting current code to qt 19:20 celeron55 but that would remove some android portability i guess, or maybe not; it gets a bit hard to predict 19:20 celeron55 there's qt for android so it might even be easier than now 19:20 rubenwardy Let's rewrite Minetest into Brainfuck! 19:20 celeron55 sapier: qt keeps a lot of compatibility; where did you take that figure? 19:20 sapier as of now none of your arguments persuades me to support qt rewrite ;-) 19:21 proller jthread can be replaced by c++11 19:21 sapier I used qt 2 3 and 4 ... yes they keep some sort of compatibility but you can't use all the new features 19:21 sapier c++11 threads are no pthread replacement ... whoever told you about this did lie 19:22 sapier especially as jthread isn't threads only but semaphores mutexes and events too 19:23 sapier qt is a all or nothing option it's way to big to use parts of it only so either we redesign and rewrite minetest or we don't use it 19:23 proller http://en.cppreference.com/w/cpp/thread 19:24 sapier semaphores? 19:24 proller 20 lines of code 19:24 sapier nope 19:24 proller http://stackoverflow.com/questions/4792449/c0x-has-no-semaphores-how-to-synchronize-threads 19:25 sapier a semaphore isn't jsn't just a mutex with a variable it's similar but not same 19:26 sapier c++11 contains most of what is necessary but it's not complete 19:28 sapier while I'm eager to use those features too imho we should first fix the bugs then do the maintenance in non buggy areas ;-) 19:30 sapier e.g. that damn mesh generation lag reason 22:41 iqualfragile_ celeron55: last time i tried 0ad was unplayable due to not offloading anything and doing everything in the main thread 22:41 iqualfragile_ or at least doing pathfinding in it 22:41 iqualfragile_ soo… yeah, at least you can actually play minetest