aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Network Implementation Notes.txt
diff options
context:
space:
mode:
authordaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
committerdaoge_cmd <3523206925@qq.com>2026-03-01 12:16:08 +0800
commitb691c43c44ff180d10e7d4a9afc83b98551ff586 (patch)
tree3e9849222cbc6ba49f2f1fc6e5fe7179632c7390 /Minecraft.Client/Network Implementation Notes.txt
parentdef8cb415354ac390b7e89052a50605285f1aca9 (diff)
Initial commit
Diffstat (limited to 'Minecraft.Client/Network Implementation Notes.txt')
-rw-r--r--Minecraft.Client/Network Implementation Notes.txt45
1 files changed, 45 insertions, 0 deletions
diff --git a/Minecraft.Client/Network Implementation Notes.txt b/Minecraft.Client/Network Implementation Notes.txt
new file mode 100644
index 00000000..e482952c
--- /dev/null
+++ b/Minecraft.Client/Network Implementation Notes.txt
@@ -0,0 +1,45 @@
+NETWORK CODE IMPLEMENTATION NOTES
+---------------------------------
+
+The networking classes are organised as follows:
+
+ Game \
+ ^ |
+ | |
+ +-----------------------------+-----------------------------+ |
+ | | |
+ v v |
+Game Network Manager <--------------------------------> Network Player Interface |- platform independent layers
+ ^ ^ |
+ | | |
+ v | |
+Platform Network Manager Interface | |
+ ^ | /
+ | |
+ v v \
+Platform Network Manager Implementation(1) <------> Network Player Implementation (3) |
+ ^ ^ |_ platform specific layers
+ | | |
+ v v |
+Platform specific network code(2) Platform specific player code (4) /
+
+
+In general the game should only communicate with the GameNetworkManager and NetworkPlayerInterface APIs, which provide a platform independent
+interface for networking functionality. The GameNetworkManager may in general have code which is aware of the game itself, but it shouldn't have
+any platform-specific networking code. It communicates with a platform specific implementation of a PlatformNetworkManagerInterface to achieve this.
+
+The platform specific layers shouldn't contain any general game code, as this is much better placed in the platform independent layers to avoid
+duplicating effort.
+
+Platform specific files for each platform for the numbered classes in the previous diagram are currently:
+
+
+ Xbox 360 Sony Other
+
+(1) PlatformNetworkManagerXbox PlatformNetworkManagerSony PlatformNetworkManagerStub
+(2) Provided by QNET SQRNetworkManager Qnet stub*
+(3) NetworkPlayerXbox NetworkPlayerSony NetworkPlayerXbox
+(4) Provided by QNET SQRNetworkPlayer Qnet stub*
+
+ *temporarily provided by extra64.h
+