开始的小测试环境

      上图是前天构造的一个测试小环境,模拟个体能够获得(得到输入)自己的当前速度、角度、HP以及最近目标的相对位置,离目标越近HP减少得越慢,存活时间越长者适应度越高。刚开始的情况是完全随机,模拟个体完全在一个随机的最小结构神经网络的支持下处理自己的输入。这样的设置相当简单,程序员几乎不做什么工作!接下来就是运行,运行,再运行。个体会不断地发生变化最终达到这个小环境设计者心里的样子吗?到底明天它会不会自动设计出策划要求去达到这个简单任务的NPC呢?
 

      几个月前,我为自己的一个实验性项目构建的分布式模拟环境基本就绪。该环境采用了HLA网络结构组建,基本上完成了对HLA核心网进行的二次封装,另外构造了一个广域网的扩展接入系统方便更广泛的人机交互!目前这个体系的基本稳定为我的试验项目奠定下了第一个基础。

      这三年来我一直致力于图形引擎的开发和应用工作,之前在MSRA的纯图形学以及图形硬件的研究工作也奠定了足够的图形基础,因此对这个试验项目而言,一个较为完善的软件研究平台和图形支持系统也很快基本成型,并且能够很方便地投入到研究和设计工作中去。这可以说是试验项目的第二个基础。

      前段时间,我在这个平台上对随机宇宙(过程宇宙——Real-Time Procedural Universe,这方面主要研究自动、随机地生成各类拟真的图形、图像、逻辑内容)的一些基础算法、架构的研究模拟和实现(link),使得我更加确信CH系统在内容上人机交互的支持能力也一定会相当强大,特别是对人机图形界面,任何内容的变化都能实时表现在远程的图形客户端上。

 

      两个月前,我觉得系统底层的一些必要支持已经基本到位,于是我开始构造这个项目的第三大基础架构(即CH必须是一个智能的、自组织的、演化的系统),另外我也希望能提出一种自下而上的开发方式。我知道,CH这样一个大系统,必然是一个“复杂系统”。对复杂系统的研究目前学术界也仅有几个前沿的方向,比如人工智能、人工生命、神经网络、分形、细胞自动机等理论、模型及算法。既然认为CH系统必须要是一个智能的自组织世界,就必然涉及到这些学科方向。这几年来我一直借助在游戏/网络游戏领域的工作机会,探索它们应用的可行性,但长期来对人工智能的有限应用总是让人找不到方向。要么必须在一些明确的问题域上面求得具体的实现(比如A Star),要么必须要找到游戏内容相关的复杂具体模型(比如路点模型、有限状态机模型等等),这对程序开发人员和策划人员来说实际上都是很痛苦的。严格的说,目前我在游戏上的这些工作还谈不上与复杂系统有什么关系,仅仅是一些自上而下的常规开发策略。

      幸喜的是,早就有不少游戏/软件开发公司开始尝试类似自下而上的开发方式。比如,据说Maxis公司的《模拟城市》近几个系列中就采用了人工神经网络技术;不少单机策略或者射击游戏中,开发公司在设计时也离线进化了不少游戏角色和策略;EA在最新的模拟类游戏Spore(孢子)中也很可能采用了一些进化方面的算法或者技术。

      其实在复杂系统中,细胞自动机、神经网络、进化算法、粒子群算法(比如蚁群算法)等领域都是具有良好的应用前景(当然是什么时候大规模应用我们就不去追究了),开始我打算直接在CH系统中使用人工神经网络(ANN),但是在试验中发现,ANN除了本身需要一个较为难描述的环境模型外(特别是实际游戏应用,网游就更不用说了),如果要达到一个通用的、优秀的、无监督的求解性能的话,ANN的算法也是要相当考究的,目前这方面也正是ANN领域研究的重中之重。应此在游戏应用或者模拟研究中,我觉得不大可能寻求到一个现实的实时自适应ANN系统来满足要求,而且毕竟我们不是搞研究而是搞应用的。


