Minetest logo

IRC log for #minetest-dev, 2013-04-16

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

All times shown according to UTC.

Time Nick Message
00:18 hmmmm [06:25 PM] <celeron55> often the best result is achieved by considering the first implementation just a prototype
00:19 hmmmm well
00:19 hmmmm there's a good way to justify horrible code quality (which will often never be fixed)
00:20 hmmmm especially when whatever it is becomes an API standard
00:22 jojoa1997|Tablet ShadowNinja nice :-)
00:43 dexter0 joined #minetest-dev
01:52 salamanderrake joined #minetest-dev
02:20 Deivan joined #minetest-dev
03:44 Deivan joined #minetest-dev
03:51 celeron55 joined #minetest-dev
05:10 emptty joined #minetest-dev
06:19 celeron55 joined #minetest-dev
07:01 serengeor joined #minetest-dev
07:03 darkrose joined #minetest-dev
08:05 emptty joined #minetest-dev
08:53 Jordach joined #minetest-dev
08:53 Jordach joined #minetest-dev
08:53 ImQ009 joined #minetest-dev
09:04 iqualfragile joined #minetest-dev
09:13 darkrose joined #minetest-dev
09:13 darkrose joined #minetest-dev
09:25 darkrose joined #minetest-dev
09:25 darkrose joined #minetest-dev
09:39 emptty joined #minetest-dev
10:01 iqualfragile if someone would be so kind to merge that: https://github.com/minetest/minetest/pull/648 in?
10:02 iqualfragile that would fix the serverlists on the ubuntu installations and that good for marketshare
10:16 Taoki http://forum.minetest.net/viewtopic.php?pid=84449 For everyone interested in hardware lighting. Hoping we can try getting something done one way or another and finding an idea to make this possible
10:17 proller joined #minetest-dev
10:26 darkrose joined #minetest-dev
10:45 Zeg9 joined #minetest-dev
10:55 darkrose joined #minetest-dev
11:32 emptty joined #minetest-dev
12:01 PilzAdam joined #minetest-dev
12:17 darkrose joined #minetest-dev
13:02 darkrose joined #minetest-dev
13:04 PilzAdam joined #minetest-dev
13:14 hmmmm joined #minetest-dev
13:21 proller joined #minetest-dev
13:30 proller joined #minetest-dev
13:34 darkrose joined #minetest-dev
13:34 darkrose joined #minetest-dev
13:46 ecube_ joined #minetest-dev
13:55 ImQ009 joined #minetest-dev
13:59 troller joined #minetest-dev
14:16 emptty joined #minetest-dev
14:21 darkrose joined #minetest-dev
14:21 darkrose joined #minetest-dev
14:24 blue42u joined #minetest-dev
14:25 blue42u left #minetest-dev
14:37 troller joined #minetest-dev
14:41 darkrose joined #minetest-dev
14:58 OWNSyouAll joined #minetest-dev
15:00 darkrose joined #minetest-dev
15:07 proller__ joined #minetest-dev
15:21 emptty1 joined #minetest-dev
15:27 serengeor joined #minetest-dev
15:41 emptty joined #minetest-dev
15:49 Calinou joined #minetest-dev
15:54 swilde joined #minetest-dev
15:55 swilde Hi, what is the right way to get features into minetest?  I wonder besause https://github.com/minetest/minetest/pull/365#issuecomment-16393860 stalled and I can't see why/what to do to get progress...
15:58 Calinou by poking PilzAdam endlessly
15:58 PilzAdam annoy core devs to merge it in
15:59 PilzAdam s/to/until they
16:00 Calinou you are a core dev 8)
16:01 Exio the right way?
16:01 PilzAdam this probably needs a rebase
16:01 Exio PilzAdam: merge mouse_sensitivy and crosshair_image!
16:02 PilzAdam I guess this is the branch we want to merge in: https://github.com/matttpt/minetest/compare/ipv6-revised
16:02 PilzAdam (according to the comments by xyz and c55)
16:02 proller__ +1
16:02 PilzAdam but there is a mistake in minetest.conf.example, ipv6_server is set to false in defaultsettings.cpp
16:03 PilzAdam it also needs testing
16:03 PilzAdam with backwards compatibility etc.
16:04 swilde Maybe it would help to put some of this information in the pull-request?  The original author seems not to know about it...
16:04 PilzAdam just linke the discussion
16:04 PilzAdam *this
16:04 proller__ i think we not need in gui checkbox
16:05 swilde PilzAdam: Sorry, how do I link to an IRC discussion?
16:05 Exio you get the log from the site on the topic
16:06 Exio and click at the hour
16:06 swilde Exio: Oh, tnaks!
16:06 PilzAdam swilde, in the logs: http://irc.minetest.ru/minetest-dev/2013-04-16#i_3022715
16:06 Zeg9 joined #minetest-dev
16:10 PilzAdam I have rebased the branch
16:12 PilzAdam https://github.com/PilzAdam/minetest/tree/ipv6-revised
16:12 hmmmm oh wow, matttpt is still around?
16:13 Calinou yes
16:13 PilzAdam hm... there is not enough space in the settings tab
16:13 PilzAdam Ill remove it from the GUI
16:13 proller__ +1
16:13 proller__ nobody will use it
16:14 hmmmm indeed^
16:14 hmmmm i don't get why people worry about making ipv6 support optional
16:15 hmmmm is it really that difficult to add #ifdef USE_IPV6 around things?
16:15 hmmmm but no, it's already been done that way, so they're arguing to do more work to remove an option that in no way impacts people who want to use it
16:16 swilde PilzAdam: I agree, it shouldn't be in the gui, but an option in minetest.conf is mandatory.
16:16 hmmmm when i go to install programs from ports, i like that i see a neat checkbox with USE_IPV6 to the side of it
16:16 hmmmm and there's no reason for such a thing to be in the gui at all.  people who want ipv6 know what it is
16:17 proller__ i think in year 2013 USE_IPV6 must be enabled everywhere by defaut
16:17 Exio just a question - why not for the mouse_sens option? it would be useful for some people and is a ... "2 lines" change
16:18 proller__ and  USE_IPV4 now can be optional 8)
16:18 hmmmm proller, that's crazy
16:18 hmmmm ipv6 is definitely NOT widespread
16:18 hmmmm it's a very small handful of people who use it -- no, a small handful of people who are ABLE to use it
16:19 Calinou 1% of internet traffic
16:19 proller__ its because  USE_IPV6 checkboxes not enabled by default in many soft 8)
16:19 hmmmm umm
16:19 Jordach highlight: proller__ is using ipv6
16:19 hmmmm or maybe it's because most ISPs don't even have ipv6 support
16:19 Zeg9 Yeah, ISPs are the main problem :)
16:19 hmmmm all they do is NAT trunking
16:19 proller__ yes, but you can use ipv6 via one external v4
16:19 Calinou ipv6 might keep NAT
16:19 hmmmm and ipv6 will probably never be necessary
16:19 Calinou some trolls wanted to put that in linux kernel recently
16:20 hmmmm ipv6 natting?  that's ridiculous
16:20 Calinou probably dropbox employees
16:20 Calinou 8)
16:20 StrayBytes My setup causes trouble with IPv4 users tryingto connect to a server running at my location.
16:20 Calinou ipv6 will make not using domains painful though :3
16:20 PilzAdam so, someone who actually uses IPv6 has to test the rebased branch
16:20 hmmmm which is proller
16:20 proller__ 5-10% of userc now CAN use ipv6 via teredo and 6to4
16:20 PilzAdam this one: https://github.com/PilzAdam/minetest/tree/ipv6-revised
16:20 hmmmm I am not aware of anybody else who can use ipv6
16:21 hmmmm without having to set up teredo and whatnot
16:21 Calinou noone wants to buy cisco stuff to be able to use ipv6
16:21 hmmmm you don't need to do _that_
16:21 hmmmm but it is more trouble than it's worth ;)
16:21 * proller__ compiling on odroid..
16:21 Exio in 2013 proller__ got ipv6 so now it is cooler than before
16:21 hmmmm lol
16:22 Exio btw, what about the mouse_sensitivy option?
16:22 Calinou proller__: how fast? :D
16:22 hmmmm i say, why not
16:22 hmmmm some others have objections to it though
16:22 Calinou mouse sensitivity should be merged ASAP
16:22 Calinou really
16:22 Calinou only people like 0gb.us would object to it
16:22 hmmmm pilzadam doesn't like it
16:22 PilzAdam what?
16:23 hmmmm i'm not sure why
16:23 hmmmm or maybe i'm confusing people
16:23 PilzAdam hmmmm, liar!
16:23 * swilde uses ipv6 for about five years...
16:23 rubenwardy joined #minetest-dev
16:23 PilzAdam I dont care about a mouse sensivity config
16:23 hmmmm people have very strong opinions about small things like that
16:23 swilde PilzAdam: your branch now matches HEAD + ipv6?
16:23 PilzAdam its rebased, yes
16:23 hmmmm but when it comes to changing the entire MapNode structure, woohoo, everybody's all for it
16:24 Exio that is because nobody knows what MapNode really does
16:24 swilde PilzAdam: I'll give it a try asap...
16:25 PilzAdam somone also try to connect with a IPv6 client to a IPv4 server and vise versa
16:25 swilde PilzAdam: ok
16:25 hmmmm if i were going to do colored lighting at that level, what i would do is try to figure out how to avoid needing a night lightbank and using those 4 bits for another component, and using the 4 unused bits of the content for the third component
16:25 swilde PilzAdam: I expect it to be dual stack enabled?  (serving v4 and v6 at the same tim e that is)
16:25 PilzAdam someone has to set up a IPv6 server first, *cough* proller__
16:26 hmmmm which would produce other problems too :)
16:26 PilzAdam swilde, theres a setting #ipv6_server for it
16:26 PilzAdam so I guess not
16:26 hmmmm but it's better than doubling the size of everything
16:26 PilzAdam comment by mattpt: "(an IPv6 server is normally restricted to IPv6 clients)"
16:26 hmmmm dynamic lighting remains the best solution; it just has a problem that hasn't been solved *yet*
16:27 Calinou dynamic lighting with shadows == slow
16:27 dexter0 joined #minetest-dev
16:27 hmmmm gotta pay to play
16:27 Calinou it works nice on today's mid/high-end hardware, but the community response will be, "no, i keep my P4"
16:27 Calinou tesseract = 120FPS for me on max settings
16:27 hmmmm if you really want fancy colored lighting you need the hardware
16:27 hmmmm it's better than changing literally everything for a rather minor feature
16:28 Exio then people will hate you because their pentium4+intel ggp from the 2004 will not be able to hande that!
16:28 hmmmm really?  i've heard arguments that are the opposite of that
16:28 swilde PilzAdam: that sounds of little use, as not all users are ipv6 enabled.  The cononical solution is to serve both Protokolls (which is what my http and smtp, pop, imap and dns servers do...)
16:28 swilde PilzAdam: I'll try it anyway
16:29 hmmmm people have been crying "oh everybody has such fast hardware now, it doesn't matter if everything is twice as big and takes 3x as long and blah blah"
16:29 Exio hmmmm: nah, just saying, you can't make everybody happy :P
16:29 hmmmm but this is one issue i'm not budging on
16:29 PilzAdam swilde, we will see when we try to connect an v4 client to a v6 server
16:29 proller__ IPv6 server must serve v4 and v6 clients
16:29 hmmmm JSON in the config is something that's pretty radical that i'm willing to consider though
16:30 swilde proller__: well, _should_ not must...
16:31 proller__ ok, must listen tcp46 and udp46, and should serve 4 and 6 clients
16:33 swilde proller__: still not fully true: this is what dual stack implementations do (and what is sensible in most cases) but IPv6 it self does not depent on IPv4 and you can build IPv6 only networks with systems which don't provide v4 at all.
16:34 proller__ ok, but next 5-10 years we need in dual stack
16:34 swilde proller__: ACK
16:40 Calinou hmmmm: I have been crying that, but certainly not other people
16:41 proller__ 1835.91user 63.82system 8:56.41elapsed 354%CPU (0avgtext+0avgdata 886672maxresident)k
16:41 proller__ 111456inputs+85040outputs (0major+4833720minor)pagefaults 0swaps
16:46 swilde left #minetest-dev
16:47 rubenwardy left #minetest-dev
16:48 troller joined #minetest-dev
16:48 troller odroid.setun.net : 30000
16:49 troller now i have no gui client to test 8(
16:51 troller PilzAdam, сфт нщг ьфлу цшт32 игшдв акщь ершы икфтср ,
16:51 troller can you make win32 build from this branch ?
16:52 PilzAdam yes, but let me eat something first
16:52 PilzAdam and I also cant connect to the server
16:53 troller something wrong
16:55 troller its not listening ports
16:55 troller but wrote 20:55:30: ACTION[main]: Server for gameid="minimal" listening on port 30000.
16:56 blue42u joined #minetest-dev
16:56 emptty joined #minetest-dev
16:57 blue42u Where is the code that adds a piece of the map as a scene node to the scene?
16:57 blue42u I've been digging to no avail.
16:59 hmmmm no idea, but if it comforts you, i've been working on the hud stuff https://github.com/kwolekr/minetest/commits/luahud
17:00 hmmmm we didn't forget about it
17:00 blue42u Oh, I know.
17:00 blue42u I peek at the logs every so often. 8)
17:01 hmmmm you're a CS student, right?
17:01 blue42u Um, well.... That's a long story....
17:01 hmmmm it's probably beneficial if i tell you better ways of how to do things
17:01 blue42u Yeah.
17:01 hmmmm if you're going to be a programmer
17:02 blue42u Well, of course I am.
17:02 hmmmm there are a real lot of details that i had to change but
17:02 hmmmm some big, broad things you should know:
17:03 hmmmm use an array when you have a mapping of sequential IDs to objects
17:03 hmmmm don't just use numbers and add a comment that says what they mean, that's the purpose of a macro or enum
17:04 hmmmm also you need to use an enum when specifying things like the stat value or type, that's the standard for the mod API
17:04 hmmmm there are handy enum functions in scriptapi_types.cpp
17:04 hmmmm hmm, what else...
17:04 hmmmm oh, make sure that you don't leak memory, that's a big thing
17:05 Calinou lol
17:05 hmmmm i don't think you ever deleted a hud element after you removed it, there's a leak
17:05 Calinou since when commercial programmers care about code correctness
17:05 Calinou they care about money
17:05 Calinou be realistic
17:05 blue42u I thought that the map would delete it itself.
17:05 hmmmm it probably varies from place to place, but the commercial code i've seen is very high in quality
17:06 hmmmm blue42u, nope
17:06 rubenwardy joined #minetest-dev
17:06 blue42u Darn.
17:06 Calinou hmmmm: terasology approves
17:06 hmmmm also logic shouldn't all be in the scriptapi functions, they're just interfaces to what actually happens elsewhere
17:06 Calinou and *cough*windows*cough* and *cough*AAA games*cough*
17:07 hmmmm terasology isn't commercial... terasology is some guy's personal project he's charging for,
17:07 blue42u_ joined #minetest-dev
17:07 hmmmm windows code quality typically very good if you've seen it
17:07 hmmmm bloaty but clean
17:07 Calinou "he's charging for?" => since when is he paid?
17:07 Calinou it*
17:07 hmmmm i thought terasology wasn't free?
17:07 Calinou it is
17:08 Calinou the guy making it works as a java programmer iirc
17:08 hmmmm erm anyway
17:08 hmmmm yeah and he's ridiculous with the OO abstraction
17:08 hmmmm and it shows in the source tree
17:08 hmmmm anyway
17:08 hmmmm blue42u_, also make sure to use v2f instead of irr::vector2d<float> and so on
17:09 blue42u_ You found a rare instace. :)
17:09 hmmmm also the code style we follow has pointer asterisks on the other side of the type, not included with the type
17:09 ImQ009 2d vectors....
17:09 ImQ009 hmmmm
17:09 blue42u_ That piece I was tinkering with at the time you took over.
17:09 hmmmm use switch statements instead of huge if else if blocks
17:10 hmmmm don't make three separate functions that each take a different parameter, especially if you're already passing the parameter type, try using void *
17:10 ImQ009 Unless THAT vector isn't what I think it is
17:10 hmmmm or a template if you feel C++y enough
17:10 blue42u_ Then I have to typecast or know what I'm doing. ;)
17:10 hmmmm also not sure why you pass const references as parameters to functions.... doesn't quite make sense
17:11 * Calinou understood why he is only using lua and not C++
17:11 hmmmm and you have the Server functions take a player name and do another lookup of the player which is exactly the same thing you just did in the scriptapi function
17:11 Calinou don't blame people using high-level languages, really 8)
17:12 hmmmm don't use iterators when unnecessary either
17:12 hmmmm you can have much cleaner code without
17:12 blue42u_ I beleve that's what I saw in other places too...
17:12 hmmmm e.g. https://github.com/kwolekr/minetest/commit/d99cacd4806029119a9f25cea60da08f81edf598#L3R170
17:12 hmmmm also you don't need to create static text controls and destroy them every single frame, that's crazy
17:12 hmmmm there's an irrlicht drawtext function you could use
17:12 blue42u_ Oh, really?
17:12 hmmmm also deque is notably slower than other data structures, FYI
17:13 hmmmm i still have a lot more stuff to do
17:13 blue42u_ Hm. And your fix with removing iterators will seg-fault.
17:13 hmmmm how so?
17:14 blue42u_ ...if one of the elements was removed. You will end up accessing freeed memory.
17:14 blue42u_ Not all hud element ids are in a row.
17:14 hmmmm yes, i would add a null check there
17:15 hmmmm i didn't completely finish that function, i still have much more to do there
17:15 blue42u_ brb
17:16 hmmmm it was probably good for me to do this overall, since it opened an opportunity to separate hud things from game.cpp which is much needed
17:19 hmmmm still very much a work-in-progresss
17:19 hmmmm but when it's done it'll be absolutely perfect code in every way possible
17:21 blue42u_ Hmmm.... absolutely perfect....
17:22 hmmmm oh, by the way, what's the point of the inventory HUD element type?
17:22 blue42u_ Hotbar #2. :)
17:22 hmmmm i'm not sure it's of much use unless you can remove the first hotbar
17:22 blue42u_ Might be useful.
17:23 hmmmm what would be good is if it didn't necessarily display the main inventory
17:23 hmmmm i want to do something like that where you can choose which range of inventory elements to display
17:23 blue42u_ Didn't you see? You specify the list to use.
17:23 hmmmm i didn't see that part sorry
17:24 hmmmm ahhhhh
17:24 hmmmm e->number
17:24 hmmmm just another random note, actionstream is for events that are happening in the game that server hosters would like to keep logs of, like people placing nodes or joining the game, w/e
17:24 hmmmm errors go in errorstream
17:25 hmmmm lesser errors that can be safely ignored go into verbosestream
17:27 blue42u_ :/ Didn't see those.
17:29 blue42u_ But, can you awnser my original question?
17:29 hmmmm nopr
17:29 blue42u_ :/ Anyone else?
17:33 blue42u_ Ohhhhh.
17:34 blue42u_ Never mind. I think I found it.
17:34 blue42u_ Thanks for the tips hmmm!
17:35 blue42u_ left #minetest-dev
17:35 hmmmm no problemoo..
17:35 hmmmm agh i should've pasted the link to the code style guidelines page
17:51 18VAAZAWE joined #minetest-dev
17:52 iqualfragile joined #minetest-dev
18:22 sapier joined #minetest-dev
18:30 iqualfragile joined #minetest-dev
19:09 StrayBytes joined #minetest-dev
19:11 aheinecke joined #minetest-dev
20:29 proller joined #minetest-dev
20:59 sapier1 joined #minetest-dev
21:13 darkrose joined #minetest-dev
21:36 RealBadAngel joined #minetest-dev
21:38 hmmmm hmmm
21:38 Exio wut?
21:39 hmmmm should've asked blue42u while he was around what https://github.com/kwolekr/minetest/commit/18f26e84684f0d082057f29ca4e40dee9874cf6a#L6R849 this was
21:40 hmmmm did he actually intend for i to always be 3, or did he want it to be 3 if right is true?
21:43 hmmmm that whole bunch of code is pretty "huh?".. I think what is intended is that it adds a bar on the right if there are 3 or more bars on the right already
21:46 hmmmm actually nevermind, i don't understand what that code is even attempting at all
21:47 PilzAdam delete it and see whats broken?
21:47 hmmmm erm
21:47 hmmmm i know what it does, i just don't know what logical steps it's taking
21:48 RealBadAngel hi hmmm, im pretty close to finish with new drawtype that uses meshes
21:49 hmmmm ahh nice
21:49 hmmmm hrm
21:49 PilzAdam <VanessaE> inb4 PilzAdam says it violates the blocky/voxel concept
21:49 VanessaE ^^
21:50 VanessaE do it anyway, ignore the naysayers :)
21:50 hmmmm the position vector in the lua hud code is relative, from a range of 0.0 - 1.0, but he's setting the Y position to numbers strictly above 1, so it doesn't really make much sense....
21:50 RealBadAngel all can be abused to make round things in the voxel world
21:50 RealBadAngel even nodeboxes
21:50 hmmmm i think this code probably didn't work properly in the first place which explains why i'm having trouble understanding it
21:50 PilzAdam RealBadAngel, only nodeboxes
21:51 RealBadAngel luaentities too
21:51 PilzAdam ok, thats hacky
21:52 RealBadAngel i can easily import thousands of polygons model and use it in mt
21:52 RealBadAngel because irrlicht allows using that
21:53 RealBadAngel but thats not the point
21:55 sapier does anyone consider writing a collision algorithm for mesh structures?
21:55 sapier this is one of the big problems with mesh entities!
21:55 RealBadAngel i think i will have to solve it
21:56 RealBadAngel first of all i have to find out how to make proper selection boxes for them
21:56 sapier current collision algorithm only works for blocks ...
21:56 sapier no not quite correct ... it works only for aligned blocks, it doesn't even support rotation
21:57 VanessaE RealBadAngel: voxelize the model at load time to a really low resolution (say 4x4x4 per node), use the result as your collision box(es).
21:57 sapier if you fix those issues in a performant way I'll be very very very thankfull :-)
21:57 VanessaE that should give you a good balance between accuracy and speed.
21:58 RealBadAngel im at stage i managed to display meshed node at all
21:58 RealBadAngel now i have to give it 6d facedir
21:58 RealBadAngel and selection boxes
21:58 RealBadAngel which should be outline of a meshed object
21:58 sapier vanessae I hope this wont result in server only doing collisionhandling but nothing else :-)
21:59 VanessaE heh
21:59 VanessaE collision checking with a bunch of boxes is insanely fast compared to checking a hundred arbitary polys
21:59 RealBadAngel not the fixed box
21:59 sapier collision handling is done by looping through collision boxes ... loops are performance killers if you add lets say 100 boxes for each model its 100x100 for 2 mobs 100x100x100 for three .......
22:00 VanessaE yeah but if each pass through the loop only takes 10ns, who cares if you have hundreds?
22:00 VanessaE you don't do collision checking against an object if you aren't in range of it
22:00 VanessaE and if you do, you're an idiot ;-)
22:00 RealBadAngel for collision maybe check the object, find out all maximum of x, y, z
22:01 sapier 100x100x100x100x100x100x100x100x100x100 is only 10 mobs!
22:01 RealBadAngel and create just a single box using them
22:01 VanessaE sapier: if a mob stands 2 nodes tall, that's only 4x4x8 = 128 rectilinear collision boxes
22:01 sapier I don't understand what the smaller boxes would be good for then?
22:01 VanessaE (in my example)
22:02 RealBadAngel i mean box made out of (min_x, min_y,min_z), (max_x,max_y,max_z)
22:02 sapier so 128x128x128? ;-)
22:02 VanessaE sapier: no, 128 * however many MOBs you have within a couple of nodes of your position.
22:02 VanessaE e.g. maybe 128 * 2 or 3 in practice
22:03 sapier collision handling doesn't work this way atm
22:03 VanessaE C++ could loop through that in a matter of a few hundreds microseconds.
22:03 VanessaE if it doesn't work this way, it's being done wrong then
22:03 RealBadAngel hey hey, look what i wrote
22:03 RealBadAngel i mean single box for each object
22:03 sapier vanessae remember collision handlin was already source of one big performance bug
22:03 VanessaE RealBadAngel: take your idea and scale it down and multiply = my idea
22:04 VanessaE sapier: then collision handling was badly coded to begin with
22:04 sapier if a mob with 128 boxes is moving on a crowded willlow it most likely will collide with many others
22:04 sapier yes vanessae it is, it's a algorithm for a static blocky workd
22:04 VanessaE look, somewhere in the engine there's code that updates the position of an object.  THAT is where the collision detection should happen.  I get the impression that this is not the case.
22:04 sapier that is case
22:05 VanessaE then something is being done badly wrong
22:05 sapier updating position means get old pos + add stepsize * velocity + add stepsize * acceleration -> new pos ... check all collisionboxes between old and new
22:06 VanessaE collision boxes are already rectilinear regions like RBA suggested.  It should not take more than a few nanoseconds, maybe a microsecond, to make such a comparison.
22:06 VanessaE this is video game 101 stuff here.
22:07 RealBadAngel what for scaling down? takin my idea of extremes it will always end with minimum sized box that contains the complex object
22:07 RealBadAngel defined only by two vertices
22:07 VanessaE every old 8-bit computer of the 1980's was able to do such collision checking (in 2d of course) without spending huge amounts of resources.
22:07 sapier you're wrong vanessa, accelerated movement adds lots and lots of objects to this calculation
22:07 sapier not in regular case but in worst case wich will happen every now and then
22:07 * VanessaE sighs
22:08 sapier i don't want to stop rba from adding this but only check if/what performance issues are added
22:09 VanessaE the problem with checking for acceleration is the same old issue it always in: setting reasonable-but-slightly-ridiculous limits on how fast an object can move or how quickly it can accelerate to a given speed.
22:09 VanessaE is*
22:09 RealBadAngel http://www.physics.emory.edu/~weeks/software/sphere.gif
22:09 Exio hi
22:10 RealBadAngel box as a collission box for spherical object
22:11 VanessaE RealBadAngel: in my suggestion, the collision box in that example would be composed of several smaller in a roughly spherical layout.
22:11 sapier I have no doubt this works for simple geometric objects
22:11 VanessaE smaller boxes.
22:11 RealBadAngel with extremes you will always end up with a box
22:11 RealBadAngel single box
22:12 RealBadAngel no matter what
22:12 sapier yes but we need support for rotated boxes which is much more important than creating smaller composed collision boxes ... but someone will have to rewrite collision algorithm in order to do this
22:12 VanessaE RealBadAngel: the argument I think is that a mob's body, for example, should have a much larger collision probability than, say, its legs
22:13 RealBadAngel what for collisions for part of it?
22:13 VanessaE and that's most easily achieved by breaking the one large "box of extremes" range into several small, fixed ranges
22:13 VanessaE just like when you scale an image down, you quantize it.
22:14 RealBadAngel leading to more and more calculations when we try to minimize it :)
22:14 VanessaE I'm saying to voxelize the model and quantize it to some really low resolution, and use the result to build a complex set of collision boxes.
22:14 RealBadAngel i say use just one collision box you want to multiply them
22:15 VanessaE because it would be easier to check a bunch of small boxes than it would be to check a vectorized model of a collision box.
22:15 VanessaE your way is the simplest, yes
22:15 VanessaE but it doesn't provide enough granularity
22:16 RealBadAngel implement the simplest one then you can go for more complex
22:16 RealBadAngel and see how it behaves
22:16 sapier vanessae imho you drasticaly underestimate the effect of  exponential growth in collision detection
22:16 VanessaE remember, one of the *biggest* irritations to most gamers is "hey!  wtf!  I SHOT him!" (but the bullet missed anyway), or you pass two pixels to the right of a MOB and you're killed anyway, "wtf!  I missed him!"
22:17 RealBadAngel the simplest one wont let it, it will be easier to hit something
22:17 VanessaE this happens when you use a simple rectangle or box to calculate collision for the entire object
22:18 RealBadAngel not true
22:18 RealBadAngel since the volume of box is bigger than the object youre just wrong
22:18 VanessaE RealBadAngel: think back to your 80's gaming days, when collision handling had to be done by checking if two bounding boxes coincided.
22:19 sapier I remember the time wher fps added hitboxes for headshots, this was really cpu expensive ... ok processors got faster since that time .. still we are talking about large numbers of boxes
22:19 RealBadAngel do we need headshots here? lol
22:19 VanessaE RealBadAngel: how hard was it then?  just checking two pairs of variables, right?
22:19 VanessaE (well, two variables, plus two more per on-screen MOB)
22:20 sapier if you like legshots we can add those too ;-)
22:20 sapier no it's checking 128 to 128 boxes for only 2 mobs colliding
22:20 VanessaE a set of checks that could be done on a dinky little 6502 processor in about 100 microseconds for the player + 5 or 10 on-screen MOBs
22:20 RealBadAngel well since we already can use music from artist that made scores for Unreal Tournament
22:20 VanessaE sapier: that much is true.
22:21 sapier multiply by 200 mobs running around ... wich aren't quite much
22:21 RealBadAngel we can add headshot possibility too
22:21 sapier on screen is not enough you need to do this for each active mob
22:21 VanessaE why would you be checking against 200 mobs?  or even a dozen?
22:21 RealBadAngel and wait for PvP shooting game mode
22:21 VanessaE how many of those are likely to actually be close enough to matter?
22:21 sapier because this has to be done for each active mob
22:22 sapier wait I'm gonna count number of mobs
22:22 RealBadAngel UnrealTest ;) lol
22:22 VanessaE sapier: I define "close enough to matter" as "close enough to be pointable"
22:22 VanessaE which is around 4 or 5 nodes' distance max.
22:22 RealBadAngel or CounterTest
22:23 hmmmm <sapier> updating position means get old pos + add stepsize * velocity + add stepsize * acceleration -> new pos ... check all collisionboxes between old and new      you mean acceleration^2
22:23 sapier collision needs to be done for each moving mob no matter if its visible or not
22:23 VanessaE sapier: then you're doing it wrong.
22:23 RealBadAngel wait i got better title for Minetest: FIrst blood )
22:23 VanessaE who are you checking them against?  each other?
22:23 sapier even if no other mob is involved its 128 to (at least) 9 check
22:24 VanessaE hrm
22:25 VanessaE ok maybe just one collision box then
22:25 * VanessaE shrugs
22:25 RealBadAngel told ya ;)
22:25 VanessaE it's gonna irritate a lot of people though.
22:25 hmmmm what's wrong with a single rectangular collision box....
22:25 sapier right after logging in I've got already 16 mobs loaded ... at daytime!
22:26 VanessaE hmmmm: you ever play a 1980's video game?
22:26 RealBadAngel they want headshot ability ;)
22:26 VanessaE let's say something like pac-man
22:26 sapier lol ... sometimes I wonder why worst examples get memorized best :-)
22:26 VanessaE sapier: because I grew up in that era, so that's what I remember.
22:29 VanessaE and I remember how much it used to piss me off, as well as most gamers I knew at the time, when a game used a collision box when something more sophisticated was needed, that always ended up either killing you or failing to kill an enemy when the opposite should have clearly happened.
22:29 VanessaE I'm trying to keep us from making that same mistake.
22:30 VanessaE if multi-part collision boxes isn't the answer, then maybe there's some other option.
22:30 VanessaE (and c55 thinks I only ever care about creative :-)  )
22:31 RealBadAngel some dwarf inside takin a look at screen capture and thinkin: let see if they collide...
22:32 VanessaE RealBadAngel: indeed, there were some machines with dedicated hardware collision handling, but we've got way more computing power than even the best dedicated hardware had back then.
22:32 RealBadAngel and then just call ask_dwarf(obj1, obj2) if true, they do collide ;)
22:32 sapier I suggest using /dev/cristalball
22:32 VanessaE heh
22:33 sapier but first of all I'm gonna try to fix that damn entity out if sync problem
22:34 VanessaE sapier: which one is that?
22:35 sapier the one where you have mobs flying/racing away on client because of server doesn't even know about it anymore thus not sending updates
22:35 VanessaE oh yes
22:35 VanessaE carts love to do that when the server lags
22:35 VanessaE that definitely needs fixed.
22:35 sapier another issue is mobs simply missing because server thinks it already sent it but client never received anything
22:36 sapier no lag issue is another one
22:36 VanessaE what is needed is a way to tell the server "accelerate to max speed X, travel at that speed for a maximum of Y seconds or Z nodes' distance, whichever comes first."
22:36 sapier at least atm I think so
22:36 sapier why?
22:37 sapier I sugges stalling movement if client didn't receive an update for some time
22:37 RealBadAngel i used to implement last_valid_position for that
22:37 VanessaE so that you could, let's say, program a cart to travel down a track and stop 10 nodes away (where the track turns) if an update is not received by that time
22:37 RealBadAngel if current excessed last valid+movement prediction i reseted it
22:37 VanessaE a mining laser could stop 20 nodes away whether an update is received or not
22:38 VanessaE that sort of thing.
22:38 sapier so you suggest adding a validity timeout for a movement instead of fixed value
22:38 VanessaE yes, basically
22:38 sapier more complex to handle but possible too
22:38 VanessaE both distance AND time.
22:38 VanessaE and just stop whenever the first one expires.
22:38 sapier no distance and time are nothing different
22:38 VanessaE wait, listen.
22:39 VanessaE well,
22:39 VanessaE no, just max time is enough I guess
22:39 sapier it's just adding additional complexity without functional addition
22:39 VanessaE but yeah, an entity should have a timeout - stop moving after X seconds.
22:39 RealBadAngel VanessaE, but the problem is enitities sometimes are on the loose
22:39 RealBadAngel they fail to report back its postion
22:40 VanessaE RealBadAngel: yes I know, and if they move for too long, they simply stop *on the client side too*
22:40 RealBadAngel or do that with heavy lags
22:40 VanessaE in other words both client and server have to know what the timeout is
22:40 VanessaE so both can stop their versions of the entity until the two can be resynched.
22:40 nyuszika7h_ joined #minetest-dev
22:40 VanessaE that doesn't fix the underlying bug, but it's still needed anyway
22:40 RealBadAngel seen items in tubes jumping back into right tracks?
22:41 VanessaE yep.
22:41 VanessaE carts too.
22:41 RealBadAngel thats my reseting code
22:41 sapier imho for a first step adding a prediction timeout would qite improve player experience
22:41 VanessaE sapier: yes.
22:41 sapier it'd be a small change but big in effect
22:41 VanessaE because you can then say "Ok, I know this entity is traveling at 10 nodes/second.  I want it to stop 50 nodes away, so it needs a 5 second timeout".
22:41 sapier and no need to change protocol
22:42 VanessaE server says "ok, it moved for 5 seconds,  stop all movement entirely".   Client says the same thing at the same time, independently of the server.
22:42 VanessaE both stop the entity at 5 seconds' out.
22:42 VanessaE eventually server+client come back into sync and they reposition the entity where it really should be, if needed.
22:42 sapier yes this is necessary if we wanna support lag > 1s
22:42 VanessaE *nod8
22:42 VanessaE *nod*
22:42 sapier do we want to do that?
22:42 VanessaE abso-fucking-lutely.
22:43 VanessaE 1 second it nothing in lag, I've seen 5+ minutes' worth before.
22:43 sapier you can't really play anything with lag at that level
22:43 VanessaE any time someone is using worldedit, or even just a really bad internet connecting.
22:43 VanessaE connection*
22:43 sapier sorry but we can't fix the worldedit issue
22:43 VanessaE yes I know.
22:43 VanessaE and it doesn't really help ones' playability to be lagging all to hell
22:44 sapier I won't put any effort in fixing problems not changing anything at root cause
22:44 VanessaE but > 1 second is pretty common really, under normal circumstances.
22:44 VanessaE so yeah, a movement timeout for entities/MOBs should solve a lot of problems.
22:44 sapier imho rtt>1s are core/mod bugs that need to be fixed
22:45 VanessaE sapier: tell that to kaeza, who has got to have THE worst networking hardware among the community :)
22:45 sapier if a server can't manage to send 1k bytes per second to each client this game never will fly ;-)
22:45 VanessaE noisy, low-quality wireless that frequently causes timeouts *outside* of the game, e.g. on IRC>
22:46 VanessaE obviously the solution in his case is to fix his network if possible.
22:46 sapier yea but we're not creating a fault tolerant high latency cross solar system network game here ;-)
22:46 VanessaE but if we can do something to help soften the blow, we should.
22:46 sapier at least didn't I know about anything like that by now
22:47 VanessaE heh
22:47 sapier problem is adding this will introduce sync problems
22:47 VanessaE maybe
22:47 VanessaE but would it be any worse than the problem we have now?
22:47 sapier the more complex this mechanisms get the more difficult to handle
22:48 VanessaE fault-tolerant networking code is a core part of the Internet, and if we can do something about it on our end also, we should.
22:48 sapier simply adding a timeout wont make it worse, adding prediction times ... maybe not too but we need to change protocol
22:48 VanessaE in the meantime, entity movement timeouts and some kind of more lax settings in the anti-cheat code is enough.
22:49 sapier internet protocol is not as fault tolerant as you may think, wireless lan is known to suffer from tcp/ip bugs and interplanetary communication isn't feasable with tcp/ip too ;-)
22:50 VanessaE heh
22:50 VanessaE so, I see how it is
22:50 VanessaE those poor astronauts on the ISS don't get to play minetest now huh? ;)
22:51 sapier quite difficult and they are in orbit and not even on another planet ;-)
22:51 VanessaE heh
22:52 sapier I'll try to add the timeout as first step maybe this is enough for some time
22:52 VanessaE *nod*
22:53 sapier but first I'm going to get some sleep :-)
22:53 sapier good night :)
22:53 sapier left #minetest-dev
23:42 StrayBytes joined #minetest-dev

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