first commit
This commit is contained in:
45
Minecraft.Client/Network Implementation Notes.txt
Normal file
45
Minecraft.Client/Network Implementation Notes.txt
Normal file
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user