Time Nick Message 00:18 hmmmm [06:25 PM] 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 :-) 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 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: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 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 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: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: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 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 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 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 hmmmm no problemoo.. 17:35 hmmmm agh i should've pasted the link to the code style guidelines page 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 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 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 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 :)