Word Smack turn based gameplay

Hello everyone, I was wondering if anyone could give me an idea how a turn based online multiplayer game could be built with Corona in a way similar to EA’s new game “Word smack”. What Lua/corona/ back end services would be required? Thanks! [import]uid: 50491 topic_id: 33022 reply_id: 333022[/import]

I was chatting to one of the programmers about this, who helped to break it down. It’s largely a server-side implementation, using FB to essentially get the players, and then processing the logic/results on the server.

Everything he had to say seemed to suggest it’s entirely possible out of the box with Corona - from a programming point of view I don’t think it’s an issue, the problem comes from breaking everything down - and obviously needing some expertise on the server side of things. [import]uid: 33275 topic_id: 33022 reply_id: 131056[/import]

For the server, one service that I’ve been hearing more of is http://gameminion.com/ - they have plans that scale with your userbase. Maybe worth checking out their SDK as I believe its compatible with Corona. [import]uid: 62706 topic_id: 33022 reply_id: 131059[/import]

I developer a turned based system for one of my games using facebook integration and storing turn data on my own system. It’s possible, but was quite a lot of work. [import]uid: 35072 topic_id: 33022 reply_id: 131084[/import]

I developer a turned based system for one of my games using facebook integration and storing turn data on my own system. It’s possible, but was quite a lot of work. [import]uid: 35072 topic_id: 33022 reply_id: 131083[/import]

I was chatting to one of the programmers about this, who helped to break it down. It’s largely a server-side implementation, using FB to essentially get the players, and then processing the logic/results on the server.

Everything he had to say seemed to suggest it’s entirely possible out of the box with Corona - from a programming point of view I don’t think it’s an issue, the problem comes from breaking everything down - and obviously needing some expertise on the server side of things. [import]uid: 33275 topic_id: 33022 reply_id: 131056[/import]

For the server, one service that I’ve been hearing more of is http://gameminion.com/ - they have plans that scale with your userbase. Maybe worth checking out their SDK as I believe its compatible with Corona. [import]uid: 62706 topic_id: 33022 reply_id: 131059[/import]

I developer a turned based system for one of my games using facebook integration and storing turn data on my own system. It’s possible, but was quite a lot of work. [import]uid: 35072 topic_id: 33022 reply_id: 131084[/import]

I developer a turned based system for one of my games using facebook integration and storing turn data on my own system. It’s possible, but was quite a lot of work. [import]uid: 35072 topic_id: 33022 reply_id: 131083[/import]

Disclosure: I worked on Word Smack, as a programmer. I am not a representative in any way, but here is a general ‘first step’ approach for an Async game in Corona.

Creating an Asynchronous Multiplayer game (Like Word Smack, or … with Friends, or Draw Something, etc…) is almost entirely a server challenge, rather than being difficult in the Client (Corona in this case).

With an Async game structure, the Server has 2 roles. Getting the game data for each player who logs in, and Modifying that game data based on ‘moves’ that the client sends to the server.

You can use a basic JSON blob(because Corona/Lua can encode/decode JSON data very easily) to define what a ‘game’ is when sending it to the Client, and have this sort of data stored in a database on the server, basically scores, moves, whose turn, etc… Then each player can log in with his credentials (Facebook IDs, Twitter accounts, Usernames, etc…) and for each set of credentials, the server returns a list of relevant games for that user (read: games he is involved in).

Then, the client’s job is simply to provide a UI to show this data. In the Main menu, it would simply be a UI listing the games the user is part of. In the game scene, it’s showing the previous moves, as well as options to send your next moves back to the server. For safety, the client should never send a whole ‘game’ blob back to the server, and instead the player would send “Move Unit 1 to coordinate {x, y}” sort of messages back to the server, and the server would manipulate the ‘game’ data. This helps reduce cheating.

As-is, the core game in Corona is relatively simple, and 90%+ UI work. The server, which can be whatever kind of server you are comfortable with (since network.request is easily enough to handle the types of network traffic used by an async game), is where more challenge exists, in identifying users, storing large amounts of games, handling ‘game’ data manipulation to the database on moves, and providing some sort of fail-safe so you don’t lose everyone’s games. [import]uid: 134101 topic_id: 33022 reply_id: 131160[/import]

Wow thank you guys for the great responses! I will look into this more using your provided advice. [import]uid: 50491 topic_id: 33022 reply_id: 131169[/import]

I’ll second the GameMinion suggestion. They’re solution is exactly to provide a “plug in” server solution for the developer.

They’re working on a storage issue right now but if you don’t want to “roll your own”, they have a solution.

They’re based on Amazon’s cloud, so if EC2 goes down so do you. Rare, but it’s happened. [import]uid: 13784 topic_id: 33022 reply_id: 131186[/import]

Disclosure: I worked on Word Smack, as a programmer. I am not a representative in any way, but here is a general ‘first step’ approach for an Async game in Corona.

Creating an Asynchronous Multiplayer game (Like Word Smack, or … with Friends, or Draw Something, etc…) is almost entirely a server challenge, rather than being difficult in the Client (Corona in this case).

With an Async game structure, the Server has 2 roles. Getting the game data for each player who logs in, and Modifying that game data based on ‘moves’ that the client sends to the server.

You can use a basic JSON blob(because Corona/Lua can encode/decode JSON data very easily) to define what a ‘game’ is when sending it to the Client, and have this sort of data stored in a database on the server, basically scores, moves, whose turn, etc… Then each player can log in with his credentials (Facebook IDs, Twitter accounts, Usernames, etc…) and for each set of credentials, the server returns a list of relevant games for that user (read: games he is involved in).

Then, the client’s job is simply to provide a UI to show this data. In the Main menu, it would simply be a UI listing the games the user is part of. In the game scene, it’s showing the previous moves, as well as options to send your next moves back to the server. For safety, the client should never send a whole ‘game’ blob back to the server, and instead the player would send “Move Unit 1 to coordinate {x, y}” sort of messages back to the server, and the server would manipulate the ‘game’ data. This helps reduce cheating.

As-is, the core game in Corona is relatively simple, and 90%+ UI work. The server, which can be whatever kind of server you are comfortable with (since network.request is easily enough to handle the types of network traffic used by an async game), is where more challenge exists, in identifying users, storing large amounts of games, handling ‘game’ data manipulation to the database on moves, and providing some sort of fail-safe so you don’t lose everyone’s games. [import]uid: 134101 topic_id: 33022 reply_id: 131160[/import]

Wow thank you guys for the great responses! I will look into this more using your provided advice. [import]uid: 50491 topic_id: 33022 reply_id: 131169[/import]

I’ll second the GameMinion suggestion. They’re solution is exactly to provide a “plug in” server solution for the developer.

They’re working on a storage issue right now but if you don’t want to “roll your own”, they have a solution.

They’re based on Amazon’s cloud, so if EC2 goes down so do you. Rare, but it’s happened. [import]uid: 13784 topic_id: 33022 reply_id: 131186[/import]

That sounds like an interesting solution, have you had any experience with this personally? I’m interested [import]uid: 50491 topic_id: 33022 reply_id: 131360[/import]

That sounds like an interesting solution, have you had any experience with this personally? I’m interested [import]uid: 50491 topic_id: 33022 reply_id: 131360[/import]