Recommended Posts

Are there any good books on the topic of MMORPG or RPG engineering. (like MU)

I'm more interested in the server side architecture than client side. A book concentrated on rpg server development is preferred. I understand that there are too many topics to be covered in a single book.

I'm looking for a book that will give me an idea about:

  • Principles, ideas with example code or pseudocodes...
  • Project structure
  • Code structure
  • How to properly structure the game loop
  • How to handle zoning
  • How/Where to handle AI
  • Threading (what should be in separate threads)
  • Multi servers (what should be in a separate server/machine)
  • Putting it all together

The book could also be on developing RPG's and I can just adapt it for multiplayer (server side).

I currently have these books:

Don't get me wrong they are great reads but they are mostly geared towards designing game-play, economy and solutions to common problems; some even marketing.

Except for Multiplayer Game Programming which has some of the things I'm looking for but I'm still looking for more or a more comprehensive book.

I considered looking into an open-source server for ragnarok online but it's already so matured that it's hard to follow the code and thought process of the developers.

Share this post


Link to post
Share on other sites

I'm not aware of any books that specifically deal with those subjects in the context of an MMO.

Most of what you've listed is fairly basic game implementation and software engineering. Maybe something along those lines would be useful for you.

Share this post


Link to post
Share on other sites

I can see what you asked, but let's approach this from a different direction.  The direct question of "are there any good books" will just create a library that you'll never read.

 

One approach is the for us to play 20 questions with you.  Can you already make a "Guess the Number" game?  Can you already make a Tic Tac Toe game?  Can you make a Connect Four clone? Can you make a Pong clone? A Tetris clone? A Breakout clone? A Space Invaders clone? An Asteroids clone?  Can you make a Galaga clone? Can you make a Super Mario Bros clone? Can you make them with multiple players on a single machine? Can you make them with persistent high scores systems? Can you make network chat clients?  Can you embed a chat client into your game?  

If you answered "yes" to all of them, congratulations. you don't need those books.  Otherwise, stop at the first "no" and we can help you grow from there.

 

Or we can approach this assuming you know a bit more, with broader questions.  

On what technology scale are you looking to build? What tools are you planning on using?

You could start with RPG Maker and put together a fairly good RPG with very little work, and with minimal software development skill.  Even game development beginners can turn out a decent (yet small) game in a few days with that.  You might try building something with GameMaker:Studio or GameSalad or Construct, they're rather comprehensive and easy to use even for people not familiar with programming. You might try something even bigger requiring more skills and effort, such as using Unreal or Unity as your engine, developing on from there. You might try simpler tools and libraries, maybe leverage SDL or Marmalade or LibGDX or Cocos2D-x, or any other libraries. Or you might be considering building everything from scratch yourself, which is about the most ambitious plan.

Is anything blocking you from using those tools effectively?

Do you have what it takes to build the game you want with those tools?  If you're using tools for C++, or C#, or Java, or some other language, do you know them well enough to build what you want to build?  If not, there is your thing to learn.  Do you need more knowledge or more experience on specific topics within those tools? Only you know what you already know on the topics. Maybe you have minimal skill with the language. Maybe you're somewhat experienced with simple programming but need to learn more about specific topics, perhaps algorithms and data structures regarding containers, or searching, or graph manipulation, or state machines, or IPC, or networking, or whatever else. 

You mention learning about server side, so you may need to get comfortable working with databases, get comfortable with writing communications libraries and protocols, get comfortable working with connectivity meshes and data persistence requirements, or keeping data consistent between machines, or working with locked resources, or understanding data isolation levels.

If you already know how to use those tools effectively, then try again with the first list. Can you make "guess the number" using the tools? Connect four? Pong? Tetris-style and Breakout-style games? Networked chat? Networked Tetris-style and Breakout-style games? Galaga-style shooters? Networked Galaga-style shooters? 

 

At some point there is a boundary; one thing you are able to make today, the other thing you currently lack the skills or experience to make.  Nobody knows what you should be learning (not even you) until you understand where that boundary is.

We need to understand what it is that you want to learn. With that we can direct you to resources to help you learn it.

Share this post


Link to post
Share on other sites

Adding to what has already been said...

5 hours ago, majidarif said:

I currently have these books

You have 90% of what you need to know. Given that you asked about this 3 years ago as well, I think your real problem is that you're procrastinating and waiting for the One True Book that will give you everything you need, instead of having a go right now and learning as you go along. But major software projects like this are not things you can just copy out of a book.

You have a 'shopping list' of all the things you want to know about - but almost all of them are covered to some degree in the books you have. Why do you think that the next book will give you a better answer than they already did?

Regarding those specific things, here's my very short summary:

Principles, ideas with example code or pseudocodes... - the Massively Multiplayer Game Development book has plenty of those. If they don't fit your project, start a topic here about your specifics, and how they differ from what you've read.

Project structure - start simple, and refactor as you go. You might want to consider keeping your server code and client code in separate libraries, maybe with shared code in a 3rd library. The rest is entirely up to you.

Code structure - this is the same as project structure.

How to properly structure the game loop - there are many articles on the game loop, all of which can work for you.

How to handle zoning - depends how you want zones to work. Pick something, then you can ask a specific question.

How/Where to handle AI - the server runs AI for the non-player characters. Clients will handle NPCs in a similar way to how they handle other players, i.e. the server tells the clients what they're doing.

Threading (what should be in separate threads) - whatever you like. Probably nothing, to begin with, until you get a decent understanding of what can be multithreaded. This is not MMO specific.

