An Mmorpg

Edit: I’m currently teamed up with a group working on an SAO inspired MMORPG. Message me if you’re interested.

Warning: I am not an artist. The art assets that you see currently are placeholders. I am 100% a programmer.

Hello guys, my name is Andrew Blakely and as some people may have gathered from my postings before I’ve been working on an Mmorpg in Unity3d. This is my first project. Anything I’ve done before this was just to learn things so that this project could be started.

I’m currently on my third iteration meaning that several features that have been coded and implemented before have yet to be re-implemented, but quality-wise, particularly server-side, has dramatically increased. The project in its current state is geared towards the basic core you’d expect from any Mmorpg as gameplay/etc has yet to be determined/pondered.

Although this is not the collaboration forums, I know, I am looking for others to work on this project with me. I’m not very foud of Unity3d in particular which may sound funny but I enjoy writing C# server-side code using Photon Server. I don’t know why but it’s much more fun and interesting to me. Anyway, this means I’m in need of someone who enjoys client-side Unity3d coding (however I can do that and it’s not a top priority to find someone to do so), a level designer and a 3D modeler to handle the most of the visual aspects.

I am also open to joining another Mmorpg development team currently in progress if anyone is in need.

Prototyped/Previously Implemented Features:

  • Friends list
  • Mail system
  • Basic chat
  • Server-side pathfinding for NPCs with RainAI
  • Networked non-authorative/unprotected movement
  • Networked animations (Working with Mecanim wasn’t very easy on this; might have to approach it differently next time)

Currently implemented features:

  • A server-side routing system for sending requests to proper subservers. This includes a low-bandwidth solution for determining which client the responses need to be routed back to.
  • A cryptographically secure method for sending the password from the client to the proxy server and then to the login server.
  • A completely separate login server to handle login requests and database queries
  • Basic integration of the UMA framework to handle character creation and customization

Features I’m Expecting to code next:

  • Worldserver that is a Unity3d instance itself. It will handle NPCs pathfinding and AI as well as various other things
  • Interest management system which will be closely tied into the Worldserver.
  • Logging into the world (mostly for purposes of testing the Worldserver as well as the interest management system).

Hopefully I can survive the long, perilous and harsh road to creating an Mmorpg.

Jan. 16th 2014: Rewrote the login/registration server as a multithreaded application.

Cool start to your project, I can’t seem to send PM’s with unity’s forum settings. I’d like to hear more about your ambitions for this project and where you see this game heading. I’d possibly like to help out, though I am pretty new to game development. I am anxious to learn the different aspects to game development and could possibly provide some assistance to you. Not sure what would be convenient for chatting, possibly Skype?

Feel free to message me through Facebook at this Page https://www.facebook.com/OmegaGamesStudio?ref=hl

I too am new to game development too. Only this page half year have I discovered Unity and only this past 3 semesters have I started to learn programming at all, switched from a Mathematics major to Programming, and so I may not be able to provide you with insight on the aspects of game development. That said I’m very ambitious about this project but in it’s current state the goal is to implement the bare-minimum features you’d expect in an mmorpg.

It’s tough to say what direction it’ll go in without having first found an artist. The way the world works and feels will be largely dependent on that. As for general game mechanics I’ve of course, as many people do, a million and one ideas. However, time is the constraint more-so than anything else. Everything can technically be done. Anything you can really think of. It’s always about time though so who knows what will and won’t be implemented and at this time I couldn’t tell you even the general game design. That’s why it’s based solely on implementing features that any mmorpg would need to provide.

The project will likely end up being a commercial project and thus I’m going to be picky, but not too picky because I’m far from the best, about who I work/share this project with.

Go ahead and send me a message on that Facebook page if you’d like to chat more. Reference your Unity3d forum name too.

Normally, I’d make various posts about how MMORPGs are hell incarnate, and you should turn back before they sear runes of ancient evil deep into your very soul.

But, you seem to have actually done some work towards an MMORPG, which is far more than most who post these sorts of threads wind up saying. I would counsel that, as you’re flying solo, keep it small, keep it smart, and keep it replayable. Make sure your gameplay mechanics are interesting, because chances are good you can’t create enough content to keep up with WoW, SWtoR, or the others out there. PvP is a great way to do this, actually.

Consider releasing your game free on various platforms, too (e.g. Kongregate, GameJolt, Wooglie, NewGrounds, etc) - an MMORPG with no players won’t make you a lot of money. Conversely, having your feet in multiple ponds ensures not only a bigger player base, but some much-needed ad revenue. If you do what it looks like you can do, I think you’ll be just fine.

They truly are hell incarnate with just the logistics of the project itself especially since I’m very new to Game Development and only recently switched to programming as a major in school. At minimum the project requires you to have 3 to 4 VS solutions up at a time as well as having to work and manage in at least 2 seperate instances of Unity3d editor, which Unity doesn’t seem to like to support so thus I had to flip back and forth on a previous iteration. Those instances being a Unity3d based world server application (honestly not sure if that’s even a good idea) and the client itself. An absolute mess to manage IMO and my current computer barely has the RAM for that.

I don’t think I could ever approach the level of content that multi-million dollar studios can. I’ll definately have to spend a lot of time deciding what belongs in the game as well as what is complete-able in a timely manner. However, I don’t plan the project to stay a one-man-project since I’m only a programmer. I cannot 3D model nor am I particularly good at level design.

