minetest / minetest

Luanti (formerly Minetest) is an open source voxel game-creation platform with easy modding and game creation
https://www.minetest.net/
Other
10.82k stars 2.03k forks source link

Add an option for the client to listen on a socket, update connected peers about client state and relay their commands to the server #13307

Closed farooqkz closed 1 year ago

farooqkz commented 1 year ago

Problem

Testing mods is actually a very bad experience, since you have to test everything yourself. Also to my knowledge, Minetest does not support plugins. E.g. a voice typing plugin or a shortcut to send something specific to the server.

Solutions

Additional context

Implementation of this feature will open a big door. Possible use cases could be:

y5nw commented 1 year ago

You can use busted or mineunit for testing mods.

farooqkz commented 1 year ago
  1. Vosk is an Offline speech recognition engine and library
  2. With this feature, people could use whatever language or method they want to program Minetest and see the results at the same time. So no need for another client with rendering capabilities which is also programmable.
  3. You can use this feature to test mods and see the results at the same time. e.g. how the mod behaves when the player does this or that.
sfan5 commented 1 year ago

I don't see how this differs from #13070 which was closed.

farooqkz commented 1 year ago

I don't see how this differs from #13070 which was closed.

I believe I didn't well explain my idea in that issue. And it was more focused on creating bots. Also ruben didn't explain to me why it was closed. Perhaps I had to comment on that issue instead of creating a new one?

Zughy commented 1 year ago

@rubenwardy

farooqkz commented 1 year ago

TBH, I still don't understand why you are not going to implement this? Or are you proposing that another client must be built from scratch with rendering, mods and everything just to be programmable?

rubenwardy commented 1 year ago

Minetest is open source, you can fork the engine and implement this yourself - as a client-side modding API or your socket suggestion. Dragonfire is an example of a fork of Minetest with more client-side modding features, it probably allows you to control player movement

We intentionally have not added :set_pos or an API to control player movement to client-side modding as allowing players to script their own movement isn't a goal of Minetest

We don't have time to implement everything, we need to prioritise and our priorities are with giving more control to games and mods.

This issue is definitely a duplicate - you could ask another core developer to give their opinion on #13070

rubenwardy commented 1 year ago

Duplicate of #13070

farooqkz commented 1 year ago

Minetest is open source, you can fork the engine and implement this yourself - as a client-side modding API or your socket suggestion. Dragonfire is an example of a fork of Minetest with more client-side modding features, it probably allows you to control player movement

We intentionally have not added :set_pos or an API to control player movement to client-side modding as allowing players to script their own movement isn't a goal of Minetest

We don't have time to implement everything, we need to prioritise and our priorities are with giving more control to games and mods

If I implement it myself, will it get merged into upstream?

farooqkz commented 1 year ago

Asking for opinion from @celeron55

I think what I am requesting is related with #4064

rubenwardy commented 1 year ago

sfan5's view here: https://irc.minetest.net/minetest-dev/2023-03-13#i_6063012

If I implement it myself, will it get merged into upstream?

No, implementation is usually less than half the work - most of the work is in maintenance and keeping things working. Implementing it yourself in a fork would allow you to use it without us incurring the cost of maintenance

farooqkz commented 1 year ago

sfan5's view here: https://irc.minetest.net/minetest-dev/2023-03-13#i_6063012

If I implement it myself, will it get merged into upstream?

No, implementation is usually less than half the work - most of the work is in maintenance and keeping things working. Implementing it yourself in a fork would allow you to use it without us incurring the cost of maintenance

@sfan5 @rubenwardy

You are absolutely right about maintenance costs. But my point is that with this not so big feature, a lot of things will be possible which now require forking the client and adding to the engine. A brand new plugin system will be introduced for Minetest Client which basically a lot of things would be possible with it and it will be language agonstic.

Automatic mod testing is just one small example.