chapter 4: more than two

Post on 06-Jan-2016

78 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

TRANSCRIPT

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

top related