Difference between revisions of "Gideros Unite Framework"
From GiderosMobile
Line 1: | Line 1: | ||
− | + | __TOC__ | |
− | |||
=== Gideros Unite Framework === | === Gideros Unite Framework === | ||
The Gideros Unite framework allows a host (server) and clients to connect over a Local Area Network. Some demo code: | The Gideros Unite framework allows a host (server) and clients to connect over a Local Area Network. Some demo code: |
Latest revision as of 08:51, 26 August 2024
Gideros Unite Framework
The Gideros Unite framework allows a host (server) and clients to connect over a Local Area Network. Some demo code:
Get all connected devices
-- we can get all devices that are connected to our network
local devices = {}
serverlink:addEventListener("device", function(e)
print(e.data.id, e.data.ip, e.data.host)
devices[e.data.id] = {}
devices[e.data.id].ip = e.data.ip
devices[e.data.id].name = e.data.host
end)
serverlink:getDevices()
-- add some methods, that could be called by other clients or server through network
-- draw something
serverlink:addMethod("draw", self.drawLine, self)
-- end drawing
serverlink:addMethod("end", self.stopDrawing, self)
-- clear drawing
serverlink:addMethod("clear", self.reset, self)
-- then you can call this methods when needed
serverlink:callMethod("clear")
serverlink:callMethod("draw", someX, someY)
-- or call method of specific device using its id
serverlink:callMethodOf("clear", 112233)
serverlink:callMethodOf("draw", someX, someY, 112233)
-- and when game is finished
serverlink:close()
Server example code
function onAccept(e)
-- auto accept client with provided id
serverlink:accept(e.data.id)
end
-- create a server instance
serverlink = Server.new({username = 'myServer'})
-- add event to monitor when new client wants to join
serverlink:addEventListener('newClient', onAccept)
-- start broadcasting to discover devices
serverlink:startBroadcast()
-- and then before entering game logic
-- if we are ready to play stop broadcasting
serverlink:stopBroadcast()
-- and start only listening to clients
serverlink:startListening()
Client example code
function onJoin(e)
-- auto connect to server with provided id
serverlink:connect(e.data.id)
end
-- create client instance
serverlink = Client.new({username = 'IAmAClient'})
-- create event to monitor when new server starts broadcasting
serverlink:addEventListener('newServer', onJoin)
-- event to listen if server accepted our connection
serverlink:addEventListener('onAccepted', function()
print('server accepted our connection')
end)
Game logic example (the game logic is the same for server and clients)
-- we can get all devices that are connected to our network
local devices = {}
serverlink:addEventListener('device', function(e)
print(e.data.id, e.data.ip, e.data.host)
devices[e.data.id] = {}
devices[e.data.id].ip = e.data.ip
devices[e.data.id].name = e.data.host
end)
serverlink:getDevices()
-- add some methods, that could be called by other clients or server through network
-- draw something
serverlink:addMethod('draw', self.drawLine, self)
-- end drawing
serverlink:addMethod('end', self.stopDrawing, self)
-- clear drawing
serverlink:addMethod('clear', self.reset, self)
-- then you can call these methods when needed
serverlink:callMethod('clear')
serverlink:callMethod('draw', someX, someY)
-- or call method of specific device using its id
serverlink:callMethodOf('clear', 112233)
serverlink:callMethodOf('draw', someX, someY, 112233)
-- when game is finished
serverlink:close()
Using the Gideros Unite Framework
ar2rsawseen 2012/07/25 Gideros Mobile, updated 2023/12/13 (V2)
Gideros Unite framework provides a way to implement Multiplayer games:
- using LuaSocket to establish socket connections and create server/client instances
- device discovery over Local Area Network
- call methods on devices through the network
- protocols: tcp, udp or both. Binding some method to tcp if reliability is needed, and others to udp for faster data processing
You can download the Gideros Unite Framework here: Unite.zip
And a Gideros project: DrawTogetherV2.zip
Standard scenario
This is a standard scenario that can be created using Gideros Unite framework:
- Server starts broadcasting or skip to step 5, if all clients know server IP address
- Client's start listening to servers
- Client receives broadcast message from server, newServer event is initiated
- Client autoconnects to server or user manually (by pushing button) connects to specific server
- Server receives newClient event
- Server accepts client automatically or user manually (by pushing button) accepts specific client
- Client receives onAccept event
- Implement your game logic here, where both clients and server can call methods on all devices or on one specific device in the network
- When one of the clients becomes unreachable, all clients and server get onClientClose event
- When server becomes unreachable, all clients get onServerClose event
- When you are finished, close client or server using close method, which stops all timers, closes all connections and destroys instance
Framework
- 1 Unite Server Method list
- 2 Unite Client Method list
- 3 Unite Server Event list
- 4 Unite Client Event list