Jump to content

  • Log In with Google      Sign In   
  • Create Account

Banner advertising on our site currently available from just $5!

1. Learn about the promo. 2. Sign up for GDNet+. 3. Set up your advert!


Member Since 13 Dec 2002
Offline Last Active Mar 26 2015 11:43 AM

Posts I've Made

In Topic: TCP clients-servers-servers

21 December 2014 - 03:48 PM

It comes down to server tiering and instancing, as others have mentioned. Each shard could consist of a handful of top-level world servers, and beneath each of them could be multiple region servers, and beneath each one of those many instance servers, etc. Thousands of players may be playing your game at once, but each server would only have a handful of players of connected at once (or not have to do much work per player). You'd also probably have separate servers for logging in, chat, auctioning, finding instances, persisting player data, etc., that serve very specific purposes. Basically, the work is spread out across many servers that are each designed to do one task really well.


Of course, the game design itself would have to be amendable to this sort of stratification. If you're trying to design a game where thousands of players can battle it out at once ala EVE, you'll need a whole separate bag of tricks!



By nature, in an MMO there will be a point in which state must be shared between players in some manner. I help design, build and maintain massively multi-user telco services for work on the magnitude of 100k+ users per cluster. Oddly enough this is far less complex than an MMO :)


As was mentioned, it is always preferable to push out anything not "shared" to a series of load balanced services - i.e. find the smallest thing you can do on a large scale that is not visually time sensitive and do it well, then put it behind load balancers - authentication, chat, UI responses (menus etc.). State always becomes an issue here but many times state isn't as necessary as it seems. Perception is the key concept here and it will be different based on the mechanics of every game but there are some general assumptions that will be made.


Physics and collision detection tend to be things that must be housed in an instance of a specific maximum number of players for example. Proper game design and level/area/zone distribution can do more good than innovative code in these areas many times. Distributing wealth, items, quests across a more vast landscape will allow things to spread out much more than if things are concentrated in certain places. An example of this is "the best x in the game" where "x" is something only found in one spot. If there can be only 1 then the goal of many players will be to acquire this item. If on the other hand, there are many balanced items etc. in the game, players will naturally be divided on which ones they care to quest for the most.


As a service provider, our company has many issues to overcome however uptime/availability and load distribution tend to be the biggest daily engineering feats we manage on a daily basis. I can only imagine that an MMO has similar requirements as they too are ultimately a service provider.

In Topic: rate/hate/appreciate my mog server update model

28 September 2014 - 04:32 PM

First - good luck. I truly mean that and not in a sarcastic manner.


Any input I would have at this point in time would be pure speculation because despite the effort to be detailed about what you are doing, it is difficult to really grok what is going on.


I will suggest on a much more basic and probably unrelated level however that TCP is the way to go until you find it is not - and then check that again. I work in telecom where some people still believe everything must be UDP because "it is faster" when really there are only a few pieces that actually need UDP (RTP for example) where others are actually much less complicated and more scalable over TCP (SIP for example). Of course I am probably getting ahead of myself because I have to build massively scalable and redundant systems with load balancers etc. where none of this will matter to you but if I can help someone avoid the pain I feel every day because of myths and half truths it will be worth it.

In Topic: Many to one relation in an SQLite database

14 December 2013 - 06:03 PM

SQLite is a great tool to use as you migrate data from flat files. In fact I have been using SQLite for years for everything from config files to storing large data maps. There are so many tools for it and it is so light weight it is nearly as accessible as a human readable file but with a bit more kick.


That being said, and this is from my own experience - others may vary, just get your flat file data into SQLite however you find most intuitive to you (or your team) at first. In most cases the size of the data will be very small (relatively speaking in terms of DB performance) and the overhead of trying to learn SQL, Entity Relationships and all of the nuances of how to improve your DB performance are useless until you identify your database as being a performance issue. In many ways this is premature optimization. What you are doing is fine as long as you get the results you are looking for or at the very least get the same information you got out of the flat files.


Normalization of your database with foreign keys and foreign key constraints is tedious and time consuming to do correctly (once available the tendency is to lean on them which causes issues on it's own). Learning how to design, manage and run a database can ultimately lead you down a path to not completing your game. That is not to say time spent on learning the intricacies of database design, management and optimization would ever be a waste of time (I spend a lot of time doing this for work) however it will be a distraction from getting your game completed. Also in my experience, rarely has a database design been a bottle neck for any projects I work on until down the road when there are 1-3k+ users all adding and reading data at the same time. Granted the DB is almost always a bottle neck when we reach certain user thresholds or data sizes however at this point the applications are usually working well and the time spent on the database has more focus since the application has had time to mature and we know what kind of performance we are looking for.


I will repeat myself and say that overall I would do what is most intuitive for you and your game - especially if you are the sole developer. Database management has many religions and like any religion there are zealots who believe their word is Dogma and we all know how that turned out for Cardinal Glick. Once it is working for you the worst that can happen is you improve it.

In Topic: Benchmarking servers

06 September 2013 - 03:23 PM

It may help to use something like collectd to throw various metrics you think are important at while your game is running at specific intervals while doing load tests. This results in some nice trends that let you make SWAGs about how your server should operate given a certain amount of hardware resources under certain amounts of load. Once you have some theories, establish ways to validate or invalidate them.


Every game server will have different requirements and different metrics it finds important but in most cases, being able to trend what is happening is required for any kind of trouble shooting or bench marking.

In Topic: Why companies still use C++ and what should I learn then

25 July 2013 - 12:56 PM

Programming is a task. The language is a tool you use to accomplish that task.


Just like any task, there are many ways and many tools you could use to accomplish that task both correctly and in a timely manner.


For example - Should you learn to use a hammer or a nail gun first? It really depends on what the job calls for but you are probably encouraged to continue to learn about any tools that can get the desired result.


In our company we generally hire people who have demonstrated the ability to learn multiple disciplines even if the one we are looking for isn't their strongest one (so long as they are proficient in it). Learning something is never a waste of time. You know what you can do and what is comfortable for you. Some people can pick up complex languages with relative ease, others need to wade in. The thread has given many opinions from people who work in your targeted industry (or claim to at least). The choice remains yours in the end however and your success will ultimately depend on how much you are willing to change and adapt to the employment environment you are seeking out.




It is not the strongest of the species that survives, nor the most intelligent that survives. It is the one that is the most adaptable to change.

~ Charles Darwin