Multi servers (what should be in a separate server/machine) - again, whatever you like, and probably nothing to begin with.

Putting it all together - just do all the above things.

 

Share this post


Link to post
Share on other sites

After reading the replies. I realized that Kylotan is right, I am procrastinating. I keep worrying that I might start with incomplete knowledge and would make bad design decisions early on which could cause huge problems when I move to production.

Now, I'm thinking I should just start and ask specific questions along the way.

Thank you to everyone who replied. Will be back with a bunch of questions soon. :)

Details on project:

  • Client: C++, not much problem here. (work in progress)
  • Server: Golang, design confusions here. (procrastinating)
  • Database: MySQL/Couchbase, not sure yet but no problem here.

I'm also collecting game programming books. Are there any books you guys can recommend?

Edited by majidarif

Share this post


Link to post
Share on other sites

You will make bad design decisions early on. So do the professionals. The difference between them and the rest is that the professionals just get on with things, and fix things up as they go.

Regarding your server 'procrastination', I'd suggest just getting started on receiving information from a client and broadcasting it out to other clients. Don't do too much client work until you have this working because the server controls the game, not the client.

Share this post


Link to post
Share on other sites
16 hours ago, majidarif said:

I'm also collecting game programming books. Are there any books you guys can recommend?

Again, without knowing exactly what problems you are facing and what skills you currently have, recommendations are nearly useless.  With that in mind, here's my recommendations for books

Since it seems you're just looking for a collection of books, I'd recommend whatever is on the bargain bin at the bookstore and whatever you can find in secondhand stores and yard sales.  Some will have good stuff in them, you'll be just as likely to read them, and they're cheap so you don't feel as bad when you sell them yourself at a yard sale or secondhand bookstore.

Share this post


Link to post
Share on other sites

Well, my book of course :-). It is titled "Development and Deployment of Multiplayer Online Games" (planned at 9 volumes, currently Vol. I is printed, and Vol. II - Vol. III are available as early beta). E-book versions are available on Leanpub: https://leanpub.com/b/development-and-deployment-of-multiplayer-online-games-part-arch, and paperback Vol. I got to Amazon a few days ago. 

A bit of bragging - "Early Praise" page within the book includes references by such people as Glenn Fiedler, Matt Pritchard, two GDC speakers, and CTO-like guys from more than one billion-dollar company...

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


  • Forum Statistics

    • Total Topics
      628697
    • Total Posts
      2984271
  • Similar Content

    • By Sri Harsha
      Hi,
       
      I have a triangle,oriented in a 3D Plane i.e. I have my vertices as (x1,y1,z1) ; (x2,y2,z2) and (x3,y3,z3)
      I am trying to convert this triangular facet to voxelised model i.e.
      Along each edge,I am applying Bresenhams 3D Line algorithm and generating intermediate points.After generating intermediate points, I want to fill the inside region.
      I have been searching for some algorithm like flood filling,but did not find anything relevant till now.
      I would be really glad,if some one can provide an algorithm for achieving this.
      I basically have a List of tuple for storing all the (x,y,z) data created along the edges.(generated using Brsenhams 3D Line algorithm).
      Now,I want an algorithm,which creates cubes in the inside region.
    • By pabloreda
       
      I am coding the rasterization of triangles by the baricentric coordinate method.
      Look a lot of code and tutorials that are on the web about the optimization of this algorithm.
      I found a way to optimize it that I did not see it anywhere.
      I Only code the painting of triangles without Zbuffer and without textures. I am not comparing speeds and I am not interested in doing them, I am simply reducing the amount of instructions that are executed in the internal loop.
      The idea is simple, someone must have done it before but he did not publish the code or maybe in hardware it is already that way too.
      It should be noted that for each horizontal line drawn, of the three segments, you only need to look at one when going from negative to positive to start drawing and you only need to look at one when it goes from positive to negative when you stop drawing.
      I try it and it works well, now I am implementing a regular version with texture and zbuffer to realize how to add it to this optimization.
      Does anyone know if this optimization is already done?
      The code is in https://github.com/phreda4/reda4/blob/master/r4/Dev/graficos/rasterize2.txt
      From line 92 to 155
       
    • By @Teejay_Cherian
      This is for a dissertation im working on  regarding procedural generation directed towards indie Developers so if you're an indie dev please feel free to share your thoughts
      Does run-time procedural generation limit the designer's freedom and flexibility? if( Have you ever implemented procedural generation ==true){ talk about  some of the useful algorithms used}  else {explain why you haven't} Do you think indie Devs are taking advantage of the benefits provided by procedural generation? What are some of the games that inspired you to take up procedural content generation? If there is anyway i can see your work regarding proc gen please mention the link ( cz i need actual indie developers to make a valid point in my dissertation) Thank You So Much
    • By electrolysing
      Hello,
      when I have multiple Threads, reading and writing to a scene graph, how do I synchronize data over several nodes?
      I.e. when a character with a gun moves, the gun moves with him. A thread dedicated to calculating matrices of both objects might update the character first but before it is able to recalculate the gun's matrix the render thread is already drawing both. Inevitably this causes the character and the gun to be out of sync...
      Now this doesn't only apply to the renderer but for the other threads, too.
    • By Kaskerh
      I recently bought a new mobile phone (Samsung Galaxy Note 8) , i just want to know , which the best Andriod app ?
      I am going to install some app to manage phone  , it is mainly aimed at data management and cell phone space optimization, my phone has enough memory to store them
      What do you recommend ?
  • Popular Now