Base issues and missing features

For people working on the C++ code.
Post Reply
User avatar
MirceaKitsune
Member
Posts: 867
Joined: Sat May 21, 2011 22:31
GitHub: MirceaKitsune
IRC: Taoki
In-game: MirceaKitsune
Location: Romania, Bucharest
Contact:

Base issues and missing features

by MirceaKitsune » Post

Yesterday we were discussing which games should be included in Minetest apart from minetest_game. From debating details regarding game quality / entertainment / progressiveness, I easily got to the realization that the Minetest engine has a lot of problems that make it difficult to create any game of full quality. It's typically little things, but which can make a very big difference.

I decided to make a list with the issues I consider basic problems, which make it difficult or impossible to create an experience of quality in the Minetest engine. In my opinion, those are all things of top importance as they impede a good user experience, and either cause annoyances or make things feel out of place. I don't know which I can fix myself, and I don't wish to make "code this for me" demands to other developers... I'm simply stating things which IMO are urgent and need to be discussed and dealt with more than I've seen them attended. If anyone knows something else that should be added to this list, please post about it.

1 - Player and Lua entity lag and prediction:

Problem: The movement of players and Lua entities itself is handled fairly well... don't know if it could be better. Movement is also interpolated client-side, which is a crucial ability we already have. However, changes in a player or mob's orientation are not interpolated (yaw smoothing). There's also a problem with animations (the set_animation function) who is apparently not always successful or reaches the client later than movement packages. This causes players / mobs to play the walk animation after they stopped walking, or the stand animation while they're moving.

In my opinion this is currently our worst problem. Visuals for players and Lua entities (mobs) are not handled in a way that allows reducing perceived lag to the best extent possible. This causes players to see other players moving in a strange pattern at times, and makes Minetest feel unreliable due to how obvious the problem is.

Solutions: Rotation interpolation needs to be implemented somehow! It was done for position, so I don't see why doing it for rotations is impossible. Also, we need to find out why set_animation occasionally fails to inform clients, as well as how its speed over the network can be improved (possibly synced with entity movement updates). Also, I once suggested a different approach to handling movement updates, using a steady stream and a buffer.

Thread: My old thread on the matter of streaming and buffering movement can be found here, in case this is of any use here.

2 - No prediction for changes in meta inventories:

Problem: An obvious and horrible bug that every Minetest user experiences! Unlike player inventories, changes in node inventories are not predicted client-side. This means that, if you move items around in a chest for example, you need to wait for the server to notify the update to your local inventory window... which can even take several seconds on a non-laggy server. This causes confusion and creates a very bad impression of slowness.

Solutions: I proposed that client-side prediction is added to all formspec inventory elements. So if you move an item in a chest, the formspec automatically draws the new item in the location you clicked, before the server response itself. The server package can then be used to do a second update, just to correct any out of sync issues.

Thread: This issue is separately being discussed in this thread, and I also opened an issue on GitHub.

3 - Fluid sounds and particles:

Problem: Not a bug per say, but a missing feature that makes it difficult to add a basic and needed effect. Apart from animated textures, fluids do not support any other effects. The most important one is the ability to add sounds and particles for players or entities touching the water, such as swimming and / or splash sounds. This is difficult or more costly to do properly in Lua, and needs to be handled in the engine somehow. It's also impossible to properly add a looping sound for fluid sources (flowing water), hence why I think the engine should also have this ability.

Solutions: First of all, please allow the footstep sound definitions to work for liquid nodes too. For solid nodes, footstep sounds are currently played when a player / mob walks over the surface... while for liquid nodes, they would play as the player walks through the node. Particle effects for splashes would also be very welcome. I suggest using the existing particle system which is activated when you dig nodes (you see pieces of the texture popping out).

Thread: This issue is separately being discussed in this thread, and I also opened an issue on GitHub.

4 - Default formspec appearance, and / or formspec border textures:

Problem: Currently, unless a formspec defines a custom appearance, formspec menus do not use any textures, and use the ugly black transparent background. I suggest a way to allow games to define a default appearance for all menus (background image, button texture, possibly text color, click sound, etc) which all formspecs that don't define their own will use. If a formspec specifies a background of its own, this default is of course ignored and the visuals of that formspec are applied. Without this ability, a game needs to modify the formspecs in each mod it includes to give it the desired unified appearance, while it's also impossible to texture the main menu based on the selected game (since this part of the Lua API only runs after a server is started).

