/H3MP

A mod for Hotdogs, Horseshoes and Handgrenades that adds multiplayer to the game.

Primary LanguageC#GNU General Public License v3.0GPL-3.0

H3MP - Multiplayer mod for H3VR

As the title says, this is a mod that adds multiplayer to the virtual reality game Hotdogs, Horseshoes and Handgrenades.

MAIN BUILD - H3 Beta should be set to "None"

IMPORTANT

  • See incompatibilities section below for a list of known incompatible mods and modes.
  • Only report bugs if you don't use any of the mods from the incompatibilities list.
  • Report bugs in the H3VR homebrew discord server (Look it up on google) and always send full output logs.
  • If you get "PatchVerify" errors on start up it means either your game or H3MP is the wrong version.
  • Port forward or hosting solution must support both TCP and UDP
  • UPnP will not work if you are behind multiple NATs. That means if you computer is connected to the internet through multiple routers.

Manual Installation

  1. Download and install the latest (not pre-release) version of BepinEx
  2. Download the latest release of H3MP
  3. Put the H3MP folder from the zip file into the plugins folder (H3VR\BepInEx\plugins)

So you should end up with a H3VR\BepInEx\plugins\H3MP folder, containing H3MP.dll and other files.

Automatic Installation

Can be done through thunderstore using r2modman mod manager

Usage

All H3MP functions can be accessed through the wristmenu, in-game.

Hosting and joining can be done entirely from the in-game server list, accessible through H3MP's wristmenu section. The server list will let you host and join directly, as well as list your server publicly and join public servers. Upon hosting, you will have a check mark labeled "Forwarded". If left unchecked, UPnP will be used to open the entered port. Otherwise you will be expected to have already forwarded the port.

Direct connection, as could be done before without the server list, can still be done exactly the same way. To join a server directly, you will have to have set the IP and port of the server in your config file (see Config section below), then, in the wristmenu, press H3MP->Join. To host directly, you will have to open a port, set that port in your config file, and then, in the wristmenu, press H3MP->Host.

If you forgot to set these before going in-game and restarting the game is too much of a hassle, mainly for people with 200+ mods that I figured probably take a while to load, you can set your config, then go to H3MP->Options->Reload config in the wristmenu which will reload your configs, after which you can connect/host

Options

In the wristmenu, some options are available:

  • Reload config: Will reload the config file if you modified it since starting the game. Useful if you modified it and don't want to have to restart the game.

  • Item interpolate: This will toggle item interpolation. Item interpolation is the smoothing of item movement to prevent everything from looking "jagged". Turning it off will ensure that items are positionned/rotated exactly as you receive the data from another client. Due to latency, this will make item movement look extremely low FPS.

  • TNH Revive: Will revive you if you are in MP TNH. This is so you can rejoin an ongoing game without having to restart it. Also useful if wanting to use a TNH map similarly to a sandbox map but dying respawns you in the wrong place. This will respawn you at your spawn supply point and get rid of your dead and spectating status.

  • Current color: Lets you go through certain colors of player model. This color will be visible to other players. Available colors: White, Red, Green, Blue, Black, Desert, and Forest. Note that Desert and Forest are not camo they're just Beige and Dark green. Only available while connected!

  • Current IFF: Lets you change IFF. Note that friendly fire is currently always on. Only available while connected!

  • Color by IFF: Toggle that lets the host decide whether player colors should correspond to IFF. IFF 0 corresponds to White, 1 to Red, 2 to Green, and so on. Sequence is same as in Current color option. The color then loops, so IFF 7 will correspond to White. Only available to Host!

  • Nameplate mode: Lets host decide in which case the nameplate and health of a player should be visible. Available modes are: All, Friendly Only (Default), and None. All means all nameplates will always be visible to everyone, Friendly Only means nameplates will only be visible to player with same IFF, and None means no nameplates will be visible, no matter the IFF. Only available to Host!

  • Radar mode: Lets host decide which players should be visible on the TNH radar. Available options are: All (Default), Friendly Only, and None. All will show both friendly and enemy players, Friendly Only will show only friendly players (same IFF), and None will show no other player, regardless of IFF. Only available to Host!

  • Radar Color IFF: Lets host decide which colors players should have on the TNH radar. If true it will show players as Green or Red, depending on whether they are Friendly or Enemy, respectively. If false, it will instead show players with their corresponding colors. Only available to Host!

  • Max health: Lets host decide the max player health in their current scene/instance. Available options are: Unset (default), 1, 500, 1000, 2000, 3000, 5000, 7500, and 10000. Unset means that the maximum health will be what was set by vanilla. Only available to Host!

Config

The config refers to a file in the H3MP folder called Config.json which contains a few important settings.

  • IP: The IP of the server you will be joining
  • Port: The port of the server you will be joining or hosting from
  • MaxClientCount: The maximum number of clients that can connect to your server
  • Username: The username you will have on the server
  • ServerName: The name of your server if you host publicly
  • TickRate: How many times a second updates will be sent to other players

Hosting

Can now be done directly from the server list.

For direct connection, you can either use the server list's Join/Host buttons on the first page, or use direct connection as was required before:

To host a server on a local network, anyone who wants to connect to you will have to set their config's IP to your machine's local IP address, which can be found by running the "ipconfig" command in CMD.

To host a server for public access, anyone who wants to connect to you will have to set their config's IP to your machine's public IP address, which can be found by searching "what is my IP" on google.

For public access, you will need to port foward the port you have set in your config. Important: Port forward needs to be both TCP and UDP.

In both cases, both host and client will have to set their port to the portforwarded one.

The default port of 7861 can be used safely (Unless you already have something running on your machine that uses it), though most numbers between 0 and 65535 should work fine apart from very specific ones. If you want to use a different one, look it up online first to see if it is reserved for anything else. Some specific ones may also be blocked by your ISP.

To start the server, in the wristmenu, press H3MP->Host

Incompatibilities

  • Freemeat mode and entities
  • Meat fortress mode
  • Rotweiners mode
  • Anything not sandbox or TNH will most probably not work

Upcoming support

  • Escape from Meatov
  • Meat fortress mode
  • Rotweiners mode
  • Freemeat mode and entities