一个反相传播的神经网络。设计这样一个网络对于复杂输入和输出的环境来说“几乎”是不可能的。


      为此前段时间我投入到细胞自动机、蚁群算法等领域中去找寻一些应用上的可能点。都怪“元胞自动机(CA)”前不久闹得很火,霍夫曼(自称CA之父)也曾大言不惭CA能颠覆人类得一切科学,谓之“新科学”。拜读其大作以及进行一些试验后,发觉一些思想确实非常新颖独到,很多试验也相当有趣。但是总觉得对CA的研究大多以证明某某理论为结果,没有一点预测能力(即科学的理论总是可以预测的),总有点事后诸葛的感觉。我也很难从CA引出一些能辅助设计的路子来(nb的霍夫曼认为“宇宙就是一巨大的CA,除了实实在在地注视、观看这些规则会如何呈现其结果之外,没有任何办法去预先知道这些结果”,那研究这个理论有个P用啊)。况且它和蚁群算法一样,问题域或者空间维数的增大不可避免地需要庞大的甚至不且实际的计算量(这点蚁群算法还算好些)。


   

      一个有趣的报告是Wolfram公司的Paul Jean做的,他研究基本细胞自动机(Elementary Cellular Automata,ECA)家族中的第146号,发现了一个奇特的现象。以某个特定的初始条件开始,146号ECA在经过300多步演化之后会突然出现一个相变行为:本来随机排列的一些黑白方格在一个时间步内突然集体变成了白色,并且这个白色区域经过几步演化之后逐渐衰退,因而会在时间图上留下一个大的三角形区域。
      这种现象对于146号ECA来说属于一种极其罕见的行为:只有在特定的初始条件才能发现,Paul称这一现象为Monolith,即“独石碑”。Wolfram常常把自己发明的细胞自动机比喻成当年伽利略发明的望远镜,透过先进的工具,我们可以得到一些全新的科学观察。

      Spore这样的游戏让我看到了另外一个可能方向——进化。从Spore的介绍以及细节上看来,似乎不是严格意义上的实时进化,而且也不大可能会有形态上面的进化(形态进化需要更为有效的图形学理论以及强大的计算能力)。游戏过程仍然是处于人为选择或者策划设定的进化模拟,大多数内容仍然是事先设定好的,不过模型的有机化和进化的思想和表现倒是其卖点。Spore的发行一拖再拖,似乎Will Wright(就是开发《模拟城市》和《模拟人生》那个家伙哈)不把它做得完美就不罢休似的,所以最终版本出来是什么样子还不得而知,期待中…… ^-^

      在Spore这个游戏感受的诱惑下,我考查了许多进化相关的游戏或者软件系统的资料和Paper,国际上也有很多的小项目组专门做这方面的探索,从各种复杂系统小程序到Tierra/Avida的代码进化,从Framsticks的形态行为进化到AI.Planet那漂亮的生物乐园。真还没有想到,居然处处都有进化人工生命的影子! 



Panspermia中进化出来的生物和世界




Framsticks: 
               1. A creature made of sticks, each is specialized in some function. You can see three receptors – touch, smell, equilibrium, and a red muscle. 
               2. Underwater creature seeking energy.
               3. Hunt: a creature trying to catch and kill the other one. 



AI.Planet中丰富的进化世界


      对GA(遗传算法)的详细考查过后,我决心将遗传算法简洁高效的进化思想应用到CH系统中来,正巧我已经准备好了一个很好的HLA模拟体系,加上对ANN比较熟悉,我选取了来自NNRG(nerual netwaoks research group)的一些研究成果来进行攻关和改进。NNRG虽然看起来仅是国际上的一个神经网络研究小组(The group is part of the Artificial Intelligence Lab in the Computer Science Department at the University of Texas at Austin),但是从它的研究领域和项目中可以看到,它对基于NN应用的一个很大领域都有涉猎,而且它融入了很多其他领域的成果。NNRG有个NEAT项目,是一个关于自适应地从简单到复杂构造一个满足问题域的神经网络,适应算法上又采用了GA的思想,应此性能和效果都比较好,对我而言它更重要的是还不用关心NN的具体模型和优化细节!有趣的是,NNRG甚至也出了一个游戏,叫NERO,可以离线进化一些很好的策略来进行战斗对抗。
      我现在拥有的HLA核心网络上可以进行较好的分布式模拟,因此我对NEAT进行了改进,将基因的进化和ANN的适应度评估和应用较独立的分开来。应用NEAT的实时进化特性(rtNEAT),加上我对核心网扩展的广域网接入系统,人类(玩家)也可以很好的加入互动,这样设计有利于未来在网络游戏具体项目上的应用。

 

      由于基因的进化在服务器上进行,并且可以随时保存和重加载,以网络游戏的角度来看,实时进化在不间断的人机互动中可以表现得很好。再从游戏的设计上来看,策划无需设定甚至分析具体的任务实现过程(特别是NPC),程序员不用为实现这个过程煞费苦心做复杂的设计(况且每个程序员设计出来的算法不一定就是最优的,策划也不一定具有相当丰富的专业知识和经验。而遗传算法在理论上来说就可以达到全局最优),所有的设计工作都是在长期的在线运行和与环境(甚至真人)的互动中进化达成;策划也可以设定广泛的游戏环境和属性(这目前是策划大量的工作)而不用再担心诸如增加一个属性就会造成各个系统的相应修正和程序配合修改这种事情(比如NPC从不能攻击到支持攻击,环境中新增加一种叫做“food”的道具)。
      经过这段时间的试验,我想再从策划的角度来看,策划设计一个东西就可以考虑是走自上而下的分析路子,还是较为傻瓜的自下而上的新路子了!目前我只是提出这样一个设计方向,还有待进一步试验来观察它的实际应用效果。


      BTW,由于这个小环境试验前几天才设定好,这几天还没有来得及去运行它,反正进化的基因可以保存和再加载,可以说设计过程是连续的,每天都可以出新花样。所以我在接下来的日子可以经常报告这个CH小世界的情况,多多截屏。比如下周发现新进化出(设计出)了一个光吃不打的farmer类角色或者一个光打不吃的warrior类角色;又或者在下周某天我加入了一种新的食物类obj或者阻挡类obj,他们又会涌现(复杂系统??)出某些行为模式出来。暂且将之后这类日志归入博客上的“CH世界大事记”一栏吧,嘿嘿。

