佳丽云

英雄无敌3-WoG中文站

 找回密码
 英雄注册|Register
查看: 4128|回复: 57

VCMI开发MOD技术探讨

  [复制链接]
  • TA的每日心情
    郁闷
    2020-6-23 21:20
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]火元素使者

    33

    回帖

    331

    金币

    0

    精华

    管理员

    Rank: 12Rank: 12Rank: 12

    积分
    597
    发表于 2020-3-2 06:29:43 | 显示全部楼层 |阅读模式
    关于VCMI介绍就不多说了,探讨一下技术实现封神  封魔 国内比较好玩的mod可能性,和难度系数。
    按开发小组的说法,最初设计是打算使用python作为mod的开发语言的,因为工作量巨大而被搁置。封神mod对原版来说改动巨大,英雄的奖励系统,游戏运行机制都有所变动。开发小组最初的建议是使用boost python库封装来实现Python对游戏数据的调用,比如 游戏状态 魔法系统 宝物系统 英雄奖励系统 兵种能力改变,然后再用客户端读取python语言脚本,实现对游戏mod更新。我实验了python 对c++的调用,是没有问题的,最初设想的一半功能实现是可以的,至于客户端调用python脚本,boost官方则是使用python的脚本解释器来实现的,目前还没来的及去测试。
    按照官方小组的讨论,python作为VCMI 脚本语言,需要更改几个部分:
    1. 客户端,  凡是涉及到动画 图片 ,必须有个client 的python库来让客户端调用实现新动画 新图片 新文本文字  
    2  服务端,  凡是设计到变更游戏 奖励制度  资源类型 装备宝物 城池资源(比如你想设计12级别生物也是可以的),需要让服务端明白 如何保存数据 恢复数据 。
    3  AI设计 ,    AI设计是针对原版的,如果有新的魔法,奖励系统(比如多职业,转职等),AI是不明白的,也会出现无法执行的bug,AI 也需要增强,需要有单独的AI调用库。
    4 库文件,VCMI大部分游戏资源来自库文件,比如 魔法系统,奖励制度 ,装备宝物,地图资源,这些东西修改也需要对应的python库文件。

    其实VCMI已经实现的wog 99%的功能,除了几个bug和密银没有实现,对与wog来说,已经可以玩了。
    wog增强的几个特性,指挥官 据说有个宝物bug还没有修复,生物经验系统运行是没有问题的。
    相对于 现有的era和erm来说,VCMi功能还是弱,不过erm和era的bug是无比蛋疼的,不知道什么时候什么情况会跳出来,再说对于linux 和安卓 苹果 玩家来说,erm和era是玩不了的。
    下面讨论一下 小例子 炼金术士的实现
    客户端方面  1  动画 尸体消失 化成金币
                        2  傀儡龙攻击动画 死亡动画 重生动画 出现动画
                        3  英雄职业的显示和特殊奖励显示
                        4  英雄转职动画 ,转职选择对话框。
    服务端   1 游戏英雄读取保存 要知道有炼金术这个职业 或许奖励系统需要增加一个新的节点 职业变更。

    库文件  1 炼金术士 这个职业 如果不增加职业节点 ,就要在英雄特殊奖励节点实现,经过实验json可以重复添加多重奖励。
                 2 炼金术这个奖励实现 尸体价值×20% 变换金钱 ,尸体消失,不可复活 召魂。

    AI    如果是用策略树实现的,必须有策略树规则接口让python调用更新策略树规则,让Ai明白炼金术士价值。

    这个算是抛砖,粗略的想法。
    技术实现和测试随后吧。
    如果脚本能实现的话,游戏可扩展性就大大提高,想做的三国群英转的MOD不是不可以的,文明系列也可以是添加元素。
    本站网友基本都属于资深玩家,对游戏有很深刻的理解,所以能制作好玩的mod;但是 我认为erm和era限制了MOD发展,从系统角度讲
    未来几年 windows 将会出现滑坡,大量的平板 笔记本都会使用Linux 安卓 苹果,win10 是windows最后一个版本的系统。
  • TA的每日心情
    开心
    2024-2-4 11:15
  • 签到天数: 96 天

    连续签到: 1 天

    [LV.6]地狱战马

    275

    回帖

    9893

    金币

    6

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    3616
    发表于 2020-4-22 12:52:00 来自手机 | 显示全部楼层
    关于商业化我想说的是,商业化并不是只要你不拿去卖就不会侵权。而是只要你把产品面向公众发布出来,不管你是否收费。只要用了商业化软件或开发库,没支付相应费用,就构成侵权。严格说来vcmi用了h3素材,育碧可以告它。但育碧不会这么做,因为英雄无敌这个IP已经半死不活了,告了vcmi对育碧没任何好处,只会把这个IP彻底搞死。这个和育碧利益相关,所以育碧对vcmi目前持默许态度。也许哪天英雄无敌这个IP火了,育碧就开始收拾vcmi了,但目前不会。qt公司不一样,和英雄无敌没有任何利益相关,没被发现还好,一被发现就死翘翘了。所以不建议楼主使用商业库,即使完成开发,vcmi社区也大概率不会合。

    点评

    非常准确的描述  发表于 2020-4-22 14:14
    谢谢层主的提醒。的确,英雄无敌这个IP已是半死状态,这也是本站能够在育碧眼皮底下存在的重要背景。这两天也在贴吧看到有人吐槽本站靠注册费盈利,理由就是本站不具有游戏的版权,却提供了收费下载的产品。其实从内  详情 回复 发表于 2020-4-22 13:54
    回复 支持 1 反对 0

    使用道具 举报

  • TA的每日心情
    郁闷
    2020-6-23 21:20
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]火元素使者

    33

    回帖

    331

    金币

    0

    精华

    管理员

    Rank: 12Rank: 12Rank: 12

    积分
    597
     楼主| 发表于 2020-3-9 17:08:05 | 显示全部楼层
    研究转向c++ 类 转变python库文件。
    按官方小组说法,想套用boost::python的方式来实现c++ 与python的互操作。
    经过实验 c函数  export  python 问题不大,c++类 继承 虚函数 export 出现很多复杂问题。
    python官方对c 转Python 有个封装约定 :所有的c函数 pyOjbect化,就是对象化。boost::python 官方例子大多是针对struct 的类转换,比较成功。
    因为struct 是实例化的类,转换没有问题。标准c++ 基类 或者带有封装的qtObject 类,就很复杂,报许多错误。
    于是, boost::python 看来很不好用,至少现在。
    把目光转向了 pyqt ,pyqt是封装了qt库的python包,它能封装就说明Qt的类是可以封装的,我自己封装不好,就是工具没有用对。
    经过不断的看qt官方文档,大概弄清楚了qt是怎么封装的,qt是采用pysid 或者shiboken 把c++类 直接封装成cpython文件,然后由
    cpython编译成python库,这个python库是调用qt动态库文件的。据qt官方介绍 shiboken可以让开发者封装自己的类成cpython文件,并封装成python库。

    好了,到目前,从C++类封装到 python 技术问题 似乎有了眉目。接下来研究如何封装vcmi客户端 成python库文件。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2020-6-23 21:20
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]火元素使者

    33

    回帖

    331

    金币

    0

    精华

    管理员

    Rank: 12Rank: 12Rank: 12

    积分
    597
     楼主| 发表于 2020-4-20 22:49:32 | 显示全部楼层
    我想你搞错方向了,我这篇文章主要讨论 python 作为vcmi语言的可能性,你用的boost封装c++类,我做个测试,简单类 比如自己写的 或者像你说公司开发的类,封装是没有问题的,复杂的继承类,比如继承自qt的基类,由于qt是封装了许多操作系统底层调用的类,boost工具就不够用了。qt官方给出的工具是shiboken,也支持用户开发封装自己的类,问题是商业用途的化需要掏钱,对公司有点不太合适;c++调用python 适合调用游戏机制,不适合直接运行,实际上是c++ 把python描述的游戏机制 导入c++ 中,需要做些接口约定。我目前还只是觉得 先python调用c++ 做些前期工作,至于c++ 调用python 不是直接游戏运行时调用,是游戏引擎初始化时调用,python脚本可能改变了游戏元素和游戏规则,c++ 应该明白这些规则和元素,最终游戏运行撇开python,可以避免你说的锁问题。解释性语言不适合做游戏,但是适合游戏编程探路,前期可以节省时间,vcmi小组并没有完成关于python的讨论,这个是我自己的看法。至于lua 解释器 ,我没有用过,不好做判断。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    半小时前
  • 签到天数: 1363 天

    连续签到: 6 天

    [LV.10]圣龙

    1602

    回帖

    6598

    金币

    0

    精华

    8级 Supreme Hero

    Rank: 8Rank: 8

    积分
    33281
    发表于 2020-3-2 08:13:29 | 显示全部楼层
    给高手大神手动点赞,希望有新功能
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-10-26 14:20
  • 签到天数: 391 天

    连续签到: 1 天

    [LV.9]龙巫妖

    653

    回帖

    1万

    金币

    0

    精华

    5级 Honorable Hero

    Rank: 5Rank: 5

    积分
    5981
    发表于 2020-3-2 08:46:52 | 显示全部楼层
    本帖最后由 小纸条 于 2020-3-2 08:48 编辑

    不明觉厉              
    楼主刚刚注册没多久就成为了论坛管理员,难道是云斯的小号

    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2015-6-6 16:12
  • 签到天数: 52 天

    连续签到: 1 天

    [LV.5]女巫

    4947

    回帖

    3万

    金币

    35

    精华

    超级版主

    Rank: 11Rank: 11Rank: 11Rank: 11

    积分
    34630

    论坛守望者论坛元老杰出贡献

    发表于 2020-3-2 09:08:16 | 显示全部楼层
    觉厉不明,支持楼主继续开发VCMI
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4419

    回帖

    2万

    金币

    59

    精华

    管理员

    Rank: 12Rank: 12Rank: 12

    积分
    35221

    论坛守望者论坛嘉宾退役版主

    发表于 2020-3-2 10:38:56 | 显示全部楼层
    是的,现在VCMI就是很缺程序员,导致制作组开发热情都下降了
    回复 支持 反对

    使用道具 举报

     成长值: 27145

  • TA的每日心情
    无聊
    2020-5-27 00:09
  • 签到天数: 24 天

    连续签到: 2 天

    [LV.4]狂狼人

    5769

    回帖

    2696万

    金币

    42

    精华

    管理员

    精灵奇侠

    Rank: 12Rank: 12Rank: 12

    积分
    9244731

    社区QQ达人论坛创始人杰出贡献论坛元老

    发表于 2020-3-2 11:45:30 | 显示全部楼层
    小纸条 发表于 2020-3-2 08:46
    不明觉厉              
    楼主刚刚注册没多久就成为了论坛管理员,难道是云斯的小号

    并不是我的小号。我们的论坛能在去年遭遇两次地震而挺过来,Baalkyo管理员功不可没,他是技术型人才,不可多得哈。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2022-3-13 16:17
  • 签到天数: 281 天

    连续签到: 1 天

    [LV.8]神圣凤凰

    92

    回帖

    1万

    金币

    0

    精华

    5级 Honorable Hero

    Rank: 5Rank: 5

    积分
    5259
    发表于 2020-3-2 12:43:14 | 显示全部楼层
    不明觉厉,给高手点赞,期望VCMI能够越来越稳定
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2022-6-11 18:02
  • 签到天数: 255 天

    连续签到: 1 天

    [LV.8]神圣凤凰

    1121

    回帖

    4519

    金币

    3

    精华

    6级 Legendary Hero

    Rank: 6Rank: 6

    积分
    11912
    发表于 2020-3-2 13:15:56 | 显示全部楼层
    工程量巨大啊。。。。加油~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    2024-2-11 20:35
  • 签到天数: 333 天

    连续签到: 1 天

    [LV.8]神圣凤凰

    285

    回帖

    1万

    金币

    0

    精华

    5级 Honorable Hero

    Rank: 5Rank: 5

    积分
    6378
    发表于 2020-3-2 16:28:53 | 显示全部楼层
    专业大佬说得简单易懂,可是对我这种小白而言还是难实现。。大佬加油
    不再沉默
    回复 支持 反对

    使用道具 举报

  • TA的每日心情

    昨天 12:30
  • 签到天数: 2038 天

    连续签到: 55 天

    [LV.Master]伴坛终老

    809

    回帖

    3万

    金币

    0

    精华

    8级 Supreme Hero

    Rank: 8Rank: 8

    积分
    46699
    发表于 2020-3-2 19:30:09 | 显示全部楼层
    不明觉厉,顶楼主!!!!!!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2020-7-21 09:17
  • 签到天数: 69 天

    连续签到: 7 天

    [LV.6]地狱战马

    193

    回帖

    7327

    金币

    0

    精华

    4级 Famous Hero

    Rank: 4

    积分
    2364
    发表于 2020-3-3 10:55:50 | 显示全部楼层
    点赞+1 ! 论坛太不容易了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4419

    回帖

    2万

    金币

    59

    精华

    管理员

    Rank: 12Rank: 12Rank: 12

    积分
    35221

    论坛守望者论坛嘉宾退役版主

    发表于 2020-3-9 17:37:49 | 显示全部楼层
    不错,解决了稳定性问题和AI,会比其他所有MOD都有前景。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-4 11:15
  • 签到天数: 96 天

    连续签到: 1 天

    [LV.6]地狱战马

    275

    回帖

    9893

    金币

    6

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    3616
    发表于 2020-4-20 13:09:25 来自手机 | 显示全部楼层
    很多游戏的mod都是用lua实现的,为啥当初开发组选择了Python?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2020-6-23 21:20
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]火元素使者

    33

    回帖

    331

    金币

    0

    精华

    管理员

    Rank: 12Rank: 12Rank: 12

    积分
    597
     楼主| 发表于 2020-4-20 17:27:07 | 显示全部楼层
    同样都是解释语言,python 有更好的扩展性,lua属于小型化的脚本语言,2种都要有游戏对编译器的支持,开发难度一样,python 与c++ 交互开发有现成例子。python 到目前为止,在vcmi还处于讨论阶段,原h3 脚本已经准备放弃,从他们用python 写出了 地图转换器可以看出,可以用python把原来的地图都转换成rmg 文本,erm是个弃用选项。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-4 11:15
  • 签到天数: 96 天

    连续签到: 1 天

    [LV.6]地狱战马

    275

    回帖

    9893

    金币

    6

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    3616
    发表于 2020-4-20 18:59:28 | 显示全部楼层
    本帖最后由 kdmcser 于 2020-4-20 19:05 编辑

    erm也感觉到不太好用。我所在团队目前工作涉及python c++相互这块,Python调c++基本都是写个boost类封装一下原有的c++类,不直接调。c++调Python需要搞个基类,Python类继承这个基类调Python解释器实现。原有的c++代码也继承自这个基类。个人感觉还是蛮复杂的。特别是GIL锁是个大坑,好几次线上性能问题都是因为它。听说搞游戏开发的同学说lua就是为这种嵌入类脚本设计的,而且感觉Python不太安全。想想mod制作者来个os. system... 所以我在想是不是lua比Python更适合一些。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-4 11:15
  • 签到天数: 96 天

    连续签到: 1 天

    [LV.6]地狱战马

    275

    回帖

    9893

    金币

    6

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    3616
    发表于 2020-4-20 19:10:49 | 显示全部楼层
    这篇文章解释了lua的好处:https://www.zhihu.com/question/21717567
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2024-2-4 11:15
  • 签到天数: 96 天

    连续签到: 1 天

    [LV.6]地狱战马

    275

    回帖

    9893

    金币

    6

    精华

    论坛嘉宾

    Rank: 9Rank: 9Rank: 9

    积分
    3616
    发表于 2020-4-20 23:42:59 | 显示全部楼层
    如果只是做一些初始化规则,python确实可以胜任。但比如说如果有人想重写AI算法之类的,python肯定搞不定。我见过boost python和c++ 互相调用这块见过不少坑,始终对这种方案心存敬畏。而且python做游戏开发脚本的历史也不长,用的游戏不够多,方案还不成熟。如果你在探索的时候发现实在走不下去,可以试试业内成熟的lua方案。最后祝楼主探索成功。另外提醒一下楼主不要使用商业化的方案开发vmci,会有法律风险。
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    郁闷
    2020-6-23 21:20
  • 签到天数: 7 天

    连续签到: 1 天

    [LV.3]火元素使者

    33

    回帖

    331

    金币

    0

    精华

    管理员

    Rank: 12Rank: 12Rank: 12

    积分
    597
     楼主| 发表于 2020-4-20 23:55:12 | 显示全部楼层
    其实 我倒是希望有更多人参与vcmi,至于商业化,没有那个概念,vcmi本来就是游戏引擎,除非用这个引擎去掉h3 的素材,重新创造一个素材,太复杂,也不是几个人能搞定的事情,关于重写AI,这是复活VCMI的办法,没有AI,VCMI就是死东西,没有任何吸引玩家的地方,官方也在不断改进AI。python 可以做些实验性的工作,原理性探路,最后成型的还是C++,毕竟游戏c++是最快的。一个老游戏了,能有玩家玩就是个福分,不能指望太多。官方开发了这么多年才0.99版,玩家都等凉了。
    回复 支持 反对

    使用道具 举报

    ahome_bigavatar:guest
    ahome_bigavatar:welcomelogin
    您需要登录后才可以回帖 登录 | 英雄注册|Register

    本版积分规则

    捐赠
    关注我们,英3Mod一网打尽!

    WoG中文站 ( 辽B2-20210485-10 )|辽公网安备 21128202000228 号

    GMT+8, 2024-4-19 08:44 , Processed in 0.697625 second(s), 19 queries , Gzip On, File On.

    Powered by Discuz! X3.4

    Copyright © 2004-2022, Beijing Second Sight Technology Co., LTD.

    快速回复 返回顶部 返回列表