“BallanceMMOClient”的版本间的差异

来自Ballance Wiki
跳转至: 导航搜索
 
(未显示2个用户的9个中间版本)
第1行: 第1行:
 
{{Languages|zh|BallanceMMOClient/zh}}
 
{{Languages|zh|BallanceMMOClient/zh}}
  
{{Appbox
+
{{Seealso|Main Page: [[Ballance Massive Multiplayer Online]]}}
|name=BallanceMMOClient
 
|screenshot=bmmo.png
 
|screenshotDesc=The multiplay game window implemented by BallanceMMOClient.
 
|author=Swung0x48
 
|suit=Ballance
 
|link=[https://github.com/Swung0x48/BallanceMMO GitHub repository]
 
|dependency=The Latest [[BML2]]
 
|status=active
 
|date=19 Apr, 2021 ({{AgeYM|2021|4|19}} ago)
 
|latest=None
 
|license=
 
* v1:Apache License
 
* v2 and v3:Unknow License
 
}}
 
  
{{Cquote|yyc12345|This is a brand-new, groundbreaking plugin. This plugin revives Ballance community.}}
+
{{ambox|type=content
 
+
|issue='''Encoding Warning'''
'''BallanceMMOClient'''(abbr, BMMO) is a groundbreaking [[BML2]] plugin developed by Swung0x48. It allows a player to play Ballance with other players with low latency via a deployed central BMMO server. The ball of other players will be rendered as a shadow ball(half-transparent ball) in the game viewport, and a player name label will also be attached to it. Moreover, real-time chat, detect cheat status(cheat mode on or off) are also available. BMMO is enough stable to be used for some tournaments after a few iterations.
+
|info=Due to the limitation of Ballance. Any non-ASCII character is not allowed in BallanceMMOClient, from server URL, username to message content. It means that you should not use any Chinese character, Katakana, Hiragana, Korea character, Cyrillic, Greek character and etc.<br />
 +
However, in some of commands introduced in following content, this restriction will be removed. Please pay an attention to it.}}
  
 
== Download ==
 
== Download ==
  
 +
* Download from [https://dl.bmmo.bcrc.site/ Publish Website]. Click "Download Standalone Package" to download. (Suggested)
 
* Join Multi-play QQ Group, and download from QQ Group Files.
 
* Join Multi-play QQ Group, and download from QQ Group Files.
 
* Join Ballance Discord Server.
 
* Join Ballance Discord Server.
* Download from the Release page of GitHub repository.(Not suggested because publish is not in time.)
+
* Download from the Release page of [https://github.com/Swung0x48/BallanceMMO GitHub repository].(Not suggested because publish is not in time.)
 
* Download project and build by yourself.(Not suggested because building this plugin is harder than imagine.)
 
* Download project and build by yourself.(Not suggested because building this plugin is harder than imagine.)
  
 
Please read the requirement of server which you want to join and download correct version. '''In most instances, downloading the latest version is the best decision.''' Server will reject the connection of obsolete client after some updates.
 
Please read the requirement of server which you want to join and download correct version. '''In most instances, downloading the latest version is the best decision.''' Server will reject the connection of obsolete client after some updates.
 +
 +
== Client Settings ==
 +
 +
After installation, there are 2 way to configure your BallanceMMOClient settings<br />
 +
First, you can enter BallanceMMOClient entry in BML Mods menu, then use its submenu to set the settings what you want set. If your settings is too long or contain complex words, you can use the next method instead.<br />
 +
Method 2, Close game, navigate to {{code|ModLoader/Config/BallanceMMOClient.cfg}} and open it. Now, you can change all settings directly.
 +
 +
=== Core Settings ===
 +
 +
Server URL and player name are 2 essential settings for this plugin. You should fill them before any multiplayer game.
 +
 +
Player name setting locate in Player - Playername. Please choose a clear name. By the way, BMMO server will check your given name and remove all invalid characters, so the name adopted by the server may not exactly same with your set name.
 +
 +
Server URL setting locate in Remote - ServerAddress. You must set your server URL correctly, and stay in the same server with your friends/competitors, otherwise you can not do a normal multiplayer game. If the port of this field is omitted, the plugin will connect to the default port {{code|26676}}.
 +
 +
=== Other Settings ===
 +
 +
Spectator Mode setting locate in Remote - SpectatorMode. If enable it, you will enter spectator mode when joining multiplay server. The player in spectator mode will not be account into level ranking. And your ball position also will not be shared. Spectator mode are frequently used by tournament commentary and referee. The name of online players in spectator mode will have a extra star ({{code|*}}) prefix to indicate them.
 +
 +
Extrapolation setting locate in Gameplay - Extrapolation. If enable it, plugin will use extrapolation algorithm to smooth the movement of shadow ball to get better visual effect. If you disable it, the path of each players ball will be dispersed ("Flash"). The default of this setting is enable and we highly recommend all players enable it.
 +
 +
Player list color setting locate in Gameplay - PlayerListColor. This setting allow you customize the color of player list panel which displayed at the right-bottom corner of game window. Usually no need to modify this.
  
 
== Client Usage ==
 
== Client Usage ==
  
{{ambox|type=content
+
=== Commands ===
|issue='''Encoding Warning'''
+
 
|info=Due to the limitation of Ballance. Any non-ASCII character is not allowed in BallanceMMOClient, from server URL, username to message content. It means that you should not use any Chinese character, Katakana, Hiragana, Korea character, Cyrillic, Greek character and etc.}}
+
There are the syntax of following commands introduction and some annotations.
 +
 
 +
* Use Space to split arguments. The argument without any modifier/bracket should be input directly.
 +
* {{code|<u>n</u>a<u>m</u>e}} indicate the long name of this argument is {{code|name}}. the short name of this argument is {{code|nm}}. Input short name will call the same function.
 +
* {{code|<nowiki><arg></nowiki>}} indicate this argument should be replaced with some string according to your requirement.
 +
* {{code|<nowiki>[arg]</nowiki>}} indicate this argument is optional (use default value instead).
 +
* {{code|<nowiki>arg1 | arg2</nowiki>}} Choose a argument between arg1 and arg2.
 +
* You can use Tab to auto fill command name, player name and player ID, except {{code|/mmo kick}}. Just like some UNIX terminals.
 +
* Command is case-insensitive. However, argument input by player is case-sensitive. Additionally, Tab Auto Fill rely on the function implemented by BML2, so it is also case-sensitive.
 +
 
 +
==== Server Status ====
 +
 
 +
* {{code|/mmo <u>c</u>onnect <nowiki>[address]</nowiki>}} – Connect your specified server. If address argument is omitted, use the server setting of this plugin instead.
 +
* {{code|/mmo <u>d</u>isconnect}} – Leave current connected server.
 +
 
 +
==== Player Status ====
 +
 
 +
* {{code|/mmo <u>l</u>ist<nowiki>|</nowiki><u>l</u>ist-<u>i</u>d}} – Show a list containing all online player's name. if use {{code|list-id}} argument, a extra temporary internal player ID will be attached to its name.
 +
* {{code|/mmo <u>g</u>et<u>m</u>ap}} – For all players, show which map player is playing and its corresponding sector. It is convenient for looking for players.
 +
* {{code|/mmo <u>g</u>et<u>p</u>os}} – Show the position and ball type for all players.<ref name="single-player">For some reason about reducing computing and network resources, server will not send player's position and status data when the server only have a single player. So the shadow ball also can not move following player. Because of this, the position and ball type data is not correct when the server only have 1 player.</ref>
 +
* {{code|/mmo <u>r</u>e<u>l</u>oad}} – Reload all players status in client. If player name label and its shadow ball are mismatched, this function may solve this issue.
 +
* {{code|/mmo gettimestamp}} – Show all players extrapolation debug data.''This command is served for the developer of this mod.''
  
=== Install Client ===
+
==== Player Interaction ====
  
Please ensure that you have installed the latest BML2. Then you need to put your downloaded zip file in {{code|ModLoader/Mods}} '''directly without decompression'''. If you have '''installed obsolete BMMO''' previously, '''please remove it instantly.''' Your installation is finished if you can see BallanceMMOClient entry in BML Mods menu.
+
* {{code|/mmo <u>s</u>ay <nowiki><text></nowiki>}} or {{code|/say <nowiki><text></nowiki>}} – Send a public message in server with a content of <text>.<ref>Before 3.1.5-beta5, due to the implementation of BMMO, {{code|Space}} is not supported in message content. You need to use other symbol to split words if you need. For example, you can type {{code|wait/a/minute}} or {{code|wait-a-minute}} instead of {{code|wait a minute}}.</ref>.
 +
* {{code|/mmo <u>w</u>hisper <nowiki><player name> <text></nowiki>}} or {{code|/mmo <u>w</u>hisper <nowiki>#<player ID> <text></nowiki>}} – Send a private message for your specified player. This message only can be seen by you and your specified player.
 +
* {{code|/mmo announce <nowiki><text></nowiki>}} – Send a important public message in server. This message {{Color|'''support non-ASCII characters'''|red}} and will '''be shown at the center of game window for a while.'''
 +
* {{code|/mmo bulletin <nowiki>[text]</nowiki>}} – Set server bulletin text. '''The bulletin text bar will constantly displayed at the top-center of game window.'''<ref>Bulletin text do not support line break. Please use a clear and short text for it. Additionally, bulletin will set to blank when all players disconnected from server.</ref>
 +
* {{code|/mmo <u>a</u>nnounce<u>m</u>ap}} – Explicitly notify server which map you are playing and which section you are staying. (It is convenient fot notify other players)
 +
* {{code|/mmo <u>t</u>ele<u>p</u>ort <nowiki><player name></nowiki>}} or {{code|/mmo <u>t</u>ele<u>p</u>ort <nowiki>#<player ID></nowiki>}} – Teleport to other player's position. Only works on Cheat Mode.<ref>Teleportation only can move you to other player's position. It can not switch your sector automatically and also can not restore element statues.This command is frequently used with {{code|/mmo getmap}}</ref><ref name="single-player" />
 +
* {{code|/mmo kick <nowiki><player name> [reason]</nowiki>}} or {{code|/mmo kick <nowiki>#<player ID> [reason]</nowiki>}}: Kick the player from server with corresponding name (case-insensitive) or ID
 +
* {{code|/mmo custommap <nowiki><Name|reset></nowiki>}}: Customize your map name which you are playing. This name will be reset when switching levels or sectors.
  
=== Configurate Server and Username ===
+
==== Tournament Status ====
  
After installation, there are 2 way to configure your server URL and username. If you are looking for some available servers, please check out the next chapter to get an available server.<br />
+
* {{code|/mmo cheat <nowiki>on|off</nowiki>}} – Turn cheat mode on or off for all players online.
First, you can enter BallanceMMOClient entry in BML Mods menu, then use Remote and Player submenu to set server URL and username. If your server URL or username contain complex words, you can use the next method.<br />
+
* {{code|/mmo countdown}} – Start the ready-set-go countdown.
Method 2, Close game, navigate to {{code|ModLoader/Config/BallanceMMOClient.cfg}} and open it. Now, you can change server URL and username directly.
+
* {{code|/mmo dnf}} – Forfeit the game (did-not-finish).
 +
* {{code|/mmo rank reset}} – Run this before activating the countdown to reset all ranking (applies to a single race across multiple levels).
 +
* {{code|/mmo <nowiki>ready|ready-cancel</nowiki>}} - Signify to other players that you are ready for the race or cancel the ready status.
  
=== Basic Operations ===
+
==== Misc ====
  
The following operations are frequently to be used. Please ensure that you have known them well before starting multi-play.
+
* {{code|/mmo <nowiki>show|hide</nowiki>}} – Show / hide the console window for this mod. All status output from this mod will be available in the console, plus you can use commands of this mod in the console (without the {{code|/mmo}} prefix). Input and output in the console is no longer limited to standard ASCII characters.
  
* {{code|/mmo c}} or {{code|/mmo connect}}: Connect to server.
+
=== Keyboard Shortcuts ===
* {{code|/mmo d}} or {{code|/mmo disconnect}}: Disconnect from server
 
* {{code|/mmo l}} or {{code|/mmo list}}: List all online player clients.
 
* {{code|/mmo s <message>}} or {{code|/mmo say <message>}}: Send message. Due to the implementation of BML command, {{code|Space}} is not supported in message content. You need to use other symbol to split words if you need. For example, you can type {{code|wait/a/minute}} or {{code|wait-a-minute}} instead of {{code|wait a minute}}.
 
  
After anti-cheat update(v3.1), BMMO supports more anti-cheat features.
+
==== Self Status ====
  
* {{code|/mmo cheat [on or off]}}: Switch cheat mode '''for all online players'''. This command will force change each player's cheat mode without any notification. Please do not abuse this command.
+
* {{code|Tab}}: Toggle name plates for other players.
* A global message will be showed in chat dialog if any player change its cheat mode. The name of cheating player will automatically be attached with {{code|[C]}}.
+
* {{code|F3}}: Toggle debug information.
 +
* {{code|F3 + A}}: Reload player status. Use this to readjust when name plates and shadow balls are offset.
 +
* {{code|Ctrl + Tab}}: Show realtime status of players in the race, including current map and checkpoint. <ref>Hold Ctrl then press Tab. The order matters.</ref>
 +
* {{code|Ctrl + <nowiki>`</nowiki>}}: Show shadow ball of yourself (after network latency). Useful for latency test.<ref>{{code|<nowiki>`</nowiki>}} key is to the left of {{code|1}} on a standard QWERTY keyboard and can be used to type tilde symbol ({{code|<nowiki>~</nowiki>}}) when combined with {{code|<nowiki>Shift</nowiki>}}</ref><ref name="single-player" />
 +
* {{code|Ctrl + Shift + ↑}}: Reset camera. Useful when you accidentally set a nonstandard camera angle. Some rules force a player to forfeit the game if nonstandard camera angle is used.<ref>Please allow 1-2 seconds for the camera to readjust and do not move before it's done. You can do this while inside a transformer to avoid some time loss.</ref>
  
=== Advanced Operations ===
+
==== Tournament Status ====
  
* F3 for switching the display of debug information. Debug information mainly show network transfer status.
+
* {{code|Ctrl + <nowiki>[3 or 2 or 1]</nowiki>}}: Start countdown.
* You can use keyboard to send contest preparation message quickly. It's mechanism is running {{code|/mmo say <message>}} with preset string.
+
* {{code|Ctrl + 0}}: Start the race. Resets the race timer for all players. Depending on settings of the server, the level may be restarted.
** {{code|Left Ctrl + 3}}: Send {{code|3}}
+
* {{code|Ctrl + 4}}: Notify the players to ready up.
** {{code|Left Ctrl + 2}}: Send {{code|3}}
+
* {{code|Ctrl + 5}}: Ask the players to confirm readiness.
** {{code|Left Ctrl + 1}}: Send {{code|1}}
+
* {{code|Ctrl + D}} (press twice consecutively: Forfeit the current level (did-not-finish).
** {{code|Left Ctrl + 0}}: Send {{code|GO!}}
 
  
 
== Available Servers ==
 
== Available Servers ==
第75行: 第115行:
 
Or, there is a big latency when you are connecting to Chinese BMMO server, or you want to play Ballance with over world Ballance players, you can join Ballance [[Discord]] server and get server URL from {{code|#multiplay}} channel.
 
Or, there is a big latency when you are connecting to Chinese BMMO server, or you want to play Ballance with over world Ballance players, you can join Ballance [[Discord]] server and get server URL from {{code|#multiplay}} channel.
  
== History ==
+
== References ==
 
 
There are 3 huge changes in BMMO history, according to its GitHub commit history.<br />
 
V1 is based on TCP connection. Some basic message structures are established in this version and the plugin has been tested in production environment a few times. But the biggest problem is the quality of connection will significantly drop if the client is in a bad network environments. This is unacceptable in some cases.<br />
 
V2 use [https://github.com/Swung0x48/SimpleRealTimeNetworking a custom transfer protocol developed by Swung0x48]. But quickly, this version was no longer maintained.<br />
 
V3 is current version and be used by every Ballance multi-play players. It still in active development. This version use [https://github.com/ValveSoftware/GameNetworkingSockets Valve's GameNetworkingSockets] as its network library. This version of BMMO is widely praised, relying on the low latency features provided by GameNetworkingSockets. The quality of connection is in acceptable range, even if you are living the opposite of the Pacific Ocean.
 
 
 
== Deploy a Personal Server ==
 
  
In general, creating an BMMO server on a Linux server is easier than a Windows server. You can check out the GitHub repository's README file of this plugin to know how to deploy a BMMO server.
+
<references />

2023年10月28日 (六) 21:45的最新版本

Chinese version / 中文版: BallanceMMOClient/zh

Download

  • Download from Publish Website. Click "Download Standalone Package" to download. (Suggested)
  • Join Multi-play QQ Group, and download from QQ Group Files.
  • Join Ballance Discord Server.
  • Download from the Release page of GitHub repository.(Not suggested because publish is not in time.)
  • Download project and build by yourself.(Not suggested because building this plugin is harder than imagine.)

Please read the requirement of server which you want to join and download correct version. In most instances, downloading the latest version is the best decision. Server will reject the connection of obsolete client after some updates.

Client Settings

After installation, there are 2 way to configure your BallanceMMOClient settings
First, you can enter BallanceMMOClient entry in BML Mods menu, then use its submenu to set the settings what you want set. If your settings is too long or contain complex words, you can use the next method instead.
Method 2, Close game, navigate to ModLoader/Config/BallanceMMOClient.cfg and open it. Now, you can change all settings directly.

Core Settings

Server URL and player name are 2 essential settings for this plugin. You should fill them before any multiplayer game.

Player name setting locate in Player - Playername. Please choose a clear name. By the way, BMMO server will check your given name and remove all invalid characters, so the name adopted by the server may not exactly same with your set name.

Server URL setting locate in Remote - ServerAddress. You must set your server URL correctly, and stay in the same server with your friends/competitors, otherwise you can not do a normal multiplayer game. If the port of this field is omitted, the plugin will connect to the default port 26676.

Other Settings

Spectator Mode setting locate in Remote - SpectatorMode. If enable it, you will enter spectator mode when joining multiplay server. The player in spectator mode will not be account into level ranking. And your ball position also will not be shared. Spectator mode are frequently used by tournament commentary and referee. The name of online players in spectator mode will have a extra star (*) prefix to indicate them.

Extrapolation setting locate in Gameplay - Extrapolation. If enable it, plugin will use extrapolation algorithm to smooth the movement of shadow ball to get better visual effect. If you disable it, the path of each players ball will be dispersed ("Flash"). The default of this setting is enable and we highly recommend all players enable it.

Player list color setting locate in Gameplay - PlayerListColor. This setting allow you customize the color of player list panel which displayed at the right-bottom corner of game window. Usually no need to modify this.

Client Usage

Commands

There are the syntax of following commands introduction and some annotations.

  • Use Space to split arguments. The argument without any modifier/bracket should be input directly.
  • name indicate the long name of this argument is name. the short name of this argument is nm. Input short name will call the same function.
  • <arg> indicate this argument should be replaced with some string according to your requirement.
  • [arg] indicate this argument is optional (use default value instead).
  • arg1 | arg2 Choose a argument between arg1 and arg2.
  • You can use Tab to auto fill command name, player name and player ID, except /mmo kick. Just like some UNIX terminals.
  • Command is case-insensitive. However, argument input by player is case-sensitive. Additionally, Tab Auto Fill rely on the function implemented by BML2, so it is also case-sensitive.

Server Status

  • /mmo connect [address] – Connect your specified server. If address argument is omitted, use the server setting of this plugin instead.
  • /mmo disconnect – Leave current connected server.

Player Status

  • /mmo list|list-id – Show a list containing all online player's name. if use list-id argument, a extra temporary internal player ID will be attached to its name.
  • /mmo getmap – For all players, show which map player is playing and its corresponding sector. It is convenient for looking for players.
  • /mmo getpos – Show the position and ball type for all players.[1]
  • /mmo reload – Reload all players status in client. If player name label and its shadow ball are mismatched, this function may solve this issue.
  • /mmo gettimestamp – Show all players extrapolation debug data.This command is served for the developer of this mod.

Player Interaction

  • /mmo say <text> or /say <text> – Send a public message in server with a content of <text>.[2].
  • /mmo whisper <player name> <text> or /mmo whisper #<player ID> <text> – Send a private message for your specified player. This message only can be seen by you and your specified player.
  • /mmo announce <text> – Send a important public message in server. This message support non-ASCII characters and will be shown at the center of game window for a while.
  • /mmo bulletin [text] – Set server bulletin text. The bulletin text bar will constantly displayed at the top-center of game window.[3]
  • /mmo announcemap – Explicitly notify server which map you are playing and which section you are staying. (It is convenient fot notify other players)
  • /mmo teleport <player name> or /mmo teleport #<player ID> – Teleport to other player's position. Only works on Cheat Mode.[4][1]
  • /mmo kick <player name> [reason] or /mmo kick #<player ID> [reason]: Kick the player from server with corresponding name (case-insensitive) or ID
  • /mmo custommap <Name|reset>: Customize your map name which you are playing. This name will be reset when switching levels or sectors.

Tournament Status

  • /mmo cheat on|off – Turn cheat mode on or off for all players online.
  • /mmo countdown – Start the ready-set-go countdown.
  • /mmo dnf – Forfeit the game (did-not-finish).
  • /mmo rank reset – Run this before activating the countdown to reset all ranking (applies to a single race across multiple levels).
  • /mmo ready|ready-cancel - Signify to other players that you are ready for the race or cancel the ready status.

Misc

  • /mmo show|hide – Show / hide the console window for this mod. All status output from this mod will be available in the console, plus you can use commands of this mod in the console (without the /mmo prefix). Input and output in the console is no longer limited to standard ASCII characters.

Keyboard Shortcuts

Self Status

  • Tab: Toggle name plates for other players.
  • F3: Toggle debug information.
  • F3 + A: Reload player status. Use this to readjust when name plates and shadow balls are offset.
  • Ctrl + Tab: Show realtime status of players in the race, including current map and checkpoint. [5]
  • Ctrl + `: Show shadow ball of yourself (after network latency). Useful for latency test.[6][1]
  • Ctrl + Shift + ↑: Reset camera. Useful when you accidentally set a nonstandard camera angle. Some rules force a player to forfeit the game if nonstandard camera angle is used.[7]

Tournament Status

  • Ctrl + [3 or 2 or 1]: Start countdown.
  • Ctrl + 0: Start the race. Resets the race timer for all players. Depending on settings of the server, the level may be restarted.
  • Ctrl + 4: Notify the players to ready up.
  • Ctrl + 5: Ask the players to confirm readiness.
  • Ctrl + D (press twice consecutively: Forfeit the current level (did-not-finish).

Available Servers

Considering the security of server, you should join corresponding Ballance community according to your multi-play requirements. Then, you can get an available server. Also, you can create a personal BMMO server and play with it. Its method will be introduced in the following chapter.
If you want to play with Chinese Ballance players, you should join Multi-play QQ Group and get server URL within it.
Or, there is a big latency when you are connecting to Chinese BMMO server, or you want to play Ballance with over world Ballance players, you can join Ballance Discord server and get server URL from #multiplay channel.

References

  1. 1.0 1.1 1.2 For some reason about reducing computing and network resources, server will not send player's position and status data when the server only have a single player. So the shadow ball also can not move following player. Because of this, the position and ball type data is not correct when the server only have 1 player.
  2. Before 3.1.5-beta5, due to the implementation of BMMO, Space is not supported in message content. You need to use other symbol to split words if you need. For example, you can type wait/a/minute or wait-a-minute instead of wait a minute.
  3. Bulletin text do not support line break. Please use a clear and short text for it. Additionally, bulletin will set to blank when all players disconnected from server.
  4. Teleportation only can move you to other player's position. It can not switch your sector automatically and also can not restore element statues.This command is frequently used with /mmo getmap
  5. Hold Ctrl then press Tab. The order matters.
  6. ` key is to the left of 1 on a standard QWERTY keyboard and can be used to type tilde symbol (~) when combined with Shift
  7. Please allow 1-2 seconds for the camera to readjust and do not move before it's done. You can do this while inside a transformer to avoid some time loss.