dol吧 关注:143,074贴子:833,350

考试/成绩机制科普,兼谈简易源码分析

只看楼主收藏回复

大家好,今天看到一个问考试78%通过率怎么还一直失败的贴子,本着助xian人de为wu乐liao的精神我就去翻了一下源码,给出“考试难度每日刷新”的结论,然而在被汉化组内某搞整合包的dalao指出有误之后感觉先前的错误回答已经误导了一部分吧友,故重开一贴科普考试/成绩机制,此外还兼谈以下简单的源码分析
(未完成前请勿插楼)


IP属地:广东1楼2023-08-25 12:55回复
    好好好,昨天87%失败,根本过不了


    IP属地:北京来自Android客户端2楼2023-08-25 13:05
    回复
      首先是科目学习进度的获取:
      一堂课共1小时,分3段,每段耗时小于等于20分钟。若在某一段内选择专心听课,则【学科进度】(_lesson_progress)视乎这堂课剩余时间的分钟数增加不同数值:若大于等于20则【+4】,否则【+(剩余分钟数/5并丢弃小数部分)】。特别地,如果你在本堂课的最后一段时间内选择专心听课,则【学科进度额外+1】,以弥补最后一段时间不足20分造成的进度缺失。


      IP属地:广东3楼2023-08-25 13:14
      收起回复
        此后,当一节课的一个阶段结束后,将按照【学科进度】结算对应学科的【技能熟练度】,同时给角色加星。
        这一节的主要内容是根据【学科技能等级】对【学科进度】进行修正,将得到的值增加到对应学科的【技能熟练度】。相同的【学科进度】下,不同【学科技能等级】所能得到的【技能熟练度】增长是不同的。从F、D、C、B~A*分别有2.4,1.2,0.6,0.3的乘数,以体现水平越高越难提升的现实情况。
        同时还有另外两个修正:面部穿戴眼镜类配饰时可以获得1.2的增益,处于暴露状态也可以获得1.2的增益(游戏内多次提到果着学习效率更高)。
        以上修正均为叠乘,得到的数值直接加算到对应学科的【技能熟练度】。


        IP属地:广东4楼2023-08-25 13:22
        收起回复
          每周五学校会进行考试,考试能否通过取决于两个变量——对应学科的【考试难度】,以及【通过率】。
          基础【通过率】等于对应学科的【技能熟练度】。【技能熟练度】可以在“角色/Characteristics”→“学校成绩/School Performance”里查询,为一具体数值,与【技能等级】无关。【通过率】还可能被一些其他因素修正,例如考试时选择专注+5,惠特尼捣乱-5,对应学科老师高好感,作弊成功+10等。
          【考试难度】每周一凌晨0000刷新,为一个1(含)至100(不含)之间的随机整数。
          周五考试结算时,【通过率】大于等于【考试难度】即判定为通过考试。
          【技能熟练度】实时计算,在周五考试之前进行学习得到的【技能熟练度】增长也会应用到当天考试的【通过率】中,因此如果想要提高通过考试的几率,周五当天切勿摸鱼。


          IP属地:广东5楼2023-08-25 13:32
          回复
            此外,若每周周一处在学期内,则所有学科【技能熟练度】自动-7。学科【技能熟练度】的上限为200,下限为-107。
            如果某一学科的【技能熟练度】达到上限200,那么下周周一该学科会自动升级(A*除外:这种自动升级方法无法得到优秀)。
            如果某一学科的【技能熟练度】不大于-100,那么下周周一该学科会自动降级,除非无级可降。
            因此哪怕得了A*也请对学业上点心。


            IP属地:广东6楼2023-08-25 13:39
            回复
              科普部份完毕,接下来是一些简单的源码分析方法与心得分享
              首先,最好不要尝试直接对着html查询。html由sugarcube/twine源码编译而来,直接去查html往往会让你一头雾水。
              这里放一个dol的仓库链接:gitgud点io/Vrelnir/degrees-of-lewdity
              将源码clone到本地,参照文档内的做法配置环境。
              (什么,你不会英语看不懂?多专心听课吧)


              IP属地:广东7楼2023-08-25 13:45
              回复
                clone到本地的是一个(较为)复杂的文件结构,不要紧。用vscode打开仓库文件夹,然后在侧边栏检索,在不额外设置过滤条件的情况下vscode默认搜索全部文件。
                首先是要定位你想要找的地方。dol作为一个面向字符串编程的文字游戏,同一场景中逻辑、操作流程和文本是放在一块的,因此寻找对应场景的文本是第一选择。以考试为例:

                选择低频出现的语句(最好只在这个场景内出现,同时要避开人称代词和动态内容),这里选择“Pass chance”,找到对应代码块:

                P. S. 汉化版源码暂不公开,只能找到英文版源码,因此现阶段代码探究必须使用英语版


                IP属地:广东8楼2023-08-25 13:51
                收起回复
                  如上图所示,发现关键变量$exam_chance($为变量名前缀),继续顺藤摸瓜,从众多搜索结果中筛出无关项(看内容和/或文件名),找到与考试通过相关内容:

                  至此,已能了解到另一个隐藏变量$_subject + '_exam_difficulty'同在控制考试通过与否,接下来重复上述流程,按图索骥即可。
                  此方法要求有一定代码基础,并要对sugarcube/twine语法有一定了解(例如了解widget是一种方法声明关键字,双尖括号代表方法引用等)。


                  IP属地:广东9楼2023-08-25 13:55
                  收起回复
                    本文到此结束,希望能启发更多人探索游戏机制,至少不要被弄的一头雾水(
                    当然,英语和代码知识是基础,前者尤为重要。推荐大家都去学学英语


                    IP属地:广东10楼2023-08-25 13:57
                    回复
                      好,前排支持


                      IP属地:江苏来自Android客户端11楼2023-08-25 14:00
                      回复
                        lz求一求舞蹈时观众反应的机制


                        IP属地:北京来自Android客户端12楼2023-08-25 14:05
                        回复
                          一次不过等下次就行了,等级越高涨的越慢。不过这个看运气,运气好三四十也可以过


                          IP属地:江苏来自Android客户端13楼2023-08-25 14:12
                          回复
                            给技术大佬点赞


                            IP属地:广东来自iPhone客户端14楼2023-08-25 14:13
                            回复
                              是大佬啊


                              IP属地:江西来自Android客户端15楼2023-08-25 14:26
                              收起回复