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