First big game. Which engine and how to handle multiplayer?

Started by
17 comments, last by Worstboy 9 years, 4 months ago

I'm planning to start on a game soon which I plan to release.
So far I only made small games for college and for myself to test things out and to learn from.
I want something bigger now and I want to release it on as many platforms as possible.

Engine
I have quite a lot experience with Unity, Flash/AS3, Java and I have created many Minecraft plugins/mods.
My question is though what would be the best option for a engine/sdk to work with?
I would like my game to work in browser through html5 canvas or something else. Unity has of course a web player but I don't want it that users are required to install this. I know they are releasing html5 support soon but I don't know if Unity would be a good solution for this.

I looked at several other options and since I have quite a lot experience with Java already I thoughtlibgdx might be a good solution.
I have zero experience with this though and after reading a lot tutorials and documentation I'm not sure this what would be best for me.
I also prefer working with something that is object orientated I tried looking into turbulenz but I don't think it would work well with a big project.

So my question basically is what is the best engine to work with if I want to have it for multiple platforms.

Multiplayer
My game will also have a multiplayer mode and I don't have a lot experience with this yet.
I found this framework by onedayitwillmake. and it seems really good for what I need.
Most engines have support for multiplayer through basic sockets but this seems a lot more efficient.
I'm wondering though if this will harm the data usage of network on mobile devices though as it's sending more data (I think). I don't have a lot experience with this so I kinda need a direction to go in.
Also if I do decide to use this framework would it be easy to use it in lets say Unity or libgxd?

I might be asking a little bit too much here but there are just soo many possibilities with frameworks and engines etc that I kinda need a direction to go and something to start with.
So basically I just need to know some tools I should use for my game and what the best workflow is.

Some information about the game/project:

  • Multiplayer 2D game
  • Platformer/Sandbox
  • It's going to be a really big project with many game modes like:
    Adventure[sp],survival[sp],sandbox[sp],co-op[mp],competitive[mp],(pictionary guessing type)[mp].
  • Preferrable on both browser and desktop/phone.

The idea is basically that you get a picture for example a house and you need to collect resources like wood and reed to build that house. And each gamemode has different types of gameplay of course. With this concept of collecting and building there are many other game mode posibilities.

I obviously have many more questions but I first just need some opinions on which engine and which multiplayer option would fit best for my game idea.

Advertisement

Check out phaser for a good javascript game API to create great 2D HTML5 games.

As far as multiplayer support, I'm not real sure, but google has tons of examples of making multiplayer games using html5 and javascript.

My Gamedev Journal: 2D Game Making, the Easy Way

---(Old Blog, still has good info): 2dGameMaking
-----
"No one ever posts on that message board; it's too crowded." - Yoga Berra (sorta)

Check out phaser for a good javascript game API to create great 2D HTML5 games.

As far as multiplayer support, I'm not real sure, but google has tons of examples of making multiplayer games using html5 and javascript.

Thanks, but Phaser doesn't seem to support other platforms like android etc.

I would like to make the game for (all) platforms.

So you want a game engine that runs on 8 different major platforms with all their variants, plus web play, with screen sizes ranging from 4-inch 640x480 to giant screens having 4k and 5k resolutions, plus has solid network play across all kinds of networks from 3G phones to corporate LANs, and all with minimum installation requirements, all with a single shared source code and asset base.

Is that all? happy.png

Really that means Flash-based engines, Java-based engines, and Unity. If you remove the web requirement you can also chose Unreal. I know that doesn't help much for decision making. Try several, pick whatever best fits your design and programming style.

There are many engines capable of doing what you describe. The harder question is if you are capable of doing what you describe. No matter what engine or tools you pick this will be a big undertaking. Among other things you'll need an army of QA in order to reasonably cover all the operating system variants and hardware variants on each OS. That will not come cheap.

The multiplayer aspect is more an question of design than engine choice. You'll need a design that functions well with the latency and network propagation time. You'll need a design that packets can play well on many different types of networks, including cell phone networks with their crappy connections.

