Zukai
This project is currently only in development for Macs, until it is more polished. |
|
Zukai is the most recent attempt at multiplayer for Oni. Zukai is in an alpha-like stage of development for Mac OS X until it reaches v0.1, at which point it will be ported to Windows, and development will continue on both platforms. It currently comes in the form of an OS X bundle called Daodan.plugin and an Oni level plugin called level0_Zukai with supplemental resources.
Zukai is a Japanese word connected to the ancient art of puppetry and puppet theater (bunraku). Its usage in this project is based on the expression Ningyō Zukai ("Puppet Master") in Ghost in the Shell, though translations of the word zukai alone range from "messenger" to "operator" to "familiar spirit" to "trainer". The icon for the project is based on the kanji for another word for puppetry, ayatsuri (操り).
Download
See the official release forum thread for download links.
Installation
- Note: You must start with a vanilla Oni installation. Zukai does not yet support mods or the Anniversary Edition.
- Disable the scripting for the level you want to play in. A simple way to do this for all levels is to rename the IGMD folder to "~IGMD".
- Make sure that you have version 1.2 of the Oni game app (see forum thread for download link).
- Place Daodan.plugin in the Oni installation folder at the same level as the game app.
- Place the level0_Zukai.dat/raw/sep files in GameDataFolder.
- Add the line "bind m to mp_menu" to key_config.txt, or use whatever key is more convenient for you than 'm'. Create another binding for "mp_score" to be able to display the scoreboard during a match. Additional optional bindings are listed below.
Playing
Hosting tips
- If you want to be able to host games, and not just join other people's games, make sure that you have forwarded port 2680 (UDP) to your computer's LAN (private) IP address in your router's settings. See this port forwarding guide for help.
- Until there is metaserver support (i.e., a matchmaking lobby), you will need to arrange matches with other players using a third-party program like an instant messenger or an IRC client (our community IRC channel is #Oni at euIRC.net).
- Some hosts are plagued by the OS X dialog that says "Do you want the application 'Oni' to accept incoming network connections?" each time someone tries to join their game. To turn this off, you should add this Oni application to your Firewall exceptions (System Preferences > Security & Privacy > Firewall > Firewall Options... > '+' button). Sometimes this will not work, in which case you need to open Terminal and use this command (remembering to supply the correct path to your Oni application):
sudo codesign --force --deep --verbose --continue --file-list - --sign - /path/to/Oni.app/
- You will then have to enter your administrator password. If you see the message "[…]/Oni.app: replacing existing signature", then it was successful. If it does not work, try the command several more times; it often doesn't seem to work on the first try.
Useful websites and programs
- You might want to make use of What's My IP to get your Internet IP address (there are plenty of other websites that do this too).
- No-IP.com can be used to set up a domain for someone who wants to host frequently, allowing the easier exchange of host addresses with joiners than giving out the host's IP address.
- If the performance of an Internet game seems poor, you can check your general connection quality with Speedtest.net and Pingtest.net. Usually, the bandwidth measurement that Speedtest.net will give you is unimportant, as Zukai does not use much bandwidth. Pingtest.net is more useful because it gives you a jitter measurement, and gameplay is more sensitive to jitter than to high latency.
- Zukai measures the ping to other players and displays it when you press the mp_score button (see "Bindable actions" section), but if you want more rigorous measurement of the connection between yourself and another player, bring up Spotlight in OS X and start typing "Network Utility". When the Utility appears, open it and use the Ping tab to test the connection between you and them. The most important numbers in the final statistics, once pinging is done, are the packet loss, which should be 0-1%, and jitter ("stddev", the last number), which should be under 20%.
- To record video footage of a match, see Capturing game footage. The recommended method is using OBS and Soundflower.
Known bugs and limitations
At the moment, Zukai is still rough, but the following problem areas will be the main focus of future updates until they are all corrected.
- No proper matches or modes yet. All players can run around and attack each other, but there is no time limit or kill limit.
- No respawning. Until respawning is introduced, players will not die. The closest thing to a score is the total damage done, displayed with the mp_score button (see "Bindable actions" section), but this number is not synchronized between players yet, so each player will probably see a higher score for himself than for others.
- Weapons and some other things are not synchronized yet, and may cause gameplay to go out-of-sync (oos). You will have to start a new match to correct this.
- IPv6 is not supported yet, but will be soon.
- Gameplay is currently very vulnerable to packet loss when a new player is joining; sometimes the match will "hang" because of this. To reduce packet loss, use a wired connection to your router/modem, not wireless. Packet loss resilience will come in an update fairly soon.
- Sometimes the wrong map name (level name) is given on the scoreboard.
Bindable actions
In addition to the standard actions that you have always been able to bind using key_config.txt, here is a list of actions added by the Zukai plugin for use in multiplayer mode.
All players
Both hosts and clients can use these actions:
- mp_menu
- This brings up the Multiplayer Menu when you are in-game, allowing you to host, join, or exit a game.
- mp_score
- Holding this key down displays the scoreboard, along with match time and player ping.
- mp_chat
- Coming soon!
- mp_graph_toggle, mp_graph_cycle
- To turn on, and cycle through, graphs that display information about the state of the multiplayer game. The network graph shows the size of incoming and outgoing traffic, and the timing graph shows how much time the multiplayer code is taking to execute in each frame.
Hosts only
These actions may only be available during this early phase of Zukai's development. They allow the host to change network settings for all players during a match, in order to see how performance is affected. You probably will want to talk to me before using them, but here they are:
- latency_toggle, latency_up, latency_down
- To turn on and adjust simulated latency. This feature is intended for use in matches with negligible real latency, e.g., LAN/loopback games, to reproduce the feel of an Internet game. If used in an Internet game, this will add additional latency on top of whatever natural latency already exists.
- jitter_toggle, jitter_up, jitter_down
- Simulated jitter (variation in latency) is automatically turned on when simulated latency is turned on, but you can use these actions to turn it off (to get flat simulated latency) or to alter the amount of jitter.
- pkt_rate_up, pkt_rate_down
- You can send gameplay data more or less frequently using these keys. The rate is measured as a delay in ticks, so raising the rate leads to sending data less frequently.
- state_rate_up, state_rate_down
- State events are communications between the client and the host which determine a client's correct position. As above, higher numbers mean less frequent events.
- pos_tol_up, pos_tol_down
- Not currently used. The "position tolerance" is how many world units a client's position can differ between his avatar on the host and his avatar on his own machine before his position is corrected. Higher numbers will mean that games are permitted to go further out of sync. Lower numbers will cause more frequent adjustments in position for clients. A world unit is four inches, so a position tolerance of 3 means "one foot".
- sync_now
- This is for developer use and does not have any effect in the MP builds which I am distributing.
Settings
When Zukai first runs, it creates a blank zukai_settings.txt file in the same folder. You can change certain settings from their defaults by assigning values to them with this syntax:
lock_these_settings:yes
Here are the settings currently supported:
Setting name | Values | Default | Description |
---|---|---|---|
lock_these_settings | yes/no | no | No effect. Planned for use with an upcoming feature. |
send_log_after_match | yes/no | yes | You can turn off the automatic log upload that occurs after a match, but please don't do that unless it is causing issues. |
log_everything_for | ... | ... | This is for enabling extra logging by category. Only intended for use by the developer. |
log_all_cli_output | yes/no | no | If there is an issue with the automatic log upload, turning this on will dump messages from the upload process into the system log (Console.app). |