Difference between revisions of "Multiplayer"

From GiderosMobile
 
(7 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
'''Supported platforms:''' [[File:Platform android.png]][[File:Platform ios.png]][[File:Platform mac.png]][[File:Platform pc.png]][[File:Platform html5.png]][[File:Platform winrt.png]][[File:Platform win32.png]][[File:Platform linux.png]]<br/>
 
'''Supported platforms:''' [[File:Platform android.png]][[File:Platform ios.png]][[File:Platform mac.png]][[File:Platform pc.png]][[File:Platform html5.png]][[File:Platform winrt.png]][[File:Platform win32.png]][[File:Platform linux.png]]<br/>
  
=== Description ===
+
=== Multiplayer ===
 
There are three ways to implement multiplayer games:
 
There are three ways to implement multiplayer games:
 
* '''Server Mode''': Dedicated server with public IP
 
* '''Server Mode''': Dedicated server with public IP
* '''Host Mode''': One player is the host, all other players connect to them
+
* '''Host Mode''': One player is the host, all other players connect to him
 
* '''Shared Mode''': Cloud Room has StateAuthority
 
* '''Shared Mode''': Cloud Room has StateAuthority
  
''Server Mode'' and ''Shared Mode'' can be daunting and won't be covered here. Some multiplayer platforms SDK you can check:
+
''Server Mode'' and ''Shared Mode'' can be daunting and won't be covered here.
* https://noobhub.co.za/
 
* https://github.com/Overtorment/NoobHub
 
* https://www.smartfoxserver.com/
 
* https://github.com/EsotericSoftware/kryonet
 
  
And to get you started using Noobhub:
+
=== Host Mode ===
* https://forum.gideros.rocks/discussion/4293/noobhub-free-opensource-multiplayer-and-network-messaging-for-gideros-coronasdk/p1
+
Host Mode is the easiest way to get started with multiplayer games. In order to implement it in Gideros, we will use the '''Gideros Unite Framework''' written by Arturs Sosins (@'''ar2rsawseen''').
  
 +
Get started here: '''[[Gideros Unite Framework]]'''
  
Here we will cover the ''Host Mode'' using Gideros Unite Framework written by Arturs Sosins (@ar2rsawseen), which is the easiest way to get started with multiplayer.
+
=== LOSC ===
 +
Open Sound Control (OSC) for lua: https://github.com/davidgranstrom/losc
  
=== Gideros Unite Framework ===
+
OpenSoundControl (OSC) website: https://ccrma.stanford.edu/groups/osc/index.html
<youtube>https://www.youtube.com/watch?v=WBFLSz34I4I</youtube>
 
  
Gideros Unite framework provides a way to implement Multiplayer games. It uses LuaSocket to establish socket connections and even create server/client instances.
+
Get started here: '''[[Gideros LOSC]]'''
  
It provides the means of device discovery in Local Area Network, and allows to call methods of other devices through network.
+
=== Some Other Multiplayer Platforms SDK ===
 +
* https://noobhub.co.za/
 +
* https://github.com/Overtorment/NoobHub
 +
* https://www.smartfoxserver.com/
 +
* https://github.com/EsotericSoftware/kryonet
  
About protocols, it is possible to use tcp, udp or both (by binding some method to tcp, if reliability is needed, and others to udp for faster data processing).
+
To get you started using Noobhub with Gideros:
 
+
* https://forum.gideros.rocks/discussion/4293/noobhub-free-opensource-multiplayer-and-network-messaging-for-gideros-coronasdk/p1
==== Unite Package '''[[Media:Unite.zip|Unite.zip]]''' ====
 
==== Gideros application project '''[[Media:DrawTogetherV2.zip|DrawTogetherV2.zip]]''' ====
 
 
 
Some demo code:
 
<syntaxhighlight lang="lua">
 
-- 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()
 
</syntaxhighlight>
 
  
 
{{GIDEROS IMPORTANT LINKS}}
 
{{GIDEROS IMPORTANT LINKS}}

Latest revision as of 19:47, 8 December 2024

Supported platforms: Platform android.pngPlatform ios.pngPlatform mac.pngPlatform pc.pngPlatform html5.pngPlatform winrt.pngPlatform win32.pngPlatform linux.png

Multiplayer

There are three ways to implement multiplayer games:

  • Server Mode: Dedicated server with public IP
  • Host Mode: One player is the host, all other players connect to him
  • Shared Mode: Cloud Room has StateAuthority

Server Mode and Shared Mode can be daunting and won't be covered here.

Host Mode

Host Mode is the easiest way to get started with multiplayer games. In order to implement it in Gideros, we will use the Gideros Unite Framework written by Arturs Sosins (@ar2rsawseen).

Get started here: Gideros Unite Framework

LOSC

Open Sound Control (OSC) for lua: https://github.com/davidgranstrom/losc

OpenSoundControl (OSC) website: https://ccrma.stanford.edu/groups/osc/index.html

Get started here: Gideros LOSC

Some Other Multiplayer Platforms SDK

To get you started using Noobhub with Gideros: