What do you want in a server platform?

I’m the author of Game Machine, and open source platform for running large and small multiplayer games. (https://github.com/gamemachine/gamemachine).

I didn’t start Game Machine as a way to make money. Not that it isn’t a goal, but it’s not the driving motivation. I wanted to bring to server tech what Unity brought to game development in general, and make it possible for indie developers in general to make highly complex multiplayer games like virtual worlds, without needing to have a lot of development experience.

To be blunt, I think not just Game Machine, but a number of commercial companies who are also trying to solve this problem in various ways have, have largely failed to connect well with developers. I think I have some idea of what has gone wrong, but I’m looking for feedback from the community.

One area of failure seems to be that we don’t really connect with the problems game developers are trying to solve. For example, instead of releasing a number of feature specific modules you can just plug into your game and it solves your problem, we tend to release generic api’s and libraries that still require a lot of specific knowledge to actually implement and get working.

A couple months back this really hit home with me when I decided to eat my own dogfood and actually make a game using my own platform. 90% of my time ended up on the client side. Sure I had all the server functionality I needed, but actually making it work well on the client was much more involved then I had realized. I spent years making games, but focusing on just the server side for so long had disconnected me from the process of making games.

Another area that I think we tend to disconnect on is who we target. The majority of indie game developers might never actually end up with a game that is live on steam. Some might not even have that as a goal. But it doesn’t mean they still don’t want or need server tech that brings to life the features they want. I do want to recognize projects/companies that are doing well here, as there are some. What I see is that often the larger projects/companies with the most talent, tend to get caught in the trap of it being beneath us to work with developers who aren’t ‘serious’. It’s not an intentional thing really, but it happens a lot. I’ve done it, I’ve been part of numerous conversations with industry veterans who do it. The funny thing is that the success of Unity itself is largely due to not getting caught in this trap, and intentionally targeting game developers who are relatively new to almost every aspect of making games, and software development in general.

To try and wrap this up. Personally, I’m rebooting Game Machine with a different focus, based in large part on the above. But I really want to hear from the community in their own worlds what they would really like to see from projects and companies that specialize in server tech.

What is your biggest frustration when working with the tools we provide? What does the ideal solution look like to you? Do you want generic api’s, or do you want asset store modules that solve a problem for you end to end, in more of a plug and play fashion? And what have I missed here?

Chris

I think it’s pretty hard to come up with a generic API that satisfy everyone.Some multiplayer games are room based, some open. Heck ,it even depends on programming languages. You use Netty, which means Java. I’m not that great and fond of Java, so that’s already out for me. There are certainly companies trying to solve particular parts, like photon only focusing on room, playfab doing backend database (and partnering with photon). Of courser under 1 package would be ideal.

1 Like

A generic server api to cover a fairly wide variety of genre’s isn’t really that difficult. That’s like saying a web framework to cover most types of websites with all their features is difficult. I think what’s more accurate is that the state of game server platforms is just not that developed. That’s not to say that everything in a single solution comes from one company. Most web frameworks just do a really good job integrating third party libraries and tools.

As far as language choices, all I can really say is if you are making tech choices based on personal language preference you should rethink that. I don’t want to go off topic too much here, but there is a significant movement towards the JVM for game server tech going on, and it’s greatly accelerated this past year. And a majority of them are moving to the same core architecture game machine uses, with some of them even using the same underlying platform. A lot of this change is driven by social games. You have kind of a merging of AAA with social game companies, and even more people being hired across those boundaries, and almost all of the social game industry is based on open source. So as AAA studios have gained more exposure to open source, you start to see them migrate to it. The writing was on the wall for years it was just a matter of time.

I think the biggest issue is companies create really awesome packages but fail to educated the developers. For instance Photon is great, and but in my honest opinion has bad documentation. They show you an example but they don’t really tell you what really goes on with these modules they offer.

It would be great if they had an in-depth tutorial series like “How to make an online turn based game”, “How to make an MMO” etc. with videos would be great just like Unity does. If companies did this, I think we would have a different story to talk about. Reading text is great but having a video where someone could talk about strategies is by far more powerful than simply reading documentation.

In the realm of Networking it is a very complicated area of game development since there are so many ways you could go about doing it, but there are more efficient ones than others. Things like this, is what I feel would speak volumes to developers especially indie devs since they probably don’t have a lot of time to try and read your million page documentation that is probably bland to start off with.

Photon is super popular because it works great but…you could do all that yourself using Unity Networking. I started using Photon but then stopped since I still had to code and read documentation to get things going I just stopped and said fuck it, if I have to read to get this working I might as well build my own Networking solution using native Unity Network system which I did. In fact when I looked up videos on Photon on their website, they pointed me over to someone else who did a tutorial about Photon…not even their own company someone else did it…I was like blown away by that.

And this is not just with Photon…majority of people seem to lack the knowledge to show someone how to use their plugins yet…they build it and charge for it…amazing isn’t it. Bolt is a great plugin that has very very very little coding, and the guy that works on the project has some videos on how to set up everything which is amazing. I found about Bolt after I had finished making my own system…so yeah I was pretty pissed but eh I learned to make my own system and it works great.

Just my opinion.

Yeah, I think the company/developer who educates us to networking and makes it feel “natural” will get credit and probably more customers.

A dirty little secret in programming, in my experience, is that you have to do all the legwork yourself while other programmers act condescending about what they know (often that they just learned). So if a company trying to sell something uses a bunch of buzzwords, and quickly hashed tutorials, it feels condescending to me. On the other, if they give the impression that they’ll take me by the hand (via diagrams, etc), that helps. And I don’t have to admit it to anyone :wink: I’ll just become a fan.

When I think of modules I think of “MMO” or “RTS”. Is that what you mean? If I’m choosing between a series of modules and one is the “synchronous semi-time auto-authoratative with fail-forward cache optimism” then not so much (I made up that category using buzzwords btw.)

The module idea sounds good, too. But two caveats: one, without an overview I don’t really know what components I want. or what options I should be worried about.

Two, it may be that the problem is much bigger than tutorials or components. Trying to sell people on a wave of technology change is often best left for the well funded. :stuck_out_tongue: Let’s not forget Unity has several rounds of financing to reach their goal of a democratized game client.

I think a big priority should be setting up a nice interface and application to unity, running it all from within unity always has costs and is not needed. Area of Interest for updates and Zoning areas to other servers is something I’d love to see and I think a lot of people would appreciate. SmartFox does this really gracefully but it isn’t that powerful and it forces it to ALL BE DONE ON ONE SERVER sigh… which is terrible unless you are remaking club penguin :wink:

Also I notice a lot of stuff in the roadmap like status effects and siege battles? So for an MMOFPS? MMORTS?

I think the dream of any indie developer is to have something like Gamesparks combined with DarkRift where you can customize your server and have a backend integrated into it, hosted on the Cloud.

1 Like

I am not sure if I understand what is the problem with the one server.
If you run any modern and relatively inexpensive 8 core machine you can easily handle tens of thousands of Users. We have tested 120K on a single machine, and you can always organize your MMO map on multiple servers. The “jump” from one map on server X to another map on server Y can be totally transparent to the player.

My 2c :slight_smile:
Lapo