we’re developing a small mobile game which should also come with a small multiplayer mode. I’ve created a little “chat level” to experiment with the networking capabilities and it worked on LAN (after I figured out that it doesn’t really work inside the editor) and also between a PC and an Android system.
However, I’ve spent 2 weeks of reading the documentation and several internet pages about the online subsystems but so far I haven’t made much progress on it. I’ve read a lot about the Steam Subsystem, but since we’re developing a mobile game, which should run on Android as well as on iOS (and both platforms should be able to communicate between each other) Steam doesn’t seem to be the right choice. I couldn’t find information about other subsystems, though. Is there somewhere a well hidden list that shows all available subsystems and the capabilities they provide? I’ve also read many posts that it’s indeed possible to create your own subsystem (which is basically what we need, because we’re not very happy about those DRM bonds and we actually don’t want to use it in future projects either) but nobody ever stated how it is done after all.
Does it mean that our project isn’t possible at all? I mean, they’re talking about lacking support for joining/finding/hosting sessions etc. All functions we’d really need for our game.
Can somebody please clarify the mess about the online subsystems for me?
I just took a look at the Source and it seems like there are no Session Functions for Google Play.
Steam, for example, has the “OnlineSessionInterfaceSteam.h/cpp” files, in which the logic to create, find and host
Sessions (with Steam callbacks etc) is placed.
That does not exist for Google. I don’t know if Google itself does not support it or if Epic simply did not put any
Session stuff up for the Google Play Subsystem.
The “OnlineSessionInterfaceIOS.h/cpp” DO exist though. So you might be able to use the Blueprint Session Nodes
for the IOS Version of your Game (there are tons of tutorials and examples on how to use the Session Nodes).
But i haven’t worked with Mobile Subsystems yet. So it’s up to you to find out if it works for IOS.
IF there is really no implementation for Session for Google Play, you will be forced to handle the Session stuff
either with your own Subsystem or by including the GooglePlay API and directly take care of the Session stuff
with their API.
The Session Nodes are working already on LAN so if there’s no implementation in the google subsystem, then that’s… really bad
C++ isn’t much of a problem, the description of what a online subsystem actually is in particular or what it needs to be implemented and what data it expects etc. is a problem, though.
Are there any other Subsystems which are accessible from a mobile device?
Hm, no idea. I searched for the “OnlineSessionInterface” in the Engine, and the only one that showed up was IOS.
I don’t think a “normal” user has tried to understand how a Subsystem actually works (me neither). Your best bet is
to check how, for example, IOS is implemented to use Sessions. The “OnlineSessionInterface” classes could give you
a hint. Maybe you can simply create your own “OnlineSessionInterface” class for GooglePlay and override the “Create Session”
etc functions.
Since it’s the interface between the UE4 Session Nodes and the GooglePlay Session System (if it has one), you might need
to include GooglePlay APIs and add the correct stuff to the Create/Find/Join Session functions.
Sadly i can’t really help with that and i doubt that a lot of people actually know how to do this.
Probably this post is too old, but Dota Underlords is a game made by valve and it includes what it seems the steam subsystem working for their game in Android. You can actually invite your friends that are playing on the pc version of the game. So, probably we need to point to valve and see if there is any way to implement that in our games.
Anymore info on this? Is the issue that there just isn’t an android build of steam publicly available? Do I need to just update it myself to compile for android?
Well, there’s a LOT of things wrapped up in “this”. Each platform (Google, iOS, Steam, Oculus, etc) all have their own OnlineSubsystem, which handles a lot more things than just finding games and such. However, there’s one thing they don’t actually handle – multiplayer games.
With Unreal, you can just straight up connect to a game server, without using any of that. (try launching a server on your home network PC, and then launching a client version of that on your Android phone, and doing ‘open ’ on console. bam, multiplayer multiplayform, done.)
So, most OnlineSubsystems provide various functionality for finding game servers, achievements, entitlements (purchases), things of that nature. But you don’t actually need to use any of it, and if you’re trying to make something that is truly multiplatform, you’ll be bypassing it at some point anyway, probably.
So, you’ll need to be more specific as to what “this” you’re referring to is
I’m trying to get a solid plugin/subsystem that works correctly for a multiplayer game on iOS. There is basically no documentation out there on this, so I’m just blindly trying to make EOS and EOS plus work, but keep running into weird errors. The only thing I’ve found out there in regards to getting the EOS subsystem to work is a strange paragraph written here: Epic Online Services (EOS) Developer Support
I followed this vague user paragraph for my game on iOS but it isn’t acting correctly (just like the paragraph says), because it technically isn’t supported. Most of the functionality is just nonexistent, like logging in and finding lobbies/sessions in the epic developer services game services page. I get success logs when creating sessions, but am not able to destroy sessions afterwards, “Warning: OSS: Can’t destroy a null online session”.
I pulled the OnlineSubsystemEOS plugin into a Plugins folder in my project directory. In the .uplugin file I added “IOS” to the “PlatfdormAllowList” Object under EOS, but not EOS Plus.
If there is any workaround I’m not finding, or a guide/simple solution to make my game create/destroy sessions and redirect to a log in page to log in to EOS correctly, just like how there is a ton of documentation to get everything working with Steam, that would be a life saver. Just a flat out “This is how you make mobile multiplayer games on iOS” anywhere! <-This is what I mean by ‘this’.
I know that Redpoint Games has a plugin for 130 bucks that I’ve heard works for mobile from a couple sources, and also says so on their documentation, but my boss is basically refusing to pay for it. Thinks I should be able to figure this out without a paid plugin. So, if you guys have 130 bucks to spare or are making less than 30k a year (which means you can get the free version), I’d go with that, it seems to have semi-decent documentation, although watching some tutorials on plugins and other subsystems first might help you work your way through making this plugin work. I’m sure you already have though if you’re here.
Do you know anything about what would go into actually creating a plugin like the one Redpoint Games has? Not that I’d actually try, unless it might actually be feasible for an entry-level dev with no help or documentation.
If I could just get some info on why getting the Redpoint plugin is so much more worth it than dumping hours of work trying to make EOS compatible with IOS on my own, then maybe I could make a good case as to why my company should buy it.
Redpoint is free if you make under 30k that year. Otherwise, the onetime price isn’t a big deal at all and comes with support from the developers. There’s a lot of stuff that team has done that epic hasn’t made available yet.
Alternatively, you could try EOS Core. I hear people use that as well, but it’s a lot more limited.
Idk about you, but I have a ton of other aspects of my projects to work on. The last thing I want to do is spend more time learning all the stuff behind EOS and dealing with creating my own plugin and code base for it. Would much rather pay the extremely reasonable cost of redpoint (which is significantly less than the amount I’d have to pay a contractor or whoever to create that) and get the entire knowledge base and support team with it.