There's also another limitation: You can only define a single image for the background, which can be either stretched or repeated. A lot more detail would be possible if one could define a background texture as well as border textures. Border textures would consist of 8 images in the format: corner_top_left, corner_top_right, corner_bottom_left, corner_bottom_right, edge_left, edge_right, edge_top, edge_bottom. Where the corners are drawn at each corner of the formspec, while the edge images are looped across each length between them.

Solutions: Please add a builtin function to allow specifying a default appearance for formspecs, used by all menus which have no appearance defined. Also add a system for defining borders and corners, so a single appearance and texture set can work for formspecs of any size without breaking proportions or resizing any texture. Lastly, please add support for a client predicted click sound, which is heard whenever a button in a formspec is clicked. There needs to be a per-game unified appearance for formspecs in some form.

Thread: This issue is separately being discussed in this thread.

User avatar
rubenwardy
Moderator
Posts: 6271
Joined: Tue Jun 12, 2012 18:11
GitHub: rubenwardy
IRC: rubenwardy
In-game: rubenwardy
Location: United Kingdom
Contact:

Re: Base issues and missing features

by rubenwardy » Post

I agree with all of these. I also think that Immersive sounds should be added client side, with no dependency on the server. Rather like texture packs.

User avatar
Calinou
Moderator
Posts: 3164
Joined: Mon Aug 01, 2011 14:26
GitHub: Calinou
IRC: Calinou
In-game: Calinou
Location: Troyes, France
Contact:

Re: Base issues and missing features

by Calinou » Post

MirceaKitsune wrote:Rotation interpolation needs to be implemented somehow!
celeron55 said it would be quite simple. I've tried to implement it, but to no avail. What you want to look at is content_cao.cpp, SmoothTranslator.
MirceaKitsune wrote:It's also impossible to properly add a looping sound for fluid sources (flowing water), hence why I think the engine should also have this ability.
Carbone has commented out code for lava source sounds and flowing water sounds, borrowed from the fire mod. However, there's no way at all for the clients to disable these sounds [suggested fix] and the check is done using ABMs, which is inefficient.

The other problem is that too many sounds attempt playing simultaneously, making the whole thing loud and the attenuation works poorly, you can still hear the sounds from 60 blocks away.
MirceaKitsune wrote:Currently, unless a formspec defines a custom appearance, formspec menus do not use any textures, and use the ugly black transparent background.
To me, simple and flat design is beautiful. The real issue comes from the unstyled icon slots (too bright, could have a border). A game can fix this, but has to change all formspecs.

A possible fix to let formspecs be customized globally is to make them all use a global GUI_STYLING variable (just by concatenating it), which all mods would use and could be customized by games.

User avatar
RHR
Member
Posts: 215
Joined: Mon Jan 27, 2014 20:07
GitHub: RHRhino

Re: Base issues and missing features

by RHR » Post

I think you are right with all of your points, but in my opinion there is one major problem missing:
New players don't know that Minetest is an engine. They believe that Minetest is a clone of Minecraft. So they expect a copy with all features of Minecraft (all their blocks, nether, mobs, etc.) included in the download. Most of them just try the minetest_game and come to the conclusion that Minetest is nothing more that a poor clone of Minecraft Cassic/Alpha, although nearly everything of that is already implemented in mods.

User avatar
Evergreen
Member
Posts: 2135
Joined: Sun Jan 06, 2013 01:22
GitHub: 4Evergreen4
IRC: EvergreenTree
In-game: Evergreen
Location: A forest in the midwest
Contact:

Re: Base issues and missing features

by Evergreen » Post

RHR wrote:I think you are right with all of your points, but in my opinion there is one major problem missing:
New players don't know that Minetest is an engine. They believe that Minetest is a clone of Minecraft. So they expect a copy with all features of Minecraft (all their blocks, nether, mobs, etc.) included in the download. Most of them just try the minetest_game and come to the conclusion that Minetest is nothing more that a poor clone of Minecraft Cassic/Alpha, although nearly everything of that is already implemented in mods.
I agree.

User avatar
MirceaKitsune
Member
Posts: 867
Joined: Sat May 21, 2011 22:31
GitHub: MirceaKitsune
IRC: Taoki
In-game: MirceaKitsune
Location: Romania, Bucharest
Contact:

