Skip to content

isabella232/HLAPI-Community-Edition

 
 

Repository files navigation

HLAPI Community Edition

Build status AppVeyor tests branch Discord Codecov

Unity is the best game engine in the world, which should make UNET the best multiplayer game development solution in the world, but it's not.

UNET consists of two parts:

  • The LLAPI is developed by @aabramychev and deserves more credit than it gets. It's nothing short of amazing. We all love your work Alex!
  • The HLAPI was developed by Sean Riley as an example to showcase the LLAPI. Sean Riley left Unity and everyone's hopes for HLAPI improvements remained mostly (not entirely) unanswered.

UNET's HLAPI was abandoned a long time ago when Sean Riley left unity.

UNET's HLAPI was made open source shortly after.

This project is a fork of HLAPI and picks up where HLAPI stopped. A lot of bugs have been fixed while maintaining compatibility. We have refactored to improve code quality and reduce complexity. We are also adding new features useful for developers.

Download:

Use at your own risk. In case of concerns, feel free to inspect the .DLL files with ILSpy!

Build:

To build this project, clone the repository, open Networking.sln it in visual studio 2017 and build all projects.

Installation:

Backup the original DLL files from your Unity installation folder and replace them with the HLAPI Community Edition DLL files:

Windows:

  1. Backup your Project! Be wise now and don't lose everything if something unexpected happens.
  2. replace C:\Program Files\Unity\Editor\Data\UnityExtensions\Unity\Networking content with the downloaded files.
  3. move the Unity.UNetWeaver.dll to C:\Program Files\Unity\Editor\Data\Managed
  4. Restart Unity for the UNetWeaver.dll to be reloaded properly. Rebuild all your clients/servers so they use the same DLLs.
  5. Rebuild your server/client.exe so that it uses the DLL as too.

Mac:

  1. Backup your Project! Be wise now and don't lose everything if something unexpected happens.
  2. replace Unity.app/Contents/UnityExtensions/Unity/Networking/ content with the downloaded files
  3. move the Unity.UNetWeaver.dll to Unity.app/Contents/Managed/
  4. Restart Unity for the UNetWeaver.dll to be reloaded properly. Rebuild all your clients/servers so they use the same DLLs.
  5. Rebuild your server/client.app so that it uses the DLL as too.

Note: right click Unity.app and select 'Show Package Contents' to see the subfolders.

Linux:

NOTE: These instructions assume you have installed your Unity instance in /home/user/Unity-2017.4.8. Please adapt this accordingly, because this is just an example path.

  1. Backup your Project! Be wise now and don't lose everything if something unexpected happens.
  2. Copy the Editor and Standalone from the HLAPI CE package that matches your build go into /home/user/Unity-2017.4.8/Editor/Data/UnityExtensions/Unity/Networking. If you do not have this directory path, STOP. Double check your installation path and try again, otherwise open a issue ticket.
  3. Copy the Unity.UNetWeaver.dll file into /home/user/Unity-2017.4.8/Editor/Data/Managed. Allow overwrite.
  4. (Re-)Start Unity to make sure the changes are applied. Be patient while Unity recompiles your network scripts for use with the latest version of HLAPI CE.
  5. Rebuild your server and client standalone executables to properly use the features and improvements in HLAPI CE.

Branches:

We have multiple yet sometimes conflicting goals. Thus we are developing HLAPI in several branches:

  • fixes: 2017.4 HLAPI + bug fixes. No unnecessary code changes to guarantee 100% compatibility with original HLAPI, for those who need it.
  • 2018.1: 2018.1 patch. Can be rebased to latest 'master' all the time.
  • improvements: the #1 goal of this branch is to make HLAPI more simple and easier to maintain. The original code is way too complicated and if we end up with 10.000 lines instead of 20.000 lines, then that would be huge. The #2 goal of this branch is to improve CCU and only add features that are completely obviously necessary (SyncVarToOwner etc.).
  • features: this branch is for new features that could be useful. We can go crazy with features here, as long as we all agree that a given feature is a good idea to add. We can discuss features in Discord.

If you submit pull requests, please submit them to the proper branch. For example, 99% of the features submitted to 'improvements' will most likely be rejected, because the goal is to make this branch more simple. Submit new features to 'features' branch instead. If you want to submit a bug fix that applies to everything, then submit it to 'fixes', and so on.

About

Community Edition of UNET's High Level Networking API (HLAPI)

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C# 100.0%