Advertisement

languages needed for MMORPG

Started by July 05, 2019 02:35 AM
7 comments, last by Shaarigan 5 years, 5 months ago

I did some programming in high school,  Mostly independent study since then.  Realizing I need more resources to make headway, sooooo...

I've chosen c++ for my main programming language, but what other languages should I learn to (don't laugh) program EVERYTHING myself?

client, server,graphics, sound...

Already know I'm insane for contemplating it, but I consider it a masterwork in progress and want to get a basic version running before MAYBE recruiting help.

39 minutes ago, thiodolfr said:

I did some programming in high school,  Mostly independent study since then.  Realizing I need more resources to make headway, sooooo...

I've chosen c++ for my main programming language, but what other languages should I learn to (don't laugh) program EVERYTHING myself?

client, server,graphics, sound...

Already know I'm insane for contemplating it, but I consider it a masterwork in progress and want to get a basic version running before MAYBE recruiting help.

You can program the client and server with C++.

Programmer and 3D Artist

Advertisement

okay, Is there a better way to communicate between the client and server?

 

7 minutes ago, thiodolfr said:

okay, Is there a better way to communicate between the client and server?

 

What limitations have you found by using C++ that would make it not a good choice for the client and server based on your project requirements?

Programmer and 3D Artist

1 hour ago, thiodolfr said:

I did some programming in high school,  Mostly independent study since then.  Realizing I need more resources to make headway, sooooo...

I've chosen c++ for my main programming language, but what other languages should I learn to (don't laugh) program EVERYTHING myself?

client, server,graphics, sound...

Already know I'm insane for contemplating it, but I consider it a masterwork in progress and want to get a basic version running before MAYBE recruiting help.

Geezzzz. You sound like my clone (probably a younger version, LOL) . Welcome to the crazy MMO builders club! High five!

I'm using C++ too. But I haven't settled on a scripting language myself. I'm debating doing my own, since I did a couple of them in previous jobs. My preference if for a language without a GC but then referenced counted languages can have issues with data loops.  So many decisions.

 My preference if for a language without a GC

GC?

 

Advertisement
8 minutes ago, thiodolfr said:

 My preference if for a language without a GC

GC?

 

Garbage Collector

Anything works to setup an MMO and there are plenty of frameworks out, even for those engines like Unity found in their Asset Store. I also met someone who was presenting his barebone MMO on a meetup so anything is possible.

As for an MMO you first need to write your engine as for every other game but plan and focus on a larger scale in for example Multithreading, Network communication and most important your workflow on managing and building the project. Trust me, when I started 6 years ago to get the (general) game engine of my dreams to life, any slowdown occuring was because the project and building environment was not well organized. Today I invested lots of time into management tools I wrote by myself and it was worth it because everything I need is just a command line away.

A general advice I can give for network communication is to really really think well about what you want to achieve and then rethink it twice. For an MMO, performance is anything; you don't want to write network code that runs like a rabbit through a tube, so it works well when you are alone on the server but gets into trouble when the normal workload of clients are connected.

Linux and Windows have different network stacks, you best start with the windows IOCP model and then mimic the behavior with Unix Poll technology. The other way round is very difficult to achieve.

Using IOCP is necessary to get arround the socket connection limit and drive your server with less resources than the usual blocking socket approach could offer.

Mixing different network protocols is also something to make some performance. TCP is a request response protocol so every package send via network requires the sender to send a response on the socket layer otherwise the package isn't dequeued from the sender. Network traffic can slow down this process and at least when your packages leave the private and enter the world wide public network, there is enougth traffic that can block your TCP packages from arriving. I use TCP and a proper endpoint encryption for example to send authentication data or important account data.

UDP is the fire-and-forgett protocol you put a package to the network queue and don't expect an answer. This is usefull for small fast data like player is moving, player is fighting, player is talking kind of messages. You however need to detect connection-loss by yourself in this scenario

This topic is closed to new replies.

Advertisement