Re: Base issues and missing features

by MirceaKitsune » Post

RHR wrote:I think you are right with all of your points, but in my opinion there is one major problem missing:
New players don't know that Minetest is an engine. They believe that Minetest is a clone of Minecraft. So they expect a copy with all features of Minecraft (all their blocks, nether, mobs, etc.) included in the download. Most of them just try the minetest_game and come to the conclusion that Minetest is nothing more that a poor clone of Minecraft Cassic/Alpha, although nearly everything of that is already implemented in mods.
That's horrible if it's the case. Even if they don't know Minetest is an engine, they should know to expect a different gameplay / features / direction / etc. which even less flexible Minecraft-inspired games have. If people really think we're trying to clone Minecraft like that, there's no surprise some are still complaining about Minetest being an immoral and illegal ripoff... since they have no idea what they're talking about.

This might be a bit off topic however... since it's not a technical problem, nor something I believe Minetest needs to take action toward. This thread is for focusing on a select few engine issues which are limiting the ability to create a functional game of quality, and can be considered the remaining basic issues that every player and mod maker are limited or frequently affected by.

User avatar
stormchaser3000
Member
Posts: 420
Joined: Sun Oct 06, 2013 21:02
GitHub: stormchaser3000

Re: Base issues and missing features

by stormchaser3000 » Post

MirceaKitsune wrote:
RHR wrote:I think you are right with all of your points, but in my opinion there is one major problem missing:
New players don't know that Minetest is an engine. They believe that Minetest is a clone of Minecraft. So they expect a copy with all features of Minecraft (all their blocks, nether, mobs, etc.) included in the download. Most of them just try the minetest_game and come to the conclusion that Minetest is nothing more that a poor clone of Minecraft Cassic/Alpha, although nearly everything of that is already implemented in mods.
That's horrible if it's the case. Even if they don't know Minetest is an engine, they should know to expect a different gameplay / features / direction / etc. which even less flexible Minecraft-inspired games have. If people really think we're trying to clone Minecraft like that, there's no surprise some are still complaining about Minetest being an immoral and illegal ripoff... since they have no idea what they're talking about.

This might be a bit off topic however... since it's not a technical problem, nor something I believe Minetest needs to take action toward. This thread is for focusing on a select few engine issues which are limiting the ability to create a functional game of quality, and can be considered the remaining basic issues that every player and mod maker are limited or frequently affected by.
yeah but even worse: some people i talk to say that the fact that all those things are in mods rather than default game... sucks.

User avatar
MirceaKitsune
Member
Posts: 867
Joined: Sat May 21, 2011 22:31
GitHub: MirceaKitsune
IRC: Taoki
In-game: MirceaKitsune
Location: Romania, Bucharest
Contact:

Re: Base issues and missing features

by MirceaKitsune » Post

stormchaser3000 wrote:yeah but even worse: some people i talk to say that the fact that all those things are in mods rather than default game... sucks.
That is worthy of a good facepalm.

User avatar
Evergreen
Member
Posts: 2135
Joined: Sun Jan 06, 2013 01:22
GitHub: 4Evergreen4
IRC: EvergreenTree
In-game: Evergreen
Location: A forest in the midwest
Contact:

Re: Base issues and missing features

by Evergreen » Post

MirceaKitsune wrote:
stormchaser3000 wrote:yeah but even worse: some people i talk to say that the fact that all those things are in mods rather than default game... sucks.
That is worthy of a good facepalm.
Indeed. They say it sucks just because they are too lazy to just figure out how to copy and paste an archive and extract it? gah

User avatar
rubenwardy
Moderator
Posts: 6271
Joined: Tue Jun 12, 2012 18:11
GitHub: rubenwardy
IRC: rubenwardy
In-game: rubenwardy
Location: United Kingdom
Contact:

Re: Base issues and missing features

by rubenwardy » Post

Evergreen wrote:
MirceaKitsune wrote:That is worthy of a good facepalm.
Indeed. They say it sucks just because they are too lazy to just figure out how to copy and paste an archive and extract it? gah
That isn't the point they are making. They are saying the feature does not count, as it is not part of default Minetest. Like how trains or tekkit doesn't count as they are not part of Minecraft; They are mods.

That is their logic, anyway.

Post Reply

Who is online

Users browsing this forum: No registered users and 1 guest