- 最后登录
- 2014-10-23
- 注册时间
- 2011-7-19
- 阅读权限
- 90
- 积分
- 81303
 
- 纳金币
- -1
- 精华
- 11
|
3D Buzz’s latest training project involves documenting the development of a massively multiplayer online (MMO) game to create an online class over the subject. Over the past six months, the 3D Buzz team has been in development of a technical demonstration for the game’s platform. This demo was intended only as a way to explore the methods, tools, and technologies that will be employed in the class.
Please note that the gameplay elements discussed and shown here are a part of that tech demo test, and do not represent the look, feel, or theme of the game that will be generated throughout the class itself. These things will be decided through the class's development via design discussions between 3D Buzz and class participants.
![]()
MMO Development: A Technical Smorgasbord
I get asked a lot why 3D Buzz has decided to take on the development of an MMO as a Unity training topic. For the record, I’m a huge fan of the concept of MMO gaming. The idea of playing a game with my friends in a cooperative (or competitive) format was one of the biggest gaming draws for me, even many years ago in the old Doom multiplayer days. And as the technology has developed, the things that we can now do with many people all playing together are simply amazing.
![]()
Even now, while I don’t consider myself to be a modern gaming connoisseur by any means, the first time I played World of Warcraft and was able to coordinate complex scenarios with many friends at the same time, I knew I was seeing something special.
But beyond all that, I love the sheer amount of technology that has to be applied to a modern MMO game, especially in the case of role-playing games (RPGs). There are so many different aspects of gameplay that must be addressed: how will players interact with one another? How can they interact with non-player characters (NPCs)? How will the game handle items or pickups, even weapons? How will it handle spells or special abilities? And over all of this, how will each and every action performed in the game interact with the server in a timely fashion? And that’s only the tip of an ever-expanding iceberg. There are so many systems that all have to layer upon one another and integrate seamlessly to create an enjoyable gaming experience.
It’s all so deep and so technical that I can’t help but get excited just thinking about it. I think, more than anything, this is the biggest reason why I wanted to tackle the development of an MMO. There’s just so much information to impart and so many things that need to be taken into consideration, that it can quickly become overwhelming. I’ve always enjoyed the challenge of taking something that looks like an impossibly complex ocean of information and condensing it down into a digestible and fun-to-experience format. This, as many of you may already know, was the biggest reason I started 3D Buzz in the first place.
Over the next few pages, allow me to take you on a quick trip as to what we’ve been up to throughout this project so far.
![]()
Choosing the Right Game Engine
The game engine was the first key thing that we have had to tackle. These days, it makes little to no sense whatsoever to design a game engine from ground up. Sure, doing so allows for various levels of customizability, but at some point, you’ve got to realize that in most cases, someone out there has already invested a great deal of time and money into R&D-ing exactly what it is you want to do. This means that it’s often more efficient to choose from one of the commercially available engines, and there are many to choose from, each bringing their own pros and cons to the table.
Even though the entire idea started with the concept of developing Unity training, we made sure not to lock ourselves down, provided we could find a better means to create the game. I absolutely love Unity, but I’d rather know that I'm using the right tool for the job than trying to force myself to go through the motions of a development cycle for rhetorical reasons. We have experience in several different engines and we explored many different avenues to see which one worked best for us.
The interesting part was that even though we gave other engines a fair shot, it soon became clear that Unity was going to provide the smoothest environment and the easiest means to rapidly prototype each idea we had. It’s been amazing to sit down and discuss some aspect of the game, draft out a class s***cture, and to see a basic implementation of it within a matter of minutes.
![]()
But even that in itself is not the most compelling argument in Unity’s favor. Indeed, someone well-versed in the proprietary scripting language of certain other engines could make a similar claim. However, in choosing Unity, we were able to utilize programming tools with which we were already comfortable, such as Visual Studio. Plus, being able to use .NET opens the door to a wide variety of APIs, which you just can’t do with a proprietary scripting language. It meant that everything we did could be handled natively in C#, which led to very fast development of new elements to the program. Add to this the easy artistic integration using the FBX format, and Unity has provided us with a fast, clean, and enjoyable environment in which to develop our game.
Of course, we try not to just focus on the way we want to do things. We also try to keep the viewer in mind as well. We know that not everyone out there is in a position to spend a great deal of money on these tools, especially if it’s just something they’re exploring for the first time, or something that they do as a hobby. For this reason, we wanted to find a solution that was financially viable for as many people as possible.
Unity Standard contains all of the necessary components that a viewer will need to follow along, and it’s completely free. Sure, there will probably be some aspects we explore that are specific only to Unity Pro,
The Back End - Our Game Server
![]()
The next critical aspect we needed to get through was figuring out exactly which game server we would use. Obviously, once a game becomes “massively multiplayer,” the way in which you handle client connections becomes absolutely critical to how the game will play. Just as with the game engine, we didn’t want to create something from the ground up if we could leverage on proven technology.
We were looking for an infras***cture that allowed us to have potentially thousands of people interacting with no slowdowns. And there are a few different options out there. Of course, for starters, we looked at using the built-in networking system within Unity. It’s certainly a robust networking system, but didn’t have the kind of power we needed to support a full-blown MMO.
We then branched out to 3rd party socket servers. We looked at a few different candidates. The list was narrowed down to two finalists, those being SmartFoxServer Pro by gotoandplay() andPhoton by Exit Games. Both of these were very capable servers in their own right. We settled on Photon for a variety of reasons. The first is that Photon is built from the ground up in native C and C++. This makes it very small and streamlined (i.e. fast). It also utilizes UDP for faster performance, onto which is added a “reliability layer,” allowing the programmer to flag critical events, so that the server handles delivery of those packets. It makes for a very fast server with no dropping of critical data.
|
|