格斗类游戏和休闲类游戏不同
前阵子我开发了Match3D,
一个可以把三维动画输出成为swf的工具,
而且实现了swf渲染的实时三维角色动画,
这可以说是我真正推出的第一个flash第三方软件,
其实这以前,
我曾经开发过几个其他的flash第三方软件,
都中途停止了,
因为不实用或者市场上有更好的同类软件,
随着互联网的发展,
flash的不断升级,
我的flash第三方软件目光渐渐的从美术开发工具转移到网络互连,
web应用上面来,
如今已经到了2004版本,
flash的种种新特性让我眼前发光,
我最近在帝国的各个板块看了很多贴子,
分析里面潜在的用户需求,
总结了以下的几个我认为比较有意义的选题,
可能很片面,
flash源代码保护,主要是为了抵御asv之类的软件进行反编译和萃取
flash与远端数据库的配合,应该出现一个能够方便快捷的对远程数据库进行操作的方法或者控件,
flash网际互连,我认为flash网络游戏是一块金子,
这里我想谈谈flash网络游戏,
我要谈的不仅仅是技术,而是一个概念,
用flash网络游戏,
我本身并不想把flash游戏做成rpg或者其他剧烈交互性的游戏,
而是想让flash实现那些节奏缓慢,玩法简单的游戏,
把网络的概念带进来,
你想玩游戏的时候,登上flash网络游戏的网站,
选择你想玩的网络游戏,
因为现在几乎所有上网的电脑都可以播放swf,
所以,我们几乎不用下载任何插件,
输入你的账号和密码,
就可以开始玩了,
我觉得battle.net那种方式很适合flash,
开房间或者进入别人开的房间,
然后2个人或者4个人就可以交战了,
这种游戏可以是棋类,这是最基本的,
用户很广泛,
我脑海中的那种是类似与宠物饲养的,
就像当年的电子宠物,
每个玩家都可以到服务器认养宠物,
然后在线养成宠物,
还可以邀请别的玩家进行宠物比武,
看谁的宠物厉害,
就这样简简单单的模式,
配合清新可爱的画面,
趣味的玩法,
加入网络的要素,
也许可以取得以想不到的效果,
今天就说到这里吧,
想法那么多,要实现的话还有很多路要走,
希望大家多多支持,积极参与,
让我们的想法不仅仅停留于纸上。
——————————————————————
格斗类游戏和休闲类游戏不同,
最大的差别在于对响应时间的要求不在同一数量级上,
休闲类游戏允许很大的延迟,
而动作类游戏需要尽可能小的延迟,
服务器的作用,
要起到数据转发和数据校验的作用,
在格斗游戏设计上,
如果采用和mmorpg相同的服务器结构,
会产生较大的延迟,
你可以想象,当我打出一招升龙拳,
然后把这个信息传递给服务器,
假设有100毫秒的延迟,
服务器收到以后,
转发给其他的人,
又经过100毫秒的延迟,
也就是说,
你打出一招,对方要得知需要200毫秒的时间,
实际情况也许更糟,
这对于格斗类游戏来说是很大的,
所以现在市面上几乎没有真正意义上的多人格斗类网络游戏,
如果要实现格斗的感觉,
尽可能减少延迟,
有很多现有经过验证的方法,
比如把服务器建立在两个对战玩家的机器上,
这样就省掉了一个延迟,
或者每个玩家机器上都建一个服务器,
局域网摸使得联机游戏很多采用这种的,
比如星际争霸,它的联网模式服务器就是建在玩家主机上的,
减少网络延迟是必要的,
但是,一个平滑爽快的网络游戏,
他的客户端需要有很多预测的策略,
用来估计未来很短的时间内,
某个玩家会做什么,
这样,就可以在不等待服务器返回正确信息的情况下,
直接估计出正确的结果或者接近正确的结果,
当服务器返回的结果和预测结果的误差在很小范围内,
则预测成功,否则,可以强行校正客户端的状态,
这样做,可以尽量减少网络延迟带来的损失,
绝大部分成功的联网游戏,
在这个策略上,都花了很大的功夫,
——————————————————————
你提到的那个游戏模式是经典模式battle.net,
也就是战网,
暗黑,星际,魔兽都有战网,
你下面提到的是一个缓冲模式,
当用户发出一招升龙拳,
并不立即向服务器发送指令,
而是等待5ms(不过在网络游戏中5ms设定也许太乐观),
如果在这期间服务器下发了新指令,
与在缓冲中的升龙拳指令进行运算,
用来得到是否可以发出升龙拳的评估,
这样做是可以的,
不过实际开发过程中,
这种缓冲统计的模式,
逻辑非常的复杂,
网络游戏毕竟是在网络上玩的,
而且是多人玩的,
你如果经常上战网打星际的话,
会知道它的菜单里面有一个设定操作延迟的菜单,
高延迟的话,
你的操作会缓冲到一定的程度然后统一向服务器发出,
低延迟的话,
会尽可能的立刻把你的操作向服务器发出,
我的感觉是,
网络格斗类游戏与单机格斗类游戏是不同的,
想在网络上完美实现单机格斗游戏的内涵难度极大,
对于开发者来说,绝对是一个挑战,
我想,可以积极的考虑如何在游戏设计的层面去规避一些问题。
——————————————————————
我的最近一条谚语是西点军校的军官对新兵的训斥,
。。。。如果一个愚蠢的方法能够奏效的话,那他就不是愚蠢的方法。。
这句话简直太妙了,
我立刻删除了手中那些“完美的”代码,
用最简单的方法快速达到我的目的,
虽然新写的代码张得很丑陋,
可以说说题外话,
最近策划一直希望能够实现一个实时渲染的怪物能够时不时的眨巴眨巴眼睛
主流的想法是更换眼部的贴图,
也有使用骨骼控制眼部肌肉的方法,
同时还有其他“技术含量”更高的解决方案,
不过经过评估,实现这两者难度不大,但是需要耗费比较多的资源和制作时间,更严重点的是程序需要升级代码来支持这个新的特性,
后来,在大家集思广益之下,
有人提出了高明的办法,
把怪物的眼睛镂空,
然后在后面放一个画有眼睛的矩形,
这个矩形的正面是一个睁大的眼睛,
而反面是一个闭上的眼睛
这样,眨眼就是这个矩形正反翻转的过程,
不错,是个好方法,让人眼前一亮,
大家一致通过,
在现有技术下,这个“愚蠢”的方法解决了这个“复杂”的问题,
在有一个更有趣的例子,
看似调侃,其实折射出人的智慧,
日本人做游戏是非常讲究细节的,
他们最早做三维格斗游戏的时候遇到一个问题,
当我打出一记重拳,命中的时候,
我的拳头在画面上嵌入到敌方模型的肉里面去了,
日本人觉得不能接受,拳头怎么能打到肉里面去呢,
应该刚刚好碰到敌方的身体才行,
可是大家想想,想要刚刚好碰到,
谈何容易,
美术要求严格不说,程序可能要精确的计算,
还不一定能够满足要求,
于是高招出现了,嵌到肉里就嵌到肉里吧,
我给你来一个闪光,把有问题的画面给你全遮住,
这招可真绝,
美工,程序,策划不但偷了懒,把玩家给骗了不说,
玩家还觉得这个游戏真酷