作者zxcmoney (lol)
看板GameDesign
标题Re: [请益] 民国无双 v22
时间Tue Feb 16 05:16:17 2010
嗯 我先从结论说起
我现在有兴趣制作此游戏的
战略AI编辑器 与 战术AI编辑器
不过我不打算将目前的AI修改到完善
除了会避免AI作一般人类可以直接观察到的脑残行为外
其他皆遵照原始的AI设定放入对应的判断位子 等有心人士去设定
基本上编辑器会将AI行动的判断集中并分成各阶段
应该是能很快就找到AI判断的位子
总之 在收到原始码後就会开始写
如果不满意当时的成果与影响或着
相信这游戏直到被世人遗忘也不会有人用这编辑器产生有用的AI
无视这个编辑器即可
※ 引述《chenglap (无想流流星拳)》之铭言:
部分引言恕删
: 其实我想最最基本的问题是, 论游戏开发, 永远是求诸人不如求诸己.
: 如果自己不写的话, 那任何的提案或者企划, 都不可能超越纸上的. 主
: 要问题在於, 每人心目中都有自己理想的「游戏」或者「系统」, 没有
: 人理想中的游戏是完全一样, 能够实现自己理想中的系统的, 哪怕只是
: 部份也好, 基本上也只有自己一个人会去完成.
: 而人会愿意自己完成的, 就只有自己的那一套系统.
: 在用别人的系统时, 那往往不会是 100% 合乎自己所想的, 但是如果能
: 有 70% 以上合乎自己的想法, 大部份人就会接受了. 毕竟这是使用者
: 的接受范围, 但开发者的接受范围的话, 如果是免费的人力, 那是十分
: 狭窄的, 这是我常说同人游戏开发中, 「免费的人力比起受薪的人力更
: 昂贵」的原因.
: 如果要将一件工作交予别人, 那麽不论那是甚麽工作, 也等於将那件东
: 西的设计的权利, 也交予了对方. 这才有可能交予别人, 自己设计东西
: 然後让别人实现, 一般来说只有给钱才可能做得到.
对部分程式设计者来说 除了物资外 精神上的回报也是一种原因
对於能实现自己理想中的系统的满足感是一种
对於设定好的题目 带来的挑战 在完这项挑战带来的成就感也一种原因
不过受限人的思想无法无直接交流 70%或许已经是不错的成果了
如果是同时符合一群人的70% 我想那算是优秀的设计了
对此成果不满可以选择自己完成
或着利用现有的设计去完成自己的目标
在有限的情况下去发展出更高的可能性
这是属於编辑器玩家的一种乐趣
: 所以如果要设计一个系统出来, 最好是自己去实现它, 这是我说为何要
: 写(即程式码)出来的原因. 主要是, 如果自己不写的话, 那会停留在设
: 计阶级然後流产的可能性是很大... 在这个 GameDesign 版, 之前也有
: 不少人说过一个重要的问题, 就是其实最难的事情, 就是「开始然後完
: 成」, 半途而废是游戏设计最常出现的问题. 这往往是因为我们都会喜
: 欢做一些自己有兴趣的部份 (例如企划) , 避开自己不感兴趣的部份 (
: 例如除错) , 但大家有兴趣的部份其实往往相同, 不喜欢的部份也往往
: 相同, 要完成游戏和开发游戏, 只能在做自己喜欢的部份时, 也去做自
: 己不喜欢的部份.
嗯 我做的部分算是系统规划的建议
只是找到有趣的题目後就高兴的开始写答案
不过你没有这部分的需求 所以算是自HIGH吧
其中「开始然後完成」确实很困难
不过其实这部分对每个人来说困难的部分并不同
对我来说开始是很容易 解题并规划的过程本身就是报酬
而以规划的基础完成开始实作的内容也很快
最大问题在於除错 并非逻辑上的错误
而是手残导致资料传递错误或是或是认知问题导致指令使用错误
还有依照系统规划重新实作几次就不知道为何自动消失的错误
而且在完成这艰辛除过程後 并不会有相对应的补偿(如果有钱拿 除错拿到的应该特别爽)
导致完成的最後一个步骤很困难
就我的价值观 做出承诺後会有连带要负起的责任
基本上对於存在自己讨厌的责任的事 除非能取得相对应的报酬(各方面的都算)
否则应该不会自愿性的承诺的 (不过回想人生所作的不负责任的承诺好像意外的多)
: 除了写之外, 写本身也包括了自己测试的过程, 像人工智能这种东西,
: 推理时往往和实际执行时有落差, 如果不去写 code , 应该是没有机会
: 证实一个人工智能是否可行或者有破绽.
: 所以这其实是避不过的.
嗯 这是主要是逻辑上的错误吧?
我觉得很容易再实行时直接观察出来(不过也有可能是读取资料时有错)
我想越复杂的决策就需要越多的游戏经验才能完成对应的决策过程
此时有编辑器也比较容易在出错时修改吧
也容易让各个玩家的经验反应给有能力修改AI的人(修改的门槛较低)
: 所以我十分鼓励你去实现他, 我愿意开放我的 source code 给你, 我
: 的人工智能其实大部份都放在了几个大的 procedure 里, 有些会细碎
: , 虽不能说容易修改, 但是直接改下去应该最方便.
开始实作後对这系统 就存在除错的任务
: 我想最基本的问题是截取资讯本身, 人工智能要实现, 基本上以上
: 含糊的部份都必须要精准的变成实际的算法.
: 比方说, 「军力强过对方就攻击」, 这是看起来简单, 实现却很复
: 杂的, 因为这包括了一个重要的问题, 就是「电脑怎样判断自己军
: 力的强弱」, 判断本身就已经是一个人工智能了.
: 举例, 以我目前的 source code, 部队有一个 function 叫
: battlevalue , 用途就是为每个部队定一个战力指数, 方便部队判
: 断是强是弱.
: function TUnit.BattleValue(seed : Integer) : Integer;
: var i : Integer;
: begin
: // 1 general 综合战力指数
: // 2 front 前排战力指数
: // 3 back 後排战力指数
: if (seed = 1) then
: begin
: i := MaxHP;
: end else
: begin
: i := Strength;
: i := i div 2 + (i * Morale div MaxMorale) div 2;
: end;
: if (seed < 2) then
: begin
: i := i * (BS + WS) div 6;
: end else
: begin
: if (seed = 2) then i := i * (WS * 2 + BS) div 9;
: if (seed = 3) then i := i * (WS + BS * 2) div 9;
: end;
: BattleValue := i;
: end;
: 大概你可以从数值的名称, 看出那代表是甚麽, 这是目前对战
: 力判断的形式. 但这十分的阳春, 自然会产生缺憾, 例如把战
: 力较弱的部队看成是战力较强的部队, 或者低估了实力, 这就
: 是人工智能真正麻烦的地方, 而这种麻烦是写成了程式码後才
: 能够发觉出来的.
简单的说这函式本身的逻辑错误 BS 与 WS在伤害计算上受到兵力影响
一个是按现行兵力为最佳时的比例影响 另一个则是单以总数影响
此算式并没有计算到 此外就是会有A方单一部队强度高过B方所有部队个别强度
但是B方计算总合强度高过A方的这种缺点
这种兵力判断的决策其实相当复杂
人对於一场战斗所能观察到判断项其实相当有限
所以真正的建立一个有用的判断函式 需要足够的游戏经验才能建立比较有用的函式
因为这游戏战斗存在战术面的问题 无法断定对手决策的战术致入函式计算
如果连可能决策都要计算不如直接用战术AI模拟然後回报战果
而且如果连设计者本身都不了解设计决策规则
其他人要独立设计出来除非有过去其他可以参考的经验
否则是要用大量时间游玩才会有可以制作出能够实用的决策规则
如果有编辑器的话每个有意愿的人更容易尝试并实验
提供一些决策的规则情报 一点情报慢慢累积起来就可以建立出实用的决策规则
举例的话大概就像玩游戏 每个人提供一点心得与攻略
最後再有人统整就可以完成一份完美攻略
大概就是这样的感觉
: 而这种算式本身就是人工智能重要的一部份, 可以说, 如果电
: 脑要进行任何判断, 至少先要有判断部队强弱的能力. 如果欠
: 缺了这种能力, 任何对战力的判断的人工智能都不会有意义,
: 无法成立, 因为欠缺了最重要的「源头资讯」, 「可比较的资
: 讯」.
: 这些工具是最重要的, 能否准确的判断部队的强弱, 对战略和
: 战术智能的影响十分大. 因为根据误判之下作出的决定, 无论
: 过程是否复杂或者合理, 结果一定会是错误的. 这是工程上常
: 说的一个问题, Garbage in, garbage out, 进去的资讯品质
: 不高的话, 根据那资讯进行的决定也不会好.
: 那就是说, 如果你要设计人工智能, 就必须要动到函数的内容
: 和运作, 而不能单纯的依赖游戏里提供给你的函数. 而如果你
: 不动这些相关函数, 你几乎是无法开发出任何可用的人工智能
: , 但这些东西如果要用编辑器放出来, 如我之前所说, 这等同
: 「设计一个程式语言和编译器」.
我记得有说 编辑器所需的函数有可以帮忙写
只要提供 设定的资料结构即可
同时会附上举例的说明
我认为你举的例子是 正确近 错误出
使得接下来的结果除非发生神奇的巧合 否则一率是错误的
而要修正的则是该函式的逻辑 如果函式的逻辑错误
产生的结果8成是错误的(我相信存在2成的巧合)
如果函式的逻辑是正确的
产生的结果8成是正确的(我相信存在2成的意外)
: 因为这和其他 custom 的部份不一样, 其他 custom 的部份,
: 你改的是「参数」, 参数只是一种「资料」.
: 但人工智能不能只看成一种「资料」, 人工智能是「逻辑」,
: 你要向电脑输入资料, 让它应用是容易的, 但你要让电脑理解
: 一个逻辑, 写程式, 已经是最快, 最方便, 最有可能达到的方
: 法, 不可能舍近求远.
就我的认知 在游戏中的人工智能
应该是收集正确的「资料」後转为有用的「资讯」
依照设计的「逻辑」作出正确的「决策」行动
: 这本身就是人工智能.
: 问题就是为了开放让玩家做人工智能, 本身就已经需要很多人工智能.
: 事实上, 要判断一个人工智能的错误, 需要的是比那个人工智能更优越
: 的人工智能.
: 这就像你写一个象棋的人工智能, 和写一个「能找出你的人工智能的错
: 误的人工智能」, 後者其实比前者还要复杂.
我了解if else就算是简单的人工智能了
只是希望写出AI判断 在实行阶段避免原本设定上不合理的行动 仍然可以实行
如:举例的总计10AP的行动在超出的那次应该要行动失败
会导致TP.SP<0的行动也应该要行动失败
这只是预防前面决策时可能遗漏的决策判断 或是 恶意设定
例:只有4AP的国家却整备了20只的部队
只有14TP的国家却盖了一堆装甲兵学校 成立装甲兵大军
我不太了解这种判断 比前面复杂的原因为何?
我想可能是我表达能力不好 产生的误解
如果不是 有可能是我理解能力不足 而误解你的意思
请详加说明
: 这是我说这为甚麽是人力黑洞的原因, 你想想, koei 的三国志威力加
: 强版, 也不可能去到让你修人工智能的地步, 这不是兴趣的问题, 是成
: 本和效果的问题.
: 程式语言本身就是最好的「人工智能编辑器」, 要修人工智能, 最好是
: 直接修 source code.
说起来 我所谓的人工智能编辑器
实质上只是将所有判定与决策集中
再依照自己习惯的系统方式处理
而且也只是属於阶层式线性思考
对於习惯使用其他思考模式的玩家来说可能无法制作理想中的AI没错
完成现在的 阶层式AI编辑器後
如果还有心力 我试着制作其他思考模式的编辑器
: 把游戏实现是最重要的第一要务, 合理地运用自己手头上能用的所有资
: 源去完成它, 将效益发挥至最大. 不奢望有任何目前没有的资源会突然
: 出现, 这点是游戏设计中很重要的, 不论是商业游戏还是同人游戏都一
: 样, 如果我们的设计中要有一些目前不存在的资源(例如人力)才能够完
: 成的, 那个设计是一定不能完成的, 因为目前不存在的资源, 未来九成
: 也是不存在的.
: 只要你能写程式, 不要浪费这技能, 这就是资源. 好好利用他.
嗯 可以直接理解成
现在人力不足 如果你对这游戏有任何的期望
而且有实行的的能力 最好还亲自实行
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.33.52.221
1F:推 outshaker:一文值千金…看你状态一直是 E:编辑文章…给个推 02/16 07:54
2F:→ outshaker:如果z大单纯对ai有兴趣的话,韦诺之战的ai可以玩看看 02/16 07:57
3F:推 outshaker:The Battle For Wesnoth,也有中文翻译,开源且自由 02/16 08:01
4F:→ outshaker:游戏性不错,种族、地形、技能、性质…缺乏外交、内政 02/16 08:05
5F:→ outshaker:同chenglap所言,每个人心中的理想不同 02/16 08:09
6F:→ outshaker:只是提供一个选择给z大参考 02/16 08:11