[转自我的博客:http://xiaopplus.blog.163.com,实验正在继续,欢迎提出建议]

posted @ 2008-04-11 10:10 小P 阅读(43) | 评论 (0)编辑
       其实目前随机过程已经可以实现大量东西了,但是和自然界比起来还是不值得一提啦。

       和环形山一样,星球表面在固定点以少量参数甚至可以生成植物、生成建筑物,这可能是下一步的目标,但我最近迷住了进化神经网络,正在考查其在游戏中的应用可能性。

       随机星球,也就是星球引擎,现在已经不少了,各处都有介绍。随机过程的建筑物其实也相当Cool,如果Infinity能让我们俯冲扫射星球表面的建筑物,那是相当的Cool啊!http://www.vterrain.org/Culture/BldCity/Proc/index.html,这个地址是一个过程建筑物方面的网络节点,大家有兴趣可以去看看。

这是随机方法生成的建筑物

用在纽约市就是这个样子


       植物,Infinity由于专注于太空,对随机植物没有做什么应用,其实如果星球表面采用这个技术的话,也很Cool,目前植物系统有很多方法实现,比如传统的左旋系统即L系统,或者进化方法等等。都非常漂亮,这里我有个网络节点的链接:来自于形态进化算法之父的网站,上面的生物很漂亮:http://www.genarts.com/karl/panspermia.html

这个不是海马,叫“天马”,呵呵,只用了几十个参数吧

        大家感兴趣的话可以下载他网站上的视频,就是从宇宙中掉出来的种子,然后变化的图像,全部使用进化算法创建的图像,异常精彩!


        这里也有一篇我目前关于这方面的介绍和我的项目进度:http://bbs.gameres.com/showthread.asp?threadid=100231,属于“过程图像”和“复杂系统”领域,其实我的目标主要是能在像Infinity这样的MMO上面应用这种可以自进化或者交互的的人工生命,大家试想如果Infinity不仅仅是图像漂亮和宇宙的宏大,每个NPC(敌方战舰或者星球表面的一群居民)能非常聪明的和你交互(不像现在这样的重复又重复),能够因为你的影响而改变(进化),那是多么“恐怖”的事情啊!^-^

posted @ 2008-04-11 10:03 小P 阅读(166) | 评论 (2)编辑

      上半年,从构建好一个基础的HLA网络(S方面的计划)以来,我一直在试图创建一种充满着各种星球、星系的宇宙内容体系(R方面的计划)。由于备受Celestia和ONeil的“A Real-Time Procedural Universe”感染,我一直就梦想着能够将随机但接近现实的宇宙图景动态地整合进SRI网络中。加之在我相当喜欢的游戏EVE里,总是有把飞船开向行星表面这样难以忍受的冲动(现在看来,在游戏Infinity中也采用了类似的技术飞船可以开到星球或者空间上表面上去)。我最终决定让SRI网络在一开始就挑战随机的庞大宇宙!
       Celestia有接近现实的星系际物理体系,数据均来自像NASA这样的宇航机构。而ONeil的过程宇宙,又是从随机函数(比如柏林函数)中得到的灵感。我希望能够在SRI网络中将它们应用上来。

Celestia项目目前应该有200万到300万的星体数据了吧!

Celestia基于现实宇宙的漫游系统

       基于对柏林函数的理解,我对ONeil的项目进行了一些移植,到目前为止基本上实现了以极少量参数生成一些接近现实的星体并动态地绘制它们,下面是一些实时渲染的截图(所有随机函数均为可预测随机函数):

远处观测地球尺寸的星体,大概用了七八个参数。地形由柏林函数生成,贴图根据高程自动生成。

接近星球表面后,可以看到由另外一种随机函数动态生成的环形山

      接近地面后可以看到更多的细节,比如用公告板实现的一些草地。该图是应用了阳光在大气中散射后的效果。

地球的卫星——月球规模的天体

       由于业余条件下开发得非常慢,加之最近迫切想进入下一个更大的目标(I目标,在博客上一篇专门的文章中我将描述这个),我本来想搁下这方面的开发。但最近看了一部日本动画片《英雄时代》,很有感觉,加之做一件事情应该有头有尾,所以我决定还是尽快继续将星体数据(属性)整合进HLA网络收尾,以达到一个能在SRI系统中应用的程度。


 

       目前该渲染模块的性能一般,未来某个时候我回再回来进一步对其进行优化,并且支持星体表面的云层以及大气散射效果。

BTW,从游戏/交互上面来看,我一直以来就有一些想法,基于原来在CH项目中的设计,SRI人类界面的操作模式可以包含第一人称、第三人称、(EVE、魔兽等)和第三人称管理(家园)这三种视觉模式,模式的切换视交互内容的需求而定。



link: http://xiaopplus.blog.163.com

posted @ 2007-08-09 23:15 小P 阅读(190) | 评论 (1)编辑
由于访问cnblogs实在是太慢,博客已经转移至:http://www.blog.163.com/xiaopplus/
posted @ 2006-10-30 13:10 小P 阅读(1043) | 评论 (3)编辑
 这是到2005年的一些屏幕截图,EDS还在开发中,还没有准备大量的Demo,我将在2006年补上这些


HDRC

2004年基于GPU的高动态图像压缩研究



HDRC

2004年基于GPU的高动态图像压缩研究



EDS Client Sample

一个简单的图形客户端示例



EDS Model Editor Sample

一个简单的模型编辑器示例



EDS Server Sample

一个简单的服务器端示例



2D Game Sample

一个2D游戏示例



MS HDR Sample by EDS

移植了微软HDR场景的EDS版本



2D Tech

EDS 的2D图像能力(剪裁、变换、渐变、透明、缩放)



EDS SceneMan

EDS的场景管理模块示例,这是一个采用简单的控制台脚本测试的3D场景、模型加载、骨架动画示例







posted @ 2006-04-17 22:57 小P 阅读(647) | 评论 (0)编辑

24     EDSim实例(研发就是搭积木——Toy Bricks Development

         模块=组件=积木!EDSim将任何需要研发的技术模块都作为引擎的一个普通组件进行加载,并根据该组件的CAM定义决定适当的调用逻辑。

即注即用!研发人员一旦定义好该组件的CAM,即可注册进EDSim引擎,于是该组件将在极其良好的研发调试环境中运行,由于可以自由使用各种支持组件,研发人员可以完全且仅仅投入到该模块技术功能/算法的开发中去。

2.3.1 实例一(一个服务器系统)

       这是一个简单的单一服务器游戏世界模拟系统,其组件加载顺序可以是这样:

Console/Log
VarSys
TimeSys

Pryer (optional)
DBSys
(数据库支持)
Net(网络支持)

SubManager(物质管理器)
ObjManager(物件/体管理器)
AccountManager(帐号管理器)

Sim(虚拟机)

       这里每一个模块作为一个组件被加载,其中ESM组件(EDSim支持组件)可以在系统任意地方作为Singleton被访问。搭建一个服务器就像积木一样,其代码大致如下:

        RegisterESM( EDS::CConsole );
        RegisterESM( EDS::CTimeSys );    //only this one takes frame time
        RegisterESM( EDS::CPryer );
       
RegisterESM( EDS::DataBase::CDBSys );
        RegisterESM( EDS::Net::CNet );

        //Data managers
        RegisterESM( EDS::Server::CSubManager );
        RegisterESM( EDS::Server::CObjManager );
        RegisterESM( EDS::Server::CAccountManager );

        //Simulator
        RegisterESM( EDS::Sim::CSim );

       可以看到,每个组件就对应一行注册代码,EDSim引擎将自动按照注册顺序以适当的调用逻辑进行调用,如下图:


 6. 一个简单服务器

2.3.2 实例二(一个客户端系统)

       这是一个可以显示上述服务器模拟世界的简单图形客户端,其组件加载顺序可以是这样:

Console/Log
VarSys
TimeSys

Net(网络支持)
ClientSubManager(物质管理器)
ClientObjManager
(物件/体管理器)
ResourceMan
(资源管理器)
Pryer (optional)

ClientSim(图形世界虚拟机)

MainDXUIDXUI 界面)

       其代码大致如下:

        RegisterESM( EDS::CConsole );
        RegisterESM( EDS::CVarSys );
        RegisterESM( EDS::CTimeSys );    //only this one takes frame time
        RegisterESM( EDS::Net::CNet );

        //Data managers
        RegisterESM( EDS::Client::CSubManager );
        RegisterESM( EDS::Client::CObjManager );
        RegisterESM( EDS::CResourceMan);
        RegisterESM( EDS::CPryer);

        //Simulator
        RegisterESM( EDS::Sim::CClientSim );

        //MainUI
        RegisterESM( EDS::CMainDXUI );

       运行如下图:


 7. 一个简单客户端

2.3.3 实例三(一个模型编辑器系统)

这是一个可以对上述模拟世界的物质进行编辑的图形编辑器,主要功能在模型渲染编辑组件中开发,其组件加载顺序可以是这样:

Console/Log
VarSys
TimeSys

Net(网络组件)
SubManager(物质管理器)
ResourceMan(资源管理器)

Pryer (optional)
RenderModel(模型编辑组件)

MainDXUIDXUI 界面)

       其代码大致如下:

        RegisterESM( EDS::CConsole );
        RegisterESM( EDS::CVarSys );
        RegisterESM( EDS::CTimeSys );    //only this one takes frame time
        RegisterESM( EDS::Net::CNet );

        //Data managers
        RegisterESM( EDS::Server::CSubManager );
        RegisterESM( EDS::CResourceMan);
        RegisterESM( EDS::CPryer);

        //ModelEditor
        RegisterESM( EDS::Sim::CRenderModel);

        //MainUI
        RegisterESM( EDS::CMainDXUI );

       运行如下图:


