eratheworld吧 关注:81贴子:1,375

悄悄地画饼——自制era企划

只看楼主收藏回复

等tw更新、等代码流程重新稳定下来,太折磨、太折磨
在tw的高屋上建我脑海中的角色行动的瓴,太困难、太困难
为了描绘脑海中的梦境,稍微试着自己做一下era好了
我画了不等于我最后做得出来哦?虽然就算做出来了也很可能不会大肆传播吧(哪怕一直有在留出接入口上的余裕)


IP属地:吉林1楼2024-08-17 02:25回复
    目前手头上要做的、是先把基础的“每个回合”写出来。我打算用一套稍微复杂的系统,去记录角色的喜怒哀乐(不是像tw的param这种只增不减)。目前姑且是准备了“喜、怒、哀、乐、爱、恶、惧、惊”八种的空间。
    然后已经实现了的,其一是超级灵活的绘图,就是我之前在主吧水过的那个小玩意(这东西实际上是在做这个企划的时候搓的,只是不知道tw和这边哪边先用上)。
    预计中,它只会在对话里使用、不会像tw那样作为场景中角色的切换按钮而常态显示。毕竟,绘图的超级灵活包括了“口上可以自由增减资源文件、可以自由设定零件种类、可以自由设定图片大小图片显示比例”之类。那么常态显示的统一化,是难以做到的(虽然我会准备一套基础的零件包...)
    被实现之物的其二就是“超级灵活的角色增删”了。我实在是厌倦了csv、厌倦了删除一个角色就要报错、厌倦了角色编号稍有变更就会出bug的事实。我实现的方法,是将代码中参与读取的那个编号(例如target里存的东西)仅作为代码层面的东西、而角色本身另有真实编号、每次读档的时候扫描角色。
    虽然主角各种意义上的编号都还是0,但在这个0之后,帕露西的真实编号就可以是66、琪斯美的真实编号就可以是74。主角之外只存在帕露西和琪斯美这两个的情况下,帕露西的代码编号是1、琪斯美是2,但要是删除了帕露西,那么琪斯美的代码编号就是1了
    ——操作角色本身的属性,利用省略TARGET而实现(在一切留给口上的余裕里,运行时的TARGET值一定是口上角色本身的代码编号。想要操作其他角色也准备了工具),这样就能保证无论如何增减口上增减角色,口上文件里的代码本身都不用变化。
    最后还有个正在做的,是地图——框架已经搭好了。
    比起tw原版的地图,我使用了某种“地缘地理”——没有固定的地图、场所的个数仍然是可以增减的,场所对应的编号也是可以更改的。这么做是为了“玩家可以在任何合理的地方开辟属于自己的建筑,例如大豪斯、例如地下室、例如农田、例如商店”。
    顺带既然是地缘地理,那么场所到场所之间的时间就也不必固定了(tw原版固定为2)。存储是存储在了图的邻接矩阵里,寻路用的是“如果我是DJ你会爱我吗”算法(dijkstra),属性什么的存储在字符串里、也是广阔天地大有可为(大有可为,指只搭了框架还没做好具体的内容)
    至于游戏本身,初步的命名是“eraTohoUnderground”,因为我没能力做出一个广义上的幻想乡。不过地图什么的也留出了增添的余裕。
    或许以后可能真的有一天、我会通过一个又一个的“幻想乡局部”合成出一个我幻想中的世界吧。不过现在还是别想,且行且珍惜、且行且珍惜呀


    IP属地:吉林2楼2024-08-17 02:48
    回复
      必然是无牛的,甚至连稍微过度一些的东西(例如触手、例如本格sm)都大概不会有吧。毕竟比起黄色(我眼馋莉莉丝的王座那种设计很久了)、优先想要实现的是一个日常的世界,一个我魂萦梦绕的地底世界。但后宫绝对要有、必须要有,恋人数必定从一开始就不设置上限。
      顺带突然想到口上的读取也是动态的、未必需要先有0号再有1号再有2号。这么做也是为了迁移的便利、虽然做不出来/没人玩的话就不会有人写口上吧(笑)
      没人写我就自己编,千金难买我开心呀~


      IP属地:吉林3楼2024-08-17 02:54
      回复
        稍微把target做了一下,现在可以手动切换target了。不先做这个的话之后调试起来会麻烦
        指令目前有4个了,结束当天、会话(测试指令的可用性)、移动、切换target(主要是调试用,以后很可能把它拆成两个指令塞在ui的位置)。不打算做tw那种“常态把在场角色铺出来”的角色列表,甚至“通过列表选人”都打算做成需要解锁的内容。
        移动的地图也是,不会有绘图。一部分是由于地图的动态性、不太好画(但还是可以用算法去生成),但也是因为我想要致敬那种古早的文字游玩——地图自己画、自己脑补。同样地图只有名字的话就不存在看不明白地图的情况了(回避tw游玩时的问题之“角色去了xxx但xxx在地图上的哪”系列)


        IP属地:吉林4楼2024-08-17 19:17
        回复
          修了一下寻路算法,由于备份回退得不对导致出现了一个我之前修过也测完了所以以为已经修了的bug(找到后真是哭笑不得)。
          tw的玩家移动和角色的行动其实是割裂开的,我要构思一种办法把它关联起来。初步的想法是“指令执行的时候也正常过回合的部分计算”,这样的话大概就很难出现“移动:中继点有xxx、一停下来却根本没有”的bug了(tw自己做行动模式的话这个东西是完全没办法修的,tw本身的行动模式框得很死)


          IP属地:吉林来自Android客户端5楼2024-08-18 05:41
          回复
            说到底最难控制的还是角色的移动了。停留在一个地点做一些事,那完全简简单单。但是一旦动起来,就需要考虑文本的不同情况、考虑行为与移动之间的关联逻辑了。
            -
            比起tw的“随机移动、随机做事”,我是一定要做出来“有目的性移动、有目的性做事”的。
            -
            简单的,例如“为了某件事而前往固定地点”。复杂点,就要牵扯到移动的中止了(例如散步时遇到玩家就停下、或者做一件事时玩家经过就跟着走)


            IP属地:吉林来自Android客户端6楼2024-08-18 05:47
            收起回复
              TW用睡眠度来控制就寝、保证一天只能就寝最多一次,但那样的就寝系统我不喜欢。本来还想做每日结算事件的,但是既然就寝变成了最少睡四个小时、可能当天就能醒的“熟睡浅眠”,那就做不了每日结算事件了


              IP属地:吉林7楼2024-08-18 19:33
              收起回复
                姑且把目标式移动搓出来了。由于完全是自己维护所以不比在tw的基础上做简单多少,但也因为完全是自己的东西所以写得很顺畅。接下来的计画是先给一部分角色制定一套行为模式、然后再去做指令交互相关的内容(例如角色好感啊角色印象啊之类的)


                IP属地:吉林8楼2024-08-19 02:05
                收起回复
                  现在在做自由行动&移动的地文了。
                  tw的“什么时候运算、什么时候出文本”这点我非常不喜欢,所以我把计算和文本完全分离开成了两个小阶段。考虑了一下自由行动和移动一共能组合出7种地文,分别是:
                  1、自由行动进行中(包括一回合切换自由行动种类的情况)
                  2、自由行动开始
                  3、自由行动结束
                  4、角色移动后和玩家位置相同、并开始自由行动
                  5、角色移动后和玩家位置相同
                  6、玩家没有移动且角色本来和玩家位置相同/角色往玩家来的地方移动且玩家往角色来的地方移动、移动前角色在自由行动、移动结束了自由行动并且改变了位置
                  7、玩家没有移动且角色本来和玩家位置相同/角色往玩家来的地方移动且玩家往角色来的地方移动、移动改变了位置
                  不得不说,由于回合流程是自己维护的,就不用花里胡哨的去做“xxx准备开始行动”或者"xxx结束了一个行动、准备开始另一个行动"了。tw里只能做成那样是因为tw本身的流程有限制(印象里主要是出文本的时点)、必须在本回合估计下回合,但自己维护的话就完全不需要了,硬读就好了


                  IP属地:吉林9楼2024-08-19 18:06
                  回复
                    为了实现“玩家初期不能去一些地方”而狠狠修改寻路算法,苦恼至极而后终于发现问题出在前面的一个LOCAL变量被混用了,相当愚蠢。
                    这个“能不能去”是可以修改的地图属性的一部分所以可以很灵活地增减,不能去的地方寻路也不能经过、甚至根本不会出现在可选地点里(这也是不能画地图的一个原因,桀桀桀,让玩家自己探索!)


                    IP属地:吉林10楼2024-08-20 02:37
                    回复
                      现阶段的目标:完善帕露西的自由行动(用来测试和展示地文、做完这个才能开始做更细节的交互)
                      人物这块我做得相当模块化,只要做出来一个剩下的(代码上)都可以照葫芦画瓢!


                      IP属地:吉林11楼2024-08-20 02:40
                      回复
                        顺带发现一个很整蛊的事实:移动时、开地点列表时的时间复杂度是O(n^3)。直观点来讲,如果有99个地点,那我开列表要足足两三秒。但是不开这个列表就不会特别卡(不开的话就得一步一步移动)。
                        过去的我提前备注好了“唯有地点的编号必须按顺序、不能太随意”,现在一试、原来是这个意思
                        虽然说只要我再多打一个用来存储抽象地点编号和实际地点编号的列表就行了、像我做角色列表一样,但是那样维护起来困难不说、使用起来也会很难受,所以呀咩咯
                        顺便,tw的寻路是人工打表,根本用不到dijkstra,所以时间复杂度只有O(m*n),m<<n那种。但是我要实现的是“玩家可以在任何合理的地方建成自己的建筑”,所以必须保持高度柔软性的随机应变


                        IP属地:吉林12楼2024-08-20 03:08
                        收起回复
                          先把初始化做了一点,便于稍微展示一下地图的概念


                          初期的话,虽然地点看起来就那么多,但是我的希望是玩家可以从不连续的编号看出来“还有一些没解锁的内容”


                          IP属地:吉林13楼2024-08-20 04:07
                          收起回复
                            兄弟,你好强


                            IP属地:浙江14楼2024-08-23 19:05
                            回复
                              啊?


                              IP属地:河南来自Android客户端15楼2024-08-24 12:46
                              回复