Code Monkey home page Code Monkey logo

h3mp's Introduction

This project is now archived

I have archived this project because I do not have the time to work on it, and by my metrics it is in a complete state of disrepair. I had begun to rewrite it, but due to shifts in interests I don't intend to work on this anytime soon.

Feel free to fork this project to continue it, but remember to not remove me from license and authoring info.

H3MP

version discord

A WIP multiplayer mod for Hot Dogs, Horseshoes, and Hand Grenades.

Features

  • Player
    • Movement
    • Held items
    • Avatar
      • Basic sosig body
      • Advanced sosig body
  • Configs
    • Player limit
    • Scene loading/reloading permissions
    • Tick rate
    • refer to mods\configs\ash.h3mp.cfg for additional config options
  • Miscellaneous
    • Discord Rich Presence
    • Scene loading
    • Items

Installation

  1. Have Discord installed and running. Discord Rich Presence is the only way to join or invite other players.
  2. Download the latest x64 release of BepInEx and extract it to your H3VR directory.
  3. Download the latest release of Deli and extract it to your H3VR directory.
  4. Download the latest release of H3MP and place it in your H3VR\mods directory.
  5. If you are hosting, you must have port 7777 UDP open and forwarded to your computer. The desired port number can also be changed in the config.
  6. Start the game
    • Join a party by clicking the "Join" button on a Discord invite. In the future, you can join off of invites and the game will start automatically.
    • Invite players to your party by clicking the plus button in a Discord text channel, and select "Invite ... to Play H3MP".

Uninstallation

To uninstall, you only need to delete the mods\H3MP.deli file.

Documentation

Installation and uninstallation have been listed here for convenience, but further documentation is included in the docs directory.

Other Information

h3mp's People

Contributors

maiq-the-dude avatar malicean avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

h3mp's Issues

Basic UI

  • Mod version info
    • Displays current mod version
    • Displays current mod changelog
  • Displays latest mod version
  • Leave lobby wrist menu button

Advanced Avatar

For a better user experience, players should have a sosig body; the same body that they can see themselves as in single player with the spectator camera.

  • Players should have synced motion controllers (#3).
    • The motion controllers should be the same type of controller that the player is using (requires API change).
  • Players should have a synced Sosig body. (requires API change)
    • Players should also see each other's outfit, as set and show by the spectator cam (requires API change).

Server Simulation

The current input (only movement at the moment) system uses the server as a relay between which clients transmit their own inputs and receive others. This has a the significant downside of different timestamps/lag for different players, and because of that, a universal interpolation delay (required for shooting guns in the future) cannot be achieved.

Input-based movement would use deltas sent from the client on each tick (unless the client runs behind or packets are dropped) and simulate the actions on the server. This would unify the timestamps of all entities and thus the real time experienced by the player, as well as remove a tick step of interpolation delay in the process.

Movement is only one of the many things that would benefit from a such a tick-synced message, and there are especially plenty of examples we will be encountered down the line.

To achieve this, a few things are required:

  1. A delta system to easily use message deltas.
  2. Snapshot delta messages to bundle information changes under one timestamp.
  3. Client input delta transmission
  4. Server input delta reception and world simulation
  5. Client world delta reception

Tick Number as Timestamp

As the current synchronized time system stands, it notates time in seconds using floating points. This causes many conversion and comparison problems because of the nature of floating points.

An integer tick offset could be used instead of a floating point clock offset to notate a timestamp. If the floating point representation is required, the current tick could easily be converted to a time using the fixed tick delta time.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.