1.概述(Overview)
经过几年来在各种应用系统、游戏、研究平台方面的研发工作,我最终决定开发一个高度开放的集成环境,它就是EDS。EDSim(EDS)是Extensible
Distributed Simulation Environment的缩写,即可扩展的分布式模拟环境。它可以作为一套适合于海量虚拟内容的创建和模拟以及大规模交互式接入的全方位解决方案。

像游戏这种特殊的虚拟交互模拟系统,已经涉及到计算机科学的方方面面,它要求将各种计算机软硬件技术充分融合在一起,在整体上一致发挥它们的功效。
EDSim(EDS)不是一套独立开发的引擎!他利用自身具有的强大集成特性,吸取各种独立技术的精华,对外表现为一个统一的、高效的平台体系。
所有你拥有或者敬仰的最好的技术模块,EDS都能将它们转化为架构支持的通用部件,甚至能够采纳它们作为自身的支持组件。在使用EDS开发产品的过程中,这些技术模块就像同一个品牌的积木一样被简单灵活的搭建。同时,在EDS架构的协调下,任何技术模块(积木)对其他积木而言都是能够高效访问并且相互协作的!
我们将不惜一切代价地寻找最优秀的技术模块,将它们集成到EDS之中,让这些技术的能力得到充分结合和一致体现!
EDS的最终设计目标是拥有支持以下主要特性的支持组件:
l
可扩展的高效图形引擎
l
高效的声音引擎
l
高效的物理引擎
l
插件技术
l
人工智能
l
高可扩展性的通用服务体系
l
分布式接入体系
l
资源内容提供工具
l
强大的研究(研发)调试平台
1.2.1
可扩展的高效图形引擎(EDSim
Graphics Engine)
General Info:
Graphics API DirectX
Operating Systems Windows/Xbox
Programming Language C/C++/Python or LUA?
General Features Object-Oriented Design
/ Save/Load System
Graphics Features
Lighting
Per-vertex | Per-pixel | Volumetric | Lightmapping |
Radiosity | Gloss maps | Anisotropic | BRDF
Shadows
Shadow Mapping | Projected planar | Shadow Volume
Texturing
Basic | Multi-texturing | Bumpmapping | Mipmapping |
Volumetric | Projected | Procedural
Shaders
Vertex | Pixel | High Level
Rendering
Fixed-function | Stereo Rendering | Raytracing |
Raycasting | Deferred Shading | Render-to-Texture |
Voxel | Fonts | GUI
Scene Management
General | BSP | Portals | Octrees | Occlusion Culling |
PVS | LOD
Animation
Inverse Kinematics | Forward Kinematics | Keyframe
Animation | Skeletal Animation | Morphing | Facial
Animation | Animation Blending
Meshes
Mesh Loading | Skinning | Progressive | Tessellation |
Deformation
Surfaces & Curves
Splines | Patches
Special Effects
Environment Mapping | Lens Flares | Billboarding |
Particle System | Depth of Field | Motion Blur | Sky |
Water | Fire | Explosion | Decals | Fog | Weather |
Mirror
Terrain Rendering | CLOD
| Splatting
1.2.2
高效的声音引擎(EDSim
Sound Engine)
2D Sound
| 3D Sound | Streaming Sound
1.2.3
高效的物理引擎(EDSim
Physics Engine)
Basic
Physics | Collision Detection | Rigid Body | Vehicle
Physics
目前融合物理引擎ODE
1.2.4
插件技术(EDSim
Plugins)
独立开发的插件DLL将拥有和研发模块(Research
Modules)相同的功能环境。不同的是,插件DLL是动态链接的。
Plug-in
Architecture
1.2.5
人工智能(AI)
Pathfinding | Decision Making | Finite State Machines |
Scripted | Neural Networks
1.2.6
高可扩展性的通用服务体系
强脚本化的虚拟机系统,高度抽象的数据描述和开放的数据库服务。采用分布式计算的核心服务网络可以实时模拟一个巨大的虚拟世界。
强大的标记数据(如HTML,XML)服务体系,多类型服务(HTTP)。
网络底层支持:Client-Server
| Peer-to-Peer | Master Server
1.2.7
分布式接入体系
多类型接入接口(Internet,移动),通用交互协议。非图形化和图形化的接入端系统(即图形化的客户端)。
网络底层支持:Client-Server
| Peer-to-Peer | Master Server
1.2.8
资源内容提供工具(EDSim
Content Tools)
丰富强大的资源内容创建工具,支持远程资源提供者接入体系。
Tools &
Editors:Scripting
| Built-in Editors
1.2.9
强大的研究(研发)调试平台(EDSim
Research Platform)
EDS最初是作为研究/研发平台开发的,不特定于具体项目,但是其思想、架构以及扩展性可以用于实际项目,并且也可以作为试验引擎。
出于研发的目的,一个研发运行平台需要有相当丰富的调试支持周边系统,开发者不应该为每一个新的技术模块都构造一些常用的底层基础或者周边的程序代码,重复地发明轮子是不理智的。EDS的研究体系是一种通用可扩展的开发平台,该系统包含了积木化的模块调用架构,可在运行环境中动态配置加载如3D图像引擎、调试体系、性能测试、文件体系、命令行控制台、日志系统等基本的支持子系统以构造研发环境。
1、该平台将极大加速独立技术模块的研发,让模块研发从程序界面、运行调试、3D调用逻辑的重复实现中解脱出来,使研发人员可以完全投入到模块即其算法的研究中去。
2、在EDSim研究平台上研发的任何模块具备良好的代码重用特性,去掉极少的调试宏,模块代码甚至可以不加修改地移植到实际项目中去。
3、极高的模块重用性。新的模块一旦研发成功(比如新的基本类型、XML
Wrapper、Net Wrapper、DB
Wrapper、物理引擎、声音引擎、虚拟机、特效),又可以作为EDSim的支持模块(Support
Modules-SM)或子系统被加载。这样,EDSim本身是无限壮大的!更重要的是,EDSim的每一个研发结果都会被参与或者使用EDSim研究的人所熟悉,这样不但提高了研发成果的利用率(重用率),也避免了未来的重复开发。
比如A研发出了Lua
C++ Wrapper,B研发出了MySQL
Wrapper,如果只针对某特殊项目或试验而作,那么在项目结束后,该模块(技术)就很可能束之高阁或者只有开发者A、B本人在使用其功能,很难为其他人所用!
又比如一个网络游戏,如果我们能进一步将其虚拟机、界面、网络服务体系都独立出来,则即使一个网络游戏本身,也可以将其大部分构件作为EDSim的研究组件(Research
Modules-RM)进行高效率的开发,因为这些部件在EDSim框架下是既独立又能够相互协作且无缝结合的!
4、EDSim本身是一个可扩展的3D引擎(DirectX引擎),核心采用基本的C++和STL类写成,可以在任何Win32平台上以窗口或者控制台方式运行,对于非图像应用(比如服务器、网络中间件),可以相当方便地移植到Linux平台上。
5、作为一套开发基础库,EDSim以尽可能使用现有通用类型为原则,降低了学习难度并减少熟悉时间的开销。EDSim中大量使用C++基础类型和STL模板类,图形部分使用Microsoft
DirectX基本类型,一般不生造新类型(很多小组为了跨平台性,不得不创建很多封装类型,甚至包括封装C++简单类型,使人产生强烈的陌生感)。
6、支持测试驱动的开发,融合了CPPUNIT的测试机制,通过自动化测试保证软件质量。
|