Giving away the engine that runs a game you plan to sell may not seem like good business sense, especially if you're in the midst of making the game. But the developers of Ryzom see things differently.
Like EverQuest and Star Wars Galaxies, Ryzom will be a massive multi-player online role-playing game (MMORPG) with immersive 3D graphics. The developers have released Ryzom's engine code under the GNU General Public License. Ryzom itself won't be going live online until late 2003, at the earliest. Nevrax, the creators, have offices in London, England and Paris, which is the center of development. (Indeed, the game's characters and settings sport a French, surrealistic-fantasy design sensibility.)
So how does Nevrax hope to make money? They see that the real monetary value of any MMORPG lies in its subscription service—players paying regular fees for the access to play—not in the software. The company still retains the copyright and other rights to Ryzom itself, and the final product will be distributed and sold in typical retail packaging. But the engine that powers it all, called NeL, is free for others to download, modify, and use for their own purposes.
NeL (for Nevrax Library) is a toolkit for the creating 3D-graphic MMORPGs or similar online game-play environments that require both client and server code. It runs on the Linux and Windows OSes, using OpenGL as its 3D graphics renderer.
While there are other MMORPG engines in development, with code that has been released to the public (WorldForge, a non-commercial project, is the most notable), NeL's technology is much more extensive, even in its present state. Says Vincent Caron, a Parisian software developer. "I began about two years ago to watch for projects that could support MMORPG development. You could find 3D engines, but not a whole and coherent thing to deal with all the aspects of MMORPG."
He then discovered NeL, which consists not only of a 3D graphics engine, but also networking, AI, audio and other code necessary for the development of an MMORPG. Today, Caron helps to maintain the NeL public releases.
Compared to a commercial MMORPG 3D graphics engine like EverQuest, NeL, or so its developers claim, gives artists more flexibility for modeling outdoor settings, with better rendering, and lighting model capabilities. Its major features include:
Cyril Corvazier is Nevrax's lead 3D programmer. The Paris-based programmer's major work for NeL has been its 3D library modules and tools. Corvazier summarizes the toolkit's technical goals into three points:
NeL is written in several languages, including C++ with STL, RTTI, some assembly language, and Bash for the engine's data builder system. With the exception of external libraries like STLport, FreeType, libXML and libJPG, the NeL developers created their engine's code from scratch.
"This is 'Stroustrupian C++', or, if you prefer, 'extreme C++'," jokes Caron, describing NeL's code recipe. "This [combination of languages] was a good decision, since the project had to scale to great proportions: it's 500,000 lines of code today. Doing C++ on the edge was a bit painful, since C++ compilers are always seriously lagging behind the C++ standard, especially the STL part."
"As a personal note, I regret only C++ was used. A bunch of high-level things could be done much faster with scripting languages. I'm mostly thinking about the tools suite, which is much too painful to maintain."
"The tools in this project take a very large part. NeL has more lines of code in tools than in the engine. The tools take a lot of time for maintenance," explains Corvazier.
When it comes to designing an MMORPG engine, the toughest job, obviously, is figuring out how to render efficiently large numbers of environments and characters. The key to accomplishing this with NeL has been its developers' mastery of the code's "data pipeline".
"The data pipeline has to be smooth because, in an MMORPG, we handle thousands of small assets," says Corvazier. "NeL provides an automatic process to build the runtime data from the artist database automatically. The data production for NeL is a complex problem. NeL deals with 20 media file formats, most of them exported and built from the artist database."
This production pathway is the critical part, according to Caron. "You end up with a lot of data in most MMORPG games. You need an efficient way to go from your artist's data to the compiled game-set. And you need to do it in a continuous way, while your world is running."
Contributors are always welcome and encouraged. The big item on the development wish list is a Direct3D driver. "The interface for the rendering driver is simple, and it doesn't change a lot now. It is for a commercial OS, but some 3D cards have really bad OpenGL drivers," says Corvazier.
NeL also needs more models, indoor and outdoor environment maps, sound samples, shaders, textures, documentation, and tutorials.
Caron describes the necessity of good documentation for a project of this size. "Documentation is a key point. Actually, the code itself should stand as part of the doc—only what's not in the code should be documented [such as] what functionalities the coder intended to bring. [It should] help newbies get into your code."
Because of all of these complex technologies which needed to be planned for and developed, Corvazier came to a personal conclusion regarding both the organizational and technical development process of NeL. "In an open source project with contributors—free software or not—I think it is best that the kernel design is made by a small team and then frozen as long as possible. All external contributions can be integrated, as long as you use the same version of the engine kernel."
Olivier Lejade is co-founder and former CEO of Nevrax, the company behind NeL. Vincent Caron is the maintainer for the public releases of NeL. They recently agreed to an interview about NeL.
O'Reilly Network: How did the decision come to release NeL as free software? Did Nevrax consider licensing the engine to other game developers for money? What advantages for itself does the company see in releasing the code to the public?
Olivier Lejade: That decision was basically mine.
As making free software was one of the founding principles of Nevrax, we never really considered licensing the engine. There is a very limited market for game engines anyway. Unless you're John Carmack or Tim Sweeney, you're going to have a hard time making money out of licensing a game engine.
At one point, we did consider providing commercial support to game developers who wanted to use NeL. But, understandably, most people are wary of using an engine that hasn't been used in a commercial game beforehand. So the market wasn't really there either. Therefore, we decided to first concentrate on releasing our game (Ryzom) and, from there, see how the demand for commercial support goes. Since I've left the company, I have no idea what the plans of Nevrax's current management are regarding this issue.
Now, about the reasoning behind this decision:
I wanted NeL to be free software, first and foremost, out of principle. I believe that software should be free (as in "freedom"). I came up with Nevrax's original business model out of my interest for the free software community. I was looking for a way to create a strong business, while only releasing free software.
It turned out that the MMO industry is a very good way to do this. In a Massively Multiplayer Online game, you're not selling a software product, you're selling a service for a monthly fee, access to a virtual environment and its community of players. Of course, you need to create software in order to do this, but that's not really what you're selling. What you are selling is the gameplay, the immersion, the support and, sometimes, the community itself. This "overall experience", unlike software, is unique. That is what you want to keep proprietary.
Creating and, especially, maintaining the software necessary to do this can be seen as a sunk cost. So you want all the help you can get with it. That's why we think having NeL as free software makes sense on the business side of things. By lowering the barrier of entry on the technology side and sharing the costs, we're hoping to be able to focus on what really makes the difference in a "persistent world": The conception, the artistic design, and the administration of these worlds.
Actually, that is exactly what I am doing with my new company, Mekensleep. Thanks to Nevrax doing the grunt work, [my company] is now able to build its persistent world without investing massive time in the development of an engine.
Other Linux Interviews
ORN: In what ways has releasing the code helped the development of NeL, and Ryzom, as well?
Vincent Caron: Nevrax could get feedback on their code, some help on the portability issue, and was naturally encouraged to maintain minimal documentation requested by external people. Even if [these things] helped only minimally, it surely didn't cost them a lot. I hope they release the Ryzom code for the beta test, since it would be the right and crucial time to let it be scrutinized by a lot of avid hackers. Waiting for real hacking during game exploitation is asking for trouble.
ORN: You mentioned that the C++ coding of NeL has been "on the edge" throughout its development. Is there anything in particular that you would do differently with the programming, in hindsight?
VC: Two years ago, embedding Python code was a high priority. This has been sadly dismissed, but in my honest opinion [should have been] the way to go. A fair amount of code in an MMORPG is not in a critical code path, because it is simply gluing low-level functions like 3D, sound and network. When you wrap your low-level and "fast" C++ code into Python classes, you're encouraged to make the simplest interface for both the C++ wrapper's and Python coder's sakes. The other point is that it's easier to convert existing Python code into C++ native implementation than the other way around. And a Python development cycle is many orders faster than C++'s; compile times just get insane at 500,000 lines, even with high-end hardware.
The same reasoning above works with other high-level, interpreted languages. Python has a wide audience, is free, small, fast, well-designed, and ultra portable.
ORN: Give us an example of how easy it is to develop a game under NeL compared to using other engine systems.
VC: I wouldn't compare game libraries on such a basis. NeL has a steep learning curve. It's a broad and complex piece of software. What's important for me is to have the game done. If it can be done easily, all the better. But in the rather recent and complex world of MMORPG, I don't think most concepts are popular enough to make a game library immediately intuitive and easy-to-use. However, this is what we should all be aiming for in the long term, no doubt.
ORN: What would you say is the most difficult thing about creating an MMORPG?
VC: I would say adding the social part on a large scale is tricky, and software infrastructure design. For the latter, I'm mainly talking about the networking problem. Servers must be of high availability, very scalable, very maintainable, and secure. This is not the e-commerce and banking thing; we have to secure gameplay. Besides protection of the player's data, we need to make sure the game itself can still be enjoyed by everyone at any time. This goes from basic cracking protection to well-thought game and policy design. This needs transparency, humility, and a lot of testing, as well as good sys-admin and game-design understanding and cooperation.
OL: Almost everything is a major challenge. But if I have to pick one thing, I'll say it's making the right decisions in the conceptual design. There really is no absolute way to do this. It all depends on what size and type of community you want to cultivate. Even if you count the first MUDs, building persistent worlds is still a very recent craft. There's still plenty of room for experimenting, trial and error.
ORN: What advice (game design or programming) do you have for those who are interested in using NeL to create an MMORPG, or other kind of online virtual world environment?
OL: Be prepared to read a lot and think hard before doing anything. There's tons of useful material out there: research documents, code, mailing lists, etc.. Use it!
VC: The code is available. You'll certainly have [to have] time and talent to use it. Now do you have the data? Explore the tools. If you have some [game] design and data, then the code will follow naturally. Code without data is not a game and gets quickly boring for the coder.
ORN: Do any of you play one of the MMORPGs on the market? Which ones are your favorites, and why?
OL: I've tested all of them, I think, but I can't say I have any favorite yet. If I really had to name one, it would be A Tale in the Desert; certainly not for the graphics or the engine, but for the originality of the conceptual design. At least [its lead designer] and crew are trying new, interesting things.
Also, two noteworthy MUDs: Achaea, because of its interesting business model, and RetroMUD, because I agree with most of its owner's points on design.
VC: Funnily, I prefer the good ol' arcade games. I have never played an MMORPG.
Howard Wen is a freelance writer who has contributed frequently to O'Reilly Network and written for Salon.com, Playboy.com, and Wired, among others.
Return to the Linux DevCenter.
Copyright © 2009 O'Reilly Media, Inc.