Advertisement

MMORPG Utilizing Valve's Source Rendering Engine

Started by May 14, 2005 02:19 AM
25 comments, last by JJacobo 19 years, 9 months ago
Because none of my threads can be an easy read, I am going to offer some information on our plans for our Medieval/Fantasy-based MMORPG project and humbly request any feedback. =P Please note that I am not a professional coder, and am trying to understand our technical goals from a developers standpoint. We have just finished liscencing Valve's Source rendering engine for our project and our goal is to convert it to a fully functioning, dynamic and persistent game world. Now, I mentioned that we will be utilizing a voice system in my last thread, but I would like to bring up a small sample of some of the more technical features: - Powerful Character Customization Players will be able to edit their face shape, hair/skin color, nose width, etc.. Additionally, there will be several layers of clothing/armor that can be customized as well. - Innovative Combat System Since the Source Engine can offer dynamic action, players will be able to swing, duck, and doge blows in real-time, fire bows from 1st Person, or aim a ranged spell at a target. - Interactive Spacialized Voice System Players can approach one another and speak over the microphone, to be packaged with the retail copy. - Speaking NPCs and Voice Recognition NPCs will regonize certain key words, such as a name of a key character or the command to buy or sell. Also, spells will be casted by speaking aloud incantations into the microphone. - Fully Rendered and Interactive Items Items can be held and manipulated, offered, traded, used, even played upon (in the case of instruments), and will be rendered instead of the traditional MMORPG gump system. - Innovative War Campaigns Like a strategy game, different nations/races will be able to build up their forces to wage war upon their enemies' territories. Armies will consist of players, in-game actors (for larger less frequent events) and NPCs which will follow the orders of commanding officers in battle such as: push catapult, fire catapult, advance on location, defend the line, heal, pillage, and retreat. - Large Populated Worlds There will be relatively few servers with large and spread out countries amonst the vast in-game world. If your heads are hurting you should see our coders! Anyway, I would like any feedback on ideas on how to realize some of the following features. We are a little Art-Heavy on the team at present as we have more Developers and Artists (2D/3D/Animators) than we do programmers. Please try to keep the feed-back constructive, as we realize the scope of the project. I would really like to hear what our talented devs here, have to say. =] (shameless flattery) [Edited by - JJacobo on May 14, 2005 5:36:13 PM]
Well, more than any other programming difficulty, this is our paramount issue. The network side of the software architecture will have to be reworked to accommodate potentially, hundereds of players on screen at the same time. Additionally we do not have the luxory of a single-player game where we can load each small area, as needed nor that of a contained multiplayer game. The challenge will be to create a zoning (or map) system that can provide information to our players and databases dynamically.
Advertisement
Rofl how much did it cost? It sounds like you guys are trying to make one hell of a game.

The problem i see with using the Source Engine for an MMO is that a lot of that stuff would probably cause very high latency (physics, voice, NPC's if they can recognize voices and commands, and dynamic action). Your gunna be sending tons of stuff over the wire and that's probably going to be a problem.

Personally, if i were going to use the Source Engine for an MMO i would probably only use the graphics. Most of the other stuff would probably only cause problems.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                                                          
Looking for video game music? Check out some of my samples at http://www.youtube.c...ser/cminortunes            
                                                          
I'm currently looking to create music for a project, if you are interested e-mail me at cminortunes@gmail.com    
                                                          
Please only message me for hobby projects, I am not looking to create music for anything serious.
Well, of course certain limitations will have to be put into place, but the physics engine will be important for creating realistic combat interactions. Some spells in Kinetic Magic, for example might send an enemy flailing like a ragdoll. As for the latency, we will be limiting and balancing what is processed by our server versus what is processed by the individual clients. For example when speaking to an NPC your client will recognize the keyword and a simple command will be sent to the server so that the NPC will respond with a scripted reply already on the client machine. The Source Engine allows for streaming technology though for voice communication, but that's a topic for another thread (which it has been). We're not pretending that it is not gonna be a lot of work. =P
How did you get the several hundred thousand $ to license? Did someone invent a money tree and not tell me about it? :)
Quote:
Original post by Anonymous Poster
From what you've written, it sounds terrifingly like you don't have anyone who's highly experienced with building distributed systems or high performance network servers. Without at least one person (in charge of the team!) with that background, you are doomed. I have consulted for several MMO's and I speak from experience: I've even seen a perfectly competent (but not great) guy in this role fail to save the project because he wasn't senior enough, and there were people with the power to overrule him.