Just writing "...sandbox[sp],co-op[mp],competitive[mp]..." is really not enough to go from. You will need (in your design) to go in great detail before doing much with code no matter your engine choice. You'll need to figure out your protocol, you'll need to figure out how you will handle servers and matchmaking and connections, you'll need to figure out how to handle latency and delays and stalls and drops, you'll need to figure out how to resolve conflicts and what is authoritative, you'll need to figure out how to correct things when they inevitably go wrong. You'll need to figure out what is significant and gets transferred versus what is unimportant or what is computable and does not get transferred. Those details give each game their own unique feel.

If you go with Unity, the networking aspect means you need to design carefully about what features matter for networking. The simulator does not support a "rewind time and insert this event" that is currently popular in fast-paced games. You can run a mini-simulator within the engine that handles that type of work, but there is a significant development cost. The built-in physics engine and other GameObject state can get a little wonky and slightly different if you let each machine do its own simulation, so your design needs to be flexible enough for that, or you can work hard to overcome that kind of drift inside the implementation details.

If you go with a Flash or Java engine -- and there are many to choose from -- you're going to have similar design concerns.

Thanks for the answer Frob!

I know I didn't explain much about my game that's because I spend quite a long time on this idea and my game design doc has over 75 pages already with details about the game.

So I don't just want someone else to take the idea and make it before I do and claim all rights.

For any specific questions about the game I have in mind I can answer but I'm not going to share all details. :p

And yeah, I'm asking for a lot and I'm not even sure if it's needed.
I'm new to publishing game and making games for the public I only made some games in unity etc for myself but now I want to to a step forward by making a big game.

I don't even mind if it's never gonna be released or something I just wanna learn from it and have made something awesome and big instead of only small trial games and projects.

If I do release it though, I want users to be able to just play it anywhere they want with what they have.

It's gonna be a big game but it's not 3D and it's not gonna need that much power to run it.

So it would fit fine as a mobile game and as a web game so that's why I thought to make it on platforms.

I'm going to be mostly doing this project alone though as a big side project over the next year(s) so I'm not sure if it's smart to go for all platforms.

I seen a lot small indie games do it though so I thought there would be engines/tools that had full support for it.

That's why I'm asking here for some advice on what engine would fit best and what will be the best approach to do it.

Like maybe I should only focus on browser as that can also be played from mobile and desktop etc.

But then again I would like some advice on this if that's a good approach and if it is why and why not etc.

Maybe I should just go for unity, as the development of this game is gonna take a long time (probably over a year).

By then Unity most likely has browser support without plugin.

I have the feeling though that Unity isn't very efficient especially on mobile.

And have the unity logo in the intro also looks kinda bad and I wont have the money to purchase Unity pro unless I do a kickstarter for the game.

But that would put a lot more pressure on it and I just wanna do this game as a learning experience and to make something public as I never did it before.

So I'm also not sure about that.

For the networking could you tell me what the big difference is between onedayitwillmake framework and like TCP/UDP socketing stuff?

If I get it right the approach from onedayitwillmake just handles everything on the server and only gets the input from players through sockets and then sends back the scene with all physics and movement etc applied.

This seems like a perfect approach and he has handled things like packet loss perfectly it seems but as I imagine it then it seems like huge packets are sent from the server to client to send the whole scene/window with all changes.

I see it as just sending over a image to the client every update but I probably understand it completely wrong :p

I haven't planned out any network stuff like lobbies and rooms etc yet I planned to do that next but then I stumbled on to engine stuff and decided to ask for some advice on both topics here.

I might be asking too much here and I can probably figure things out but people here have obviously a lot more experience with these kind of things and might have advice and opinions which I would never find otherwise.

I know I didn't explain much about my game that's because I spend quite a long time on this idea and my game design doc has over 75 pages already with details about the game.
So I don't just want someone else to take the idea and make it before I do and claim all rights.
For any specific questions about the game I have in mind I can answer but I'm not going to share all details. tongue.png

To be honest here in particular that's going to get you laughed at more than anything because it just makes it sound like you have zero comprehension of how much work making -any- kind of game is.

We're not all working folks here instead of billionaires because of lack of ideas, we are because making games is a labor of love at best. Frankly if someone has the ability to make a game and they aren't employed they are going to want to make their idea, not yours.

And yeah, I'm asking for a lot and I'm not even sure if it's needed.
I'm new to publishing game and making games for the public I only made some games in unity etc for myself but now I want to to a step forward by making a big game.
I don't even mind if it's never gonna be released or something I just wanna learn from it and have made something awesome and big instead of only small trial games and projects.

