Minetest logo

IRC log for #minetest-dev, 2016-03-20

| Channels | #minetest-dev index | Today | | Google Search | Plaintext

All times shown according to UTC.

Time Nick Message
00:02 kaeza joined #minetest-dev
00:07 domtron joined #minetest-dev
00:13 Void7 joined #minetest-dev
00:19 kaadmy joined #minetest-dev
00:56 stdh joined #minetest-dev
00:59 est31 joined #minetest-dev
00:59 est31 yeah in fact i do like it
01:00 est31 saw your video on youtube sofar where you had demo'd the fences, and it was a bit bad that the selection boxes were only so small
01:00 est31 and OldCoder the bug is fixed afaik
01:01 est31 I'd sent you a PM i think with the issue link
01:04 est31 OldCoder, #3831
01:04 ShadowBot https://github.com/minetest/minetest/issues/3831 -- Esc stops working when in F10 mode and form invoked, and F10 pressed again
01:04 est31 if you still can reproduce it, file a bug, or say something here :)
01:18 ShadowNinja est31: Sure, I'll change atend.  And move to to util while I'm at it.
01:19 est31 to?
01:19 est31 the strfind class you mean?
01:19 est31 well okay, i hope its not that much used :}
01:21 domtron joined #minetest-dev
01:22 ShadowNinja it to*
01:23 ShadowNinja StrSplitter would really be e better name for it.
01:23 ShadowNinja Or Tokenizer.
01:25 est31 nah
01:25 est31 the current name is fine imo
01:26 est31 tokenizer is better than StrSplitter though
01:26 est31 just dont clean up other code in unrelated classes only because you touch it :)
01:27 est31 except its whitespace fixes only
01:28 ShadowNinja Pushed.
01:29 est31 commit is fine
02:16 Terusthebird joined #minetest-dev
02:38 Terusthebird joined #minetest-dev
02:47 proller joined #minetest-dev
03:18 linkedinyou joined #minetest-dev
03:24 domtron joined #minetest-dev
03:53 Dragonop joined #minetest-dev
04:37 ShadowNinja sofar: Feature for connected: connected_post: like fixed, but not used if connected on opposide sides but not to top.  This way posts are only shown at corners.  Useful for walls and concrete posts.
04:40 sofar I was thinking of another one: connect_none: boxes drawn in place of "fixed" boxes when connected to no edges.
04:47 ShadowNinja sofar: That sounds good too.
04:49 DevBox joined #minetest-dev
05:54 Hunterz joined #minetest-dev
07:03 Weedy joined #minetest-dev
08:14 sofar #3888, then bedtime
08:14 ShadowBot https://github.com/minetest/minetest/issues/3888 -- Particles: Remove particles on collision (WIP) by sofar
09:07 nrzkt joined #minetest-dev
09:39 Player_2 joined #minetest-dev
09:48 Obani joined #minetest-dev
09:53 Dragonop_ joined #minetest-dev
10:39 Calinou joined #minetest-dev
10:48 numZero joined #minetest-dev
11:28 Megaf joined #minetest-dev
11:31 Fixer joined #minetest-dev
11:32 Krock joined #minetest-dev
11:57 turtleman joined #minetest-dev
12:24 nore I'll try to change NodeTimerList to use a priority queue before feature freeze
12:25 nore it should improve performance, and make NodeTimers always more efficient than ABMs
12:26 nore probably a ~10-100 performance improvement in NodeTimerList::step I guess
12:26 nore well, it would be in O(number of elapsed timers * log(number of active timers)) instead of O(number of active timers)
12:35 DevBox joined #minetest-dev
13:39 nrzkt nore: the problem with too many nodetimers is the memory overhead if node timer are used everywhere
13:40 DFeniks joined #minetest-dev
14:01 PilzAdam joined #minetest-dev
14:19 kaadmy joined #minetest-dev
14:28 Megaf joined #minetest-dev
14:29 Megaf folks, so, I'm running minetest here, connected to my server and observing CPU and GPU use
14:29 Megaf it seems like it's being bottlenecked by the CPU
14:30 Megaf since it's using only 25% of the GPU and always 70% of one core and around 30% of another core
14:34 luizrpgluiz joined #minetest-dev
14:36 Megaf the GPU utilization doesnt change much when enabling and disabling shaders
14:37 Megaf is as if shader were running on the CPU
14:39 Megaf_ joined #minetest-dev
14:49 rubenwardy joined #minetest-dev
15:48 hmmmm joined #minetest-dev
15:51 Taoki joined #minetest-dev
15:53 Dragonop_ joined #minetest-dev
15:59 DFeniks joined #minetest-dev
16:05 ud1 joined #minetest-dev
16:08 Megaf joined #minetest-dev
16:24 nore nrzkt: Even a million nodetimers is but a few megabytes of memory, so it should not be a problem
16:48 Samson1 joined #minetest-dev
17:06 Void7 joined #minetest-dev
17:11 kaadmy joined #minetest-dev
18:14 Obani joined #minetest-dev
18:20 Sokomine_ joined #minetest-dev
18:20 est31 joined #minetest-dev
18:21 est31 nore, i think you should use a map that maps from the time to a vector of nodetimer pointers instead
18:22 est31 if you make an environment wide queue: there we insert and remove often, and for insertion a map is better
18:23 est31 if you keep the nodetimer management block wise, then you can do a queue if you want
18:43 Void7 joined #minetest-dev
18:46 ssieb ^[colorize overwrites the alpha values of the destination.  Is that intentional?  Would a fix for that be accepted?
18:46 sfan5 if you don't break something in the process a fix would be appreciated
18:47 sfan5 as long as nobody relies on ^[colorize being broken in this way
18:49 ssieb I was wondering about that.  I'll check through the mods I have to see if it would change anything.
18:50 linkedinyou joined #minetest-dev
18:54 nore est31: ah, didn't know maps were faster; so I'm thinking about a map + caching the min time (per block probably, because we need to be able to add and remove positions dynamically)
18:55 ud1 joined #minetest-dev
18:55 nore but again, there needs to me a way to remove bindings per position and not per time
18:55 * nore should read std::map documentation
19:41 Amaz joined #minetest-dev
19:47 Player_2 joined #minetest-dev
20:23 kaeza joined #minetest-dev
20:29 sofar is there a way in the engine to determine if a node has nodemeta or not?
20:36 est31 joined #minetest-dev
20:36 Darcidride joined #minetest-dev
20:41 nore sofar: not from lua
20:42 * nore misread sofar's question :/
20:43 sofar right, I have a MapNode object in c++ and want to see if there's metadata attached to it
20:43 sofar my thought is this
20:44 sofar if we add digging prediction disabling, I want to enable it by default for nodes that have metadata
20:44 sofar since, logically, those will have code to handle such an event
20:44 sofar (and are likely to deny digging)
20:44 sofar so then, dig prediction would be enabled by default for all nodes without metadata
20:44 sofar and disabled for nodes with metadata
20:45 sofar and then nodedef can override the setting
20:45 sofar doing it that way seems like a really good way to prevent lots of types of unauthorized digging
20:46 nore hm...
20:48 nore sofar: also, I just tested replacing the set_node to air by remove_node in your beds patch
20:48 nore and it looks like it works :p
20:48 nore s/p/o/
20:48 sofar huh
20:48 sofar maybe it's just an ordering thing then
20:48 sofar lol
20:49 nore yes, that is sure though
20:49 nore because when the node is removed, destroy_bed will remove the other part
20:49 sofar I must have just futzed the order
20:49 sofar e.g. place bottom first rotated, then remove top
20:49 nore so if you change the other part *before* destroying this one, it won't work
20:49 sofar (old top)
20:49 sofar yeah
20:49 sofar seems like a typical thing I would mess up ;)
20:52 nore sofar: also, about your meta question: you only have a MapNode?
20:52 nore or do you have its position too?
20:52 nore because you need its position IIRC
20:52 sofar nodepos, yes, I haz
20:52 STHGOM joined #minetest-dev
20:53 nore then you need the mapblock that contains this pos
20:54 sofar this is a clientmap, not the servermap
20:55 nore and use m_node_metadata.get
20:55 nore clientmap also has mapblocks, hasn't it?
20:55 nore #ifndef SERVER // Only on client MapBlockMesh *mesh;
20:55 nore #endif
20:55 sofar idk, first time messing around in it this week
20:55 nore NodeMetadataList m_node_metadata;
20:56 nore ^ yep, this file is for the client too
20:56 nore so, you find the mapblock containing the position
20:56 nore (I don't remember how, maybe you already have it anyway)
20:56 nore and in that block, you call m_node_metadata.get(pos)
20:57 nore and check if the pointer you get is null or not
20:57 nore (I don't remember if the position is local within the block or global though)
20:58 red-001 joined #minetest-dev
21:10 nore ~tell est31 what I think I will do is to keep a std::multimap<double, NodeTimer> giving for each NodeTimer when it should be triggered, and a std::map<v3s16, std::multimap<double, NodeTimer>::iterator> to map each position to the iterator in the multimap to be able to remove the NodeTimers that match these positions; and finally the same thing globally in the environment, that gives for each mapblock the next time a timer will be triggered, to avoi
21:10 ShadowBot nore: O.K.
21:13 sofar nore: Map::getBlockNoCreate(pos) ?
21:14 nore sofar: probably, I don't remember if you need to give pos or blockpos either though
21:14 nore there's getBlockNoCreateNoEx too
21:14 sofar yes
21:15 nore maybe it would be better
21:16 nore so: you need to give pos
21:16 nore it returns null if the block doesn't exist
21:17 nore wait, you're in client
21:17 nore isn't it ClientMap then?
21:18 nore ah, it inherits from Map
21:18 sofar ClientMap &map
21:19 nore wait, you've even got Map::getNodeMetadata
21:20 nore just give it your position and you're done ;)
21:20 sofar error: 'class ClientMap' has no member named 'getNodeMetaData'
21:21 nore with a 'd'
21:21 nore not 'D'
21:21 sofar oh goodness, thanks for spotting that
21:22 sofar yah, works
21:22 nore yay :)
21:22 sofar I can do the lua parts now, and serialization
21:22 * nore gets back to her nodetimers
21:23 sofar this is awesome, this is going to make trespass hacking a *lot* harder
21:28 nore sofar: good :)
21:28 sofar server owners will likely want to force strict client versions, though
21:29 sofar but if we can get this in 0.4.14 that might be nice.
21:29 nore yep :)
21:29 nore it doesn't help with the players digging a hole through the roof of a building though, but I don't know how that can be fixed
21:30 est31 joined #minetest-dev
21:30 nore but it's useful for doors
21:31 sofar server owners can make a whole bunch of nodes not predict diggable
21:31 sofar so that does help
21:31 sofar you could make everything that way
21:32 sofar so there's a huge array of options available
21:32 sofar even protection mods could work by attaching metadata to the nodes in protected areas
21:32 sofar of course, the server should really stop allowing players to move through walls
21:32 est31 nore, i think iterators are invalidated when editing, no?
21:33 nore est31: I checked that iterators are not invalidated when doing erase if they don't reference the element that was erased
21:33 est31 we should first fix noclip anti cheat
21:33 est31 only then we should add noclip prevention
21:33 est31 ermm
21:34 nore est31: how would you fix it?
21:34 nore est31: http://www.cplusplus.com/reference/map/multimap/erase/
21:34 nore "Iterators, pointers and references referring to elements removed by the function are invalidated.
21:34 nore All other iterators, pointers and references keep their validity."
21:35 est31 hrmm
21:35 celeron55_ joined #minetest-dev
21:36 est31 isnt it doing any operations to balance the tree
21:36 est31 perhaps it stores the parent
21:36 sofar est31: do you have a sec to check if the particle remove() call is correct in my particle change from yesterday evening? I'm seeing it get called 20x in a row really fast
21:36 nore well, it may be doing them, but the pointers to the leaves will still be correct I guess
21:36 sofar it works (visually) but it looks weird with debug code enabled.
21:36 est31 probably
21:38 est31 okay then nore
21:38 est31 nore, what was your question "how would you fix it" about
21:38 rubenwardy noclip anticheat
21:38 est31 ah
21:38 est31 yeah that one... very simple
21:39 est31 the client periodically sends the player pos to the server
21:39 sofar YESSSS, it works
21:39 est31 and the server updates it in its memory and sends the pos to all other clients
21:39 est31 so far so good, this is the current state
21:39 est31 now to how to add noclip checking
21:40 est31 each time the server gets a new position from the client, the server takes the path between the old pos and the new
21:40 est31 and checks every node the path crosses
21:41 est31 if there is one solid node on the path, it rejects the move, and moves the player back to the last position
21:41 est31 other clients won't even notice that the player tried to cheat
21:41 est31 (or lag through walls or something)
21:41 rubenwardy what if there is a slight bend due to lag?
21:41 Obani How often would happend the check ?
21:42 est31 Obani, every time the client updates its position
21:42 rubenwardy Is this to stop going through walls?
21:42 est31 rubenwardy, that's the issue, of course, it will give false positives then
21:42 rubenwardy it's a good compromise though
21:43 est31 well yeah its an issue for server owners
21:43 nrzkt est3
21:44 est31 to decide whether its lag or whether they want to ban
21:44 nrzkt est31, i think checking if player is in node is good
21:44 est31 imo its not required to ban people just because they _tried_ something
21:44 est31 but let server owners decide
21:45 est31 only then we can add checks to the client to prevent digging through walls
21:45 est31 through protected walls*
21:45 est31 if somebody wants to implement that check go on
21:46 est31 but its more involved than a simple register_on_globalstep, you actually have to check the whole path
21:46 red-001 what is someone goes through a door and ten closes it?
21:46 est31 otherwise the check isnt proper and you can abuse it in lag times
21:47 red-001 how often does the client update it's position?
21:47 est31 red-001, they will be reset in lag times, in no lag times its no issue
21:47 est31 very often
21:47 est31 > 10 times per sec
21:47 red-001 what about fly?
21:48 red-001 how do you stop that?
21:48 est31 thats harder to check
21:48 nrzkt difficult because it's nearly impossible to detect if fly or throw
21:48 est31 you have to find a way to distinguish falling and flying :)
21:49 red-001 well you could at least stop flying upwards?
21:49 red-001 that shouldn't be similar to anything else
21:50 red-001 you could detected if a client is moving upwards an isn't near a climbable node
21:51 rubenwardy Just look at upwards velocity, I guess
21:51 nrzkt fall* :)
21:52 nrzkt red-001, other problem is teleportation
21:52 rubenwardy what if the player is attached/being moved by a mod?
21:52 red-001 psychics override?
21:53 red-001 the mod would be resetting their position anyway
21:54 red-001 maybe add a setting for every player to temporally disable anticheat for them
21:54 sofar #3891
21:54 ShadowBot https://github.com/minetest/minetest/issues/3891 -- Allow influencing of client dig prediction. by sofar
21:55 red-001 nrzkt there is code for stopping teleporting already
21:58 nrzkt i talked about lgtm teleport
21:59 est31 rubenwardy, if the player is being attached, its known by the server
22:00 red-001 lgtm?
22:01 red-001 what do you mean?
22:06 est31 it means "looks good to me"
22:06 est31 but it doesnt make sense in this context
22:08 est31 sofar, even if it was suggested by PilzAdam, i still -1 the pr
22:09 sofar even though you -1 it, I'm not going to implement your idea, since I have no idea HOW to do that
22:10 sofar I don't work that way
22:10 sofar I have hundreds of things in my head that I'd like to do
22:10 PilzAdam est31, anti-cheat is not the only (not even the primary) use case of disabling prediction
22:10 sofar but I only start coding when I think can make something *work*
22:11 est31 PilzAdam, what is it then
22:11 PilzAdam node_placement_prediction is already available; it's used for items that have a special handling when being used
22:11 Megaf joined #minetest-dev
22:11 PilzAdam there may be nodes in mods that don't turn into air when being dug
22:11 Megaf Hi all, so, I'm trying to build Minetest Server on Haiku, a reimplementetion of BeOS
22:11 Megaf but I'm getting this error. http://paste.debian.net/plain/417478
22:12 Megaf Haiku is not UNIX, nothing to do with it, but it's POSIX
22:13 sofar that's why I hooked it to node metadata
22:13 PilzAdam est31, imagine a game where when you hit rock with a pickaxe it turns into cobble instead of dropping to the user's inventory
22:13 sofar that's an obvious sign that code needs to specially handle the node removal anyway
22:13 PilzAdam est31, the current dig prediction would totally ruin this effect even on servers with a bit of lag
22:13 est31 I can live with the nodefef part
22:13 est31 but making it based on the metadata?
22:13 est31 thats stupid
22:14 sofar ok, now we're talking
22:14 est31 <sofar> so best hope it makes it into 0.4.14 and then force strict client version checking, I suppose.
22:14 PilzAdam est31, oh, I didn't see that part in the PR
22:14 sofar we may just have to bump versions in 0.4.14
22:14 est31 ^ that doesnt help at all
22:14 PilzAdam yes, thats not (at least not the way it's implemented)
22:14 est31 sofar, think of that cheater on just test server
22:15 red-001 Megaf I not sure anyone here know much about Haiku, maybe you should ask on their irc channel It's possible they didn't implement part of the standard
22:15 PilzAdam +useful
22:15 red-001 *C++ standard
22:15 Megaf but can you think about anything from the error message?
22:15 sofar well the patch becomes even less code if I do that
22:15 Megaf Its gcc 5
22:16 PilzAdam est31, sofar, a better way (TM) would be to make it similar to node_placement_predicition: the field in nodedef defines the node name that the node is being replaced with when dug
22:16 est31 Megaf, it seems they didnt implement that particular function. you must talk to somebody who can write C/C++ and they will have to port minetest to haiku
22:16 PilzAdam default is "" (air), if nil then prediction is disabled
22:16 Megaf oh, ok, thanks red-001 est31
22:16 red-001 It's something to do with a byte order function
22:17 est31 PilzAdam, thats even better
22:17 red-001 according to google
22:17 PilzAdam est31, sofar, and maybe add a special value that reads the nodename from metadata
22:17 sofar PilzAdam: est31: OK, I'll go and implement that
22:17 est31 no
22:17 est31 reading from metadata is stupid
22:17 est31 sorry
22:17 sofar just disable it then
22:18 est31 that wont help against abuse from server owners
22:18 PilzAdam est31, thing of a cauldron: a single node that gets replaced by different liquids when being dug
22:18 sofar I need to do some grocery shopping first, though
22:18 PilzAdam *think
22:18 sofar let's take it one step at a time
22:19 sofar let me do the node_placement_predict api for this first
22:19 PilzAdam est31, node_placment_prediction can be abused for anti-cheat, too, but it isn't
22:19 nrzkt joined #minetest-dev
22:19 PilzAdam (with placment prediction one can build up into the air while the number of items in the inventory isn't removed)
22:19 est31 you suggested the abuse yourself https://github.com/minetest/minetest_game/issues/954#issuecomment-198681699
22:20 est31 we need proper noclip fixing before this gets merged
22:20 PilzAdam thats not metadata based
22:21 est31 even then its an abuse, not performance wise, but because it punishes people who update minetest
22:21 PilzAdam my "fix" for game#954 would be to disable prediction for all steel doors in nodedef
22:21 ShadowBot https://github.com/minetest/minetest_game/issues/954 -- locked doors useless on servers
22:21 est31 well for me thats not a fix, sorry
22:21 est31 its just a workaround
22:21 PilzAdam hence the "
22:21 est31 we dont control all clients out there, and we dont want to add DRM
22:22 PilzAdam > but because it punishes people who update minetest
22:22 PilzAdam that sounds really weird
22:22 sofar we don't
22:22 sofar server operators do
22:22 est31 well if you go to a server
22:22 sofar subtle, but important difference
22:22 PilzAdam you are blocking a functional enhancement, because it may be abused for anticheat that is dependent on client version
22:23 est31 and the server owner has enabled that check
22:23 est31 e.g. they have installed that mod
22:23 est31 mtgame
22:23 est31 and you connect to that server, you build a nice house all protected etc
22:23 est31 now it is badly administered and the admin doesnt care
22:23 est31 or visits every year or so
22:24 est31 now a bad guy enters your house and steals stuff or something
22:24 est31 they can because they hacked their client, or simply because they use an unofficial app
22:24 est31 and you want to do revenge, but you are prevented because you updated minetest?
22:24 est31 that is punishment
22:25 PilzAdam #3891 is not about anti-cheat; it's a functional enhancement
22:25 ShadowBot https://github.com/minetest/minetest/issues/3891 -- Allow influencing of client dig prediction. by sofar
22:26 PilzAdam just because you can imagine a situation where server owners abuse this feature doesn't mean you should block that PR
22:26 est31 I block it until we have proper noclip prevention
22:26 PilzAdam there are already tons of features in the engine to discriminate people based on their client version
22:27 sofar PilzAdam: est31: OK, I'll go and implement that after I do some groceries :)
22:29 est31 sofar, the check is in PlayerSAO::checkMovementCheat()
22:29 est31 you only need to extend it
22:29 sofar you're funny
22:30 sofar like I said, I usually don't start coding until I'm convinced I know the underlying mechanics, and know that it works
22:30 est31 well then I do it.
22:31 PilzAdam est31, btw, I agree that there should be proper noclip checks
22:32 sofar this is where I clearly don't feel comfortable enough yet with a lot of the C++ code base... I'll get better and more confident, I just have to touch more pieces of code
22:32 PilzAdam but I think that functional enhancement shouldn't be blocked because of this
22:32 sofar e.g. https://forum.minetest.net/viewtopic.php?f=7&amp;t=14229
22:32 est31 I'm coding this thing now, and leaving chat because i can concentrate better outside of chat
22:33 red-001 shouldn't damage also be check server side?
22:34 red-001 currently it's mostly client sided
22:34 PilzAdam red-001, it is
22:34 PilzAdam the server handles all damage (except falling and lava)
22:34 PilzAdam sofar, I left a comment in your PR so you can update it later
22:35 Megaf I got a word from one of the guys from Haiku
22:35 Megaf [22:34] <mmu_man> why didn't they use the ntoh* stuff from <netinet/in.h> anyway?
22:35 Megaf [22:35] <mmu_man> man byteorder -> CONFORMING TO POSIX.1-2001.
22:36 red-001 maybe it doesn't work on windows?
22:36 red-001 idk
22:37 sofar ask for a patch :)
22:38 Fritigern joined #minetest-dev
22:42 Megaf I have to go, I will be back tomorrow, thanks folks, cya!
22:51 celeron55 joined #minetest-dev
22:56 PilzAdam joined #minetest-dev
22:59 yang2003 joined #minetest-dev
23:11 exoplanet joined #minetest-dev
23:15 red-001 joined #minetest-dev
23:28 Samson1 joined #minetest-dev

| Channels | #minetest-dev index | Today | | Google Search | Plaintext