Minetest logo

IRC log for #minetest-dev, 2014-04-11

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

All times shown according to UTC.

Time Nick Message
00:52 EvergreenTree joined #minetest-dev
00:54 EvergreenTree joined #minetest-dev
01:47 specing joined #minetest-dev
02:24 salamanderrake joined #minetest-dev
03:04 salamanderrake joined #minetest-dev
05:49 OldCoder joined #minetest-dev
06:16 proller joined #minetest-dev
06:35 darkrose joined #minetest-dev
07:17 darkrose joined #minetest-dev
08:03 kaeza joined #minetest-dev
08:26 restcoser joined #minetest-dev
08:53 Amaz joined #minetest-dev
09:38 OldCoder joined #minetest-dev
10:24 proller joined #minetest-dev
11:13 Shardvex joined #minetest-dev
11:19 Amaz joined #minetest-dev
11:40 proller joined #minetest-dev
11:45 PilzAdam joined #minetest-dev
12:04 PenguinDad joined #minetest-dev
12:19 Fresh_me_ joined #minetest-dev
12:24 robmyers_ joined #minetest-dev
12:32 Eater4 joined #minetest-dev
12:46 hmmmm joined #minetest-dev
13:12 ImQ009 joined #minetest-dev
13:25 Taoki PilzAdam: poke
13:33 BlockMen joined #minetest-dev
13:34 BlockMen Taoki, https://github.com/BlockMe​n/minetest/tree/tpv_taoki
13:34 Taoki BlockMen: Nice. Does that have your 3rd person code with the lua functions for the offsets?
13:35 BlockMen yep
13:35 Taoki Awesome :)
13:35 Taoki I should try it now. What's an example for the function?
13:35 Taoki Ah... I have to checkout a new remote though. Usually having trouble with that
13:35 Taoki *on GIT
13:36 BlockMen player:set_local_animation({x=0, y=79}, {x=168, y=187}, {x=189, y=198}, {x=200, y=219}, 30) for the animations
13:36 BlockMen )player:set_eye_offset({x=10,​y=30,z=0},{x=-10,y=-10,z=-5}) for offset
13:37 Taoki Local animation?
13:38 Taoki What's the first one do?
13:38 BlockMen because the animation for your (local) player is done at client to prevent lags
13:38 proller git remote add upstream https://github.com/minetest/minetest.git  ; git fetch --all ; git merge upstream/master
13:38 Taoki Aaah. Hmm... need to think well how this will work
13:38 BlockMen but since games can use different models per player the client needs to get the animations frames
13:39 Taoki BlockMen: There are currently no hard-coded animations. I was hoping it could be kept that way. Is that function documented so I can understand how it works?
13:39 Taoki Sure.
13:39 Taoki The idea of having hard coded animations though sounds a bit meh. At the same time, it won't look OK locally without them
13:40 BlockMen https://github.com/BlockMen/minetest/​blob/tpv_taoki/doc/lua_api.txt#L1854
13:40 BlockMen its not "that" hardcoded since games, mods, w/e can change the model and the animation, so...
13:41 Taoki Yeah. But I think this creates a somewhat odd situation. Animations for other players are done in Lua, but local player animations are set differently
13:41 Taoki I tend to think this might have to be done differently
13:42 Taoki TBH... I'd be tempted to say we should make a function to set standard animations for all players. While leaving set_animation to trigger custom ones mods might add
13:42 BlockMen Taoki, where is the difference if lua sets the animations just on server or on server AND client?
13:42 Taoki so instead of a set_local_animations, we might have a set_standard_animasions, which does the same thing but for all players
13:42 Taoki well,
13:43 Taoki When I added animations, I made the Lua API inform clients of animation changes only. So you don't for example configure a walk animation... Lua simply detects when the player presses a movement key and triggers an animation on him then
13:43 Taoki Among other things, this also means more packets. It's indeed something I should have done a bit differently
13:44 Taoki The best way would be this: A set_standard_animations function, which sets the frames for walk / stand / dig / die... just like what you mentioned now. But not only for local player... for all players. Such animations are then processed client-side only for every player in view, not only the local one
13:45 BlockMen the animation for the client is only send once (or how often you want call it)
13:45 Taoki This would mean less lag, and quicker animation updates
13:45 Taoki Yes
13:45 Taoki I'm just saying we should do it for all players, not only the local player
13:46 Taoki Because if walk / stand / dig / die animations are handled client-side only, with Lua only sending the frame list once for each player, we have quicker and less laggy and less network costly animations for everyone.
13:46 BlockMen would it save that much bandwidth when its jsut sends the state instead the frames?
13:46 Taoki It's my mistake I didn't do that when I added 3D model support first, I should have thought better actually
13:46 Taoki Yes. Not just bandwidth, but animations on other players would update more quickly. Since the client can detect when the player stops moving
13:47 Taoki Right now, whenever a player in your view starts / stops moving, the server sends a new trigger_animation packet. More bandwidth AND if it doesn't arrive at the same moment as the player's position, you'll see the player moving with the stand animation or standing with the move animation (walking in mid air)
13:48 Taoki However, the current set_animation must remain there as well, and have priority over such local animations... so mods can always animate the player and have him do custom things
13:48 Taoki Only ones that should be client-side should be stand, walk, dig, walk + dig, die (death should be there too)
13:50 BlockMen for some reason i did not die locally (but cant remember right now)
13:50 BlockMen *death
13:50 Taoki BlockMen: So can you try to change  player:set_local_animation into  player:set_standard_animation and have it act not just for local player but for all players? But while keeping set_animation (the server one) at priority over it, as well as resuming default animations when set_animation stops the custom animation.
13:51 Taoki Sadly this might be tricky, because the client might not know what keys another player in view is pressing. For example you have to guess walk by noticing the velocity of other players
13:51 Taoki Dig I'm not sure how one can tell from the client. Death should be possible to observe because IIRC you know the HP of any player client-side, so you can set death animation when HP is 0
13:52 nore joined #minetest-dev
13:53 BlockMen Taoki, i wont start to rewrite the whole player animation now...
13:53 Taoki BlockMen: This offers the opportunity to add another very welcome feature... witch surprisingly enough I was just thinking about 15 minutes ago: The playback speed of the walk animation matched to the speed of walking
13:53 Taoki ok
13:53 Taoki Problem is that if you create a set_local_animations, this might be difficult to do later
13:54 Taoki The function would have to be renamed and re-interpreted
13:54 BlockMen not necessaryly. e.g. could the new function pass the values to the player and set_local_anim would be not useable then
13:54 BlockMen *interpretated
13:55 Taoki BlockMen: For now, I'd suggest simply changing the name. Instead of  player:set_local_animation, use player:set_standard_animation or something. You can leave it for local player only, and later on me or someone else can add it for all players.
13:56 BlockMen Taoki, i think this is a worse idea since the stand_animation func must interpret both (old and new). better to leave it like now and let the new function do the job when done
13:57 BlockMen *s/worse/bad
13:57 BlockMen IMO that would be the "cleaner" way
13:57 Taoki Really not sure... we risk having to use two functions that do nearly the same thing then
13:58 Taoki Well, this could be used to have different local animations client-side... not sure what use that would be though
13:59 Taoki BlockMen: Would it be very hard to try and make the function work for other players too though? It's not a big rewrite of the animation system IMO. The only problem at all is detecting when walking / digging without knowing the pressed keys, otherwise it should work the same way
14:00 Taoki I can answer any questions from what I remember about the animation system
14:00 Taoki I'd try it myself, but it's harder for more than one person to work on the same code at once.
14:01 Taoki You can probably just remove if(m_local_player) from the current function, and instead of using movement keys use velocity information... that should be it.
14:01 BlockMen i can try out, but since my patch gets not merged right now we can think about that again and maybe find "the" solution^^
14:02 Taoki Sure. Not something that should be rushed, but yeah I think this needs to be thought of nicely :)
14:02 Taoki I'll look at your current code and see if I can find more specific suggestions
14:02 BlockMen any comments on set_eye_offset?
14:03 Taoki Its functionality looks good to me
14:03 Taoki I was only wondering one thing though...
14:04 Taoki Would it be better to not make it act as an offset, but as new positions entirely? So it's not applied on top of the default player's head position, but from the center of the entity to specify new positions entirely
14:04 Taoki I'm not sure which would be best, so rather asking than suggesting
14:06 BlockMen i dont think it should be done by pos for player, since the camera is attached to the player (and should be)
14:06 Taoki Yeah. The default one has a position or offset too however. I wasn't sure where and if that should be changed
14:06 Taoki Perhaps offset is better yeah
14:07 Taoki Other than this (which isn't very important) it looks good to me yes :)
14:08 Taoki set_eye_offset helps fix the ability to have any shape or form of model which is great
14:08 BlockMen i suggest to add a max negative offset for y for first person view too (to prevent moving under the players pos)
14:10 Taoki Eh... that's the modder's responsability I think. Anyone would probably test where the camera goes and not add it under the ground or something
14:11 BlockMen ok, then it stays as is
14:11 Taoki For now I'm looking at the code here https://github.com/BlockMen/minetest/compare/tpv_​taoki#diff-722710b5ecd9db42e7dd785dd517e186R1082 Trying to figure out how at least movement animation can be done for local player. And actually, if the function can even be allowed on entities... for mobs to benefit of it too
14:12 Taoki Don't worry I'm looking for a simple and clear solution :P Don't wanna push you into a huge rewrite of animations
14:12 Taoki Just that if this will be there, I'd be happy to see it be right and complete
14:13 BlockMen the movement is already detected in step() float moved = lastpos.getDistanceFrom(pos_translator.vect_show);
14:14 BlockMen so yeah, in general it should work. but you still need to send a value if player is digging or not
14:14 Taoki BlockMen: if(controls.up || controls.down || controls.left || controls.right) Might there be a way to instead use something like if(velocity.X != 0 || velocity.Z ~= 0)? That would make it work for any player or entity
14:14 Taoki That should be all that's needed to have movement detected for anything
14:14 Taoki Yeah, digging remains the only problem then
14:19 BlockMen Taoki, what when a player is riding (a cart for examlpe)? then the velocity is > 0 and the walking anim would be shown
14:20 Taoki We might need to send a boolean to the client to let it know when another player is diffing. And I'm not sure if it can be made to work for entities too, so hostile mobs who attack the player can do the same for better animation
14:20 Taoki Ah. We can detect if the player is attached to something
14:20 Taoki That's certainly possible... I think you can check if parent is null
14:21 Taoki Examples should be around in content_cao.cpp
14:21 BlockMen lets concentrate on players first
14:21 Taoki yeah
14:21 Taoki Actually, I think digging can work only on players. Movement animation however can be allowed for all entities... won't require anything
14:22 Taoki Since you can check velocity on anything... just don't put an if_player check on movement anim and only put it on dig anim. Sounds about right
14:23 Taoki Also, you're right... death animation doesn't need to be client side. Because it's triggered very rarely and something the server can be in full control of
14:27 Taoki BlockMen, so plan would be: if(m_is_local_player) goes away. if(controls.up || controls.down || controls.left || controls.right) becomes if(parent == NULL && (velocity.X != 0 || velocity.Y != 0)). Digging needs to become a boolean which the server sends to clients... should be possible to add in the player information update package. if(controls.LMB || controls.RMB) would be replaced by if(bool)
14:28 Taoki I think that would do everything right, and animations would all be better as well :)
14:30 BlockMen Taoki, guess that should work ;)
14:30 Taoki It doesn't need to be necessarily called "digging" also, but rather using. Since it seems to be for both LMB and RMB. And the dig animation represendt all actions well... such as mining / shoveling, clicking a button, fighting another player, or even placing nodes on the ground when building
14:31 BlockMen maybe you could even "abuse" the digging anim for entities as "attack" anim
14:31 Taoki So dig_animation should perhaps be called use_animation everywhere. And this boolean sent whenever a player preforms any action with an item. This can be done later for something other than digging though
14:31 Taoki Yeah :)
14:32 Taoki BlockMen: However, I'd suggest removing any check whether the entity is a local player or a player at all. Run the code on any entity. Velocity for movement animation works the same on anything. Digging... well the server sets the boolean, if it's there the animation plays if not no. If someone else later adds this on entities too the code will automatically see it
14:33 Taoki Currently it will only set it on players. Later someone might find a use on entities too, and the local digging animation would then work on mobs too. This should work very nicely :)
14:34 BlockMen m_velocity is set by update position command, but somehow i have 0 :\
14:34 Taoki That's strange
14:34 BlockMen *s/have/get
14:35 Taoki Will check too. Certainly there's a way to get velocity... otherwise the client wouldn't see anything ever moving
14:36 BlockMen i will try to catch the value before step
14:40 Taoki Yes. I put errorstream<<m_velocity.X<<" !!!!"<<std::endl; at the beginning of step, it always returns 0 as I move. Will keep looking for solutions too
14:41 werwerwer_ joined #minetest-dev
14:41 BlockMen found one: moved = lastpos.getDistanceFrom(m_position);
14:41 BlockMen so if player moved he is walking
14:42 Taoki Yes, sounds good :)
14:42 BlockMen and works :)
14:42 Taoki As long as current pos and latest pos aren't the same, walk animation must play
14:42 Taoki Awesome!
14:43 BlockMen next: move localplayer stuff to player
14:44 Taoki Now all that needs doing is giving all entities (players and Lua ents) an "using" boolean, which the server can toggle at any time and is updated on all clients who have that entity loaded locally. That can be used to know dig animation and everything is then done :)
14:44 BlockMen but we need a sane way to detect sneaking too (of other players)
14:44 Taoki Best is probably to detect the lower velocity
14:45 Taoki BlockMen: One awesome part of doing it this way is that the speed of the walk animation can be modified by the velocity itself. Which can be added later, it's not urgent. But it's prolly the best way to do sneaking later
14:47 Taoki BlockMen: If you want to detect sneaking specifically however, it's easy. Player physics can be configured under minetest.cfg, since my physics changes many months ago. One can compare the player's velocity to each setting, and notice if player is at sneaking speed or walking speed. Also if he's at running speed, so sprinting can be detected too even!
14:47 proller joined #minetest-dev
14:48 Taoki If a player / entity is flying can probably be detected too later on, if need will ever be. By tracing if there's a node or surface under that entity. But there's no separate fly animation so not important now
14:51 BlockMen Taoki, there already is a detection for flying -> bool touching_ground;
14:51 Taoki So IMO, the best way to handle sneak animation is by later making the walk animation depend on walking speed. Later though, I think it's not  urgent but will be needed
14:51 Taoki Nice
14:51 BlockMen well, then we need the velocity value :P
14:52 Taoki It can be obtained by seeing how big the distance between positions is
14:52 Taoki Hmm... but then it needs to be accurately converted, based on the server's sneak / walk / run speed
14:54 Taoki I'd say don't worry about it now though. Might look at the code myself and think of ideas here... can even be done in a separate branch after this is in
14:57 Taoki BlockMen: But yeah, it would probably be something like this for the walk animation: m_animation_speed = specified_animation_speed * (((pos_last.X - pos_current.X) + (pos_last.Z - pos_current.Z)) / 2) * how_much_speed_affects_movement;
15:00 BlockMen how_much_speed_affects_movement?
15:01 Taoki Well there would probably need to be a value which specifies how much the velocity should influence animation speed
15:01 Taoki Right... that's what I meant, dumb wording on my end :P
15:02 BlockMen ic ;)
15:02 Taoki Ideally, that formula should return 1 when the player is at walking velocity, so the animation then plays at specified_animation_speed. When sneaking it would be 0.5 or 0.666 or whatever it will be. When springing it would be 1.5 or 2 or something. So it would always be in the right place
15:03 troller joined #minetest-dev
15:03 Taoki Just need to understand how to scale it properly so the feet always move across the ground at any speed the player might ever have
15:04 BlockMen the sounds are player if the diff > 1.5*BS
15:04 Taoki BlockMen: Oh... and use bool touching_ground too, now that you mentioned it. So the walk animation doesn't play when the player / entity is in mid air either... can keep having the stand animation there. Depends if that looks best when jumping and such
15:06 Taoki Not SAYING what to do BTW... just coming up with suggestions to help make this as good as possible :)
15:06 BlockMen i would prefer a walking if moving x or z and a stand anim when just y
15:06 Taoki Yes, that sounds correct
15:06 BlockMen and im making a break right now since i broke mt now :D
15:07 Taoki Hehe
15:07 Taoki Although if the walk animation if only played while the player is touching the ground, Y speed doesn't matter. Since you can't touch the ground and have Y valocity too... this means it's always 0
15:08 Taoki So if you add ground touching detection, you can just take the speed / position vectors and use them as a whole
15:08 Taoki eg: No need to extract X and Z specifically, since we know Y is zero
15:12 tomreyn joined #minetest-dev
15:12 rubenwardy joined #minetest-dev
15:14 BlockMen but then you have no walk anim if the player is walking AND jumping
15:14 Taoki Yeah, while the player is in mid air. In real life, you usually don't swing your legs while in air after you jump. But it depends on how it will look like here
15:14 Taoki It might look better or worse
15:16 nore joined #minetest-dev
15:17 BlockMen but you are always moving somehow when jumping
15:17 BlockMen maybe not walking but better than nothing IMO
15:19 Taoki True. Maybe try both ways and see which looks better. Personally I don't mind either way
15:31 smoke_fumus joined #minetest-dev
15:34 proller joined #minetest-dev
15:39 zat joined #minetest-dev
16:12 Jordach_ suggestion, a falling animation doesn't often appear in first person games as others are already vertical when falling
16:12 Jordach_ maybe arms flailing after x speed downwards
16:14 proller or rotate head down when speed very fast
16:14 Jordach_ proller, you assume gravity is always -9.82m^2
16:14 Jordach_ some games it may be the opposite
16:15 Jordach never assume the direction of gravity -- in cases such as directional based movement (and assume the ground is a plane)
16:21 rubenwardy The log in for the main website is blocked by McAffee: https://www.siteadvisor.com/sites/http://minetest.​net/start%3fdo%3dlogin%26sectok%3d081ea0a2e64ab209​c7ac040a1f3834b0?pip=false&amp;premium=false&amp;c​lient_uid=3695886712&amp;client_ver=3.6.5.135&amp;​client_type=IEPlugin&amp;suite=true&amp;aff_id=691​&amp;locale=en_gb&amp;ui=1&amp;os_ver=6.1.1.0
16:23 BlockMen lol
17:05 proller i want to start make multipoint gravity for paramat maps
17:05 proller but in <CENCORED>miner
17:10 iqualfragile joined #minetest-dev
17:36 Calinou joined #minetest-dev
17:42 sfan5 can we have this merged? https://github.com/minetest/minetest/pull/1210
17:53 BlockMen Taoki, well, feel free to switch to the new animations. for me it always crashes when trying to join multiplayer server...
17:54 BlockMen i wont do this in near time
17:55 sapier joined #minetest-dev
17:56 sfan5 sapier: comment/opinion about #1210 ?
17:56 ShadowBot https://github.com/minetest/minetest/issues/1210 -- Add redis database backend by sfan5
17:57 sapier one second please I'm looking for a message from iqualfragile right now
17:57 sfan5 I have time ^.^
17:57 sapier hashes aren't very usefull in shadowbot messages
17:58 proller Poll: Rename minetest to sapiertest  [y/n]
17:58 sapier poll: force kick everyone only compaining but not helping
17:59 iqualfragile sapier: not even quite sure anymore, could just have been a stupid mod
17:59 proller sapier, i can help if you ca stop commit shitcode
18:00 sapier vanessaE had this patch running for 2 months on her servers by now i'd be surprised by a bug that severe ... but of course there still might be issues
18:00 sapier proller I'm sorry but your code, especially considering the commit messages is way more close to shitcode then mine ;-P
18:01 sapier argh I fed the troll ... damn
18:01 proller code or commit messages?
18:01 sapier BOTH
18:02 proller show my shit code
18:02 sapier and your code isn't better then mine at all ... hardcoding numbers to fix performance issues is crap as it's gonna work at only a couple of machines having exactly same performance then yours
18:03 proller where it is?
18:03 sfan5 apparently nobody wants to comment to pull 1210
18:03 sapier but this discussion is useless as it's not about technical reasons but about violated proud
18:03 Garmine joined #minetest-dev
18:03 sapier slow sfan5
18:05 nore joined #minetest-dev
18:07 sapier I'd not be as strict as xyzz but using a macro to do native coding in c++ (despite some text shortening) feels wrong to me too
18:08 sfan5 Usage of macros is not discouraged at all, just don't overdo it like X.org.
18:08 sfan5 http://dev.minetest.net/Code_style_guidelines
18:08 sfan5 do you suggest to duplicate the code instead?
18:09 sapier I didn't say "don't use macros" just it feels wrong ... meaning "if there's a better way to do it it should be used"
18:09 sfan5 I don't see a better way, do you?
18:09 NakedFury joined #minetest-dev
18:10 sapier I'm still looking at it
18:10 sapier I'd not consider removing this macro as code duplication just normal coding
18:11 sapier I use macros myself e.g. in scriptapi but there's same code 10 times per file every line
18:13 sapier and please check for code style consistency
18:14 sapier hmmm actually checking this is ShadowNinja's task not mine ;-) ... Shadow! :-)
18:16 sapier what "g_settings->getBool("ignore_world_load_errors")" do we really hava this setting?
18:16 sfan5 yes
18:17 sfan5 the same code is in database-sqlite3.cpp and database-leveldb.cpp too
18:17 sapier try to use "if () {" ... "void func(param) {" more consistent then you did by now
18:17 sapier I didn't check but assume sqlite & co had this setting too
18:18 sapier did you do benchmarks yet sfan5?
18:18 sfan5 no
18:18 sfan5 that is not something we need to merge this pull
18:19 sapier I suggest doing those too ... I don't expect this but if it's 100 times slower there's no chance to merge
18:19 sfan5 redis is not slower
18:19 sfan5 I would bet some money on that
18:19 sfan5 redis has most of the DB always in RAM
18:19 sfan5 and only saves when told to
18:20 sfan5 how should I do benchmarks?
18:20 sapier that's a good question ... didn't someone add scripted movement lately?
18:20 sapier at least as patch
18:20 sfan5 I did
18:21 sfan5 https://github.com/sfan5/min​etest/tree/lua_inputhandler
18:21 Taoki BlockMen: Did you add the code and put it anywhere on GIT? I can try it and check it
18:21 sapier don't know if this works but e.g. walking around in a scripted way and checking cpu load could be a test
18:22 sapier another one might be creating new world (from fixed seed) teleporting multiple players to somewhere else (or using forceload) and calc time till cpu settles down
18:23 sfan5 you mean using this? https://gist.github.com/sfan5/9586533
18:23 sapier not sure if those will give valid results but as always for benchmarks without trying no chance to tell for sure
18:23 sapier but if you did design those tests maybe add create a pull reques so we don't have to create them again for next db
18:24 sapier -add
18:24 sapier I'm sure you've got other good ideas for benchmarking too
18:26 sfan5 I'll use the gist thing I linked
18:33 BlockMen Taoki, nope sry.
18:34 Taoki ok
18:35 Taoki BlockMen: If you want to make more additions to the branch them, best to make them before. This likely means I have to copy your branch and make my own version, to work on the code separately...
18:37 BlockMen Taoki, go ahead. the 3rd pv is done so far, so i dont know what i should add before
18:38 Taoki ok
18:39 BlockMen except...renaming the set_local_anim() func and change just its behavior later
18:40 BlockMen sapier, whats your thought on?
18:42 proller joined #minetest-dev
18:44 sapier well I'm not the only core dev, I'm just the one most active right now, I'd prefere to have some other opinion especialy on design/graphic things as this isn't what I'm that good
18:45 sfan5 sapier: my test does not seem to be very representative
18:45 sfan5 about 19 secs for leveldb & redis
18:46 sapier adding a loop sometimes helps ... if it doesn't help back to draft and try another idea ... sorry but that's common risk of creating new benchmarks
18:47 sapier and maybe ask some of the guys having written the other implementations maybe they already know where the bottlenecks are
18:55 Taoki BlockMen: Your branch fails to compile it seems
18:55 Taoki error: ‘class LocalPlayer’ has no member named ‘eye_offset_first’
18:55 Taoki error: ‘class LocalPlayer’ has no member named ‘eye_offset_third’
18:55 Taoki I assume I don't need to run cmake again
18:57 sapier joined #minetest-dev
19:01 BlockMen Taoki, oh i forgot to add localplayer.h and localplayer.cpp to the branch
19:01 BlockMen one sec
19:02 nore joined #minetest-dev
19:02 Taoki ok. Already forked your branch... I hope a rebase will do the trick
19:08 BlockMen Taoki, should work now. and its no big change ;)
19:17 Taoki Just to be safe: void step(float dtime, ClientEnvironment *env) runs for EVERY client entity, right? Including other players and all Lua entities, like mobs or items or anything at all
19:18 Taoki In content_cao.cpp I mean
19:18 sapier only for active ones
19:20 Taoki Sure... only matters if it runs for those which are visible
19:20 Taoki sapier: BTW... me and BlockMen found a stopper for what we're trying to do there. m_velocity always seems to be 0,0,0 when checked in that function. Any idea why and how we can get the velocity of an entity there?
19:21 sapier it shouldn't be 0 there
19:22 sapier hmm maybe it should ... can you give me the codeline?
19:22 Taoki Tried it and it is. Put errorstream<<m_velocity.X<<std::endl; at the beginning or end of that function, and when moving around it always prints 0
19:23 sapier line of code
19:24 BlockMen Taoki, found another solution for. Add velocity to player.h and then grab the velocity when updatepos is send to client
19:24 BlockMen then you can get the velocity in step with player->velocity
19:25 Taoki sapier: content_cao.cpp line 1080.  Add the following line at the beginning in that function: errorstream<<m_velocity.X<<std::endl;
19:25 Taoki Then watch the console or chat output as you move around on X axis... it always says 0
19:25 Taoki BlockMen: Might think about it
19:25 Taoki I think something is wrong if m_velocity isn't there though
19:26 BlockMen but it isnt wrong at all to have velocity stored in player
19:27 sapier well it's 0,0,0 for players
19:27 Taoki Yeah. I'll add that if there's no other way. I'd like sapier to take a look at why m_velocity isn't working first
19:27 Taoki sapier: Is that normal though?
19:27 sapier and 0,0,0 for all entities where position is updated the hard way
19:27 sapier for players yes
19:28 Taoki ok. So BlockMen's suggestion is the best and only way to go? Should I pipe velocity through player.h?
19:28 sapier if you have mobf mobs you should have entities with velocity
19:28 restcoser joined #minetest-dev
19:28 sapier player is updated by position so yes it's quite normal for players
19:28 Taoki I need a reliable way to get velocity for both players and entities
19:29 Taoki Like mobf ones
19:29 Taoki How would I go about getting the veolcity of players there then? Do I need to generate it?
19:30 Shardvex joined #minetest-dev
19:30 sapier players don't have a velocity
19:30 Taoki I see. Means I need to obtain it calculating current_position - last_position
19:30 Taoki BlockMen: What were the names of the two position vectors? current_pos or last_pos? Are they a player or entity class?
19:30 sapier for what I know player movement is done by updating their position only. So yes delta calc is only way to get it
19:31 sapier carts mod does same for what I know
19:31 sapier I believe simple mobs uses velocity but I'm not sure about it
19:33 Taoki It needs to work for players too so I'll stick with position difference checks
19:33 BlockMen there were no value. i got current_pos with player->get_pos() and last_pos was added manually by me (and just for testing updated in step())
19:33 Taoki I see
19:34 Taoki v3f lastpos = pos_translator.vect_show;
19:34 BlockMen ^ didnt work for me (dont know why)
19:34 Taoki Strange
19:35 BlockMen indeed
19:35 Taoki Prolly needs to be done a bit further down in the step function
19:38 Taoki Works for me
19:38 Taoki float x = pos_translator.vect_show.X - player->getPosition().X;
19:38 Taoki errorstream<<x<<std::endl;
19:38 Taoki When I move on X axis it returns values greater than 0 and seems all right
19:39 BlockMen Taoki, that better ;)
19:39 BlockMen sapier, sfan5 can i push https://github.com/BlockMen/minetest/commi​t/fefec8cdc44b7fe32754053bac02c18cfe5a22f7 ?
19:39 BlockMen reported here https://forum.minetest.net/viewtopic.php?id=9031
19:39 sapier << waiting for someone to recognize win32 build beeing broken
19:40 PilzAdam joined #minetest-dev
19:40 sfan5 BlockMen: seems fine
19:41 sapier merge it
19:41 sfan5 sapier: can we merge #1210 now? I did some more tests using the tool at the gist I linked and it seems redis is faster
19:41 ShadowBot https://github.com/minetest/minetest/issues/1210 -- Add redis database backend by sfan5
19:41 Taoki One problem though: For players I use player->getPosition(). What would I use if it's a different entity?
19:41 Taoki Is there actually a getPosition that works for any type of entity?
19:42 sapier 1210 is still lacking benchmarks.
19:42 BlockMen done
19:43 sfan5 oh hey
19:43 sfan5 windows build is broken
19:44 Taoki m_position seems to do the trick
19:44 BlockMen sapier, you had just 3 minutes to wait ;)
19:44 sapier and as I said I'm more at xyzz's side for this usage of a macro so I wont agree
19:44 nore joined #minetest-dev
19:46 sapier fixed win32 build
19:54 sfan5 sapier: added lines: 15 removed lines: 10 total lines: 5 | so far for code duplication
19:55 sfan5 (result of removing use of macro)
19:57 sapier well that's not a big difference (in total values) ;-) but quite more readable
19:57 sapier still adding a new database isn't something I wanna decide on my own this is sort of issues demaning opinion of more then 2 developers
20:03 seolfor joined #minetest-dev
20:04 sfan5 sapier: I changed some macro stuff
20:05 sfan5 is it better like this?
20:05 sfan5 or does everyone want me to remove macros completly
20:05 seolfor Hello everyone ;]
20:06 sapier I guess removing it is way less work for you to do then trying to save it by some obscure constructs ;-)
20:07 seolfor I would like to make some contribution for game core and because of that i have few questions
20:07 sapier it's only called a couply of times, benefit of text saving is minimal in this special case, if you did call it hundreds of times that'd be different
20:07 sapier just ask seolfor
20:09 seolfor hmy.. should i expect some problems with deverloping it on windows and Visual Studio IDE or should i use linux and copile it for win ?
20:10 sapier something completely different, can we drop winxp support ? :-)
20:11 sfan5 we can
20:11 sfan5 XP is no longer officially supported
20:11 sapier you can do it on windows too. You're most likely be the one discovering windows bugs first but that's quite apreciated
20:11 seolfor ;D but im talking about win 7
20:13 sfan5 sapier: ok, I removed all macros
20:13 rdococ joined #minetest-dev
20:14 seolfor all right then i will try my best to compile it on windows first, but form experience I can tell it can be tricky
20:16 sapier well depends on your build env. Minetest already does support windows
20:17 sapier http://dev.minetest.net/Build_Win32_min​etest_including_all_required_libraries this will help you quite a lot
20:17 seolfor joined #minetest-dev
20:17 sapier seolfor: http://dev.minetest.net/Build_Win32_min​etest_including_all_required_libraries
20:19 seolfor thx a lot it should help
20:19 sapier I don't use vs2012 on regular base but I know this did work not long ago (I've written it myself)
20:20 seolfor and sory for dissconnects but im still fighting with configuration of my irc client ;(
20:20 seolfor that's great
20:20 sapier windows developers are always welcome, there aren't many guys willing to fight windows issues ;-)
20:21 sapier usually a broken windows build is detected days after it's been broken while linux build ... couple of minutes ... if ever
20:21 Taoki Mmm... doesn't seem like it will be very possible to detect sneaking for client-side animations :/
20:21 seolfor ye I known i hate issues on win in bissnes projects ;D
20:21 Taoki There's no way to get stable position updates. All I can do is tell that a certain player is walking
20:22 Taoki sapier: Do players at least have a velocity server-side, which can be sent to clients?
20:23 sapier yes that's good and bad same time taoki ... good thing, players wont continue to walk "forever" in bad lag situations ... bad they get jumpy in medium lag situation
20:23 sapier no they don't
20:23 Taoki sapier: I can't find any way to generate a stable velocity in step() from positions. Any ideas at all?
20:24 sapier player positions are calculated by client and server only checks those "new" positions for validity
20:24 Taoki Problem is that if I walk at a constant speed, I get random values. Sometimes it says 0.5, at other times 2
20:24 Taoki I don't understand why it does this exactly
20:24 sapier because of step jitter
20:25 Taoki I see. Any other way I could go?
20:26 sapier client could provide a sneak flag combined with positions sent
20:26 BlockMen then add the dig flag too
20:27 sapier I suggest state enums ... would allow more then 32 states ;-)
20:28 Taoki I wanted to match animation speed to velocity tho
20:28 kaeza joined #minetest-dev
20:28 sapier taoki do you regularly rewrite patches already provided as pull requests?
20:29 Taoki So the aim is to get it very accurately
20:29 Taoki No, this is something I discussed with BlockMen to do
20:29 Taoki BlockMen: You might want to temporarily close that pull, not sure. Till we see exactly how and what. Can be re-opened later
20:30 sapier https://github.com/minetest/minetest/pull/774 this is what you wanna implement
20:30 sapier does only work for entities of course
20:30 Taoki sapier: Yes, into the client-side animation system the new branch adds. Which is needed for local player
20:30 Taoki Yeah, mine needs to work for entities and players
20:31 restcoser joined #minetest-dev
20:31 sapier imho you shouldn't create a parallel feature but improve the existing ones ;-)
20:31 sapier I'm starting to believe you always rewrite patches already provided by someone else ;-)
20:32 Taoki sapier: Problem is that BlockMen's third person view code requires local animations. He initially did them only for the local player, but this is bad and changing it later would be hard
20:32 Taoki No, this is actually the first time i work on someone else's code
20:32 BlockMen wut? why should that be hard to change?
20:32 Taoki New function would still remain and it would be a duplicate
20:33 BlockMen new function would replace the old one, no problem at all
20:33 sapier :-) the attach thingy was suggested by me about a year prior your variant got merged too ;-)
20:33 sapier there's even a patch that never got merged
20:33 Taoki Didn't know about it
20:34 BlockMen i would say we should decide about it when we know when next release is
20:34 sapier don't bother, important thing is it got merged
20:34 seolfor joined #minetest-dev
20:34 Taoki I added attachments as part of the 3D model system... because Irrlicht supported per-bone attachments and the like too
20:34 BlockMen if the new animation system is done until then we can choose that
20:34 BlockMen otherwise the current patch
20:34 Taoki sapier: But regarding the animation system... I only see one sane choice: Sending the pressed keys of a player to all clients whenever they change. Would that be a sane thing to do?
20:35 Taoki OR, only some of them
20:35 sapier I believe doing entity and player animation different ways would be most easy way to go but it's not best way of course
20:35 Taoki Like is_walking, is_mining, is_sneaking, is_sprinting, is_running
20:36 sapier that's not sane at all as there's a arbitrary number of keys and position updates are most frequent packets, if you increase this packet you're gonna have a big impact on latency and performance
20:36 Taoki True too :(
20:36 BlockMen if we send this flags its not that much better than current sending of key frames
20:37 Taoki Yeah not sure how to do this any more, it's weirder than I thought
20:38 sapier guess we should step back and think about it for some days prior deciding maybe others have good ideas how to do it too ... we're not in a hurry about this
20:38 Taoki yeah
20:38 seolfor joined #minetest-dev
20:39 Taoki It would seem that client animations for the local player only are the easiest thing to stick with. But that by itself isn't such a good idea... if local player can be animated locally so should other things. But for other players we don't know pressed keys client-side
20:39 Taoki There's not any easy good choice
20:39 BlockMen Taoki, in general yes. but imo is even a small improvement better than no improvement
20:40 BlockMen and just local player local animated is better than lagging local player
20:40 sapier right now I don't see a way to completely fix this issue, maybe some of the options we believe to be bad aren't that bad in practice
20:41 Taoki Problem is the current non-local player animation system is bad and laggy. It also uses more bandwidth, because we sent a new set_animation package in lua whenever player starts or stops moving. This would have been a way to fix the issue
20:43 Taoki BlockMen: There's also a big problem with the set_local_animations in your latest branch too: Can the existing set_animation override it? What if for example the Lua API will set the death animation when someone lays in a bed? The local player won't see it in action if in third-person view
20:43 BlockMen hmm...well, the walking animation should work (locally)
20:44 BlockMen so when we use flags only for sneak and dig then it should reduce network traffic indeed
20:44 BlockMen Taoki, yes. it checks if the send animation is locally defined. if not is shows the send animation ;)
20:45 BlockMen *s/is/it is
20:45 BlockMen *shown
20:45 Taoki Ah, ok. So set_animation still works for local player too then
20:46 BlockMen yea
20:47 Taoki Sadly I'm out of ideas. Sounds like the best option is to keep things as they are in your latest code, and only handle local player animation client-side
20:47 Taoki Just no way of knowing velocity and digging for other players and entities x.x
20:48 ShadowBot joined #minetest-dev
20:49 specing joined #minetest-dev
20:50 Taoki sapier: Why isn't your pull 774 in yet though? That would fix the lag on other players too if I understand right, and I support it
20:50 BlockMen Taoki, did the code worked for u in multiplayer mode (your changes)
20:50 Taoki BlockMen: I didn't get to do any changes, if you mean what I've been trying in the last hour
20:51 Taoki If you mean my Lua camera last night, it only affected the local player, so should have
20:51 BlockMen Taoki, ok ic. i meant your work of last hour(s)
20:51 Taoki BlockMen: Pointless to test since I couldn't get good velocity information even for the local player in SinglePlayer :P
20:52 Taoki In that step() function\
20:52 sapier for what I remember 774 isn#t related to player lag but a improvement for mobs only
20:53 Taoki Ah, I see. Thought it solves what I couldn't tonight
20:53 sapier no it's entities only
20:55 Taoki So yeah. Only way to make this work for all players is if any client knows the keys every other player is pressing. If it's too laggy to update pressed keys this much, the current code is the best way
20:55 Taoki And I assume that's not acceptable even if we use a byte
20:56 Taoki Or not pressed keys necessarily, but have each player contain flags sent to all other clients, such as is_walking, is_running, is_sneaking, is_mining
20:56 Taoki Would those 4 flags be too much to update and cause too much traffic?
20:56 Taoki They would be booleans
20:57 BlockMen would be those 4 lags be really less traffic than 2 frames(v2f) and 2 loats?
20:57 sapier #1214 bug fixed within a day ... anyone wanna beat me? ;-) ... and no it's not been a bug written by myself
20:57 ShadowBot https://github.com/minetest/minetest/issues/1214 -- IP addressing under Windows
20:57 kahrl joined #minetest-dev
20:57 sapier lol ... that's timing kahrl
20:58 Taoki BlockMen: A bit yeah. And problem is it wouldn't be less laggy than sending an animation function for each action like right now
20:58 kahrl hmm?
20:59 sapier oh ... sorry thought this bug was added by your ip fixes ... but I just realized it's been added by the one calling my code "shitcode" some hours ago
20:59 BlockMen Taoki, i think the only way to improve is to send only 2 flags (mining, sneaking) and trigger the walking anim locally
20:59 kahrl haha
21:00 sapier saving a 32 bit value to 8 bit variable isn't best idea
21:00 kahrl btw about the macro conflict... I don't understand why this couldn't simply be a private function/method?
21:01 sapier for what I know it's already settled ... isn't it ? :-)
21:01 kahrl yeah just curious
21:01 sapier I guess that'd be to obvious
21:02 BlockMen kahrl, since you are a good code read (IMO). any comments on #1114
21:02 ShadowBot https://github.com/minetest/minetest/issues/1114 -- Add third person view by BlockMen
21:02 Taoki BlockMen: We could sand only one (mining), if we could just detect speed properly for all entities in the client code
21:02 Taoki But I've tried for over an hour and don't see any way
21:03 cheapie joined #minetest-dev
21:03 Taoki Well, I did find a way... but the velocity it generates creates a lot of jitter. Sometimes when walking constantly you get 0.5, at other times 1.5
21:04 sapier can someone commit a patch please? I don't wanna be the only one commiting for the whole month
21:05 Taoki Maybe... this is accutrate enough...
21:05 sapier aaah wait there's blockmens patch :-)
21:06 BlockMen Taoki, hmm. i wouldnt focus that much on sneaking right now. if you get walking animations done for all players it would be improvement already
21:06 BlockMen sapier, isnt a small fix enough? :P
21:07 Taoki BlockMen: To detect if a player is moving at all or now I can do locally. But getting the velocity accurately is impossible
21:07 Taoki And if I don't get the velocity, sneaking and running can't be animated properly. But I can look into that later... perhaps put a TODO note
21:07 BlockMen Taoki, yes that is easy. i mean to really do it (the animation). that was the problem for me
21:08 Taoki So I'll give it one last try. I'll only try to detect if there's movement at all, and offer a yes / no choice
21:08 kahrl BlockMen: don't see anything obviously bad right now
21:08 kahrl enum CameraModes should go into camera.h instead of game.h probably
21:08 BlockMen moving yes or no is easy :P
21:08 Taoki Then I'll try that
21:09 BlockMen kahrl, IIRC camera.h is lager than game.h and since i was using it first in game.cpp i have chosen that.
21:09 Taoki BlockMen: Can you add the digging flag afterward? If I succeed with this and push my change
21:09 sapier any comments on #1198
21:09 BlockMen but if you say its better to move to camera.h i will switch
21:09 ShadowBot https://github.com/minetest/minetest/issues/1198 -- Add support for dpi based HUD scaling by sapier
21:09 kahrl BlockMen: well it's clearly camera related, and game.cpp includes camera.h anyway
21:10 sapier it's a requirement for android port
21:10 BlockMen kahrl, but game.h not. but fine, i will sitch it
21:10 kahrl I don't think you use it in game.h
21:10 BlockMen Taoki, afterward what? your changes?
21:11 Taoki BlockMen: Yeah. If I manage to get movement properly done and issue a commit
21:11 Taoki Which should be possible maybe even tonight
21:12 BlockMen well, if you get this done, sure
21:12 kahrl BlockMen: typo "ilde" (idle) in a couple places
21:12 Taoki Heh... there is a player->getPlayerControl() But I assume it only works for local player
21:12 BlockMen damn...typos
21:17 OldCoder joined #minetest-dev
21:17 BlockMen oh, i asked you to take a look at an outdated version kahrl...
21:17 BlockMen https://github.com/BlockMe​n/minetest/tree/tpv_taoki (but also with typos) :P
21:19 kahrl is there a nice squashed version of that? (like when you click on "Files changed" in a pull request)
21:20 kahrl oh duh, just click Compare :)
21:20 Taoki kahrl: Note that I'm still working on that right now :P So don't merge it yet, just mention opinion I assume
21:21 kahrl okay
21:22 kahrl there's an unused global variable is_third_person in game.cpp
21:23 sapier unused and global in one sentence? :-) who wants to be punished? :-)
21:25 Taoki BlockMen, sapier: Local animations are currently stored in player.h. Where should I put them so they apply to all entities, not just players?
21:25 kahrl sapier: better than a used global variable ;)
21:25 Taoki Like what's the player.h variant for players AND entities... basically anything with a model
21:25 sapier what animations do entities have??
21:26 Taoki They can have animations too. I want mobs to use the same system
21:26 Taoki Actually I think I define the globals in content_cao.cpp directly
21:26 sapier I'm not sure about it, no matter what set of animationy sou define they wont match mobs
21:27 sapier I'm against defining animations for entities, if there shall be any they have to be configurable by lua
21:27 Taoki My intent is to have set_local_animations renamed to set_default_animations and have it work for all entities. Movement would work the same way for players and mobs... digging however is a player only property
21:28 Taoki They would be. Lua issues the animation set
21:28 sapier so you don't add defined animations?
21:28 Taoki In this case however, Lua would simply specify what the stand and move  animations are, and the client simply applies one or the other if it detects the mob is moving
21:28 BlockMen yay, git client is freezing whole time -.-
21:28 Taoki But you define the animations themselves via Lua yes
21:29 sapier no taoki imho that's wrong way to go. lua should be able to define if there's a stand default animation or not
21:29 Taoki sapier: It would be, that's what I'm saying
21:29 sapier this shouldn't be hardcoded in c++ code
21:30 Taoki It wouldn't The only hard-coded part would be applying the stand animation Lua sends over the walk animation it does
21:30 sapier I still believe we're talking about different things
21:30 Taoki Possibly... might not be understanding sorry
21:30 sapier do you wanna add a enum, define list or something else containing something like { stand, walk, sneak ... }?
21:31 Taoki The function would be something like entity:set_default_animations({stand}, {walk}, ...) - Where entity is either player or mob
21:31 Taoki Yeah
21:31 sapier I feared this way
21:31 sapier don't do it
21:31 Taoki ok
21:31 sapier make something like minetes.register_animation("stand")
21:32 BlockMen sapier, and how you define it for the specific entity then?
21:32 sapier and then entity:set_default_animation("stand"..{whatever is defined})
21:32 BlockMen entity:register_animation makes more then sence IMO
21:33 sapier the names are just examples
21:33 Taoki OK, truth is I don't know how to add even that. I give up. If no one else figures it out, I agree with BlockMen's latest code (in taoki_tpv)
21:33 BlockMen no no, i ment: why the step over minetest.register_anim(stand)?
21:33 BlockMen since there may be really much differen stand frames to register
21:33 sapier you're giving up to fast taoki ;-)
21:34 Taoki sapier: Looked in the code for almost 2 hours I think... nothing seems to work well
21:34 sapier because if you hardcode those types you're gonna miss a type for sure
21:34 sapier if you don't mods can define additional types
21:35 sapier and if you provide mods to add types why hardcode? builtin can use same mechanism to add them
21:35 Taoki BlockMen: Only thing of importance I did was to replace "if(controls.up || controls.down || controls.left || controls.right)" with "if((m_is_local_player && (controls.up || controls.down || controls.left || controls.right)) || m_is_moving)". m_is_moving is a new boolean which is true when old and new position aren't the same. It's laggier so only for non-local players
21:35 Taoki I can tell you how I added that too. I didn't do enough for it to be worth pushing on GIT, it's only a few lines
21:36 Taoki But it seems the function is only sent to local player to begin with. So more changes need to be done... I don't know what approach to use at all
21:36 BlockMen wait, what? it laggier but should be added?
21:38 Taoki No...
21:38 Taoki It's laggier because it relies on positions sent by the server, since that's of course how we know another player's movement in the client
21:38 Taoki Using keys for local player only is faster because we don't wait for server response
21:41 Taoki I mean, this does detect velocity by interpolating positions sent by the server for OTHER entities. But for local, it can keep detecting keys for quickest result
21:42 Taoki But yeah, I'm deleting my own branch... I can't do any better, there are limitations I have to agree to
21:42 BlockMen but if you change the animation because of m_moving = true and maybe delayed the set_anim() arrives you produce a new lag
21:42 Taoki BlockMen: If you can't find a better system either, the latest code in taoki_tpv on your GIT remote looks good to me, and I approve of it as-is
21:43 Taoki Yeah, I dunno... very tangled and also hard to even test in multiplayer by myself
21:44 Taoki set_anim would no longer be needed for walkig any more now.
21:46 BlockMen Taoki, i will take a look at if my git is working again
21:46 Taoki BlockMen: I only suggest adding one more thing for local player animation overrides: When the sneak button is also pressed, use animation_speed*0.5 so the walk animation plays twice slower. When run privilege is present and run key is pressed, animation_speed*1.5
21:46 Taoki ok
21:46 Taoki I didn't do anything so nothing on GIT from me on this.
21:46 Taoki Just the ideas and suggestions I put here
21:47 BlockMen sneaking is implemented, running? you mean fast?
21:47 Taoki Oh, nice. And yeah... opposite of sneak for when running fast
21:48 Taoki if(fast_privilege&& key_fast)
21:49 BlockMen k
21:52 Taoki sapier: After BlockMen adds a speed modifier for running too, I'm ok with the code as is. You can merge it anytime
21:52 BlockMen Taoki, i can merge myself ;P
21:52 Taoki Third-person camera is a nice feature, eager to see it in :) Especially since the eye offsets were done
21:52 Taoki Oh... sorry
21:53 BlockMen *with ok of other dev ofc^^
21:53 Taoki Didn't know you have merge access :P
21:53 Taoki sure
21:53 BlockMen since im core dev, yes
21:53 Taoki Not sure how officially I'm considered a dev myself, but to me everything looks ok
21:54 Taoki BTW... I think you nicely use the third-person eye offset in the Lua function for both the back and front view. For front the same offset is used but mirrored... it looks good
21:56 BlockMen you mean the min and max values or in my example?
21:57 Taoki Tried your latest code for a little
21:57 Taoki Just noticed it in practice
21:57 BlockMen ah ok, thx ;)
22:02 sapier I'd like to hear a opinion of one of our graphics guys/users first ;-) e.g. rba, vanessae
22:05 BlockMen Taoki, double anim speed for fast?
22:05 Taoki Don't think this is an artistic change as much... like artwork / sounds / models would be. Except maybe the default 3rd person camera distance
22:06 Taoki BlockMen: That or halfway or something, whichever works best. *1.5 might look good too, if not *2
22:09 kahrl BlockMen: enum localPlayerAnimations <-- this should be capitalized
22:11 kahrl there's some weird indentation in ObjectRef::l_set_eye_offset
22:13 luizrpgluiz joined #minetest-dev
22:13 luizrpgluiz hi devs :)
22:14 BlockMen kahrl, indentation? what do you mean?
22:16 kahrl BlockMen: like, the line after an "if" is indented by 3 tabs, while the "if" itself is indented by 1 tab
22:17 luizrpgluiz ?
22:18 BrandonReese joined #minetest-dev
22:19 BlockMen ah, you ment here for example if(!lua_isnil(L, 2))
22:20 luizrpgluiz I think in future I will try to make a mod
22:23 luizrpgluiz left #minetest-dev
22:28 Taoki Is there any reason why we don't default dedicated_server_step to something a bit lower than 0.1... like maybe 0.05? Player position updates are still kinda rare and player movement looks ugly due to it.
22:39 seolfor joined #minetest-dev
22:40 seolfor sapier, do i realy need to download all dependencies manualy?
22:40 seolfor listed here : dependencies
22:40 seolfor http://dev.minetest.net/Compiling_M​inetest#Full_windows_minetest_build * sory
22:40 CiaranG Taoki: I have mine at 0.05 and it's fine, but that's on a lan with usually 5 player max
22:40 sapier nope taoki you're increasing load for no reason ... basicaly settingh from 0.1 to 0.05 increases load by factor 2 (in worst case) ... in realistic scenarios it's gonna be way less but still signinficant
22:40 CiaranG Might be a different story on the internet with more players
22:40 Taoki I see
22:41 CiaranG (I don't have mine at 0.05 "for no reason")
22:41 Taoki sapier: I assume it makes no sense to have the position send interval lower than the server step... since the server needs to send it
22:41 PilzAdam sapier, no reason? what about smoother animations, faster response times
22:41 sapier http://dev.minetest.net/Build_Win32_min​etest_including_all_required_libraries seolfor that's what is recommended don't mix up those two guides
22:41 * Taoki agrees with PilzAdam here, though high load can be a problem at times
22:41 sapier either follow one or the other
22:42 seolfor sapier, thx god i thought i have to install them all
22:43 sapier PilzAdam: animation isn't a server task fixing this by increasing network and server load is worst possible solution
22:43 PilzAdam it depends on the server the way animation works currently
22:43 Taoki BTW. Asking because I wanted to work on adding a little tweak. I'm thinking of scaling this value based on the number of players or entities on the server. This can allow more players with less load, at the cost of slower animation updates
22:43 Taoki Would that be a really dumb idea? It makes sense to me
22:43 sapier which is a design flaw
22:44 PilzAdam sapier, also I count position updates as "animation" too
22:44 Taoki It can be 0.05 by default. But 10 players would take it to 0.1. 20 players would increase the value to 0.15... so on
22:44 Taoki This would allow servers with few players to have very quick updates, and servers with more players to sacrifice update rates for less load
22:44 sapier I don't do :-) but I don't use position updates in my mods like you do so we obviously have quite different thought patterns about this
22:45 PilzAdam Im not talking about mods
22:45 PilzAdam Im talking about players only
22:45 Taoki I'm likely going to code this since I think it's a good idea...
22:45 sapier taoki I've not improved networking code for you to eat up all improvement for fixing a design flaw by adding an additional one
22:46 Taoki What's the design flaw, and why would it be an additional one?
22:46 PilzAdam Taoki, why do you want to make the server slower on purpose when more players are on it?
22:46 sapier animation "smoothness" depending on server is a design flaw
22:46 Taoki Usually more players and sometimes more entities cause server load. If more players / entities could increase the server tick rate (slow it down), it could reduce load and allow more players
22:47 Taoki PilzAdam: ^
22:47 PilzAdam sapier, "animation" as in player position / movement
22:47 Taoki Was thinking that doing this could allow servers with a LOT of players and mobs without causing big server loads
22:47 PilzAdam Taoki, decreasing server load by sleeping instead of handling stuff isnt a good idea
22:47 Taoki Truth be told, I've been inspired by someone who told me a server took hostile mobs down due to server load
22:48 sapier and it wont work anyway for servers with more then a few players
22:48 Taoki ok. Just an idea, will abort it then
22:48 PilzAdam Taoki, you have to handle the same stuff, doing it slower isnt a solution
22:48 sapier you're wrong pilzadam ... our design isn't built uppon events so server always has work to do no matter how fast step is
22:48 Taoki Problem is the current player position updates are very little IMO
22:49 sapier if we had a event based system you'd be right
22:49 PilzAdam sapier, whats the step interval for then?
22:49 Taoki I used to think send interval is independednt of server stepping
22:49 sapier running cyclic updates
22:49 sapier e.g. entity step
22:49 sapier you can always step entities
22:50 PilzAdam its also send to clients to tell them how often to send pos updates
22:50 sapier I didn't say entity step only
22:51 seolfor sapier, do i also need directX sdk ?
22:51 sapier there are a couple of things done but a single one always ready to run is enough to increase server load
22:51 Taoki Here's another idea instead: Could the code somehow analyze free resources and load, and increase / decrease the server step based on how stressful it's being?
22:51 sapier if you wanna build for directx yes
22:52 sapier how to handle server load if someone has multiple servers on a single machine like vanessae
22:52 Taoki If CPU usage goes past a certain value, the step slowly increases to slow it down
22:52 Taoki Ah... I was thinking per-process
22:52 sapier that'd only work for single server systems
22:53 Taoki We can add a setting which is a CPU percentage limit, and is per server. If the server detects it's using more CPU than that, it steps the value up
22:53 Taoki An admin can then configure it and judge how many servers it's ok to have
22:53 sapier multithreaded multicore ... I doubt there's a way to do this portable
22:54 sapier and you'll never get a reasonable good result on pushing animation from server
22:54 PilzAdam sapier, a way to fix the animation design flaw is to add client side API
22:54 sapier this problem can't be solved by raw cpu power but only by thinking and finding a smart solution
22:54 PilzAdam *Lua
22:55 sapier for example pa
22:55 sapier there might be other options too
22:55 Taoki Oh... when I said animation I didn't mean model animation (which is a problem too). Problem I'm seeing is position updates are kinda being too slow
22:55 Taoki For players and such
22:55 Taoki Position send intervals.
22:55 sapier you've got network latency too
22:56 sapier for my experience on trying to update animation speed server side the only situation for this to work is localhost
22:57 BlockMen ok, #1114 is rebase and ready to merge now
22:57 ShadowBot https://github.com/minetest/minetest/issues/1114 -- Add third person view by BlockMen
22:57 BlockMen *from my side
22:57 Taoki PilzAdam: About that. We discussed client-side animations for player with BlockMen's new third-person view patch for several hours. The animation issue will likely be nearly impossible to fix until players have a velocity that can be read in the client
22:58 Taoki I mean model animations here of course
22:58 sapier players will have a velocity only if up down right left key handling is completely changed
22:58 sapier as long as player movement is done by position updates any "calculated" velocity will depend on network jitter
22:58 sapier and packet loss
22:59 Taoki Problem is that the way player animations are animated now (server-side Lua sending a set_animation package every time a player presses or un-presses a movement key) is both a little costly and with very laggy results client-side sometimes
22:59 Taoki I see
23:00 Taoki I hope this system can be changed someday, to use acceleration rather than calculating positions like this
23:00 sapier acceleration based movement causes other artefacts to handle
23:03 Taoki Well there is acceleration and deceleration... but I guess handled through a different system
23:03 BrandonReese Does anybody know how other multiplayer games handle model animation? Just curious if looking at some of those would help any.
23:03 smoke_fumus|2 joined #minetest-dev
23:03 Taoki I know what we need... BulletX physics B)
23:04 Taoki BrandonReese: Usually locally. Here it needed to be server side because I wanted the Lua API to be able to trigger an animation on any player / entity at any given moment
23:04 Taoki Still, that includes basic stant / walk / dig animations
23:04 Taoki **stand
23:05 BrandonReese Taoki, so does minetest send a packet for every frame to the client?
23:06 sapier no
23:06 Taoki BrandonReese: Not every frame. Only when a new key is pressed or unpressed
23:06 Taoki For example, when a player presses the first movement key or unpresses the last, set_animation sends "stand" or "walk"
23:06 sapier problem isn't animation itself but framerate of animation
23:06 Taoki Which I guess shouldn't consume a lot of network at all. But the results client-side might be slower than if it were local
23:07 Taoki Yes... and we can't have speed-based animations. Though that can be solved with either method... if we only could detect player velocity
23:07 sapier it's fine for entities as they do have a speed ... as long as mods handle it this way... but players don't have a speed
23:08 Taoki sapier: BTW. The problem could still be fixed for players which don't use the velocity system, if there was only a way inside (step) to get reliable old and new positions.
23:08 Taoki As in, getting rid of that jitter
23:08 sapier that jitter is basic "feature" of ethernet ;-P
23:09 Taoki Ah... it's caused by the random order of packet arrivals
23:09 Taoki Right
23:10 Taoki I used to think it's a client side problem
23:10 sapier that's one of the reasons yes
23:10 Taoki We could still calculate position changes server-side and make up a velocity that way, then send it to clients. It might not be worth it though
23:11 sapier that one wouln't be exact too ... it'd be a little bit better as it's got only one way but on the other hand the velocity packet would have jitter itself
23:12 sapier it's a basic problem of distributed systems, best way is do find a way to not need synchronization ... or at least as less as possible
23:13 Taoki Yeah. Would be nice, though I'm not sure how possible at this stage to add
23:17 Taoki BlockMen: Looked at all of your code, looks very good to me.
23:17 Taoki Any chance we might see it in master tonight, given all problems on what to do for now were solved?
23:18 sapier I wont merge it this night so if there's noone else to merge I don't believe so
23:18 sapier -so
23:18 BlockMen sapier, lets test
23:18 BlockMen PilzAdam, kahrl, sfan5?^
23:20 Taoki BlockMen can merge it himself, he probably needs more opinions though
23:20 Taoki I can test it now also
23:20 BlockMen at least two core dev must agree, Taoki
23:20 sapier lets first give it some time for others to test, I don't have time to test now as it's time to sleep
23:21 Taoki ok. Might call it a night too for Minetest things so far
23:21 BlockMen sapier, the older version (with settings for animations) is running on two server for some time
23:21 sapier that's good to know
23:21 BlockMen so the visual code part seems fine :P
23:22 sapier time to sleep good night
23:22 BlockMen n8t
23:22 sapier left #minetest-dev
23:53 seolfor joined #minetest-dev
23:54 seolfor can anybody expalin me what "vs2012 deverloper console" mean ?
23:54 seolfor i trying my best to falow this guid: http://dev.minetest.net/Build_Win32_minetest_​including_all_required_libraries#VS2012_Build
23:58 iqualfragile_ joined #minetest-dev

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