So, I have just one piece of advice: go hire some real ****-hot network programmers who really understand this stuff. Without it, you're dead. Valve, Unreal, etc are all useless for MMO work, and they know it - you *have* to do all the hard MMO-stuff yourself.

Shrug. Just MHO. But I do do this stuff professionally (currently building a new system for circa 1 billion hits per day).

redmilamber






Well I do agree with you that IF we're unable to secure more professional network programmers, we WOULD be doomed, but rest assured that we do have a working idea of what will be required and we are still currently in pre-production. One thing we do have are producers who understand business, and the details are partially the team's job to supply to them.

We understand the risks involved with the high production costs (though the lisence itself is nowhere near one hundred thousand, DrEvil =]) and long development cycle and are prepared to pay (in dollars as well as hours) what is necessary for professional talent and a sound system.

Regarding our current team, we have two professionals with extensive experience in "high performance network servers" yet none as yet with specific MMORPG "high performance network servers". Your criticism is well, received though, as we will not enter production (i.e. start depleting our funds) until our publisher feels confident that our team is capable of seeing the project through. My purpose for sharing the information on developer sites such as these is two-fold: as I've stated gaining community insight is for us an essential aspect to our production. We have found thusfar, that professionals on sites like this have been extremely, helpful and several have offered their specialized talents and abilities to aid our project. Additionally, more than a few ideas raised over PMs, emails, and threads regarding our project have resulted in a reevaluation, and new direction taken.(not on a whim mind you =P)

I apologize if I have represented our project as a volunteer's hobby or as an ill-planned piece of vaporware, but my lack of complete disclosure has been in part a protection of our assests. Plus, as I have stated I am not a programmer and don't want to sound exceedingly ammateur! =P

"Valve, Unreal, etc are all useless for MMO work, and they know it - you *have* to do all the hard MMO-stuff yourself." We agree that the software architecture (especially on the networking side) will need a complete redesign but the engine is far from useless. NPC interactions (speech included), combat physics, graphics rendering (culling and LODs were a huge plus), scenes, even wave streaming are all beautifully performed by Source, and hopefully our end product will be the result. I understand that these are indeed tools, and not a prepackaged solution as I suspect you're getting at.

"So, I have just one piece of advice: go hire some real ****-hot network programmers who really understand this stuff. Without it, you're dead." I agree 100% .
If any of you "****-hot network programmers who really understand this stuff" are interested contact me or keep an eye out for classified in several online (Gamasutra included) and industry journals (L.A. circulation). =]

I appreciate the feed-back btw, everyone.
Advertisement
Just FYI you could actually build a custom MMOG engine and game faster than building one on the Source engine. You basically have to scrap almost every single feature of Source and the way it works in order to support that game genre.

Obviously you are not sure what you are doing either, as you said you would have to change the 'networking' to handle all of those players.. where that is the smallest problem compared to the rendering, physics, logic, etc. Source is made to handle a certain problem space and an MMOG is so far off the radar it isn't funny. This is probably the worst actual engine choice to make in this case, honestly.

EDIT:
Quote:

We understand the risks involved with the high production costs (though the lisence itself is nowhere near one hundred thousand, DrEvil =])

You obviously have no idea what you are talking about now.

Quote:

We agree that the software architecture (especially on the networking side) will need a complete redesign but the engine is far from useless. NPC interactions (speech included), combat physics, graphics rendering (culling and LODs were a huge plus), scenes, even wave streaming are all beautifully performed by Source, and hopefully our end product will be the result.

Just FYI none of the aspects you mentioned are actually usable in an MMOG setting, sorry to burst your bubble. You will have to redo the majority of the core rendering system, the scenegraph and world system, the physics, and obviously a complete network rewrite. To top it off you'll have to redo the majority of sound as you obviously don't want 100 different sounds trying to play at once.

Find the right tool for the job seriously, you chose probably the worst possible engine to work on a project like this with.
Quote:
we have two professionals with extensive experience in "high performance network servers" yet none as yet with specific MMORPG "high performance network servers"


Note that writing, say, a high-performance web server has almost nothing at all to do with writing a high-performance MMO server. In fact, some techniques that make web servers fast would actually hurt an MMO server. High-performance database server technology is useful on the back end, but has almost nothing to do with the simulation and networking front-end. So the KIND of networking experience you have is really the most important part.

