From 94eeb1c0cf580bf1d705dc0ef41f5e238b2a4072 Mon Sep 17 00:00:00 2001 From: AJ Kelly Date: Tue, 8 Feb 2011 21:29:04 -0600 Subject: [PATCH] duped --- Docs/SMLanProtocol.txt | 455 ----------------------------------------- 1 file changed, 455 deletions(-) delete mode 100644 Docs/SMLanProtocol.txt diff --git a/Docs/SMLanProtocol.txt b/Docs/SMLanProtocol.txt deleted file mode 100644 index 6a206cbade..0000000000 --- a/Docs/SMLanProtocol.txt +++ /dev/null @@ -1,455 +0,0 @@ - -PRELIMINARY - - - - - - - - 05/03/2004 -Protocol version 4 - But 0x04 will be its version for inter-protocol purposes. - -This protocol is only intended to replace current protocol. Because current protocol -not expanable - -SMLAN PROTCOL TCP/8765 - -Protcol is entirelly packaged in EzSockets Data Packets (use send and receive packet) - -This will prevent any out-of-sync errors with future or past versions. - -The protocol is impervious to fragmented, or bonded TCP packets. - -Basic Representation: - -Octet 0123 4 5 - +----+-+---//--+ - |ssss|C|Payload| - +----+-+---//--+ - -ssss - size of packet, handled by ezsockets (if you're using C++) -C - Command. -Payload - variable size based on command - -The payload may contain more data than expected, i.e. new protocol version. - - -In the following protocol, the term size means the size of the chunk of data. -If the "size" is "NT" then that means it's a null-terminating string. - "MSN" most significant 4 bits (byte/16) - "LSN" least significant 4 bits (byte%16) - - -Note: Primary player is 0x0, secondary player is 0x1 - -CLIENT to SERVER protocol: - -000: No Operation - Desc: This command will cause server to respond with a no op response. - Payload: None - Response: Server 001 - -001: No Operation Response - Desc: This command is used to respond to a no operation. - Payload: None - Response: None - -002: Hello - Desc: This is the first packet from a client to server, stating below - information (NOTE: Names are no longer sent in this packet) - Payload: - Size Description: - 1 Client protocol version - NT Name of build of StepMania - Response: Server 002 - - - -003: Game Start Request - Desc: This command is called once after most loading is done, and - again immediately before the sound starts. - Payload: - Size Description - MSN Primary player difficulty (feet) (0 for no player) - LSN Secondary player difficulty (feet) (0 for no player) - MSN Primary player difficulty (0=Beginner, 1=easy, etc.) - LSN Second player difficulty (0=Beginner, 1=easy, etc.) - MSN Start Position (0 is pre-sync, 1 is for sync) - LSN Reserved - NT Song Title - NT Song Subtitle - NT Song Artist - NT Course Title (If none exists; make it just a null) - NT Song Options (in string-format) - NT Primary Player's options (Null if non-existant) - NT Secondary Player's Options (Null if non-existant) - - Response: Server 003 - - -004: Game Over Notice - Desc: This command is sent when end of game is encounterd - Payload: None. - Response: None. - -005: Game Status update - Desc: Updates game info for each step - Payload: - Size Description - MSN Player # -Protocol <= 2 - LSN StepID - 1: Miss - 2: W5 - 3: W4 - 4: W3 - 5: W2 - 6: W1 - 7: LetGo - 8: Held -Protocol >= 3 - LSN StepID - 1: HitMine - 2: AvoidMine - 3: Miss - 4: W5 - 5: W4 - 6: W3 - 7: W2 - 8: W1 - 9: LetGo - 10: Held - - MSN Projected Grade (StepMania enum int) - LSN Reserved - 4 Net-order long containing score. - 2 Net-order int containing combo. - 2 Net-order int containing health. - 2 Net-order # containing offset - 32767 would be DEAD on the note - If the user is hitting late, the # will be higher - It if the user is exactly 0.25 seconds off, the - number will be different by 500, if 0.5, it will be - different by 1000. - Response: None. - -006: Style Update (PLEASE NOTE THIS HAS NOTHING TO DO WITH SERVER COMMAND 6) - Desc: This is sent when a style is chosen. - Size: - 1 # of enabled players (1 means 1, 2 means 2) - 1 Player # (0 means 1st, 1 means 2nd) - NT Player Name for # - (Additional player's and #'s) (enabled players ONLY) - - Response: None - -007: Chat message - Desc: The user typed a message for general chat. - Size: - NT Message - -008: Request Start Game and Tell server existance/non existance of song. - Desc: The user selected a song on a Net-enabled selection - Size: - 1 Usage of message - 0: (in response to server 8) User has specified song - 1: (in response to server 8) User does NOT have specified song - 2: User requested a start game on given song - NT Song Title (As gotten by GetTranslitMainTitle) - NT Song Artist (As Gotten by GetTranslitArtist) - NT Song Subtitle (As gotten by GetTranslitSubTitle) - -009: //Reserved - -010: User entered/exited Network Music Selection Screen - Size: - 1 - 0: exited ScreenNetSelectMusic - 1: entered ScreenNetSelectMusic - 2: **Not Sent** - 3: entered options screen - 4: exited the evaluation screen - 5: entered evaluation screen - 6: exited ScreenNetRoom - 7: entered ScreenNetRoom - -011: User has changed player options - Size: - NT Player 0's options - NT Player 1's options - - -012: SMOnline Packet. //SPECIAL CASE!!! - NOTE: The smonline packet is not defined here. - The SMLan packet 12 is a wrapper for the SMOnline packet. - This is so that we can have "protection" of sorts when - it comes to the coding of SMOnline, so we don't have to - use the lower level commands when dealing with SMOnline. - Size: - 1 SMOnline command //This used to say 2, but it looks like 1 in all cases - SMOnline data - - -013: Reserved - -SERVER to CLIENT protocol: (begins at 128) - -NOTE: Server responses always add 128, thus a server response for no operation - is 128, not 000 - -000(128):No Operation - Desc: This command will cause server to respond with a no op response. - Payload: None - Response: Server 001 - -001(129):No Operation Response - Desc: This command is used to respond to a no operation. - Payload: None - Response: None - -002(130):Server Hello Response - Desc: This introduces the server. - Payload: - Size Description - 1 Server protocol version //NOTE: if protocol version is 128+, then this - server is an SMOnline server - NT Server Name - 4 Random key ( at the moment only used for an alternate login method ) - -003(131):Allow Start - Desc: This will cause the client to start the game. - Payload: None - Response: None - -004(132):Game over stats - Desc: this packet is send in response to the game over packet - it contains information regarding how well each player did. - Payload: - 1 # of players sent in this packet (active players) - The way this works is to send every player's info for a given - field. Like every player's score will be sent first, then every - player's grade. - 1 First player's player ID - - 4 Score - - 1 Grade - - 1 Difficulty (0=beginner, 1=light, etc.) - - - #this next chunk of step types is actually reversed - 2 miss - - 2 boo - - 2 good (All players) - 2 great (All players) - 2 perfect (All players) - 2 marvelous (All players) - - 2 ok (All players) - 2 max_combo (All players) - NT Player's options - - - -005:(133)Scoreboard update - Desc: This will update the client's scoreboard. - Payload: - Size - 1 Which section - 0: Names - 1: Combos - 2: Projected Grades - 1 # of players to display - - If Names, then: - 1 Player in first place's index - 1 Player in second place's index - ... - 1 Last player's index - If Combos, then: - 2 First player's combo - 2 Second Player's combo - ... - 2 Last player's combo - If Project grades - 1 Player 1's grade (in the same format used when reporting projected grades) - 1 Player 2's grade - ... - 1 Last player's projected grade - - -006:(134)System Message (PLEASE NOTE THIS HAS NOTHING TO DO WITH CLIENT COMMAND 6) - Desc: Send system message to user - Payload: - Size Description - NT Message - -007:(135)Chat Message - Desc: Add a chat message to the chat window on some StepMania screens. - Payload: - Size Description - NT Message - -008:(136)Tell client to start song/ask if client has song - Desc: The user selected a song on a Net-enabled selection - Size: - 1 Usage of message - 0: See if client has song - 1: See if client has song, if so, scroll to song - 2: See if client has song, if so, scroll to song, and play that song - 3: Blindly start song - NT Song Title (As gotten by GetTranslitMainTitle) - NT Song Artist (As Gotten by GetTranslitArtist) - NT Song Subtitle (As gotten by GetTranslitSubTitle) - -009:(137)Update user list - Desc: This sends all the users currently connected - Size: - 1 Max # of players - 1 # of players in this packet - 1 Player 0's status - NT Player 0's name (if there is no player here... make it a null ("")) - 1 Player 1's status - NT Player 1's name - ... - 1 Last player's status - NT Last player's name - Status: - 0 Inative (no info on this user yet) - 1 Active (you know who it is) - 2 In Selection Screen - 3 In Options - 4 In Evaluation - -010:(138)Force change to Networking select music screen. - Size: - NT Set Specified gametype - NT Set Specified style - -011:(139)Reserved - - -012:(140)SMOnline Packet. //SPECIAL CASE!!! - NOTE: The smonline packet is not defined here. - The SMLan packet 12 is a wrapper for the SMOnline packet. - This is so that we can have "protection" of sorts when - it comes to the coding of SMOnline, so we don't have to - use the lower level commands when dealing with SMOnline. - Size: - 1 SMOnline command - SMOnline data - - -013:(141)Formatted information packet - Desc: Send formatted information regarding the server back to the player. - NOTE: The purpose of this function is alternatively to be a broadcast - packet. (You can expect it via UDP broadcast) - Size: - NT Server Name - 2 Port the server is listening on - 2 Number of players connected - -014:(142)Attack Client - Size: - 1 Player Number - 4 Time to Last (in MS) - NT Text describing modifiers. - ----------------------------------------------------------------- -Client SMOnline packets: -000: Send Login Information - Size: - 1 Player Number - 1 Encryption text - 0: MD5 hash - 1: MD5 ( MD5 hash + salt ) (salt is plain text, base 10 string ) - NT Username - NT Password - - Note: The client is not permitted to use method (1) for authentication - if the salt it received from the server is 0 - -001: User asks to enter room - Size: - 1 Enter/Exit? - 0: User wishes to exit room - 1: User wishes to enter room - NT Room Name (Used when entering rooms) - NT Password (Empty if password not used) - -002: Create a new Room - Size: - 1 Room Type - 0: Normal room (has sub rooms) - 1: Game room (no sub rooms) - NT Room Title - NT Room Description - NT Room Password (blank if no password) - -003: Requests Room Info - Size: - NT Room Name - - -Server SMOnline packets: -000: Login Response - 1 Approval Status - 0: Approved - 1: Approval Failed - NT Login response (plain text) - -001: Room Update (Changing rooms) - Size: - 1 Type of update - 0: Change Room Title - 1: Update List of other rooms (or games) - - If Room Title Update: - NT Room Title - NT Room Description - 1 Type of room: - 0: Chat room - 1: Game room - 1 Allows creation of sub room. - 0: Does not allow creation of subrooms - 1: Allows creation of subrooms - - If Room List Update: - 1 Number of rooms - NT Room1 Title - NT Room1 Description - NT Room2 Title - NT Room2 Description - ... - NT RoomN Title - NT RoomN Description - - Room Status appended for reverse compatibility - 1 Room1 Status - 0: Normal Room - 1: Unused - 2: Room in game - 3: First stage of song selection has been done - 4: Second stage of song selection has been done - 1 Room2 Status - ... - 1 RoomN Status - - Room Flags appended for reverse compatibility - 1 Room1 Flags - bit 0: Passworded if true - 1 Room2 Status - ... - 1 RoomN Status - -002: Request general information from server. - 1 Format for stats - 0: Normal unformatted stats - -003: Room Info - Size: - NT Last Song Title - NT Last Song Subtitle - NT Last Song Artist - 1 Num Players - 1 Max Players - NT Player1 Name - ... - NT PlayerN Name