FAForever / FAForever/server

Things to change for a protocol v2

Đang mở
#573 6 bình luận 0 reaction 0 người được giao Xem trên GitHub
proposal
Ngôn ngữ chính
Python
Star
72
Fork
84
Merge trung bình
5 giờ 11 phút
Pull request đã merge (30 ngày)
1

Mô tả

I'd like to start keeping track of things we want to change in a new protocol.

### Stuff to remove
- [x] Remove `QDataStreamProtocol` #816
*It is pointless, everyone hates it.*
- [x] Remove all modvault functionality #816
*Only the legacy client still uses it. All clients should use the API instead.*
- [x] Remove `create_account` command completely #816
- [x] Remove `id` and `login` from the welcome message. #816
*Use corresponding attributes on the `me` object instead*
- [x] Remove `mod` from `game_matchmaking` command. #816
*Use `queue_name` instead.*
- [x] Remove `faction` from `game_matchmaking` command. #816
*Use `set_party_factions` instead.*
- [ ] Remove password based authentication
*Use token instead*
- [x] Remove `init_mode` from `game_launch` command. #816
*Use `game_type` instead.*
- [ ] Remove `kick` and `kill` styles from notice messages
*Use a dedicated administrative command instead*
- [x] Remove search boundaries from `matchmaker_info` message #816
- [x] Remove `irc_password` command
*IRC authentication will use tokens from the API*
- [ ] Remove `global_rating`, `ladder_rating`, and `number_of_games` from `player_info` message.
*Use `ratings` instead*

### Stuff to change
- [ ] Rework `command_avatar`
- [ ] Rename action `list_avatar` to `list`
- [ ] Return avatar id's in avatar list
- [ ] Select avatar via id instead of url
- [x] Move from UTF-16 to UTF-8 #629
*We are just wasting bytes*
- [ ] Move the protocol to websocket, choose a websocket subprotocol (e.g. STOMP?)
*This would allow more web interactions*
- [ ] Guarantee that every message is a json dictionary (not a list)
*Simplifies parsing*
- [ ] Change all unix timestamps to ISO timestamps. For example `launched_at` in `game_info`
- [ ] Remove or rework `ping` and `pong` commands? Maybe only send them if no other messages have been sent
- [ ] Rework `game_info` so that messages are not sent sometimes as a list and sometimes as individual games
- [ ] Use player id instead of username in `game_info` teams section #812
- [x] Don't send `game_launch` message when match is cancelled #816
*Handle `match_cancelled` instead*
- [ ] Rework `command_ask_session`
*What is the point? What does the policy server use this for? Can it be removed?*

### Stuff to add
- [ ] Add message Id to every message (or a message envelope)
- [ ] Add request Id to messages that are a direct response to other messages.
- [x] ~A way to tell when a player has left an ongoing game (player dies but game is not over).~ #831
- [ ] Matchmaker match confirmation #607
- [ ] Add a way to check supported protocol version of clients

### Fancy features
- [ ] Auto-generate documentation or describe protocol in a formal language that allows creation of code in multiple languages
*Use dataclasses to describe message fields*

Hướng dẫn đóng góp

Mở hướng dẫn đóng góp

Đánh giá

Issue này chưa được đánh giá.

Nhận issue mới trong hộp thư của bạn

Bản tóm tắt ngắn những issue GitHub phù hợp với người mới.