Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

[Released] Bolt, The new generation of networking solution for unity!

Discussion in 'Assets and Asset Store' started by fholm, May 30, 2014.

  1. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    John G: Good idea, I will see what I can whip up :)

    I also posted an example video that shows of what the new vehicle sample can do:

     
  2. CLW-Game

    CLW-Game

    Joined:
    Jul 3, 2012
    Posts:
    19
    Hey great job :) and a good new example.

    Just a quick feature idea: Ulink has the ability to pretend being in the www with pretending a ping and delay. Do you plan to add a feature like this? As local network tests are always smooth even if I would only send the actual position, and I hate transfering every small build to a server.

    Greetings
     
  3. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    CLW: Bolt already has features for both ping, delay and packet loss simulation. You can find them at the bottom of the inspector for config files. The car sample in the video actually runs with 150ms simulated ping and 2% packet loss (this is the standard i test with usually).
     
  4. CLW-Game

    CLW-Game

    Joined:
    Jul 3, 2012
    Posts:
    19
    Man your always faster then my requests.. keep on the good work. Yea 150ms should be far enough if the ping is higher there's no reason not to expect lag effects. I usually play games myself below 30ms.
     
  5. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    I just wanted to throw a quick notice in here that 0.2.0.5 will land later today it's just a small fix release without any major new features in it.

    Also those of you that have bought on the asset store: 0.2.0.3 is still the latest there, missing the new SetOrigin functionality and new Vechiles sample, if you want the new releases quicker email support@boltengine.com with your asset store receipt and we will put you on the distribution list for new releases and email you out a direct-download link instead.
     
  6. Skyfly

    Skyfly

    Joined:
    Jan 25, 2014
    Posts:
    110
    Thanks so much for the vehicle sample, I was looking for something like that for long.
     
  7. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    The new 0.2.0.5 version is out.

    Beta 0.2.0.5

    Fixed: Resolved an issue where the entity packer would sometimes throw an exception when you tried to teleport a character.
    Fixed: The BoltDebugStart and BoltDebugStartNonPro scripts now correctly use the port you configured in the map launcher.
    Fixed: The BoltDebugStart and BoltDebugStartNonPro scripts now correctly selects a proper configuration file.
    Fixed: Resolved an issue where if you were rotating an entity and the delta value per frame was small enough the rotation would not replicate properly.
    Fixed: BoltDebugStartNonPro will correctly handle if no map has been specified.
    Fixed: Entity scoping now correctly takes into account where an entity originated from.
    Fixed: When an entity is attached it will now be scoped right away for all connections, so that events can be sent to it directly after Attached() is done.
    Fixed: BoltDefaultConfig is no longer linked to the ServerObject/ClientObject prefabs in one of the sample projects.
    Fixed: Removed all dependencies on the sample projects.

    Feature: Added a new method called "AttachedLate" on the BoltEntitySerializer class, you can override this method in your own serializer. The method will be called after all Attached() methods have been called on both the serializer and any entity behaviour, and after scoping of the entity has taken place.
    Feature: Bolt will now display a warning in the Map Launcher if the "Run In Background" player setting is not enabled.
     
  8. GregMeach

    GregMeach

    Joined:
    Dec 5, 2012
    Posts:
    249
    @fholm,

    Just as another post; I purchased based on:
    50% You
    25% Reading info
    25% You
    ;-)

    I also own Tnet & MultiOnline. I don't use MultiOnline because it uses a Windows dll which of course doesn't exist on my Mac.

    Looking forward to the updates & lobby server :)
     
  9. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    Thank you for the kind words :) Hopefully we're going to be able to get LAN Discovery in for next update, I originally scheduled it for 0.2.0.5 (todays update), but it ended up being so many fixes in it that I did not want to merge in another feature on top without more testing.
     
  10. mgto

    mgto

    Joined:
    May 30, 2013
    Posts:
    22
    Hi, a quick question this time: when building the app. How do I prevent the debug bolt screen to show up but start with my first scene (which is scene #3 or #2 after BoltDebugNonProScene and BoltClearScene?

    And thx for the constant updates. Guess I wouldn't have bought a beta from someone else ;)

    Cheers!
     
  11. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    You should remove the scene by hand when doing a "real" build of the game, I plan on adding a button which does the scene setup for you, but right now it has to be done by hand!

    Thanks for the kind words :)
     
  12. mgto

    mgto

    Joined:
    May 30, 2013
    Posts:
    22
    so wait.. this means the correct setup for a normal build would be:
    first scene is my start up scene
    2nd is BoltClearScene
    and then all my other scenes follow?
     
  13. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    mgto: correct, well you can put the BoltClearScene wherever you want as long as its not the first one. I am working on something which inserts/removes the DebugNonProScene automatically for the free map launcher also (as it already does for the Pro Launcher).
     
  14. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    Bolt just got another amazing review on the asset store:

     
  15. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
  16. Ghosthowl

    Ghosthowl

    Joined:
    Feb 2, 2014
    Posts:
    228
    Hi fholm!

    This is great news. We currently use your Rewinder asset along with uLink for our game and it works BEAUTIFULLY. It is one of a few assets I have bought that I actually took the time out to review. It saved us a TON of time and completely destroyed our old basic lag compensation system we had in place. After reading through your thread I am sad to see it go.

    I just purchased using the discount primarily as many others have said almost 60% based on you 30% based on your replies in this thread and 10% on the actual product. LOL. I looked at some of the demos and was AMAZED. Let me tell you for our Mecanim animation syncing alone was a monumental task that uses pretty much 3 nasty classes to help keep things in sync and even that is not 100%, but good enough for the users for now.

    I am looking like Yukichu (*waves* - PS - I am Snow-Okami from the uLink forums - thanks a ton for all your help!) to switch completely over to bolt. If Yuki can do it, I can do it too! The one thing that hooked me was this... map system you seem to have. The fact you only need to press one button and it builds a client and launches the server as well and placing them on the screen in an orderly fashion is HUGE. The time I have spent compiling and using 2 different copies of unity in tandem, one for server one for client has taken quite a lot of time out. Also the compression settings, the fact that you seem to have more RPC control and a ton more options to choose from when settings things up.

    About how hard do you think it would be to make the transition over. Our project has gotten pretty big but we still aren't at the prototyping level yet. The main things that will be difficult it seems will be the movement code and figuring out how to work with the 3 prefabs (@Creator, @Owner @PROXY) in terms of instantiating things. But it seems you have things here covered. I will take a look and read through all the tutorials as well as all the API before taking the plunge. Maybe I will spend up until next Monday trying to port the project over and see where that leaves us.

    Again thanks so much for this. I was worried when you opened source a lot of your work that you were spending less time on Unity assets and more on whatever else you have got going on in life. So glad to see you back with such a HUGE release. I don't post a lot, mainly a lurker but I have learned so much from your many posts on this forum especially with networking. I went from 0 networking knowledge to having a very cool little multiplayer game working with head shots, rewinding, authoritative movement, inventory etc. Most of it thanks to you :) Will be back with more questions / feedback later.
     
  17. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    Ghosthowl: oh... wow, what am I to say in response to this? Thank you!

    The mecanim sync in Bolt is about as solid as you can get, it will even sync triggers properly across the network and have them line up with the other state.

    About the port from uLink: Bolt works very differently from uLink. Bolt is more in line with what most AAA action games are doing now a days. Bolt has the same concepts as uLink, but they are called: Owner, Controller and Proxy instead. It might be a bit of a challenge to port from uLink, but if you have any questions at all just contact me on Skype, IRC, support@boltengine.com or feedback.boltengine.com !
     
  18. Ghosthowl

    Ghosthowl

    Joined:
    Feb 2, 2014
    Posts:
    228
    Just went through the tutorial and wow I'm amazed at how easy and quick it was too sweet something up so simple yet oh so complex. I'm just about fully sold on this solution however the only thing I am worried about is events. I don't really know how I feel about them. They seem ingenious but I can't wrap my head around how I would rework all the if not a hundred or so RPC calls I would have to replace. I also don't see a clear way of incorporating a class filled with them easily when overriding the on event method. Hmmm I will have to test some things and read more of the api and study the examples in the afternoon.bed time for me now... got a little carried away with this tonight. Lol.

    Ohh and you're very welcome. Thanks for the quick and awesome reply and great product. Simply amazing.
     
  19. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    Ghosthowl. Again, thanks for the kind words.

    I'm not sure what you mean here?
     
  20. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,462
    Really seems interesting. Do you have a roadmap for this? I like where this appears to be going and would like to know what I can expect in the future.

    Basically I use Playmaker for everything and keep scripting to a bare minimum, ideally I'd like to throw some network sync script on an object and sync all or some of the variables... It looks like thats what is available already. Are you planning any playmaker actions?
     
  21. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    I posted a roadmap a bit earlier in this thread, but the general idea is that the following features will be done around august this year (so about 1 1/2 month):

    LAN Server Discovery (DONE, not released publicly)
    NAT Punch Through
    Linux Support (DONE)
    Windows Phone 8 Support
    PlayMaker Support (IN PROGRESS)

    Bolt does that yes, I plan to add fully dynamic PlayMaker integration to Bolt so that it adapts itself in the same way that Bolt already does when it recompiles. The plan is to have fully featured PlayMaker integration which does as much as possible from inside PlayMaker.

    Right now the PM support is in "R & D", as I am trying out several ideas for the integration and how to make it work best with playmaker.
     
  22. LaneFox

    LaneFox

    Joined:
    Jun 29, 2011
    Posts:
    7,462
    Sweet. Bought and will start working with it tonight.
     
  23. 3D Omelette Studio

    3D Omelette Studio

    Joined:
    Oct 1, 2013
    Posts:
    130
    I think what Ghosthowl mean is him and others including myself are used to rpc for sending and receiving messages across the network to trigger functions etc... and since your system uses events instead, i think this is what it may confuse him and myself,

    in my case, one can control the amount of bandwidth by sent thru the network using rpc, my questions is this the same using events? this is my concern that i wont be able to control the amount of bandwidth used in the game,
    to me sounds like an even is s continuous process that sends updates over a period of time?? is this correct , someting like player position updates per second? or am i confused?

    or maybe i am still not getting the hang of events concept yet.

    i guess you can elaborate a little bit on what exactly is an event and the difference between rpc and event and how it may help us control bandwidth consumption etc...

    thanks in advanced
     
  24. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    3D Omelette Studio: First, let me say sorry I didn't reply to this in time, did not get any "you have a new message" email for it in my inbox (maybe it has to do with the maintenance that was happening on the answers site).

    Events are used the exact same way as RPCs, something like: "FireWeapon", "ThrowGrenade", "OpenDoor", etc. The reason we choose to go with events over RPCs is two fold:

    1) You can have multiple behaviours on your game object listening to the same event, and they will all get called when the event happens, this means that say you have something like "FireWeapon" and you have both an effect script (particles+muzzle flash) and an audio script, you can but the "OnEvent" receiver in both of the scripts, so they stay separated and without any dependency on each other. This leads to cleaner code.

    2) Events allows for a cleaner implementation, as they are always statically typed. The current networking libraries in Unity use dynamic (reflection based) invoking and they call RPCs using string names and passing an object[] array with the parameters.

    Events let us do everything statically typed and still easily accessible from all classes that inherit from BoltEntityBehaviour.

    I'm not if I understand how you control bandwidth with RPCs? When you call an RPC it gets serialized and sent over the wire. Events work the exact same way.


    This is not correct, events are like RPCs a "one" time thing, you can send it (or call it, in the case of an RPC) multiple times of course - but each send/call is only going to happen once.
     
  25. privilegue

    privilegue

    Joined:
    Jan 19, 2013
    Posts:
    8
    Great work holm! Your tutorial page is great!

    I am not sure if this is the right place to ask, but here I go anyways!

    it's been a long time however since I have touched C (11+ years now) and been working since in PHP/Perl/jQ and MySQL etc.. and been mainly doing webdev work with the occasional java android stuff mixed in. As such I am looking for a tutor who would not mind mentoring me, dwelving deeper into multiplayer programming using C# and Unity, ideally using BOLT as the networking middleware.

    So this goes to all, if you are willing to help me / tutor me in this regard I would greatly appreciate this and pay for your hard work / mentorship obviously. I learn best by doing things myself and understanding the behind the scenes rather than given something ready that I then have to try and debug, without understanding the whys and hows.

    I am not even going to ask holm for help here (no offense buddy :) ) but I'd say he is pretty busy with taking development of bolt further. I did watch some tutorials on youtube etc but these guys in most cases just mumble into their beards without explaining anything properly.

    So if anyone is willing of writing / livetutoring me on certain subjects I'd greatly appreciate it and pay you for it.
     
  26. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    privilegue: If you hang out in #unity3d and #unity3d-chat on IRC (server: irc.freenode.net, you need a registered nickname), I can assist with most things when it comes to Bolt specifically and network programming in general, as the people who sit there know I go to great lengths to give correct and thorough answers on anything regarding those topics.

    On another note, anyone looking to pick up Bolt, it's 25% off for another hour or so, on this link: http://www.boltengine.com/Buy.aspx?CODE=LHU9SF42CFJ8W This will be the last sale we're doing in a while.
     
  27. privilegue

    privilegue

    Joined:
    Jan 19, 2013
    Posts:
    8
    Thank you, but I guess my questions will be a lot more basic than that and I really do not wish to waste your time.
     
  28. rosevelt

    rosevelt

    Joined:
    Oct 23, 2012
    Posts:
    47
    Hey,

    Should Projectiles be treated as standard BoltEntity?
    My game can have 50-100 projectiles at a time.

    Can you say (based no experimenting in optimal conditions) how many BoltEntities, Raycasts[Bolt] your system
    should handle properly in a up to 4 players server?

    Thanks
     
  29. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    Generally I would say no, find some way to approximate the projectiles on the clients just for "visual" appearance, and only have the real projectile with collisions on the peer which decides on damage dealt.

    This amount is technically fine, but you are going to use a *TON* of bandwidth just for the projectiles, again I would recommend against this, but it *will* work in Bolt.

    Bolt is configured by default for ~256 entities at the same time (this can be changed easily tho, if you have the requirement for more). If you look in the prioritization example you will see how bolt replicates the transform of 128 spheres at the same time.
     
  30. Ghosthowl

    Ghosthowl

    Joined:
    Feb 2, 2014
    Posts:
    228
    Thank you 3D Omelette Studio, this is exactly what I meant.

    1) This is interesting. Currently I have an RPC that sends to the client from the server that triggers my own event system on the client that then launches all the methods that are to be affected by the RPC. So a "FireWeapon" RPC would make the method "ParticleEffect" & "Muzzle Flash" launch even if they are in separate classes (as long as they are listening to the event :)) Seems like this could be done away with if I chose to using your method.

    2) Ahhhh wow, I hate getting those reflect errors when I have screwed something up that is called from an RPC. This seems wonderful.

    So how would I go about tackling something like this. I have an inventory class that is about 1500 lines of authoritative checks that combine sent & received RPCs from the client that ultimately decides if the client is sending true or false moves when editing their own inventory. This is all handled in one class. Would I have to make a folder and make every one of these RPCs into events in which each event would contain all the original parameters as properties? So as in below I have 6 parameters (minus the message info) would I then need 6 properties?

    Here is an example RPC I have -
    Code (csharp):
    1.  
    2. [RPC]
    3.   void PDragStart(int source, string type, int itemID, int itemAmount, int sourceSlot, int splitAmount, uLink.NetworkMessageInfo info)
    4.  
    But how would I do this with the:
    Code (csharp):
    1.  
    2. public override void OnEvent (ICarPlayerEnterCar evnt, BoltConnection cn)
    3.  
    If I can only override as it seems one event, how can I have a class with multiple events? Would I have to make a different class for each of these RPCs I have in the Inventory class?

    Also the uLink.NetworkMessageInfo gives me crucial info that I use to figure out who is sending the data and how to access the player in a singleton player database. I use this to access his/her inventory and do the appropriate checks. Thanks!

    I think what 3D Omelette Studio meant here is how to go about having a way of having complete control over bandwidth with certain events. With RPCs for example my mecanim animation script uses a function like this:
    Code (csharp):
    1.  
    2. InvokeRepeating("ServerUpdater", 0, 1.0f / serverMoveSendRate);
    3. private void ServerUpdater()
    4. {
    5.         //Do something here and send the result as 'result'
    6.         networkView.UnreliableRPC("ServerUpdaterRead", uLink.RPCMode.Server, result);
    7. }
    8.  
    In this case I specify my own send rate at which I can control to send this RPC to the server at a set interval which can give better control of any sort of customized methods.

    Sorry to pester you with such silly questions. It is just hard to wrap my head around this when all your life you have been walking a certain way and someone introduces you to a new more healthy way of doing it.
     
  31. charmandermon

    charmandermon

    Joined:
    Dec 4, 2011
    Posts:
    352
    Hi there, I'm trying to figure out some core fundamentals of Bolt. I am building a game that has a backend similar to xbox live + halo.

    What I need is a master server that exists for authenticating users maintaining chat, parties of users, friends lists, then it also controls ranked matchmaking. When a game is started the master server hands off host control to one of the players of the game and then it becomes a peer to peer game until the game is done then they relink back up to the server reporting to the database and also preparing for the next match.

    My goal is scalability without having to spend hundreds of thousands on servers.

    Is a p2p + master server setup possible with this engine? Currently I am using Tnet and it is pretty great for this kind of set up but bolt seems to have some pretty awesome extra features that I wish to experiment with since I am building an FPS.


    Thanks in advanced!
     
  32. dceevp

    dceevp

    Joined:
    Mar 4, 2013
    Posts:
    19
    Hi!.
    This networking solution looks great.
    Does the server run on Unity or console?
    Is this application client-server or p2p?
     
  33. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,314
    are you planning to add some back end stuff? even basic like a lobby server with an option to register on it when we host, can we have an estimation in terms of months ?
     
  34. jaybennett

    jaybennett

    Joined:
    Jul 10, 2012
    Posts:
    165
    Hi fholm,

    This engine looks very promising :) I think I will be purchasing and trying it out over the weekend.

    I'm just wondering if you have any stress testing performance numbers for a dedicated server? Like perhaps a cloud hosted virtual instance with a given RAM and # CPUs?

    You mention 2-128 players and I'm wondering if this has been verified and what kind of hardware would be required for 128 players.
     
  35. LightSky

    LightSky

    Joined:
    Aug 12, 2012
    Posts:
    45
    Hello fholm,

    I am coming from TNet and I really like the Unity integration feature of Bolt and am tempted to buy it and try it out, but I have a few questions.

    Doesn't TNet have this feature? If the host leaves, instead of ending the game you can just assign another player as host and pass all the needed info to. Not sure if I am confusing this with something else, but can Bolt do this as well?

    What specific features does Bolt have that TNet does not?

    Do you have documentation for values of the Bolt Classes? What I mean is for a Listen Server Class can we look online anywhere for descriptions of specific methods or values?

    Can the Listen server be persistent once all players have left?

    How is the connection process handled at the moment? Player A hosts game, Player B (and more) connects to Player A and then you start the game when ready? What would the lobby/room system add or change to this?


    Thanks!
     
  36. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,314
    photon support this without need to code anything. tnet support it too with associated callback
     
  37. charmandermon

    charmandermon

    Joined:
    Dec 4, 2011
    Posts:
    352
    Another quick question why is the package over 100mb...thats not good. especially for iOS. When do you plan to prune the core package down to the bare minimals?
     
  38. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    That's a lot of posts over night, hopefully I can address all of them properly.

    In reply to ghosthowl:

    Yes this is correct, when you use RPCs in most solutions atm you have to connect several scripts which depend on an RPC together manually, as long as a behaviour inherits from BoltEntityBehaviour it has access to subscribe to all events, and you can subscribe to the same event in several different scripts. Bolt also supports global events, which are not tied to a specific entity or object.

    Yeah, getting reflection errors, etc. is annoying, if you change an event in bolt it will give you static compiler errors if it doesn't exists or the parameter have changed or gone away.

    So, you would replace each RPC with an event instead and it would have the same parameters as the RPC call, to subscribe to the event Bolt will create several different
    OnEvent methods with different event types for the first parameters. This happens in the background when Bolt does its compile pass, and it will show up in your editor
    as methods you can override from the base class (BoltEventBehaviour). You can implement as many OnEvent overrides as you want in each class.

    I am actually not sure what data is in ulinks messageinfo struct (I looked on their site, could not find any API docs), bolt passes in the connection that is the source/sender of the event so you can check who's sending it that way, if there is
    any more data you need in there I can add that in and wrap it up in a struct also, but most things which would require knowing things like networkTime, etc. are handled by bolt internally so you would not need to synchronize the RPCs with your movement
    code for example by hand, that will be done automatically for you if you pick the correct event mode (Unreliable Synced).

    Ah, now I understand! Okey so you can do this exact thing with events of course, you would just replace the networkView.UnreliableRPC call with raising an event. However, you will find that
    doing this in Bolt for things like state updates, animaton updates, etc. is not required as Bolt will handle all of that for you, automatically - and it will be a lot more performant and use less
    bandwidth then any rpc/event system.

    Absolutely no problem if I don't want to answer questions I should probably not release things to the public! And it's funny you mention this because i had serious qualms about going with events over RPCs considering how used everyone are to RPCs, but to me the benefits are worth it.

    In reply to charmandermon:

    Yes it is possible, right now there is no master server available, but it's comming at the same time as the NAT punching (as the NAT punching relies on the master server). I expect this to be out by early august. The master server will let you find games
    that other players are hosting and then join them by going through their NAT and connecting the client to the server.


    In reply to dceevp:

    The server runs inside Unity, but it can run in both normal (rendering mode) and batch mode (no rendering). The server works on Windows, OS X and Linux in all modes.


    In reply to Damien Delmarle:

    This is comming as the same time as the NAT punching, which will be out latest by early august.


    In reply to jaybennet:

    The truth is that the limitation in player count of about ~128 has to do with Unity and not with Bolt. Since unity is single threaded and all C# code touching the
    game has to run in the main thread there's a pretty hard upper cap on how many players you can do per server when using Unity. We found in the testing done during the development
    of Bolt that around ~100-128 players things will start crumbling in Unity when it comes to performance, and that is why we targeted Bolt at max 128 players (uLink has
    a similar limit I think).

    So, it is not the networking engine that will limit you, it's Unity. We are going to try to do a public stress test of our internal test game in maybe a month or a little
    bit more.


    Again, this is a unity limitation - yes you will need proper bandwidth, but Bolt will not use more then 1-2ms per frame even on the server.

    In reply to LightSky:

    I honestly don't know, since TNet uses TCP for so many things I have not bothered to look into it closer. We are looking at building host migration, but we want it to work for all cases: local-lan play, peer-to-peer connection over the internet
    and also for our upcoming cloud service - so it's going to take a while to get it done and proper under all different connectivity options.

    The big thing in Bolt is that it will let you synchronize transform, state (that you make yourself) and mecanim animations automatically, without writing a single line of code. It also has built in support for lag compensation by recording hit-boxes on the server, which is very
    usefull for fast paced FPS or TPS games. Bolt will also work on iOS Free and Android Free versions of Unity. Bolt can synchronize scene loading (called map loading in Bolt) over the network so you can change maps easily. Bolt has many options for buil in compressions of data, it also
    has a built in de-jitter algorithm which is configurable. It has state of the art latency/loss simulation for local testing. It has built in support for authoritative movement that you can build your own character motor on top of by using SimulateController + ExecuteCommand.

    I probably forgot a few things, this is just from the top of my head. In general Bolt will let you do many complex networking tasks without writing a single line of networking code.

    Here: http://www.boltengine.com/Api.aspx
    Tutorial to Bolt here: http://www.boltengine.com/Tutorial.aspx

    Well, a listen server is a server where one of the players is the server, so if he closes his game then it will go away. You can probably implement some sort of persistance on top using local storage on that players computer, but it's nothing Bolt
    does.


    Yes, that is how the connection process is handled at the moment, you can also host dedicated servers yourself also and have people connect to that. The lobby/master server system will let you more easily connect players together, as it will facilitate the connection between them,
    so NAT punching, etc. for you.


    Edit: I'm sorry the formatting of the text got screwed up in a few places, typed this out in Notepad so i could save it as it was so long ;p
     
  39. Ghosthowl

    Ghosthowl

    Joined:
    Feb 2, 2014
    Posts:
    228
    The samples that get you up and running (4 included) take up about ~67mb and the source is another ~9mb so the core package files in essence only take up (~86mb - 67mb - 9mb) ~9.6 mb. the 86 comes from the bolt core folder. The rest of the stuff included is addons such as the tutorial files, mobile free support and gizmos, which you can choose to install of course.

    So in reality you would need less than 10mb just about to get the system up and running :D
     
  40. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    The core DLLs you need are only a few kilobytes, like ~200kb or so. The other stuff is just samples, tutorial assets, etc.
     
  41. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    I will look into how Photon and TNet does this, i suspect that we might be talking about two slight variations of the same thing here.
     
  42. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,314
    +1 would be a good idea to have example using large assets in other demo package that can be downloaded from assets store like "Angry Bot Bolt demo", same as photon deal with demos
     
  43. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    Good idea, the people that have purchased through us (www.boltengine.com) have access to this already, I am setting up a little form where those of you that have purchased through the asset store can fill in your email and invoice #, and you will be given the same type of link which gives you direct and instant downloads.
     
  44. Tiny-Tree

    Tiny-Tree

    Joined:
    Dec 26, 2012
    Posts:
    1,314
    or you can just delet the dll from this demo, user should first import BOLT, then download the demo
     
  45. LightSky

    LightSky

    Joined:
    Aug 12, 2012
    Posts:
    45
    Am I correct to assume that if the player hosting the Game/Listen Server leaves the game then all of the players connecting to that game would then all automatically be disconnected?
    The other Network solutions simply allow another player in the game to become the host and resume the game with the other players.
    Is this how Bolt works? If not, will this be added as a feature? It is a pretty standard networking feature to have. :)
     
  46. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    So, TNet and Photon get away with this by using a central proxy server for all communication (there is no direct socket connections between each player). we are launching a cloud service (similar to Photon Cloud) which will support this feature during the fall.

    It was a conscious decision to not implement this directly into Bolt, as it would have put a requirement on a proxy server or cloud service of particular kind, and since we are targeting Bolt to be able to run on all possible connection scenarios: local LAN/WIfi, Peer-to-Peer, Dedicated Server, Cloud/Proxied and even Bluetooth, in the future. Tying host-migration into the core of Bolt would have limited this severely.

    Also, I am going to look into how this is done in TNet/Photon exactly so that we can get parity with their features.
     
  47. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    5,572
    Hi, I just started using Photon a couple days ago and am already getting frustrated. I'm totally new to multiplayer stuff and it sounds like this is the product I should have bought. A couple questions.

    1) I hope you will be adding XBox compatibility (if it doesn't already have it). Any idea when that might be? Our other platform will probably be Steam, this works there right?
    2) I'm wondering how we would go about updating enemy hit points across the other connected clients. It's just a variable in another script on the enemy. Is that something we would script or is there a way to do it without writing code?
    3) I take it there's an easy way to specify the max number of players in a room?
    4) How long do you think until this plugin is out of beta?

    Thank you!
     
  48. fholm

    fholm

    Joined:
    Aug 20, 2011
    Posts:
    2,052
    I have networking code for both Xbox 360 and Xbox one, but I don't have a devkit for either so I can't test that it works 100%. If anyone can assist me with this somewhere around sweden (I am willing to travel far inside sweden, if required).


    There is no need to write any code for this, you will just define a "health" state variable in a "Bolt State Asset", and then you can set it from code, statically typed - it will replicate automatically over the network. Check out the tutorial, and specifically this section: http://www.boltengine.com/Tutorial.aspx#Custom_state_replication

    That demonstrates how to sync a name of the player over the network, but the process is identical for any other type of variable it's just that you'd select an int or byte instead of string.

    You can pass in a config object which lets you set the max amount of connections.

    Final release is expected around ~mid august, with a release candidate around ~late july (when we have all features on the roadmap implemented)
     
  49. jerotas

    jerotas

    Joined:
    Sep 4, 2011
    Posts:
    5,572
    Sounds awesome! We have a couple XBox 1 dev kits, but we're in the US, so I don't think we can help out. Although if you have a game you're working on, we may be able to help you get X-Box approved (and get a loaner dev kit). Email me if interested / applicable.
     
  50. Ghosthowl

    Ghosthowl

    Joined:
    Feb 2, 2014
    Posts:
    228
    Thank you for those detailed responses. It clears things up a lot better. Looking at your system seems a lot more sane, the only thing is massive undertaking of taking on a different framework and having to rework everything! But of course that is to be expected when doing something like this.

    Okay so two more silly questions:

    1) I for the life of me cannot figure out how to build a standalone normally for the client and the server separately? I normally use the start via the map system but I want to try a client on a different system than the server etc. Using the one that was compiled by the map yields a scene where nothing in code takes place (at least with the examples or the tutorial I followed on the site)

    2) I am getting an issue with the tutorial that I followed yesterday. Sometimes when I start the map launcher, it fails to network instantiate a cloned prefab for the clients. Unfortunately when this happened I was too tired to realize what was happening and I didn't write down the error it gave me. If it happens again I will repost or edit this post with the error it yields.