Thank you for the advice of platform releases. I’ll definitely need to put this in front of as many people as possible, even if that means exporting to webplayer if it wasn’t the intended platform, so that there can potentially be a playerbase. Thank you for your kind words at the end; they mean a lot. I wasn’t sure of the reaction I’d receive from the community. Most Mmorpg projects are frowned upon, and with good reason, and others are much further along and established. I almost didn’t post this.

An mmorpg very well may mean I’m in over my head but I know how to swim upwards. Hopefully I can produce something playable.

Since you stated you are not sure, I will answer it for you… :). Do not put the world server(s) in Unity itself. Unity should only be the client and the world should not care what is talking with it as long as it is authoritative and uses a set interface.

Good luck!

Seeing as you are developing a Multiplayer game as well I take your feedback seriously but I must ask two questions:

  1. Why isn’t it a good route to go?

  2. If that is true then what is the best route for handling authorative pathfinding and AI for NPCs?

The only way I came up with, and implemented as a prototype, was to host a worldserver in a Unity3d instance. It had the pros of being able to develop a ‘shell’ of a client and having NPC placement and handling done server-side completely. Sort of like how World of Warcraft handles it, or at least the Trinitycore Github handles it. NPCs are server-side and spawned client-side and aren’t present client-side otherwise.

I’m just not sure how to handle a lot of things unless the worldserver itself is a Unity3d instance.

I think the biggest issues with running the server as a Unity instance are RAM usage and the requirement of a GPU if you don’t run the server in headless mode (for which you need Unity Pro, I believe). Also, not sure what networking/server framework you are working with, but I think Unity’s native networking has a very low concurrent user limit.

Have you looked much at uLink and the larger Unity Park Suite? It’s designed for running the server within Unity and includes a lot of out-of-the-box functionality for authoritative servers, transmission security, interest management and other online game features. They have their Pikko Server technology for dynamic load balancing and fault tolerance as well, but they don’t publicize the price for it on their website. That says to me it might be a bit pricey. :slight_smile:

Yea, it seems they have a nice product. However, from the small bits I’ve gathered, their solution in Unity3d RPC based. Correct me if I’m wrong there. If that’s true then I’d prefer to stick with Photon Server as it provides me a bit more control over what a client can do. Yea Unity’d networking is pretty terrible; I think the very first test project I did I attempted to use it. Very clunky.

I wasn’t aware you could run a headless verison of Unity3d with pro!! That is exactly what I need, I may need to get pro, but without pro I thought about just disabling the renders when running.

#1

Scale, scale, scale, and more scale… Did I mention scale? :). Seriously though, a “real” MMORPG system in my opinion must be based on a core system that can scale not only horizontally but vertically. If you are not sure what I mean by these terms, check out: http://en.wikipedia.org/wiki/Scalability

The core service must also store data and therefore; you need a database somewhere. The world itself may be distributed in memory but I recommend storing the world in a database for when you need to shutdown and/or restore state. To do this you should distribute the processes across machines and storage “nodes”.

As far as I know, Unity does not support a distributed model. There are a lot more topics to go into on this one but distribution is high on the list. You need to support thousands of objects across dozens of zones (if zone based) and Unity does not have the scale to do that from a back-end server perspective. It’s really apples and oranges for this one. Or apples and BBQ as the two aren’t even in the same ball field. :slight_smile:

#2
Aha! You have asked the question that should be asked of any “MMO” system. The method in which it handles pathfinding and AI (and collision detection) is where the value is at. The ability to do those things across a distributed system that maintains state (even on crash/reboot) is why MMO systems cost the big bucks and/or are hard to implement. I spent the first 1.5 years of my game’s development on the back-end services alone (with minimal client work) and I’ve been a professional engineer in distributed development for over 14 years. It takes a LOT of work and you better know what you are doing or at least be prepared to learn and have the time to do it.

MMOs are a daunting task but good luck!

If you’re using Photon Server, you have a good base from a networking perspective then. I think there’s a load balancing application from Exit Games that helps in that regard. Photon still seems to be very room/lobby-based, so a lot of MMO-esque features will need to be built outside of the developer’s existing code reference.

You might want to check out CJR Gaming’s MMO framework (link). Christian has been providing tutorial videos on using Photon for a few years now, and he’s finally started building an MMO skeleton with Photon and Unity integration. He integrates Bullet Physics in that framework. I think one of his most recent videos also integrates Recast/Detour for navmeshes and AI pathfinding. Might give you a head start on the features you’re looking for, if you don’t mind paying for the code.

I wish I had a programmer’s genius or could borrow someone’s for my project. I have the hardest time wrapping my head around coding lol.

Looks interesting, a good start and some knowledge on what you need to do.

if you haven’t already, I would highly suggest reading though eskimojoes post on MMO development, very informative.

http://forum.unity3d.com/threads/209652-Lands-of-Ammox-Mobile-MMORPG-in-development

BTW if you still need an artist I sent you a PM.

Hey looks like you are headed in the correct direction! I would advise anyone interested in how client/server architectures work for games to look through the articles on this site :

http://gafferongames.com/networking-for-game-programmers/

It it not unity specific but it goes over the basics of how to do network programming for games. It will undoubtedly be useful for you! Good luck!

Yikes, I’m not sure I could handle half of that stuff. If it wasn’t 4:00am I’d give a better response to that as well. I apologize for my exhaustion.