Search Unity

Photon Bolt

Discussion in 'Assets and Asset Store' started by ThePhotons, Dec 16, 2015.

  1. ThePhotons

    ThePhotons

    Joined:
    Aug 30, 2012
    Posts:
    8
    Bolt-1509-Large.png
    Bolt is a new generation of networking middleware for the Unity3D game engine. It revolutionizes development of multiplayer games in Unity by exposing several complex features behind a simple to use visual interface. Bolt allows you to replicate both transform and mecanim animations automatically, but on top of that it also allows you to define your own state properties which too will be replicated automatically for you across the network.

    FEATURES
    Powerful Event System
    - Bolt has a built-in event system which automatically distributes the event to the correct receivers, highly configurable of course. Events can also be targeted at a specific game object or globally. Three delivery modes: Unreliable, Unreliable Synced and Reliable.

    Authoritative movement - Built-in support for input and player controller state synchronization allows you to easily implement custom authoritative movement that suits your game.

    In-Unity Hosting - Build one project and run it as server or client. Servers support LAN discovery and NAT punch through.

    Both dedicated and listen server
    - Bolt supports both the classic dedicated server and listen servers where the server is just another player.

    Prioritization and scoping - Bolt supports both scoping of entities (which entities should a player be aware of) and prioritization of scoped entities (of two entities A and B that are scoped, which one is the most important for a player).

    Hit-box recording - Bolt has built-in support for recording hit-boxes and rewinding and ray-casting against them, allowing you to implement complex techniques like lag compensation in first person shooters in just a few lines of code.

    Synchronized map loading - Bolt supports loading maps on the server and have all the clients load the same map, and then provide custom hooks telling the server when the client is ready and vice versa.

    Supports all major unity platforms - Bolt runs on Windows, OSX, iOS and Android. Support for current-gen consoles is upcoming.

    Does not require Unity Pro - Bolt does not require Unity Pro for any platform and will run without problems on the free iOS and Android version of Unity.

    SELECTED REFERENCES
    Please have a look at our Photon showcase section here. You can use the site's filter "Photon Types" and choose "Photon Bolt" to see games built with Bolt only.

    Highlights are so far The Forest, an indie hit game on Steam, and Zombie Vikings for PS4, Steam & soon on WiiU and Xbone.
    The_Forest_on_Steam.png UnicornPig_banner.png

    PURCHASE
    You can get Photon Bolt Free in the asset store:
    http://u3d.as/1hVL
    Bolt-1601-icon.png

    DOCUMENTATION
    Want more information on how Bolt works and what you can do with it? Check out our documentation pages over at http://doc.photonengine.com/en/bolt/current/setup/overview or our API documentation https://doc-api.photonengine.com/en/bolt/current.
     
    Last edited: Sep 18, 2018
  2. Recon03

    Recon03

    Joined:
    Aug 5, 2013
    Posts:
    845
    New forum post?? I like to see more updated tutorials for Bolt. I have owned it for over a year,and it has always been lacking... I use it at times... But I have asked for tuts for over a year, and I hardly see any. Yes there are some in the asset, but you guys should add more, and better ones in my opinion, I would like to see Bolt back at the top again and feel it can be. But people don't know Networking so they end up using UNet or Forge or even Pun, Vs Bolt. Just saying this is my opinion and from what I been hearing from others.
     
  3. tobiass

    tobiass

    Joined:
    Apr 7, 2009
    Posts:
    3,070
    Yes, a new post :) The other one is outdated and it would be hard for anyone to find relevant info.
    More tuts are always in high demand. We try our best to strike a balance between adding new stuff and getting that documented, too. The docs include an extensive Tutorial, which we update as often as we can.

    That said: What exactly do you want to know? What did you experiment with and failed to achieve?
     
    hopeful likes this.
  4. Recon03

    Recon03

    Joined:
    Aug 5, 2013
    Posts:
    845
    its not what I want to know, its what I hear from other users, asking for, and instead of asking they give up or they have asked an got no answer or what ever. But if you look up Bolt right now they are all way out of date before you guys owned it... thats my point... You do as you wish its your asset, but that is why alot of jumped ship from what I heard from old users... I like it personally... but I agree with them about the tuts... I can look up Forge, Unet and get a ton of tuts on you Tube. Bolt, not so much...

    Its your choice what you do with this information..

    PS: All of them are Unity 4 not 5... and very few.
     
    hopeful likes this.
  5. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    @Recon03 you should look again, they've all been updated and new docs have been added
     
    Yukichu and hopeful like this.
  6. Recon03

    Recon03

    Joined:
    Aug 5, 2013
    Posts:
    845

    I have looked when I made the post.... show me links on You tube ..that are updated.. I have had more than 10 people say this to me, they are NOT all liars.... I know Bolt and help them all the time they shouldn't have to need my help for simple things, thats your job...your asset... I don't mind helping, , like I said its your asset if you choice not to listen then thats your problem if you keep getting bad reviews ..

    again I only bring this up since I want to see Bolt on top again..., Its not.. As you can see people will not say much to you guys they will give a bad review or go buy Forge, or something else... Forge forums is loaded with ex Bolt users, complaining about the same stuff my friends, and people I have done business with have..

    So again take this information and do what you will with it.. Seems like your fighting it..


    4.6 bolt, is mainly on You tube... by one or two people...


    Some of your demo's are full of errors I have checked them myself, even though I don't need them for others, then fixed and sent to others that wanted...
     
  7. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
  8. tobiass

    tobiass

    Joined:
    Apr 7, 2009
    Posts:
    3,070
    I just submitted this update to the Asset Store:

    Beta 0.4.3.11
    Fixed: Zeus punchthough issue resolved
    Changed: Removed Pro dependency for async level loading
    Added: API for adding C# delegates as event callbacks
     
    John-G and Yukichu like this.
  9. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    Beta 0.4.3.12
    Fixed: Bolt Scenes errors due to Unity 5.3
    Fixed: UPNP Button
    Fixed: Control tokens
    Fixed: Help button doc links
    Added: Check to make sure you have installed for the current Bolt you are using
     
    tobiass and zyzyx like this.
  10. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    Beta 0.4.3.13
    Fixed: Bolt will no longer delete Steam integration files when installing Bolt
    Fixed: Entity Events will no longer be discarded when Bolt is not under load
    Fixed: Bolt log issue
    Fixed: Excessive acks for steaming bytes
    Fixed: State property triggers
    Changed: ShutDownImmediate now works so the behvaiour is consistent with a non-immediate shutdown
    Added: New Entity function: RemoveAllCallbacks
    Added: New API Docs http://doc-api.photonengine.com/en/bolt/current/index.html
     
    zyzyx, tobiass and hopeful like this.
  11. lastprogrammer

    lastprogrammer

    Joined:
    Apr 30, 2011
    Posts:
    166
    Hey, new to Bolt here.

    How do I delete a property in the Bolt Editor window? There doesn't appear to be a way to do that.

    How do I create a server? It seems I need to call : BoltNetwork.SetHostInfo, but this seems to only register on the zeus server.

    Thanks.
     
  12. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
  13. lastprogrammer

    lastprogrammer

    Joined:
    Apr 30, 2011
    Posts:
    166
    So I have a game where I want people to play together online. I will use the Zeus server to connect people together. I was under the impression that one of the players becomes the server and then registers to Zeus, then the other players would connect to that server via Zeus. How do I create the server? The only command I could find was 'BoltLauncher.StartServer()'. This command seems to work on my computer, but on my Android device, nothing happens.

    Here is some code that I am working on. This seems to be all the commands that I could glean from the online documentation.

    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3.  
    4. public class Joe_MasterServer_Zeus : MonoBehaviour {
    5.  
    6.  
    7.  
    8.     // Use this for initialization
    9.     void Start () {
    10.        
    11.     }
    12.    
    13.     // Update is called once per frame
    14.     void Update () {
    15.         //Debug.Log(BoltNetwork.isConnected);
    16.     }
    17.  
    18.     public static void ConnectToZeus(UdpKit.UdpEndPoint endPoint)
    19.     {
    20.         Bolt.Zeus.Connect(endPoint);
    21.     }
    22.  
    23.     public static void DisconnectFromZeus()
    24.     {
    25.         Bolt.Zeus.Disconnect();
    26.     }
    27.  
    28.     public static void RegisterSession(string serverName, Bolt.IProtocolToken token)
    29.     {
    30.         BoltNetwork.SetHostInfo(serverName, token);
    31.     }
    32.  
    33.     public static void UpdateServerSessionList()
    34.     {
    35.         Bolt.Zeus.RequestSessionList();
    36.     }
    37.  
    38.     public static void ConnectToSession(UdpKit.UdpSession session)
    39.     {
    40.         BoltNetwork.Connect(session);
    41.     }
    42.  
    43.     public static void BoltInstantiate(GameObject prefab, GameObject location)
    44.     {
    45.         BoltNetwork.Instantiate(prefab, location.transform.position, location.transform.rotation);
    46.     }
    47.  
    48.     public static void CreateSession()
    49.     {
    50.         //BoltNetwork.SetHostInfo("ServerName",)
    51.         BoltLauncher.StartServer();
    52.     }
    53. }
    54.  
    I would call these commands from other scripts during the game session.
     
  14. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    Fijit and John-G like this.
  15. lastprogrammer

    lastprogrammer

    Joined:
    Apr 30, 2011
    Posts:
    166
    Code (CSharp):
    1. using UnityEngine;
    2. using System.Collections;
    3. using UdpKit;
    4. using Bolt;
    5.  
    6. public class FholmMenu : Bolt.GlobalEventListener
    7. {
    8.     bool firstUpdate = false;
    9.     int count = 0;
    10.     Ping myPing;
    11.     string[] pingList = new string[20];
    12.     int[] pingResult = new int[20];
    13.     int listCount = 0;
    14.     enum State
    15.     {
    16.         SelectPeer,
    17.         ServerBrowser,
    18.         Empty
    19.     }
    20.     State state = State.SelectPeer;
    21.  
    22.     public void Awake()
    23.     {
    24.         BoltLauncher.StartClient();
    25.     }
    26.  
    27.  
    28.     public override void ZeusConnected(UdpEndPoint endpoint)
    29.     {
    30.         Bolt.Zeus.RequestSessionList();
    31.  
    32.     }
    33.  
    34.     public void Update()
    35.     {
    36.  
    37.         if (listCount < (pingList.Length))
    38.         {
    39.  
    40.             Debug.Log(listCount);
    41.  
    42.             if (myPing != null)
    43.             {
    44.                 pingResult[listCount] = myPing.time;
    45.  
    46.                 if (listCount < (pingList.Length - 1))
    47.                     listCount++;
    48.             }
    49.  
    50.             Debug.Log(pingList[0]);
    51.  
    52.             if (pingList[listCount] != null)
    53.                 if (myPing != null || listCount == 0)
    54.                     myPing = new Ping(pingList[listCount]);
    55.         }
    56.     }
    57.  
    58.     void SelectPeer()
    59.     {
    60.         if (GUILayout.Button("Start Server", GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)))
    61.         {
    62.             if (BoltNetwork.isClient == false)
    63.             {
    64.                 state = State.Empty;
    65.                 BoltLauncher.StartServer(UdpKit.UdpEndPoint.Parse("0.0.0.0:27000"));
    66.             }
    67.         }
    68.         if (GUILayout.Button("Start Client", GUILayout.ExpandWidth(true), GUILayout.ExpandHeight(true)))
    69.         {
    70.             BoltLauncher.StartClient();
    71.             state = State.ServerBrowser;
    72.         }
    73.         GUILayout.EndArea();
    74.         GUILayout.BeginArea(new Rect(10, (Screen.height / 2) + 10, Screen.width / 2, (Screen.height / 2) - 20), GUI.skin.box);
    75.         GUILayout.Label(string.Format("Sessions: {0}", BoltNetwork.SessionList.Count));
    76.         foreach (var kvp in BoltNetwork.SessionList)
    77.         {
    78.             GUILayout.Label(kvp.Value.HostName);
    79.         }
    80.     }
    81.     void ServerBrowser()
    82.     {
    83.  
    84.  
    85.         GUILayout.Label("Server Browser");
    86.         GUILayout.BeginVertical(GUI.skin.box);
    87.         int pingCount = 0;
    88.         foreach (var session in BoltNetwork.SessionList)
    89.         {
    90.  
    91.  
    92.             GUILayout.BeginHorizontal();
    93.             GUILayout.Label(session.Value.HostName + " " + (session.Value.ConnectionsCurrent + 1) + "/" + (session.Value.ConnectionsMax + 1) + " Ping: " + pingResult[pingCount]);
    94.  
    95.             Debug.Log(session.Value.LanEndPoint);
    96.             Debug.Log(session.Value.WanEndPoint);
    97.             ;
    98.             pingList[pingCount] = session.Value.WanEndPoint.Address.ToString();
    99.  
    100.             pingCount++;
    101.  
    102.  
    103.             if (GUILayout.Button("Join"))
    104.             {
    105.                 if (BoltNetwork.isClient)
    106.                 {
    107.                     BoltNetwork.Connect(session.Value);
    108.                     state = State.Empty;
    109.                 }
    110.  
    111.             }
    112.             GUILayout.EndHorizontal();
    113.         }
    114.         GUILayout.EndVertical();
    115.     }
    116.     void OnGUI()
    117.     {
    118.         GUILayout.BeginArea(new Rect(10, 10, Screen.width - 20, (Screen.height / 2) - 20));
    119.         switch (state)
    120.         {
    121.             case State.SelectPeer: SelectPeer(); break;
    122.             case State.ServerBrowser: ServerBrowser(); break;
    123.         }
    124.         GUILayout.EndArea();
    125.     }
    126.  
    127.     public void ShutdownBolt()
    128.     {
    129.         if (firstUpdate == false)
    130.         {
    131.             BoltLauncher.Shutdown();
    132.             firstUpdate = true;
    133.         }
    134.     }
    135.  
    136.     public override void SessionListUpdated(Map<System.Guid, UdpSession> sessionList)
    137.     {
    138.         BoltLog.Info("Session list updated.");
    139.         Invoke("ShutdownBolt", 1.0f);
    140.  
    141.     }
    142.  
    143.     public override void SessionConnectFailed(UdpSession session, IProtocolToken token)
    144.     {
    145.         BoltLog.Info("Failed to connect to session.");
    146.         state = State.SelectPeer;
    147.     }
    148.  
    149.     public override void ZeusConnectFailed(UdpEndPoint endpoint)
    150.     {
    151.         BoltLog.Info("Failed to connect to Zeus.");
    152.     }
    153.  
    154.     public override void ZeusDisconnected(UdpEndPoint endpoint)
    155.     {
    156.         BoltLog.Info("Disconnected from Zeus.");
    157.     }
    158.     public override void ZeusNatProbeResult(NatFeatures features)
    159.     {
    160.         BoltLog.Info("Receieved results of Zeus NAT Probe.");
    161.     }
    162.  
    163.  
    164.     public override void BoltStartDone()
    165.     {
    166.         if (BoltNetwork.isServer)
    167.         {
    168.             BoltNetwork.SetHostInfo("TestServer", null);
    169.             //BoltNetwork.SetDedicatedServerInfo("TestServer", null);
    170.             BoltNetwork.LoadScene("Level1");
    171.         }
    172.     }
    173. }
    Thanks, this was helpful. It seems like documentation for Bolt is scattered all over the place. I haven't tested this new code on my device yet so I'll be back if it doesn't work. The only difference with this new code and my own is that the new code calls 'BoltLauncher.StartClient()' first, then immediately disconnects a second later. I was calling in 'BoltLauncher.StartServer()' first, and it wasn't working on my android device.
     
  16. lastprogrammer

    lastprogrammer

    Joined:
    Apr 30, 2011
    Posts:
    166
    Ok, so Bolt isn't working on my device and I am certain it is the Android Manifest file. I don't have the right permissions to run networking. Does Anyone know what permissions I need to get Bolt to work?

    Thanks.
     
  17. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    Can you try

    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE">

    We'll be doing some testing to make sure its working on android, I asked a few people who uses Bolt in their android/iOS apps and they haven't had a problem. Is this only not working for Zeus specifically?
     
  18. lastprogrammer

    lastprogrammer

    Joined:
    Apr 30, 2011
    Posts:
    166
    Here is my Manifest:

    Code (CSharp):
    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.unity3d.player" android:installLocation="preferExternal" android:theme="@android:style/Theme.NoTitleBar" android:versionCode="1" android:versionName="1.0">
    3.   <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />
    4.   <application android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="true">
    5.     <activity android:name="com.unity3d.player.UnityPlayerNativeActivity" android:label="@string/app_name">
    6.       <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
    7.       <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" />
    8.       <intent-filter>
    9.         <action android:name="android.intent.action.MAIN" />
    10.         <category android:name="android.intent.category.LAUNCHER" />
    11.       </intent-filter>
    12.     </activity>
    13.   </application>
    14.   <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    15.   <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
    16.   <uses-permission android:name="android.permission.INTERNET" />
    17.   <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    18. </manifest>
    I simply call "BoltLauncher.StartClient()" In my code and nothing happens in game. Am I doing something wrong?

    Code (CSharp):
    1.     public static void CreateClientSession()
    2.     {
    3.         BoltLauncher.StartClient();
    4.     }
     
  19. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    Do you connect to a host after starting the client? Look at BoltInit.cs for an example
     
  20. lastprogrammer

    lastprogrammer

    Joined:
    Apr 30, 2011
    Posts:
    166
    No, I don't. It works on my computer just fine. But not on my android device. I am using an Nvidia Shield TV.

    Even if I call just BoltLauncher.StartServer(). Nothing happens.

    Code (CSharp):
    1.     public static void CreateServerSession()
    2.     {
    3.         BoltLauncher.StartServer();
    4.     }
    Thanks for your help.
     
  21. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    Unfortunately we don't have one of those to test on. Do you have a normal android device to test on as a control in our experiment?
     
  22. lastprogrammer

    lastprogrammer

    Joined:
    Apr 30, 2011
    Posts:
    166
    I just tested it on a Kindle Fire 2013 model. Bolt didn't work. All the permissions are correct. The manifest is right. It's just not working.

    Everything works fine on my computer, but not on my devices. I'm just not understanding what the problem is.

    Thanks.
     
  23. FlaXxy

    FlaXxy

    Joined:
    Sep 21, 2015
    Posts:
    2
    Hi all,

    I recently bought Bolt and wanted to make an Item/Inventory System with it.

    I know about Objects and Arrays in Bolt.
    This works fine with Items that have no additional Parameters (HealthpotXL always restores 50 HP hardcoded)
    but I don't know what to do with Items like own crafted Swords, that have random Damage values.

    Normally with singleplayer I would have a class Item with basic parameter and a few Interfaces (Consumable, Equippable, Damageable) and make children of Item (Sword implements Equippable, Damageable) and have a List of them as an Inventory, but since you can't have inheritance in Bolt Objects, I don't know how to implement that.

    Can someone tell me if and how I can do that with Bolt?

    FlaXxy
     
  24. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    @FlaXxy I recommend having id numbers that correspond to items (health pot xl, sword, etc) then having other values like quantity and random values in addition. You may also want to look into JSON, JSON.NET is a great asset for Unity.
     
  25. FlaXxy

    FlaXxy

    Joined:
    Sep 21, 2015
    Posts:
    2
    I have ids.
    At the moment I have an Object ItemData, that has ID, Quantity, Value but also every possible specific parameter like Armor, HealingAmount (of a pot), DamageValue(of a sword).
    I only think, that this isn't good for performance
     
  26. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    Beta 0.4.3.14
    Fixed: Entities instantiating at wrong position
    Fixed: Zeus not updating lobby count when clients connect (was only on disconnect)
    Fixed: Command correction interpolation for Vector3 and Quaternion, and exposed SnapMagnitude in the editor UI
    Added: Smoothing for floats
     
  27. ZoneOfTanks

    ZoneOfTanks

    Joined:
    Aug 10, 2014
    Posts:
    128
    Still beta? Pffff... :eek:
     
  28. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    Beta 0.4.3.15
    Fixed: Improvements to Bolt physics for lag compensation
    Fixed: Bolt will now import properly when upgrading or switching between debug and release mode
    Fixed: Will no longer lose Global Illumination on Bolt scene load
    Fixed: iOS improvements
     
    hopeful and John-G like this.
  29. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    Beta 0.4.3.16
    Added: New Samples (3rd person sample client and server auth, click to move server auth, rigidbody player server auth)
    Changed: XLM Serialization
    Changed: Miscellanious optimizations
    Fixed: Issue with correction interpolation for commands pooling and initial values compression
     
    hopeful, zyzyx and John-G like this.
  30. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    Beta 0.4.3.17
    Fixed: Event issue introduced in last release
    Fixed: Hitbox issue introduced in last release
    Fixed: Issue for Unity 5.4 on OSX
    Fixed: Render transform
    Fixed: Miscellaneous sample fixes
     
    chiapet1021 and hopeful like this.
  31. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    Beta 0.4.3.18
    Fixed: Issue with Bolt assets not saving
    Changed: Smoothing for quarternion result smoothing temporarily disabled
    Changed: Improvements for Bolt samples
     
  32. justtime

    justtime

    Joined:
    Oct 6, 2013
    Posts:
    424
    Does bolt have a masterserver ? Am i need to pay additional mone for every player (CCU) ?
     
  33. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    Yes, it includes master server. No, there is no CCU cost.
     
  34. justtime

    justtime

    Joined:
    Oct 6, 2013
    Posts:
    424
    How i can find and register in slack chat ?
     
  35. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
  36. Ziron999

    Ziron999

    Joined:
    Jan 22, 2014
    Posts:
    282
    please tell me someone is fixing zeus for us small timers.
    Zeus->Client no problems with NAT
    Server->Zeus no NAT allowed? :(
    Nearly everyone nowadays uses a router and has a NAT there must be a way for the server to get an update to make this possible i cannot bind my public IP to it due to this.

    This makes the entire reason i bought bolt useless.
     
  37. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    To resolve a DNS address use DotNetPlatform.ResolveHostAddresses
     
  38. Ziron999

    Ziron999

    Joined:
    Jan 22, 2014
    Posts:
    282
    how would you use that in compiled code? Zeus is a compiled server. How/where would you do this?
     
  39. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    Been a while since I looked in on Bolt. In the past it was expected to handle about 100 concurrent users. Today, how many concurrent users can Photon Bolt handle? With, without, Zeus?
     
  40. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    Hi, the amount of clients one host can handle is dependent on whether you are going the dedicated server approach, whether you go authoritative, and how much you optimize.
     
  41. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    Yes, that goes without saying. However, the answer to my question was oft stated in the original Bolt forum by the original Bolt designer, (as about 100 concurrent, max.), but that was before Bolt merged with Photon and all the ensuing changes. So, I restate my question: With the current release of Photon Bolt, how many concurrent players can I attain. If it helps, please do qualify your response with pertinent specifications upon which your answer is based and assume PC platform.
     
    Last edited: Jan 8, 2017
  42. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    You can attain around the same amount of concurrent clients connected to a host. With dedicated servers you can have multiple instances of servers running at the same time, and spread over those you can reach whatever amount you desire. Otherwise you will be constrained by the performance of the hosting player, which if you are authoritative will have to simulate logic of each player as well. By optimizing code well and doing things like scoping, priority, freezing, idling, etc, you can keep your maximum number of clients high even if there is a lot going on in the game.
     
  43. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    Thank you, for the clarification. My initial multi-player application should top out at 50 concurrent, in a classroom situation.

    Years ago I played around with Unity Park Suite. Their data base ran on Linux and scaled horizontally. In fact, if there were 3 servers and one went down, the other two would rebulid the third.

    Final question: Did I understand you that with multiple servers running multiple server instances I could achieve massive concurrent users? Would this be one massive world, or in my application, a massive number of games with 50 users?

    Thank you again for your time and attention.
     
  44. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    Yes, we have an SDK called "Swarm" for spinning up and down game instances on your servers on player demand.
     
  45. chiapet1021

    chiapet1021

    Joined:
    Jun 5, 2013
    Posts:
    605
    I don't think that's what @wood333 is talking about for the first part. He's referring to cell server tech, where multiple server instances can act as a single server, so a massive number of players can exist in the same world together. Going back to the Unity Park Suite reference, PikkoServer had this functionality.

    Wood333, unless I've missed something in the Bolt documentation, that support doesn't inherently exist. You might be able to get what you want by using the new SpatialOS that's in alpha, but I haven't used it myself.

    Edit: Spinning up multiple, discrete instances does still allow for more concurrent users, of course, if you are okay with them being disconnected from one another (and you might be for your application).
     
    Last edited: Jan 9, 2017
    wood333 likes this.
  46. wood333

    wood333

    Joined:
    May 9, 2015
    Posts:
    851
    Thanks for the clarification. I had figured that was the case, but you gave me what I needed, which is knowing for sure. I haven't followed BOLT since the developer's work on NAT punch through. I'm looking forward to learning how much progress has been made.
     
  47. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
    Bolt Beta 0.4.4.1 is now available
    Changed: Bolt internals for relay and matchmaking
    Fixed: Bolt installation will no longer delete console integrations
    Fixed: State.SetTransforms (transform,null) will no longer cause an error
    Added: Bolt Swarm SDK
     
    Yukichu and tobiass like this.
  48. Yukichu

    Yukichu

    Joined:
    Apr 2, 2013
    Posts:
    420
    Is there some reference/explanation as to what Bolt Swarm SDK is?
     
  49. Stanchion

    Stanchion

    Joined:
    Sep 30, 2014
    Posts:
    269
  50. RF008

    RF008

    Joined:
    Oct 28, 2016
    Posts:
    20
    can we host bolt on the photon servers ?
    and how is the process and how much does it cost.