Monthly GameSalad Meetup Thursday September 3 2015 at 7pm CST (01:00 GMT)

BlackCloakGSBlackCloakGS Member, PRO Posts: 2,250
edited September 2015 in Official GameSalad Meetup

Topic: GameSalad Network Behaviors, Amazon API Gateway, Amazon Lambda, and Amazon DynamoDB.

Come learn about GameSalad and meet other GameSalad creators. Chat with some of the developers behind GameSalad, including GameSalad's own Steve Jakab (a.k.a stevej), Alan Uthoff (a.k.a. BlackCloakGS), Tan Tran (a.k.a. adent42)

Description:

If you can't join us in person, join us online

Edit: Updated topic.

Comments

  • Braydon_SFXBraydon_SFX Member, Sous Chef, PRO, Bowlboy Sidekick Posts: 9,271

    Looking forward to it!

  • PhilipCCPhilipCC Encounter Bay, South AustraliaMember Posts: 1,390

    Nice to hear and see you guys once a month. It confirms that fact that we have real people looking after us and not a faceless entity. :)

  • LovejoyLovejoy Member Posts: 2,078

    @PhilipCC said:
    Nice to hear and see you guys once a month. It confirms that fact that we have real people looking after us and not a faceless entity. :)

    Faceless? They have personalized forum avatars! :D

    Fortuna Infortuna Forti Una

  • HopscotchHopscotch Member, PRO Posts: 2,782
    edited August 2015

    @BlackCloakGS

    Here is a Topic request:

    I would love to get the low down on Loops, Constrains, Timers and Rules

    How do they impact logic sequence?
    Which is easier on the processor, loops, constrains or 0sTimers?
    Why to 0sTimers only execute every other game cycle.
    Why are Loops twice as fast as 0sTimers.

    Would be nice to get a little insight as to what GS does at runtime.

    For Next month:

    Importance of x/y offsets for tiled images.
    Importance of a Depth-sorting function of actors per layer.

    Oops, did it again. ;)

  • ArmellineArmelline Member, PRO Posts: 5,332
    edited August 2015

    @Hopscotch said:
    I would love to get the low down on Loops, Constrains, Timers and Rules

    Absolutely. Like I said in the thread asking what we'd like to learn about, this was definitely the thing I'd find most valuable. There's a lot of optimising that can be done once we know exactly what's faster than what, and why.

    Another thing along similar lines I'd love to know - common belief is that using tables is more efficient than using attributes (ignoring ease of use). What's believed is that each code cycle every attribute is checked, so putting this information in a table instead is more efficient. But tables are just, essentially, Lua's arrays. It seems reasonable to believe that tables are only checked if a table check is performed, but is this not also true of attributes? It doesn't seem to make much sense that attributes are in reality less efficient at runtime. Then you also have to consider if there's any difference between the time it takes to run a change attribute and the time it takes to run a change table value, and if checking an attribute is faster than checking a tableCellValue(x,x,x). If checking a table is slower at that point, even very slightly, does any gain get offset? Some clarification on this issue would be helpful.

    Would love some firm answers on this kind of thing.

  • stevejstevej Member, PRO, Chef Emeritus Posts: 435

    Just to clarify: tables are not lua arrays. They are implemented as c++ classes.

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

    Based on our schedules we won't be able to throw the requested talk together (all the native devs are busy with fixing particularly tough bugs).

    For now, unless the schedule forces me to be less ambitious, I'll be giving a talk on network behaviors.

    Depending on how much spare time I find it's either going to be "Using GameSalad network behaviors with Node.js" or "Using GameSalad network behaviors with Node and Parse". I'll know sometime tomorrow which one it will be.

  • ArmellineArmelline Member, PRO Posts: 5,332

    @adent42 Sounds great! This will definitely be an appreciated talk!

    @stevej Interesting! That just makes me even keener to know the answers to my general questions, though :D

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

    @Armelline Also for attributes, I'm not 100% but I believe using attributes should not slow things down. They're set up on a notification system so only when the attributes change do we evaluate expressions connected to them (and of course the first time the action/behavior is run). So it shouldn't buy you anything over putting them in tables (though I would argue that putting the data in tables would lead to better organization).

  • ArmellineArmelline Member, PRO Posts: 5,332

    @adent42 said:
    Armelline Also for attributes, I'm not 100% but I believe using attributes should not slow things down. They're set up on a notification system so only when the attributes change do we evaluate expressions connected to them (and of course the first time the action/behavior is run). So it shouldn't buy you anything over putting them in tables (though I would argue that putting the data in tables would lead to better organization).

    Thanks for the update! This is what I'd assumed - tables are better for keeping things tidy, but not necessary. I favour attributes for some things and tables for others, but have never been all that enthused by the suggestion that everything should be stuck in tables. Looking forward to when you guys get time to sit down and confirm all these things and walk us through it! @Hopscotch mentioned a few and I mentioned others here and in that "what you want to learn" thread, but I'm sure there's a lot more we can come up with too!

  • The_Gamesalad_GuruThe_Gamesalad_Guru Member Posts: 9,922

    @adent42 said:
    Armelline Also for attributes, I'm not 100% but I believe using attributes should not slow things down. They're set up on a notification system so only when the attributes change do we evaluate expressions connected to them (and of course the first time the action/behavior is run). So it shouldn't buy you anything over putting them in tables (though I would argue that putting the data in tables would lead to better organization).

    Interesting....

  • stevejstevej Member, PRO, Chef Emeritus Posts: 435
    edited September 2015

    Advantage attributes have over tables: when an attribute is changed, rules that use that attribute are notified. When a table cell changes, rules that use any cell in the table are notified, whether they care about the particular cell that changed or not.

    Advantage tables have over attributes: they're the only way of sending data from one actor to another.

    These aren't the only advantages, but they're the big ones.

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

    Alright people, since I just finished the demo project for this presentation, tonights topic will be:

    GameSalad Network Behaviors, Amazon API Gateway, Amazon Lambda, and Amazon DynamoDB.

  • Braydon_SFXBraydon_SFX Member, Sous Chef, PRO, Bowlboy Sidekick Posts: 9,271

    Sorry I wasn't able to be present this month. Can't wait to see the recording!

  • ArmellineArmelline Member, PRO Posts: 5,332

    A little over my head (I've never learned any Javascript!) but very interesting to see what's possible!

  • adent42adent42 Key Master, Head Chef, Executive Chef, Member, PRO Posts: 3,059
    edited September 2015

    TL;DR version since i didn't go into a lot of detail:

    It's possible to use the 3 amazon services in the title (Amazon API Gateway, Lambda, and DynamoDB). To get basic network connected game functionality without provisioning any servers.

    • API Gateway is where you defined the URLs (endpoints) that your game actually sends data to and also where you transform them into something that can be consumed by the Lambda service.
    • Lambda lets you write smallish javascript functions to do things like check game state or save games into a database.
    • The database in question is DynamoDB which is a NoSQL database that lets you store things like GameSalad table data.

    The example was a demo where users could click to move a box and the game state would be updated as a table entry and sent to the server. The app would the wait for an updated stated from another user.

    I also did a REALLY quick intro of https://github.com/gamesalad/gstable-js which is an incomplete javascript version of the gstable-php. It's a node.js module that allows you to parse GameSalad Table JSON data into something a bit easier to use when you write your server logic.

    Video to follow. I'll probably turn it into a very short learn.gamesalad.com module as well since there are some details I gloss over in the meetup presentation that would be useful for anyone wanting to go this route for doing game/app server stuff.

  • adent42adent42 Key Master, Head Chef, Executive Chef, Member, PRO Posts: 3,059
    edited September 2015

    STL;DR version: Servers? Where we're going, we don't need servers.

  • neomanneoman Member, BASIC Posts: 826

    @adent42 that is fantastic stuff. I look forward to watching the video of the meet up and checking out the learn.gamesalad.com module ... Excellent work.

  • spatnsspatns Member, PRO Posts: 10

    +1 to "would love to watch this video." :)

  • ForumNinjaForumNinja Key Master, Head Chef, Member, PRO Posts: 554

    Here's the video for you guys, sorry for the delay!

  • Braydon_SFXBraydon_SFX Member, Sous Chef, PRO, Bowlboy Sidekick Posts: 9,271

    @ForumNinja said:
    Here's the video for you guys, sorry for the delay!

    Thank you! Looking forward to watching this one!

  • neomanneoman Member, BASIC Posts: 826

    @ForumNinja said:
    Here's the video for you guys, sorry for the delay!

    >
    Fantastic! Thank you ... :wink:

Sign In or Register to comment.