
网游开发
文章平均质量分 63
金庆
这个作者很懒,什么都没留下…
展开
-
Fix navmesh countour
【代码】Fix navmesh countour。原创 2023-01-01 10:28:46 · 748 阅读 · 1 评论 -
How are dtLinks created in NavMesh
(Jin Qing’s Column, Nov., 2022) defines a link between 2 polygons.It is an internal data structure.A is owned by its source polygon.The links are used in , to searchall the neighbor polygons, from the current best polygon. has 2 required fields:If the l原创 2022-11-18 09:59:42 · 278 阅读 · 0 评论 -
UE4 Blueprint Multiple Event BeginPlay
Multiple Event BeginPlay(金庆的专栏 2021.7)How to do multiple actions on Event BeginPlay in UE4 Blueprints?Sams-Teach-Yourself-Unreal-Engine-4-Game-Development-in-24-Hours says:Q. When I try to add a second event node, BeginPlay, the Editor shows me the fir原创 2021-07-31 15:17:54 · 657 阅读 · 0 评论 -
第9代游戏主机
第9代游戏主机原文:Ninth generation of video game consoles2020.11,微软(MS) Xbox Series X/S 和 Sony PlayStation 5 (PS5) 发布,标志着游戏主机进入第9代。和前代的 Xbox One 和 PS4 相比,新一代主机有可观的性能提升,支持实时光线跟踪,4K分辨率,目标帧率为60。内部都使用了固态硬盘(SSD)。低配版没有光驱,仅支持网络和USB。定位上要胜过任天堂Switch和云游戏服务如 Stadia 和 Am翻译 2021-05-07 10:37:22 · 571 阅读 · 0 评论 -
Canvas Scaler 的3种模式
Canvas Scaler 的3种模式(金庆的专栏 2021.3)参考:https://wenku.baidu.com/view/83991090336c1eb91b375db8.htmlUnity Canvas 有个 Canvas Scaler 组件,用来决定 Canvas 的 Scale(缩放)值。Scale 有 X,Y,Z 3个分量,都是同一值,即在各个方向上都是同倍率缩放的。它有3种Scale Mode。因为设计时的宽高比与目标机型宽高比不同,Canvas 需要先增减为目标高宽比,然后原创 2021-03-02 11:53:33 · 513 阅读 · 0 评论 -
帧同步是否允许客户端指定命令帧号
帧同步是否允许客户端指定命令帧号(金庆的专栏 2020.10)帧同步服务器以固定的帧率收集每个客户端的输入命令,每帧打包一个命令帧,打上服务器当前帧号,然后广播该命令帧到每个客户端,由客户端执行。如果没有客户端输入命令,则该命令帧可能只有一个帧号。客户端的输入命令分2种模式:不指定帧号和指定帧号。客户端不指定帧号的模式下,客户端仅告诉服务器自己的动作,由服务器为该动作打上当前的服务器帧号,然后再广播。服务器实现较简单,只需要缓存当前帧的所有客户端输入,下一帧时全部打包广播。指定帧号的模式下,原创 2020-10-08 11:37:34 · 473 阅读 · 1 评论 -
rpc应答太快造成请求超时
rpc应答太快造成请求超时(金庆的专栏 2020.9)在压测中发现总有几个请求超时,超时时长设大也会有,而成功的请求延时远小于超时时间。查错的第一方向是查网络库中有消息丢失。跟踪所有消息,发现超时的消息应该是正常处理并返回了。于是查接收应答消息后的处理,最终找到代码:func (c *Client) onRpcRet(cbIndex uint32, ...) { ii, ok := c.callbacks.Load(cbIndex) if !ok { // logger.Errorf("原创 2020-09-17 15:57:08 · 836 阅读 · 0 评论 -
测试 tolua 例子 TestErrorStack
测试 tolua 例子 TestErrorStack(金庆的专栏 2020.9)Error1点击 “Error1” 按钮c# showStack.PCall()lua ShowStack()c# Test1()c# try { show.PCall() }lua Show() error(‘this is error’)LuaException: TestErrorStack:2: this is errorstack traceback: [C]: in function 'er原创 2020-09-03 16:27:12 · 706 阅读 · 0 评论 -
lua变量缺少local造成unity死锁
lua变量缺少local造成unity死锁(金庆的专栏 2020.9.1)这几天在开发 grpc-tolua, 可以在 unity 项目中使用 lua 发送 grpc 请求,无需生成代码.现已实现 route_guide 示例中的全部4种rpc.见:https://github.com/jinq0123/grpc-tolua昨天的开发中就发现,运行 RecordRoute 和 RouteChat 之后Unity无法再次运行,必须杀进程。在 await 语句添加 ConfigureAwait(fa原创 2020-09-02 13:34:15 · 350 阅读 · 0 评论 -
C# tolua 之间互传 byte[]
C# tolua 之间互传 byte[](金庆的专栏 2020.8)lua中不区分 string 和 byte[], 而在 C# 中 string 和 byte[] 之间转换涉及编码。C# 中一般这样转:string类型转成byte[]:byte[] byteArray = System.Text.Encoding.Default.GetBytes(str);byte[]转成string:string str = System.Text.Encoding.Default.GetString(原创 2020-08-19 09:00:14 · 2062 阅读 · 0 评论 -
Unity使用异步grpc
Unity使用异步grpc(金庆的专栏 2020.6)Unity 保证 async 方法运行在主线程中,所以用异步方式调用 grpc 可以大大简化网络通信的代码。以下示例中将 grpc 的 RouteGuide 示例移到 Unity 中运行。https://github.com/grpc/grpc/tree/master/examples/csharp/RouteGuide其中 Main() 中的代码移到 Start() 中运行,阻塞调用改成异步调用, GetFeature() 改成 GetFea原创 2020-06-22 15:17:27 · 590 阅读 · 0 评论 -
有房间匹配和无房间匹配
有房间匹配和无房间匹配(金庆的专栏 2020.4)网游的匹配可以分为2种:有房间匹配和无房间匹配。有房间匹配请求匹配即搜索并加入一个房间,或者开一个新房间。匹配过程中可以看到房间人数增加。可以列出其他房间,加入指定房间,如棋牌类大厅可以无需等待人满即开始,开始后还可以继续加人无房间匹配请求匹配即进入等待状态,匹配成功才能看到所有人匹配成功, 如人满了, 才可以进入游戏...原创 2020-04-09 14:34:01 · 997 阅读 · 0 评论 -
经典的开源免费网络游戏:planeshift
转自:http://forum.jqcq.com/viewthread.php?tid=6795经典的开源免费网络游戏:planeshift关于planeshift有必要说两句。毫无疑问,linux下确实没什么可以拿得出手的游戏,即便是如同planeshift这种画面好些的游戏,也因为开发进度太慢而无法让人满意。不过,这个背景倒是很有意思:一个洞穴世界。我稍微看了一下他们的介绍,大概了解了转载 2008-08-19 12:46:00 · 6408 阅读 · 0 评论 -
从《征途》风波谈游戏设计规范
转自Leyes的游戏设计世界:http://leyeslau.blog.sohu.com/88371294.html2008-05-25 | 从《征途》风波谈游戏设计规范 标签: 网络游戏 设计规范 征途转载 2008-09-27 12:35:00 · 1536 阅读 · 0 评论 -
Commons SCXML 中模型的类结构
State Chart XML (SCXML) is currently a Working Draft published by the World Wide Web Consortium (W3C). SCXML provides a generic state-machine based execution environment based on Harel State原创 2008-10-21 08:38:00 · 1377 阅读 · 0 评论 -
万王之王3即将推出
万王之王3官方网站网址:http://kok3.ztgame.com/ 醒来吧!昔日的勇士战斗的号角再度被吹响新时代的大门已为你敞开 出发!备好行囊,磨亮刀剑呼唤曾经一同浴血战斗的伙伴一同上路踏上那未知的战场 新时代的世界将因你而荣耀伟大的英雄啊你必将被加冕为——万王之王 《万王之王2》 转自:http://game转载 2008-11-22 13:27:00 · 1311 阅读 · 0 评论 -
log4cxx配合boost::format
log4cpp用了多年了, 一直用得很得心应手.现在做网游服务器, 日志类换成了log4cxx.log4xx会自动加载工作目录下的log4j.properties, 这一点比较好, 使用更方便了.log4j.properties应该与log4j的配置文件完全一样吧? 通用性好.其他方面两个日志类差不多. log4cxx::Logger对应log4cpp::Category.Appender, La原创 2008-11-20 19:41:00 · 2494 阅读 · 2 评论 -
C调用lua脚本的效率测试
C调用lua脚本的效率测试 以下代码以C语言为基准,测试了C调用Lua循环和循环调用Lua的效率。结论是不要频繁地穿越C/Lua边界.代码整理自:http://blog.youkuaiyun.com/Tomorrow/archive/2008/06/11/2536884.aspx #include extern "C"{#include "lua.h"#include "lualib.h"原创 2009-02-17 09:21:00 · 4290 阅读 · 3 评论 -
《万王之王3》主题歌歌词有奖大征集
《万王之王3》主题歌歌词有奖大征集http://ztg.kok3.ztgame.com/转载 2008-12-16 13:15:00 · 1679 阅读 · 0 评论 -
文化部要求巨人网络整改《巨人》游戏
"人民网讯 媒体报道上海巨人网络科技有限公司运营的《巨人》游戏中出现“洗浴中心”、“异性按摩”等功能,在社会上引发了较大反响"-- 人民网 文化部要求巨人网络整改《巨人》游戏大街上到处是“洗浴中心”,倒没听到什么较大反响。要是这个社会可以像开发人员整改游戏一样方便地整改,那该多好啊。原创 2008-12-25 09:01:00 · 1538 阅读 · 0 评论 -
Mangos的指令处理函数
Mangos的指令处理函数(opcodes handlers)(转载请注明来源于金庆的专栏)WorldSession中总共有300多个指令包处理函数, 以Handle开头, 无返回值, 参数为WorldPacket&. 例如:void HandleCharEnumOpcode(WorldPacket& recvPacket);处理函数按功能分散在多个XXXHandler.cpp中实现. 例原创 2009-04-15 17:57:00 · 1891 阅读 · 0 评论 -
9C失去Wow代理权将促进中国Mangos的繁荣
9C失去Wow代理权将促进中国Mangos的繁荣 九城发布告全体员工书 确认续约魔兽无望, 详见: http://www.cnbeta.com/articles/81930.htm 但是9C掌握了Wow的内幕技术, 这一优势如果投入到Mangos的开发中去, 那将是振奋人心的事情.原创 2009-04-15 18:37:00 · 1256 阅读 · 0 评论 -
Wow, Mangos登录时的SRP6认证
Wow, Mangos登录时的SRP6认证以Mangos代码为参考, 解析SRP6的原理和实现.(转载请注明来源于金庆的专栏)SRP全称Secure Remote Password(安全远程密码),是一个开源认证协议。SRP简化后的原理是:1. 服务器不保存密码或密码的散列值, 防止字典攻击. 而只是保存验证因子(verifier).2. 客户端和服务器可以各自计算出一个会话秘钥(sessi原创 2009-04-10 12:56:00 · 7820 阅读 · 0 评论 -
用脚本实现副本
用脚本实现副本(转载请注明来源于金庆的专栏)副本是当前网游中的一大热点, 创建出几个好玩的副本就能吸引大量的玩家.不管是PVP还是PVE副本, 原理就是对抗双方或多方的力量是可控制的, 如副本限制进入角色的等级和人数; 并且可以多个相同副本同时运行, 互不干拢,副本就像是专用的服务器.这两点在普通地图上是无法实现的, 普通地图上BOSS会被群殴,并且只有一个BOSS原创 2009-07-16 21:39:00 · 1908 阅读 · 0 评论 -
网游反外挂图形验证机制的设计
网游反外挂图形验证机制的设计(转载请注明来源于金庆的专栏)为了防止外挂的自动操作, 在适当的时候会弹出一个图形验证码, 要求手工输入正确的验证码才允许操作.例如登录时, 交易时, 有一定概率要求验证.图形验证就是随机取几个字符, 生成加扰变形图形, 发往客户端,客户端返回验证码与记录的字符一致时就算通过.可以建产一个图形验证机制, 使图形验证可以插入原创 2009-07-23 11:53:00 · 1728 阅读 · 0 评论 -
当心虚函数重载(overloaded-virtual)
当心虚函数重载(overloaded-virtual)(转载请注明来源于金庆的专栏)为网游万王之王3(KOK3)服务器添加新功能的时候, 发现某个类成员函数应该是const函数, 因为我的const函数要调用该函数, 顺手就加上了const.再顺便看到该类有好多个明显是getter函数, 所以都加上了const.编译没错就提交了.结果没多久测试就发现了新版本的一个错误, 表现在其他功能上, 但由同原创 2009-05-22 14:00:00 · 7587 阅读 · 0 评论 -
多角色控制系统
多角色控制系统(转载请注明来源于金庆的专栏)网游中的多角色控制系统(Multi-character Control, MCC)就是你可以同时控制多个人物进行战斗.卓越之剑(GE)就可以控制最多三个人物进行战斗。目前的网游都是控制一个角色.想要控制多个角色可以多开,即同时开多个游戏客户端,每个客户端登录一个角色.多开的麻烦是需要切换窗口.对于3D网游来说,原创 2009-09-10 13:27:00 · 1977 阅读 · 1 评论 -
Boost Serialization在网游中的应用实例
Boost Serialization在网游中的应用实例(转载请注明来源于金庆的专栏)网游中需要在客户端和服务器之间传递多个字符串, 字符串的个数不定, 各个字符串的长度也不定.对于长度变化不大的字符串, 可以用最大字符串长度:struct MyCmd : public Cmd{ WORD wNumber; BYTE aStrings[M原创 2009-09-21 13:27:00 · 1500 阅读 · 0 评论 -
网游防刷指令攻击的设计
网游防刷指令攻击的设计网游外挂可以重复发送某些指令,造成服务器CPU占用或带宽占用,这类攻击称为刷指令.最简单的如聊天广播. 不需要特殊的外挂, 只需在客户端全域或区域喊话, 该聊天信息就会广播到所有客户端, 占用许多带宽. 一般需要通过限制聊天的间隔时间, 或者收费来防止刷屏聊天.其他指令也需要这种防刷措施. 防刷指令应该做成一个通用机制, 控制所有指令,原创 2009-09-22 17:43:00 · 1758 阅读 · 0 评论 -
广播游戏
摘自: 传说中的战网2.0 超强功能集锦及猜想http://hi.baidu.com/%CF%C4%D6%E7%BE%AA%D5%DD/blog/item/85075cf44c587269ddc474d5.html广播游戏 两个(或者多个)玩家打算进行比赛,同时连接到一个广播服务器上,服务器记录下他们比赛中所有的指令,然后传送给想看这场比赛的人。数据的传送不可以影响到比赛的玩转载 2009-10-14 13:11:00 · 1117 阅读 · 0 评论 -
C++引用优于指针
C++引用优于指针(转载请注明来源于金庆的专栏)在KOK3服务器的崩溃错误中, 十有八九是由空指针引起的.在C语言中, 空指针确实是错误的一大来源, 到处是空指针判断, 可还是会有漏网的.在C++中, 空指针错误可以大大减少, 方法就是尽量使用C++的引用代替指针.void foo(A* pA){ BOOST_ASSERT(pA);原创 2009-10-26 09:27:00 · 1603 阅读 · 4 评论 -
网关按区域聚集玩家
网关按区域聚集玩家(转载请注明来源于金庆的专栏)目前网游系统中的网关只发挥了隔离内外网和转发的功能, 至少征途和KOK3是这样.按照尹红春的设计构想,网关还有个区域聚集功能. 区域聚集是这样的意思: 场景中的许多事件都是区域内广播的, 如角色或NPC的移动, 攻击, 状态变化, 场景服务器不必直接向该区域内的所有人广播,而是只需向网关广播, 然后由各网关向该区原创 2009-11-06 10:41:00 · 946 阅读 · 3 评论 -
利用惯性和加速度进行网游位置同步
利用惯性和加速度进行网游位置同步带宽限制下的视觉实体属性传播(Propagation of Visual Entity Properties Under Bandwidth Constraints)(http://blog.youkuaiyun.com/lfhfut/archive/2008/03/02/2138512.aspx)一文中使用滞后补偿时间(LCT, Lag Compensat原创 2009-10-30 15:56:00 · 1515 阅读 · 2 评论 -
用agent统一玩家与NPC
用agent统一玩家与NPC(转载请注明来源于金庆的专栏)以下是“Open Grid Protocol”中的agent定义:( http://secondlifegrid.net.s3.amazonaws.com/docs/specs/OGP-Base_Draft_3.html )An agent is persistent identity and persona t原创 2010-01-22 10:15:00 · 1401 阅读 · 1 评论 -
网游电影
(转载请注明来源于金庆的专栏) 网游可以拍3D电影。这是个诱人的领域。 网游客户端多数支持录像功能,可以录制一个角色的片段。服务器也可以有个记录功能,记录网游世界中发生的所有事件。这些就是电影的素材。只需要添加过场动画,就可以把精彩片段串成一个电影。用于电影的模型可以是最精细的,再加上额外的光照,配音配乐。摄像路径可以自由定义。因为不必实时渲染,所以效果与网游是不同的。原创 2010-01-26 09:24:00 · 1573 阅读 · 0 评论 -
网游数据的推和拉
应该允许客户端自行决定从服务器获取数据的方式。1. 拉方式:请求时才发送。2. 推方式:服务器主动发送。客户端可以设定方式。如客户端进入简化模式,不需要显示周围的玩家, 就设为请求时才发送周围玩家信息。以位置同步信息为例:假设服务器设定100-1000m范围内的位置同步信息的刷新间隔为3s.客户端可以自主选择以下刷新方式:1. 以不小于3s的间隔主动向服原创 2010-02-01 10:09:00 · 2238 阅读 · 0 评论 -
需要判断指针为空吗
前几天,KOK3客户端因为我的资源配置错误而崩溃了。调试器带我到了出错的代码行,是一个空指针解引用。代码大致如下: Item* pItem = itemList.getItem(index); return *pItem;getItem方法如下:Item* ItemList::getItem(int index){ if (index原创 2010-02-11 09:45:00 · 2190 阅读 · 0 评论 -
网游云计算?
网游云计算?对于云计算的概念还是很模糊。我暂时把网游云计算理解为动态负载平衡。盛大的零世界号称是云计算,但看来只是网游的内容发布平台,应该与云计算无关。不管是云计算还是雨计算,目的是让服务器提供更大的能力。对于网游是看单区的承载人数,而单服的承载人数不重要。因为是云计算,服务器的数量可以增加,用数量来提高整体性能才是云计算的优势。是否是云计算,只要看能否通过原创 2010-02-08 18:11:00 · 1800 阅读 · 5 评论 -
大型多人游戏中间件
Massively Multiplayer Middleware 大型多人游戏中间件 by Michi Henning | February 24, 20翻译 2010-02-25 16:16:00 · 5128 阅读 · 3 评论 -
不喜欢KOK3中人物无阻挡的设定
3D网游万王之王3(KOK3)中人物之间是没有阻挡的,两个人可以相互穿透,不会有一个人挡住另一个人的现象。玩家和怪物之间也是没有阻挡的,一个人可以在一大群拥挤的怪物中间穿来穿去。这种设定是为了能在一个场景中容纳大量的玩家。不知道其他3D网络游戏是否也是这样,我只玩过我们公司的另一个3D网游也是无阻挡的。这种设定让我感觉人物就像一个鬼魂,虽然身处繁华的市中心,周围是人原创 2010-03-19 13:40:00 · 1737 阅读 · 6 评论