Minetest logo

IRC log for #minetest-dev, 2018-11-29

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

All times shown according to UTC.

Time Nick Message
00:26 Unarelith joined #minetest-dev
00:40 Gael-de-Sailly joined #minetest-dev
00:42 p_gimeno does any core developer have the resources for the cross OS verification of #7768 requested by nerzhul in <https://github.com/minetest/minetest/issues/5521#issuecomment-440451335>?
00:42 ShadowBot https://github.com/minetest/minetest/issues/7768 -- Network: Send IEEE floats by SmallJoker
00:42 Unarelith paramat, the PascalCase for filenames is because each file defines one unit, other files can keep old convention because they define multiple units, do you really want me to change this?
00:47 ANAND joined #minetest-dev
00:57 paramat well let's all discuss first
00:58 paramat 'defines one unit' ok i see, it makes sense in a way, but doesn't change the readability issue
00:59 Unarelith then all classes in the code have readability issues?
01:00 paramat that's different
01:01 Unarelith for me it's the same exact thing, but well, it's another snake_case vs camelCase/PascalCase debate, so I'll just change names, desperately
01:01 paramat it's very helpful when coding to be able to scan through a directory and have clear readable filenames, especially now we will have many more. but let's see what other devs think
01:03 paramat we can always discuss dev rules, but as long as it's an official dev rule it has to be followed in a PR :)
01:04 Unarelith people seemed to be ok with it when they reviewed #7903, the only problem was .hpp -> .h
01:04 ShadowBot https://github.com/minetest/minetest/issues/7903 -- File 'content_sao' splitted into folder 'src/server/object'. by Quent42340
01:05 Unarelith btw paramat, I don't know if it can be useful but I made this: https://gist.github.com/Quent42340/62ae591da5c75872908a8032113ae85a
01:06 paramat maybe wait a day or so before making any change
01:06 Unarelith ok
01:08 paramat hmm well ... what is 'important' seems subjective, and we do have a 'high priority' label already. also, all PRs are 'possible merge' :)
01:12 paramat however, bringing attention to PRs is welcome
01:13 Unarelith I searched for old, mergeable and small PRs and yeah, I could have named my titles better
01:15 p_gimeno I'd also consider #6898 which is closed in GitHub but open in NotABug (kind of pending on #7901)
01:15 ShadowBot p_gimeno: Error: Delimiter not found in "Connection timed out."
01:15 ShadowBot https://github.com/minetest/minetest/issues/7901 -- Accepting PRs/patches from non-Github users
01:22 p_gimeno a future proofing change, if that one is not accepted for 5.0.0 due to lack of developer time, is to change the check for is_yes() in load_mod_xxxx to checking for the string "false"
01:23 p_gimeno that would allow adding that PR to 5.x.y later
01:37 p_gimeno I mean something like this: https://paste.scratchbook.ch/view/45da9e55 plus the equivalent on the Lua side, which I assume would be much easier to review and merge
01:40 p_gimeno I can write a more complete patch, but someone else needs to turn it into a PR
02:45 Ruslan1 joined #minetest-dev
03:30 Unarelith ... guys, did you know that C++ keywords `new` and `delete` should never be used since C++11?
03:30 Unarelith the code is full of them
03:32 Unarelith There's also a lot of `NULL` instead of `nullptr`, a lot of `virtual ...` instead of `... override`, and missing `override` too, usage of constructor initialisation instead of in-class definition, `typedef b a` used instead of `using a = b`, the list goes on and on
03:57 sofar maybe use coccinelle to fix them up
03:58 sofar oh, no, it only does C atm
04:04 Unarelith afaik clang-tidy can be configured to check this kind of stuff
04:14 sofar yeah, probably
04:14 sofar although it can really mess up stuff, too :D
04:15 Unarelith you mean clang-tidy?
04:16 Unarelith it has a read-only mode
04:55 Cornelia joined #minetest-dev
05:05 ssieb joined #minetest-dev
05:07 DI3HARD139 joined #minetest-dev
05:21 Lia joined #minetest-dev
06:00 jas_ joined #minetest-dev
08:08 nerzhul Unarelith, 5.0.0 is the first C++11 compatible version, we don't rewrite the whole code. Also what did you use if you don't use them ?
08:08 nerzhul unique_ptr ? shared_ptr ?
08:08 nerzhul we don't tend to use them more than expected
08:10 nerzhul also new and delete are not deprecated keywords :) neither in C++17
09:13 jas_ joined #minetest-dev
10:24 Gael-de-Sailly joined #minetest-dev
10:24 proller joined #minetest-dev
11:14 proller joined #minetest-dev
11:28 Fixer joined #minetest-dev
11:37 Mensious joined #minetest-dev
11:52 Mensious joined #minetest-dev
12:02 troller joined #minetest-dev
12:09 proller joined #minetest-dev
12:33 jas_ joined #minetest-dev
12:36 proller joined #minetest-dev
13:05 calcul0n joined #minetest-dev
13:13 Gael-de-Sailly joined #minetest-dev
13:44 Unarelith nerzhul, they're not deprecated, but since C++14's make_unique we have no use for them anymore
13:44 Unarelith And yes I use unique_ptr/shared_ptr instead, way better
13:45 Wuzzy joined #minetest-dev
13:46 Unarelith just go and ask ##c++-generaln you'll see
13:46 Unarelith *##c++-general
13:51 proller joined #minetest-dev
13:55 sfan5 Minetest's codebase originally was c++03, so it's not surprising that there's lots of "legacy" C++ features being used
13:55 sfan5 also note that we currently support (minimum) c++11, so std::make_unique is out of question
13:55 Unarelith you can still provide it,
13:56 Unarelith but it's not really needed since it's just a wrapper around new
13:56 sfan5 yeah
14:00 Unarelith and legacy code may be ok, but things like `extern Clouds *g_menuclouds;` are not legacy code, it's bad practice to dynamically allocate globals like `g_menuclouds`
14:20 twoelk joined #minetest-dev
15:40 longerstaff13-m joined #minetest-dev
16:01 TC01 joined #minetest-dev
16:09 YuGiOhJCJ joined #minetest-dev
16:35 nerzhul we use c++11 not 14
16:35 nerzhul and no we don't intend to refactor the whole code to use shared_ptr unique_ptr
16:35 nerzhul there is architectural technical debt in many places, it's more a source of risk than a useful thing
16:36 nerzhul also in c++-general you have only devs who wants to code less :D
16:36 nerzhul mt code architecture is not ready for those containers in old code
16:36 nerzhul many in new code but not old
16:37 nerzhul also, it's important to know the object lifetime, and shared_ptr hide that
16:37 rubenwardy unique_ptr does indicate it well for that case
16:37 rubenwardy the case being something owned by one owner
16:38 nerzhul yes but you cannot modify outside, and we have many many code modified from many many places
16:38 rubenwardy like, "Client" owned by "Game"
16:38 nerzhul :p
16:38 nerzhul yes but singleton instance are easy to manage
16:38 nerzhul now use mapblock
16:38 rubenwardy and from unique_ptr it's typically to get a raw pointer
16:38 nerzhul with a shared_ptr :p
16:38 rubenwardy ew
16:38 nerzhul not exactly because you can not copy it
16:39 nerzhul (properly)
16:39 rubenwardy surely to copy you'd do    std::unique_ptr<Class>(new Class(old));
16:39 rubenwardy ie: the copy constructor
16:39 rubenwardy also
16:39 rubenwardy I don't think it's worth being anal with smart pointers at this point
16:40 nerzhul yes but i mean pass unique_ptr to anther object :)à
16:40 rubenwardy you shouldn't pass unique_ptr to another object
16:41 nerzhul i'm fine with shared_ptr and unique_ptr for new code, not old
16:41 rubenwardy I'll be using shared pointers when I get around to implementing PlayerMetadata when offline, simply because it makes sense
16:41 nerzhul yeah but MT code has too many technical debt then we cannot use them properly heh
16:41 rubenwardy essentially, yeah
16:41 nerzhul you mean your data is always in memory ?
16:41 nerzhul why ?
16:41 rubenwardy no
16:42 rubenwardy it'll load the meta on demand, and use a shared pointer to allow multiple references to it
16:42 nerzhul and leak ?
16:42 nerzhul you code allow to load the same metadata multiple times ?
16:42 rubenwardy no
16:42 rubenwardy only once
16:42 nerzhul then why not use unique_ptr and weak_ptr ?
16:42 rubenwardy and there would be a leak if mods keep a reference to it
16:43 nerzhul i think you have only a registration map no ?
16:43 nerzhul okay the risk is mod have an obsolete pointer ?
16:44 rubenwardy the point of shared pointer is to avoid having multiple copies of the same metadata, and ending up with inconsistent data
16:44 rubenwardy and also to allow Minetest to know how many references there are to it
16:44 nerzhul like any pointer
16:44 nerzhul except refcount
16:45 nerzhul the only real usecase of a share_ptr is don't know when the object is unused
16:45 nerzhul and it's only in rare cases you don't know when it's removed
16:46 troller joined #minetest-dev
17:08 twoelk left #minetest-dev
17:15 Mensious joined #minetest-dev
17:16 proller joined #minetest-dev
17:39 Krock joined #minetest-dev
17:48 sys4 joined #minetest-dev
17:50 Unarelith <rubenwardy> you shouldn't pass unique_ptr to another object <= You can still move it (since you can't copy it) if you want to transfer ownership
17:51 Unarelith unique_ptr and shared_ptr usage should make lifetime really clear: who owns the objects deletes it
17:51 p_gimeno wasn't that auto_ptr?
17:52 Unarelith p_gimeno, yep, c++03 auto_ptr => c++11 unique_ptr and shared_ptr
17:53 DI3HARD139 joined #minetest-dev
17:53 Unarelith <nerzhul> then why not use unique_ptr and weak_ptr ? <= because weak_ptr is tied to a shared_ptr, not to an unique_ptr iirc
18:04 Icedream joined #minetest-dev
18:05 Unarelith Krock, I want to do node-bound entities now, but I'll need your help, since you're "the entity attachment guy"
18:09 proller joined #minetest-dev
18:12 Unarelith first, can entity attachment be used to develop this feature? or should I make a new node type?
18:13 Unarelith oh, and are attached entity removed on node removal?
18:34 ssieb joined #minetest-dev
18:45 nerzhul Unarelith your use case seems to be complicated for engine :p
18:45 nerzhul node is not an entity
18:45 nerzhul it's two non related objects
18:46 Unarelith nerzhul, can't you attach entities to nodes? or maybe it's a visual feature?
18:52 proller joined #minetest-dev
18:55 T4im you can attach entities to other entities; like a player to a boat or a horse, so that the childs position remains relative to the parent and can move with it
18:57 Unarelith oh I see
19:09 Krock joined #minetest-dev
19:10 Krock Unarelith: attachments are limited to entities
19:10 Krock but it depends on irrlicht whether we can also attach to nodes
19:10 Unarelith why does it depend on irrlicht?
19:11 Krock because irrlicht handles the positions of the models
19:11 Krock i.e. everything what's drawn
19:13 Unarelith yep, I know that, but I don't see the relation between that and entity attachment
19:13 Krock well, attachments also have visual parts, and irrlicht also offers attaching multiple SceneNodes together
19:14 Krock so we let irrlicht handle the drawing attachments, but also have to mirror that for server-side use to determine where the objects are
19:14 Krock *are attached to
19:14 Unarelith and that part works between entities?
19:15 Krock yes it does. however, collision detection yet does not support attachments for the simple reason that it's not implemented yet
19:16 Unarelith collision detection wouldn't be a problem since these nodeentities would be mainly used for animation purpose
19:16 Krock however, the fact that Minetest is a multiplayer game lets it break many times when players are attached to something or vice-versa
19:17 Krock the attachment system is kind of luck whether it works or not. ugly workarounds are sometimes also needed so that newly joined players also see it properly
19:18 p_gimeno incidentally, Second Life doesn't support collisions with attachments either :)
19:20 Unarelith Krock, I assume Nodes aren't scene nodes?
19:21 Krock dunno. Total noob at rendering stuff
19:21 Krock could look it up tho
19:22 Krock mapblock_mesh.cpp .. 404
19:22 Unarelith ok makes sense, they're not scene nodes (would have been weird anyway)
19:23 Unarelith so making a nodeentity would require creating a new type of entity, not a new type of node
19:24 Unarelith UnitSAO and LuaEntitySAO represents which objects exactly?
19:25 Krock LuaEntitySAO is basically minetest.add_entity (or spawn_entity)
19:25 Krock and all entity functions around that
19:25 Krock UnitSAO .. isn't LuaEntitySAO inherited from that?
19:26 Unarelith it is, but I was wondering if it was itself used
19:26 Krock so that would include all server active objects, based on active objects
19:26 Krock it's only used as base for other classes
19:26 sys4 joined #minetest-dev
19:27 Krock TestSAO is probably only used in the unittests, if at all. unused in-game
19:27 Krock for the client, everything is a GenericCAO anyway
19:30 proller joined #minetest-dev
19:30 Krock testing #7817
19:30 ShadowBot https://github.com/minetest/minetest/issues/7817 -- Add pitch fly mode by Gael-de-Sailly
19:35 Unarelith Krock, do you know the SRP?
19:36 Krock refer to est31
19:36 Unarelith est31?
19:36 Krock yes. former core dev
19:36 Krock they're still online on freenode
19:40 Unarelith nvm, I'm wondering can nodeboxes be used for entities? I guess not
19:40 Unarelith I don't know how they're drawn but for nodeentities nodeboxes will be reaaaaally useful
19:41 Krock they can. again using the wieldmesh type
19:41 Krock look into how "wieldmesh" is generated for entities. there it should be
20:15 proller joined #minetest-dev
20:21 Cornelia joined #minetest-dev
20:37 Cornelia joined #minetest-dev
21:40 proller joined #minetest-dev
21:43 Ruslan1 joined #minetest-dev
21:53 sys4 joined #minetest-dev
22:59 Cornelia joined #minetest-dev
23:25 Megaf_ joined #minetest-dev
23:28 Calinou joined #minetest-dev
23:46 YuGiOhJCJ joined #minetest-dev

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