I am new to game dev and am exploring what assets that I can leverage on to make game dev more efficient.
Would appreciate if anyone can recommend tech stacks that they are using and perhaps share abit more on the outcome and pros / cons that they can think of
I am planning on building something similar to Dragon Nest and would like to know more about how other dev account for user authentication, dedicated server for real time MMORPG, etc. Preferably Cloud-based / VM service to outsource most of the infra.
Also would be great if there are any info on integration between 3rd party assets.
I am aware that there are assets that provide no-code / low-code such as:
Ork3
Atavism
and cloud-based service such as:
NorthNetworking
Photon
However, having some trouble drawing the links here and which is the best asset combination (keeping in mind integration) to use.
If you’re new to game dev, spend your time working on smaller projects and getting familiar with Unity. Even with existing frameworks, MMOs aren’t something you’re gonna want to make for your first project. They are architecturally complex even using frameworks because they’re live service titles that require regular maintenance and updates. As a beginner, you’re likely not going to be able to set up the project for this at all.
This doesn’t even include things like how the asset production pipeline is going to eat up a lot of dev and test time.
MMOs are complex and taking an approach of trying to “minimise” or remove code entirely is such a bad idea. A decent MMO (or even half baked one) is not something you cobble together from 3rd party assets. I highly suggest you try setting your expectations to something more realistic and aim lower, as you are just not going to make an finish a MMO. Sorry but it is just the truth, we have seen tens of thousands of developers come onto the forums over the years asking the same questions and none of them have ever finished, most give up on the idea and those that have not are still to release anything.
Sorry to be a party pooper but its important to be realistic when setting goals for a project, and making an MMO is not realistic. If there is a single most complicated type of project to make, its an MMO. Assets will not change that.
Good luck! Obviously dont feel like you can’t “dream big”, but at the same time try and balance that with the ability to finish something. Its much more satisfying to finish many small projects, than to have 1 massive project that you never finish.
I hope you enjoy unity and being part of the community
I highly recommend you not to start with MMOs, but with game dev in general first. MMOs are very, very complex and need a deep understanding of many specialized topics. You really should know how to make singleplayer/multiplayer games before even thinking about MMOs.
I also can’t really recommend full solutions like the mentioned Ork or Atavism frameworks if you have little to no experience, as MMOs need constant maintenance and proper server security. I doubt that you can provide either of these with beginner level knowledge.
The game you mentioned seems to be a classic MMORPG. I’ll try to give you at least a basic overview what you should know if you’d want to create such a game:
Servers
You will need servers. They’ll have to be secured properly. Even managed VMs/outsourced infrastructure can get hacked easily if your code contains security vulnerabilities. Being aware of known vulnerabilities is absolutely mandatory. You should know how things like SQL injections or remote code execution work, and how to prevent them.
Database
Depending on your server design, you probably will need more than one. MySQL is the most common database type which you can rent servers for easily. There also are less common database options like MongoDB, which should work fine as well.
In either way you should understand how the database of your choice works and how to use queries efficiently in your server code.
Login Server
You should have a seperate server to handle login requests/user authentication. This can either be a full standalone/console application or a simple webserver. I prefer webservers for simplicity and scalability. If you have some PHP experience, creating a user authentication system with it should be trivial.
Creating a user accounting system is quite simple as well. You can use any web/community framework of your choice, or even create your own if you have some experience with web development. Just make sure it’s properly secured.
Game Servers
There are many different design possibilities here. Classic MMORPGs usually use multiple server instances for the same area to spread the load. The advantage is that you can have thousands of players in the same area playing at once. The disadvantage is that only about 100 of them are connected to the same instance at the same time and can see each other.
If you follow this approach, you also need a master/management server for the instances, which can also be used for global things like social systems/chats/mailboxes or an auction house, as the resulting server load for such things is very low usually.
And that’s only one example which is quite outdated already, at least in my opinion. There are better, much more complex designs that you can come up with. But in any case you should have a very solid understanding of C#, multithreading and networking.
Game Client
A classic MMORPG needs tons of assets. Just think about the game world, characters, items, visual effects and animations. Of course most of this can be bought somewhere, but you should know how to adjust assets to fit your game. For UI, Textures and particle effects this mostly means Photoshop experience. For 3d models and animations this means… well, modelling and animation experience with a software of your choice. If you don’t want your game to look randomly thrown together with packs from the asset store, this experience is mandatory.
Besides that you already should know how to create games with Unity in the first place. In singleplayer games everything is happening “on the client”. In MMOs you will have to know how to seperate game mechanics and calculations to let them run on the client, the server or on both. This requires quite a bit of game design knowledge and experience with Unity itself.
Now there is a lot more I could talk about: server scaling, a game launcher for client updating/patching, quality assurance, project management, community management and so on, but I don’t want to kill your motivation right away.
However, after working on MMOs for 9 years now I can assure you that this absolutely isn’t something for beginners. I’d say learn how to create games with Unity first and get some knowledge in the topics I mentioned above.
What also could help is volunteering in existing MMOs, as quite a few of them are recruiting volunteer moderators, bug testers and sometimes even programmers/scripters. That way you can work together with experienced MMO developers and learn from them.
A good starter project would be something like Pong.
Make that, and once its 100% complete, make a multiplayer version!
This will at least give you a rough idea of the time it will take to make something more complex.
As the others have said here, and correctly so, an MMO is not something you take on unless you are a very experienced game dev with at least a few shipped multiplayer titles.
Creating an MMO requires you to have an understanding of programming both on the client and server because the best ways to prevent cheating require server-side code that analyzes the actions being performed by the user to verify if they are valid.
To be frank, think the term MMO has fallen from grace for teh public and newly minted dev, for us it mean big blockbuster like warcraft, new dev see a small room with 10 players as mmo, which is feasible. I see a lot of kid dev presenting their MMO on youtube and they are really just room with a few player. I wonder if OP is in the same culture…
Actually, unless it’s changed a lot since I last played it, DragonNest (that th OP mentioned) is basically this. It’s really just a five-player brawler pretending to be an MMO. Only the towns allow >5 players at a time. Also, there are only minimal RPG elements. I think it would be feasible for an indie developer to make a game like DragonNest but not an MMO.
I like Meltdown’s idea of starting with pong and making it multi-player. I don’t make multiplayer online games, but if I was going to start, that’s about what I would do too. Make a simplest demo so that you can start testing basic connectivity and network communication. Then add more and more features as you progress.