What tools to use for cross-platform mobile game

Started by
4 comments, last by hplus0603 2 years, 9 months ago

Greetings all,

I am looking for a game engine to learn how to make mobile games with

these are the ideas/requirements i made for my game;

  • Cross-platform for Android and iOS devices
  • Gameplay is made up of players drawing things to screen and other player(s) can see the inputs in real time
  • Player1 controls a humanoid character and the other player(s) do not have a character, their role is to draw objects into the screen that act as player1s collideable environment in order to hinder player1 from completing level
  • Online Multiplayer with low latency times
  • Database connection

Any advice would be appreciated, thanks

Advertisement

Unity has the best mobile capabilities as from my experience. I worked on a couple of shipped mobile titles and all of them were using Unity.

Bigboybobby said:
Online Multiplayer with low latency times

This is up to you, you won't get this for free, regardless of which engine or SDK you use! Latency depends on the server software you wrote, your internet connection and the amount of data you send over the network. Also the protocl may make a difference, TCP can have a higher latency in high trafficked network environments while you have to take extra care when using UDP.

Bigboybobby said:
Database connection

This won't be offered by an engine because databases are often not part of the gameplay and so won't be implemented into generic game engines. You can however get a database SDK for aa couple of language

This is up to you, you won't get this for free, regardless of which engine or SDK you use!

Unreal Engine, with Epic Game Services, is free, and gives you online matchmaking as well as online play. It also integrates with Google Play, Apple Game Store, Steam, and a few other systems, on the appropriate platforms. It uses the built-in networking in Unreal Engine, which is a lot better than what you get with Unity.

What you don't get for free is actual gaming servers, if you need them. Most games can just declare one of the players a “host” and make the game work that way (including host migration,) so you might not need that.

For database back-ends, I concur: you need some third party for that. The most-integrated systems look a fair bit like Firebase, or Google App Engine, or Amazon Amplify, or perhaps just a bunch of Lambdas and some Amazon RDS or DynamoDB or Bigtable or whatever Azure has to compare. Just don't talk directly to your database from the clients; you need a web server tier that can authenticate and filter out invalid requests. Note that database communications are generally totally different from gameplay communications. “Player X drew shape Y on the screen” should never be persisted in a database table. And, if all you need databases for are leaderboards and scores and accounts, you can probably get away without one, just using available game services. But if you want to store things like “unlocks” or “a picture of the screen when the game ended” or whatever, then you'll want your own data storage solution.

jon1 said:
Unreal Engine, with Epic Game Services, is free, and gives you online matchmaking as well as online play. It also integrates with Google Play, Apple Game Store, Steam, and a few other systems, on the appropriate platforms. It uses the built-in networking in Unreal Engine, which is a lot better than what you get with Unity

Networking is not online-multiplayer as it highly depends on how your wrote the server and I don't believe that that Epic is giving you the desired server and remote gameplay for free, this is something you have to work on on your own. Opening a socket is a matter of 30 lines of code while writing a propper server is a challanging and time consuming task, especially for testing.

jon1 said:
Most games can just declare one of the players a “host” and make the game work that way

It doesn't matter “where” the server is as there needs to be a server however you define it. And there comes the difficulty of creating multiplayer gameplay. It isn't enougth to just get and send some packages of data, you have to synchronize game states and whatever your game also requires

Networking is not online-multiplayer as it highly depends on how your wrote the server and I don't believe that that Epic is giving you the desired server and remote gameplay for free

What I said was that, if you use player hosting, Epic Game Services will host the matchmaking and other game services for free. One of the players game instances need to be the “host” (as I wrote above.) This is generally not that hard to implement, as all of the support to do this already comes with the engine, and the blueprint and object systems all have network-specific features ready to use. (You have to actually use them, of course.)

If you need server-side authority, such as for a MMO, a competitive MOBA, or a competitive shooter, then, yes, you need to host your own servers. GameLift can help with this, for example.

It doesn't matter “where” the server is as there needs to be a server however you define it. And there comes the difficulty of creating multiplayer gameplay. It isn't enougth to just get and send some packages of data, you have to synchronize game states and whatever your game also requires

I feel like you're either missing the point of my post, or you haven't actually used the built-in networking/replication/hosting/sync features of Unreal. Yes, you absolutely have to not do stupid single-player hacks when you develop your game, but all of the built-in controllers (character movement, projectiles, simulated physics bodies, vehicle controllers, and so on) work out of the box in networked mode, and the engine has a handy “start two separate instances of the game, with networking between them” button right there in the tool bar!

enum Bool { True, False, FileNotFound };

This topic is closed to new replies.

Advertisement