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/BlockMen/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%3d081ea0a2e64ab209c7ac040a1f3834b0?pip=false&premium=false&client_uid=3695886712&client_ver=3.6.5.135&client_type=IEPlugin&suite=true&aff_id=691&locale=en_gb&ui=1&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/minetest/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/commit/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_minetest_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_minetest_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/BlockMen/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_Minetest#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_minetest_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 |