If you're really serious about making money you're probably going to want to focus on mobile, it has the least entry requirements by far. Even a game like goat simulator that sold well on desktop by virtue of basically being a fluke, still took a team of more than one person(as far as I know.)

Most developers completely lack the ability to polish a game, that tends to stand out a lot more to employers and such than a bunch of tech demos because it shows you have a knack for detail, stuff that makes them more money.

Maybe I should just go for unity, as the development of this game is gonna take a long time (probably over a year).

Unity is certainly a popular choice, it gives you a lot of tools, but targeting every platform with one game is frankly almost next to impossible. There are very few games out there that will appease a desktop crowd and a mobile crowd with the same game, especially since the desktop crowd would find the thing simplistic as can be because of the limitations imposed on mobile games, even with how fast technology is evolving.

I know how much work it is to make a game but I also know how difficult it can be to think of unique gameplay nowadays.

During my study I learned basically never to share your ideas in public, as ideas can't be copyrighted and products can.

If I put up the entire game design/concept I'm sure nobody will make it like that but I just don't wanna risk it as I have spend quite a while coming to this final idea.

But as I said for any specific questions towards the game I don't mind sharing I'm just not gonna put up the entire concept.

Secondly I don't have to earn any money from it at all.

The only thing I mentioned was a kickstarter for Unity pro and other licenses.

My main goal for this game is to learn how it works to make a big game from start to end by publishing it.

And of course I love making games as it's my job and passion.

Why don't you download all the engines that might match your criterias (hint: you most probably can count the ones in financial reach on one hand, Unity is a t the forefront for sheer size of community (as Unreal doesn't seem to support HTML5 yet), and test them all out?

With the amount of information you are giving (or lack thereof), its gonna be hard for anyone around here to give you a recommendation tailored to your project, and really, depending on your project and what you REALLY need (As opposed to what you now think you need), a lot or no game engine could fit.

1) have a look at the engine DB on devmaster.net... maybe you see another engine you haven't heard about before on there.

2) Maybe explain in detail why Unity is not a good fit for your project... if you are REALLY serious about targeting all the devices, you WILL kill yourself with coding in support for that if you do not start from a good baseline. Unity is most probably as good as it gets when it comes to targetting different devices.

3) Networking: there are many options, if you go with Unity, have a look at the asset store. Some of the frameworks can even be downloaded for free (but then will of course force you to go through their servers / cloud service)

Be aware that AFAIK, there is no one-size-fits-all solution for networking yet. Even with a framework, you get basically a glorified chat server and some low level plumbing layers that give you high-performant building blocks to build your own server and networking layer with. This is a highly technical programming project though, that will need an expierienced programmer though!

If you are really serious about this project and that you need a multiplayer, make sure you plan in enough time for it, and attack it with the right expectations: You will have to get your hands dirty here.

And yeah, I'm asking for a lot and I'm not even sure if it's needed.
I'm new to publishing game and making games for the public I only made some games in unity etc for myself but now I want to to a step forward by making a big game.
I don't even mind if it's never gonna be released or something I just wanna learn from it and have made something awesome and big instead of only small trial games and projects.

If you're really serious about making money you're probably going to want to focus on mobile, it has the least entry requirements by far. Even a game like goat simulator that sold well on desktop by virtue of basically being a fluke, still took a team of more than one person(as far as I know.)

Most developers completely lack the ability to polish a game, that tends to stand out a lot more to employers and such than a bunch of tech demos because it shows you have a knack for detail, stuff that makes them more money.

Any evidence that supports your notion "concentrate on mobile to make money"? AFAIK, mobile space has become a highly competetitive one where even AAA games cannot ask for more than maybe 5-10$, while the amount of low level crap games flooding the app stores that are free is staggering.

If you ask me, PC has the lowest entry requirments. But I also have no evidence to show, just personal opinion. You can get lucky on mobile of course, like flappy bird. But we are talking about one game out of a billion released. Goat simulator took more than one person to build, sold as much, while being a one out of a million lucky hit maybe.... yeah, your chances are not much better, but really, game dev IS a highly competitive field, so don't expect too much either way smile.png

