-
Notifications
You must be signed in to change notification settings - Fork 0
/
README.html
58 lines (51 loc) · 2.52 KB
/
README.html
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
46
47
48
49
50
51
52
53
54
55
56
57
58
<h1>OpenWorld</h1>
Open World is a New Internet, Spatial Server and 3D Browser
64 Bit Engine (both in memory and Coordinates)
Spatial 3D server
Spatial Universe Browser
1:1 scale planets
Crafting
Multiplayer
Sharing content
Chat
ECommerce
<h1>first run</h1>
Run The MassiveServer on a Windows Machine
Run OpenWorldMinimum to show basic login flow
Run OpenWorld to get a basic 3D browser, with crafting. Use this as a starting point for new browsers.
<h1>Loading Terrain</h1>
Using Bing-type tiles
Each tile has a biome map (generated by the generator project, which connects to an OpenStreetMap server)
Generates Height, texture, and data files.
Data file has details of roads, buildings, water, etc. Units: Lon/Lat
<h1>UserID</h1>
Each new user is identified by a GUID generated by the server on first login
The client should store the GUID for later logins.
A client can associate a GUID with an email address to retrieve their account and data
<h1>logging in</h1>
First get the Lobby file from BigFun.co.za/massive/lobby/
Returns a JSON file of all registered servers
The lobby Form is shown, user selects the desired server
Call in order, Each one has a respone
Globals.Network.ConnectToServerRequest
on Globals.Network.ConnectToServer
Globals.Network.ConnectToLobby (just a dummy request to register the user)
Globals.Network.ConnectToMassive (connect to actual universe)
Globals.Network.Login
On success, the user can now GETWORLD and gets a list of nearby objects.
Set the user's position with Globals.Network.AvatarMoveRequest
As the user moves around updated lists are returned by the server, allowing client app to spawn objects in scope
Destroying objects is at the discretion of the client
Use other functions like CreateObjectRequest to create objects and associate them with current user
<h1>Message Bus</h1>
All components communicate through the Message bus - MMessageBus, or Globals.Network for net comms
Call static methods to request actions.
e.g. MMessageBus.ChangeAvatarRequest(this, Globals.UserAccount.UserID, "DOG01") to change the current user's avatar
to the model loaded into template with TemplateID and name DOG01
The server will response with a Globals.Network.AvatarChange handler call
<h1>Network</h1>
Network runs on its own threads.
Use Massive2.Network to make network requests.
Server is source of truth, so all movement, spawn, chat, gets approved by server before broadcast.
MMessageBus will intercept some server messages relating to UI, and invoke them on the UI thread.
So use MMessageBus event handlers rather than network ones.