8. 一个简单的远程物质编辑器

2.3.3 实例四(一个HDR技术模块研究系统)

这是一个对2004年我在基于GPU加速的图像高动态范围(HDR)压缩技术上的研究系统的EDS移植,加载的组件除了GPUGHDRC模块外,其余模块与积木三用的组件别无二致!

  

9. GPU GHDRC 研究系统

posted @ 2006-04-17 22:56 小P 阅读(481) | 评论 (0)编辑

2.体系架构(System Architecture

       EDSim中的图形引擎架构采用 较为标准的DirectX 调用逻辑,内部组件相对独立,组件一经注册后,引擎将对各个功能模块自适应地进行调用(不同组件模块会有不同的调用逻辑)。EDSim核心引擎采用单线程以保证效率,基本体系完全采用C++STL开发,支持Win32,采用UNICODE,具备良好的可移植性。

21     组件对象模型(COM

       EDS对多数复用组件采用了基于COM思想的抽象接口IEDSUnknown


2 COM抽象接口

22     组件行为模型(CAM

应用程序中任何组件或者模块都有特定的调有逻辑,有的模块需要一次初始化就够了,而有的模块则需要不断被调用以更新自身的状态。对于常规应用程序(包括网络应用、数据库应用、DirectX图形应用等),EDSim将各种组件按照行为需求抽象为几种基本的抽象类型。

23     EDSim支持组件(EDSim Support Modules - SM

       EDSim积木式地加载各种组件,虽然整个进程范围只具有一个Singleton——EDSim Core EngineECE),但是由于ECE对基本支持组件进行了绑定,所以各支持组件在项目进程的任意位置任意时刻均可以快速访问。在应用了包装支持组件指针的宏之后,所有的支持组件都可以被看作单体(Singleton)来访问。

       新的研究组件(Research Modules)或者技术模块一旦产生,均可以作为新的支持组件(支持积木)被ECE绑定。这样,EDSim本质上是无限可扩展的。

posted @ 2006-04-17 22:55 小P 阅读(227) | 评论 (0)编辑

1.2           特征(Features

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 & EditorsScripting | Built-in Editors

1.2.9 强大的研究(研发)调试平台(EDSim Research Platform

EDS最初是作为研究/研发平台开发的,不特定于具体项目,但是其思想、架构以及扩展性可以用于实际项目,并且也可以作为试验引擎。

出于研发的目的,一个研发运行平台需要有相当丰富的调试支持周边系统,开发者不应该为每一个新的技术模块都构造一些常用的底层基础或者周边的程序代码,重复地发明轮子是不理智的。EDS的研究体系是一种通用可扩展的开发平台,该系统包含了积木化的模块调用架构,可在运行环境中动态配置加载如3D图像引擎、调试体系、性能测试、文件体系、命令行控制台、日志系统等基本的支持子系统以构造研发环境。

1、该平台将极大加速独立技术模块的研发,让模块研发从程序界面、运行调试、3D调用逻辑的重复实现中解脱出来,使研发人员可以完全投入到模块即其算法的研究中去。

2、在EDSim研究平台上研发的任何模块具备良好的代码重用特性,去掉极少的调试宏,模块代码甚至可以不加修改地移植到实际项目中去。

3、极高的模块重用性。新的模块一旦研发成功(比如新的基本类型、XML WrapperNet WrapperDB Wrapper、物理引擎、声音引擎、虚拟机、特效),又可以作为EDSim的支持模块(Support ModulesSM)或子系统被加载。这样,EDSim本身是无限壮大的!更重要的是,EDSim的每一个研发结果都会被参与或者使用EDSim研究的人所熟悉,这样不但提高了研发成果的利用率(重用率),也避免了未来的重复开发。

比如A研发出了Lua C++ WrapperB研发出了MySQL Wrapper,如果只针对某特殊项目或试验而作,那么在项目结束后,该模块(技术)就很可能束之高阁或者只有开发者AB本人在使用其功能,很难为其他人所用!

又比如一个网络游戏,如果我们能进一步将其虚拟机、界面、网络服务体系都独立出来,则即使一个网络游戏本身,也可以将其大部分构件作为EDSim的研究组件(Research ModulesRM)进行高效率的开发,因为这些部件在EDSim框架下是既独立又能够相互协作且无缝结合的!

4EDSim本身是一个可扩展的3D引擎(DirectX引擎),核心采用基本的C++STL类写成,可以在任何Win32平台上以窗口或者控制台方式运行,对于非图像应用(比如服务器、网络中间件),可以相当方便地移植到Linux平台上。

5、作为一套开发基础库,EDSim以尽可能使用现有通用类型为原则,降低了学习难度并减少熟悉时间的开销。EDSim中大量使用C++基础类型和STL模板类,图形部分使用Microsoft DirectX基本类型,一般不生造新类型(很多小组为了跨平台性,不得不创建很多封装类型,甚至包括封装C++简单类型,使人产生强烈的陌生感)。

6、支持测试驱动的开发,融合了CPPUNIT的测试机制,通过自动化测试保证软件质量。

posted @ 2006-04-17 22:54 小P 阅读(216) | 评论 (0)编辑

1.概述(Overview

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

1.1           技术积木(Tech Toy Bricks

像游戏这种特殊的虚拟交互模拟系统,已经涉及到计算机科学的方方面面,它要求将各种计算机软硬件技术充分融合在一起,在整体上一致发挥它们的功效。

EDSim(EDS)不是一套独立开发的引擎!他利用自身具有的强大集成特性[1],吸取各种独立技术的精华,对外表现为一个统一的、高效的平台体系。

所有你拥有或者敬仰的最好的技术模块,EDS都能将它们转化为架构支持的通用部件,甚至能够采纳它们作为自身的支持组件。在使用EDS开发产品的过程中,这些技术模块就像同一个品牌的积木一样被简单灵活的搭建。同时,在EDS架构的协调下,任何技术模块(积木)对其他积木而言都是能够高效访问并且相互协作的!

我们将不惜一切代价地寻找最优秀的技术模块,将它们集成到EDS之中,让这些技术的能力得到充分结合和一致体现!

posted @ 2006-04-17 22:52 小P 阅读(196) | 评论 (0)编辑
     2004年在MSRA的时候,我对始于2001年的CH调研活动作了一个总结,对那篇描写我初衷的文章CH Dream进行了修改,并写下一篇后记:


         我写这篇初稿的时候,没有那种传奇似的游戏。我对面有位开发人员,他每天从开始工作到结束下班,电脑屏幕的右面都会开着一个叫做ZMUD系统的窗口,当时我也不知道他们为什么会有如此大的瘾。
         我写这篇初稿的时候,《黑客帝国》这个电影还没有在中国大肆推进。我不得不承认我是个不时尚的人,我在2002年晚些时候才看到这部电影。当时的我相当振奋,这场面描述与我的梦想是多么得相似啊!而且它是在视觉听觉上真实地给我展示了这样一个场面,这是我难以想象的。

        在2003年,我修改了CH系统,使之更加开放化、模块化、规则化。可以参考我的文档《CHWS总体设计》。
       在2004年1月的样子,我和几位同学认为可以先在教育网上实现一个虚拟世界,利用教育网络的资源优势进行研究。我们所有的教育网上的同学,都可以通过脚本语言系统成为二次开发人员,你既是玩家,又是物质的创造者,更可以是剧本的编写者。看来,我们起码也要先实现一个虚拟通信楼,再到虚拟电子科大吧^_^。
       可惜的是,我现在在MSRA做毕业设计,我不能和同学们继续进行了,但我不会停止我的研究。
       传奇这类游戏仅仅依靠暴力主题就让大部分年轻人们难以自拔,甚至导致在政治法律上产生难题。如果这已足够让我们感受到这样类似系统的力量,那么,如果CH系统的梦想能够实现,我想借用在好莱坞影片《独立日》中,美国总统按下核弹启动按钮前的一句话来表达我的矛盾心理。那就是,"希望下一代不要怪我"。


                                                                                                     小P 2004年2月 于MSRA
 

posted @ 2006-04-17 22:20 小P 阅读(132) | 评论 (0)编辑
 
          这个岛叫做侠客岛,人们慕名来到这里,潜心专研各种武功。
          他们的武功匪夷所思,但他们忘记了从哪里来要到哪里去。
                                            --太玄经
 
    说到某些网络游戏的成功,好像技术只是一个很小的决定性因素。这里我想谈谈自己的看法,我指的技术是囊括了系统架构、操作模式、程序水平这样的整体概念,它的决定性应该是不能否认的。
    虽然商业运营模式有决定性的作用,但是目前成功的商业模式也只是走在前头占了空缺和甜头,现在都过去一两年了,同样模式运营的系统已经数不胜数。目前大家都采用成功的商业模式没错,但是现在大家一味跟风,游戏模式一成不变。首先可以肯定,这样下去是不会有新的成功商业运营模式被推出的,其次,由于不再有当初传奇的环境,行业潜在空间一下子成了小范围,各种竞争加剧,在这个水平线上力量强些的公司也最多依靠技术优势使自身暂时突出出来,比如新品种的NPC,更炫的图像、更美的音乐、更多的剧情。
表面看来,技术似乎是排在商业模式之后的。这是由于,如果总体层面(游戏本质架构、模式、技术层面)一定,技术就会大体定型,具体技术优势只能成为勉强的竞争手段,我们在这种情况下是看不到它(技术)的本质决定性的。
技术的本质决定性体现在它创新商业模式而不是它适应商业模式,只有在整个行业的发展上才能够看到这点。技术应该成为领头羊,我们一定要尝试新的架构和高级程序技术,不要妥协。如果自己只能开发新系统去适应新模式,就只能跟在别人很远的后头,没有多少便宜可拣。因为既然自己肯为这种模式去开发适应系统,那么这种模式一定已经是个非常成功的了,不然我去跟风干什么。但是,它的成功绝对是用它的初试者大量的商业盈利来衡量的,现在你再依靠这种模式,能赚多少只能看这个盈利空间还剩多少了。再往后看,盈利空间又是直接由配合该商业模式的游戏架构模式(技术)决定的。即便是游戏架构模式吸引力大,初始盈利空间很大,你跟运营模式的风跟得早,也只可能最后撑得起走不赔本,对外勉强说成功。
为什么要从一开始就将自己置于这么危险的境地呢!没有技术上的革新进而引发新的运营模式,哪来的商业新成就啊?现在,行业体制正在逐渐健全,目前的商业模式能不能适者生存下去都还很难说,不通过从游戏本质上寻找新模式,就更难挖掘出剩下的潜在空间。
 
    公司看重的是玩家群,会用同时在线人数来量化指标。说MMORPG玩家群仍在持续增长中,这是个事实,但增长的总体极限已经就要达到,不可能有什么盈利飞跃。在线人数这一指标是不能拿来勉强追求的。没有游戏架构和本质的变化,玩家群潜在范围就不能扩大,玩家就只有现在这个极限这么多。
    我早期喜欢单机版的《三国志》系列,《金庸群侠传》,《轩辕剑》等,我非常喜欢进入这样带着浓郁中国文化色彩的世界。是这样的游戏让我产生了在游戏世界中也能实现宏大历史融入各样文明的信念。对战的游戏我也玩了很久,红警,星际到后来3D的家园,花了我很多时间,协作的体验以及大场景多角色的表现力给了我许多深刻印象。
    后来我同时接触两种游戏,一种是CS这样的FPS,一种就是MMORPG(传奇、剑侠等),无法摆脱的两种不同感受而又不能让两者有机结合在一起一直让我苦恼不堪。结果是我除了花费时间外,没有为这两种游戏花过一分钱。也许我是那种极端的操作者,我追求的除了刺激似乎还有一种精神需求。
 
    相比而言,CS有很好的视觉效果,流畅速度,给人身临其境的直观感觉,刺激性高,后来的HalfLife2Doom3甚至选称具备电影般的图像。而角色扮演网游,单纯的练级模式本来没有任何(相对)吸引力可言,但正是这个模式而且目前仅仅是这个模式正在成为游戏的互动性、娱乐性的支配者,原因只有可能在于它的参与者。20046月的一期《新周刊》上谈到,现在的网络越来越让用户有更多的时间去与其他用户进行互动,这种互动是多层面的,包括聊天、交易、PK、城战、生产、合作等等。脱离了枯燥的升级,网络游戏才能越来越像一个社会,而不止是一个江湖。
    曾经大众软件的一篇文章在讨论游戏性时举了一个例子,《俄罗斯方块》和《最终幻想X》,一个是规则简单、画面简化到了极点、没有剧情的小品游戏,另一个是气势恢宏、世界观庞大复杂、剧情感人至深的超级大作。这两款游戏都能带给人很大的快乐,但前者靠的是简单的规则、带给人纯粹的游戏乐趣,后者靠的是优秀的画面、音乐、剧情等要素。正如文中所说,这样判断好玩与否更多的是靠人主观上的判断。
于是该文给出了一个量化评估指标,是美教授伊凡.康拉德给的两个公式。公式之一指出,就追求的游戏整体价值(这是游戏持久不衰的标准,任何游戏厂商都是在追求它)而言,游戏的可玩性(即纯粹的游戏乐趣)越高,代表画面、音乐、剧情的附加价值就越不重要。如果一个游戏的可玩性大,则它的整体价值将会显著地以参与人数(即我们熟知的平均在线人数)呈指数性增加。而在可玩性上有个权重值,这就是平均游戏时间T。网络游戏特别是MMORPG,正是由于它可以具有较大的可玩性和参与人数以及游戏时间,其整体价值可以相当高。
但我们也要看到,现在的情况是,潜在参与人数基本到了上限,至少会很快地达到(这个我下面谈),并且被分摊(因为不再是传奇发行时候的那个运营环境了),游戏时间由于竞争原因当然还在不断减少,而国内新发行的MMORPG仍然在老架构上不思质变,最多是在附加价值上卖力气,即采取我前面谈到的在技术定型后的勉强竞争手段——怪物、画面、音乐、剧情。现在的MMORPG由于其架构甚至连剧情和音效都是不能怎么提升的,剧情且不说,每次我打数个小时MMORPG都听不到一句人话,很不爽。而在即时战略或者FPS中一听到“gogogoyour force is under attackhelp help”这些,我就觉得比较来劲。
    康拉德的另外一个公式则指出了人们尝试一个游戏(尝试性,即相对价值)的决定因素及其相互关系。单元有效经验E(即从游戏中得到任何对现实生活有益的东西)和直接快感H起促进作用,而玩家损耗的价值C(包括单元的和复元的)和平均游戏时间T则会起抵制因素。在获得同样多EH的情况下,玩一款游戏需要花费金钱和时间越多,这款游戏的相对价值就会越小。所以像传奇这样的游戏,说它的机遇好是万万没有错的。即便由第一个公式可以指出它整体价值较高(所以它赚了),但由于其E比较低,而且快速地由CT来衰减,所以它的相对价值很小,即它只能在那个机遇的短暂时间内赚一把。特别是,如果相对价值一旦被CT衰减到小于零,则人们反而会对其采取抵制态度,目前政府、家长甚至不少玩家对待传奇式网游的矛盾心态即是这样的必然结果。
    所以,如果现在的新游戏还要完全模仿这个模式,必将难以维系!
 
    下面接着来说我。抽象性玩MMORPG这样的极端不仅仅只出现在我身上,我想说的是它会出现在大多数成年人身上。我曾经采用一个自我衡量指标,即我拼命玩一个MMORPG,充分体验它能让我体验的一切,尽可能挖掘它的EH,直到它收钱,这时候看它能不能驱使我掏腰包。要知道,我不仅仅会数个通宵数个通宵地体验(好惨啊!),而且角色级别也比较高哦,应该有理由难以自拔。然而没有一款游戏把我吃下了。你会悄悄说:只能说明你不喜欢玩游戏嘛,但我喜欢得都在做游戏了。
    作为娱乐,玩网游是为消磨时间,据统计显示(1149人职业调查),网络游戏主要用户为男性,主要职业是学生,每次玩4个小时以上的占人数56.81%。单纯的练级模式造成了游戏玩家群体的单一:最有闲的人是学生。正因为此,学生最有时间去练级,构成了中国网游玩家的主体。但最有钱的却是成年人(我虽然还不是,但我旁边的都是^-^),网络游戏要发展,必须有人买单,而成年人玩游戏重在娱乐,特别是精神上的。网游产业的利益权衡在网络游戏高速公路上将是重要命题。我下了班(现在是学生放了学),吃完晚饭剩下的空闲时间差不多也就是4个小时,这段时间,选择网游来成为主要的消遣方式将会是相当讲究的。一个网游其粘着力强到能让大部分成年人基本上晚上的20:0024:00全在其中度过,其整体价值必然客观,而其在康拉德公式中的条件则必须是相当高的。
    网络游戏的互动性与娱乐性必须要也正在使得游戏玩家由学生青少年向成年人的生活渗透。网游必须超越娱乐方式成为一种生活方式,并且以虚拟干涉现实、现实指导虚拟的形式搭建出和现实社会平行的虚幻社会。我在前面承诺过,如果它在第一人称有CS的流畅度和感观;第三人称有HomeWorld的表现力度,宏大和震撼,就像我们亲自在扮演《太空堡垒》;整个客户端方面有众多的参与者;再加上无止境的文化和演化;再加上可能的商业化;最后由于我的人性,我想我是难以自拔的!看到3D场景和人物图像的预告,目前我比较关注天堂二,但是我也知道欧美的技术早已远远领先。虽然我不会为现在的游戏花一分钱,但是我也许会为将来的游戏付出我的一切,这是让家人担心的。
 
    我以一个虚拟的能够消费者或者主要消费者的身份谈了这么多,是为了阐明MMORPG玩家群的当前极限,以及需要挖掘的潜在群落,及其对一个MMORPG是否在未来成功的标志性意义。其实我的真实身份仅仅是个研究僧,主要研究游戏的质变问题,开个玩笑,呵呵。
 
    在游戏系统质变问题上,若干分布式分解子系统的综合体,这是个必然趋势。子系统分为软件或模块子系统和游戏硬件设备子系统两个概念,软件模块子系统可以在现有平台体系上进行研发,它的出现不会是很久之后的事情。而对于硬件子系统(比如接入设备、游戏控制杆、虚拟实景设备、管理设备等等),提出针对于目前网游这样系统的游戏硬件是不切实际的,但在分布式子系统综合体系发展成熟后,这也是个必然趋势,未来是否就是黑客帝国也未可知。这个体系不再是单一公司的产品体系,将成为行业体系,封闭不封闭则要看当时的社会行业结构。产品开发商生产硬件设备和平台软件应用系统(比如我提到的二次开发系统),而运营商则主要是负责运行时软硬件系统的管理和维护。
 
        ……
 

大海

    两千多年前的哲学家庄子,给我们讲过一个寓言:黄河之神河伯,在秋天涨大水的时候,发现自己很伟大,居然两岸之间分辨不清牛马。他尽情往下游漂去,突然看见了大海,竟茫然若失。海的主宰北海若告诉他,不能和井蛙谈论大海。因为他只知道自己那点小小的地盘,无法想象大海的博大。而现在,我的河伯,你终于走出壅塞的河道,看见了大海的恢宏。你知道了局限,也就进入了一个更高的境界。
    这是一个象征。它说的并不是古代中国,它好像是在预言今天。
 
                                               P  20012 于成都
                                               Last modified at 2004-8-31
posted @ 2006-04-17 22:17 小P 阅读(131) | 评论 (0)编辑

         
芒鞋斗笠千年走,万古长空一朝游。
          这是个何等的世界啊!
 
    当一个系统不再是单纯意义上的游戏的时候,它会是什么样的呢?
    首先它的确拥有一个游戏的通常操作手法,构造了一个虚拟的非常接近真实的庞大世界,许多人和NPC非人?)在其中生活着。事实上,这个游戏在上面的陈述中已经变成了一个不断发展甚至是无法全面理解的世界,另外,请记住,它正在表达我们拥有的文化!所以叫它R