杀戮尖塔吧 关注:222,094贴子:3,868,586

尖塔ai相关工具和资料分享

只看楼主收藏回复

打算等暑假有空试试尖塔ai,所以先做一些工具和资料的调研
这个帖子会随时更新调研过程中的发现,也方便后面进一步整理


IP属地:北京1楼2023-05-26 22:33回复


    IP属地:北京2楼2023-05-26 22:35
    回复
      2025-11-15 05:04:05
      广告
      不感兴趣
      开通SVIP免广告
      sts_lightspeed: github
      一个非常优秀的C++尖塔模拟器,可以在不启动尖塔进程的情况下模拟尖塔游戏过程。
      实现了尖塔的地图、敌人、卡牌等等的生成和完整的战斗逻辑结算,随机数产生方式跟尖塔逻辑是一致的。美中不足的是,在卡牌方面,只实现了状态牌、诅咒牌、无色牌和战士卡牌。
      除此以外,作者还实现了基于MCTS的局内操作。同样美中不足的是,因为在知道随机种子的情况下,这个模拟器可以得到正确的牌序(包括洗牌时的对应关系),作者的MCTS是在已知这些信息的情况下写的,所以局内能力较强,但是对人类nosl没有太大参考性。
      因为作者后面想试试RL之类的方法(鸽了),所以在项目中引入了pybind11来做python/C++的混合编程,主要用于python调用C++接口,编译时可能会遇到找不到python的问题,在编译参数中手动指定python相关路径可以解决。
      目前在本地进行了初步测试,在同样种子战士a20的情况下,在第一幕时,通过命令行和模拟器交互/启动尖塔进程手动爬塔两者从地图生成、商店货物、怪物生成、每场战斗的牌序等等都是完全一致的(二三幕情况未测试,手动通过命令行和模拟器交互来爬塔不是很好操作)


      IP属地:北京4楼2023-05-26 22:47
      收起回复


        IP属地:北京6楼2023-05-26 23:07
        回复
          AlphaStS: github
          通过神经网络决策局内战斗操作的项目,附带一个局内战斗模拟器。
          这个项目是自己实现的局内战斗模拟(支持战士卡池,从commit记录看正在支持猎手和机器人卡池中),战斗模拟是用JAVA实现的,不确定是否是在反汇编尖塔的基础上写的。
          代码结构较为混乱,简单读了下代码,代码中有很多硬编码,注释少,可读性和可扩展性很差。而且我手头没有windows环境,在MacOS/Linux上配置这个项目问题多多,目前还未完全搞定,所以也不知道目前这个项目的结果如何。


          IP属地:北京7楼2023-05-26 23:32
          回复
            SlayTheSpireFightPredictorMod: github
            打包好的Mod在steam上叫Slay-I。
            用神经网络学习对局样本,预测在某个状态 (卡组/遗物/药水等) 打某个怪物的期望战损,在此基础上,就可以较为轻松的评估卡组加入/删除某张牌后,和某个怪物战斗的战损的变化。
            用于学习的对局样本分别来自Spire Logs和Jorbs,作者分别在两个数据集上进行了训练和测试,在Spire Logs上的预测结果有+/-7的偏差,在Jorbs上的预测结果有+/-9的偏差(因为Jorbs是更有水平的玩家,并且Jorbs的数据集小)
            这个偏差很大,预测不是很准,但实际上也能理解,游戏中不同的牌序战损差别很大。而且模型想要预测的是期望战损,但是样本得到的是特定条件下的战损。


            IP属地:北京8楼2023-05-26 23:55
            回复
              BaseMod wiki: github
              包含了一些尖塔Mod开发起步和尖塔反汇编教程
              我本人没有尖塔Mod相关经验,也没有读过尖塔源码,这点对写尖塔ai可能是致命的。通过这个wiki的教程可以实现用jd-gui反汇编得到尖塔源码表示,感觉很有可能会用到。


              IP属地:北京10楼2023-05-27 00:05
              回复
                一些尖塔对局记录:
                boardengineer/rundata (github): 用TwitchSlaysSpire stream得到的对局数据
                TerrenceMiller/Slay_The_Spire_Stats (github): TerrenceMiller自己的对局数据
                baalor-spire.fly.dev/ : baalor 400局的对局记录


                IP属地:北京11楼2023-05-27 00:14
                回复
                  2025-11-15 04:58:05
                  广告
                  不感兴趣
                  开通SVIP免广告
                  一些可参考的文献资料 (google doc):
                  1FJJghQWa3sQUoXQ1ewxf5qvi7dKIzl1srwWoKWQmq-8
                  1MCNjbDj5XbLQSGfmgeItjYRn6xtUlYFYrrg8IcB2sWk
                  1cXBL-O793XGgoxdiG6fFyYoGjiH0Z_SopPS9J8iySrQ


                  IP属地:北京12楼2023-05-27 00:19
                  回复
                    大佬,给大佬递茶


                    IP属地:广东来自Android客户端13楼2023-05-27 00:29
                    回复
                      调研过程中感觉用处不大的资料(隐去https和www) :
                      toypiper.com/creating-an-ai-for-slay-the-spire/ : 尝试用RL解决爬塔ai的文章,有想法且调研充分,但实现效果和代码未知
                      etc.cmu.edu/projects/ai-playtesting/: 应该是CMU本科生的课程大作业,做的是面向蹲起战斗的局内战斗AI,这个网站是他们的展示网站,有完整的项目规划和进度控制。看看人家的本科教育质量
                      gdcvault.com/play/1025731/-Slay-the-Spire-Metrics: 尖塔制作人在GDC上的talk,分享关于尖塔卡牌设计、调整以及和社区交流的经验心得
                      diva-portal.org/smash/get/diva2:1565751/FULLTEXT02: 一篇关于机器学习路线选择ai的文章,文章对应的尖塔版本有点老,本身水平看起来也不太行


                      IP属地:北京14楼2023-05-27 00:34
                      收起回复
                        推荐下尖塔Discord社区里的data-analysis板块,里面有很多对于尖塔数据分析和爬塔ai的讨论,虽然讨论频率不高,但是信息质量和密度都很好,气氛和谐,没有人灌水和反串


                        IP属地:北京15楼2023-05-27 00:44
                        回复
                          牛的


                          IP属地:广东来自手机贴吧16楼2023-05-27 01:51
                          回复
                            尖塔的discord要怎么进,注册了结果要手机验证,一直收不到。


                            IP属地:广东来自Android客户端17楼2023-05-27 03:24
                            回复
                              2025-11-15 04:52:05
                              广告
                              不感兴趣
                              开通SVIP免广告
                              牛啊


                              IP属地:山东来自Android客户端18楼2023-05-27 05:06
                              回复