Current Server Options - August 2019

gingagaminggingagaming FREELANCE GS DEVMember Posts: 1,685

Hello GameSalad World!

The reason for this post is because GameSalads Multiplayer function went a little south a few years back and looks like it will never be fully supported officially (certainly not in the short term anyhow). Im fully aware of @jonmulcahy post he created in 2014 but this was last commented on in 2017 and is most likely out of date (or maybe not @jonmulcahy ? I don't know, hence this post!).

So other than Jons attempt to help us all create our own server solutions, @Hopscotch created a great range of server options for GS users in the form of Leaderboards, Data sharing, analytics and so much more. However in the recent times, Appformitive has become less and less supportive of the GS features and has (at the time of writing) been down for the last 10 days. I don't want to turn this into a bashing session for Appformitive because that isn't what this is as I really like Roland and his services but I need to find a more stable solution long term for myself and my clients.

So the questions is, who out there is using any kind of server for anything to do with GS? It could be data collection, data sharing, leaderboards, multiplayer, anything at all. I would love to know what you are doing and with what company/server ect. So I can (and so can others) make a decision on what sort of other services are available and start make future plans using this amazing feature GameSalad has, but unfortunately not fully supported by GS.

Thank you all!

«13

Comments

  • adent42adent42 Key Master, Head Chef, Executive Chef, Member, PRO Posts: 3,159

    FYI, the original multiplayer system is dead. I shut down the servers earlier this year as we never found the time to maintain it.

    I'm gonna partially hijack this thread. If you know of 3rd party services that work, please feel free to reply with those.

    BUT, I'm gonna ask for something else: Could we get a list of top network/server functionality people are looking for (stuff that can be accomplished with the existing behaviors).

    Reply in this thread with what they need (looks like analytics, leaderboards, not sure what is meant by "data sharing" as a start).

    I can take a swing at writing some open sourced sample code / starter projects to give people a start at this. I'd love to roll a more complete solution for our users as a services, but until I get this Android 64-bit and Mojave stuff out of the way, the best I can do is some quick starter projects to help people get this kind of thing on their own.

  • ArmellineArmelline Member, PRO Posts: 5,354

    Appformative was a great third-party system, but it's been down for a week or so now and @Hopscotch has been awol for even longer, so I'm uncertain if it's going to be a thing going forward.

    I will write up a list of desired server functionality - I use it a lot via Appformative but it's mainly in an educational setting, not multiplayer. There's some stuff in that arena that would be super helpful to have.

  • HypnorabbitHypnorabbit SingaporeMember Posts: 272

    Sounds great @adent42 are you hiring any more people right now? That would make the load easier for you (it seems you're doing everything). You mentioned that GS had some fundraising a few months ago so it would be interesting to see if things have changed yet?

    Regarding functionality, it would basically be the items that Appformative offered (in order of personal priority):

    • Get server time
    • Custom triggers and scheduled triggers
    • Replenishing consumables
    • Event tracking

    These would be absolutely perfect.

    I think the holy grail would then be asynchronous multiplayer.

    Real shame about @Hopscotch but I guess he moved onto other ventures. Tried messaging him on every channel possible, including his Skype and other companies he owned. A simple "we are stopping support for Appformative" would have sufficed really.

    James

  • ArmellineArmelline Member, PRO Posts: 5,354

    @Hypnorabbit said:
    Tried messaging him on every channel possible, including his Skype and other companies he owned.

    Did you try the phone numbers listed? Was thinking about trying those.

  • HypnorabbitHypnorabbit SingaporeMember Posts: 272

    @Armelline said:

    @Hypnorabbit said:
    Tried messaging him on every channel possible, including his Skype and other companies he owned.

    Did you try the phone numbers listed? Was thinking about trying those.

    Nope not yet. Have a stab and let me know how you go!

  • ArmellineArmelline Member, PRO Posts: 5,354
    edited August 2019

    @adent42

    I mostly use the networking behaviours to allow games to track the progress of students and upload that progress to a server. A student will log in with a unique 7 digit code, which will retrieve their table with their progress. As they play games, this table is frequently sent to the server. The tables will also be retrieved by another "admin" app which collates all student tables and allows the teacher to have an overview of the games played by students.

    So the functionality we'd require to match our use of Appformative would be pretty simple:

    • Send a table with a unqiue identifier to a server.
    • Retrieve the table with that unique identifier from the server.

    The biggest thing would be better confirmation of if a table has been successfully sent/received. Right now it seems that any success connection to the server is marked as a successful request, even if the table requested is not found. I don't know if this is an Appformative limitation or a limitation with the networking behaviours.

    I assume this is a limitation beyond the scope of what you're talking about, but a big help would be for any table to be able to be pulled into any table. Right now the hidden table ID needs to exactly match. So if I create Table A in one game, and send it to the server, I cannot retrieve Table A in another game unless I go into the XML files and update the unique table ID to match. Not a huge issue but it would be helpful to be able to pull any table from the server into any table in a project.

    On the server side, a whole ton of things would be useful, but I assume that's beyond what you're after too. Sorting tables by column would be the biggest thing. Being able to pull only sections of tables based on search criteria would be a huge benefit too (so I could ask the server for a table of only game from date X to date Y for a specific student).

    Plenty of other things too, but those are the main things.

  • uptimistikuptimistik Key Master, Member, Sous Chef, PRO Posts: 297

    Send a single cell, row or column instead of the entire table every time..

    GameSalad Templates and Custom Development at the Official Marketplace: http://gshelper.com

  • ArmellineArmelline Member, PRO Posts: 5,354

    @uptimistik said:
    Send a single cell, row or column instead of the entire table every time..

    This would be lovely - sending only the latest rows rather than the whole table. We have some students who have tables with thousands of games recorded in them. Would be great to be able to pull only the needed data when the kids play, append the table on the server with new games, and have the admin app be the only place to pull the whole thing.

  • Braydon_SFXBraydon_SFX Member, Sous Chef, Bowlboy Sidekick Posts: 9,273

    @uptimistik said:
    Send a single cell, row or column instead of the entire table every time..

    What he said!

    @Armelline said:
    @adent42

    I mostly use the networking behaviours to allow games to track the progress of students and upload that progress to a server. A student will log in with a unique 7 digit code, which will retrieve their table with their progress. As they play games, this table is frequently sent to the server. The tables will also be retrieved by another "admin" app which collates all student tables and allows the teacher to have an overview of the games played by students.

    So the functionality we'd require to match our use of Appformative would be pretty simple:

    • Send a table with a unqiue identifier to a server.
    • Retrieve the table with that unique identifier from the server.

    The biggest thing would be better confirmation of if a table has been successfully sent/received. Right now it seems that any success connection to the server is marked as a successful request, even if the table requested is not found. I don't know if this is an Appformative limitation or a limitation with the networking behaviours.

    I assume this is a limitation beyond the scope of what you're talking about, but a big help would be for any table to be able to be pulled into any table. Right now the hidden table ID needs to exactly match. So if I create Table A in one game, and send it to the server, I cannot retrieve Table A in another game unless I go into the XML files and update the unique table ID to match. Not a huge issue but it would be helpful to be able to pull any table from the server into any table in a project.

    On the server side, a whole ton of things would be useful, but I assume that's beyond what you're after too. Sorting tables by column would be the biggest thing. Being able to pull only sections of tables based on search criteria would be a huge benefit too (so I could ask the server for a table of only game from date X to date Y for a specific student).

    Plenty of other things too, but those are the main things.

    What he said!

  • gingagaminggingagaming FREELANCE GS DEV Member Posts: 1,685

    Super glad this thread has some support and super thanks to @adent42 who is injecting some hope in the the product right now. Please lets all support him in this wise move.

    Personally I would like to see the following as a basic support:

    1. Cross platform Leaderboards (User creation, sending of a high score, stored on the server, and pulled from the server when requested to display world-wide leaderboard).
    2. Sending and receiving of a table (single cell also would be nice as others suggested!)
    3. Server time
    4. Triggers
  • adent42adent42 Key Master, Head Chef, Executive Chef, Member, PRO Posts: 3,159

    @Armelline for your case, would a sample project to send table data to a google sheet work? I'm not 100% sure it's possible, but I think I've seen some articles on doing something like that.

  • ArmellineArmelline Member, PRO Posts: 5,354

    @adent42 said:
    @Armelline for your case, would a sample project to send table data to a google sheet work? I'm not 100% sure it's possible, but I think I've seen some articles on doing something like that.

    At least some data needs to be pulled into the game - current score, highest score etc., but it going to and from a google sheet would probably be quite handy. The google sheets could take the place of the admin app, probably. Not certain though.

  • HypnorabbitHypnorabbit SingaporeMember Posts: 272

    @adent42 said:
    @Armelline for your case, would a sample project to send table data to a google sheet work? I'm not 100% sure it's possible, but I think I've seen some articles on doing something like that.

    Sounds delicious - I could definitely use a pull/push function for Google Sheets in an app, especially in my trivia games. Double yes :smiley:

  • adriangomezadriangomez Member, PRO Posts: 440
    edited August 2019

    These are the things that still work on Gamespark if anybody still has a free account or wants to pay for the paid Gamesparks account I can refresh the demo videos I have up:

    -- Save & Retrieve Unique Game Tables.
    -- Save & Retrieve Unique Player Tables. You can use this to save preferences.
    -- Using Gamesparks Leaderboard functionality.
    -- Using Gamesparks for virtual currency and virtual goods.
    -- Using Gamesparks Multiplayer functionality (turn-based not realtime).
    -- Using Gamesparks to send analytics to GameAnalytics (other providers might be possible).
    -- Triggers. Run a script on a server that updates a player table and then next time that player logs in they would have that info.
    -- Server time should be possible.

  • gingagaminggingagaming FREELANCE GS DEV Member Posts: 1,685

    @adriangomez said:
    I can refresh the demo videos I have up:

    I would love to see your videos Adrian. Please refresh and share.

  • adriangomezadriangomez Member, PRO Posts: 440

    I also want to say that I use Gamesparks because that is what I know, it is very open and I have multiple free instances, but you can do what I am doing with any NOSQL/Mongo DB with some sort of javascript engine.

    I really don't see anything missing from the network functionality and I have never thought of anything that can't be done with it.

  • ArmellineArmelline Member, PRO Posts: 5,354

    @adent42 With school started back up and Appformative MIA we're on a bit of a deadline. Did you make any progress finding out if sheets are a possibility? I'm going to have to start putting together our own server imminently but don't want to duplicate any work you do.

  • HypnorabbitHypnorabbit SingaporeMember Posts: 272

    Agree with @Armelline, @adent42 any immediate plans on the sheets implementation?

  • adriangomezadriangomez Member, PRO Posts: 440

    Here is the first of hopefully a few videos:

    And the scripts can be found here:
    https://github.com/agramonte/Gamesalad-with-Spark/

    Currently implemented:
    1. Save player table (profile).
    2. Global leaderboard.
    3. Register and login.

    Partially implemented:
    1. Turn-based games.

    Next up:
    1. GameAnalytics integration.

  • RThurmanRThurman Member, Sous Chef, PRO Posts: 2,880

    @adriangomez -- Thanks very much for posting this! It is very helpful.

  • tatiangtatiang Member, Sous Chef, PRO, Senior Sous-Chef Posts: 11,949

    @adriangomez Are you able to use Gamesparks with a published and/or preview project file in GameSalad with only the free version of Gamesparks? Their next tier is $299 per month which is way too rich for my blood.

    New to GameSalad? (FAQs)   |   Tutorials   |   Templates   |   Greenleaf Games   |   Educator & Certified GameSalad User

  • tatiangtatiang Member, Sous Chef, PRO, Senior Sous-Chef Posts: 11,949

    Excellent video, by the way. I really appreciate all the time you took to make that. It's clear and easy to follow. Now to figure out the next steps in GameSalad...

    New to GameSalad? (FAQs)   |   Tutorials   |   Templates   |   Greenleaf Games   |   Educator & Certified GameSalad User

  • tatiangtatiang Member, Sous Chef, PRO, Senior Sous-Chef Posts: 11,949
    edited August 2019

    Any suggestions for what to do when my callbacks are all zero from within GameSalad? Also, if I browse to the base URL in Chrome, I get negative one now (was positive one before).

    Edit: so, if I use your base URL, everything works in the project file (green light on both actors). But if I use my own base URL, even though I can get the login and leaderboard URLs to work in a browser, I can't get anything to connect or work properly in the project file.

    New to GameSalad? (FAQs)   |   Tutorials   |   Templates   |   Greenleaf Games   |   Educator & Certified GameSalad User

  • adriangomezadriangomez Member, PRO Posts: 440

    I'll have an updated script up today that fixes some of those issues.

    Yes @tatiang the next level up is $299. I have the indie account if you send them a nice e-mail they might give you an indie account which is free up to 100,000 MAU and then .0001 every MAU after.

    Although I have read elsewhere that since they were bought out by Amazon they do not give them out that easily.

  • ArmellineArmelline Member, PRO Posts: 5,354
    edited August 2019

    Just as a FYI for anyone using it, Appformative seems to have come back up. Able to send and receive data again. No word from @Hopscoch though.

  • tatiangtatiang Member, Sous Chef, PRO, Senior Sous-Chef Posts: 11,949
    edited August 2019

    @adriangomez Thanks. I heard back from GameSparks:

    Unfortunately, we no longer offer the indie licence.
    The details of the licence we offer are here https://www.gamesparks.com/pricing/
    Please let me know if you have any other questions.
    Gabriel

    I even mentioned that I was an educator. Unfortunately, I can't afford anywhere near $299 per month. Guess I'll look elsewhere. Maybe Appformative...

    New to GameSalad? (FAQs)   |   Tutorials   |   Templates   |   Greenleaf Games   |   Educator & Certified GameSalad User

  • adriangomezadriangomez Member, PRO Posts: 440
    edited August 2019

    New video. Added Analytics. New test app.

    As a side note @tatiang sometimes I forget to switch to the live servers and I run my games from Preview. Last time I did it, I had over 1000 DAU on the preview server without a problem, but your mileage might vary.

    Also looked at the link you provided 100 CCU is a lot. I have an app with ~9K MAU and I don't get near even 40 CCU.

  • adent42adent42 Key Master, Head Chef, Executive Chef, Member, PRO Posts: 3,159

    Here is a sample script to sync table data to google sheets:

    https://gist.github.com/tant42/add5a37bd3143974362c981ff3d3fb4b

    In the google sheet go to "Tools > Script Editor"
    Paste the script into the editor.

    To deploy, in the Script Editor first run the "setup" function (this stores a ref to the table.

    Then Publish -> Deploy as web app.

    For options put:
    Project version: "New"
    Execute app as: "Me"
    Who has access to the app: "Anyone, even anonymous."

    The script creates a new "Sheet" in the Google Doc with the internal id of the table.

    On POST
    It stores the column type information and names in the first two rows
    It then stores the the rest of the table info in subsequent rows.

    On GET
    It uses a table of the format we just mentioned to return the JSON data struct needed to update the table.

    Here are the limits imposed on Google Apps Scripts (so I wouldn't run large game on this)
    https://developers.google.com/apps-script/guides/services/quotas

    Have fun! I might be slow to answer questions, but let me know if you have any.

  • tatiangtatiang Member, Sous Chef, PRO, Senior Sous-Chef Posts: 11,949
    edited September 2019

    @adent42 This sounds amazing. When I run the setup function and then deploy as a web app, I don't see a new sheet in the Google Doc.

    At what point in the process do I need to have a GameSalad project with network behaviors up and running and connected?

    New to GameSalad? (FAQs)   |   Tutorials   |   Templates   |   Greenleaf Games   |   Educator & Certified GameSalad User

  • tatiangtatiang Member, Sous Chef, PRO, Senior Sous-Chef Posts: 11,949
    edited September 2019

    Oh wait, as soon as I triggered a Network Send Table to URL behavior with the "deploy as web app" URL inserted, the new sheet appeared with the table ID matching the one in the GameSalad project.

    Edit: but now I'm having trouble getting the Network Get Table behavior to work. The callback value is 0. I'm using the same exact URL for the Network Send and Network Get behaviors.

    Do I need to have a Network Send behavior before every Network Get behavior? Or can I just call a Network Get behavior on its own?

    New to GameSalad? (FAQs)   |   Tutorials   |   Templates   |   Greenleaf Games   |   Educator & Certified GameSalad User

Sign In or Register to comment.