Very impressive article Jake! You are very talented.
nice article! i love seeing the breakdowns.
Client engine overview
We’re MMO developers, so we call the “3D/game engine” the “client”, to differentiate from the “server”. Just to clarify for the mobile-reader, this “Client Engine” area basically equates to what most other companies call their entire “engine”. Our engine can be used for anything, not just MMOs, it’s very flexible. Here are a few features:
- Build targets for Windows, WinRT/Win8, MacOS X, Linux, iOS and Android™. Big and little endian, 64bit clean.
- C++ based low-level functionality, with Lua on top. Much “game” and UI work can be done entirely in Lua.
- Fully native DirectX (11 and 9), OpenGL and OpenGL ES 2.0 renderers available; complete separation of engine function calls from low-level APIs, to allow simplicity of future renderer development.
- Proven UDP game protocol, with custom guaranteed packet delivery, retransmission and sequencing figures. MTU discovery automatically optimizes for connection, proven through a vast number of consumer routers and the greater ‘net (easily user-disabled as well). Custom packet compression can be optimized to the specific stream profile with genetic algorithms. Strong but fast encryption also available.
- Compressed data file format, allowing all art assets and other information to be rolled into a single compressed file, with optional encryption also available.
- Portable rendering engine supports progressive/continuous and discrete LOD, gamma correct rendering, material-based and object-hierarchy based scene graphs, multitude of shaders, compressed color and normal maps, animating textures, PNG with alpha, JPEG loading, etc.
- Optimized OBB and primitive based collision detection system.
- Physics engine supports polygon soup collision meshes, first point of contact, center of mass calculations, conservation of momentum, etc.
- Advanced particle/FX system, with hierarchical effect definitions, envelopes, particle emitters may other particle emitters, etc.
- UI with fully featured interface controls, scroll regions, tree controls, list controls, drag-and-drop, etc.
- Spatial partitioning implementations via both Octree and Sweep-and-Prune (performance tradeoffs for either depending on usage).
- Portable sound system with stereo floating-point mixer, arbitrary number of simultaneous sounds, doppler effect, 3D positional sound (outputs to stereo). Integrated OGG/Vorbis support.
- Platform-specific sound drivers for Linux, Mac, Windows (Wave-out, DirectX, Vista/7) allows hardware features to be kept separate from portable code, simplifies adding new sound support.
- Scales very well across a variety of hardware (depending on art content used and implementation methods). Vendetta Online can run on a low-end smartphone, and still look cool on a heavyweight gaming desktop. Client engine also applicable to single-player or non-MMO development.
- Optional hooks for the TeamSpeak 3 SDK (implementations both server and client side) allows for integrated voice chat across all client platforms.
Beyond this, there is an entire art pipeline, with a whole suite of custom tools (available for Win/Mac/Linux) to help artists build and prototype their assets, visual effects, and other features. Custom export plugins are available for 3D packages, etc.