Upload
koko
View
79
Download
1
Tags:
Embed Size (px)
DESCRIPTION
Chapter 4: More Than Two. BOIDS. SIMPLE PEER TO PEER. PEER TO PEER WITH MASTER. Host E. Host E. Host E. Host E. Host D. Host D. Host D. Host D. Host A. Host A. Host A. Host A. Host C. Host C. Host C. Host C. Host B. Host B. Host B. Host B. code(Flock flock). - PowerPoint PPT Presentation
Citation preview
Networked GraphicsBuilding Networked Virtual Environments and Networked GamesChapter 4: More Than Two
BOIDS
Network RendererDatamodel
IBoids
Config BoidsSystem
BehaviorIProtocol
-_remoteFlocks : Collection-_localFlock : Flock-_numBoids : int
Datamodel
-_flockID : int-_color : Color3f-_flock : Collection
Flock
-_geometry : Shape3D-_position : Vector3f-_velocity : Vector3f
Boid
IBoids
-_port : int-_ip : string
FlockRemote
SIMPLE PEER TO PEER
-_remoteFlocks : Collection-_localFlock : Flock-_numBoids : int
Datamodel
-_flockID : int-_color : Color3f-_flock : Collection
Flock
-_geometry : Shape3D-_position : Vector3f-_velocity : Vector3f
Boid
IBoids
-_port : int-_ip : string
FlockRemote
FlockRemoteFlag
Network
+code(in flock : Flock) : string+decode(in str : string)+setDatamodel(in datamodel : Datamodel)+setRenderer(in renderer : Renderer)+setNetwork(in network : Network)
«interface»IProtocol
Datamodel
-_sendSocket : DatagramSocket-_receiveSocket : DatagramSocket
UDPNetwork
Protocol
ProtocolP2PSimple
Datamodel
Network
Renderer
+code(in flock : Flock) : string+decode(in str : string)+setDatamodel(in datamodel : Datamodel)+setRenderer(in renderer : Renderer)+setNetwork(in network : Network)
«interface»IProtocol
PEER TO PEER WITH MASTER
-_remoteFlocks : Collection-_localFlock : Flock-_numBoids : int
Datamodel
-_flockID : int-_color : Color3f-_flock : Collection
Flock
-_geometry : Shape3D-_position : Vector3f-_velocity : Vector3f
Boid
IBoids
-_port : int-_ip : string
FlockRemote
Inactive Active
code(Flock flock)
create Announce messagesend message to master host
code(Flock flock)
create State messagesend message to every participating host
Inactive/Active
decode(String str) and Announce message
extract flock from received stradd FlockRemoteFlag to the Datamodel add FlockRemoteFlag to the Renderer
decode(String str) and State message
extract flock identifier from received strretrieve FlockRemoteFlag from Datamodel update FlockRemote from data on str
Inactive/Active
decode(String str) and Announce message
extract flock from received stradd FlockRemoteFlag to the Datamodel add FlockRemoteFlag to the Renderercreate an Announce message for local flocksend the created Announce message to the remote hostfor each registered remote flock { send the received Announce to remote flock create Announce message for remote flock send created Announce message to sender of flock}
decode(String str) and State message
extract flock identifier from received strretrieve FlockRemoteFlag from Datamodel update FlockRemote from data on str
PEER TO PEER WITH RENDEZVOUS
Rendez vous
Server
Rendez vous
Server
Rendez vous
Server
Rendez vous
Server
Rendez vous
Server
Rendez vous
Server
-_remoteFlocks : Collection-_localFlock : Flock-_numBoids : int
Datamodel
-_flockID : int-_color : Color3f-_flock : Collection
Flock
-_geometry : Shape3D-_position : Vector3f-_velocity : Vector3f
Boid
IBoids
-_port : int-_ip : string
FlockRemote
Inactive Active
code(Flock flock)
create Announce messagesend message to server
code(Flock flock)
create State messagesend message to server
Inactive/Active
decode(String str) and Announce message
extract flock from received stradd FlockRemoteFlag to the Datamodel add FlockRemoteFlag to the Renderer
decode(String str) and State message
extract flock identifier from received strretrieve FlockRemoteFlag from Datamodel update FlockRemote from data on str
Inactive/Active
receive() and Announce message
extract flock from received stradd FlockRemote to the datamodelfor each registered remote flock { send the received Announce to remote flock create Announce message for remote flock send created Announce message to sender of flock}
CLIENT/SERVER
Server
Server Server
Server
Server
Server
-_remoteFlocks : Collection-_localFlock : Flock-_numBoids : int
Datamodel
-_flockID : int-_color : Color3f-_flock : Collection
Flock
-_geometry : Shape3D-_position : Vector3f-_velocity : Vector3f
Boid
IBoids
Network
+code(in flock : Flock) : string+decode(in str : string)+setDatamodel(in datamodel : Datamodel)+setRenderer(in renderer : Renderer)+setNetwork(in network : Network)
«interface»IProtocol
Datamodel
-_sendSocket : DatagramSocket-_receiveSocket : DatagramSocket
UDPNetwork
UDPNetworkClient
Inactive Active
code(Flock flock)
create Announce messagesend message to rendezvous server
code(Flock flock)
create State messagesend message to every participating host
Inactive/Active
decode(String str) and Announce message
extract flock from received stradd Flock to the Datamodel add Flock to the Renderer
decode(String str) and State message
extract flock identifier from received strretrieve Flock from Datamodel update Flock from data on str
Inactive/Active
decode(String str) and Announce message
extract flock from received stradd FlockRemote to the Datamodel for each registered remote flock { create stripped version of the received Announce send the stripped Announce to remote flock create Announce message for remote flock send created Announce message to sender of flock}
decode(String str) and State message
extract flock identifier from received strfor each registered remote flock that is not the sender { send the received State to remote flock}
MULTICAST
-_remoteFlocks : Collection-_localFlock : Flock-_numBoids : int
Datamodel
-_flockID : int-_color : Color3f-_flock : Collection
Flock
-_geometry : Shape3D-_position : Vector3f-_velocity : Vector3f
Boid
IBoids
Network
+code(in flock : Flock) : string+decode(in str : string)+setDatamodel(in datamodel : Datamodel)+setRenderer(in renderer : Renderer)+setNetwork(in network : Network)
«interface»IProtocol
Datamodel
-_sendSocket : DatagramSocket-_receiveSocket : MulticastSocket
UDPNetworkMulticast
InactiveActive
code(Flock flock)
create Announce messagesend message to multicast group
code(Flock flock)
create State messagesend message to multicast group
JoinedInactive
code(Flock flock)
join multicast group
Inactive/Active
decode(String str) and Announce message
extract flock from received stradd Flock to the Datamodel add Flock to the Renderer
decode(String str) and State message
extract flock identifier from received strretrieve Flock from Datamodel update Flock from data on str
SUMMARY