游戏引擎_引擎小游戏 - CSDN
游戏引擎 订阅
游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、Mac OS X、微软Windows。游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。 [1] 展开全文
游戏引擎是指一些已编写好的可编辑电脑游戏系统或者一些交互式实时图像应用程序的核心组件。这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计者能容易和快速地做出游戏程式而不用由零开始。大部分都支持多种操作平台,如Linux、Mac OS X、微软Windows。游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。 [1]
信息
属    性
程序或者组件
外文名
Game Engine
用    途
游戏
中文名
游戏引擎
游戏引擎功能
可见,引擎并不是什么玄乎的东西,无论是2D游戏还是 3D游戏,无论是角色扮演游戏、即时策略游戏、冒险解谜游戏或是动作射击游戏,哪怕是一个只有1兆的小游戏,都有这样一段起控制作用的代码。经过不断的进化,如今的游戏引擎已经发展为一套由多个子系统共同构成的复杂系统,从建模、动画到光影、粒子特效,从物理系统、碰撞检测到文件管理、网络特性,还有专业的编辑工具和插件,几乎涵盖了开发过程中的所有重要环节,以下就对引擎的一些关键部件作一个简单的介绍。首先是光影效果,即场景中的光源对处于其中的人和物的影响方式。游戏的光影效果完全是由引擎控制的,折射、反射等基本的光学原理以及动态光源、彩色光源等高级效果都是通过引擎的不同编程技术实现的。其次是动画,游戏所采用的动画系统可以分为两种:一是骨骼动画系统,一是模型动画系统,前者用内置的骨骼带动物体产生运动,比较常见,后者则是在模型的基础上直接进行变形。引擎把这两种动画系统预先植入游戏,方便动画师为角色设计丰富的动作造型。引擎的另一重要功能是提供物理系统,这可以使物体的运动遵循固定的规律,例如,当角色跳起的时候,系统内定的重力值将决定他能跳多高,以及他下落的速度有多快,子弹的飞行轨迹、车辆的颠簸方式也都是由物理系统决定的。碰撞探测是物理系统的核心部分,它可以探测游戏中各物体的物理边缘。当两个3D物体撞在一起的时候,这种技术可以防止它们相互穿过,这就确保了当你撞在墙上的时候,不会穿墙而过,也不会把墙撞倒,因为碰撞探测会根据你和墙之间的特性确定两者的位置和相互的作用关系。渲染是引擎最重要的功能之一,当3D模型制作完毕之后,美工会按照不同的面把材质贴图赋予模型,这相当于为骨骼蒙上皮肤,最后再通过渲染引擎把模型、动画、光影、特效等所有效果实时计算出来并展示在屏幕上。渲染引擎在引擎的所有部件当中是最复杂的,它的强大与否直接决定着最终的输出质量。引擎还有一个重要的职责就是负责玩家与电脑之间的沟通,处理来自键盘、鼠标、摇杆和其它外设的信号。如果游戏支持联网特性的话,网络代码也会被集成在引擎中,用于管理客户端与服务器之间的通信。通过上面这些枯燥的介绍我们至少可以了解到一点:引擎相当于游戏的框架,框架搭好后,关卡设计师、建模师、动画师只要往里填充内容就可以了。因此,在3D游戏的开发过程中,引擎的制作往往会占用非常多的时间,《马克思·佩恩》的MAX-FX引擎从最初的雏形Final Reality到最终的成品共花了四年多时间,LithTech引擎的开发共花了整整五年时间,耗资700万美元,Monolith公司(LithTech引擎的开发者)的老板詹森·霍尔甚至不无懊悔地说:“如果当初意识到制作自己的引擎要付出这么大的代价的话,我们根本就不可能去做这种傻事。没有人会预料得到五年后的市场究竟是怎样的。”正是出于节约成本、缩短周期和降低风险这三方面的考虑,越来越多的开发者倾向于使用第三方的现成引擎制作自己的游戏,一个庞大的引擎授权市场已经形成。其中最大的收益者是各大网络游戏公司,通过第三方引擎开发的网络游戏获益巨大。但随着市场急剧变化,用第三方引擎开发网络游戏的成本也越来越高。于是游戏引擎开发商们开始绞尽脑汁设计一种可以大量节约开发成本和周期的引擎。直到2010年zerodin引擎开发的巨作Dragona出品引起了各大游戏业巨头关注,因为此时方才发现了巨作也可以用这么少的成本,这么短的时间开发而成。
收起全文
  • 游戏引擎-场景编辑器

    2018-10-22 21:38:08
    1.采用Qt作为界面库,通过该项目可以学习到Qt跨平台界面库的使用. 2.实现跨界面的拖拽功能.3. 3.实现属性表(绚酷控件)控件,完全可以在其他的项目中进行复用. 4.实现场景管理,采用节点方式实现高效的场景管理. ...
  • 本课程主要是讲解3D游戏引擎架构,以及如何去封装3D游戏引擎,充分利用固定流水线逐一实现从游戏开发核心底层到游戏逻辑的编写,引领你一步步编写3D引擎。以及如何在封装好游戏引擎的基础上进行游戏逻辑开发。
  • 介绍移动设备,介绍一款游戏引擎具备的要素,并依次进行开发实现,采用标准C++语言进行开发,需要有扎实的C++基础
  • C++游戏引擎开发

    2009-02-06 10:22:00
    游戏引擎开发用C++实现跨平台游戏引擎开发 你是否梦想写一部格斗游戏但却无从着手呢?是否你只因游戏开发好玩而对之感兴趣?本文我们将分析一个通用的跨平台游戏引擎,每个游戏开发新手都可以自由地使用它。 1. 3D...

    游戏引擎开发

    用C++实现跨平台游戏引擎开发

      你是否梦想写一部格斗游戏但却无从着手呢?是否你只因游戏开发好玩而对之感兴趣?本文我们将分析一个通用的跨平台游戏引擎,每个游戏开发新手都可以自由地使用它。

      1. 3D游戏引擎的简短历史

      在游戏开发中,从一开始就确定正确的开发平台是很重要的。是否你的游戏支持Windows,Linux和OS X?是否你的游戏开发只使用OpenGL就足够了?OpenGL是十九世纪九十年代初期设计的,起初只运行于价值约$25,000的Unix CAD工作站上,后来移植到Windows和其它一些低端平台上。与此同时,随着游戏工业的发展,图形加速器价格从$2,000剧跌到你今天看到的价值约$150的大众市场价格。

      确实,许多人都会援引在1996年用OpenGL开发成功的革命性的游戏Quake,作为以上急速发展现象的直接的原因。然而,成功的Quake级的游戏开发标准要求更多:世界级音频支持,网络连接,用户输入设备支持,以及实时的管理能力等。既需要实现跨平台支持又能使游戏效果激动人心,要实现这样的解决方案最好建立一个体面的游戏开发站台。

      2. 用于C++,Java和其它开发语言的简单DirectMedia层

      对,历史就是这样有趣,但并不是每一部游戏都要做成Quake的克隆品。一直被业界许多人吹捧有着许多优点的选择是简单DirectMedia层(SDML)。这是一套跨平台的多媒体库,它提供对于音频,键盘,鼠标,游戏杆,OpenGL和2D视频帧缓冲的低级存取。SDML支持几乎我能想像出的每一个平台,包括Linux,Windows,所有的MacOS变异物,WinCE,Dreamcast还有另外一些操作系统。它被广泛应用于开发MPEG播放器,硬件仿真器,和许多流行的游戏,包括获奖的运行于Linux平台的Civilization:Call to Power。

      SDML用C写成,但生来就与C++一起工作,已经绑定到了另外许多语言,包括Ada,Eiffel,Java,Lua,ML,Perl,PHP,Pike,Python和Ruby。SDML的应用环境简直就没有什么限制,而且它碰巧是我最喜爱的开源飞行模拟器GL-117(见图1)的开发引擎。事实上,513游戏的当前开发已经基于SDML引擎而且被注册到了SDML的主页。


    图1.GL-117中的一个视图


      3. 通道视觉效果演示程序

      研究游戏引擎的最好方法是看一些示例程序代码。简单地看一下图2中用SDML实现的2D通道类型演示图,你就能发现你仅用几行代码所能完成的工作。你可以使用该实例作为一个保护屏程序,音乐可视化动画效果,等等。篇幅所限,我已经整理了实际的绘制代码。请跟随我的注释分析下面对SDML的工作原理的描述:

    #include "Tunnel.h"
    // SDL 相关变量定义
    SDL_Surface *screen,*bBuffer,*Image;
    SDL_Rect rScreen,rBuffer;
    int main (int argc, char **argv)
    {
     int flag = SDL_SWSURFACE;// 请求一个软件表面.
     //软件表面处于系统内存中,
     // 一般不如硬件表面速度快
     #ifdef WIN32
     int fullscreen = MessageBox(NULL, "Show Full Screen (y/n):","Screen Setting", MB_YESNO);
     if (fullscreen==IDYES) {
      flag |= SDL_FULLSCREEN; // 如果用户需要,接管整个屏幕
     }
     #endif
     Tunnel_Timer(); // 读取起始的系统时钟值
     SDL_Init( SDL_INIT_VIDEO ); // 初始化视频子系统
     //把屏幕设置到 320x240,32位颜色
     screen = SDL_SetVideoMode( 320, 240, 32, flag);
     // 如果可用的话,为屏幕表面请求硬件缓冲
     bBuffer = SDL_CreateRGBSurface( SDL_HWSURFACE, screen->w,screen->h,screen->format->BitsPerPixel,
        screen->format->Rmask,
        screen->format->Gmask,
        screen->format->Bmask,
        screen->format->Amask);
     // 这是种子图像,一旦开始它就会盘旋起来
     Image = SDL_LoadBMP( "tunnel_map.bmp" );
     Image = SDL_ConvertSurface(Image, screen->format, SDL_HWSURFACE);
     rBuffer.x = 0;
     rBuffer.y = 0;
     rBuffer.w = bBuffer->w;
     rBuffer.h = bBuffer->h;
     // 忽视大多数事件, 包括 鼠标动作, 并取消光标
     SDL_EventState(SDL_ACTIVEEVENT, SDL_IGNORE);
     SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
     SDL_ShowCursor( SDL_DISABLE );
     Tunnel.Set( 320, 240 ); // 通道将填充整个的缓冲区
     Tunnel.Precalc( 16 ); //内部的圆圈直径
     while (SDL_PollEvent(NULL)==0) {
      float fTime = Tunnel_GetTime();
      //在修改前,必须锁定表面,特别当缓冲区处于图形硬件内存中时
      SDL_LockSurface(bBuffer);
      SDL_LockSurface(Image);
      Tunnel.Draw(bBuffer, Image, 180*sin(fTime), fTime*100);
      SDL_UnlockSurface(bBuffer); // 在更新以后你可以开锁
      SDL_UnlockSurface(Image);
      // 把缓冲区中的数据输出到屏幕绘图区域并强迫进行重画
      SDL_BlitSurface( bBuffer, NULL, screen, &rBuffer );
      SDL_UpdateRect( screen, 0, 0, 0, 0 );
     }
     Tunnel.Free();
    }

     


    图 2. 演示旋转和扭曲的2D通道


      4. 对另外一些游戏引擎的探索

      让我们看一下另外一些开源的游戏引擎。

      a) ALLEGRO(Allegro低级游戏开发例程)

      Allegro是一个开源的可移植的库,主要针对视频游戏和多媒体编程。Allegro由Shawn Hargreaves(近来称为Climax)创建,现在成长为一个能够跨越许多操作系统如Linux,Windows,MacOS,MS-DOS和许多另外的流行平台等的游戏系统。

      除了具有一个高级的2D图形库,它能容易地存取鼠标,键盘,游戏杆和高精度定时器中断。Allegro并没有包装或替换OpenGL,但是通过参观他们广阔的开发站点(http://www.allegro.cc/),你能学习怎样把OpenGL集成到Allegro游戏程序中。

      大约有700种不同的游戏工程,与Allegro一起发行,其中最为杰出的两类是街机游戏和谜题游戏。我特别地喜欢经典的街机游戏Zaxxon(见图3)的重制品。


    图3.酷毙的Zaxxon的重制品


      b) Irrlicht:点燃快速实时的3D引擎

      这个Irrlicht 引擎是一个跨平台,高性能实时引擎,用C++写成。你可以选择Direct3D,OpenGL或基于软件的着色技术。高端特点包括动态阴影,粒子系统,人物动画,进门和出门技术和碰撞检测(见图4)。Irrlicht支持Windows和Linux并提供到语言Java,Perl,Ruby等的绑定。业界先驱Nikolaus Gebhardt在他的朋友的少部分帮助下完成的这个引擎工。


    图4.在Irrlicht中的一个十分逼真的场景


      c) ClanLib:为多玩家游戏设计的引擎

      ClanLib提供了一个平台独立的接口来书写游戏-它们有一个共同的到低级库如DirectX和OpenGL的接口。借助于ClanLib,你只需编写少量代码即可在Windows,Linux和OSX系统上开发游戏程序。ClanLib包括一个广泛的声音库,2D碰撞检测,动画,GUI框架和网络库。图5显示了游戏XenoHammer中的一个场景。


    图5.XenoHammer屏幕快照
    用C++实现跨平台游戏开发之Allegro引擎

    要:本文重点讨论开源游戏开发库Allegro(Allegro低级游戏例程),同时涉及到一些深度技术并提供了一个简单的示例程序,帮你进一步确定它是否是适合你的开发平台。

      一、 一个适于多环境的引擎

      Allegro最开始被研发于八十年代后期古老的Atari ST平台上,随后被快速地移植到流行的DJGPP环境(一个在九十年代早期流行的32位的MS-DOS扩展程序)。此后,Allegro被移植到最为流行的Windows C++开发环境中,包括VS,MinGW,Cygwin和Borland C++。另外的支持它的平台包括Linux,BeOS,QNX,Mac OSX以及几乎任何其它带有X11库的Unix平台上。

      Allegro能着色到各种类型的位图和硬件加速的环境中,例如DirectX,XWindows,SVGAlib,FreeBE/AF,CGDirectDisplay,QuickDraw,等等。Allegro并不想提供它自己的3D环境或模拟器,但是OpenGL可以被容易地集成,这是通过使用AllegroGL库-它提供了一个类似于GLUT的接口(包括扩展管理)-实现的。

      二、 性能概要

      在进一步使用API开发前,让我们看一下Allegro提供的总体功能:

      ·具体到像素级的绘图函数,包括平坦阴影,gouraud阴影,纹理贴图,z缓冲的多边形和圆绘制,填充,贝塞尔样条曲线,图案填充,精灵,blitting(位图复制),位图计算缩放和旋转,半透明/光效果以及比例字体支持的文本输出

      ·FLI/FLC(在计算机生成的动画方面,这种格式比MPEG有更高的压缩性能)动画播放器

      ·播放后台MIDI音乐,可达64种同时的声音效果,并能录制样本波形和MIDI输入(声音平台支持,包括WaveOut,DirectSound,OSS,ESD,CoreAudio和QuickTime,等等)

      ·容易地存取鼠标,键盘,游戏杆等设备,还支持高分辨率定时器中断,包括一个DOS版本的垂直折回中断模拟器

      ·读/写LZSS压缩文件的例程

      ·数学函数,包括定点算术,表查找和3D矢量/矩阵/四元数操作

      ·GUI对话框管理器和文件选择器

      ·内建地支持16位和UTF-8格式的Unicode字符

      三、 使用引擎

      使用Allegro进行开发,就象在许多其它游戏场合下一样,游戏的总体结构都包括游戏开始前的初始化,游戏循环以及游戏完成后的清理。初始化意味着既包含Allegro启动代码也包含在开始的位置实现基本地装载或生成你的游戏级别。在创建你的初始化代码时,启动Allegro基本上没有什么代价付出(见图1).

      如果你需要很多屏幕相关的真实性能,建议你首先礼貌地用get_gfx_mode_list()函数查询一下最大可用方式:

    #include <allegro.h> //必须放于系统头文件的引用之后
    set_color_depth(32); // 缺省情况下使用8位颜色
    if (set_gfx_mode(GFX_AUTODETECT, 640, 480, 0, 0) != 0) {
     abort_on_error("Couldn’t set a 32 bit color resolution");
    }


      set_gfx_mode()的最后两个参数用于指定虚拟缓冲区的大小-我们的图形屏幕存储于其中。这可以使创建一个卷边游戏-其中地形是连续移动的-变得容易。例如,你可能要使虚拟缓冲区,比方说,宽出20%以留出足够的空间来平滑卷动新的精灵和地形。

     四、 一个完整的Allegro实例

      本教程将使用Kee-Yip Chan的SnookerClone演示程序,它是基于James Lohr的另一个具有相同名字的演示程序。图1显示了演示程序的基本屏幕快照。


    图1.Kee-Yip Chan的"SnookerClone"演示程序

      这个工程向你展示了许多不同的Allegro技术,包括动画,键盘输入和鼠标输入,碰撞和游戏物理知识(例如重力)。它利用了三个主要的元素:一个有8个扶手的旋转的车轮,一个用箭头键来控制的大红球,还有一些从顶部往下坠落的蓝球。车轮以接触方式推动红球,而当红球碰上蓝球时,它们之间相互影响。

      下列是完整的Allegro演示程序的代码:

    1 #include <allegro.h>
    2 vector<Point> g_points; //aka球上点的列表
    3 vector<Joint> g_joints; //物理对象列表,如车轮和缓冲器
    4 kVec g_accControl;
    6 int main(void)
    7 {
    8  allegro_init(); // 初始化allegro.
    9  install_keyboard(); // 启动键盘.
    10 install_mouse(); // 启动鼠标.
    11 install_timer(); //过程show_mouse()所需要;
    13 // 创建一个800x600的非全屏窗口.
    14 set_gfx_mode(GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0);
    16 set_window_title("Kee-Yip Chan’s Snooker Clone");
    17 text_mode(-1); // 文本将被画在透明的背景之上
    19 BITMAP* buffer = create_bitmap(SCREEN_W, SCREEN_H);
      //创建一张位图用于双缓冲.
    21  // 初始化数据.
    22 create_joints(g_joints); //注册车轮、地板和缓冲器的硬编码的屏幕位置
    25 // 创建顶点以组成aka球: 玩家所用球和三个蓝球
    26 // 的位置, 速度, 大小和质量.
    27 g_points.push_back(Point(kVec(100, 300),kVec(0, 0),16, 10));
    // 玩家.
    28 g_points.push_back(Point(kVec(50, 40), kVec(0, 0),12, 5));
    // 中等的球.
    29 g_points.push_back(Point(kVec(80, 40), kVec(0, 0) 12, 5));
    //中等的球.
    30 g_points.push_back(Point(kVec(110, 40),kVec(0, 0),6, 1));
    // 小球.
    32 //主循环,在按ESC键后退出
    33 while(!key[KEY_ESC]) { //检查输入.
    34  if(key[KEY_UP])
    35   g_accControl.y = -0.07; //Jet pack.向上加速
    36  if(key[KEY_LEFT])
    37   g_accControl.x = -0.07; //左走.向左加速
    38  if(key[KEY_RIGHT])
    39   g_accControl.x = 0.07; //右走.向右加速
    41   static bool leftMousePressed = false,
        rightMousePressed = false;
    42  if(mouse_b & 1) { //鼠标左键按下
    43   if(!leftMousePressed){
    44    leftMousePressed = true; // 创建一个新球.
    45    g_points.push_back(Point(kVec(mouse_x, mouse_y),kVec(0, 0), 12, 5));
    46   }
    47  }
    48  if(!(mouse_b & 1))
    49  //保证不重复鼠标按键
    50  //否则,就会出现许多的新球
    51  leftMousePressed = false;
    52  if(mouse_b & 2) { //鼠标右键按下
    53   if(!rightMousePressed){
    54    rightMousePressed = true; // 创建一个新球
    55    g_points.push_back(Point(kVec(mouse_x, mouse_y),kVec(0, 0), 6, 1));
    56   }
    57  }
    58  if(!(mouse_b & 2))
    59   //保证不重复鼠标按键
    60   //否则,就会出现许多的新球.
    61   rightMousePressed = false;
    63   doPhysics();
    65   // 着色:如果我们能再次使用缓冲区,则清除它;
        //否则,旧图像将滞留显示
    66   //用白色进行清除.
    67   clear_to_color(buffer, makecol(255, 255, 255));
    68   for(unsigned i = 0; i < g_points.size(); i++) {
         //画点.
    69    //画一个实心球
    70    circlefill(buffer, //画向缓冲区
    71    g_points[i].position.x,g_points[i].position.y,// aka 球的中心点的位置
    72    g_points[i].size, // 半径.
    73    (i == 0) ? makecol(255, 0, 0) : makecol(0, 0, 255)); //红色如果是玩家;否则为蓝色
    75    // 画一个轮廓球.
    76    circle(buffer, //画向缓冲区
    77     g_points[i].position.x,g_points[i].position.y, // aka 球的中心点的位置.
    78     g_points[i].size, // 半径.
    79     makecol(0, 0, 0)); //红色如果是玩家;否则为蓝色.
    81   }
    83   // 画接合点
    84   for (unsigned i = 0; i < g_joints.size(); i++)
    85    line(buffer, //画向缓冲区
    86     g_joints[i].p1.x, g_joints[i].p1.y, // 点 1.
    87     g_joints[i].p2.x, g_joints[i].p2.y, // 点 2.
    88     makecol(0, 0, 0)); // 黑颜色.
    89    );
    91   // 打印指令.
    92   textout(buffer, font, "Left Mouse Button - new big ball Right Mouse Button - new small ball",
    93     125, 1, makecol(0, 0, 0));
    95   textout(buffer, font, "Arrow Keys - move red ball",
    96     300, 592, makecol(0, 0, 0));
    98   show_mouse(buffer); // 画鼠标光标.
    100   draw_sprite(screen, buffer, 0, 0);// 把缓冲区中的数据画向屏幕.
    101  } // while循环结束
    103  return 0;
    105 }END_OF_MAIN();

      33-101行包括了典型的游戏编程循环模式。游戏继续进行直到玩家按下ESC键退出为止。34-39行支持同时进行的键盘输入,因为你可以按下向上和向左箭头键来获取粗略的斜向运动。

      在41-61行,鼠标动作被捕获到全局变量mouse_b(用于按钮),mouse_x和mouse_y。如果你一直在使用一滚轮鼠标,你还可以使用变量mouse_z。我们对反向弹跳逻辑进行了一点硬编码以确保每次鼠标按下事件只有一个球下落。

      第63行调用doPhysics(),其目的是旋转车轮的线段,更新球位置,检测球碰撞和适当地改变它们的方向矢量。这个模块(350行的数学代码)有点深入了些,但它确实是一个一流的实现,值得你深入研究。

      余下的代码,65-101行,开始着色,在典型的示例程序中这属于常规实现部分。这里的着色用典型的双缓冲区技术,下一次屏幕变化被计算出来并进行脱屏绘制并在最的一毫秒进行缓冲交换(第100行)。这确保了视觉的连续性又减少了烦人的闪烁-对象看上去是随机地绘制的。在着色代码部分,对line()和circlefill()的调用是相当直接的:circlefill()以x,y,半径和填充颜色作为参数。

      textout_ex()函数的功能稍强于textout()(示于92-96行),允许你指定前景和背景颜色。Allegro提供例程以直接从GRX格式.fnt文件,8x8或8x16 BIOS格式.fnt文件,位图图象以及数据文件格式中装入字体。作为选择,你能导入一种大范围的Unicode字体,这可以通过写一个.txt脚本-它为每一范围的字符指定相应的不同的源文件-来实现。如果你想要支持TrueType,那么你需要AllegroTTF或相同功能的插件。
    最后,在第100行的draw_sprite()实现一个覆盖性复制新生成的位图到第14行创建的屏幕对象上。覆盖性复制意指只有非透明的颜色像素被复制。在本例中,我确信它已被退化成一个"blit"(块复制)转储。

      五、 Allegro的音频

      这个snooker演示程序只涉及到了一些最基本的图形和I/O函数,但是并没有用到Allegro的音频开发包。该包中的MIDI混频,音响效果和录音API,其效果达到或超过几乎每一个我所见过的专业的声音库。Allegro音频应用软件大量存在,包括WinCab-一个MP3和OGG Vorbis音乐唱片机,还有LouTronic Rhythm Box-一个鼓声生成合成器,它具有可全面融合到一起的snare鼓,低音鼓和hi hat的效果。下面我们简单地回顾Allegro音频API的一小部分。

      每一个使用音频的程序都应该调用reserve_voices()来指定数字和MIDI声音驱动程序分别使用的声音的数目。接下去,你能控制这些音频轨道的混合.

      你可以非常容易地象下面这样插入一个音轨:

    MIDI *midFile = load_midi("myfile.mid’);
    play_midi(midFile, TRUE);//连续循环

      对于更复杂的需要,你可以安装三个钩子函数之一,它们可以使你拦截MIDI玩家事件。如果被设置为非NULL,这些例程将在每次MIDI消息,元事件和系统独占的数据块中被分别调用。

      Allegro的数字音频系统被设计为从最基本的配置到可高度扩展的。你能容易安装读取器和写入器来处理新的或者不同的音频文件类型, 例如:

    register_sample_file_type("mp3",load_mp3,NULL);//安装MP3读取器

      当正播放数字音频时,你可以随时编辑它。下列代码改变将在播放一个样本参数时改变该样本(用于操作循环播放的声音):

    void adjust_sample(const SAMPLE *spl, int vol, int pan, int freq, int loop);

      你能改变音量,平移音频数据并清除循环标志,在下次执行到循环末尾时,这将停止该样本。如果在播放相同样本的好几个副本,这会调整它遇到的第一个副本。如果该样本没有播放,对它没有任何影响。

     

    用C++实现跨平台游戏开发之Irrlicht引擎

      Irrlicht引擎是一个用C++书写的高性能实时的3D引擎,可以应用于C++程序或者.NET语言中。通过使用Direct3D(Windows平台),OpenGL 1.2或它自己的软件着色程序,可以实现该引擎的完全跨平台。尽管是开源的,该Irrlicht库提供了可以在商业级的3D引擎上具有的艺术特性,例如动态的阴影,粒子系统,角色动画,室内和室外技术以及碰撞检测等(见图1)。


    图1.Irrlicht 3D引擎

      Irrlicht是一个德国神话故事中的一种动物的名字,它能够发光和飞翔,可以在大部分的沼泽地附近发现它。单词"Irrlicht"是两个德国单词("irr"意思是疯狂的;而"Licht"意思是光)的组合。在英语中,它被译为"鬼火"。

      Irrlicht十分幸运地为一个巨大的活跃的开发团队以大量的工程所支持。然而,因为Irrlicht主要由游戏名家Nikolaus Gebhardt所设计,所以该游戏在设计上十分连贯。你可以在网上到处发现有Irrlicht的增强程序,如可选用的地形生成器,入口生成器,输出器,world层生成器,相关教程和编辑器等。而且,它独立地创建了到Java,Perl,Ruby,BASIC,Python,LUA甚至更多种语言的绑定。而最为重要的是,它是完全自由的。

      二、 Irrlicht特性

      在深入分析API之前,请让我更具体地介绍一下Irrlicht提供给了3D游戏开发者哪些功能:

      ·一个可以运行于Linux以及Windows 98,ME,NT,2000和XP(MacOS在计划之中)等操作系统之上的引擎

      ·针对Direct3D 8生成器或Direct3D 9生成器(可选)提供了Anti-aliasing支持

      ·可换肤的GUI环境(包括一个很酷的具有金属质地的带阴影的皮肤),给一些老式的对话框加上漂亮的外观

      ·场景管理系统,它允许无缝的室内/室外过渡

      ·角色动画系统,带有骨骼和变形目标动画功能

      ·一个特殊的效果系统,包括粒子效果(雨,烟,火,雪,等等),告示板,灯光贴图,环境,地图,模板缓冲区阴影,雾,纹理动画,视差贴图,凹凸贴图,还有更多

      ·内建的材质支持,包括支持Pixel and Vertex Shaders版本1.1到3.0,ARB Fragment and Vertex程序以及HLSL(GLSL正在计划中)

      ·.NET语言绑定,这使得引擎可用于所有的.NET语言例如C#,Visual Basic.NET以及Delphi.NET

      ·一内建的平台独立的软件生成器,特性有:z-缓冲,Gouraud阴影,alpha混合和透明性,还有快速的2D绘图(见图2)

      ·你久已期待的2D绘图功能,例如alpha混合,基于关键色的位图复制,字体绘制,以及混合3D与2D图形

      ·能直接导入常见的建模文件格式:Maya,3DStudio Max,COLLADA,DeleD,Milkshape,Quake 3 levels,Quake2 models,DirectX,Pulsar,My3DTools,FSRad以及Cartography Shop

      ·能直接从BMP,PNG,Photoshop,JPEG,Targa和PCX导入纹理

      ·快速而易用的碰撞检测与响应

      ·为快速的3D运算和容器模板库进行了优化处理

      ·直接读取档案(可能是压缩的,如.zip文件)

      ·集成了快速的XML分析器

      ·为实现容易的本地化开发提供Unicode支持


    图2:基于Irrlicht的游戏Yet Another Space Shooter(YASS),这里显示的是一个静态游戏帧中的令人吃惊的着色效果
      三、 在Irrlicht中的特殊效果

      在本文的例子中,我将向你展示怎样使用模板缓冲区影子技术,还有粒子系统,告示板,动态光以及水表面场景结点等技术。参见图3。


    图3.结合动态的光和水进行的场景着色

      Irrlicht引擎自动地检查是否你的硬件支持模板缓冲;而如果不支持,则不启动阴影。在这个演示程序中,在方法createDevice()中的’shadows’标志被置位,以产生从一个动画角色投下的动态影子。如果这个实例程序在你的PC上运行太慢,可以把这个标志设置为false或者干脆再买一块更好些的图形加速卡。

      为能够使用Irrlicht.DLL文件,你需要链接到Irrlicht.lib库文件。你可以在工程设置对话框中设置这个选项;但是为了容易实现,你可以使用一个pragma预编译注释命令。方法createDevice()负责实例化根对象-它使用引擎完成一切事情。参数如下:

      ·deviceType:设备类型。当前你可选取Null设备以及软设备,如DirectX8,DirectX9或OpenGL。

      ·windowSize:要创建的窗口的大小或全屏幕模式。这个例子中使用512x384。

      ·bits:每像素位数(当在全屏幕情况时)。仅允许值为16或者32。

      ·fullscreen:指定是否你想使设备运行于全屏幕方式。

      ·stencilbuffer:指定是否你想使用模板缓冲区以用于绘制阴影。

      ·vsync:指定是否你想启动vsync(仅在全屏幕情况),可选。

      ·eventReceiver:一个接收事件的对象,可选。

      为适合于本实例环境,你将装载一个3D Studio Max文件(一幢房子)。该房子看起来并没有什么特别的,但是Irrlicht引擎能为你创建一个相当酷的纹理贴图。只需使用造型操纵器并为之创建一个planar纹理贴图即可:

    #include <irrlicht.h>
    #include <iostream>
    using namespace irr;
    #pragma comment(lib, "Irrlicht.lib")
    int main()
    {
     //让我们假定用户在本例中使用OpenGL
     //当然,也可以指定DirectX 8, 9, 等等.
     video::E_DRIVER_TYPE driverType = video::EDT_OPENGL;
     //创建设备,如果创建失败立即退出。
     IrrlichtDevice *device = createDevice(driverType,
     core::dimension2d(640, 480), 16, false, true);
     if (device == 0)
      return 1;
     video::IVideoDriver* driver = device->getVideoDriver();
     scene::ISceneManager* smgr = device->getSceneManager();

      我对从这个导入文件产生的发射光线颜色的效果并不满意。下列代码显示怎样实现这些步骤:

    scene::IAnimatedMesh* mesh = smgr->getMesh("room.3ds");
    smgr->getMeshManipulator()->makePlanarTextureMapping(
    mesh->getMesh(0), 0.008f);
    scene::ISceneNode* node = 0;
    node = smgr->addAnimatedMeshSceneNode(mesh);
    node->setMaterialTexture(0, driver->getTexture("wall.jpg"));
    node->getMaterial(0).EmissiveColor.set(0,0,0,0);

      四、 水动画

      你将添加的第一个特殊的效果是水动画。为此,WaterSurfaceSceneNode导入一个造型文件并使之象水表面一样地波动。如果你让这个场景结点使用一种相当好的材质如MT_REFLECTION_2_LAYER,那么它看起来相当酷:

    mesh = smgr->addHillPlaneMesh("myHill",
    core::dimension2d(20,20),
    core::dimension2d(40,40), 0, 0,
    core::dimension2d(0,0),
    core::dimension2d(10,10));
    node = smgr->addWaterSurfaceSceneNode(mesh->getMesh(0),3,300,30);
    node->setPosition(core::vector3df(0,7,0));
    node->setMaterialTexture(0,driver->getTexture("water.jpg"));
    node->setMaterialTexture(1,driver->getTexture("stones.jpg"));
    node->setMaterialType(video::EMT_REFLECTION_2_LAYER);

      作为输入造型,你可以创建一个陡峭的平面造型,但是你也可以为此使用任何其它的造型。你甚至能重用room.3ds输入文件(它看上去确实很奇怪)。该实例还用一个普通的石头纹理模型来绘制所有另外的表面。

      五、透明的告示板和灯光

      第二个特殊的效果是很基本的但是非常有用:一个透明的告示板,伴之有一个动态的灯光。为产生这种效果,你只需要产生一个灯光场景结点,并让它四处飞行;而且,为了让它看起来更酷一些,可以把一个告示板场景结点依附到它上面:

    //创建灯光
    node = smgr->addLightSceneNode(0, core::vector3df(0,0,0),
    video::SColorf(1.0f, 0.6f, 0.7f, 1.0f), 600.0f);
    scene::ISceneNodeAnimator* anim = 0;
    anim = smgr->createFlyCircleAnimator(core::vector3df(0,150,0),250.0f);
    node->addAnimator(anim);
    anim->drop();
    // 把告示板依附到灯光
    node = smgr->addBillboardSceneNode(node, core::dimension2d(50, 50));
    node->setMaterialFlag(video::EMF_LIGHTING, false);
    node->setMaterialType(video::EMT_TRANSPARENT_ADD_COLOR);
    node->setMaterialTexture(0,driver->getTexture("particlewhite.bmp"));

     

     六、 粒子系统

      下面介绍的这个特别效果更有趣:一个粒子系统。在Irrlicht引擎中,粒子系统既是组件化的,也是可扩展的,但是仍然易于使用。你只需要简单地把粒子发射器放到一个粒子系统场景结点,这样以来粒子看上去没有产生源。这些发射器可以据需要进行灵活配置,并经常带有许多参数,如粒子方向,粒子数量,以及粒子颜色等。

      当然,发射器类型有区别(例如,一个点发射器能够使粒子从一个固定的点上发出粒子)。如果该引擎提供的粒子发射器还不能满足你的要求,你可以容易地创建你自己的发射器。这只需简单地从IParticleEmitter接口派生一个新类并使用setEmitter()方法把它依附到粒子系统上去即可。

      下一个实例将创建一个盒子粒子发射器。你可能已经猜出,它从一个跳跃的盒中随机生成粒子。由参数来定义盒子,粒子的方向,每秒产生粒子的最小和最大数目,颜色以及粒子的最小和最大生命周期。

      一个完全由发射器组成的粒子系统将是令人生厌的,因为缺乏真实感。因此,Irrlicht支持粒子影响器-它负责在粒子到处飞扬时予以修整。一旦添加到粒子系统上,它们就能模仿另外的更真实的效果,象重力或风。在本例中的粒子影响器只是简单地修改粒子的颜色来产生一种淡出效果。

      可能你已经猜出,粒子影响器是通过派生IParticleAffector接口实现的,然后通过使用addAffector()方法把它添加到粒子系统上去。在你为该粒子系统设置了一种好看的材质后,你就有了一个看上去相当酷的野外宿营火的效果。通过调整材质,纹理,粒子发射器,还有影响器参数,你能容易地创建烟雾,下雨,爆炸,下雪等效果:

    scene::IParticleSystemSceneNode* ps = 0;
    ps = smgr->addParticleSystemSceneNode(false);
    ps->setPosition(core::vector3df(-70,60,40));
    ps->setScale(core::vector3df(2,2,2));
    ps->setParticleSize(core::dimension2d(20.0f, 10.0f));
    scene::IParticleEmitter* em = ps->createBoxEmitter(
    core::aabbox3d(-7,0,-7,7,1,7),
    core::vector3df(0.0f,0.03f,0.0f),
    80,100,
    video::SColor(0,255,255,255), video::SColor(0,255,255,255),
    800,2000);
    ps->setEmitter(em);
    em->drop();
    scene::IParticleAffector* paf =ps->createFadeOutParticleAffector();
    ps->addAffector(paf);
    paf->drop();
    ps->setMaterialFlag(video::EMF_LIGHTING, false);
    ps->setMaterialTexture(0, driver->getTexture,"particle.bmp"));
    ps->setMaterialType(video::EMT_TRANSPARENT_VERTEX_ALPHA);

      七、 影子投射

      最后但也不容忽视一个问题是,你需要为一个动画角色产生一个动态的影子。为此,你装载一个Quake2.md2模型文件并把它放到你的world上去。为了创建影子,你只需要调用方法addShadowVolumeSceneNode()。你可能通过调用ISceneManager::setShadowColor()来控制影子的颜色;注意,这仅是全局可调整的,并影响所有的影子。好,下面就是你的产生动态影子效果的代码:

    mesh = smgr->getMesh("../../media/faerie.md2");
    scene::IAnimatedMeshSceneNode* anode = 0;
    anode = smgr->addAnimatedMeshSceneNode(mesh);
    anode->setPosition(core::vector3df(-50,45,-60));
    anode->setMD2Animation(scene::EMAT_STAND);
    anode->setMaterialTexture(0, driver->getTexture("../../media/Faerie5.BMP"));
    anode->addShadowVolumeSceneNode();
    smgr->setShadowColor(video::SColor(220,0,0,0));

      八、 游戏循环

      最后,你能进入由device->run()方法控制的游戏循环。该循环将不断运行,直到通过获取一个关闭窗口事件(例如在Windows操作系统下的ALT-F4击键)来退出设备。你必须在一个beginScene()和endScene()命令对之间绘制每样东西。beginScene()用指定的一种颜色清屏,如果需要的话,可以同时清除深度缓冲区。然后你就可以让场景管理器和GUI环境来绘制它们的内容。随着调用endScene(),每一样东西都被绘制到屏幕上去。在本例中,你还可以动态地在标题栏上显示帧每秒(FPS)数,这对于严肃的游戏开发者是十分重要的事情:

    scene::ICameraSceneNode* camera = smgr->addCameraSceneNodeFPS();
    camera->setPosition(core::vector3df(-50,50,-150));
    int lastFPS = -1;
    while(device->run())
    {
     driver->beginScene(true, true, 0);
     smgr->drawAll();
     driver->endScene();
     int fps = driver->getFPS();
     if (lastFPS != fps)
     {
      core::stringw str = L"Campfire FX example [";
      str += driver->getName();
      str += "] FPS:";
      str += fps;
      device->setWindowCaption(str.c_str());
      lastFPS = fps;
     }
    }
    device->drop();

      结束循环后,你必须删除先前用createDevice()方法创建的Irrlicht设备。通过使用Irrlicht引擎,你应该删除所有你用以’create’开头的方法或函数创建的所有对象。你可以通过简单地调用device->drop()来删除该设备对象。

      九、你可能喜欢的Irrlicht插件

      正如在前面所介绍的,Irrlicht有一群勤奋的独立开发人员并为之产生了大量的插件,也用之开发了相当多的游戏。这些开发者中提出的许多的改进被再次集成到Irrlicht的随后的发行版本中。下面我列举其中的几个例子,我想这会吸引许多颇有前程的开发者感兴趣:

      ·OCTTools,是一套用于Irrlicht的工具,由Murphy McCauley所创建,用于操作OCT文件相关的:输出器,加载器,甚至更多。

      ·ICE(Irrlicht通用引擎)是一个开发框架,它提供了一个工程的轮廓实现,从而加快了新工程的开发。

      ·MIM,由Murphy McCauley所创建,是一个非常有用的基于XML的文件格式,可用于Irrlicht的加载器,转换器及其各种工具。

      ·My3D是一个开发工具包,它能够使你把来自于各种3D包(3DStudio MAX,Giles,等等)中的灯光贴图场景直接输出到Irrlicht中。

      ·Dusty引擎允许程序员创建"任务"-这些"任务"可以完成程序员想做的任何事情。之后,这些任务被添加到一棵普通的任务树上去,而每个任务可以有它们希望数目的孩子任务。任务"组"允许游戏设计者在一棵完整的树上执行普通的操作,例如暂停,继续或破坏等。

      ·Irrlicht RPG(Erring Light)是一个3D 绕行走游戏引擎,最初是针对RPG类游戏开发的。

      ·2D 图像和精灵类组成了一个很有用的库,它扩展了Irrlicht的2D能力。

      ·Zenprogramming站点,提供第一个针对Irrlicht的非正式的外部地形生成器,此处也提供很多相关的教程。

     

     

    展开全文
  • 游戏引擎大全

    2015-10-22 20:35:32
    游戏引擎列表 免费和开源引擎 Agar – 一个高级图形应用程序框架,用于2D和3D游戏。 Allegro – 基于 C/C++ 的游戏引擎,支持图形,声音,输入,游戏时钟,浮点,压缩文件以及GUI。 Axiom 引擎 – OGRE的衍生...

    游戏引擎列表
    免费和开源引擎

    Agar – 一个高级图形应用程序框架,用于2D和3D游戏。
    Allegro – 基于 C/C++ 的游戏引擎,支持图形,声音,输入,游戏时钟,浮点,压缩文件以及GUI。
    Axiom 引擎 – OGRE的衍生引擎。
    Baja 引擎 – 专业品质的图像引擎,用于The Lost Mansion。
    Boom – Doom代码的一部分。由TeamTNT开发
    Build 引擎 – 一个第一人称射击游戏引擎,用于Duke Nukem 3D。
    Bullet – 开源物理引擎,广泛应用在各大游戏主机。
    BYOND – “Build Your Own Net Dream”的縮写,支持各种类型的游戏,包括MMORPG。
    Ca3D-引擎 – 一个比较成熟的引擎,有自己的SDK,世界编辑器等。
    Cadabra 3D 引擎 – 用于快速开发3D游戏。
    Catmother – 一个基于BSD授权的引擎,只限个人使用,不能做商业用途。是一家游戏公司的开源引擎。
    CheapHack – 一个已经过时的TomazQuake衍生引擎。
    Crystal Entity Layer – Crystal Space 3D 引擎的扩充
    Crystal Space – 3D应用程序的常规框架。
    Cube – Cube2 ──> Sauerbraten
    DarkPlaces – 高级开源3D引擎之一。
    Delta3d – 整合和其他知名免费引擎,最初由美国军方开发。
    DGD – 一个面向对象的MUD引擎。
    Doom 引擎 – 现在已经免费的引擎,曾用于Doom和Doom II
    DXFramework – 一个简单,带有教学性质的2D/3D引擎,基于DirectX和Visual Studio
    DX Studio – 一个专业3D引擎,附带编辑器套件,由Worldweaver公司开发。
    Eclipse – 一个2D MMORPG编辑器。
    Elysium Source – 2D网络游戏引擎,VB6开发。
    Engine 001 – 2D 动作类RPG游戏编辑器。
    Epee 引擎 -一个2D/3D开放源代码图像引擎,多平台。
    Eternity 引擎 – Doom引擎的改进。
    Exult – Ultima VII使用的引擎的开源版。
    FIFE – 辐射1和2使用引擎的克隆。
    Game Blender – Blender的子项目游戏引擎,用于开发游戏。
    Game Maker – 面向对象的软游戏开发平台,支持拖放编辑以及其自己的脚本语言。
    GQ – 一个Quake引擎,增添了来自TomazQuake和DarkPlaces的许多新特性。
    GZDoom – 基于ZDoom的引擎。
    Genesis3D – 用于Windows的3D实时渲染引擎
    GemRB – Infinity Engine的一个免费的软件实现。
    G3DRuby – 用于高级3D图形。
    Haaf’s Game Engine – 一个使用硬件加速的2D游戏引擎。
    Irrlicht 引擎 – 一个多平台高质量的3D图形引擎。
    ioquake3 – 一个基于id Tech 3的引擎
    Gosu 2D游戏开发库,用于C++。
    Jogre – 一个基于Java的网络游戏引擎。
    MRPGe – Visual Basic开发的2D RPG游戏引擎,附带内置的脚本支持,可定制化强,正在开发阶段。
    M.U.G.E.N – 2D格斗游戏引擎。
    Multiverse Network – 网络游戏开发平台,包含服务端、客户端,以及一些开发工具(对个人免费)
    Nebula Device – 由德国的游戏开发工作室开发的实时渲染3D引擎。
    NeL 引擎 – 用于开发网络游戏的引擎。
    OctLight – Java游戏引擎,基于OpenGL。
    Open Dynamics Engine – 物理引擎
    Open Game Engine – 一个开源引擎,包含开发游戏所需的各种组件。
    OGRE Engine – 一个非常流行的面向对象图形渲染引擎,亦称OGRE3D。
    Online RPG Maker – 一个2D网络游戏引擎,以脚本方式编辑。
    Panda3D 引擎 – 基于Python的快速开发游戏引擎。
    PlayerWorlds – 一个简洁且广泛使用的2D网络游戏引擎。
    PLIB – 包含3D、音效、GUI、窗口管理。支持Linux/Windows/MacOSX。
    ProQuake – 更动过的Quake引擎。
    Pygame – python游戏引擎,作品见PyWeek
    毁灭公爵II引擎 – Quake II的引擎。
    毁灭公爵III引擎 – Quake III的引擎。
    Reality Factory – 一个开源引擎,面向非程序员开发,基于Genesis3d图形引擎。
    Raydium – Maniadrive 使用
    RealmForge – 用于微软 .NET Framework的引擎,Visual3D.NET的原始版本。
    Sauerbraten – 一个基于Cube引擎的优化版。
    Sonic Robo Blast 2 – 深度修改的Doom Legacy引擎
    Soya 3D – 基于Python的开源3D引擎
    Stratagus – 一个多平台即时战略游戏引擎。
    Telejano – Quake引擎的修改版。
    Tenebrae – Quake引擎的修改版。
    Toi – 一个正在开发的3D游戏引擎,可用于单机和网络游戏开发。
    Tomb4 – The engine used to play custom Tomb Raider games built using TRLE (Tomb Raider Level Editor)
    vbGORE – 用Visual Basic 6开发的网络游戏引擎(通过3D函数表达2D图形)
    Well of Souls – 基于脚本化编辑的2D引擎,附带可视化世界编辑器。
    Yake – 组件化,面向对象化的的引擎。
    Zak 引擎 – 为业余和专业游戏开发者开发的2D引擎,基于DirectX 8.1和9。 支持脚本、贴图地图、音效、粒子系统等
    商业引擎

    Arcane 引擎 – Wolfpack Studios为《Shadowbane》开发的引擎
    Aurora 引擎 – 为RPG研发的引擎。
    Beyond Virtual – 一个面向对象化的实时渲染3D引擎,表现优秀。
    Blade3D – 基于Microsoft XNA的新一代引擎。
    BRender – 一个即时渲染3D引擎,用于电脑游戏,模拟器,绘图工具开发。
    C4 Engine – Eric Lengyel开发的下一代电脑游戏引擎
    Chrome Engine – 支持DirectX 10的下一代游戏框架,主要用于FPS游戏(Windows, Xbox 360),由Techland开发。
    Coldstone game engine – an old game creation suite for Macintosh/Windows to create role-playing or adventure-style games
    CryENGINE, CryENGINE2 – CryENGINE是《孤岛惊魂》的游戏引擎。 CryEngine 2 是Crytek为开发《孤岛危机》研发的新一代游戏引擎。
    Dagor Engine 3 – A high-tech cross-platform game engine (3D, physics, game logic) with rich toolset for content development
    Deep Creator – A 3D game engine
    Doom 3 engine – Used by the games Doom 3, Quake 4, Prey and Quake Wars
    EAGL (EA Graphics Library) – A cross-platform graphics engine used by Electronic Arts in their EA Sports titles.
    Earth-4 Engine – The graphics engine used in Earth 2160
    Electron engine – Currently in development by Obsidian Entertainment for their game Neverwinter Nights 2, based on the Aurora engine
    euphoria – A real-time motion synthesis engine by NaturalMotion
    Explorations – 2d MMO creator
    FPSCreator – 3D First Person Shooter creator
    Frostbite Engine- Game engine used for the next-gen title Battlefield: Bad Company
    Gamebryo – A cross-platform 3D computer graphics engine coded in C++
    GFX3D – 目标公司为旗下的数款游戏开发的引擎。
    Havok[1] – Very High-tech cross platform (PC, PS3, Xbox 360 etc) middleware Engine.
    IMUSE – Specifically designed to synchronize music with visual action
    INSANE – Used in LucasArts games
    Infinity Engine – Allows the creation of isometric computer role-playing games
    Jedi – A game engine developed by LucasArts for Star Wars: Dark Forces and Outlaws
    Kaneva Game Platform – A full featured MMOG engine for independent and professional game development
    KjAPI – A C++ technology to create games and 3D applications for PC computers
    Lithtech – A competing alternative to the Quake, and Unreal engines.
    Lithtech Juipter Ex – A new generation Lithtech engine developed by Monolith to create the game F.E.A.R.
    Medusa – A C++ 3D game engine developed by Palestar and used in the DarkSpace MMO. It features distributed world simulation, single tool version control and asset realisation, cross-platform compatibility and an integrated client/server network system.
    morpheme – A graphically-authorable animation engine by NaturalMotion
    Monumental Technology Suite – A MMOG platform, including server and cleint technology and development / live management tools.
    Multiverse Network – an MMOG platform, including server, client, and tools. (Free for development and use–revenue sharing upon commercial deployment).
    Odyssey Engine – Used to create three dimensional computer role-playing games, used in Star Wars: Knights of the Old Republic
    ORE – Online RPG Engine
    Quest3D – www.quest3d.com
    Power Render – A general purpose software development kit for games and 3D visualization
    RAGE – A game engine created by Rockstar Games use it to power their upcoming video games on the Xbox 360 and PlayStation 3
    Reality Engine – 3D game engine by Artificial Studios
    RelentENGINE – A next-generation FPS engine supporting massive destroyable city environments and realistic vehicle control, makes extensive use of shader model 3.
    RenderWare – A very popular 3D API and graphics rendering engine
    Retribution Engine – A game engine to make first person shooter games
    Revolution3D – A 3D graphics engine developed by X-Dream Project
    RPG Maker XP – A 2D engine to make top-down and isometric-style role-playing games for Windows.
    SAGE engine – Used to create real-time strategy games
    SCUMM engine – Used in LucasArts graphical adventure games
    Serious Engine – The engine by Croteam used in the epic Serious Sam: The First Encounter and the inspirational – The Second Encounter
    Shark 3D – A middleware from Spinor for computer, video games and realtime 3D applications
    Silent Storm engine – A turn-based strategy game engine
    Sith – A game engine developed by Lucasarts for Jedi Knight: Dark Forces II
    Slayer – A game engine created by The Collective, Inc. and used in Buffy the Vampire Slayer, Star Wars Episode III: Revenge of the Sith, Indiana Jones and the Emperor’s Tomb and Wrath Unleashed
    Source engine – A Game Engine developed by Valve Software for Half-Life 2
    Torque Game Engine – A modified version of a 3D computer game engine originally developed by Dynamix for the 2001 FPS Tribes 2
    Torque Game Engine Advanced – A next-generation 3D game engine support modern GPU hardware and shaders.
    TOSHI – A fourth generation cross platform game engine designed by Blue Tongue Entertainment
    Truevision3d – A 3D game engine using the DirectX API
    Unigine – Cross-platform middleware with great graphics
    Unity – An easy-to-use open-ended 3D game/interactive software engine
    Unreal engine – One of the most popular game engines for action games
    Vengeance engine – A video game engine based on the Unreal Engine 2/2.5
    Vicious Engine – Available for Microsoft Windows, Sony PlayStation 2, Microsoft Xbox, and Sony PlayStation Portable
    3DGame Studio – www.3dgamestudio.com
    Vision Game Engine – A commercial game engine used in 50+ titles by companies like T2, Atari, Neowiz and Threewave. Available for PC, Xbox, Xbox360 and PS3
    Visual3D.NET – 3D platform and visual development environment built upon Microsoft .NET 2.0 and XNA Framework for developing for PC, Xbox 360, and Windows Mobile devices using C#, Visual Basic, J#, C++.NET, JScript.NET, IronPython, and visual scripting.
    Virtools – A 3D engine combined with unique high-level development framework, used for game prototyping and rapid developments. Available for Windows, Macintosh, Xbox, PSP
    White Engine – Square-Enix’s proprietary seventh generation game engine to be used for their PS3 projects.
    zerodin engine – 一个MMORPG专用的商业引擎,用于PC,XBOX360等多个平台,目前为止最适合开发MMORPG的商业引擎,引擎前身用于著名的RF online.
    Zero – 3D game engine used in Star Wars: The Clone Wars, Star Wars: Battlefront, and Star Wars: Battlefront II
    Maz 3D Game Engine – Designed by Students C++ & OpenGL
    手机游戏引擎

    GledPlay – 一套完整的SDK用于开发手机游戏。
    game-editor – 为GP2X开发游戏的开发套件。
    PSP

    WGAF – Guild Software用于开发Vendetta Online的引擎。
    XnGine – 最早的实时3D引擎之一。
    游戏及其使用的引擎

    引擎 游戏 公司
    Nebula Device 3 黑暗之眼 Radon Labs
    GoldSrc 半条命 Valve
    SAGE 引擎 命令与征服;
    命令与征服3:泰伯利亚战争;
    魔戒:中土大战II  EA
    Source引擎 半条命2;
    Sin Episodes;
    魔法门之黑暗弥赛亚  Valve;
    Ritual Entertainment;
    Arkane Studios 
    CryENGINE 孤岛惊魂 Crytek
    CryENGINE2 孤岛危机;
    孤岛危机:弹头  Crytek
    Essence 引擎 英雄连;
    英雄连:对立前线  Relic Entertainment
    Scimitar 刺客信条 育碧公司
    zerodinengine RF oline;
    dark eden2  CCR,SOFTON(开发中),GRAVITY(开发中)
    Alamo 星球大战:帝国战争;
    星球大战:帝国战争-堕落之军;
    宇宙战争:地球突击战  Petroglyph
    Unreal Engine 3 虚幻竞技场3 Epic Games
    Doom 3 引擎 毁灭战士3;
    雷神之锤4;
    深入敌后:雷神战争  Id Software
    Neon 引擎 闪点行动2; 极速房车赛  Codemasters
    GFX3D 复活 (游戏)、天骄  目标软件公司

    引擎概览(A–G)

    本章节来自 游戏编程Wiki,版权依据GNU自由文档许可证 1.2

     

    名称 程序语言 平台 版权 图像 音效 联网 脚本 其他特性 插件 备注
    3DCakeWalk Python Windows/Linux 商业 2D/3D 基于 DirectX和OpenGL     Python 参见
    A6游戏引擎 C-Script,模仿C++/Delphi Windows 商业 3D 基于 DirectX C-Script脚本语言 带物理运算
    AGL 引擎 C++ Windows 商业 2D 基于 DirectDraw,Direct3D和OpenGL 高级游戏场景框架 易于使用,硬件抽象,自动资源管理,自定义文件系统
    Allegro C++ DOS, Unix, Windows, BeOS, QNX, MacOS 开源,免费 2D以及3D  
    Artificial 引擎 .NET Windows 免费 3D 基于 DirectX
    Axiom .NET   免费 3D 基于 OpenGL
    Baja引擎 C++/Lua Windows, Mac Os X 免费 3D 基于 OpenGL Lua 专业级品质,包含各种开发工具 灵活性高
    Blitz3D Basic Windows 商业 2d/3D 基于 DirectX7 BlitzBasic 使用者众多 易于使用,支持BSP,3DS 非面向对象,basic语法
    BlitzMax Object Basic Windows, Linux, MacOS 商业 2D 基于 OpenGL BlitzMAX 脚本 提供多种模块(GUI,3D,音效,物理运算等)易于使用 高速2D引擎,面向对象,支持LUA 没有3D支持
    Brume Game引擎 .NET 2.0 (C#) Windows 免费 3D 基于 DirectX 提供多种模块(GUI,音效,物理运算,碰撞检测,动画等) 易于使用,面向对象  
    C4 引擎 C++ Windows/MacOS 商业 3D 可视化脚本编辑 参见 正在开发 特性支持不完整
    Cipher Game 引擎 C/C++ Windows 商业 3D   碰撞检测,AI
    名称 程序语言 平台 版权 图像 音效 联网 脚本 其他特性 插件 备注
    ClanLib C++ Windows, Linux, MacOSX 开源免费 2D加速 网络系统表现优秀
    Classical Moon GDK C/C++ Windows Free/商业 2D 基于 OpenGL 是,基于 OpenAL 可定制化C/C++脚本语言 Chinese
    Clockwork(未完成) 不需要 Windows, Linux Indie/商业 3D 基于 OpenGL 基于 OpenAL 计划中 Lua
    CRM32Pro C++ Windows, Linux 闭源 LGPL 2D 基于 SDL/glSDL,优化MMX 基于SDL_mixer的API 基于SDL_Net的API XML解析器,自带文件打包管理器,参见 基于各种CPU的高级设定,可定制化配置系统
    Crystal Space C/C++ Linux, Windows, MacOS X 免费(LGPL) 3D 基于 OpenGL Python, Perl 或 Java
    DaBooda Turbo 引擎 VB Windows   2D 基于 DirectX
    Daimonin C(服务端),C++(客户端)java(编辑器) Linux, Windows, MacOSX GPL 2D/3D 基于 SDL及OGRE3D Lua 完整的MMORPG引擎
    Delta3D C++ Linux, Windows, MacOSX 免费(LGPL) 3D OpenGL Python 物理运算,场景编辑器,参见 支持大规模地形渲染。
    名称 程序语言 平台 版权 图像 音效 联网 脚本 其他特性 插件 备注
    DarkbasicPro Basic Windows 共享软件 2d/3D 基于 DirectX9 Darkbasic 用户众多 易于使用,支持BSP,3DS。 非面向对象,basic语法
    DizzyAGE C++ Windows 免费 2D 基于 DirectX GS9 脚本语言 有开发工具,用于快速创建冒险类游戏
    DXGame引擎 VB6 Windows 免费 2D+ 基于 Direct3D 自动精灵管理,2D贴图地图(层数无限),基本粒子系统,碰撞检测
    dx_lib32 2.0 VB 6.0 (亦有 VB.NET) Windows 免费 2D 基于 D3D8) 基于 DirectAudio (DSound8) 支持Quake/Half-Life的打包文件格式 界面简单,易于使用,说明文档完备 不完全面向对象,说明文件及网站都是西班牙语
    EasyWay 引擎 Java Windows, Linux, Mac OS 开源GPL 2D/3D 基于 OpenGL OpenAL 计划中 可扩展,像素级碰撞检测,自动寻路 使用简便 API说明文件不完善
    名称 程序语言 平台 版权 图像 音效 联网 脚本 其他特性 插件 备注
    Epee 引擎 C++ Windows, Linux,Mac zlib/libpng 2D基于SDL,3D计划使用OpenGL 计划中 计划中 Epee 参见 渲染快速 引擎还在开发中
    ephLib C++/Io OS X GPL/其他 2D/3D 基于 OpenGL OpenAL 完整Io脚本支持 高级粒子系统 可修改 开发中,特性不完整
    Espresso3D Java Windows, Linux, MacOS X 免费/商业 3D 基于 LWJGL 2D/3D 基于 OpenAL 参见
    Fenix Project (beta) Pascal、C兼有 Windows, Linux, Mac OS, Solaris, BeOs, DreamCast, GP32X 开源 2D 基于 SDL 基于 MikMod 基于 SDL_Net 像素级碰撞检测,自动寻路 易于使用 基于软件渲染的2D,非面向对象的脚本语言,漏洞少
    FIFE C++ Win32, Linux, MacOS X, BSD 免费(GPL 2.0) 2D软件渲染,基于SDL, 有硬件加速模式,基于OpenGL 是 (OpenAL) Lua 5.1 计划支持各种特效   还不完整
    FlatRedBall 2.5D .NET Windows Free 3D 基于 DirectX Soon 模板,碰撞检测,骨骼系统,物理运算
    G3D C++ Linux, Windows, MacOS X 免费(BSD) 3D 基于 OpenGL  
    G3DRuby Ruby Windows, Linux Free 3D 基于 OpenGL  
    Game Maker Delphi Windows 免费/商业 2D/3D Some 自创GML脚本 快速2D贴图地图游戏开发,但支持3D速度不够(基于DirectX)
    Genesis3D C++ Windows 免费/商业 3D基于DirectX
    GFX3D C++ windows 商业

    引擎概览(G–Q)

    名称 程序语言 平台 版权 图像 音效 联网 脚本 其他特性 插件 备注
    GhostEngine C++, .NET Windows (Mac和Linux在开发中) 引擎代码使用Zlib/libPNG许可证,非代码资源使用多种许可否 3D 基于OpenGL/DirectX,对DirectX还在开发 是 (FMOD) 是 (TCP/IP正在重写,UDP支持在计划中) Lua 普通   开发中
    Goblin 2D+ C/C++ Windows 免费,共享,商业 主要是基于D3D的2D,但支持.X和.MD2模型 是-自创   开发中  
    Golden T 游戏引擎 Java Windows, Linux, MacOS X 免费 2D基于OpenGL  
    Gosu C++, Ruby Windows, Mac, Linux 免费 2D基于OpenGL/DirectX
    HGE HGE C++ Windows 开源(Zlib/libpng许可证) 2D基于DirectX 是,基于BASS 带开发工具 引擎框架好  
    Irmo C Linux 免费     Ruby  
    Irrlicht C++/.NET Windows, Linux, Mac OSX 免费 (zlib/pnglib许可证) 3D 基于DirectX(8,9),OpenGL,多种软件渲染 Lua 碰撞检测,HDR 大公司开发,教学资源丰富 开发中
    ika C++ Windows, Linux 免费(GPL) 2D 基于OpenGL Python 资源消耗少
    名称 程序语言 平台 版权 图像 音效 联网 脚本 其他特性 插件 备注
    Jad 引擎- C#+MDX引擎 C# Windows LGPL 3D基于Managed DirectX MDSound和Vorbis .NET 需要支持shaders 2.0以上的图形卡,使用牛顿力学引擎来实现逼真的运动和力回馈,支持HDR,带AI引擎(遗传算法框架) 开发界面直观 开发文档不完整
    Jamagic 1.2 Jamascript Windows 商业 3D 嵌入式编辑器 易学  
    JEngine SSE C++ Windows, Linux 免费(GPL) 2D基于OpenGL Lua 碰撞检测,Cg&GLS效果
    Jet3D C/C++ Windows Free 3D基于DirectX      
    JGame Java Windows, Unix, MacOSX 免费(BSD) 2D  
    jMonkey引擎 Java Windows, Linux, MacOS X 免费(BSD) 3D 基于LWJGL 未知
    JOGRE引擎 Java Windows, Linux, MacOS X 免费(BSD) 2D  ? Java在线游戏引擎
    Multimedia Fusion 2 非脚本 Windows 商业 2D Lua ActiveX, Dll, 插件丰富,可扩展 易学  
    neabEngine PHP Windows, Linux 商业 2D (AJAX) 带完整源代码,可添加模块
    NeL C/C++ Windows, Linux 免费/商业 3D 基于DirectX或OpenGL   CEGUI集成
    NemoX 3D 引擎 VB/Delphi/.NET Windows 免费 3D 基于DirectX DirectX 易于使用  
    NeoEngine C++ Windows, Linux 免费(MPL) 3D 基于 DirectX或OpenGL Lua  
    OGE – Open Game Engine C++ Windows (mingw, VC), Linux (gcc) 免费(LGPL)/商业 3D(OGRE,hence DX + OpenGL) OpenAL RakNet Squirrel 多线程设计,GUI(CEGUI)物理系统(ODE) 简便的开发平台  
    OGRE C++ Windows, Linux, MacOS X 免费(LGPL)/商业 3D 基于Directx或OpenGL 几乎支持所有高端3D技术 大公司开发,教程丰富,开源 源代码庞大
    ORE VB6 Windows 免费 2D基于 DirectX7/DirectX8
    名称 程序语言 平台 版权 图像 音效 联网 脚本 其他特性 插件 备注
    Ovorp引擎 .NET Windows 免费 2D基于DirectX  
    PAB游戏引擎 VB Windows
    Panda3D C++ Windows, Linux 免费(BSD) 3D DirectX / OpenGL 是,基于FMOD、OpenAL、Miles Python(官方建議)、C++ 內建碰撞與ODE物理引擎,有效能監控等輔助程式
    Photon C++ Linux, Windows zlib 2D 基于OpenGL 是,OpenAL 带资源管理 文档丰富 开发早
    PLib
    展开全文
  • 市面上的引擎应用的最广的无非是Cocos2D引擎和Unity3D引擎以及虚幻4引擎,当然还有许多开源的引擎,面对这么多的引擎,读者该如何学习?笔者就以自己工作十多年的经验给读者分享一下,因为人与人是不同的,所以我...

    市面上的引擎应用的最广的无非是Cocos2D引擎和Unity3D引擎以及虚幻4引擎,当然还有许多开源的引擎,面对这么多的引擎,读者该如何学习?笔者就以自己工作十多年的经验给读者分享一下,因为人与人是不同的,所以我分享的知识不一定适合所有人。

            学习一款引擎从哪里下手?通常的做法是看到引擎代码后,先看看其说明文档,它能做哪些事情,比如这款引擎核心功能是什么?它擅长做哪些事情?以Unity引擎为例,它首先解决的问题跨平台的问题,制作的产品可以一键导出Android和ios以及其他平台的工程。帮助开发者解决了大部分问题,因为它满足了当前产品需求。其次是它提供了脚本编程,因为C++对于开发者来说难度比较大,不容易掌握,而C#就解决了这个问题,只要有编程语言功底的都可以使用该脚本。再次,它提供了一个功能比较完善的编辑器,开发者通过这个编辑器可以很容易进行场景的搭建和逻辑的编写。最后,Unity的学习对于初学者上手非常快,另外它的架构保证了引擎的扩展性非常好。大部分功能都可以通过插件的方式进行完善。

           引擎有自己的优点也有自己的缺点,Unity引擎的缺点是包体比较大,这个是最致命的弱点,因为玩家它非常在意包体的大小,通常的包体压缩在40M左右是最好的,另外一个致命的缺点是,它的代码对于开发者是封闭的。这个不利于开发者深入理解引擎内部结构,而且开发产品时都会有特定需求,这个也无法做出改变。如果从学习角度看,Unity并不适合学习。

          程序员都需要自己的驾驭能力,对于程序开发来说,开源引擎是非常适合学习的,从学习角度看,Cocos2d-x引擎无非是最适合的,Ogre引擎和虚幻4相对来说比较庞大,而Cocos2d-x引擎的3D模块对于学习者来说非常容易入手的。它的代码量相对来说不大。模块结构比较简单,尤其对于场景管理和渲染来说更容易学习。

         在学习3D游戏引擎之前,对于3D的一些基础知识还是需要掌握的,比如固定流水线和可编程流水线。矩阵运算和向量运算这些数学知识。如何运用固定流水线解决问题,可编程流水线主要做哪些事情?材质的渲染,场景后处理渲染等等,为了能快速的掌握这些基础知识笔者利用业余时间专门编写了一本书为读者解释固定流水线和可编程流水线。著作名字:《手把手教你架构3D游戏引擎》电子工业出版社。书的封皮如下所示:



    掌握了固定流水线和可编程流水线后,接下来就要看看场景的组织结构,一个物体在场景中是如何显示出来的。这个要整清楚,随着这个问题继续深入进去就是看看引擎是如何加载读取的。

           接下来就要看看材质的渲染,场景的后处理渲染,模型的加载,骨骼动画,特效的加载读取。这也是引擎的核心模块。以材质渲染为例给读者介绍一下,材质的渲染最常用的是高光,法线,反射等效果。这些是必须要掌握的。后处理渲染比较常用的是Bloom渲染,Blur渲染,SSAO渲染,PSSM渲染等。

    骨骼动画的实现也是引擎中比较重要的部分,引擎必须有加载模型以及播放骨骼动画的播放。骨骼动画有很多方式,最常用的是Morph和蒙皮的实现,骨骼还需要编写模型导出插件。

           接下来要看看特效的实现了,特效分为粒子特效和UV动画。这个也要去研究的。

    最后是一些算法的实现,碰撞体算法实现,地形算法等等。现将3D引擎的模块图给大家展示一下:







    Cocos2d-x中的3D模块非常适合初级开发者学习的。代码模块比较清晰,简单。

    最后欢迎大家访问我的个人网站:姜雪伟个人网页








    展开全文
  • 几款游戏引擎简介

    2019-03-05 16:13:47
    目录 BigWorld:澳大利亚-收费 优点 缺点 其他描述 授权费用 相关技术说明 已出网游: 国内有该引擎授权的公司有 Unreal3-收费 授权价格 特点 缺点 已出网游: ...国内有该引擎授权的公...

    目录

    BigWorld:澳大利亚-收费

    优点

    缺点

    其他描述

    授权费用

    相关技术说明

    已出网游:  

    国内有该引擎授权的公司有

    Unreal3-收费

       授权价格

       特点

       缺点

       已出网游:

    Gamebryo LightSpeed:--收费

       授权费用

       特点

    CryEngine:德国。

       授权价

       特点

    国内有该引擎授权的公司有


    BigWorld:澳大利亚-收费


    优点

        1:动态负载均衡,服务器承受能力好。
        2:服务器有较高的容错性,对服务器状况有专业的记录和管理报表分析。
        3:功能全面,使用非常方便,开发速度快。
        4:支持无缝世界。
        5:嵌入的Python脚本,开发非常方面。

    缺点

       1:该引擎更适合制作FPS游戏。
        2:结构完整度高,模块间契合度大,优化难度大。
        3:仅支持RedHat服务器系统。


    其他描述

    授权费用

     一个许可针对一个项目一个游戏。若一次性购买,价格为200W美元。

    相关技术说明

        BW和其他网游引擎不同,它不是针对地图为单元,将地图为单元分担到独立进程中去管理的。它是以人群数量去进行划分的,从理论上来说BW是支持无限大的游戏世界,而且它完全的支持无缝,因为它完全没有从物理地图区域进行分割。
        BW是使用C++开发的,使用的服务器是Linux,只支持RedHat,而且核心代码,即动态均衡负载代码是不提供源码的。
        BW中大量使用了多重继承,从汇编级去读其代码结构,难度很大。
        BW的Python脚本使用起来非常方便,Server间的跨进程通讯被隐藏的很好,对开发者使用提供了很多的方便,但由于隐藏很多细节,也出现了修改上的难度和局限性。
        BW设计初衷似乎是MMOFPS而非MMORPG,由于修改上的难度过大,需要和澳方进行长期的沟通才能方便开发。
        BW的场景管理使用的是传统四叉树。
        BW是将渲染线程和逻辑线程完全分离的,位解决CPU和GPU通信瓶颈,它让CPU比GPU快2-3帧。另外,它的客户端资源加载是使用的独立线程。
        BW提供服务器负载测试工具。常规性能为: 单纯收发不考虑逻辑情况下Client: 每秒10次,OUT 0.5Kb, In 2Kb.
        BW本身支持中文,同时支持DX9解决方案,主要支持的建模工具为3D MAX以及MAYA。
        BW的配置文件时XML格式开放除动态负载均衡核心代码之外所有代码的修改权限,核心代码不提供。
        BW的授权价格初步估测位200W美元,但值得注意的是,只有签订了NDA(保密协议)的公司才有权知道其真正售价。该售价收到NDA保护,不得外泄。
        BW有客户端的试用版,期中包括一个DEMO和三个编辑器试用版,其客户端有中文文档。服务器完全没有试用版,也没有中文文档。
        BW的培训工作为:初期派出3名工程师,1客户端1服务器1美术,外加1翻译人员到授权公司进行5个工作日的培训,期中3天讲课,两天问题解答。后期通过MSN进行技术指导。
        BW1.8版本之前不提供Update程序,但支持XML打包工具支持。
        BW支持TCP/IP,UDP以及部分其他平台通讯协议,但没有P2P支持。
        BW默认支持服务器架构为LoginServer, CellServer, DBServer, ContorlServer。客户需要做的是对CellServer中逻辑属性进行添加和控制。
        BW能够支持2D游戏开发。
        使用BW开发,建议程序人员配置为4-8人,要求程序人员熟悉C++和Python,其中服务器人员要求了解部分Linux操作系统初级知识。另建议客户端人员和服务器人员配置比例为3:1。


    已出网游:  

                          天下2,创世西游   ----    网易
                          鬼吹灯OL         ----    游趣
                          侠客列传          ----    锦游
                          三国群英传2OL    ----    宇俊奥玎
                          魔界2            ----     金酷


    国内有该引擎授权的公司有


             广州网易 畅游(CYOU) 北京大方成象(北京)网络技术股份有限公司 金酷游戏(上海鸿利数码有限公司) 广州Interzone 广州深红 深圳光宇天成 北京天联世纪 上海天游 上海盛秦 上海游趣 杭州五花马 浙江凯迅 杭州9D 宁波盛光天翼 无锡音唯响 成都灵智伟业 天津构思 福州天盟 台湾宇峻奥汀 台湾鈊象电子


    Unreal3-收费


       授权价格

    一说75W美元,一说300W美元。

       特点

         1:易于进行极细腻的人物材质渲染,渲染效率优化优秀。
         2:注重数据生成,保证美术只需要程序员少量协助就可以尽多的开发出游戏的数据资源,该过程在可视化环境内完成,操作便利。
         3:支持64位高精度动态渲染管道。
         4:支持动态软阴影。
         5:强大的材质编辑器,使得美术可以在实时图形化界面中建立任意复杂的Shader,该编辑器友好度很高。
         6:支持室内和室外环境的无缝连接。
         7:支持体积环境雾,包括高度雾和距离雾。
         8:支持刚体物理一一级布娃娃系统(赋予物体以质量,形状特性,获得很逼真的力学状态效果)。
         9:所有材质可拥有独立的物理属性,包括摩擦系数,质量等参数。
         10:提供了一个支持普通游戏对象的游戏框架,例如玩家,NPC,物品,武器,触发器这样的游戏框架。
         11:支持4骨以上的复杂骨骼动画,包括灵活摄像机过程动画控制器。
         12:支持基于小队的AI框架,包括复杂的NPC AI,例如按下开关,开门关门,寻路等,AI提供了可见的脚本工具。
         13:提供UnralMatinee,一个基于时间轴的可视化序列工具,该工具可以编辑建立游戏中的过场动画,该过场动画可以是交互的或非交互性的。工具可控制摄像机,对象,声音以及特效,包括AI事件。
         14:提供基于多普勒效应的音频处理。
         15:虚幻本身支持的网络部分是基于UDP协议开发的,但原本设计就没有希望能够提供一个适合大量玩家在线的服务器框架。
         16:U3提供一个地形编辑来进行地表Alpha混合,同时填充碰撞检测数据和位移贴图。
         17:U3提供一个可视化的材质编辑器,可进行多层的材质混合,且这些材质可以动态的和场景光源交互。
         18:U3提供一个强大的资源浏览框架,用来寻找,预览,组织各种游戏资源。
         19:U3提供一个动画工具啦导入模型,骨骼和动画,将他们连接到游戏中形成脚本事件。
         20:U3编辑器可以方便的在编辑器中进行游戏测试。
         21:U3引擎授权包括例程部分和100%的源代码,包括引擎本身,编辑器本身,导出插件以及DEMO游戏的代码。
         22:使用了truetype字体和Unicode字符,完全支持中文。
         23:规格限制:假设模型为3000-10000个三角形,场景中同时可见角色为5-20人。一个角色限制为100-200个骨头。对于一个100W-800W的角色创建细节网络模型的话,该角色创建1-2个2048*2048的法线贴图足够了。建议对中端PC配置,使用1024*1024贴图,低端PC配置使用512*512贴图,贴图包括材质贴图和法线贴图。一个场景最多可见20W-120W的可见三角形。建议大场景光源限制在2-5个以内。

       缺点

       1:游戏类型适合室内场景,适合FPS游戏。
       2:服务器使用的是FreeBSD环境,暂未有项目进行验证其容载。


       已出网游:

         剑灵---韩国
         九阴真经
         流星蝴蝶剑
         鬼吹灯


    Gamebryo LightSpeed:--收费

       授权费用

    27W美元(确认)

       特点

        1:对3D MAX,MAYA均有良好的插件支持,包括特效,动作等无需特殊编辑器即可导出。
        2:GB提供了资源查看器,动画工具以便开发,2.5之后更提供了专门的场景编辑器。
        3:GB隐藏了渲染细节,实现了多流渲染管理系统,应用程序员工作代价大幅度降低。
        4:物理模块使用了Nvidia的PhysX系统。
        5:包括模块有GB,SpeedTree,scaleForm,umbra,beast,fmod,Lua一共7个组件。


    CryEngine:德国。

       授权价

    70W欧元,也有一说法为500W RMB。

       特点

       What you see is what you play 的沙盒系统。使关卡设计师能够方便的创建一个带有事件,触发点的游戏,无需编写复杂的脚本即可创建优秀的关卡。(附:SandBox是CE的可视化关卡编辑器)
       完整的植物和地表生成系统。无需美术设计师手动添加元素,可严格符合地形坡度,海拔高度生长密度等自然规则生成复杂地表植被。
       实时的软粒子系统和完整的特效编辑器能大大简化爆炸,烟火烟雾等复杂特效的创建,同时可反映其他物体,风,重力影响,同时与光线,阴影进行交互。
       有专用的道路和河流创建工具,可自动符合地形特征生成。
       专用车辆创建工具,可控制部件损坏等物理特效。
       对物理,人工智能,音效均提供了多核CPU的优化。
       支持实时动态全局光照,延迟光照,自然光照,动态软阴影,体积雾,位移贴图,空间环境光遮蔽,HDR,人眼适应光照,动态模糊,景深。
       支持角色表情动画,支持程序动作变形,有专门的面部表情编辑器,支持次表面散射,支持反向力学。
       有专门的AI编辑器,支持日夜时间循环,支持高质量立体水域,支持动态体积光和光线追踪效果,支持多线程高性能物理系统,支持绳索破坏系统和环境交互破坏。
       有专门的客户端性能分析工具,有资源管理编辑器,以及支持离线渲染。
       支持游戏内混频和动态交互式音效。
       对64Bits系统有良好支持,对DX10,DX11均有良好支持。
       有极其优秀的水面效果。
       在中国有其服务中心,可以良好解决语言沟通问题。
       使用PerfHUD可了解到,它对渲染的调用最为简洁,有强大的性能基础。

    国内有该引擎授权的公司有

       畅游 九游

    展开全文
  • 初步了解游戏引擎

    2019-10-30 14:52:55
    初步了解游戏引擎的制作框架什么是游戏引擎普通游戏引擎为开发人员提供的基础内容功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一...
  • 链接:游戏开发入门(十一)游戏引擎架构(8节课 时常:约2小时40分钟) 该堂课是对游戏引擎内容的一个概括总结,同时也是对游戏开发技术的一个相当全面的总结。 正如我在开篇所提到的,游戏引擎架构的学习有助于...
  • 十大最牛游戏引擎

    2016-06-07 11:54:07
    游戏引擎就像是游戏的发动机,好的游戏引擎能够让游戏开发事半功倍。而对玩家们来说,游戏引擎能够带来最直观的感受就是游戏的画面和细节表现。从光影声效到场景细节,从画面触感到各种细腻体验,再到人物表情的捕捉...
  • 现在,手游、页游等新兴平台的表现又非常强势,所以选择正确的游戏引擎变得尤为重要。下面,小编就给大家带来开发商常用的10款游戏引擎,并且逐一分析其优缺点,未来想涉足游戏领域的朋友一定要看看。
  • 游戏引擎”顾名思义,就是指一款游戏的“引擎”。(好吧,我知道这句话是废话......) 让小编给大家举一个更加形象的例子:大家不妨联想一下汽车引擎。 汽车之所有能产生动力,在马路上行走,就是因为它的内部...
  • 目前市场上游戏引擎多种多样,主流的游戏引擎有unity,unreal,建议初学游戏开发的小伙伴先从这两个引擎学起。有人说,unreal要比unity难学很多,初学者应先接触unity,其实我个人觉得游戏引擎就是普通软件,unity与...
  • Android游戏引擎汇总

    2016-11-22 17:07:05
    随着Android系统的使用越来越广泛,了解一下Android平台下的游戏引擎就非常有必要。而同时因为基于Intel x86的移动设备越来越多,我也非常关注支持x86的移动游戏引擎。然而就目前为止游戏引擎的数量已经非常之多,每...
  • 对于像学习游戏引擎原理的人来说,需要制定自己明确的长期目标:  1) 首先,一开始可能对游戏引擎没什么概念,建议先使用一两个游戏引擎(我推荐C++程序员学习虚幻4游戏引擎,现在是免费开源的,非常值得学习。...
  • android游戏引擎汇总

    2017-08-28 21:43:55
    随着Android系统的使用越来越广泛,了解一下Android平台下的游戏引擎就非常有必要。而同时因为基于Intel x86的移动设备越来越多,我也非常关注支持x86的移动游戏引擎。然而就目前为止游戏引擎的数量已经非常之多,每...
  • 毕竟网络上的游戏引擎良莠不齐,官网上相关资料也比较少,而选择一个适合的游戏引擎是一个项目最基础,也是很核心的一部分。试想一下,在游戏开发进行到中后期的时候,才发现项目引入的游戏引擎与需求相悖,这时候...
  • 本文提供一个完整的游戏引擎代码,并有详细代码解析。后续将根据这个游戏引擎开发小游戏,逐渐完善该引擎并介绍游戏编程相关的知识。 假设你起码拥有C++的知识。以《游戏编程入门》 Micheal Morrison为基本教材,PDF...
  • 市面上目前流行最广的游戏引擎,在2D领域是Cocos2d引擎,在3D领域是Unity3D。这二者分别占领2D游戏开发市场和3D游戏开发市场,虽然虚幻4也开始发力,引擎代码开源。但是由于它是C++编写的,对于一些初级用户使用起来...
  • 面临我们的第一个问题是怎么选一个H5的游戏引擎, 那么今天本尊就来给大家分析一下目前能开发各大平台H5小游戏的游戏引擎和它们的优缺点。 入选原则: (1)能一次开发,同时发布到多个游戏平台的游戏引擎; ...
1 2 3 4 5 ... 20
收藏数 140,463
精华内容 56,185
关键字:

游戏引擎