Regarding using Source: their shader and PVS and basic infrastructure stuff can work just fine for an MMO, as can their art pipeline. Getting a fully working art pipeline is a great boon to get started. Just make sure that you model your characters with lower poly and bone counts than typical Half-Life 2 models, because you'll be drawing a lot more of them. Trying to get the number of draw calls down per character would also be beneficial -- ideally, one per character.

Also, if you want to have a "seamless" world, you'll be in for more trouble than it's worth (IMO). I'd recommend designing for a zoned world (a la City of Heroes, EverQuest, etc).
enum Bool { True, False, FileNotFound };
Quote:
Original post by Saruman
Just FYI you could actually build a custom MMOG engine and game faster than building one on the Source engine. You basically have to scrap almost every single feature of Source and the way it works in order to support that game genre.

Obviously, sorry if I seem flippant Saruman, obviously, but I checked out after you mentioned that "almost every single feature" of the engine would have to be scrapped, obviously.

If you took any time to look at our project goals, you would see the necessity of an engine designed to support a plethora of immersive and action-intensive features.

Quote:
Valve
Renderer
- Version 2.0 (and below) shaders, bump mapping, LOD on models and world (check)
- Author shaders with HLSL (check)
- Cube and environment mapping (check)
- Dynamic lights, vertex lighting and light maps, many light types including flickering, pulsing etc. (check plus)
- High-Dynamic Range lighting (check)
- Water with refraction and fresnel effects (check)
- Advanced particle system that can emit sprites or models (check plus)
- Projected shadows allow for a large number of characters per scene (check plus)
- Occluder entities for visibility blocking (check plus)
- Indoor/Outdoor environments (check)
. Deformable terrain (check)
. 3D skyboxes extend the horizon and add parallax on distant objects (check)
. Dynamically rendered organics (grass, trees etc) (check)
- Subdivision surfaces, diffuse & specular bump maps (check)
- Real-time radiosity lighting (check)
- Effects include but are not limited to: particles, beams, volumetric smoke, sparks, blood, environmental effects like fog and rain (check, real-time weather effects baby)
- Scalability (check)
. Dx6-Dx9 hardware supported


Materials System

- Instead of traditional textures, Source defines sets of materials that specify what the object is made from and the texture used for that object. A material specifies how an object will fracture when broken, what it will sound like when broken or dragged across another surface, and what that object’s mass and buoyancy are. This system is much more flexible than other texture only based systems. (check/ this is key to our item system)
- Materials can interact with objects or NPCs such as mud or ice for vehicles to slide/lose traction on. (check)


Multiplayer Network Code
- Time and gamer tested by millions of gamers around the world (N/A)
- Support for both LAN based multiplayer and Internet based multiplayer games (N/A)
- Prediction analysis for interpolating collision/hit detection (check)
- Optimizations for high-latency, high-packet loss 56k connections (check)


Advanced Characters

- Detailed and believable characters (check)
- Realistic eyes (check)
. Focus on player/object, not simply parallel views
. Proper eye “bulge” for realistic eye reflections
- Simulated musculature provides outstanding emotions, speech and body language (check)
- Language independent speech, characters can naturally speak in many languages (check PLUS)
- Skeletal/bone system for animation (check)
- Layered animation system can synthesize complex animations out of several pieces (check)


Physics

- More responsive world with realistic interactions (check)
- Sounds & graphics follow from physics (check)
- AI characters can interact with physically simulated objects (check plus)
- Ropes/cables, machines, constraint systems, ragdoll physics (check)
- Can be controlled by level design (check)
- Kinematic animated bone followers (check)
- Custom procedural physics controllers (check)
- Vehicles (check/ as far as mounts are concerned)
. Wheels slip and skid
. Realistic suspensions with springs on each wheel
. Realistic leaning during acceleration/deceleration and turning
. Individually tunable parameters such as horsepower, gearing, max speed, shift speed,
tire material, tire friction, spring tension/dampening etc.
. Multiple players in a vehicle in multiplayer
. Hovercraft support for cheaper simulation


Advanced AI (important of our "action-game" aspect of combat/ NPC interaction)

