# Hu-Go! Netplay manual

Zeograd mail:zeograd@zeograd.com

## Contents

- Introduction
- Principles
- Protocols
- Configuration
- Firewall issues

# Introduction

This document briefly describes how to play pc engine games with Hu-Go! using two or more machines.

# Principles

Hu-Go! supports playing games with some players being on remote machines, either on the lan or internet. It uses a specific protocol working on client-server principle. A server is started by one player on her machine and others players, as well as her, will start the usual Hu-Go! client and configure it to connect to the server instead of running locally.

For each frame, each client will send its local input data. The server will collect them and dispatch them to all clients. On reception of this digest data, gathering input from every player, Hu-Go! will act as is it was the local devices which produced it and proceed to the next frame.

The server is started either in command line or graphically, for a given protocol, awaitting for several «slots» to be filled. Those «slots» represent pc engine players which are embodied by some players on clients side.

On client side, you «export» some local players to the server. For example, you can use the locally configured player 2 and 4 for playing in network. This client will then be considered as using 2 «slots» and will embody 2 players, whatever the used local devices. Generally, you will export player 1, eventually also player 2. The server will reorganize players so that if everyone uses local device 1 (which is a common case), they will be actually assigned sequentially to global player 1, 2, 3, ...

There's no restrictions on games run on each client. You should use the very same rom on each client, but you're free to use US and jap versions of games. Future versions will help preventing starting incompatible versions on clients side.

# Protocols

To be more precise, Hu-Go! uses two slightly different protocols. They both uses UDP and can't be mixed. All clients and the server must be configured to use the same protocol.

- LAN protocol : This protocol suits local networks. It is reliable and latency-free but requires a low RTT between clients and server. In case of high RTT (for instance when trying over internet), the framerate is dropping to fit the latency.
- INTERNET protocol : This protocol suits client spread over internet. It is less reliable, but bear higher RTT. It induces latency between the time you press a button and the time it is seen by all (including yourself, since all clients should be synchronized). This latency should be the one between each client and the server.

# Configuration

The netplay options can be found under «options->General settings ...» in the «Netplay» tab.

The Netplay mode should be set to the desired protocol. Then you fill in the server hostname and port (which is by default 25679).

Finally, you «export» local devices to slots. You must first export slot 1, whatever the local device assigned to it. It you want to export another, use slot 2, etc... So, if you export 2 local devices, slots 3 et 5 should be «none». You can't export slot 1 and 3 for example. That will be enforced in future version of the gui, but for now, it's up to you to respect this.

Once done, you can start a game.

# Firewall issues

If the server or client are behind firewall and/or nat devices, you can get around to make the whole stuff work. The server only receives data in UDP on the listening port (by default 25679) and send data back starting from the very same port. Usually firewall prevent incoming streams and allowing incoming data to UDP 25679 should do the trick.

The client only send UDP traffic to the server port (still 25679 by default) and will get traffic back from this port, from the server machine. On stateful firewalls, this is generally automatically allowed.

Refer to your firewall provider documentation for exact instructions on how to allow those streams in and out.