- 博客(36)
- 资源 (4)
- 收藏
- 关注
原创 吴涛作品介绍-易语言和VOLCANO 3D游戏引擎
易语言是一个自主开发,适合国情,不同层次不同专业的人员易学易用的汉语编程语言。VOLCANO是一款MMORPG(大型多人在线角色扮演)3D网络游戏的开发引擎,用作支持用户快速并简单地开发具有真实游戏环境和丰富游戏玩点的游戏。
2014-08-26 17:15:45 14169 18
原创 2014-8-25 易难为易
我很少在学术和人品上都对一个人非常敬佩,但是张效祥老师例外.现在想起他2004年为易语言题的"易难为易"四个字,真是精辟.这四个字有很多种不同的解读方法,回味起来其意无穷啊.
2014-08-25 12:14:13 1508 10
原创 2014-8-15 精确随机掉落
这个标题是否有些矛盾,又希望随机掉落,又希望精确掉落,是不是不好理解?实际上在游戏经济系统中,这个算法是必须实现的,意思是: 相对个体玩家,物品掉落是随机的, 但是相对整个服务器,所掉落的物品总量和总价值是精确的,这样才能达到精确控制整个游戏经济系统的目的系统,这样的物品掉落管理系统,不是简单地调用一下随机数生成就能解决的.譬如,我在表格中指定,A装备相对个人的掉率为0.1%,也就是说
2014-08-22 09:55:32 1812 8
原创 2014-8-10 掉落不简单
很多人也许认为物品掉落很简单,随机从物品清单中生成几个物品后交付即可,但是对于一个正儿八经的游戏,这么做是不行的,掉落在游戏中需要归属于"物品"服务单独管理,该服务类似游戏的出纳和会计,管理所有游戏物品和金钱的进出.场景或其它服务提出掉落请求和缘由,然后由物品服务根据该请求生成对应的出库物品包,并进行相关记录,任何其它服务都没有权利直接生成游戏物品.同样,当玩家将游戏物品归还给系统时(譬如卖店),
2014-08-22 09:54:33 625 1
原创 2014-7-11 今天加了点有意思的特性
记得在魔兽里面进山洞后,发现一堆矿工正在叮叮当当挖矿,然后发现你了,大叫一声就跑过来抡起锄头砸你,今天在做换地图准备工作时想到咱山洞里面也得放点这样的NPC吧,很轻松就把这种具有"工作"空闲状态的NPC加进去了.等有时间了,加一个类似娜迦奴隶一样的NPC,管他们的奴隶主一死马上就一哄而散,这个东西想了想,发现实现起来也很轻松.以前花费了大量的精力和时间搭设的系统架构终于发挥威力了!
2014-08-22 09:50:18 636 1
原创 2014-5-28 技能
先上图: 注意: 期间我自己客串了一下平面美工,装上了以前始终装不成功的ps,底部那两个狮子工具栏是我拼出来的:)这个图看起来简单,做出来可不容易哦.首先,这个技能列表是要在客户端和服务器端同步的,包括它们的剩余冷却时间.其次,大伙看看我的技能速查表字段结构就知道了: TEXT 技能名称 TEXT 技能说明 TEXT 技能图标文件名 INT(SKILL_TY
2014-08-22 09:42:24 553 1
原创 2014-5-18 NPC死亡这些破事
战斗做完了,做NPC死亡管理.任何东西,想起来容易,做起来复杂,尤其我的NPC是海陆空三栖的:1. 死在水中的NPC要漂浮着,死亡动作和状态与在陆地上的不同;2. 死在空中的NPC要掉下来,掉落动作好说,关键是服务器端没有场景的碰撞图,只有导航图,万一NPC飞到了下方没有导航图的位置咋办?譬如一个陡峭的山坡上方,那么现在它掉到哪里去(由于NPC无法在该山坡上行走,此处没有导航图,所
2014-08-22 09:35:35 561 1
原创 2014-5-9 知道魔兽里面战斗效果有多少吗
怪物砍一个目标有以下效果:1. 怪物发现目标会发出挑衅声音(想想魔兽里面的鱼人发现你的时候是怎么叫的);2. 如果被砍击对象材质为肉体 ,其胸口会出现飙血效果;3. 被砍击对象胸口会出现闪光效果.;4. 怪物砍之前一般会大喝一声;5. 被砍对象基本会惨叫一声(被暴击具有特定的声音,一般是惨叫得更渗人些);6. 砍击本身的声音,根据所使用武器(包括徒手也是一种)类型及目标
2014-08-22 09:29:29 606 1
原创 2014-4-11 NPC战斗那点破事
这点破事看起来简单,实际要做的东西还是蛮多:1. 侦测阶段 涉及到阵营检测,警戒范围,视线检测,仇恨列表一堆事 .如果NPC是一伙人,得互相通知一起追,如果就看见你的宠物了,就得当看见你自己了吧?2. 追击阶段 我的NPC是水陆空三栖的,OK,看见你在空中飞,够不着是不是得飞起来去赶,你在地上跑,是不是得在合适的时候落地来K你?你跑水下去了,会游泳的也得下水吧,不会
2014-08-21 13:29:18 554 4
原创 2014-3-10 继续改进导航图
一边弄战斗系统一边继续完善导航图,加入了水下导航支持,以支持水栖和水陆双栖导航,这里的水栖包括水面和水下两部分.想想魔兽的那个令人难忘的瓦斯琪尔水下地图吧,现在我的引擎也能支持了.如果我弄个鱼人NPC,现在能够和魔兽一样从陆地上追杀到水面,再从水面追杀到水底了. 我在测试地图里面增加了一块水域,以测试跨水域和陆地导航: 这是上图非框架化的显示结果:
2014-08-21 13:27:45 383 2
原创 2014-3-4 大规模无缝水陆导航图
说实话,为了搞定大规模无缝地图,我做了太多工作,譬如所配套的大规模无缝水陆两栖导航图的自动生成和使用. 这两天在搞战斗时,发现以前做的导航图有些瑕疵,抽时间改进了一下.下面做个总结:1.导航图的自动生成:
2014-08-21 13:20:28 959
原创 2014-2-13 遮挡图
一个怪物怎么决定对一个敌对目标进行攻击呢? 从现实世界类推,貌似以下解决方法最直接: 一旦进入怪物周边一定距离内,即开始攻击.但是想想这个场景: 一个怪物位于二楼某个房间,一个玩家走到一楼房间对应该怪物的下方,它们之间的距离满足了所指定距离要求,你让怪物去发动攻击,这也太扯了吧.那么采用这种方案: 利用现有的导航图,一旦怪物发现在导航图中一定距离
2014-08-21 13:17:10 431 1
原创 2014-2-11 战斗相关界面完事
别的还好说,就是怪物脚下画那个红圈稍微费了点事,需要进行向下自动贴近障碍物处理. 为此专门在引擎里面增加了一个组件,以后绘制战斗范围指示器(譬如魔兽中法师下暴风雪时指定法术范围的绿圈)就可以直接用了.顺便改写了一下MyGUI,增加了资源参考计数控制支持,不然太不方便了.下一步就是战斗状态控制器了.
2014-08-21 13:14:26 335
原创 2014-1-6 NPC巡逻
水到渠成,终于NPC巡逻做完了,算是圆了我以前的梦:)这个巡逻难点在于成组巡逻时的位置同步问题,譬如上图中的两头狼要始终和前面的领导者保持设计时所指定间距,但是如果巡逻路径不是直线,则路径线外侧的狼要比内侧的狼多走一段距离. 即时检查并随时变更速度是一个不太好的解决方案,因为涉及到服务器端和客户端同步,这样做将导致封包发送量过多,并且同步还不好掌控. 还有一个问题是: 如果巡逻组的领导者出
2014-08-21 13:10:54 440
原创 2014-1-20 NB的BUG
这两天遇到一个很NB的BUG,起初它貌似具有以下特征:1. DEBUG版本没有,RELEASE版本可能有;2. 连接本地服务器没有,连接互联网服务器可能有; 3. 互联网速度快时没有,慢的时候可能有;4. 要重启客户端几十次才可能有.这个东西快赶上我做易语言时留的防破解暗桩了... 我的代码中成千上万的ASSERT哨兵也没发现问题所在.发动老婆大人的力量 ,经过
2014-08-21 13:10:28 509
原创 2013-12-27 NPC终于整合进场景了
还是蛮有成就感的,感觉我就像一个上帝,先创建世界,再创建人物,再创建NPC,再让NPC具有灵魂.记得我以前做过一个梦,梦见我的引擎完事了,看见DEMO场景中有一个NPC带着一群NPC在巡逻,这个梦想马上就要实现了,感觉真不错.
2014-08-21 13:08:58 378
原创 2013-12-4 人物同步的复杂性
有些事情,真是要等到实际做时才知道其麻烦之处,如下图: 当玩家A的侏儒女法师望着楼梯上的玩家B的精灵战士的时候(左图),玩家B控制精灵战士向前移动.在玩家A的机器上,接收到了精灵战士前移的消息后,为了保证精灵战士的动作流畅性,开始模拟控制精灵战士向前移动,导致精灵战士从楼梯上掉了下来,从而在玩家A的机器上开始转而模拟精灵战士的下落.如果网络延迟足够大,那么可能直到玩家A机器上模拟的精灵
2014-08-21 13:04:48 511
原创 2013-11-13 The last step
引擎相关的最后一步了,这一步做完,游戏的完整开发流程就全部打通了. The magic mirror context from server to client.
2014-08-21 12:59:03 278
原创 2013-10-30 关于服务器端对象的属性
我认为每一个服务器端NPC对象,可以具有以下三类属性:1. 身体方面的特性,我是用一个vdb速查表来描述: 名称 行动类型(水栖/陆栖/空栖/空陆双栖/水陆双栖) 动物的陆地行走模式,用作客户端在动物行走时调整其身体姿态用. 对象的载具类型 对象的脚步声类型 对象的脚印类型 对象脚印的尺寸比例 动物的天敌ID(
2014-08-21 12:56:22 286
原创 2013-10-10 我的脚印
由于参考使用的是wow 60级的美术资源,所以给我造成了一些问题:1. 所导出的模型在动画事件帧中没有携带参数,从而无法确认当前是哪只脚落地; 2. 所导出的模型包括人物均没有脚部对象插槽,无法确定脚部的即时位置. 所幸我有强大无比的模型修改器软件,一一把这些东西添加上后,再使用粒子系统编辑器自己diy了一个飞雪溅出的模型,就有了下面的效果:
2014-08-21 12:49:54 321
原创 2013-10-5 魔兽火不是没有原因的
有时候真佩服魔兽世界做的细致之处,譬如: 1. 鼠标右键旋转人物朝向时人物先只是扭转上半身,直到一定角度后才彻底扭转身体. 为了实现这个,我不得不加入了对模型的直接骨骼操纵支持;2. 为了保证人物动作的流畅性,人物奔跑和人物施法是可以同时进行的,为了实现它,我又加入了模型多通道动画混合播放支持(我以后游戏的骑乘战斗没问题了);3. 动物行走时发出的声音都各有不同,分为: 轻,中,重
2014-08-21 12:46:00 479
原创 2013-9-25 人物动作形态
我们数数人物在场景中有多少种动作形态:1. 在空中飞行;2. 贴近地面飞行;3. 贴近地面行走;4. 在水面游泳;5. 在水中游泳;6. 跳跃;7. 坠落.这些状态各有各的特点,管理和切换这些状态真是愁白了我几根头发啊.
2014-08-21 12:44:17 477
原创 2013-9-20 走路,也不简单.
我们考虑一下人物在地面上行走时需要处理哪些问题:1. 自动贴近地面;2. 自动越过地面上的小孔洞,不至于掉落下去;3. 自动翻越低于其膝部的障碍物;4. 不允许走到太陡峭的正面斜坡上;5. 走到太陡峭的反面斜坡上时自动下滑;6. 走过山崖边缘自动下落;7. 碰撞到不可翻越的障碍物时自动溜边;8. 不骑马在坡上走时人物始终处于直立状态;9. 骑马在坡上走时人物
2014-08-21 12:43:15 335
原创 2013-9-5 爬楼梯,不简单
我们来看看让一个人物在wow的木质楼梯上行走所需要处理的问题: 1. 需要检查楼梯的坡度是否符合要求,过大的坡度肯定是爬不上去的; 2. 需要对楼梯进行四角射线寻底,不然人物就有可能从楼梯缝隙中漏下去; 3. 人物在楼梯上移动绝对需要进行平滑处理,不然一个台阶顿一下,能把你眼睛搞花. 4. 当然,基本的碰撞检测是必须的. 以上只是算法描述,实现过程
2014-08-21 12:39:11 322
原创 2013-5-29 场景分离器完成
将场景数据分离为客户端和服务器端两部分,建立各种服务器端数据结构,写了大概5000行左右代码. 下一步的工作就可以看得到了: world世界服务,subscene子场景服务,游戏主场景客户端. 说实话,之所以这么费劲,就是因为无缝大地图,想想啊,一个超级大的地图,可能包含了数十万个NPC,这样的地图不可能只希望交给一台服务器处理吧,万一处理不了呢?必须支持将此负载切分到多个服务,还要最
2014-08-21 12:36:01 380
原创 2013-5-2 内存池
这两天抽时间做了一个内存池缓冲类,主要用作快速分配程序运行过程中所需要的大量小块内存,做完了经过实际验证,证明效果是显著的,这是相关测试报告:世界场景设计器: 最多在内存池中同时分配的块数目(后面的8192为预先分配的缓存块总数): 394/8192 总共分配了38442次内存,其中26555次在缓存池中分配,占据69.078092%. 演示程序客户端:
2014-08-21 12:31:17 343
原创 2013-4-7 fine
花了两天时间做了一个网关路由服务,负责在所有用户网关之间进行负载均衡,相信对提供网络IO效率有很大的好处.现在的服务器配置文件网络部分类似这样了: gateway ; 用户网关1 { ; 网关所监听的ip地址 ; 如果不设置此属性值,则默认为"0.0.0.0:2013". B
2014-08-21 12:26:37 305
原创 2013-2-28 脚本
在做demo登录画面时,我想弄一头狼站在台面上助助气势,但是这么呆呆地站在那也没有意思,用C++程序播放其动画又不专业,经过一番努力,我将客户端场景脚本环境顺利地挂接进了引擎,现在通过这一段脚本即可控制那头狼了:local function PlayWolfAnim (objWolf) -- 控制狼的动画播放 while true do -- 无限循环播放
2014-08-21 12:11:53 363
原创 2013-2-17 春节玩游戏
我的引擎一直以魔兽世界作为目标,所以一直也没有去仔细研究国内的现有游戏情况,今年春节休息,啥事都不干,下载了一批国内最火的网游下来简略研究一下,总共有以下这些:网易: 梦幻西游, 天下3腾讯: 英雄联盟, DNF金山: 剑侠3巨人: 征途搜狐: 天龙八部完美: 完美世界各个游戏的基本特点:梦幻西游: 2D, 回合制战斗天下3: 3D, 即时战斗英雄联盟:
2014-08-21 12:11:14 514 1
原创 2012-12-3 服务器群组
中心服务器登录服务器网关服务器游戏服务器场景服务器AI服务器寻路服务器日志服务器账户服务器物品服务器聊天服务器.....负载均衡,linux64位编程,postgresql数据库,ssl,要弄进去的东西还真不少.
2014-08-21 11:46:27 352
原创 4年前的随笔---写出高质量程序的要点
从1990年开始写程序,到现在已经快20年了,总结出写出高质量程序的几个要点: 1、开始写之前思路越清晰完整越好。 2、写的过程中代码一定要规范一致,这样的代码便于维护和修改,这个规范一致性包含名称、格式、算法等。3、发现一处错误,立即回想有没有可能其它地方具有同样的错误(如果你遵循第2条,就能很快找到)。 4、多用ASSERT,在我的代码里面,这条语句至少占据了程序总量的
2014-08-21 11:41:57 713 4
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人