I've been looking around for some time, but can't seem te find the right answer.
I'm trying te develop a android multiplayergame, later it must also be able to connect to IOS and Windows Mobile 8.
It's a game like WordFeud/Scrabble for up to 4 players per game.
What I want to do is do most of the complex coding like validations, synchronisations of the playboard, stats, etc on my asp.NET server. (since I'm a C# programmer).
So the app on the device will be the GUI and some logic to sync.
Now things like auto-sync(or push), turnbased, find player etc.
How can I do this?
And is this the way to go when I want worldwide thousands of players to be able to play against eachother?
From my reseach using a webservice for the sync/game logic seems a logic option.
I don't feel much for tools like Parse, Skiller, Openfeint, etc.
Since they all cost a lot of money and you are depending on them.
Kinds Regars!
Related
Background
I'm a noob programmer looking to create a simple turn based mobile game as a side project. I've pretty much got the game logic down and am left with implementing the online multiplayer/PVP portion.
More specifically, i'm looking to implementing a system when the player clicks play and will be matched with an opponent in a 1 v 1 format, without any lobbies etc etc.
I'm currently trying to develop my game in android studio(i'm new) but am also open to unity if it makes the development easier.(I have no experience in Unity).
What i want to know
From what i understand,i need to create and host my own server for the multiplayer to run(i.e matching of player to opponent). Do i also need the server to run the game itself or am i able to connect the player to the opponent and simply record the result of the game to my server/database?
Also, how would i go about creating and running/hosting the server? I heard nodeJS is a good choice for writing the server.
Can anyone point me to a good resource/tutorial for creating and running my own server, and if possible free(or cheap) hosting for my server?
Also, is unity a better choice than android studio for my game?
End Goal
I just wanna publish my game onto the app store,IOS store,etc etc.
If you don't have any experience with creating multiplayer games, I'd recommend looking into one of the several ready-made solutions available on the market (Unity Multiplayer is one such service). You could essentially make your entire online game without ever needing to code a server.
Coding game servers is more work than you think. You'd first need to make a working game server, then you'd need to consider hosting, data storage, scaling, ping, etc. The downside is that you'll get less customizability and less security (you'll need to handle much of the game client-side, which means you're susceptible to hacking by modification of the client, known in the android world as "mods"). However, if you're just starting out, a game server of your own will probably do more harm than good.
You should always choose a multiplatform engine for mobile games. You do not want to code your entire game twice. So yes, Unity is a good choice, and it's the de-facto standard for mobile these days. If you're going to be making games, learning Unity is a worthwhile investment.
Last, and this one comes from my personal experience only with no real statistical data to support it, people who implement game servers with node often end up discovering that their server just can't handle the load, which leads to a need for stacking a whole lot of technologies up on one another to scale the server(s) out or squeeze more performance in some way. It'll often prove to be bad choice in the long run. Or then again, maybe the people I know just aren't good with node.
I am involved in developing application for mobile sensors, data from these sensors is to be collected using Android/iOS mobile apps. We want the end users to be able to view this data from desktops also. This data is uploaded to be uploaded to our own database(s) from the mobile apps. I have done this development of the prototypes using native applications (iOS/Android) and implemented web services using Django 1.6 with SQL database. This was just for prototype.
We are at stage where we really need to make this into real product with paying customers, so we are in position to revisit our technology stack question. So I am looking for suggestions.
Currently I am thinking of using Play Framework on the server side. I really haven't seen anything compelling that can provide Native app like feel so we will have to keep developing mobile apps using native libraries. We will interface with our web services using REST API. My concern with Play framework is it doesn't seem to have lot of plugins similar to django, but its early days hoping that situation will improve.
Is this right approach we are very small team ( 4 people, we can hire 2 more probably). Given this is this right technology path I am choosing anything I should be looking at?
I have looked at Parse library but doesn't seem to offer too much data flexibility, geared towards more social media aspects.
We will be using StromPath for user management, any other choices I should be looking at for user management?
We really don't want to do a lot of MVC programming on client side, so on desktop app we will keep it simple jQuery/Javascript & html
-Sam
With jQuery mobile you can assure the look and feel like in a native app. The library it self does media queries and stretch or shrink the content accordingly. So in terms of UI you will not face any problem providing native app like look and feel to the users. For client/server communication I recommend normal ajax functionality so you can dynamically add content.
When working with JQM there are certain rules that you will have to obey.
I have a simple two-player android game (like Chess), and I want to add some functionality for users to play against each other online. I would prefer to make this as simple as possible (so no complex website where users meet each other and maintain a rating, etc.; instead, just the ability to somehow "look-up" your buddy and have a quick game against him or her).
First of all, is there any way to do this peer-to-peer? From my research, it looks like no, or at least there is no "easy" peer-to-peer method. Admittedly, I haven't looked much into p2p for Android in a while...
The other way then, would be to set up a server, but I have no idea how to do this. Does anyone have some links, info, etc. about how to set up a simple server for enabling online gaming like this?
Thanks!
The problem with p2p is going to be discovery i.e how do players discover each other or their address for communication. The other problem with p2p is that players phones are often going to be behind NATs and if both are behind a NAT then they will need a intermediary between them for communication. These are two common reasons why a server is required even for the simplest of multiplayer games.
Is your game an asynchronous turn based game like words with friends?
There are options of using cloud service for such a game as well so that you just do Android development and access a webservice for storing game data and sending push notifications to update the other player of his/her turn. You can take a look at this https://github.com/shephertz/App42-Tic-Tac-Toe sample on how to do it.
I developed a trivia game a while back for Android that allows you to compete head-to-head against anybody in the world that is available, in real-time. This is in real time because you can see what the other player is selecting. Since I was familiar with PHP and MySQL, that is what I chose to use on the server side to handle everything. I know this can't be very efficient since the game is constantly sending/receiving information to/from the database throughout the whole round as fast as it can. This has been working pretty good for over a year now, but I really haven't had a ton of players on at the same time, and I know there has to be a better, faster, and more reliable way. I'm planning on making this a 4 player game and I know the database will be getting hammered and will be harder to keep all of the players in sync.
What would be an appropriate way to do this? Is this something for sockets? Is the method I'm using now ok for real-time play and I just need to concentrate on improving what I have?
Raw sockets need you to handle a lot of issues. Mobile networks can disconnect easily. What you are looking to develop is similar to a chat application where you send data between users. Php by default is not best suited for this.
You could build this around an XMPP server. The key is being able to send asynchronous responses to the clients. If you need more control, you could build this on frameworks like socket.io or SignalR.
I tried to do my homework in this topic, but unfortunately with no luck, at least the picture not as clear I can start digging deeper or registering for a service etc.
What I am trying to implement: Simple 2 player board game, with CPU or internet opponent. The game is a phone game for all the 3 platforms iPhone, Android, WP7. (please do not harm WP7:-)
One option is go to some cloud (Azure, Amazon) and implement some game server. Sounds reinventing the wheel, but maybe there is an open source implementation. (only ASP.NET because my skills)
My current understanding my other and preferable option is using a service like Openfeint or ScoreLoop (bought (and eaten?) by RIM :-().
Unfortunately it is not clear for me (after reading the two FAQs) if besides of high score lists and maintaining statistics is any of game server is capable to conducting a board game between two authenticated player?
Could anyone point me where to start? (or suggest me a WP7 sample or marketplace game which uses a public game server for two player board game internet gameplay?)
Thx for answers
I also wanted to develop a multiplayer game and examined Openfeint, Scoreloop and Skiller. I ended up using Skiller as my multiplayer engine, since it was the only one that supports multiplayer and it works great.
Hope i helped.
Look at Azure for social games toolkit https://github.com/WindowsAzure-Toolkits/wa-toolkit-games
There as some areas of concern outside of the logic of just the game.
User Identity and Authorizing. (Game Center)
Game Data Persistence and Storage. (Cloud Database like AWS DynamoDB)
Game Match Queuing. (AWS SQS) Don't attempt this with a database using pessimistic concurrency.
Notifications of Match Players are ready for sleeping clients. (AWS SNS to APNS/Google to Endpoint(this mobile device))
Polling or Notification for Next Move. (AWS SQS or SNS) I wouldn't poll a Database for this.
Those services are just example recommendations. I don't work for Amazon, they are the easiest and most affordable to get up and running but there maybe better services out there. I found them with your same requirements in mind. I don't want to commit to 100 bux plus a month if my idea is a boon-dongle.
You could do all that listed above to start out for under $15 a month using cloud services. The best thing is if your idea takes off you simply bump up the thresholds on those with a flick of a switch from an admin portal. Some automatically scale.