how far does the gpl reach

from all the info I have found about the gpl, I still don’t have a conclusive answer for this question.

from what I have read as long the code where the bge is in contact with doesn’t connect with a dll file like the steam.dll, it is possible to use a separate python thread to indirectly interact with the steam.dll and not break the gpl.

is this true? We are trying to bring our game to steam and we need to integrate the steam api with a part of our code.

are there other possible solutions?

So you guys are still on BGE? I thought you migrated something else since your indieDB page says “custom built” engine.

Well you’d have to know Steam API and what it needs to help you. The rule about Blender and GPL is just that you can’t package non-GPL content together with Blender. So you need to handle the game .exe in format that loads external .blend files that contain menus, levels, etc. So just make the Steam API interaction a new .blend file and load it dynamically when you need it and you’ll have no problem on Blender or GPL side.

What Steam and Valve requires of the content it ships I am not an expert on and I think if there are any problems it’s on that side. I’d be interested to hear more about it since you’re bound to come across some possible issues.

Good luck with Greenlighting, I voted for the project and remember the BGE community is looking up to you guys :slight_smile:

AFAIK, the Steamworks API is not GPL compatible, so you can’t load it dynamically when you need it without violating the license agreement (because you’re loading it into a GPL-based engine). I believe you should be able to have the game on Steam, though - just without anything that the API gives you.

I don’t know much, though, and wouldn’t rely on my knowledge. I’ve never released anything on Steam and am unsure about what exactly you get and can use when it comes to licenses and their data. You should probably check out someplace with Steam developers, like reddit’s gamedev sub-reddit or something.

But just to clarify: This is about something dictated by Steam licence and not GPL/Blender. If there is room for it or not is up to Steam and Valve interpretation of their licence and the case and the OP should ask about it from Valve.

My understanding is that a .blend containing text block that loads the Steamworks API is not bound by GPL or any other licence unless you want to issue a licence of your choice to it.

(A.) Blender player packaged.exe (GPL) -> loads
(B.) menu.blend (can be any licence you want) -> loads
(C.) Steam API (licenced by Valve)

If you truly are forbidden by Steam to do this you could always make a small software that just passes information from your game to Steam.

EDIT: Since I did just spent a long time searching I might as well post my findings here. Some parts of information were found on non-public sources.

  • GPL games on Steam Store / Greenlight in general is no problem, there already are examples of it like Penumbra. You only need to have the rights to sell the game you’re listing there.

  • The problem seems to be Steamworks API only. Steamworks provides some features like game authenticating, tracking gameplay statistics and achievements, multiplayer integration to Steam Friends etc.

  • You can release and sell your games without Steamworks support

  • The issue with Steamworks API is that there is no free library for it (as of now) and even with the A-B-C hack mentioned above it’s still probably grey area

  • it’s possible to use a wrapper that passes information (examples mentioned php relay service and binary executable) between the game and Steamworks API but it’s considered hard and ugly solution (because it needs to be pretty secure) requiring deep expertise in Steamworks API. One (couple years old) quote from a programmer was around 10-15,000 USD for the work.

@Keetor thanks for the vote, it may take some time but I have the confidence that we will get through it.
also about the custom engine, we do try to make a custom version of the blender game engine, you know all those patches which are beneficial but not in trunk. Like the batch renderer or the area lights.

We have sent out our first press release copy to a Dutch review website
it’s dutch but it is the first press release :wink:

Also my boss has contacted the steam people,and got a nice reply that they don’t care that the game is “open source” we can show the hooks to the steam api, but not the api itself.
I am thinking of making the steam api a separate dll file and use the ctypes library of python to connect the stats and possibly friends page to the game. of course to keep it separate from bge I will make it a separate python file where the actual api calls come from, and link it to the code where the bge library is linked. sort of making 2 separate python code threads where one listens to the other.

also I have asked my boss to ask Ton for maybe some clarification if that idea is possible.

Yeah, sounds similar to what other open source projects have done / were considering doing. It’s nice you can focus on getting it technically working even if you leave the hooks in the open parts.

the interesting part is, there is a possibility to program your whole game in c++ and just link it with small .py interfaces.
I am going to try and experiment with that option.

maybe even look if c# is a possibility to use. this can open up some quite interesting possibilities.

Why? because instead of using an interpreter you can call a C function directly, no need for translation from python to C, this can give a possible performance boost? That is something to test.