开发者大会刀塔奇客户端开发经验分享.pdfVIP

开发者大会刀塔奇客户端开发经验分享.pdf

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
开发者大会刀塔奇客户端开发经验分享

刀塔传奇客户端开发经验分享 莉莉丝科技(上海)有限公司 张振新 结构 cocos2dx 业务逻辑模块 数据 网络 UI系统 战斗系统 事件系统 Lua Lua是一个小巧的脚本语言,它的设计目的是为了嵌入应用程序中,从而为应用程序提供灵活 的扩展和定制功能: • 轻量级– 官方版本只提供了一个精简的核心和最剧本的库,因此lua体积小,启动速度快,因此非常适合嵌入在别的程序里。 • 可扩展– Lua并不象其它许多大而全的语言那样,包括很多功能,比如网络通讯、图形界面等。但是Lua提供了非常易于使用 的扩展接口和机制:由宿主语言(通常是C或C++)提供这些功能。 • 易上手-具有简单,灵活的特性,有助于减低学习成本,缩短项目开发周期 开发效率 • 省去大量的编译和链接的时间 • 热加载 刀塔传奇支持游戏过程中动态加载lua代码,省去重新打开程序的时间 动态加载策划表格和美术资源 实时还原所有UI场景,省去了重新打开UI的时间 版本更新 • 线上热更 loadstring :从给定的字符串返回一个程序块 刀塔传奇在程序启动的时候,会从服务器上面拉一段代码下来,然后执行这段代码。由于这个逻辑是在发生在lua代 码加载之后,于是就可以用拉取下来的代码段覆盖版本里面的lua代码。 例如: 线上版本: 服务器端: function() a function() a print(1) print(“2) end end 执行后这段代码之后,调用a函数就会变成输出2 版本更新 注意点:用loadstring只能覆盖全局域下面能访问到的函数 ,从程序设计方面来说,一个模块应该对外暴露尽可能少的接 口 ,但是从线上热更来看,应该让全局域下面能访问到尽可能多的函数,这样可以提高线上热更代码的覆盖率。 • 游戏内更新包 这是刀塔传奇的常规更新方式,一般用来更新大特性版本。更新的内容包括lua脚本,美术资源,策划资源。由于 代码都是lua脚本,更新完成后,可以通过重新初始化整个luastate ,达到更新包在游戏运行时生效。 注意点: 1 )更新包不能用于解决更新流程之前的bug 2 )当一个版本有连续几个比较大的更新包之后,可以考虑出一个非强制更新的全量包给到渠道,这样有助于提 高新进玩家的转化率。 版本更新 • 全量包更新 这个是我们最不愿意采用的版本更新方式 ,有些时候不得不用,比如刀塔传奇刚刚上线的跨服蓝牙对战功能. 这边有个数据跟大家分享下,每次完整包更新的时候,当日的日活跃大概会少10多万 优化方案: 1 )制作低清版本,解决包大小的问题; 2 )在游戏内集成下载器的功能,在启动游戏的过程中,完成全量包的下载和安装,达到优化更新体验的目的。 调试问题 • print • DEBUG 使用lua的debug库开发,作用类似ide环境下面的断点,可在代码中任意地方添加。 该函数会先输出当前的调用堆栈,并进入循环等待用户输入调试语句,在该状态下,通过debug库提供的 getinfo等函数可查看指定level堆栈下的local和upvalue。以下是2张运行时候的截图: 调试问题 • xpcall 接收2个参数,一个是执行函数,一个是错误处理函数。我们在脚本的主循环处使用xpcall调用执 行函数,并使用DEBUG作为错误处理函数。一旦脚本抛出异常,便会进入DEBUG

您可能关注的文档

文档评论(0)

xyl118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档