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.79k stars 2.03k forks source link

new server packet: new texture at run time (not load time) #4845

Closed masrourmouad closed 7 years ago

masrourmouad commented 7 years ago

Add a player skin option on main minetest menu. Create a player skin folder to let player choose witch skin to use. Add support to minecraft skins by auto cropping the png.

tobyplowy commented 7 years ago

@masrourmouad +1

duckbrain commented 7 years ago

I think this is a good idea, but this means that the client is going to need to upload an image to the server. This brings to mind a few considerations.

masrourmouad commented 7 years ago

@duckbrain the server will cache the skin , so the skin will be uploaded only one time, but when the user changes the skin the server will compare the (md5 or sha1) if the hash is changed it will update the skin.

masrourmouad commented 7 years ago

@duckbrain for security implications the skin image will have to be validated in the client before sending it to the server.

raymoo commented 7 years ago

This also means the server will have to send skins to clients after the client is already connected and playing.

masrourmouad commented 7 years ago

It means that the first connection with the server, the skin will be validated in the client and sent to the server after, only one time

raymoo commented 7 years ago

The server has to send new player skins to existing clients so that they can display the skin.

duckbrain commented 7 years ago

@masrourmouad When a client connects to a server, all of the assets (images, audio, models, etc.) needed to play are sent to the client. This transfer is never repeated while the client stays connected. So if player A connects then player B connects with a custom skin, then the server did not have player B's skin until they connected, and player A will never get the update and won't be able to display that skin. We are just saying that to implement this, that will need to change.

masrourmouad commented 7 years ago

A skin server: when player choose the skin from the main menu the selected skin will be automatically uploaded the the skin server, all servers will have do download one time the skin from the skin server and caching it, so next time the player connects the server, the server will send the skin to the player as an asset, that way the skin server will be not overloaded and the player will have skins.

raymoo commented 7 years ago

@masrourmouad What happens if one player is already connected and there is a player with a new skin?

masrourmouad commented 7 years ago

A server mod that connects to the skin server via the server can automatically update the skin, and cache the new skin; when the player connects his skin will be standard , the server mod will do the job.

sofar commented 7 years ago

'skin servers` should absolutely not be added. If we do something like this, the skin should be send directly from the client to the server.

The last thing we want is some central service where we have to do censorship on skins because some servers don't allow some skins, and other servers do allow it. E.g. some don't allow mature skins, some do not allow religious symbols, some do not allow text, some do not allow non-RP skins, some do not allow the Canadian flag, etc. etc. YOU CANT WIN THIS GAME, EVER.

What is needed to make this work is extensive:

sofar commented 7 years ago

Another issue is that servers may be using a different character model, requiring a custom skin. Meaning, all of this should be optional.

masrourmouad commented 7 years ago

create within the skin server an interface that allow server operators to review and approve player skins; i dont say we should have one skin server but we can have a lot of them, so a group of servers will create their own skin server, the skin server url will not be hard coded.

masrourmouad commented 7 years ago

in the client setting the player will specify the skin server.

sofar commented 7 years ago

Skin servers are definitely out of the question.

This whole feature is out of the question anyway, because nobody is going to solve this problem:

masrourmouad commented 7 years ago

so lets start with single player, can we apply skins in single player.

sofar commented 7 years ago

so lets start with single player, can we apply skins in single player.

Yup. Make a new empty texture pack folder and put in a modified character.png.

sofar commented 7 years ago

for singleplayer? you're kidding right? Do you honestly ever look at your own skin while in singleplayer?

masrourmouad commented 7 years ago

the skin server is the only solution to problem.

sofar commented 7 years ago

then start coding, I gave a list of things to do already, that should be a reasonable start.

masrourmouad commented 7 years ago

Ok, a server mod that connects to the skin server via the server can automatically update the skin, and cache the new skin; is the easiest solution to the problem.

masrourmouad commented 7 years ago

a server owner will install this mod.

masrourmouad commented 7 years ago

thank you @sofar but i will ask other members about my idea .

sofar commented 7 years ago

mods can not update skins in real time after the server has started, so you're stuck rebooting after a player changed their skins. That is an unworkable solution.

This is why the following issue should be solved first:

  • new server packet: new texture at run time (not load time)

but hey, what do I know?

masrourmouad commented 7 years ago

thanks

sofar commented 7 years ago

You're welcome. I hope someday someone will solve this underlying problem and we can actually have this feature.

paramat commented 7 years ago

We cannot use a skin server. Celeron55 had an email request for something like this and he considers it a really bad idea.

masrourmouad commented 7 years ago

@paramat ok, why not just allow mods to change skins, and rethink the skin server after.

sofar commented 7 years ago

Mods can already change skins, there are several that do this. wardrobe, for instance.

masrourmouad commented 7 years ago

im speaking on servers

SpaghettiDeveloper commented 7 years ago

Sofar it's right. insert a features changing skin in the game (client), when the player connects to the server, the administrator must confirm the skin usa before being displayed at all? through the admin chat a notification appears with colorful text with a click will bring up the player data tab with preview of the skin and the button to approve the his skin. program too complex?

duckbrain commented 7 years ago

I think the feature being requested here is for mods to be able to dynamically update resources. If mods can create/update textures on the clients while, connected, then new skins could be created.

This would pave the way for the network protocol that @sofar's concept is talking about.

A practical use-case: You could have 10 base character designs and 30 outfits and 5 hats. Currently you would have to create all permutations of the character models (1500 textures). If textures could be dynamically updated, you could create the new textures when they are created in some wardrobe-like mod that takes advantage of this, and only uses the combinations that are actually used by a player. (Note: I'm not suggesting that such a mod be made)

This would also make it possible to create some form of @masrourmouad's concept as I understand it, implemented as a mod. There is some server that contains a bunch of skins that players can choose from and apply to their characters. A formspec could give an interface to this server on login.

Personally I think @sofar's solution is better because the user could download/create any player texture themselves and use it when they log in to any server, and more importantly, it does not use any centralized server. Additional external tools could help with downloading/creating textures in the future.

paramat commented 7 years ago

Sofar has the right idea here https://github.com/minetest/minetest/issues/4845#issuecomment-264952819 I support moves to make it easier for server admins to receive, approve and apply skins.

im speaking on servers

Mods can do this on servers too.

masrourmouad commented 7 years ago

the server owner or a group of server owners can make their own skin server, so there is no probleme

sofar commented 7 years ago

the server owner or a group of server owners can make their own skin server, so there is no probleme

Not having a skin server is simpler, and therefore better.

Also, once a client selects a skin in their client, it will be sent to all servers. Nothing prevents server admins from sharing skin caches between servers if implemented properly.

stujones11 commented 7 years ago

We already have a skin-server of sorts, see http://minetest.fensta.bplaced.net though we really should update the skin format, that's another issue.

masrourmouad commented 7 years ago

can a mod update the players skin at server run time

duckbrain commented 7 years ago

A mod can change which skin a player has, but not what skins are available.

rubenwardy commented 7 years ago

duplicate of #3528