-
Notifications
You must be signed in to change notification settings - Fork 20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Match Making System Example #427
Comments
I wanted to point that if the user need to configure Firebase the instruction needs to be added in the description of the extension. Or add a help link leading to a new page on the wiki. Can we have your opinion @arthuro555? I ask you because you seem to me to be the person with the most experience in multiplayer with GDevelop :) |
I'm gonna be honest, imho, it's a big mess. I can't see anyone learning anything from this example. Most of the logic is contained within a "matchmaking" extension that doesn't just do matchmaking, is messy, and has JavaScript code sprinkled everywhere. Additionally, P2P & Matchmaking is not a very good match... P2P, by design, sends both local and public IP addresses to whoever connects, and while that is OK when playing with friends, that is generally pretty frowned upon when playing online with strangers. |
I rarely seen developer make multiplayer games, main reason is of its complexity, please elaborate on why simplicity is frowned upon? |
You got this backwards, simplicity is encouraged, but your example and extension are the inverse of simple. The events are not easy to understand because of how messy they are, by introducing firebase and P2P users need to learn and understand their setup (and I have seen oh too many people struggle with just that), the extension, by being not on the extension repository (at least as far as I know), will confuse users that try to apply the example to their project... Not to mention, quality is just as highly regarded as simplicity. As far as I remember, your networking is full of anti-patterns, the example and extensions events are super messy and lack insightful comments/groups, is unoptimized... This makes this project fail at being an example, as an example is supposed to show a clean and correct way to do things for people to learn from. Nobody can learn anything from that because of the sheer complexity, and even if they could they likely shouldn't, imho. |
Everything is consolidated in 4 events, its simple as it can get. developers won't look inside the extension, and since its a community extension, code breaking standards is unnecessary. Its like saying users will check gdevelop source code in order to implement a simple hello world. |
Plus developers only look for functionality over code standards |
I am trying this out but the Firebase instructions are not clear enough. It would need to be a neat step by step instruction. How the and which strings need to be set up in the firebase properties of Gdevelop. Including creating a new project and generating new webkey. It would be also nice if the example simply comes already configured to a existing firebase host. That way one can simply see it immediatly working. It is far from easy at this moment. I would still prefer to use the websocket extension as it has more possibilities of making your own server. I think the idea is very nice but it will lack a lot of possibilities. Also p2p most often stops working as soon as one is not in the same network as the other user. |
There's a link in step 1: https://wiki.gdevelop.io/gdevelop5/all-features/firebase/quickstart
Updated
well yes, the extensions responsibility is solely for match making logic, not everything. It depends on the developers requirement. also the cons and pros vs websocket server, own nodejs server:
What do you mean? I tested it with mobile data and local network (2 different networks), still works. |
Describe the example
A matchmaking system using with p2p and firebase
consolidated in four events to make it simpler for developers.
Flow:
Requirements is a firebase account and a few tweaks:
1.) Go to firebase project settings then get config then paste it in gdevelop settings (**important: don't forget to add double quotes to the keys **)
2.) Enable anonymous login so users don't need to login to use the server
3.) then finally enable realtime database, change its rules and use that as a prefix on the matchmaking action
Checklist
com.example.
.Game folder
matchmaking-example.zip
The text was updated successfully, but these errors were encountered: