骑马与砍杀中文站论坛

 找回密码
 注册(Register!)

QQ登录

只需一步,快速开始

搜索
购买CDKEY 小黑盒加速器
查看: 5445|回复: 21

[经验与教程] 喜欢制作MOD来围观吧(MOD代码组织利器,功能列表持续更新中……)

[复制链接]

3

主题

181

回帖

120

积分

见习骑士

Rank: 3

UID
286084
第纳尔
1293
精华
0
互助
13
荣誉
0
贡献
0
魅力
26
注册时间
2010-7-23

骑砍中文站APP会员勋章霸主正版勋章

QQ
鲜花(33) 鸡蛋(0)
发表于 2020-3-19 12:27:00 | 显示全部楼层 |阅读模式
本帖最后由 yunwei1237 于 2020-5-10 11:12 编辑

快速整合功能的工具介绍故事
大家好,我是云苇,我最近想做一款MOD,起了一个非常好听的名字,叫繁荣帝国,当然,我以前也想过做一个MOD战国群雄。这两个脚本都是我想做但还没有完成的,也做了很长时间,一直是由于工作和个人的原因。之前也还做过一个快速生成脚本的工具,但因为各种原因,一直没有更新,可能以后也不会更新了。
之所以剧本没有做除了个人原因以外,还有很多关于MOD制作的问题,比如,剧本本身的功能不熟悉(想把源码全部看一遍,最后发现那是一个非常轻率的想法);剧本东西太多无处下手,整合别人的功能都需要对别人的功能比较熟悉,才知道添加到哪里,哪些地方需要注意;添加过程复杂,测试功能更加复杂,由于小小的失误可能导致运行不起来,要不然就是大片的红色错误信息;这里有太多的问题,导致做剧本一直做不起来,当然人少也是最主要的原因。我之前也尝试过写一些工具,用于快速生成剧本,花费了大量时间做出来,我以为可以大杀四方的时间,才发现工具里面也有很多新的问题产生。后来,我就想着放弃吧,做剧本可能是一个理想,做一个功能还可以,要想做整个剧本,那真的需要太多时间和精力。
由于现在是在新型冠状病毒疫情期间,闲着也没事,过年时间公司放假时间比较长(越过越长的假期),我又想着能不能做一个MOD。当时我的激情真的很高涨,恨不得马上就把MOD做出来,然后拼命写了三四天,又发现一个人做MOD真的好难啊。那种感觉又让我回到了之前做剧本时的无力感。
所以就想就着,能不能做一个系统,能够将不同的功能拆分开,每一个功能就是一个模块,模块和模块之间以最少的依赖存在。一个模块可以是一个巡逻队系统,可以是一个玩家队员管理系统(同伴自动购买食物,分队去卖物品),村庄的建设系统,养殖系统,种植系统,采矿系统等等。最后有一个文件,在文件中保存着所有功能列表,如果我想要功能只要添加到这个列表中就行了,系统会自动将这些功能整合到系统,编译后在游戏中就可以找到了。如果不需要某个功能,只需要从列表中去掉,而不是在剧本中找到每一个修改过的地方,然后注释。
经过一段时间的幻想,设计,和代码(python语言)编写,终于将这个想法做成了一个比较初级的版本,而它完全支持我的幻想(中间有一次非常大的功能变更),我就给它起一个比较适合它的名字:smart module,也就是灵活的模块。这个工具基于Module_system 1.153,我直接使用了骑马与砍杀Module System资源整合包。现在虽然失效了,但是我在以前下载过,所以就一直保留着(感谢这位大大)。
工具地址:地址
我害怕这个工具会像之前的工具一样出现问题,所以我就打算将繁荣帝国中所有的功能都实现一遍(有时间将繁荣帝国的功能列表上传),每次只需要一个模块一个模块地编写就好了。然后,我就开始了我的第一个模块,巡逻队。经过一段时间,我终于将巡逻队做完,并且,使用这个模块的人员可以根据自己的需求修改一些参数,这些参数对巡逻队模块产生比较大影响(如:城堡城镇村庄的巡逻队数量和军事强度,每一队人数上限,多久补充兵种和经验等等)。巡逻队的功能已经完全实现,可以参考模块:巡逻队
我写了几个模块,只有巡逻队完全写完(我想到功能 都完成 啦^_^),所以如想使用尽量参数巡逻队。
我这几天一起想着要不要把工具放出来,一方面担心工具会有一些比较大的问题,另一方面又担心一个人能够发现问题有限,希望大家多多测试工具,一起完善这个工具。
工具使用
我这里简单介绍下这个工具的使用。如果大家有很好的建议和使用方式,欢迎和我交流。
特性这个工具本身有一些比较好的特性,我这里列下,以便大家能够更好理解这个工具
  • 几乎零耦合
  • 一键启用和禁用
  • 模块功能
  • 功能整合简单
  • 测试简单
  • 代码统一规范
