现在2011最新电影有哪些推出的游戏有哪些啊 0.0

信息提示
您的同一ip请求过于频繁,如果希望继续访问,请输入验证码:
Copyright 1998 – 2010 Tencent. All Rights Reserved.您的同一ip请求过于频繁,如果希望继续访问,请输入验证码:
腾讯旗下网站:
2010 Tencent 指定的主题不存在或已被删除或正在被审核,请返回。
GMT+8, 2011-8-5 10:03,
Proce ed in 0.022815 second(s), 3 queries, Gzip enabled
Powered by
2001-2009我要飞得更高…… |
| 文章列表 您正在查看 "游戏" 分类下的文章
2009年08月27日 星期四
原文地址
游戏主循环是每个游戏的心跳,输送着整个游戏需要的养分。不幸的是没有任何一篇好的文章来指导一个菜鸟游戏程序员如何为自己的程序供养。不过不用担心,因为你刚好不小心看到了这篇,也是唯一一篇给予这个话题足够重视的文章。
由于我身为游戏程序员,我见过许许多多的手机小游戏的代码。这些代码给我展示了五彩缤纷的游戏主循环实现方法。你可能要问:“这么简单的一个小玩意还能做到千奇百怪?” 事实就是这样,我就会在此文中讨论一些主流实现的优缺点,并且给你介绍在我看来最好的输送养分的解决方案。
游戏主循环
每一个游戏都是由获得用户输入,更新游戏状态,处理AI,播放音乐和音效,还有画面显示这些行为组成。游戏主循环就是用来处理这个行为序列。如我在引言中所说,游戏主循环是每一个游戏的心跳。在此文中我不会深入讲解上面提到的任何一个行为,而只详细介绍游戏主循环。所以我把这些行为简化为了两个函数:
update_game();
//更新游戏状态 (后文可能翻译为逻辑帧)
di lay_game(); //更新显示  #160 #160 #160;
(显示帧)
下面是最简单的游戏主循环:
  #160 #160;
bool game_is_ru ing = true;
  #160 #160;
