[Tutorials] Creating a MORPG base from start to finish.

Hello everyone, it’s been thrown around more and more and more that somebody is going to make the next “MMORPG” and have no idea where to start, this honestly makes me feel for them, because I remember a few years ago when I wanted to make my first MMO. I thought it’d be easy, grab a game engine, drop things in place and voila, boy was I wrong.

This tutorial series will take you through creating your own stand-alone server and getting it to talk with Unity off of a separate thread that will be used for networking, due to Unity’s lack of support for multithreaded applications, some of the things we will be doing when receiving data from the network will be “Work around code” where you set variables in the main-thread to be updated using a logical check in the update(), lateupdate(), or fixedupdate() methods.

This tutorial series will make use of the C# and Java programming languages.

As of right now there is well over 6 hours of video content you can follow, with more being added frequently.

Start with this video, as it will explain everything that we’re doing –

Disclaimer:
This tutorial series is not meant to have a full-fledged mmorpg upon completion, but instead the knowledge that can be applied to create your own networked game, we will be covering numerous aspects and features found in common cookie-cutter mmorpgs.

Some of the programming practices used in this tutorial series are not the best, and there are more than a ton of optimization changes that could be made. I’m not trying to create the next WoW, just some ghetto little capsule moving around in a 3D world, fighting cubes to the death and chatting with other capsules. Yeah, that pretty much sums up every mmorpg in a nutshell.

3 Likes

Part 7 is now live

Part 8 is currently being rendered, we will go over some basics of setting up our game world and out Character(Clone) script.

Part 8 has rendered and is uploaded!

Why do you open 2 Threds for one topic ?

If you were to read the threads, you would notice immediately that they are not the same. The thread that you had linked to was a discussion board for people to request tutorials. I had only mentioned the IDEA of working on this tutorial series.

-Chris

I got it now, thanks for response.

Sure thing, if anybody is waiting on the next video the reasoning it hasn’t been recorded yet is because I’m dreading fixing a problem that I had created in a previous video.

We’re now at over 10 hours of video content!

You not “we”.

“We” because I consider my viewers students.

I must say, I like your tutorials. I was planning on making a game that was mostly single-player with a little bit of multi-player dashed into it, but after watching a couple of your videos I think I’m going to change it over to an MMO style game. Keep up the good work, and I’ll make sure to show off my project as it gets further along so you can see first hand the fruits of your labor!

Sounds awesome! Please just keep in mind that these tutorials are not intended to create a fully functional game, however instead it’s just an basic implementation of features found in mmo’s with the networking behind it.

@Christian.Tucker in the MasterClient.cs instead of using thread :

InputListener = new Thread(new ThreadStart(InputLoop));
            InputListener.Start();

isnt it better if use a coroutine (IEnumerator) ?

The reason I use a separate thread for my networking is because it doesn’t have any performance costs (Okay, I lied, but not many) to the Unity thread. Also, even whiling using a CoRoutine you can still lock the thread up while waiting for data, which if it’s on the main thread will cause the game to stop functioning.

@Christian.Tucker continue with these tut series they rock! and thank you very much!

I’ll be making another video tonight where we move our work to my server-software called OGServer and continue the series, I’ve been busy with school.

Yes, I understand that. But with the groundwork you put in place, I can start plugging in what I need to tune it more towards what my game will need.

im on tut 6 part 2 finished
hey chris i have a problem and im stuck :(,my problem is that on create character,after the character is created the server sends the SendCharacterCreationResult and i debuged (server side) that its send
then i added a debug log in the packetid in the inputloop on masterclient and it turns out that the packetid stays 0 after login and it calles the case 0 not the case 2 which is PacketsIn.CharacterCreate(); . on PacketDecoder where Login() is the opcode is set to 2 :confused: the inputloop packet id should be set to 2 but the opcode is set to 2 and i cant fix it :confused: please help!
i even tried to get help from StackOverflow : java - why is BinaryReader inside Thread, reading wrong packet data from netty? - Stack Overflow

Looks like you got it figured out–

There has been a lot of changes to the networking, and optimization that’s used when working with our tutorial series, videos of this have not yet been released. The first 10 parts of the series are to just to help give people an understand of how networking works, and some basic (yet inefficient) practices.

Part 11 is going to be uploaded here soon, and in this video we are erasing everything. Don’t worry, it’s not going to be a living hell like it was the first time around, I’ve actually had a game-server api that I’ve made myself over a long period of time that we’re going to be using, and it’s very simple to use. The same goes with our implementations inside of Unity, a great deal of the practices that have been used so far (in both C# and Java) haven’t been the best, and this will be changed starting on Part 11.

The first few parts were mainly to just give a little insight and to scare away people who aren’t dedicated. If you want to make a MMO, you have to prepare to dedicate a LOT of time.

Part 11 will feature a working product, so you don’t ever have to worry about if something won’t work. I’ll run through a working example of my current project that will showcase all of the features promised.

If you are doing this for purely educational purposes I would recommend finishing off the videos, just keep in mind what I said earlier about trashing the projects when Part 11 comes around. We won’t be trashing a project ever again for the remainder of the series, don’t worry about that.

This has been my plan from the start.