模块
在这个工具中,每一个功能就是一个模块,每一个模块都是单独独立的文件。
模块编写步骤
  • modules(任何文件夹都可以)文件夹中创建一个py文件
  • 在py文件中定义一个dict(字典)变量,编写功能时请参看模块语法
  • 功能写完后,将dict(字典)变量添加到config_modules.py文件中的modules集合中
  • 修改module_info.py文件中的export_dir为你的游戏目录
  • 执行build_module.bat(windos)或build_module.sh(linux或mac)脚本
  • 运行游戏进行测试(只能在windos中运行游戏)
模块语法
说白了一个模块其实就是一个字典(哈希表)类型的变量,里面包含了我们写的所有功能项。每一个项代表一个具体的信息或操作。
name
这个含义非常简单,就是一个模块的名字,要保证全局唯一。
enable
模块是否启用,也就是剧本编译时是否加入到游戏中,如果不指定这个值,默认会加入到游戏,所以禁用一个功能,只需要将这个值由True,更改成False就可了。编译游戏后,该模块的功能不会出现在游戏中。
dependentOn
如果在编写游戏过程中,发现有一些script已经有人写过了,可以在脚本中直接使用,但是需要将script所在的模块名称,加入到这个列表中。不加入也不会报错,但加入后工具会帮你检测依赖的模块是否参与游戏的编译,给你及时提醒。
各个游戏项内容
剧本说得直白些,就是在module_system系统中加入我们自定义的代码,包含,troops,items,dialogs,strings,scripts等等。它们在本工具中也是一个项级别和name和enable是同一个级别,由于每一个操作都相同,所以我只介绍其中一个,其它的参考功能模块。
对于本系统来说,每一个模块项都面临者增加(append),删除(delete),插入(insert),替换(replace)功能。
例如:在module_strings.py中添加一个字符串项;重写module_scripts.py中的game_get_troop_wage功能;为module_mission_templates.py文件的visit_town_castle战场控制器添加一个触发器;为了测试脚本在module_game_menus.py中的start_game_0菜单的continue选项后添加一个新的选项等等。
我把这些功能全部都归结为:增加删除插入替换子操作(children)五个操作。
在简介这些功能之前,我们得先介绍一个新的概念,sign(信号,其实可以翻译成选择器)。
sign
信号(选择器):适合于删除,插入,替换功能(增加不需要,直接添加到数据末尾就行了,不需要选择器)
信号有四种形式:
1.id形式
也叫简单选择器,使用数据的id作为选择器,如,(玩家的id:player,斯瓦迪亚阵营的id:kingdom_1),适用于有id的数据选择。
2.下标形式
注:下标从0开始!!!
也叫下标选择器,使用【#数字】的方式作为选择器,如,(troops兵种集合的第一个数据:#0,factions阵营集合的第10个数据#11),适用于数据中的某一列。
3.复杂形式
复杂选择器主要分成两部分,
例如(对话):
[anyone,"member_castellan_pretalk", [], "Anything else?", "member_castellan_talk",[]],第一部分:是选择器,如:member_castellan_pretalk:member_castellan_talk,注:符号之间以冒号隔开(英文符号)
第二部分:是下标选择器,如:[1,4],注:符号外使用方括号,符号之间使用逗号隔开(英文符号)
完整格式:member_castellan_pretalk:member_castellan_talk:[1,4]
选择器的格式的含义是,从数据中的1下标和4下标中选择数据,拼成一个新的字符串,与member_castellan_pretalk:member_castellan_talk作对比,如果相同就代表选择到,如果不相等,代表没有选择任何数据。
复杂选择器适用于没有id的数据行,从数据行中选择n(逻辑上无限)个数据,组成类似id的符号。以便能够在数据集合中准确定位。
4.复杂形式-限定
此模式和复杂形式相同,只有一个不同就是每一个选择器(第一个部分)的结尾是可以添加一个@符号,这个符号的含义是:请该选择器的所对就下标的数据作一些特殊处理,第一,把特殊符号(如果不是字母,数字,下划线,这三种符号,其它所有符号都是特殊符号)转换成下划线,第二,使用开头匹配方式,也就是说,我们不必把这个值全部列出,只要列出开始一部分就行了。
如:member_castellan_pretalk:Anything_else_@:member_castellan_talk[1,3,4],我在**Anything_else_**后边加上了@符号,就是告诉系统,请把与我作对比的数据先做特殊处理,然后再与我进行对比。此形式适用于非常复杂的情况。
了解了sign选择器以后,我们就可以学习操作命令了
append
append命令对应的数据类型是List,list中保存的数据会追加的数据集合的末尾。
delete
delete命令对应的数据类型是List,list中保存的是sign集合,也就是选择器集合,只要选择到,就会从数据集合中删除。
insert
insert命令其实是两个命令:insertAfter和insertBefore。
insert集合对应的数据类型是list,list中的保存的数据是dict。
insertAfter中包含两个参数:
sing:指定一个选择器
data:指定要插入的数据集合
insertBefore的参数与insertAfter命令相同,唯一不同的是,insertBefore会将数据添加到选择器所对应数据行的前边,insertAfter会将数据添加到选择器所对应数据行的后边。
replace
replace参数与insertBefore命令相同。行为不同的是,将选中的数据删除后,进行添加到选择器所对应数据的前边。
为了更加深入理解命令,以strings添加数据为例(为了简单省略了name,enable等等属性的编写):

