Advertisement

Online RPG Game Programming

Started by January 25, 2016 04:25 AM
23 comments, last by JS_means_JackSparrow 8 years, 10 months ago

Well, first I have to thank you Looniper for all the time you spent here in this thread. I appreciate that a lot really.

I'm sorry guys if I wasn't too explicit in my question and if it is some information that I didn't give you.

I'll explain you what are my expectations to learn (yes, i'm not looking to earn any dollar or distribute a game, i'm just looking to build something for self-learning, because I like game development and I think it's one of the best practices for training yourself into programming).

It's a fact that I didn't develop any game yet, but I spent a lot of years in another game developing community which it was a forum just like this one where people were developing a 2D game called "Argentum Online" (you can google it, it's a free open-source mmorpg 2D game developed in Argentina, which is my country). As I was saying I spent a lot of time there, learning by reading how a basic client-server game works. So I have some little of experience, but I'm not an Engineer and nothing closer.

I'm just looking to learn by creating this game that I told you.

Basicly what I want to build is, as Looniper correctly said, a 2D Online RPG to the rank of 100 users online. The graphics will be top-down 2D not isometric, the tile-grid in 64 pixels and the only control directions are UP, DOWN, LEFT, and RIGHT. I know this is just details but it's just the best way that I can use to explain you what I want. Because as I said i'm not an expert and really don't know all the stuff and things that handle a Server Networking.

Finally, this is not a commercial 3D MMORPG as World of Warcraft as you were saying. This is just a 2D top-down graphics RPG and a server to allocate aprox. 100 users. So I'm just wondering what are the first steps or the main path that you recommend me to go through.

Thanks you a lot guys really.

Sounds achievable to me. That said, I'm on year 3 of my own RPG solo project so you should expect it to take quite some time. Or is it year 4? I've lost track. So much to do and so many wheels I've reinvented, thrown out, and then reinvented again.

The first steps you should take depend on what steps you've previously taken. If you've already have a few games under your belt then perhaps you already have access to libraries or code for stuff like displaying & animating sprites and user interface stuff. If you can get a sprite on a screen, maybe experiment with getting a tilemap going for your game world and then get a character up there and walk around a bit. Then maybe look at populating the world a bit with things like trees, towns, or whatever fits your vision. Once you got that going maybe take a stab at looking into getting the networking components going so that you can have two players connect to the game and walk around the world at the same time.

If you don't already have some idea in your head how to approach any of that then you probably have some more fundamentals to learn. Spend the time investigating the specific area that you feel like it'd be worthwhile to start with. And if it turns out that there's further fundamentals that you need to learn before you can proceed on even that area, then go learn those. And so on. But if you already know all this, maybe ask for help on a specific area that you'd like to focus on for the next while. Asking for general advice on how to put an RPG together is too broad of a question.

Try and work on things such that if the project collapses you'll be able to reuse at least some of the work that you've done to that point. Maybe the bits of code you have for animation or the stuff for getting a world map generated or maybe some start on network functionality. Try to always move forward in some way for each element needed for your game so that regardless of success of failure, the next project will go better.

Good luck.

Advertisement
Just to put this on the table, I know we see far too many "How does I MMO" threads, and I understand the chafe that comes from people thinking that game dev is trivial work, but the salt could really stand to be toned down.

A lot.

Especially in FB threads, though I get that this one was moved.

In this case OP didn't really even transgress. There's a stated goal of MMO, but OP demonstrated awareness that there's hard work involved and made a general request for information. While it's certainly worth noting that this is indeed a long haul, it's not fair to OP if we take out our frustration over the other questions. OP is asking where to start learning, not where the 'make MMO' button is on the keyboard.

Just sayin'.
void hurrrrrrrr() {__asm sub [ebp+4],5;}

There are ten kinds of people in this world: those who understand binary and those who don't.
Basicly what I want to build is, as Looniper correctly said, a 2D Online RPG to the rank of 100 users online.

Make a note to your future self: Never, ever, EVER use the MMO monicker in a forum filled with people that do have an idea of game development. You will be shot down and hear a lot of "negativity" which basically is just people trying to help you get on the right tracks...

That is not an MMO. Not by an order of magnitude. This sounds like a fairly small online game. Certainly doable for a lone developer.

Now, I know some people think "Online game sounds bland, that is not sexy at all. Lets call it MMO, that will make it sound much cooler!"... its ridicolous when big studios do it (World of tanks a MMO? Don't make me laugh! A persistent player garage and stats and a chat lobby does not make an online game a MMO! Does not make the game any worse to play, but the marketing surrounding it makes me chuckle regularly)...

If small startup devs like you use the monicker, its even more ridicolous. MMO might not be as clearly defined as RTS as a genre... but its pretty clear that not all online games are MMOs.

In fact, the first "M" stands for "Massively", and is the reason why expierienced devs will tell you that the expenses and time needed to develop an MMO is just as "Massive".

Now, as to starting with an online game as your first project. Still a bad idea. Networking itself is a huge topic. As is creating the game client itself. With a singleplayer game, you could concetrate on the latter without needing to also learn the former.

But of course, this is entirely up to you... some people like additional challenges, or having double as long to finish a project... some people actually ARE fast learners and have no problems takling multiple challenges at once. Maybe that is you.

Just never, EVER, use the MMO monicker again when you are talking about a simple online game.

Despite what most people say I think it's a great way to learn new tricks and coding as a whole doing a project you are excited about. I have learned a great deal of what I currently use and apply from projects that never seen the light. So by all means do whatever you want as long as you enjoy it because whether your first game is a pong clone or a WoW clone your not gonna earn a dime from it, neither are people going to play it but you will earn experience. Just stay realistic, you cannot accomplish what a full team of professionals took years in a couple of months, that will indeed take decades. But as long you learn from it there is no wasted time. Most people here all tried a MMO or at least a handful of other way too ambitious projects and just want to protect you from disappointment.

I think LibGDX is a excellent choice for a 2d game, especially since you seem comfortable with Java. Unity is great but for a 2D game it feels overkill to me. Unity however does allow to do a lot visually like creating levels and shaders but learning how to do this without an engine helps you in the future. Kryonet can help you out with the client/server architecture, it works really easy, in both the client and the server you create equal packet classes to be sent back and forth. You will add listeners to receive these packets on both sides as well. It took me about an hour to get some multiplayer movement action live.

If you really are aiming for a client/server architecture you should let the server handle all calculations and never trust the client. Even a simple move forward should be checked on the server if this could have the tiniest impact on gameplay. You could either move the client prior to checking on the server and set the client back if the server does not agree or only let the client move when the server agrees but the latter is very lag sensitive of course.

You could simply run the server and client locally to test it yourself but once you need more player to test it you need to setup a cheap server. www.noip.com can hook up a dynamic DNS to your ip so all you need to do is forward the port you chosen in your code. You can also opt for a Raspberry Pi and have your server run on there so you don't have to keep on your 800W PC with loud fans running the server application 24/7.

Cannot think of anything else atm, just get the basic client/server communications up and start experimenting. It's a ton of fun!


Now, I know some people think "Online game sounds bland, that is not sexy at all. Lets call it MMO, that will make it sound much cooler!"... its ridicolous when big studios do it (World of tanks a MMO? Don't make me laugh! A persistent player garage and stats and a chat lobby does not make an online game a MMO! Does not make the game any worse to play, but the marketing surrounding it makes me chuckle regularly)...

If small startup devs like you use the monicker, its even more ridicolous. MMO might not be as clearly defined as RTS as a genre... but its pretty clear that not all online games are MMOs.

In fact, the first "M" stands for "Massively", and is the reason why expierienced devs will tell you that the expenses and time needed to develop an MMO is just as "Massive".

I shouldn't actually trap myself in a discussion like this but MMO is apparently heavily opinion based like the term roguelike, nowadays people and devs easily tag there game roguelike while it has absolutely nothing to do with Rogue . But why does world of tanks should not fall under MMO? Should eve online be defined as MMO? Each system in eve has it's own instance and starts lagging with 100 people in it. Basically everyone in eve communicates over a simple chat box like in world of tanks and direct massive player interaction is minimum. Yet the player counts are massive for both games, both are multiplayer and both are online. Massive does not say anything about visual content or how player interactions should be., that is what you are making up yourself I guess. Hack, for all I care candy crush saga is MMO, all my friends compete for the highest score so it even has the grinding of a MMORPG :D.

Advertisement

I shouldn't actually trap myself in a discussion like this but MMO is apparently heavily opinion based like the term roguelike, nowadays people and devs easily tag there game roguelike while it has absolutely nothing to do with Rogue . But why does world of tanks should not fall under MMO? Should eve online be defined as MMO? Each system in eve has it's own instance and starts lagging with 100 people in it. Basically everyone in eve communicates over a simple chat box like in world of tanks and direct massive player interaction is minimum. Yet the player counts are massive for both games, both are multiplayer and both are online. Massive does not say anything about visual content or how player interactions should be., that is what you are making up yourself I guess. Hack, for all I care candy crush saga is MMO, all my friends compete for the highest score so it even has the grinding of a MMORPG biggrin.png.

Well, back in the old days a game with a chat lobby and matches with multiple players in them where called "online multiplayer games"... simple as that.

That is what World of tanks basically is. 30 Players per match sounds rather average when some singleplayer games with tacked on multiplayer (even though nowadays that might be the other way round nowadays) support 64 players per match. Then there is the chat lobby, which actually is just a chat lobby, no fancy avatars or laggy towns.

The only part that MIGHT qualify as a MMO is persistence. But really, games did Player stats and euqipment persistence on servers way before MMO was even a thing. Diablo did it from the start. Is Diablo a MMO?

To me, a game is a MMO when it starts supporting a massive amount of players per instance. You know, about a thousand, maybe several hundred players per match or instance. Not 64, and certainly not 30.

And as far as I know, this actually was coined in the past as one of the defining properties of a MMO game, besides the persistent world.

Do some people swap "players per Instance/Match" against "concurrent players online on the server"? Maybe. But what is the point? Do I care there are 100'000 concurrent users on the server if I cannot interact with more than 30 per match? It does provide a healthy set of players for the Matchmaker to choose from, making sure I don't see the same player more than maybe once a year or so even if I play the game a lot... but do I care about that? As much as online games should be about socially interacting with other players, most of the time the other players are more glorified bots than human beings. The only difference between a bot and player is that the player will sometimes comment your ingame feats... you know, congratulate you on a match well played, and more often insult your mother for killing them. 98% of the time players don't do that, because the other players could as well be bots for them...

A real bot will not care 100% of the time. And is not giving you the same variation in skill (Altough it is unable to be as bad as some players it seems). But thats about it for differences.

Now, to come back from the tangent I went off with... CCU is pretty meaningless as a defining factor for an MMO. As long as players are just a name, and MAYBE a skill level (If you use the XVM Mod), there might as well be 1000 players on the server, your expirience would be the same (Actually, you might start to see other players more often, making them more than just glorified bots to you).

What WOULD matter to the players expirience is to play a match with 1000 players in the game. Could you do that also with/against 999 bots? Yes, the expierience might not differ given bots could be pretty clever nowadays, and the player doesn't know which players are bots and which are not.

But playing against/with so many other players/bots will certainly make for a vastly different expierience... which happens to be one of the main draws of MMORPGs. Would players waste their time cycling through their emoticons in town if nobody would see them doing that? Would they do if only the same 2 guys would see them all the time?

Or is it that they have an audience of probably 1000's of people that pass that part of the city in the hour or two they stay in town (hopefully getting snacks and leaving their toons just dancing, and not staring at their dancing toon like a monkey on tranquillizers smile.png )?

So for me, a game needs both the massive instances AND the persistence to be a true MMO. I see no value in handing out that Monicker to jimmy the app developers 3s phone game that happens to have a chat lobby with 100'000 concurrent users online chatting about nonsense.

Contrary to that, I see a lot of damage done by marketings and devs overuse of that monicker, because it leads not only to confusion but also to overinflated expectations.

Now there are edge cases, I give you that. And there is the question "does it matter" in some cases. But that question goes both ways. Does it matter World of Tanks marketing is calling their Online game an MMO with such a puny amount of players per game? Does it matter if World of tanks is called an MMO or not? Does their core demographic really care? Do they really gain much from the "wrong dialers" that jump onboard just to find out this isn't WoW with tanks, and leave within hours without spending any money?

In the end, the MMO Monicker is way overused. Just because there is grinding does not make it an MMO... just because there is a massive amount of concurrent users does not make it an MMO.

If you call everything an MMO, the whole term loses its point of existence. Which is to seperate the truly MASSIVE online games, with MASSIVE virtual worlds, MASSIVE amount of concurrent players that can share instances with a MASSIVE subset of them, and can stay online for a MASSIVE amount of years, from other games... which could be just as MASSIVE in one or more of the indicators, but differ in one very important point: they most probably haven't costed the MASSIVE amount of money and time to make.

Which is the only really important point as a Dev to even use the MMO monicker: to seperate the sane projects from the insane ones, no matter the Teamsize.

As professional developers part of our job is to be able to listen to what a client or customer says and be able to produce what they actually want whether they call something by an absurd name or not. While the OP will indeed eventually have to learn the jargon to communicate effectively with his peers, since this is the Beginners it's not unreasonable to approach questions with the mentality of addressing a client whose jargon is less than perfect. And actually, the Beginners forum provides an opportunity for the experienced users to practice this skill (with minimal risk of offending and permanently loosing a paying client). Otherwise we might as well just all keep a number of generic responses ready to be pasted in.

As professional developers part of our job is to be able to listen to what a client or customer says and be able to produce what they actually want whether they call something by an absurd name or not. While the OP will indeed eventually have to learn the jargon to communicate effectively with his peers, since this is the Beginners it's not unreasonable to approach questions with the mentality of addressing a client whose jargon is less than perfect. And actually, the Beginners forum provides an opportunity for the experienced users to practice this skill (with minimal risk of offending and permanently loosing a paying client). Otherwise we might as well just all keep a number of generic responses ready to be pasted in.

Good point. So I do see that less sarcasm might be a good idea.

On the other hand, the beginner has to learn WHY an "How do I MMO" thread is usually met with such a sarcastic response. There is no point in trying to pop someones dream, but NOT telling them that their dream might not be realistic at all is also wrong IMO.

And about the deliberate misuse of terms: this is not a "professional client" we are talking about... most of the people coming to the beginners forum with such a question have no idea of game development. If another person that is a professional themselves misuses the term and insist on the misuse, I can quickly adapt as I assume the person has a reason to call a pear an apple. If I am talking to a newbie, I assume this person just has the wrong idea.

Besides that, "The customer is king" is not a good defense for an unprofessional customer that hasn't made his homework (and because of that should know what to call things to not give the dev the wrong impression), nor is it a good defense for an either unprofessional or shy dev that doesn't want to clear up points that could very well lead to misunderstandings.

"Trying to read between the lines" is a very common cause for project failure or exploding budgets because of wrong requirements. If the client isn't clear enough, its your job to ask. And then ask again. And make sure the client understands in DETAIL what he just ordered you to do. Only then you have a high chance to have a satisfied customer at the end of the project.

Ive been doing game development since i was about 13.

That's twenty two years of gamedev on and off.

I had a long break somewhere in the middle, and when i came back to it about six years ago i jumped right in the deep end aiming to make a multiplayer online rpg/strategy game.

Admittedly i had a leg up, because I already had a scalable server architecture to use, and knowledge of gamedev. I threw these together and within a month i had an isometric map with guys walking around and fighting each other.

Three things stung me, and as a newbie, or as any of us really, unless you're EA, they will without a doubt sting you. Please don't take these as negatives, more things to overcome:

1) Content production. It's one thing having a map several hundred kilometres in size, but when it's an empty wilderness, and there's nothing to do but PvP but the map is too big to actually find the other players then nobody will play your game. Producing continual, interesting and high value content is something you'll need to build up a team of developers for, and maybe even pay them.

2) Bringing in a userbase. You want more than 16 players, maybe 100 is reasonable. You need to get these 100 players onto your server, and keep them there. It's ok saying "i have 1400 players" (one of my past web based games did) but the problem is having them logged in at the same time, so they can play each other. In my past game that had 1400 players, they were very rarely ever logged on at the same time and when they were, they were geographically distant (see point 1).

3) The willingness to pay. Unless you have the production values of world of warcraft or similar, people simply don't want to pay for your game. They expect AAA levels of production as soon as you mention 'online multiplayer game'. It's a sad fact of life that the people who indie games appeal to and the types of people MMO's appeal to don't seem to overlap very much.

There, now i've said my two pence worth, feel free to respond. If youre interested, you can find both of my old projects here (a web based multiplayer RPG) and here (a windows based large-scale multiplayer strategy/RPG)

...Have fun! :)

This topic is closed to new replies.

Advertisement