godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
88.89k stars 20.16k forks source link

Is it possible to provide a cross platform seamless social authentication? #29092

Closed elieobeid7 closed 5 years ago

elieobeid7 commented 5 years ago

I'm creating a mobile game using Godot for IOS and Android, firebase and facebook plugins are available for the android version only. Therefore it's not an option because I want to a cross platform solution.

I can do authentication either using the websocket server or http module directly to google or facebook or firebase.

But would it be seamless? My only question is that would the user experience / process be the same? I think not, The user would have to sign in from the browser correct? He won't be able to just use the gmail installed on his phone or facebook, is that true?

groud commented 5 years ago

Godot, as a charity, is not able to provide such authentication to proprietary services. Maybe an OAuth plugin could be created though.

elieobeid7 commented 5 years ago

Why? And does that mean that godot isn't production ready? Because most of production projects require that feature. How are developers able to create production ready multiplayer games in the present day?

groud commented 5 years ago

Why?

The Godot organization is a charity, so we cannot use the provided funds to work for private companies (Facebook and Google included), directly or indirectly. This means we do not want to include as built-in features that are specific to any service provider. But I guess it can be provided as a plugin by the community. See https://github.com/FrogSquare/GodotFireBase for example

And does that mean that godot isn't production ready? Because most of production projects require that feature. How are developers able to create production ready multiplayer games in the present day?

Your definition of "production ready" is pretty limited... Godot is already used in production by several companies.

elieobeid7 commented 5 years ago

Perhaps I shouldn't say production ready, a more accurate term is mainstream or something. I don't know what's the best word to describe it, but what i really want to say is that most apps require facebook login, if not firebase, at least facebook. By not providing that so many developers might walk away.

You know what that means to me? I'm developing a gambling game for a client, I can't use unity or other engine because of their absurdly high fees on gambling. I'm really 70% done of the game on Godot. I overcome all other issues, websockets and everything.

I'm going to spend 2 days trying to implement auth, if it doesn't work, I'll have to start from scratch on Lbgdx, because if the game is done and there's no facebook login, the client will see it's missing, what am i going to say to him? Really what can I tell him? Sorry godot doesn't offer that? He's gonna blame me. All my work is gone in vain, all my learning hours, every single line of code, gone.

groud commented 5 years ago

I'm going to spend 2 days trying to implement auth, if it doesn't work, I'll have to start from scratch on Lbgdx, because if the game is done and there's no facebook login, the client will see it's missing, what am i going to say to him? Really what can I tell him? Sorry godot doesn't offer that? He's gonna blame me. All my work is gone in vain, all my learning hours, every single line of code, gone.

Well, sorry but this is not our problem. You should have asked yourself before whether Godot would implement this as built-in or not. It's now up to you to assume your engine choices. Now you can either implement authentication support for Facebook yourself creating a plugin, or change game engine if you want.

In any case, I will consider this issue as solved. There no much more we can do about it. If you plan to implement a Facebook authentication plugin, feel free to ask for other people on the other community channels. There's also a question about that on th Q&A: https://godotengine.org/qa/6919/facebook-integration

elieobeid7 commented 5 years ago

You should have at least leave it open as feature request, unless you don't plan to ever implement.

Regarding

https://godotengine.org/qa/6919/facebook-integration

I read it before asking this question, in fact, this very question is a question about that question.

In that link, they say to use HTTP requests, in my question I asked if by doing that would it be seamless or not. But my question was closed before getting an answer.

Regarding being charity thing, I appreciate everything you do, Godot is the best engine I've ever used, Godot is on the top of every engine review from 2016 till now, the top recommendation is Godot, a well deserved achievement, you are hands down the best.

But being charity isn't an excuse, you make 10k a month on patreon, you won like 100k from mozillla for the second year and so on.

Libgdx makes 0 income, has that feature cross platform, Haxe 0 income has that feature. If you exclude unreal and unity, the top dogs, maybe another one, you make more income than many on the list, and all the others have that feature. Corona is broke, cocos2d is broke

elieobeid7 commented 5 years ago

I think you closed the issue because you didn't like what I say, because before replying you labeled it as feature request, after replying you're like fuck that guy im closing his issue.

groud commented 5 years ago

In that link, they say to use HTTP requests, in my question I asked if by doing that would it be seamless or not. But my question was closed before getting an answer.

Sorry, but this is not the place to place to ask for questions. We use Github to report bugs and ask for engine features, not to answer users' questions. Please use the other community channels for that.

unless you don't plan to ever implement.

That's exactly it, as I said we wont implement it, because we cannot do it as a funded charity.

But being charity isn't an excuse, you make 10k a month on patreon, you won like 100k from mozillla for the second year and so on.

That's exactly where the problem is. We receive donations from a lot of people to create a free and open source game engine, so those funds cannot be used to implement and maintain Facebook-only features. When we implement things as built-in, we make sure it is using open standards of the industry, and do not serve a company more than another, as that could lead to legal issues.

So once again, the only solution is to create a plugin for it, that would not be maintained by the people paid to maintain Godot. And as a plugin proposal that cannot be maintained by the Godot organization, the feature request does not belong here.

akien-mga commented 5 years ago

As @groud mentions, that's not something that we can provide in the engine itself, so it's up to the community to write and maintain the modules necessary for such Facebook or Google features for Android and iOS.

There are various modules for Android which seem functional already. For iOS it's a bit unclear, I'm pretty sure that some developed some solutions already as there are many Godot-made mobile games on iOS, and I suppose some use these social or monetization features.

@DrMoriarty maintains https://github.com/DrMoriarty/godot-facebook, maybe he can give some pointers on how he's handling iOS, if at all.

akien-mga commented 5 years ago

Actually https://github.com/DrMoriarty/godot-facebook seems to support iOS, it's just the short description which still says "Android only", but there's iOS code: https://github.com/DrMoriarty/godot-facebook/tree/master/GodotFacebook

elieobeid7 commented 5 years ago

@akien-mga thank you so much really, you might have just saved me from rewriting the project, I cannot thank you enough. I'll contact the repo maintainer to ask him how he did the IOS implementation

I don't really care about google login, facebook login is more important, and firebase could be done from the server side, in fact I believe that once I understand his facebook code, I could implement the others in similar way, since they are so familiar. Thanks so much again.

masiafrest commented 4 years ago

@elieobeid7 im also trying to implement those feature you said, did you resolve the problem already using the module ?