aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Network Implementation Notes.txt
diff options
context:
space:
mode:
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
+