while( game_is_ru ing ) {
update_game();
di lay_game();
这个简单循环的主要问题是它忽略了时间,游戏会尽情的飞奔。在小霸王机器上运行会使玩家有极强的挫败感,在牛逼的机器上运行则会要求玩家有超人的判断力和APM(原意为慢的机器上运行慢,快的机器上运行快……)。在远古时代,硬件的速度已知的情况下,这不算什么,但是目前有如此多的硬件平台使得我们不得不去处理时间这个重要因素。对于时间的处理有很多的方法,接下来我会一一奉上。
首先我会解释两个贯穿全文的术语:
每秒帧数(后简称FPS)
FPS是Frames Per Second的缩写。在此文的上下文中它意味着di lay_game()每秒被调用的次数。
游戏速度
游戏速度是每秒更新游戏状态的速度,换言之,即update_game()每秒被调用的次数。
FPS依赖于恒定的游戏速度
一个让游戏每秒稳定运行在25帧的解决方案如下:
  #160 #160;
co t int FRAMES_PER_SECOND = 25;
co t int SKIP_TICKS = 1000 / FRAMES_PER_SECOND;
  #160 #160;
DWORD next_game_tick = GetTickCount();
// GetTickCount() retur the current number of milliseconds
// that have ela ed since the system was started
  #160 #160;
int sleep_time = 0;
  #160 #160;
bool game_is_ru ing = true;
  #160 #160;
while( game_is_ru ing ) {
update_game();
di lay_game();
  #160 #160 #160 #160 #160 #160;
next_game_tick += SKIP_TICKS;
sleep_time = next_game_tick - GetTickCount();
if( sleep_time = 0 ) {
Sleep( sleep_time );
// Shit, we are ru ing behind!
这个方案有一个非常大的优点:简单!因为你知道update_game()每秒被调用25次,那么你的游戏的逻辑部分代码编写将非常直白。比如说在这种主循环实现的游戏中实现一个 重放 函数将非常简单(译者注:因为每帧的间隔时间已知,只需要记录每一帧游戏的状态,回放时按照恒定的速度播放即可。就像电影胶片一样)。如果在游戏中没有受到随机值的影响,只需要记录玩家的输入就可以实现重放。
在你实现这个循环的硬件上你可以按需要调整FRAMES_PER_SECOND到一个理想的值,但是这个游戏主循环实现会在各种硬件上表现得怎么样呢?
小霸王机
如果硬件可以应付指定的FPS,那么不会有什么事情发生。但是小霸王通常是应付不了的,游戏就会卡。在极端情况下就会卡得掉渣,或者一步十卡、一卡十步(原意为某些情况下游戏速度很慢,有一些情况下又比较正常)。这样的问题会毁掉你的游戏,使得玩家及其挫败。
牛逼的机器
在牛逼的机器上似乎不会有任何问题,但是这样的游戏主循环浪费大量的时钟循环!牛逼的机器运行这个游戏可以轻松的跑到300帧,却每秒只运行了25或者30帧~ 那么这个主循环实现会让拥有牛逼硬件的玩家无法尽情发挥其硬件效果产生极大的挫败感(原意为这样的实现会让你的视觉效果受到影响,尤其是高速移动物体)。
从另外一个角度来说,在移动设备上,这一点可能会是一个优点。游戏持续的高速运行会很快地消耗电池……
基于恒定游戏速度的FPS的主循环实现方案简单易学。但是存在一些问题,比如定义的FPS太高会使得老爷机不堪重负,定义的FPS太低则会使得高端硬件损失太多视觉效果。
基于可变FPS的游戏速度
另外一种游戏实现可以让游戏尽可能的飞奔,并且让依据FPS来决定游戏速度。游戏状态会根据每一显示帧消耗的时间来进行更新。
  #160 #160;
DWORD prev_frame_tick;
DWORD curr_frame_tick = GetTickCount();
  #160 #160;
bool game_is_ru ing = true;
while( game_is_ru ing ) {
prev_frame_tick = curr_frame_tick;
curr_frame_tick = GetTickCount();
  #160 #160 #160 #160 #160 #160;
update_game( curr_frame_tick - prev_frame_tick );
di lay_game();
这个游戏主循环的代码比起之前稍微复杂一些,因为我们必须去考虑两次update_game()调用之间的时间差。不过,好在这并不算复杂。
初窥这个实现的代码好像是一个理想的实现方案。我已经见过许多聪明的游戏程序员用这种方式来书写游戏主循环。但是我会给你展示这个实现方案在小霸王和牛逼的机器上的严重问题!是的,包括非常职业非常娴熟非常牛逼的玩家的机器。
小霸王会在某些运算复杂的地方出现卡的情况,尤其在3D游戏中的复杂场景更是如此。帧率的降低会影响游戏输入的响应,同时降低玩家的反应速度。游戏状态更新也会因此突然受到影响。这样的情况会使得玩家和AI的反应速度减慢,造成玩家挫败感加剧。比如一个在正常帧率下可以轻松越过的障碍会在低帧率下无法逾越。更严重的问题是在小霸王上会经常发生一些违反物理规律的怪事,如果这些运算涉及到物理模拟的话。
牛逼的机器
你可能会好奇,为什么刚才的游戏循环在飞快的机器上会出现问题。不幸的是,这个方案的确如此,首先,让我给你介绍一些计算机数学知识。
浮点数类型占用内存大小是有限的,那么有一些数值就无法被呈现。比如0.1就不能用2进制表示,所以会被近似的存储在一个浮点数中。我用python给你们展示一下。
0.10000000000000001
这个问题本身并不怎么具有戏剧性,但是这样的后果却截然相反。比方说你的赛车的速度是0.001个单元每微秒。那么正确的结果是在10秒后你的赛车会移动10个单位,那么我们这样来实现一下:
def get_distance( f ):
...  #160 #160 #160;
skip_ticks = 1000 / f ...  #160 #160 #160;
total_ticks = 0
...  #160 #160 #160;
distance = 0.0
...  #160 #160 #160; eed_per_tick = 0.001
...  #160 #160 #160;
while total_ticks 10000:
...  #160 #160 #160 #160 #160 #160 #160 #160 #160 #160 #160;
distance += eed_per_tick * skip_ticks
...  #160 #160 #160 #160 #160 #160 #160 #160 #160 #160 #160;
total_ticks += skip_ticks
...  #160 #160 #160;
return distance
现在我们来得到40帧每秒时运行10秒后的结果
get_distance( 40 )
10.000000000000075
等等~怎么不是10呢?发生了什么?嗯,400次加法后的误差就有这么大,每秒运行100次加法后又会是怎么一个样子呢?
get_distance( 100 )
9.9999999999998312
误差越来越大了!那么,40帧每秒的结果和100帧每秒之间误差差距是多大呢?
get_distance( 40 ) - get_distance( 100 )
2.4336088699783431e-13
你可能会想这样的误差可以忽略。但是真正的问题出现在你使用这些错误的值去进行更多的运算。小的误差会被扩大为致命的错误!然后这些错误会在游戏飞奔的同时毁掉它!这些问题发生的几率绝对大到足够引起你的注意。我有见过因为这个原因在高帧率出现问题得游戏。之后那个游戏程序员发现这些问题出现在游戏的核心部分,只有重写大部分代码才能修复它。
这样的游戏主循环看上起不错,但是并不怎么样。不管运行它的硬件怎样,都可能出现严重的问题。另外,游戏实现的代码相对于固定游戏速度的主循环而言更加复杂,那你还有什么使用它的理由呢?
最大FPS和恒定游戏速度
我们的第一个实现中,FPS依赖于恒定的游戏速度,在低端的机器上会出现问题。游戏速度和游戏显示都会出现掉帧。一个可行的解决方案是牺牲显示帧率的来保持恒定的游戏速度。下面就实现了这种方案:
  #160 #160;
co t int TICKS_PER_SECOND = 50;
co t int SKIP_TICKS = 1000 / TICKS_PER_SECOND;
co t int MAX_FRAMESKIP = 10;
DWORD next_game_tick = GetTickCount();
int loo bool game_is_ru ing = true;
while( game_is_ru ing ) {
  #160 #160 #160 #160 #160 #160;
loo = 0;
while( GetTickCount() next_game_tick &am am loo MAX_FRAMESKIP) {
update_game();
next_game_tick += SKIP_TICKS;
loo ++;
di lay_game();
游戏会以稳定的50(逻辑)帧每秒的速度更新,渲染速度也尽可能的快。需要注意的是,如果渲染速度超过了50帧每秒的话,有一些帧的画面将会是完全相同的。所以显示帧率实际上也等同于最快每秒50帧。在小霸王上运行的话,显示帧率会在更新游戏状态循环达到MAX_FRAMESKIP时下降。从上面这个例子来说就是当渲染帧率下降到5(FRAMES_PER_SECOND / MAX_FRAMESKIP)以下时,游戏速度会变慢。
在小霸王上运行这样的游戏循环会出现掉帧,但是游戏速度不受到影响。如果硬件还是没有办法处理这样的循环,那么游戏速度和游戏帧率都会受到影响。
牛逼的机器
在牛逼的机器上这个游戏循环不会出现问题,但是如同第一个解决方案一样,还是浪费了太多的时钟周期。找到一个快速更新并且依然能够在小霸王上运行游戏的平衡点是至关重要的!
使用上面的这个方案可以使游戏的实现代码比较简单。但是仍然有一些问题:如果定义了一个过高的FPS会让小霸王吃不消,如果过低则会让牛逼的机器难以发挥性能。
独立的可变显示帧率和恒定的游戏速度
有没有可能对之前的那种方案进行优化使得它在各种平台上都有足够好的表现呢?当然是有的!游戏状态本身并不需要每秒更新60次。玩家输入,AI信息等都不需要如此高的帧率来进行更新,大约每秒25次就足够了。所以,我们可以试着让update_game()每秒不多不少的被调用25次。渲染则放任不管,让其飞奔。但是不能让小霸王的低渲染帧率影响到游戏状态更新的速度。下面就是这个方案的实现:
  #160 #160;
co t int TICKS_PER_SECOND = 25;
co t int SKIP_TICKS = 1000 / TICKS_PER_SECOND;
co t int MAX_FRAMESKIP = 5;
  #160 #160;
DWORD next_game_tick = GetTickCount();
int loo float interpolatio   #160 #160;
bool game_is_ru ing = true;
while( game_is_ru ing ) {
  #160 #160 #160 #160 #160 #160;
loo = 0;
while( GetTickCount() next_game_tick &am am loo MAX_FRAMESKIP) {
update_game();
  #160 #160 #160 #160 #160 #160 #160 #160 #160 #160;
next_game_tick += SKIP_TICKS;
loo ++;
  #160 #160 #160 #160 #160 #160;
interpolation = float( GetTickCount() + SKIP_TICKS - next_game_tick )
/ float( SKIP_TICKS );
di lay_game( interpolation );
使用这种方案的update_game()实现会比较简单,相对而言,di lay_game()则会变得稍许复杂。你需要实现一个接收插值参数的预言函数,这并不是什么难事,只是需要做一些额外的工作。我会接着解释这个预言函数是如何工作的,不过首先让我告诉你为什么需要这样的一个函数。
游戏状态每秒被更新25次,如果你渲染的时候不使用插值计算,渲染帧率就会被限定在25帧。需要注意的是,25帧并没有人们想象中的糟糕,电影画面在每秒24帧的情况下依然流畅。所以25帧可以很好的展示游戏画面,不过对于高速移动的物体,更高的帧率会带来更好的效果。所以我们要做的是,在显示帧之间让高速移动的物体平滑过度。这就是我们需要一个插值和预言函数的原因。
插值和预言函数
如我之前所说,游戏状态更新在一个恒定的帧率下运行着,当你渲染画面的时刻,很有可能就在两个逻辑帧之间。假设你已经第10次更新了你的游戏状态,现在你需要渲染你的场景。这次渲染就会出现在第10次和第11次逻辑帧之间。很有可能出现在第10.3帧的位置。那么插值的值就是0.3。举个例子说,我的一辆赛车以下面的方式计算位置。
  #160 #160;
position = position + eed;
如果第10次逻辑帧后赛车的位置是500,速度是100,那么第11帧的位置就会是600. 那么在10.3帧的时候你会在什么位置渲染你的赛车呢?显而易见,应该像下面这样:
  #160 #160;
view_position = position + ( eed * interpolation)
现在,赛车将会被正确地渲染在530这个位置。
基本上,插值的值就是渲染发生在前一帧和后一帧中的位置。你需要做的就是写出预言函数来预计你的赛车/摄像机或者其他物件在渲染时刻的正确位置。你可以根据物件的速度来计算预计的位置。这些并不复杂。对于某些预计后的帧中出现的错误现象,如某个物体被渲染到了某个物体之中的情况的确会出现。由于游戏速度恒定在每秒更新25次状态,那么这种错误停留在画面上的时间极短,难以发现,并无大碍。
大多数情况下,update_game()执行需要的时间比di lay_game()少得多。实际上,我们可以假设在小霸王上update_game()每秒还是能运行25次。所以游戏的逻辑状态不会受到太大的影响,即使FPS非常低。
牛逼的机器
在牛逼的硬件上,游戏速度会保持每秒25次,屏幕更新却可以非常快。插值的方案可以让游戏在高帧率中有更好的画面表现。但实质上游戏的状态每秒只更新了25次。
使游戏状态的更新独立于FPS的解决方案似乎是最好的游戏主循环实现。不过,你必须实现一个插值计算函数。
整体总结
游戏主循环对游戏的影响远远超乎你的想象。我们讨论了4个可能的实现方法,其中有一个方案是要坚决避免的,那就是可变帧率来决定游戏速度的方案。
一个恒定的帧率对移动设备而言可能是一个很好的实现,如果你想展示你的硬件全部的实力,那么最好使用FPS独立于游戏速度的实现方案。
如果你不想麻烦的实现一个预言函数,那么可以使用最大帧率的实现方案,只是要找到一个帧率大小的平衡点。
现在,你可以着手编写你梦寐以求的游戏了!
Koen Witters
| 2009年08月01日 星期六
原作者:
Schaefer
经过四个月的压榨时期后
(crunch
period:指游戏制作后期最紧张繁忙的一段时期)
,Diablo
I终于于1996年圣诞节的第二天进厂压盘了。当时我们没有考虑过任何有关其续作开发的问题,正如大部分开发者都可能经历过的一样,在经历了一段如此之长的开发周期后,
我们自然还没有做好重返Diablo世界的准备。
我们唯一能确定的是:我们实在不想第二次体验如此紧张艰辛的最后测试阶段。然而当Diablo
II于2000年6月15日压盘之前,我们又再度经历了为期12个月的令人心力交瘁的压榨时期。
在Diablo
I上市后,我们花费了三个月的时间来为我们的下一个项目来收集意见,但却成效不大。在后来的讨论中,重拾Diablo的意见与主张开始逐渐浮出水面,又经 过了几个月的恢复期后,我们忽然意识到我们不能再为Diablo的盛名所累。于是我们重又拾起原作遗留下来的大量还有待实现的构想,并搜罗了许多来自评论 界与消费者的批评建议,准备就该如何全方位地将Diablo
II做大做强集思广意,自由讨谈。
II从来也没有过正式的、完整的设计文档。当然,草案还是有的,但大部分都是全新设计的要素:四座城镇、而不是原作中的一座;五个全新的角色,个个都与原作的三名角色截然不同。还有许多新的地下城堡,砖瓦四散的广阔荒地,以及极度扩充的物品道具、魔法、技能等等。
我们希望将原作的每一个方面都加以改进。比如Diablo I中的每一个角色都只有三副看上去有所区别的盔甲,而运用了成分搭配系统的Diablo
II则能产生数以百计的不同变化;又如Diablo I里拥有特殊技能的金怪都是预先设置好的,Diablo
II则拥有一套能随机产生数百个金怪的生成系统。
我们将图形也进一步进行了改进,加强了真透明、彩色光源、以及准3D透视模式等特效。关卡加载倒和原来差不多。故事情节也比原作有大幅度强化,并有着更多尚待探索的地方。无疑,这是一项大工程。
由于我们对游戏性的雕琢已尽完美,因此我们认为在新雇佣一批人员,新开发一些可靠工具的基础上,只需要付出两倍于原作的工作量,就能制作出四倍于原作规模的新游戏。我们初步估计这份开发时间表将为期两年。
Diablo开发部由三大小组构成:程序组、角色设计组(包括一切能动的东西)、背景设计组(包括一切不能动的东西),每一组都有大约十几个人。由于游戏的策划极具开放性,因此所有的小组成员都能作出特有的贡献。
Blizzard
Irvine则主要协助网络代码的开发以及对Battle.net的支持。Blizzard电影部(也在Irvine内)则负责过场动画的制作,同时还协助故事情节的创作。
几乎Diablo II里的所有图形与电影动画都是用3D Studio
Max创建与渲染的,纹理材质与2D界面则主要用Photoshop制作。程序师们使用的编程语言则主要是C与C++,并应用Visual
Studio与SourceSafe作为版本控制工具。
Blizzard North(即Diablo开发部)的前身是1993年9月创立的Condor
Games。我们拥有的第一份合同是为掌机平台移植Acclaim公司的Quarterback
Club,我们真正引人注目的作品则是为Su oft开发的世嘉Genesis版的Justice League Task Force。同时,Silicon
and Syna e——也就是日后更名为Blizzard Entertainment的一家开发公司,则在开发同名游戏的SFC版。
Condor最后又向Blizzard提出了Diablo的构想,并在开发途中为Blizzard的母公司所收购,并将我们改名为Blizzard
North。经过这一系列戏剧性的法人与产权更迭,Blizzard
North保留下来一支非常独立自决的团体。我们的队伍增长平稳,从Diablo刚开始的12人到Diablo II开工时的24人,直至现在约40多人。
我们将百分之百的注意力都集中在努力开发游戏上。这是我们的重中之重,而为了维持这一重点不受干扰,位于Irvine的Blizzard总部则为我们打理其它诸等事宜,比如QA(Quality
A urance:质量保证)、市场营销、公关、技术与客户支持、还有Battle.net服务器的运营。我们的母公司Havas
Interactive,则主要负责处理商务运作,比如销售、制作以及帐目清算等。
1. 星星仍是那颗星星
无 论是关于Diablo的任何前瞻或回顾,都有一个不变的主题,那就是我们没有改变任何事情,它们(特指1代和2代,下同)非常相似。我们只保留了前作中不 到百分之一的代码与图画。我们重写了图形引擎,更改了所有的人物种类与技能,对游戏设定也进行了大幅改换与扩展,重做并增加了大批魔法道具,仅只保留了少 数前作中我们所钟爱的怪物,同时还设计出了大量新奇的游戏要素,譬如奔跑、雇佣兵、左键技能设定、以及随机金怪等.
难怪当时每一个玩过2代的人都会说它们其实并没有什么区别.不管是游戏测试员还是评论家们都坚称2代给了他们几乎和前代一样的乐趣.对于这样观点,我们最后也只有姑且当作是一种褒扬吧!
Diablo的前代和2代都有一点是坚 持不变的,这就是简单的乐趣,这种简单乐趣是如此的基本且显而易见,以至于在任何评析与回顾文章都未见提及,但是它们却绝对是成功的基础.我们可以用这样 一个术语,即杀怪/报偿来描述Diablo最基本的游戏性.这一术语说的就是玩家需要不断地杀怪,以获取宝物与经验值.
但这还不是关键,为了使玩家们保持持续 游戏的兴趣,我们还提供了一系列的目标任务以及与之而来的成就感.具体来说就是在游戏中的任何时候,都会有一个将要完成的任务,一个即将抵达的传送点,下 一个快要升满的级别,或是一个几乎快被清扫干净的地牢,等在玩家的面前,以诱使他们继续乐此不疲地玩下去.
简单的说,我们试图令游戏的每一个方面都要具备趣味性,连移动物品栏中道具的音效也不能忽略.此外,被杀死的怪物也要死得壮观,死得别致——对了,就像pinata(一种塞满礼品的布偶)被打爆时糖果四溅的壮丽景象(如右图图).
我们力求让玩家总是处在一个即将取得重大突破的边缘——或者说处在一个只需轻点几下鼠标便能获得绝妙体验的往返循环中.
II还保留了前代的随机关卡生成,怪物与宝物的设定.显然,这为游戏带来了更出色的可重玩性,同时也使得每一位玩家的游戏体验都各不相同.玩家们会觉得他 们对于游戏的历程拥有绝对的支配权,是在他们自己的亲手推动下,故事才会得以发展下去的.将你在游戏中的特别经历在朋友面前炫耀是一件很惬意的事情,因为 你知道他们不可能和你遇到同样的经历.只依靠网上的攻略而不通过自己的努力,是永远也体会不到这一切的.
最后,Diablo与Diablo
II都非常简单易玩.开个玩笑,连我
的祖母都能轻松掌握游戏的要领,而不必看什么说明书,我们姑且将其称作Mom
Test(妈妈测试).如果一部游戏连***物品都会令新玩家感到为难的话,那我们是不是应该检讨一下自己呢?总之,我们暴雪公司是尽可能地将游戏界面设 计得简单透明的.想打开一扇门?点击鼠标左键!想移动到某个特定区域?点击鼠标左键?想攻击一只怪物,捡起一个物品,或是与某个NPC谈话?还是点击鼠标 左键!怎么样,举一反三,就是这么简单.但令人惊异的是,还有很多游戏并非如此简便,而是需要大量的不同操纵与组合键来达成这一切指令.
2.Blizzard的开发程序
Blizzard的开发程序保证了游戏 的品质.由于我们的目标是创造具有里程碑意义的作品,因此我们得到充足的允许,可以一直等到确保游戏的品质毋庸置疑后,方才推出.我们知道不是所有的开发 者都有得到如此优待的,但是,我们在开发过程中所采用的一些特别方法却是在任何开发环境下都能适用的.
首先,我们要尽可能地使游戏在开发阶段 内就可正常运转.我们首先就要确使一个角色能在屏幕上四处移动,并能砍怪.因为这也正是玩家在游戏中大部分时间所干的事情,而且它还得必须让人感到乐趣. 在整个游戏的开发过程中,我们一直坚持不懈地对游戏的操控,回馈及路径控制等方面进行仔细雕琢.
最 重要的是,这一做法可以使我们找出其中哪些才是真正有趣的,哪些则是繁琐和厌烦的,对于前者,我们要更进一步发扬,对于后者,我们则要努力修正或是拿掉. 举个例子,很早我们便发现当玩家在面对一大堆相同的怪物时,难免会略显枯燥.这就给了我们的改进的机会,我们打算加入更多死亡时的音效,并给每一个怪物都 额外加上更多的攻击方式.假如我们没有在这期间如此深入地体验游戏,那么最后游戏战斗场景很可能就会令人感到重复无聊.
此外,我们还一直坚持不懈地对游戏的各种特性进行反复的评估.即使到了游戏开发接近尾声的时候,如果我们发现了有什么方法能使游戏更加出色,我们都会毫不犹豫的去实现,哪怕这意味着很繁重的返工工作量.以游戏中的某个装备Bone
Helmet为例,我们并不欣赏它的第一稿设计图,虽然它早在一年多以前就已经设计定型,但我们还是义无反顾地决定重头进行设计——尽管这花费了我们四个美工师,还有数周的时间.
甚至在离预期的beta测试前还剩几周的时间,我们都还决然而然地将ACT
IV的关卡设计案忍痛弃之,因为这些关卡显得有点太过空旷与相似了,以至于到最后一分钟,我们都还在为设计出更好的关卡而奔忙着.
可以这么说,Diablo
II是四十多名暴雪员工历经三年努力才砺练而成的呕血之作,本质上,我们是在完成了两到三部游戏的工作量的基础上,才最终精制而成这一效果最好的终极成品.
Diablo的成功,另一个重要原因在于我们开放式的游戏开发过程.我们招募员工的唯一标准就是要真正热爱游戏,而我们所制作的游戏首先一条
标准就是要征服我们自己.小组的每一名成员都要参与到游戏设计的所有方面.会议厅或是午饭时间的讨论会成了诞生重大构想的重要场所.
你 一定难以想象,闻名遐尔的宝石镶嵌武器升级系统这一构想,最初竟是一名程序师向我们的策划提出的.还有一名作曲人因对怪物青蛙(应该是ACT
III中的吧)的最初造型不甚满意,而促使我们将其重新设计.作为一支开发团队,我们需要了解的,不仅仅只是我们的观众在想什么,因为我们也可以把自己当 作观众.如果连我们自己都对自己的作品兴致盎然——尤其是在经过两年的反复试玩后,它还不会使我们感到厌烦的话——那么这部游戏就一定能获得成功.
3.技能树
可以说,我们最具创新意义的构思便是角色的技能树了.一名角色如果想要掌握更多的强力技能,那么他(或她)必须掌握一定的先决技能.同时,技能树的不同分枝决定了角色的不同能力属性,只要选定了一个修行的方向,便会锻造出一个独一无二的角色.
在游戏开发之初,我们本打算沿用 Diablo
I的技能模式:即角色是通过找寻并阅读魔法书来学习新的魔法与技能的.但后来我们还是决定要有别于所有三个角色都能同样习得28种魔法的Diablo
I,而是为五个新角色的每一位都准备一组单独的16大技能.相对于前作,这显然是一大进步,但是这同样会导致很多问题,比如选择同一名角色的不同玩家到最 后还是会因为习得了所有的技能而显得千篇一律,又如某些玩家很可能会用一名高等级的角色来为其它的角色寻找魔法书,这显然使玩家得不到分别升级每一名角色 时所特有的体验.好在技能树解决了这些问题.
技能树的创意借鉴于策略游戏中的科技 树.在某些策略游戏中,玩家必须一层一层地往上攀升科技树,来发展更高级的兵种.我们将这一构思借用到Diablo
II中角色的技能提升上:每当他们获取了一个新的技能点数,便可将其用以研习新的技能,或是用来加强一个旧的技能.玩家既可以广泛地发展各项技能,也可以 专门研习少数几项技能.对于那些你可能不会选择进行研习的技能,我们也没有放弃,因为你只有先掌握了这些技能后,才能攀升到技能树上更高的级别.
技能树的最后一个功效在于:如果一名玩家选择的是一名专攻Poison
dagger(淬毒匕首)技能并辅以诅咒系的亡灵巫师的话,那么同样选择亡灵巫师的同伴就可以专攻召唤系魔法协同作战,而不必再去研习任何诅咒系魔法.Diablo
II的生命力就是在这样无止境的策略组合中得以延续的.
4.品质担保
要测试Diablo
II这样一个具有高度随机性,并包含几无止境的魔法技能及装备的游戏,无疑需要付出极大的努力.尤其是在最后决战Diablo的颠峰之战前,如果不将整个 过程从头一路打下来,那么是很难掌握游戏的平衡性的.因为我们根本无法预知玩家在实际游戏中会选择怎样的装备,会研习怎样的技能.这就意味着我们必须将每 一名角色的每一种装备技能的可能组合,都进行20或30个小时(因为要从头打到尾)的冗长测试.
而 一旦当我们调整了游戏的掉宝率或是经验值增长率时,我们又得将以上测试再全部重头来过.如果再将多人游戏模式与不同的难度模式考虑在内,那么情况还将进一 步复杂化.再举两例:如果在一支队伍中,有五个圣骑士,并且每一个都使用不同的防御光环时,会是个什么情况呢?又如,为了验证一个专攻火系的女巫是否能在 地狱级难度中生存,我们还要进行100多个小时的测玩.
QA测试小组专门开发了一套专门记录bug报告的网络资料库,在这套资料库中,我们将所有的bug,平衡性方面的问题,以及关于游戏性的意见都分门别类整理好.最后,在这份清单上排满了8300多个问题与意见.
有条不紊的测试小组为了应对游戏的各个层面,又被细分为多个不同小队,分别主抓角色技能,物品功效,怪物种类,怪物数量,以及具有无穷变化的随机关卡生成系统的测试.这些努力使得QA部门的成员们成了非常出色的玩家和敏锐的观察者.一切工作都比我们在开发Diablo
I时还要顺畅.
5.全世界同步发售
过去,Blizzard的发售策略是:当游戏英文版一经压盘后就马上送上北美零售商店的货架.以Diablo
I为例,我们进厂压盘的时间是在1996年12月26日,而某些商店则在30日便摆上了货架.而在Diablo之后,随着世界其它各地的玩家越来越多,使我们对Diablo
II的期望值也越来越高,我们满心预计未来Diablo
II的销量中将有一大半会来自北美以外的地区.正由于有如此庞大的非美国消费群,因此我们作出了具有重大意义的决定:在美国和世界其它地区同步发售Diablo
II,这不仅是出于产品本身的考虑,更是为了使我们的所有消费者都能够满意.
如果我们先在美国发售,那么世界其它地 区的消费者肯定等不及好几个月之后我们才将本土化版的游戏在当地推出.再加上国际互联网的兴起,全世界的玩家基本上都能在游戏于北美上市后同步了解到其详 情.这样他们就有可能通过各种手段暗地里先行购买美国版,甚至是盗版.这样,当我们在当地版时,他们很可能就没有什么兴趣了,这是我们不愿意看到的.而 Diablo
II的全世界同步发售的举措将使我们的市场营销与公关部门可以集中全部精力,全力投入到上市后的第一周就可以了.当然,全世界同步发售是一项相当庞大而复 杂的系统工程,但是为了使Diablo
II获得巨大的成功,这样做是完全值得的.
1.开发新版Battle.net.
我们一直都为Diablo I能成功
搭载了Battle.net而骄傲.就在Diablo
I上市数月之后,Battle.net很快便成为最大的网上游戏服务器.以至于到了Diablo
II上市的时候,Battle.net的在线注册用户已经超过了600万.
为了Diablo
II的在线模式能够获得成功,我们必须抛开Diablo
I的成功经验,因为我们知道这两者完全不可同日而语,必须进行彻底的改造.正如我们所预计的,这项改造工程成了游戏开发过程中我们所面临的最大挑战.我们 必须以现有的技术为基础,再添加最新的程序及特性设置,彻底地更改Battle.net的架构.这是一项牵一发而动全身的浩大工程,我们开发组的所有成员 都参与进来,对游戏的每一个方面——程序,硬件,带宽,资源,网上支持,以及我们所能承担的财力支持——进行全方位的重新斟酌.
虽然最初的Battle.net因为 Starcraft的缘故作了进一步的改良,譬如增加了聊天室与安排比赛的服务器,但是对于Diablo
II来说,还需要对游戏服务器作更多的改进,比如增加能够正常运转的Realm国度,安全可靠的存放角色资料的服务器,以及游戏追踪系统等.要将这些东西 硬塞进现有的Battle.net系统中最后被证明是很困难的.举个例子,我们原打算将具体的角色名显示在Battle.net中的玩家身上,但在经过长 时间研发的最终系统中,用户的角色名虽然可以显示出来,但要发送私人信息给某一名玩家时却需要输入他的帐户名.
我们本来以为以原有的Battle.net为基础进行改进会节省时间,但没想到,后来我们才知道这种将各类技术混合运用的做法其实是非常困难的,在某些案例中,重新编码
其实要比部分更改更要划算一些!
2.推出新版Battle.net.
随着Diablo I一起而大获成功的Battle.net同时给我们留下了一个新的挑战,当Diablo
I刚刚发售时,Battle.net还只是一个新鲜的事物.不过随着用户的增多,我们对于服务器的经验也越来越丰富.当Diablo
II发售时,Battle.net已经拥有了上百万的用户.我们都很清楚,人们对于Diablo
II的期望值比我们其它任何游戏都要高,我们也明白还没有哪家公司曾经尝试过架设如此庞大的服务器.
因此我们为了准备Diablo
II版的Battle.net的初次开张,花费了数不尽的时间.我们联系了世界上最好的ISP服务商,并在国内外进行了数月的Beta版测试.我们还为 Battle.net能够与用户的硬件配置与带宽相匹配作了大量的努力.最后我们还专门强化了我们的Battle.net,QA,以及技术支持部门.
虽然参与Diablo测试的玩家超过了 10万,但是最终的上百万实际用户远比这复杂.Beta版的测试非常成功,因为它暴露了很多稳定性方面的问题,这样我们就能有机会在商业版上市前着手进行 解决.在游戏最终上市以后,我们所遇到的问题仅仅体现在如何应对更多的用户群方面.这类问题显然只是区区10万人的测试所无法暴露的,因为游戏的实际玩家 数量远比比这多得多.
在算出Battle.net所能达到的 大致规模后,我们采取了正确的方法来解决日益增长的用户群所引发的种种问题.比如,我们继续保持我们的两支队伍——程序员小组与整支QA部门——不变,以 解决玩家们所遇到的各类问题,同时我们的技术支持小组每天也在加班加点地工作.我们同时还计划在适当的时候提高Battle.net的硬件适应性与带宽流 量.
从某种意义上说,我们成了Diablo
II大获成功的牺牲品.我们低估了游戏的销售盛况,我们也低估了Battle.net对于玩家们的致命吸引力.也许正是因为解决了Diablo
I中的***问题,并为Battle.net加入了更多新特性——比如在聊天室里显示出所有的在线角色——后,我们才吸引了比我们以往作品都要多得多的Battle.net玩家.
就在Diablo
II上市前不久,我们注意到了某些消费者的回馈信息.关于游戏的画面,他们经常提到的形容词是过时的,或者是粗糙的.令人羞愧的是,也许是由于我 们所采用的开发技术不合时宜,掩盖了我们的美工们为游戏所作出的杰出努力.本来我们是付出了巨大努力的,对游戏中的角色,怪物以及场景都进行了精心的雕 琢.并在游戏同屏显示的要素多得超乎寻常的同时还保持了简单明了的操纵方式.然而,还是出现了这么多的负面反馈,我想我们也许当初应该能做得更好一些.
当我们于1997年中期开始进行Diablo
II的美工构图时,我们就研究了多种方案.我们本来打算用伪3D引擎与立体象素系统进行开发.但很快我们又重回Diablo
I的老路,以640*480的2D图像(8位色深)进行开发.因为在当时那个时代,这仍旧是在同一屏幕中,在不牺牲任何细节效果的前提下,能一次性显示8名游戏角色,30个以上的怪物外加100多个***的唯一方法.
人们对于游戏画面的批评令我们很吃惊.但甚至到现在,我们仍旧认为游戏画面其实是非常不错的.也许我们应该采用画面缩放技术,加入更高的分辨率,以充分发挥高配置电脑的优势.但不管怎么说,Diablo
II也许将是我们最后的一部2D游戏.
在开发Diablo
I的过程中,我们没有任何自己的专利开发工具.所有的背景画面都是我们亲手裁剪的.角色的造型也是利用普通商业软件铸造的.关于魔法与怪物的平衡性修正也都是以口头的形式随意而为之——比如就像这样:喂,请把闪电魔法的伤害力调低10%.但Diablo
II的广博显然不能如此率性,它需要更多更好的开发工具,当然我们制作了一些,但还远远不够.
在很多情况下,我们制作开发工具只是为 了加快进度赶工,随后就弃之不用了.更多的时候,我们一直使用的都是非常初级的开发工具,因为我们总想着游戏就快要完工了,而不用再费太大的力气对这些初 级工具进行改进.然而,这种想法在大部分情况下显然是错误的,因此最后我们还是不得不在剩下的一年多时间里进行长时间的改进.
我们的开发工具最大的不足之处在于它们 不能在我们的游戏引擎内部运行.我们既不能预先浏览怪物在场景中的真正模样,甚至连它们如何移动都看不到——除非直到程序师为其注入AI程序为止.更有甚 者,我们的美工往往需要在经过激烈的争论之后,才能看到他的成果在游戏中的实际体现.至于我们的音响师也因为为游戏的***I动画配曲而煞费苦心.
开发工具的缺陷,导致了我们做出了大量的无用功.比如美工师往往在最初的设计定稿数月之后,不得不又对某些怪物及缺失的部分场景重新进行绘制.
我们本来应该使开发工具能够在游戏引擎里直接运行的,但没有能够做到.我们的美工本来应该能够进行更有效率的开发,但也没有做到.反思起来,这些在开发工具调试上所花费的额外时间本来是可以用于提高游戏品质上的.
4.游戏的存盘
虽然我们试图开发一款自由度超高的游戏,但是Diablo II的存盘方式却遭到了某些玩家的诟病,和Diablo
I单人模式的普通存盘方式——即可以随时随地,随心所欲地进行存/读档——所不同的是,我们更多地参照了Diablo
I多人模式下的存盘方式.在Diablo
II中,存盘受到了极大的限制.每次当你重新读档时,游戏程序都会重新设置怪物与宝物的位置.而玩家所扮演的角色也会出现在最近的村镇里,而不是他(她)上次离开游戏时所处在的荒郊野外或者某个地下城里.
尽管这样的设置在我们的办公室内引起了 某些争议,但它无疑有着许多的优点.首先,玩家不会被某个过不去的难关所卡住.因为无论何时,只要你重新读档进入游戏,你都能够进入之前已通过的区域里和 你已经杀死过的,但现在又被程序复活的怪物再度战斗,以获取更多的经验值与宝物,直到将你的角色培养到一定程度为止,那么先前的难关就不在话下了.
同时,我们还特意开发了一套传送点(waypoint)系统,以方便重新进入新游戏的玩家,能迅速回到他之前离开游戏时所处的地点.因此,寻找新的传送点也成了游戏过程中玩家必须达成的一个小目标.
此外,我们的存盘方式还纠正了那些具有 侥幸心理的玩家的游戏态度,这些玩家通常喜欢在某些难度较高的战斗前先行存盘,然后反复地进行被杀-读盘重来这一程序,直到某一回侥幸通过为止.最 后,在单人游戏模式与多人游戏模式中采用同样的(同时是多人游戏模式所必须的)存盘方式显然能减轻我们的工作量.
当然,也有很多玩家并不喜欢这样的存盘 方式.因为他们觉得每次都要重新通过相同的区域,杀相同的怪物,实在很不方便.对于某些在发现自己所选择的专攻技能及购买的装备不能令人满意时,便喜欢读 档重来的玩家来说,更是不便.但是为了最终的效果着想,我们不能,也没有时间再进行改变了..
好在,一切事情都在向好的方向发展.在 我们内部,最初对于采用过场电影动画的方式来讲述这样一个原创却又老套的故事,还有所争议,但最终我们还是成功了,游戏中过场动画的技巧与品质之高,无疑 代表了一个新的标准.我们的营销与公关部门也出色地完成了自己的本职工作,他们为游戏的推广作出了不可磨灭的贡献.游戏的音乐也同样非同反响,再辅以各式 各样独特的音效,共同营造出了强烈的游戏氛围.
Diablo II的开发史就是一部传奇的个人成名史.我们有足够的自由和发挥空间,来开发我们心目中的游戏——当然也是首先能令我们自己着迷的游戏.
II是一部伟大的游戏,一部直到今天我们中的许多人仍在每天乐此不疲的游戏.游戏上市之初的销量是惊人的,相关的游戏评论也在逐渐向好的方向靠拢.可以说,Diablo
II的开发,使我们获得了大量宝贵的经验,它将有助于我们今后作出更好的作品.
II的开发过程中,唯一重大的不利方面在于,它的开发工作量实在是太大了.整整一年的最后调试期,使我们难堪重负,生活质量大幅降低.因此,在我们未来的开发计划中,我们最大的挑战就是在避免体力透支的前提上,如何能保证开发出像Diablo
II这样的巨作.要达到如此成效,我们首先应当寄希望于我们过往的经验能够帮助我们更好地掌控开发进度以及分配工作量.此外,我想我们还应该花费一定的时间制作出更好的开发工具,磨刀不误砍柴功嘛!
虽然我尽量避免在这篇文章中加入过多的个人感***彩,但是我还是要说我为整支开发小组感到无比的骄傲.少了小组任何一名成员的惊人努力,Diablo
II都不可能达到今天这令人难以企及的高度.最后,我谨代表自己以及所有喜欢Diablo
II的玩家,向为这部游戏作出了巨大贡献的整个小组,致以最崇高的敬意.
| 文章分类 (7) (2) (1) (3) (0) (1) (1) (1) (1) (4) (1) (2) (1) 文章存档 最新文章评论 2011 Baidu一个帐号,并以此
,以浏览更多精彩内容,并随时发布观点,与大家交流。
, 昨日:
, 会员:
-≡ 最新图片 ≡-
-≡ 最新发表 ≡-
-≡ 最新回复 ≡-
-≡ 最新精华 ≡-
论坛所有公告都在此发布 请勿发放除公告贴之外的贴
1 小时前
最新 最快 最全的焦点新闻 尽在 最新热点新闻 版块里
8 小时前
分区版主:
一个游戏离不开大家的支持 一个好游戏更离不开公会的支持 请申请合作公会的朋友到(公会申请专区)发帖申请 我们会以最短的时间联系你
4 天前 15:02
会员大厅是大家交流的一个家 请大家发帖到指定的版块 如:发新手报道 请发到(新手报道专区) 感谢大家的支持 你有的支持【缘梦联盟】更加精彩
子版块: 378
29 分钟前
发放各类网络游戏,网页游戏的激活码 新手卡 请勿发其他贴,如果你需要其他游戏的激活码,请到需求激活码处发帖申请 多谢大家合作哦
子版块: 147
前天 15:43
主题: 31, 帖数: 66
最后发表:
主题: 26, 帖数: 94
最后发表:
主题: 45, 帖数: 144
最后发表:
主题: 48, 帖数: 125
最后发表:
主题: 26, 帖数: 57
最后发表:
主题: 23, 帖数: 58
最后发表:
主题: 35, 帖数: 77
最后发表:
主题: 58, 帖数: 236
最后发表:
主题: 73, 帖数: 281
最后发表:
主题: 80, 帖数: 290
最后发表:
主题: 38, 帖数: 140
最后发表:
主题: 41, 帖数: 143
最后发表:
主题: 78, 帖数: 321
最后发表:
主题: 63, 帖数: 249
最后发表:
主题: 82, 帖数: 265
最后发表:
主题: 82, 帖数: 303
最后发表:
主题: 72, 帖数: 195
最后发表:
主题: 30, 帖数: 81
最后发表:
主题: 45, 帖数: 148
最后发表:
主题: 76, 帖数: 204
最后发表:
主题: 43, 帖数: 122
最后发表:
主题: 38, 帖数: 140
最后发表:
主题: 63, 帖数: 214
最后发表:
主题: 47, 帖数: 94
最后发表:
主题: 26, 帖数: 62
最后发表:
主题: 24, 帖数: 62
最后发表:
主题: 800, 帖数: 1752
最后发表:
主题: 43, 帖数: 110
最后发表: 主题: 67, 帖数: 227
最后发表:
主题: 55, 帖数: 261
最后发表:
主题: 77, 帖数: 272
最后发表:
主题: 98, 帖数: 290
最后发表:
主题: 102, 帖数: 257
最后发表: 40
昨天 07:09
最经典 最新的单机游戏与大家见面啦 大家有福享受了
昨天 04:21
主题: 74, 帖数: 236
最后发表:
主题: 42, 帖数: 202
最后发表:
主题: 82, 帖数: 196
最后发表:
主题: 59, 帖数: 188
最后发表:
主题: 55, 帖数: 196
最后发表:
主题: 72, 帖数: 242
最后发表:
主题: 56, 帖数: 179
最后发表:
主题: 48, 帖数: 189
最后发表:
主题: 27, 帖数: 151
最后发表:
没有你做不到的 只有你想不到的 所有广告都是免费 不删除 只限在本板块哦
前天 15:12
游戏厂商全方位介绍 宣传 欢迎各大游戏公司前来合作 请申请合作的在 (厂商申请专版) 发帖申请 我们会以最快的时间联系你
7 小时前
前天 23:09
前天 15:37
3 天前 06:17
1 小时前
3 天前 20:40
明星最新动态 娱乐新闻八卦 游戏活动发布尽在娱乐中心
2 小时前
你想让你的游戏及产品得到有力的宣传吗?快来(游戏推广)让大家都知道你
昨天 23:37
想让更多人了解你?快来(外交中心)
子版块: 214
9 小时前
【缘梦联盟】管理中心 处理所有大小事务 有事请发到指定的版块
子版块: 292
1 小时前
友情链接
【缘梦联盟】网游公会 缘你一个游戏梦想
189社区资源免费共享
全国电信 移动 网通 游戏点卡及其他点卡在线秒充
最新网游 网页游戏
想要友情链接的请点此处申请
- 最高记录是
请稍候...
本服不送点卷 装备 设置的半PK服 采用独享的 ......
公告:最新魔域世界 明天火爆测试 QQ群6116 ......
中国新闻网2008年12月在家中谜一般死去、数日后才被发现的女星饭岛爱。尽管第二年***局宣布病 ...
故事讲述的是一对夫妇为在上海买房子而经历的艰辛故事,但这个电视剧完全跑题了,变成为一部漂亮 ...
[ 23:37]
[ 14:00]
[ 13:04]
[ 14:54]
[ 13:16]
[ 16:53]
[ 13:22]
[ 15:20]
[ 13:08]
[ 15:52]
[ 17:20]
[ 02:06]
[ 02:05]
[ 20:17]
[ 17:59]
[ 14:57]
[ 13:49]
[ 13:36]
[ 12:17]
[ 11:25]
[ 06:51]
[ 02:10]
[ 02:09]
[ 02:08]
[ 15:31]
[ 14:54]
[ 13:52]
[ 13:39]
[ 08:41]
[ 18:01]
[ 18:01]
[ 15:37]
[ 15:36]
[ 11:08]
[ 07:09]
[ 08:25]
[ 02:06]
[ 15:02]
[ 00:59]
[ 00:59]
[ 17:34]
[ 22:32]
[ 22:42]
[ 17:35]
[ 20:55]
[ 19:54]
[ 14:03]
今天小哥给大家带来,本人在《蛮荒》中的刺客秀!作为一个人热衷刺客这个 ...
大家好,我是美美,不是郭美美,你们可以叫我美美姐。今天被小蜜软磨硬泡 ...
爆炸性新闻哈,在我们的千呼万唤下,昨天,中国红十字总会官方微博于昨晚 ...
你们听说了吗?上周,刚通过了修改了《个人所得税法》的决定,修改之后工 ...
这几天不知道你们有没有关注,温州市瓯海区职业中等专业学校09旅游班的毕 ...
猛然回首,哥已经在游戏圈奋斗了10年,今天就来给自己一个总结,回忆一下 ...
2010年11月15日
上海 长风公园购物街    -“老板,这盘云之遥能不能玩?” ...
[b]汉化发布作者:泛游系+游趣星+α联合汉化组[/b]游戏名称:重装机兵3游戏原名:メ ...
作者: 17173.comATLUS全新作品,风格诡异的***G游戏《凯瑟琳》的游戏封面终于定稿, ...
作者: 17173.com PVP竞技场是最近的一个重要新内容,而只要有比赛,就一定会有排名 ...
《仙剑奇侠传5》公布最新消息,男性主角放出,同时放出的还有角色的Q版造型和多幅壁纸 ...
 日本索尼电脑娱乐(SCEJ)将推出的PSP《白骑士物语 携带版 多古玛战役(白骑士物语-epi ...
目前所有系统运行不能。来自A9的消息,破解大神liquidzigong已经破解了该游戏,破解补 ...
不用下载 打开网页就可以玩本论坛帐号直接进入或直接点击导航里的 网页游戏 就可 ...
本论坛帐号直接进入不用下载 打开网页就可以玩或直接点击导航里的 网页游戏 就可 ...
不用下载 打开网页就可以玩本论坛帐号直接进入或直接点击导航里的 网页游戏 就可 ...
[ 18:06]
[ 11:17]
[ 16:22]
[ 00:39]
[ 22:33]
[ 13:15]
[ 19:54]
[ 17:56]
[ 02:31]
[ 03:02]
[ 23:45]
[ 05:12]
[ 08:44]
[ 14:59]
游戏名称
欢迎新会员
用户数:15081 ,
您在本页面逗留了
Proce ed in 0.043272 second(s), 2 queries, Gzip enabled
Powered by
2001-2010

参考资料

 

随机推荐