After spending days on trying to figure out what’s wrong with my demo project, I’ve decided to ask here.
My current efforts have been going to http://partner.steamgames.com/, setting up the Steamworks SDK, as seen in the litterature list below. I managed to be able to make a simple GUI interface for the main menu and lobby creation of my game. Though after looking into the case of trying to give my lobby a name, I found that what I thought worked, did in fact not work. The CreateSession node did not make any session to search for online.
I then tried looking into what could be wrong, and how I could expand the possibilities of my current limitations on this field. But when I tried working on even simple C++ projects in order to create new blueprint nodes, I failed. I managed to follow the “HelloWorld” tutorial, but after trying to change it into something usable, I kept getting illegal use of non-static member function, invalid type, and a lot of other errors, preventing me from compiling the project. In the end, I never managed to get a working online multiplayer demo, which there’s no examples of, and the ShooterGame demo did not work either.
As for webpages I have tried reading, but without managed to solve my problem of not being able to produce a working short demo of creating/finding available sessions using the Online Subsystem Steam, is (note some links are just references to classes, and since I have absolutely no C++ experience, I can only relate to parts of the program which is pretty close to languages such as JavaScript, PHP, Lua and other far-away languages on that end):
To be able to get your Steam username from a blueprint node
To be able to create / join online sessions with a name/title/other settings, preferably also from a blueprint node
On my end, I’ll need to work on learning C++ to get a better grasp on how to learn classes, structs, and how to make functional semi-advanced functionality which serves a purpose on making event-based actions
… though without being able to use the OnlineSubsystemSteam, nor making any kind of online server (I don’t expect players to have port 7777 open, which is why I’m dead-set on the case of using Steamworks)
I can provide my somewhat scrapped uprojects, if needed.
Ok first of all: Setting up steam is documented and you should focus on getting this to work first. Even if steam is running, you can’t use it in the Editor it self. You need to launch the Game directly, otherwise Steam will not be registered. It is simply deactivated in the Editor by default (can’t be changed without source changes).
Then, if you are really a c++ noob, you don’t want to start with networking and sessions. First learn c++, then go on and learn how to make such things. They are not basic enough.
The ShooterGame is nothing for a beginner. Even i struggle with it sometimes!
The Steam Username is saved within the PlayerState class (available in BP too) under the PlayerName variable. (at least i guess that this will give you the name with an active subsystem). Changing the Session title is not possible without using c++.
The sessions system is not easy in c++. I recently created a basic setup for you beginners, but you need c++ knowledge to do this:
thank you eXi for your attempt at an answer. please don’t discourage people from attempting something that you’ve determined they aren’t smart enough to do. having not used UE4 prior to March 1st of this year, and with no programming background, we have set up a multiplayer online game, complete with unique sessions, customizable characters,etc, and it was all done with blueprints. And with the help of the community, of course.
to answer the original question, steam integration can be done with a free downloadable program from kitatus.co.uk. Download the program and pretty much follow the instructions and it will set up the integration for you.
For the sessions, Advanced Sessions Plugin - Programming & Scripting - Unreal Engine Forums. it’s a godsend and it allows you to pass through whatever information you want. we we were able to pass through the server name that the host can set, starting level and current level, game type,game host, etc, where the UE4 sessions only contain basic nondescript info. I will post the link for that as well.
Good luck and don’t hesitate to ask anything on the forums. These guys are pretty awesome here
with the steam integration plugin that I mentioned above, we are able to run the game from the editor, but it has to be done in standalone mode, not play-in-editor mode
My answer is not to discourage them (and i don’t think it does), but to make sure that they go the right way. Starting with something as complicated as the ShooterGame if you have no idea how to use C++ is not good at all. This will discourage you, because you will see yourself in front of a huge project that is not made for beginner level and tons of code.
That’s why i posted the link to the Wiki where i only used the most basic Sessions setup, so they can learn. The Advanced Session Plugin can sure be used, but i thought he/they wanted to get used to C++ and then it is better to first learn C++ a bit more, before trying to do networking in it AND looking into the ShooterGame. BP, even with the Plugin, is limited. If you want to bypass this, you may want to create this in C++ and that is what i understood he wants to do.
It was never a question of being smart. It is just a friendly advice to start smaller.
You can see “Null” as a basic Subsystem. You will be able to create Sessions for LAN and Online Games, BUT since you have no real Subsystem (like Steam) you are missing a MasterServer that gives you back a ServerList exclusively for your game. (Steam manages this with the AppID (: )
With Null as a Subsystem (so no real subsystem) and no selfbuild MasterServer, you can join Online Games only directly with an IP. Session/ServerList is limited to LAN.
Cool thank you for the straight answer! I am currently looking into your basic tutorial and I have to say great stuff!! It made everything much clearer.
The original post was stated as such, “Setup Steamworks for a blueprint project with no C++ knowledge”. From that I gather they want to Setup Steamworks for a blueprint project with no C++ knowledge. Maybe I misunderstood something
Sure, though i read the text like he already tried to use C++ and was not successful with it so far. But anyway. both our answers are good. I just don’t like that you meant i would want to discourage him.
Ok so I did some further research into the Steam online subsystem and saw the AppID you are referring to. Do you have any idea how such an ID can be acquired without belonging to a registered company/studio?
You need to apply for Steams “Greenlight” service. If the community approves your Game, you will get a contract etc. If you sign this, you will get an AppID for your Game and so on. Keep in mind, Steam takes % of your incomes for these services! You don’t get all of this for free.
Applying for Greenlight needs an already good base of your game. So try concentrating on the GamePlay etc first, before you think about steam. The Test AppID 480 can be used to test some features arleady.
Thanks a lot! I understand it all perfectly know. I have to showcase some networking capabilities so I will go with the Null DefaultPlatformService and use direct IP’s.
When I followed a tutorial to add a C++ Blueprint Node, I wasn’t expecting my project to cease working in Multiplayer.
Took me a long time to figure out what was wrong and what to look for as I’m no programmer and just wanted to add an extra Blueprint node. I started to be desperate, and found your tutorial, which solved my issue ! Many thanks man.
SO ! For anyone reading this, if your project is a code project then you need to follow eXi tutorial to make MP working.
The two first steps was enough for me :
Changing the “DefaultEngine.ini”
Changing the “YourProjectName.Build.cs”
PS: the MyProject.Build.cs says “// Uncomment if you are using online features” but it’s not enough if you are NOT using Steam.