------------------------------------------------------------------------------------------------------------------------------



"strings":{
    "append":[
        ("s5_s_patrol_party","数据会被添加到strings集合的末尾"),
    ],
    "insertBefore":[
        {
            "sign":"empty_string",
            "data":[
                ("test_string_insertBefore","在empty_string后方插入数据"),
                ("test_string_insertBefore2","在empty_string后方插入数据"),
            ]
        }
    ],
    "insertAfter":[
        {
            "sign":"yes",
            "data":[
                ("test_string_insertAfter","在yes前方插入数据"),
            ],
        }
    ],
    "replace": [
        {
            "sign": "empty_string",
            "data": [
                ("empty_string", "替换id为empty_string的数据"),
                ("empty_string2", "会被插入在id为empty_string的后边"),
            ],
        }
    ],
    ## 删除id为color_no_1的字符串,删除strings集合中第109个的字符串
    ## 删除复合选择器(从下标为0和1取值拼成字符串与【no_string:NO_STRING_@[0,1]】作对比,如果符合就删除)
    "delete":["color_no_1","#108","no_string:NO_STRING_@[0,1]"],
},


----------------------------------------------------------------------------------------------------------------------------------------------------


如果想看更多使用方法,请参考:功能文件夹
剧本制作策划
对于策划人员,每一个模块的开头就是该模块的一些参数信息,用于影响整个模块的功能和行为。如果再有人想制作一个MOD只需以下步骤:
  • 要将喜欢的模块,加入到config_modules.py文件中的列表中(确保eanble属性值为True或没有这个属性),并添加引用,
  • 修改游戏的输出目录(module_info.py)。
  • 执行build_module.bat(windos)或build_module.sh(linux或mac)脚本
一个剧本制作完成了。
注:我在写功能时会特别注意,将所有模块参数放到文件开头和做非常完整的注释说明,以便策划人员根据剧本需要修改数值。
程序员
对于游戏程序员来说,可能会比较痛苦,因为要编写功能的代码一行都不会减少, 而且相反,代码量比之前还要多,并且还要学习模块的语法,以便能够让代码顺序运行。不过测试起来可能会比较方便,我们可以单独测试我们自己的功能,不和别的模块同时测试,减少错误的机率,所有的代码都放到一个文件中,也比较方便阅读,因为所有你写的代码都在同一个文件中,你不会修改Module_system系统中的任何一行代码。
  • 代码量增加
  • 测试方便
  • 代码独立
  • 详细的编译日志
  • 出错率减少
  • 功能几乎秒移植