mobile app stores are flooded to the brim with games, and income per sale is much lower. On the PC side you have to find your niche, use the Indie / Boutique game craze going on at the moment, and find the right outlet (Steam, if you can make it).... still, you could ask 5-10$ for a game that you might not get 1$ for on mobile, and still some people would pay it, if the game is good enough.

All personal opinion, of course.

100% agreed on the second part though. A finished and polished product shows dedication, expierience and a 'get-it-done' work ethic that a lot of people nowadays lack.

I know how much work it is to make a game but I also know how difficult it can be to think of unique gameplay nowadays.

During my study I learned basically never to share your ideas in public, as ideas can't be copyrighted and products can.

If I put up the entire game design/concept I'm sure nobody will make it like that but I just don't wanna risk it as I have spend quite a while coming to this final idea.

But as I said for any specific questions towards the game I don't mind sharing I'm just not gonna put up the entire concept.

Secondly I don't have to earn any money from it at all.

The only thing I mentioned was a kickstarter for Unity pro and other licenses.

My main goal for this game is to learn how it works to make a big game from start to end by publishing it.

And of course I love making games as it's my job and passion.

See it like that:

Most people capable of snatching your idea, turn it into a working game AND good enough to finish it, most probably are busy with their own ideas at the moment.

Sad story is, no matter how good you think your idea is: without the execution its worthless. Nobody will pay you a penny for it, and most people will think its crap. Because they might not understand the same thing you do from your written notes. Its ONLY the execution, how you turn this ideas into a working game, that counts.

If you learned not to share your ideas then you learned something wrong. Keeping ideas close to your chest until they have evolved into something good is a brilliant idea. Keeping them from the potential client until have something to show that gives a good first impression is wise. Not sharing it with people you are asking for help is not so a good idea.

Always share as much as you need to, of course. No need to go into detail about your exact implementation if you are just looking for general guidance on your story idea, or a single gameplay system. But really, sharing ideas can be a wonderful thing. The game dev community wouldnt be were it is today without people that, at a convinient time, shared ideas they kept close to their chest with others. Without all the blog posts where an expierienced dev shared how he implemented feature X in game Y or pot-mortems showing how they did game Z, becoming a game dev would be much more expensive and harder for people.

And all the sharers get free exposure and advertisment for their upcoming or existing games in return, AND they might be using things other devs shared the same way.

Anyway, TL; DR;

It is your choice how much of your ideas you share. Chances are very good nobody here will steal it, as turning an idea into reality is the hard part, not coming up with the idea. Chances are everyone is busy with their own ideas, or you idea is just not good enough to be stolen.

Just because you release some information about part of your idea, high level concepts and so on, does not mean you have to put your GDD on this forum. Nobody is aking for that to give you general guidance.

In regards to multiplayer, I would advice you that you set up the structure of the engine in such a way that a singleplayer game from the engines perspective is a multiplayer game that only has one local client attached.

Worked on titles: CMR:DiRT2, DiRT 3, DiRT: Showdown, GRID 2, theHunter, theHunter: Primal, Mad Max, Watch Dogs: Legion

Thanks for the answer Gian!

I'm going to take a look at devmaster for sure never seen that site before and it looks really useful.

I'm not really saying that Unity isn't a good fit.

It is a great engine and made many things with it but I was just thinking that there might be other ways.

The only downside is that things can get quite messy with big projects and with that I mean the way scripts work etc.

I love OOP and I'm just missing that feeling in Unity but it's not a big issue.

I looked at the asset store before and proton seems to be a good solution any thoughts on that?

And do you know the big difference between the framework from onedayitwillmake and most other regular and networking solutions?

I know there are many but the concept of all is pretty much the same and the concept of onedayitwillmake seems completely different.

The big advantage I see with this is that the game can just fully run on servers and clients just get a snapshot of it pretty much.

Only player input would have to be send from the client to the server but about the data send from server to client I don't really get it.

Like is it sending all pixels to the client?

I haven't dived very deep in to networking so I should probably first just continue learning more about networking and then I can probably figure it out.

I have the time for this project and I do it to learn things and that's also the reason I want to add multiplayer as I don't know much about it yet.

This topic is closed to new replies.

Advertisement