aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/Network Implementation Notes.txt
blob: e482952cb5a357d894873e8c40707169bc538bd9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
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