-
Notifications
You must be signed in to change notification settings - Fork 2.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[CSM] Second Roadmap #5394
Comments
What I'd really love for CSM is the ability to define an API (e.g. for easier creation of HUDs, as I'm doing with my HUD Plus mod) on a server-side mod and then use that API on the client. This would allow (for example) registering an HUD using my custom API to display the description of the item in the hotbar. Another thing that could be important in relation to this is an extra API function on the server-side to check for a specific mod on the client. I'm not sure how realistic the first thing is, but just throwing it out there (that's what this issue is for, right? :P) |
@octacian it's not easy for HUD, we could customize HUD in the near future but this should not depend on server side attributes. |
@red-001 i picked some ideas from your comment to the main list |
I don't think node timers are sent to the client. Node meta, yes, node timers, no. |
@sofar yes, maybe we can have local node timers for something ? example: particles created every 1 sec on a node ? |
I'm not sure how difficult this would be to make, or even turn into a usable API, but what about being able to render certain objects for each player, such as fishing line or lightning? |
all reasonable CSM interfaces imho. |
@sofar i think yes, but at this moment if i remember client doesn't know which player is connected, only server knows it. But client knows somewhere some CAO are client because it shows names everywhere |
Timers on client nodes seems risky, the client's perspective of the world is very different and it keeps huge amounts of map in memory. However, if the timers can be for arbitrary nodes, and we can implement some sort of "active range" to the localplayer, it could work very well to periodically loop sounds or add particles |
@sofar sounds be more reasonable, like ABM range |
What about creating CAOs that are simulated on the client, and not tied to a SAO? They could he used for visual effect, e.g. put a colored box around a selected target. |
@raymoo i don't think it's a CAO, maybe an attached entity |
It doesn't matter to me if it's technically a CAO, I just assumed something like this would be implemented as a CAO. I just want something similar to a LuaSAO that can be simulated on the client and can have its behavior specified in Lua. I don't think it should be limited to being attached, for example if you wanted to interpolate the entity's position. You could imagine implementing this as a hard-coded flag, but you would have trouble covering every kind of similar feature someone might want to use. |
Here are some features I hope are added.
That is a list of intresting features that I think are worth working on and eventually adding. |
@bigfoot547 i think we can have registered_items, it could be useful to have a pure client side craft guide |
I renamed it to second roadmap, to have a second patchset as a changelog to core, when this patchset will be finished, we will close this issue and re-open another issue to follow the new changes |
Kinda reiterating the same thing @bigfoot547 said, but figured I'd say it anyways. IMO, The ability to get all the other players on the server would open the door for a custom overview formspec to be displayed with a list of all players and maybe even a search bar. A client-side craft guide would also be so useful seeing as it'd be practically lag-free. |
@octacian i understand what you need and i need to rewrite the chat protocol to be more intelligent to do more interesting things :) |
@octacian On servers, people refer to me as big foot, bigfoot and bf. Only when they feel like pressing tab do they call me bigfoot547. |
@nerzhul Maybe instead of a global table, maybe |
(Also good would be a nice documentation. And |
We use .md for better reading especially on github.You are free to help us to fix the doc. Why do you need et mod path ? We don't port it because on client API os very restricted but maybe we forget something
|
|
I meant, |
Issues in the past that I've seen so far where someone has suggested waiting for client side scripting so mods can implement: I can't think of a good way to find all of these, but I know there's at least a few more. |
This one (#4366) is related to CSM, specifically the part about custom physics models for entities. |
What about client side lua active objects? Things that are meant to be visual effects or UI elements. Sample ideas (both require client<=>server communication to be useful):
Both of these could be implemented alternatively with selective visibility of server objects, but since these are only displayed to one client and have minimal interaction with other elements of the server, they could be client-local to reduce display lag. An arguable benefit is that it offloads some processing to the client, but some might argue that that is bad for lower-end machines. But it's something that would have been simulated in singleplayer anyway, and my impression is that most people agree that mods targeting singleplayer and computers that can process it are fine, so I don't see why a mod can't target multiplayer clients that are good enough for this. Not to mention that the two particular examples I gave probably wouldn't be very expensive to run. EDIT: I might have mentioned this suggestion in the original CSM pull or issue but I don't think I have since then. |
display informations on CAO is a nice CSM behaviour we should have, for the other point it's more server responsiblity |
My ideas: minetest.set_controls({<...>}) minetest.select_hotbar_slot(<n>) minetest.take_screenshot(<file_name>) I think that a graphics API would be really useful too. E.g.: local my_line = minetest.draw_line(<from (x, y, z)>, <to (x, y, z)>, <color>)
...
my_line.remove() minetest.draw_sprite(<name>, <pos (x, y, z)>, <scale (x, y)>) |
@sofar loadMedia is only done by server sent packet atm, we should add same feature at mod loading from client side |
Yup, I figured - add it to the worklist above? it's pretty crucial. |
we can add it, but i don't if i will have time myself to manage this, as i have many PR which are crucial outside CSM and should be merged |
if a way to send mods form the server is added we should also send back error messages to the server, so server admins can debug mod crashes. |
What about a per-world store? |
rendeko wrote something about allowing custom huds: https://forum.minetest.net/viewtopic.php?p=269253#p269253 |
Would it be also possible to override item descriptions? That would be an easy way to get client side item translations. |
You could change the "description" meta field of an item client-side. |
This roadmap will be closed on feature freeze, on 21st may. A new will be opened after releasing MT |
I'm closing this roadmap as the feature freeze occurs this evening. Thanks all for your participation |
Here is the main roadmap and discussion topic about CSM.
Please post your ideas here, or open a new issue linked back with it. It will permit developers to centralize requested features and priorize them.
Feature requests
Short term
Documentation is mandatory for each PR
on_item_use
#5544)core.get_timeofday
andcore.get_day_count
([CSM] Add core.get_timeofday & core.get_day_count env calls #5401)core.get_node_level
,core.get_node_max_level
,core.find_node_near
([CSM] Add core.get_timeofday & core.get_day_count env calls #5401)Longer Term
Reported bugs
Other
The text was updated successfully, but these errors were encountered: