Matt Coburn před 5 roky
rodič
revize
9e65525c84
1 změnil soubory, kde provedl 26 přidání a 29 odebrání
  1. 26 29
      README.md

+ 26 - 29
README.md

@@ -12,13 +12,14 @@ _**Please consider a donation (see the Ko-Fi button above) if this project is us
 ## What's this?
 
 In short, this is an independent ENet native implementation with a modified protocol for C, C++, C#, and other languages.
-The original C library both this fork and upstreams' fork is based on is located [here](https://github.com/lsalzman/enet).
+The native C library code (although condensed) included in both this fork and upstream uses is located [here](https://github.com/lsalzman/enet).
 
-A slightly longer description is that this is a improved and refactored version of ENET-CSharp. A fork of a fork, if you want to call it that. This fork started since the upstream fork was originally archived, disabling the ability to report issues and submit pull requests.
-The upstream developer also made some questionable choices (including blacklisting/blocking myself and numerous others). As a result, this fork was made and allows developers to ask questions and submit pull requests to improve the implementation.
+### Why another fork?
+This fork started since *nxrighthere*'s repository was originally archived, disabling the ability to report issues and submit pull requests. He also blacklisted numerous developers over petty things, which is a story for another day.
 
-Please note that while upstream may have a *newer* version number compared to this fork, upstream Enet native commits will be cherry picked. So you'll get best of both worlds.
+Due to this, I forked his repository manually and this is the result. As a result, developers can ask questions about Enet, get answers and submit pull requests to improve the implementation.
 
+Please note that while upstream may have a *newer* version number compared to this fork, upstream Enet native commits will be cherry picked. So you'll get best of both worlds.
 ## Native Library Features
 
 - Lightweight and straightforward
@@ -32,7 +33,7 @@ Please note that while upstream may have a *newer* version number compared to th
 
 Do not use the upstream binaries with this fork. While it *may* work, it is best to err on the side of caution and play it safe.
 
-## Obtaining the native libraries
+## Obtaining Native Libraries
 
 ### Easy Mode
 
@@ -44,21 +45,21 @@ If you don't want to take the automatically built libraries in the releases sect
 
 However the following will be oriented for power users and command line heroes, and requires NET Core SDK 2.2 to work correctly.
 
-#### Compiling for Desktop
+#### Desktop Compiling
 
-- **Windows:** Make sure you have Visual Studio '17 or '19 installed with C++ Development Support, a recent Windows SDK and CMake. You may need to install [CMake from Kitware](https://cmake.org/download/) as it *sometimes* doesn't get automatically installed with Visual Studio. Version 3.16 or newer works fine.
+- **Windows:** Make sure you have Visual Studio 2019 (2017 should work too) installed with C++ Development Support, a recent Windows SDK and CMake. You may need to install [CMake from Kitware](https://cmake.org/download/) as it *sometimes* doesn't get automatically installed with Visual Studio. Version 3.16 or newer works fine.
 
 - **MacOS:** You'll need Xcode (available from the Mac App Store or the Apple Developer Portal). Make sure you also have Apple Xcode CLI Tools installed.
 
 - **Linux:** Make sure you have your repositories' `build-essential` and `cmake` package installed. On Debian and Ubuntu-based distros, you can do `sudo apt -y build-essential cmake` to install the required packages.
 
-#### Compiling for Mobile
+#### Mobile Compiling
 
 - **Android:** Ensure you have the Android NDK installed. Easiest way to do this to go into `Sources/Native` and run when `ndk-build`. A fresh batch of ENET binaries should then be spat out, which can be used in your project.
 
 - **Apple iOS:** Using **Terminal.app** on your MacOS device, navigate to the `Build-iOS` directory and run the command file found inside. You might need to make it executable, however. It will try to auto-pilot a build for you, just make sure you have CMake installed for MacOS and a recent Xcode installation. Library code signing will be disabled for the build.
 
-#### Compiling for Console
+#### Console Compiling
 
 - **Microsoft Xbox One:** Limited testing says the Windows library should work fine, unless the Windows-based Xbox OS uses a different SDK. However, I do not have access to an XB1 Developer Kit.
 
@@ -75,7 +76,7 @@ However the following will be oriented for power users and command line heroes,
 - Run `dotnet build`. 
 - **Protip:** You can append `-c Release` or `-c Debug` to your `dotnet build` command to build a release binary or a debug binary of ENET's C library. At the moment, the default build is a Debug build.
 
-You will see [Ignorance](https://github.com/SoftwareGuy/Ignorance) ASCII art fly by and the compile will start. CMake will fire up, configure itself after inspecting your build environment and hopefully spit out a binary blob inside a `Unity/Plugins` directory. 
+You will see [Ignorance](https://github.com/SoftwareGuy/Ignorance) ASCII art fly by and the compile will start. CMake will fire up, configure itself after inspecting your build environment and hopefully spit out a binary blob inside a `Unity/Plugins` directory. If it does not, read the error messages and file an issue ticket if you are not able to solve it yourself.
 
 On Windows, this freshly baked library will be a DLL, on Mac it will be a `.bundle` file and on Linux it will be a shared object (`.so`). This can be used with Unity or other applications like a C# NET Core application or C/C++ apps.
 
@@ -94,25 +95,25 @@ It is recommended to clean the repository work space before building.
 
 ## Usage
 
-
-- Initialize ENET first before doing anything by calling the `ENet.Library.Initialize();` function. It will return false on failure, return true on success. You can use this to gracefully quit your application should it fail to initialize, for example.
-- Once you are done, deinitialize the library using `ENet.Library.Deinitialize();` function.
-- Unity Engine usage is almost the same as in the .NET environment, except that the console functions must be replaced with functions provided by Unity. If the `Host.Service()` will be called in a game loop, then make sure that the timeout parameter set to 0 which means non-blocking. Also make sure Unity runs in the background by enabling the ***Run in Background*** player setting.
+- Please make sure you initialize ENet first before doing anything by calling the `ENet.Library.Initialize();` function. This returns **true** if successful, if not it will return **false**. You can use this to gracefully quit your application should it fail to initialize, for example.
+- Once you are done with Enet, deinitialize the library using `ENet.Library.Deinitialize();` function to ensure clean shutdown.
+- Using Enet-CSharp inside Unity Engine is almost the same as in the .NET environment, except that the console functions must be replaced with functions provided by Unity. If the `Host.Service()` will be called in a game loop, then make sure that the timeout parameter set to 0 which means non-blocking. Also make sure Unity runs in the background by enabling the ***Run in Background*** player setting.
 
 ### Code Examples/Quick Start
 
-A good idea is to check out the [common mistakes during integration](https://github.com/SoftwareGuy/ENet-CSharp/blob/master/COMMON-MISTAKES.md) documentation. 
-
-Looking for example code and gotta go fast? No problem, got you [covered here](https://github.com/SoftwareGuy/ENet-CSharp/blob/master/QUICKSTART-EXAMPLES.md).
+- A good idea is to check out the [common mistakes during integration](https://github.com/SoftwareGuy/ENet-CSharp/blob/master/COMMON-MISTAKES.md) documentation. 
+- There's also some [quickstart examples](https://github.com/SoftwareGuy/ENet-CSharp/blob/master/QUICKSTART-EXAMPLES.md) to make your Enet life easier.
 
 ## API Documentation
 
-See `DOCUMENTATION.md` [here](https://github.com/SoftwareGuy/ENet-CSharp/blob/master/DOCUMENTATION.md).
+- Read [DOCUMENTATION.md](https://github.com/SoftwareGuy/ENet-CSharp/blob/master/DOCUMENTATION.md) as it is quite detailed.
 
-## Enet and multi-threading
+## Multi-threaded Enet Implementation
 
 ### Strategy
-The best-known strategy is to use ENet in an independent I/O thread. This can be achieved by using Threads and enqueuing packets to be sent and received back and forth via ConcurrentQueues, for example. RingBuffers and Disruptors are also solid performance options too. Use whatever queue system you feel comfortable with, just make sure you empty the queues as fast as possible in your applications.
+The best-known strategy is to use ENet in an independent I/O thread. This can be achieved by using Threads as well as ConcurrentQueues, RingBuffers and Disruptors, for example. 
+
+You can use whatever system you are comfortable with, just make sure you keep Enet pumping as fast as possible in your application. Not pumping fast enough will cause Enet to become backlogged/congested, and this will hurt performance and network throughput.
 
 A real world example is Oiran Studio's [Ignorance](https://github.com/SoftwareGuy/Ignorance) transport which uses ConcurrentQueues for high performance transport I/O.
 
@@ -126,7 +127,7 @@ In general, ENet is not thread-safe, but some of its functions can be used safel
 - `Library.Time`: utilizes atomic primitives internally for managing local monotonic time.
 
 
-### Supporters
+## Supporters
 
 This fork is supported, used and mantained by [Oiran Studio](http://www.oiran.studio).
 
@@ -134,12 +135,8 @@ This fork is supported, used and mantained by [Oiran Studio](http://www.oiran.st
   <img src="http://www.oiran.studio/OiranFanFinal_Colour_Mini.png" alt="Oiran Studio Logo">
 </p>
 
-### Credits
+## Credits
 
-- Coburn
-- c6burns
-- Katori
-- Mirror Team & Discord Members
-- Vincenzo from Flying Squirrel Entertainment ("resident enet guy")
-- lsalzman for the original Enet native repository
-- nxrighthere for the upstream fork
+- Coburn, c6burns, Katori, Mirror development team and discord members, repository contributors and coffee donators
+- Vincenzo from Flying Squirrel Entertainment ("resident enet guy"), lsalzman for the original Enet native repository
+- nxrighthere for the upstream Enet-CSharp repository in which this fork started from