- I/O system allowing level designers to control AI
- Sophisticated navigation: characters that run, fly, jump, crouch, climb stairs and ladders, and burrow underground
- AI senses things using sight, sound, smell
- AI relationships determine friend/foe status of other entities
- Battle AI allows squads of AI characters to operate together, know when to advance, retreat, lay cover fire, etc.

Sound (check, all applicable)

- 5.1 surround sound, 4 speaker surround
- High-quality 3D spatialization
- Custom software DSP
- Automatic DSP based on environmental geometry
- ADPCM decompression
- 16-bit 44KHz, stereo wave data with all features
- MP3 decompression (requires Miles license)
- Support for audio streaming on any wave
- Real-time wave file stitching
- Pre-authored Doppler effect encoded waves
- Pre-authored distance variant encoded waves


UI (N/A)

- Server browser - Displays all active game servers and allows a player to choose which one to participate on. Players can filter and sort server lists in order to speed up the display and selection of a server.
- Friends instant messenger - Allows players to message each other both in and out of the game as well as join friends in existing games. No more confusion about what server your friends are on, you can easily join with this feature.
- VGUI – Valve’s custom GUI interface mimics most of the windows controls but is rendered using the Source engine for both in game and out of game uniform UI display. VGUI is platform independent and is Unicode compliant for ease of localization


Programming

- All code written in C/C++ using Visual Studio 6.0. Easily and quickly derive new entities from existing base classes. (check plus)
- Internal context sensitive performance monitoring system (check)
- Graphics performance measurement tools built into the engine (check)
- Modular code design (via DLL’s) allows swapping out of core components for easy upgrading or code replacement (check plus)
- Dx9 shaders all written in HLSL


Tools (check + + +)

- Faceposer
. Facial expression tool used to craft speech and emotions
- Valve Hammer Editor
. WYSIWYG World editor
. Create world brushes
. Terrain editor
. Place detailed world models and AI NPCs
. Set navigation points/paths for NPCs
. Place triggers, clip brushes, logic etc.
. Allows level designer to hook up I/O between entities to control AI within the game|
- Half-Life Model Viewer
. Full model previewer
. Rotate models in any direction
. Setup hit boxes
. View physics hull
. View normals
. Wireframe, shaded or textured view modes
- Studiomdl
. Model compiler
- Vbsp, Vrad, Vvis, VMPI
. Map compilation tools (bsp, lighting and visibility)
. VMPI – distributed compilation tool allowing level compiles to be
spread across many pc’s greatly reducing compile times
- Exporters
. XSI, Max and Maya .smd exporters for exporting 3D models
Quote:
Original post by hplus0603
Regarding using Source: their shader and PVS and basic infrastructure stuff can work just fine for an MMO, as can their art pipeline. Getting a fully working art pipeline is a great boon to get started. Just make sure that you model your characters with lower poly and bone counts than typical Half-Life 2 models, because you'll be drawing a lot more of them. Trying to get the number of draw calls down per character would also be beneficial -- ideally, one per character.

Also, if you want to have a "seamless" world, you'll be in for more trouble than it's worth (IMO). I'd recommend designing for a zoned world (a la City of Heroes, EverQuest, etc).

Thank you for the more constuctive feedback hp. =P
Yea, I suspect you're right about our zoning challenge, though I think there might be a more clever way to disguise the mechanics of the system, but as I have stated: I am not a programmer.

Anywho, the art pipeline is a huge plus, since we can basically start modeling and doing the 2D/3D work immediately with the engine already in place. Regarding poly count, I think we were playing with making the LOD feature an option for players, with some sort of recommended setting (Source can LOD up to 8 meshes for an object).

Regarding the lisencing info, part of the NDA was hrm... non-disclosure =P, so unfortunately no comment on that. Thank you for the feed-back guys. One good thing about blatant criticsm is that we get a worst case scenario for the project, which our producers like.
("It will be more work designing an engine with your planned features from scratch!")

Once again guys/ I'm a developer so my job is coming up with the big ideas while the egg-heads to the follow-ups with the actual techincalities, but I am trying to learn as I go.

"Jacobo has NO idea what he's talking about" =P

Any other thoughts on the Source Engine for the project? On a recommendation to visit the HL2 mod community, we've found some talented and knowledgeable guys ont he engine so thanks for the ref. whoever that was.

Anywho, keep the polite dialogue coming please. I appreciate everyone's feedback!

This topic is closed to new replies.

Advertisement