注:我感觉我有点对不起程序,因为有时间,我自己设计的语法我都会写错误,然后仔细检查后,才发现忘记格式写错了。
最后
我说下我使用的工具吧
  • pycharm 2018.2(python的ide工具)(下载地址
  • python2.7(下载地址下载地址
  • Batch Scripts support(用于执行bat文件,在pycharm中的插件库中下载)
  • github(用于保存代码永久不丢失:地址
  • git(工具下载地址)
最后,欢迎大家提供宝贵建议,也希望给喜欢做剧本的人带来便利。

基础模块:
  • 兵种模块:提供了和兵种相关的功能(如:【NPC随机姓名,只支持中国人姓名】,【扮演国王和领主功能】)
  • 队伍模块:提供了据点和队伍相关的功能(如:【各种情况下的队伍创建】,【士兵招募】,【经验增加】,【俘虏出售】)
  • 阵营模块:提供阵营相关的功能(如:【敌国数量】)
功能列表:
  • 测试场景(持续更新):大量测试场景,用于测试游戏,快速进入到测试区(随机战场,直接进入大地图,城堡,酒馆,竞技场,街道,可以扮演国王或领主等等)。
  • 巡逻队(已经完成):为据点(首都(6队),城镇(4队),城堡(2队),村庄(1队))创建巡逻队,自动维护士兵。
  • 巡逻队【重制版】(已经完成):荣誉决定巡逻队数量,领主的统御和教练技能决定士兵的军事强度(需要大量金钱),没有领主的领地不会有巡逻队。
  • 英雄集结(正在更新):除玩家以外,在卡拉迪亚寻求财富的NPC(随机姓名,有子嗣),攻击劫匪,跑商,加入国家,自立,招兵等等。
  • 军队管理(正在更新):军队中会有一些职位,授予同伴,每一个职位管理不同的事情,如:副官,谋士,军医,兽医,军备,厨师,攻城师,教练等等。
  • 公主出游(已经完成):领主的女人们不再是在城堡中等待她的丈夫或兄弟归来,而在无聊时出城游玩,顺便干掉几个劫匪。
  • 村庄管理(持续更新):增加据点税收,村庄可以屯兵。
  • 税收增强(已经完成):增加城镇,城堡,村庄的税收,作为领主军队管理的根本。
  • 领主收租(已经完成):领主会自动从村庄收租,用于城堡,军队,同伴(未完成),巡逻队的维护。
  • 领主性格(已经完成):显示所有领主的性格。


各位策划大大,如果有好的想法,欢迎私信,做完会署名

以后可以上传一些功能图,哈哈。




评分

参与人数 2第纳尔 +25 互助 +2 魅力 +21 收起 理由
Aomine Daiki + 20 + 1 + 20 文章不错,继续努力!
幼稚园殺手 + 5 + 1 + 1 感谢您对骑砍中文站的支持!

查看全部评分

鲜花鸡蛋

TurpinHero  在2020-5-10 08:11  送朵鲜花  并说:大佬万岁!
liruoyuan  在2020-3-29 11:41  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
《繁荣帝国》:一个最大限度基于真实的剧本,属于程序类MOD,也是smart module的孵化基础,所以繁荣帝国是完全遵循smart module工具规范的剧本。
《smart module》:骑砍源码组织利器,一个py文件就是一个神奇的module,每一个module都是一个单独的功能,可以代表是一个庞大的功能模块,也可以是一些通用类代码的集合,且每一个module无论功能大小,代码多少,都可以在多个剧本之间达到极速移植!

57

主题

953

回帖

543

积分

子爵[版主]

Rank: 7Rank: 7Rank: 7

UID
81513
第纳尔
5138
精华
1
互助
18
荣誉
5
贡献
100
魅力
123
注册时间
2008-6-26
QQ
鲜花(103) 鸡蛋(0)
发表于 2020-3-19 14:08:49 | 显示全部楼层
本帖最后由 stevenxxy007 于 2020-3-19 14:16 编辑

首先非常支持你的想法,模块化高内聚低耦合是每个架构师都在努力的方向。还没用你的工具,但是看着就有点望而生畏了。
如楼主所说,要使用这个工具,相当于要学习楼主创在的新的语法,而且我也理解代码量为什么会变多,因为要整个函数替换嘛~

有个问题问你,如果我期中一个功能要修改一个函数,或者仅仅只是改一个触发器的逻辑。而另一个功能也同样要修改这个触发器的逻辑,
那你的工具如果两个功能要同时使用,彼此间的替换逻辑是不是会互相影响引起矛盾啊?
#增加,删除,插入,替换,子操作
还是拿刚才的两个功能改了同一个触发器逻辑,你的五个华丽的操作,有包含merge吗?当然这个merge做起来难度有点大。

举个例子吧,功能1:修改了trigger1的全局变量名。功能2:增加了一个新的全局变量。
为了既能互相0耦合,又能两个功能同时启用无矛盾,你这里的工具要怎么写?
当然利用merge解决还是可以的,但如果一个触发器有几百行,多个功能都在使用它,就有可能变成几万行的代码了。

还有一个问题,就是如果是两个人各自在自己的mod中写了逻辑,如果功能要进行整合,感觉也没有省力。还是要借助比较第三方的
比较工具先进行merge。

最后,还是感谢和支持这位高手提供的这个工具,因为我也一直想有这么个东西。希望你不要放弃骑砍,没时间做mod可以写一些功能性的
代码和我们一起分享。(题外话,我也是几年前豪心壮志想做mod,然后太监了。疫情期间又来了热情,暂时热情还没消散,感觉对这个游戏
引擎认识更加深了,继续开发中。我也有很多关于制作的问题,发了帖子,至今只有几个是有人回答的。如果你能帮我解答的话我会再次万分感谢你)

6

主题

38

回帖

13

积分

随仆

Rank: 1

UID
3030943
第纳尔
277
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2018-9-21
鲜花(0) 鸡蛋(0)
发表于 2020-3-19 14:47:09 来自手机 | 显示全部楼层
前排围观大佬

3

主题

181

回帖

120

积分

见习骑士

Rank: 3

UID
286084
第纳尔
1293
精华
0
互助
13
荣誉
0
贡献
0
魅力
26
注册时间
2010-7-23

骑砍中文站APP会员勋章霸主正版勋章

QQ
鲜花(33) 鸡蛋(0)
 楼主| 发表于 2020-3-19 14:50:15 | 显示全部楼层
感谢你的回复,也感谢你提出的问题。
冲突是无法避免的,就算是直接在原系统中修改代码,也是无法避免代码变量进行冲突的。不过,我能做的,就是尽量不冲突。两个功能模块之间尽量不要使用相同的slot编号和全局变量(除非系统定义的全局变量,如:$g_talk_troop等等)。
我写了一些功能了,使用起来感觉还可以。遇到冲突的次数还不是很多,我知道冲突是不能避免的,如果我遇到的多了,我相信应该会一个比较好的解决方案(比如:merge)。

如果我以后遇到冲突的问题多了,解决冲突多了以后,可能会添加一些冲突检测机制,在有数据冲突时做一些必要的提醒和建议给MOD制作者。
如果你看了我写的功能性代码(在modules文件夹中),应该就可以了解一些使用方式。

我也希望你能够把工具下载下来,尝试下,看下好不好用。编写代码确实有点累,哈哈,不过看着编译时成功的信息,一键添加和禁用,模块单独测试,感觉还是挺爽的。

代码冲突我会留意的,感谢

最后,如果你遇到一些脚本的问题,也可以问我,但我不一定都会,如果我知道,肯定会回复你的。再次感谢啦。
《繁荣帝国》:一个最大限度基于真实的剧本,属于程序类MOD,也是smart module的孵化基础,所以繁荣帝国是完全遵循smart module工具规范的剧本。
《smart module》:骑砍源码组织利器,一个py文件就是一个神奇的module,每一个module都是一个单独的功能,可以代表是一个庞大的功能模块,也可以是一些通用类代码的集合,且每一个module无论功能大小,代码多少,都可以在多个剧本之间达到极速移植!

3

主题

181

回帖

120

积分

见习骑士

Rank: 3

UID
286084
第纳尔
1293
精华
0
互助
13
荣誉
0
贡献
0
魅力
26
注册时间
2010-7-23

骑砍中文站APP会员勋章霸主正版勋章

QQ
鲜花(33) 鸡蛋(0)
 楼主| 发表于 2020-3-19 14:52:43 | 显示全部楼层
本帖最后由 yunwei1237 于 2020-3-19 14:54 编辑
stevenxxy007 发表于 2020-3-19 14:08
首先非常支持你的想法,模块化高内聚低耦合是每个架构师都在努力的方向。还没用你的工具,但是看着就有点望 ...

回复你时忘记@你啦,不好意思



当然,我也会尽量把一些比较好玩的功能进行编写和测试,之后会放到代码的modules文件夹下,如果需要直接用就行了。我觉得统一代码规范还是比较重要的,功能可以快速移植。

鲜花鸡蛋

stevenxxy007  在2020-3-19 15:12  送朵鲜花  并说:我非常同意你的观点,送朵鲜花鼓励一下
《繁荣帝国》:一个最大限度基于真实的剧本,属于程序类MOD,也是smart module的孵化基础,所以繁荣帝国是完全遵循smart module工具规范的剧本。
《smart module》:骑砍源码组织利器,一个py文件就是一个神奇的module,每一个module都是一个单独的功能,可以代表是一个庞大的功能模块,也可以是一些通用类代码的集合,且每一个module无论功能大小,代码多少,都可以在多个剧本之间达到极速移植!

57

主题

953

回帖

543

积分

子爵[版主]

Rank: 7Rank: 7Rank: 7

UID
81513
第纳尔
5138
精华
1
互助
18
荣誉
5
贡献
100
魅力
123
注册时间
2008-6-26
QQ
鲜花(103) 鸡蛋(0)
发表于 2020-3-19 15:20:06 | 显示全部楼层
yunwei1237 发表于 2020-3-19 14:52
回复你时忘记@你啦,不好意思

我整理了下一些我遇到的问题,你帮我看看有哪些你可以为我解答的。有些是小问题,有些问题也比较尴尬。

内核bug
http://bbs.mountblade.com.cn/thread-2054433-1-1.html

NPC坐板凳时,人物对话的视角问题
http://bbs.mountblade.com.cn/thread-2053698-1-1.html

关于animation的一个问题
http://bbs.mountblade.com.cn/thread-2053112-1-1.html

3

主题

181

回帖

120

积分

见习骑士

Rank: 3

UID
286084
第纳尔
1293
精华
0
互助
13
荣誉
0
贡献
0
魅力
26
注册时间
2010-7-23

骑砍中文站APP会员勋章霸主正版勋章

QQ
鲜花(33) 鸡蛋(0)
 楼主| 发表于 2020-3-19 15:23:36 | 显示全部楼层

哈哈,感谢围观
《繁荣帝国》:一个最大限度基于真实的剧本,属于程序类MOD,也是smart module的孵化基础,所以繁荣帝国是完全遵循smart module工具规范的剧本。
《smart module》:骑砍源码组织利器,一个py文件就是一个神奇的module,每一个module都是一个单独的功能,可以代表是一个庞大的功能模块,也可以是一些通用类代码的集合,且每一个module无论功能大小,代码多少,都可以在多个剧本之间达到极速移植!

10

主题

183

回帖

58

积分

扈从

Rank: 2Rank: 2

UID
3070326
第纳尔
686
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2019-4-25

战团正版勋章

鲜花(0) 鸡蛋(0)
发表于 2020-3-23 20:28:07 | 显示全部楼层
请问这个支持1171吗?

3

主题

181

回帖

120

积分

见习骑士

Rank: 3

UID
286084
第纳尔
1293
精华
0
互助
13
荣誉
0
贡献
0
魅力
26
注册时间
2010-7-23

骑砍中文站APP会员勋章霸主正版勋章

QQ
鲜花(33) 鸡蛋(0)
 楼主| 发表于 2020-3-25 17:29:51 | 显示全部楼层
不知火我 发表于 2020-3-23 20:28
请问这个支持1171吗?

理念上支持任何骑砍脚本,这个是基于1153的,所以近似的版本应该都是支持的,原版暂时不支持,不过可以通过简单配置,来进行支持,以后有时间可以提供一个原版的版本。
《繁荣帝国》:一个最大限度基于真实的剧本,属于程序类MOD,也是smart module的孵化基础,所以繁荣帝国是完全遵循smart module工具规范的剧本。
《smart module》:骑砍源码组织利器,一个py文件就是一个神奇的module,每一个module都是一个单独的功能,可以代表是一个庞大的功能模块,也可以是一些通用类代码的集合,且每一个module无论功能大小,代码多少,都可以在多个剧本之间达到极速移植!

3

主题

7

回帖

3

积分

平民

Rank: 1

UID
3148970
第纳尔
9
精华
0
互助
0
荣誉
0
贡献
0
魅力
0
注册时间
2020-3-22
鲜花(0) 鸡蛋(0)
发表于 2020-3-25 22:15:55 | 显示全部楼层
我有个小脑洞
建议添加【士兵提拔】和【随从带兵】的功能
【士兵提拔】这个其实汉匈决战已经实现了,就是设置一个机制,某个士兵在一场战斗中杀敌或伤敌多少(如5个),战斗结束后触发士兵变为npc(也就是将军)的功能
【随从带兵】可以参考耶路撒冷的“十字军老队长”,设置某个兵种名为“校尉”、“裨将”可以自己带兵,设置这一兵种带兵上限(如50),并且可以并入玩家队伍(大地图上是一个队伍但实际上是不同编制,参考汉匈的私兵和属兵),为这样玩家在征战过程中不用为统领士兵的上限而烦恼。(如原来玩家对战时军队数量为自己所带兵数量,增加之后为本部兵+领兵者数量×50)

3

主题

181

回帖

120

积分

见习骑士

Rank: 3

UID
286084
第纳尔
1293
精华
0
互助
13
荣誉
0
贡献
0
魅力
26
注册时间
2010-7-23

骑砍中文站APP会员勋章霸主正版勋章

QQ
鲜花(33) 鸡蛋(0)
 楼主| 发表于 2020-3-26 09:45:04 | 显示全部楼层
本帖最后由 yunwei1237 于 2020-3-26 09:53 编辑
machaofang 发表于 2020-3-25 22:15
我有个小脑洞
建议添加【士兵提拔】和【随从带兵】的功能
【士兵提拔】这个其实汉匈决 ...

哈哈,这两个功能都不错啊,第一个我从来没有想过,第二个我有一个类似的功能,对于领主,可以给他们添加护卫队的功能,主要是跟着领主(原版水浒中见过的功能),保护领主,可以有NPC(可以有军衔,校尉等等)加入,做为领主护卫任务等等。对于玩家可以有随从,功能类似,也可以有NPC担任,但是没有军衔(对于有军功需求的,会叛变玩家,哈哈,有点坏)。

这是我的功能列表:
繁荣帝国全部功能
希望能够给更多优秀的建议,



你的功能已经收录,在dev分支,整理完成后我会合并的master分支。再次感谢。

鲜花鸡蛋

TurpinHero  在2020-5-10 08:27  送朵鲜花  并说:,,GitHub牛逼,,你的mod也牛逼
machaofang  在2020-3-26 14:21  送朵鲜花  并说:加油加油,期待新mod
《繁荣帝国》:一个最大限度基于真实的剧本,属于程序类MOD,也是smart module的孵化基础,所以繁荣帝国是完全遵循smart module工具规范的剧本。
《smart module》:骑砍源码组织利器,一个py文件就是一个神奇的module,每一个module都是一个单独的功能,可以代表是一个庞大的功能模块,也可以是一些通用类代码的集合,且每一个module无论功能大小,代码多少,都可以在多个剧本之间达到极速移植!

3

主题

99

回帖

31

积分

扈从

Rank: 2Rank: 2

UID
3045037
第纳尔
519
精华
0
互助
0
荣誉
0
贡献
0
魅力
2
注册时间
2018-11-30
鲜花(1) 鸡蛋(0)
发表于 2020-4-16 00:14:04 | 显示全部楼层
代码链接已经丢失。。。

3

主题

181

回帖

120

积分

见习骑士

Rank: 3

UID
286084
第纳尔
1293
精华
0
互助
13
荣誉
0
贡献
0
魅力
26
注册时间
2010-7-23

骑砍中文站APP会员勋章霸主正版勋章

QQ
鲜花(33) 鸡蛋(0)
 楼主| 发表于 2020-4-19 10:53:34 | 显示全部楼层
龙魂汉化 发表于 2020-4-16 00:14
代码链接已经丢失。。。

兄弟,你说的是哪一个代码,可以截图下,我检查了所有的代码地址,可以点击进去。
《繁荣帝国》:一个最大限度基于真实的剧本,属于程序类MOD,也是smart module的孵化基础,所以繁荣帝国是完全遵循smart module工具规范的剧本。
《smart module》:骑砍源码组织利器,一个py文件就是一个神奇的module,每一个module都是一个单独的功能,可以代表是一个庞大的功能模块,也可以是一些通用类代码的集合,且每一个module无论功能大小,代码多少,都可以在多个剧本之间达到极速移植!

3

主题

99

回帖

31

积分

扈从

Rank: 2Rank: 2

UID
3045037
第纳尔
519
精华
0
互助
0
荣誉
0
贡献
0
魅力
2
注册时间
2018-11-30
鲜花(1) 鸡蛋(0)
发表于 2020-4-19 12:22:12 | 显示全部楼层
yunwei1237 发表于 2020-4-19 10:53
兄弟,你说的是哪一个代码,可以截图下,我检查了所有的代码地址,可以点击进去。

现在没事了,可能之前我打开的时候网络不好,哈哈。

我给几个建议给你的MOD吧,
一:学学领军者加些铁骨Mod,不需要加很多的血,但是可以让主角打持久战。
二:攻城战建议大门可以被打坏,厚血一点也无所谓,如果为了平衡可以安排一个敌军刷兵点在门后
三:严格限制带兵上限,我可不想重现潘德的一千人野怪

57

主题

953

回帖

543

积分

子爵[版主]

Rank: 7Rank: 7Rank: 7

UID
81513
第纳尔
5138
精华
1
互助
18
荣誉
5
贡献
100
魅力
123
注册时间
2008-6-26
QQ
鲜花(103) 鸡蛋(0)
发表于 2020-4-20 08:42:27 | 显示全部楼层
你的英雄集结功能很有趣,期待你的更新

1

主题

269

回帖

96

积分

扈从

Rank: 2Rank: 2

UID
1435979
第纳尔
646
精华
0
互助
3
荣誉
0
贡献
0
魅力
0
注册时间
2013-6-30

战团正版勋章拿破仑正版勋章

鲜花(36) 鸡蛋(0)
发表于 2020-4-20 09:50:11 | 显示全部楼层
本帖最后由 swqqa 于 2020-4-20 09:53 编辑

前来围观大侠
When all you have is a hammer, everything looks like a nail.

3

主题

181

回帖

120

积分

见习骑士

Rank: 3

UID
286084
第纳尔
1293
精华
0
互助
13
荣誉
0
贡献
0
魅力
26
注册时间
2010-7-23

骑砍中文站APP会员勋章霸主正版勋章

QQ
鲜花(33) 鸡蛋(0)
 楼主| 发表于 2020-4-21 20:17:24 | 显示全部楼层
龙魂汉化 发表于 2020-4-19 12:22
现在没事了,可能之前我打开的时候网络不好,哈哈。

我给几个建议给你的MOD吧,

非常感谢你的建议,也希望以后能够提供更多的建议。十分感谢。
《繁荣帝国》:一个最大限度基于真实的剧本,属于程序类MOD,也是smart module的孵化基础,所以繁荣帝国是完全遵循smart module工具规范的剧本。
《smart module》:骑砍源码组织利器,一个py文件就是一个神奇的module,每一个module都是一个单独的功能,可以代表是一个庞大的功能模块,也可以是一些通用类代码的集合,且每一个module无论功能大小,代码多少,都可以在多个剧本之间达到极速移植!

3

主题

181

回帖

120

积分

见习骑士

Rank: 3

UID
286084
第纳尔
1293
精华
0
互助
13
荣誉
0
贡献
0
魅力
26
注册时间
2010-7-23

骑砍中文站APP会员勋章霸主正版勋章

QQ
鲜花(33) 鸡蛋(0)
 楼主| 发表于 2020-4-21 20:28:15 | 显示全部楼层
stevenxxy007 发表于 2020-4-20 08:42
你的英雄集结功能很有趣,期待你的更新

哈哈,我也觉得很有趣,但是功能确实有点多,一时不能写完,现在上班了,时间有点少,不过也会持续更新。我觉得我主要的任务应该是尽可能优化工具,功能只是为了验证工具是否可适应任何功能。并在编写过程中,是否有不方便的地方。是否能够提供更加快捷,方便的功能。

我最近更新了一个slot编号管理工具,以后再也不用担心自己声明的编号会和其它module的相冲突啦,每次运行都会动态分配。此功能暂时只在dev分支上开发,等成熟了以后,就会合并的master分支。

我也会把想到的比较好的功能记录下来,写到库中。

我知道你的技术也非常好,希望能够给更多专业的建议。
《繁荣帝国》:一个最大限度基于真实的剧本,属于程序类MOD,也是smart module的孵化基础,所以繁荣帝国是完全遵循smart module工具规范的剧本。
《smart module》:骑砍源码组织利器,一个py文件就是一个神奇的module,每一个module都是一个单独的功能,可以代表是一个庞大的功能模块,也可以是一些通用类代码的集合,且每一个module无论功能大小,代码多少,都可以在多个剧本之间达到极速移植!

3

主题

181

回帖

120

积分

见习骑士

Rank: 3

UID
286084
第纳尔
1293
精华
0
互助
13
荣誉
0
贡献
0
魅力
26
注册时间
2010-7-23

骑砍中文站APP会员勋章霸主正版勋章

QQ
鲜花(33) 鸡蛋(0)
 楼主| 发表于 2020-4-21 20:29:54 | 显示全部楼层

哈哈,感谢围观
《繁荣帝国》:一个最大限度基于真实的剧本,属于程序类MOD,也是smart module的孵化基础,所以繁荣帝国是完全遵循smart module工具规范的剧本。
《smart module》:骑砍源码组织利器,一个py文件就是一个神奇的module,每一个module都是一个单独的功能,可以代表是一个庞大的功能模块,也可以是一些通用类代码的集合,且每一个module无论功能大小,代码多少,都可以在多个剧本之间达到极速移植!

20

主题

60

回帖

49

积分

扈从

Rank: 2Rank: 2

UID
3067732
第纳尔
127
精华
0
互助
5
荣誉
0
贡献
0
魅力
5
注册时间
2019-4-11
鲜花(10) 鸡蛋(0)
发表于 2020-5-10 08:14:24 | 显示全部楼层
本帖最后由 TurpinHero 于 2020-5-10 08:16 编辑
yunwei1237 发表于 2020-3-26 09:45
哈哈,这两个功能都不错啊,第一个我从来没有想过,第二个我有一个类似的功能,对于领主,可以给他们添加 ...

又找到一位用 GitHub 的 modder...
为甚没人用 GitHub 呐。。你也可以看看我为我们制作开的这个链接

3

主题

181

回帖

120

积分

见习骑士

Rank: 3

UID
286084
第纳尔
1293
精华
0
互助
13
荣誉
0
贡献
0
魅力
26
注册时间
2010-7-23

骑砍中文站APP会员勋章霸主正版勋章

QQ
鲜花(33) 鸡蛋(0)
 楼主| 发表于 2020-5-10 10:57:10 | 显示全部楼层
本帖最后由 yunwei1237 于 2020-5-10 11:18 编辑
TurpinHero 发表于 2020-5-10 08:14
又找到一位用 GitHub 的 modder...
为甚没人用 GitHub 呐。。你也可以看看我为我们制作开的这个链接 ...

哈哈,是啊,我也是github的使用者。我们工作中也使用git作为代码管理工具。感谢大佬的花。希望多提宝贵建议。

已经start和watch.哈哈
《繁荣帝国》:一个最大限度基于真实的剧本,属于程序类MOD,也是smart module的孵化基础,所以繁荣帝国是完全遵循smart module工具规范的剧本。
《smart module》:骑砍源码组织利器,一个py文件就是一个神奇的module,每一个module都是一个单独的功能,可以代表是一个庞大的功能模块,也可以是一些通用类代码的集合,且每一个module无论功能大小,代码多少,都可以在多个剧本之间达到极速移植!

20

主题

60

回帖

49

积分

扈从

Rank: 2Rank: 2

UID
3067732
第纳尔
127
精华
0
互助
5
荣誉
0
贡献
0
魅力
5
注册时间
2019-4-11
鲜花(10) 鸡蛋(0)
发表于 2020-5-13 00:40:57 | 显示全部楼层
本帖最后由 TurpinHero 于 2020-5-14 19:10 编辑

##【建议一些】

###功能
我由于实在不大清楚你这个的可拓展性,,所以我说几个可能不大现实的,,顺序从最现实的到最不现实的:

1,政变——因为官逼民反或类似原因(赋税过重甚么的)贵族或农民发动政变,靠逼宫(或甚么)推翻其君主,创立新的政府领袖。
2,内战——政变未果的副作用。农民/贵族选出领袖,组织军队进攻在野政府。
3,联姻——当玩家阵营与另一个阵营关系较好且有高于一定值的声望,玩家可选择让自己的儿女(或大贵族)与其联姻,达到政治目的。
4,阵型——玩家可以在战斗前安排好你的(正好配上你的分队系统)各个小队怎么站,比如长矛手站前面火枪手站后面等等。
5,议会——玩家甚至ai都可以提交议案,由声望和关系决定投票,高于一定比例通过。议会每十个星期(或其他甚么)举办一次。在共和制政体下,甚至能在君主死后代替其摄政一段时间。
6,间谍——玩家可以在不论敌对或非敌对的阵营内布置间谍网,每个星期结算时付出一笔自选的款,高低决定间谍网的信息真实度(有可能有假情报)以及被发现的可能性(可能直接导致战争)
7,殖民——创建玩家可以进行殖民的新大陆。
目前就这么多,,之后应该还会更多(以上都是我在mod中想做但还没做的)
---
###回复上面的
你的我看到就立马 star 和 watch 了。/斜眼笑
---
###个人建议
你这个最好做一个类似于教程的东西——我是极其想加入开发(或者说工具完善及制作)的,但你这个我不知道是不是和原来一样写,,我看着似乎是一样的……我试着帮你写一点,,若是有甚么要注意的和我讲。顺便问下,你这个一个一开始正常 ms 的 mod 半途加入行不行?——应该可以的罢……
加下QQ:*QQ:485399571*
---
###写在最后,,
GitHub 用多了 markdown 的习惯还真 tm 改不了。



最后来个 :wq








您需要登录后才可以回帖 登录 | 注册(Register!)

本版积分规则

Archiver|手机版|小黑屋|骑马与砍杀中文站

GMT+8, 2024-4-25 21:17 , Processed in 0.164644 second(s), 38 queries , Gzip On, MemCached On.

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

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