Skip to content
This repository has been archived by the owner on Aug 18, 2020. It is now read-only.

Feature Proposal: Ingame Chat #57

Closed
Nukiloco opened this issue May 14, 2019 · 12 comments
Closed

Feature Proposal: Ingame Chat #57

Nukiloco opened this issue May 14, 2019 · 12 comments
Labels
long term This is planned for the future metabug Tracking a feature or issue proposal This is a feature proposal and discussion thread

Comments

@Nukiloco
Copy link

We should add ingame chat so players can communicate to each other via text. Also I think another great feature would be chat commands!

@ForLoveOfCats ForLoveOfCats added enhancement long term This is planned for the future metabug Tracking a feature or issue proposal This is a feature proposal and discussion thread labels May 14, 2019
@ForLoveOfCats
Copy link
Owner

What sort of actions do you think should be able to be performed via chat commands?

@Nukiloco
Copy link
Author

The actions that should be able to be performed via chat commands should be similar to what the game Minecraft has. To access a command, there should be a prefix like ! or / followed by the command, then the values of what the command takes in. The scripting api that SoS already has should be able to extend this command system.

With the chat system being placed in, I think the chat system should be put into it's own folder. As I know the chat system can be put into one script for now since how easy it is in Godot to send information to all clients.

The sort of actions that I think should be able to be performed are teleport commands, setting structures, and admin commands like muting, kicking, or banning.

@ForLoveOfCats
Copy link
Owner

ForLoveOfCats commented May 14, 2019

The chat commands are not necessary. Everything can be implimented directly in the console (which makes it a great deal simpler all around).




Do you think that we should create our own chat protocol or use another? On one hand with our own protocol we can just focus on what features we need and it will more than likely be much simpler of a solution as there will not really be a protocol at all and just a few RPCs. However then it would be much more difficult/near impossible to communicate with players in a server from outside the game without relying on hacky solutions like ircbots and the like. On the other hand using a chat protocol that is already established allows for the aforementioned chatting with people not in the server. However it would likely be a great deal more difficult to get working as we would have to be a compliant client of the protocol. On the bright side there may be C# libraries for some of these protocols, you will have to do some research. Another downside of using a pre-existing protocol is that in order to allow something like connecting the game server to a server instance of whatever chat system this is, we would have to integrate however that system identifies players into SkyOfSteel (including any possible barriers to entry for a new user of said chat system).

If we create our own chat system should it prioritize ensuring that all clients see the chat log in the same over or should it prioritize low latency? I'm of the opinion that a few hundred ms of latency between sending a message and seeing it appear is not noticeable and that chat order is more important but others may disagree. In addition should it be persistent? If so should it be persistent between server restarts or just between disconnections/connections?

These are the overall goal decisions which should drive the implementation. If I missed anything do let me know 😄

Cheers!

@Nukiloco
Copy link
Author

I think using simple protocol using just RPCs. I don't think it's hacky at all when using an ircbots or webhooks to communicate outside of the game. As I know most games that have a chat system are using simple protocols. Before the player could use the chat system, they first have to have a verified account before joining the server. Persistent chat is kind of tricky because mods may implant their own chatting system (for what ever reason), so what I'm thinking is having persistent chat as an option. Also we should probably make it distinguishable if the player joins a different server.

@ForLoveOfCats
Copy link
Owner

ForLoveOfCats commented May 14, 2019

Why should players have to create an account anywhere but the server they are joining? One of SkyOfSteel's goals is to be as decentralized as possible and to allow as much freedom to server owners as possible.


What do you mean by?

Also we should probably make it distinguishable if the player joins a different server.

Are you referring to making sure that you can recognize a player who is on multiple servers that you are on even (which could be encumbered by having different nicknames on different servers)?

@Nukiloco
Copy link
Author

Nukiloco commented May 14, 2019

I thought that you were saying that we needed an account system earlier for a chat system, sorry about that lol.

Also what I meant was by making it distinguishable was that making the chat log show where the chat is coming from. For example after when you leave and join another server the chat history is ended with this text for an example End of chat log (Server name or IP) or =====Chat Log Ended (Server name or IP)=====.

@ForLoveOfCats
Copy link
Owner

I was saying that if we were to use a preexisting chat protocol we would have to integrate into SkyOfSteel however that system handles authentication.

What I was referring to by persistence is having the server store the chat log and resend it to new clients as they connect as opposed to them only being able to see the messages sent after their connection.

@Nukiloco
Copy link
Author

Oh huh, that would be a good idea to send the chat log to the clients. There should also be an option for the server hosts if they want to turn it off.

@ForLoveOfCats
Copy link
Owner

Agreed

@ForLoveOfCats
Copy link
Owner

A way to get this UI working is to have a preview only window of the chatlog in the HUD and pressing the chat bind would open a menu similar to the console or pause menu in operation. Closing the chat window will then return to the game just like how closing the console or pause menu do.

@ForLoveOfCats
Copy link
Owner

Sidenote: This closes #50 when completed

@ForLoveOfCats
Copy link
Owner

Closing due to lack of activity in favor of #50

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
long term This is planned for the future metabug Tracking a feature or issue proposal This is a feature proposal and discussion thread
Projects
None yet
Development

No branches or pull requests

2 participants