PHP版本从7.3升级到8.1中遇到的坑汇总贴[不定期更新]

这是来自2019年的前情提要:将PHP版本从5.6升级到7.3中遇到的坑汇总贴[不定时更新]

提示:这是一篇技术博客,请普通玩家不必关注此文。

总之,随着时代的变化,为了优化网站执行效率,为了实装更多新科技,为了与各种新型框架接轨,在3年前将PHP版本升到7.3之后,今次将再次将其升级到8.1。

目前经过大约一周的密集调试,升级工程已经基本完成(不过只是确认了各种基础功能能正常工作,可能会有各种小功能会导致异常)

因此这是另一份技术留底。希望有同类问题的人能搜到此篇Blog

PHP8不支持从Null,或者未定义变量中执行各种数组/类的操作

最常见的情况是,假设一个数组 $arr = DB::select() blabla这样的操作,但是这个数组并没有从数据库中查询出任何值,接下来如果使用 foreach 或者类似操作,可能会报 invalid argument supplied for foreach() 错误。

(对,是可能,因为有时候不一定会出这个错误,因为历史遗留太多,暂未查明)

另外,对于需要链式调用的对象(例如 blabla()->foo()->bar() 这种)的情况,如果中间有一个返回了null,那么整个链式调用会断掉。需要手动处理。
PS:PHP8中有一个nullsafe写法可以很方便的解决↑上面这个问题,具体可参见PHP官方文档 https://www.php.net/manual/zh/language.oop5.basic.php#language.oop5.basic.nullsafe

解决方案:挨个改吧……写个if !empty 什么的……

除以0现在是Error而不是Warning

如题,现在除以0会直接error报错 division by zero

解决方案:挨个改……

一大票隐式类型转换全部失效

例如:数组的下标只能是数字或者字符串,不能是另一个数组或者对象或者null(以前版本会进行隐式转换)。出现这种错误的话会报错 Illegal offset type

解决方案:挨个改……这个改起来会很痛苦,只能看到一个报错改一个。

常量名无法自动转为对应字符串

旧版本的PHP中,如果一个字符串忘了打引号就使用(这相当于一个常量),那么会自动的将其转为等同于这个常量名的字符串。

举例  foo(aaa);
如果不存在一个名叫aaa的常量,那么等同于 foo(“aaa”);
新版本中这个转换失效,会报错未定义的常量 (Undefined constant)

解决方案:挨个加引号!

create_function 函数被废弃

在旧版本还没有回调函数的之后,create_function可以用于在类似于array_map之类的函数中执行类似于回调函数的功能

新版本中会直接报错 create_function 未定义

解决方案:改为回调函数的模式

implode不再支持分隔符在后,操作变量在前的写法。

参见 https://www.php.net/manual/zh/function.implode.php

虽然我自己没用这种写法,但许多第三方库用了这个,如果这个第三方库不更新,需要手动更新,如果这是个用composer管理的库……那就先无能狂怒一会吧!

解决方案:手动改~

许多函数如果要求一个数组作为参数,如果传入参数不是一个数组,那么会直接报错。

会报类似于 Uncaught TypeError: foo(): Argument #1 ($bar) must be of type array, string given 之类的错误(也有可能是 null given)

没有什么规律,似乎是非常混乱的出现。

解决方案:找到一个改一个。

单例类的方法必须显式指明 public static function

某些第三方库可能会偷懒只写 function 在PHP8中必须要显式标明

解决方案:改改改~

 

之后有新的还会不定期更新。

新版 Edge (Chromium 内核) 在特定情况下,页面上如果有大量不可见元素时,可能导致神秘卡顿现象的问题成因以及解决办法

前言

从标题看起来,这并不是一个与 Linodas 有关的博文,对吧?

但是,标题说的这个现象,这的确是由修复 Linodas 的一个故障引起的,加之我并没有技术 Blog 一样的东西,想来想去,还是发在 Linodas 的 Blog 上最合适。

这个问题是什么呢?简单来说:

这应该是,小学生套高数公式,然后发现变量为特定数字时,某一型号的计算器型号算出来的结果和其他不一样。

——by 某不愿透露姓名的……

此现象的简要阐述

那么,简单来说就是,在之前的几周,有用户回报在用 Edge 访问 Linodas 的许多页面的时候,都会遇到非常莫名的卡顿现象。

本来以为只是 JS 方面的问题(毕竟我自己不太会前端,JS写得烂也是正常),但经过仔细排查,逐步排查了 JS 问题和页面布局问题之后,发现这个问题并不简单。

具体如何发现故障点就过程就不阐述了(其实很简单,二分法嘛,故障不在这一半,就一定在另一半)。最终发现问题竟然非常简单:

Edge (Chromium 内核版本) 会在页面上读取了一个大型样式表 (CSS文件) 之后。
如果页面上大量元素被设为了不可见
(这包括 类似于 <div hidden> 或 style=’display:none’ 等)时

部分特定的 Edge (经证实与版本号无关) 将会产生巨量卡顿 & 失去响应。
卡顿时间将会随着元素的数量而迅速上升(经过测试大约300个DOM开始出现可体感的卡顿),同时导致CPU占用率飙升,风扇狂响等。

测试页面

以下是一个测试页面,请使用 Edge 访问:https://www.linodas.com/temp/edge_stuck_bug.html

此网页的核心是包含了一个被包裹在

<div hidden></div>

中的巨量(600个)

<div>Edge</div>

对,就是如此简单的结构。(可以自行查看源代码)

当然,除此之外,这个页面还引用了一个 Tailwind CSS 库 的完整版。(必须要引用这个库才能重现此 Bug,但实际上无论用不用到其中的样式,都会触发这个 Bug,这一页面就没有使用其样式)

页面上的JS元素是为了方便视觉察觉而设置的,与此 Bug 无关,可以自行去除。

请注意:此故障在纯本地环境(地址栏是file:///C:/blabla.html  这样的时候)将不会重现,但如果是 本地 Web 环境(如http://localhost/blabla.html)这样的情况,会重现。

请注意,部分 Edge 并不会触发这个 Bug,经过大约30名用户左右的实测,有大约一半用户的 Edge 是完全不会触发这个现象。此故障与版本号无关,截止本文发表日,我的 Edge 版本 102.0.1245.44 会触发此 Bug

目前此故障从未在 Chrome / Firefox / 其他基于 Chromium 的浏览器 / 移动版 Edge 下出现过。

如果你没有遇到卡顿现象,那么可以不看了,如果你遇到了,那么可以继续向下看。

解决办法

很显然,在一个不可见元素里面包含很多元素,这是网页设计中很正常的部分,无论是遮罩,模态窗口,标签页,模拟<select>等,许多网页设计都需要在一个不可见元素中包含很多元素。

因此这个故障几乎是无法避免的。无法解决。

当然,可以有变相解决办法,例如:

1.避免使用不可见元素

简单来说就是用 visibility: hidden; 的方式取代
但是,大家都知道,这个 CSS 会导致元素的占位被表现出来,不是真正的不可见。

2.使用扭曲(脏,Hack)的方式来替换

最简单的办法是使用
position: absolute;visibility: hidden;left:-99999px;

可以完全平替掉
display:none

缺点嘛……这也太丑啦!而且如果有很多东西都涉及这个就会很麻烦。

3.修改页面结构,不使用不可见元素,直接去除,需要用的时候用 Ajax/其他办法 临时加载进来

要改后端代码,愿意改也没问题啦。

4.不用Edge

完美方案!

但是!

经过我询问一个不愿透露姓名的 Microsoft 员工之后,得到了一个惊人的答案。

在 Edge 的启动快捷方式后面附上参数
--disable-features=msEEPageClassifier
之后,就会恢复正常。

实测有效!

想不通?对把,想不通就对了,因为我也想不通。

此参数的意思至今不明,截至 UTC+8 2022-06-21 22:38 为止,所有搜索引擎均无此参数的解释。个人猜测是 Edge 的某个内部私有参数。

设置此启动参数后重启 Edge (可以通过 edge://version 确认参数是否有效) 之后就能消除此故障,经过测试,所有用户加此参数后都无法再复现此故障。

根据群众猜测,从参数名来看,或许是页面内容(统计学意义上的)分类量化(存储以备后用),但这也无法确定。毕竟没有任何搜索引擎有结果告诉我们答案。

那么这篇博文的意义是什么?

  • 督促微软赶紧修复这个 Bug!
  • 如果有高人能完整解剖这个故障的成因,那就再好不过,了却我一桩疑惑。
  • 方便有人遇到同类故障的时候,可以搜索到本博文。
  • 如果你有兴趣,也可以前往 Linodas 随意的玩一玩。

开发者茶水间:初见体验改善计划,账号归一化,界面重制与手机版,莉游社

大家好,这里是莉诺雅,欢迎来到最新一期的开发者茶水间节目。

虽然现在流行的趋势,这类发饼节目已经有了新的名字,一般来说都叫《制作组通讯》(虽然对于 Linodas 来说,更应该是《制作人通讯》)。不过,《开发者茶水间》本身是个很有历史韵味的标题,出于对历史的尊敬,我还是用这个名字作为开头。

随着爬塔系统的上线解决的心结。加上最近的一些取材,终于到了可以给 Linodas 来一次“从头收拾旧山河”的机会。下面就逐步来说本次制作组通讯的内容。

初见体验改善计划:从零开始的莉诺达斯旅程

过去的一篇饼中,提到了初见体验改善计划这个大项目。目前,很多小细节的修改都已经在正式服上线了(什么?还有测试服?那当然是没有的,Linodas 的正式服就是测试服,我改东西都是直接改正式服的。毕竟,一个码农的生命中有多少机会可以直接改正式服务器的代码呢)。当然,这些都是小部分,就目前而言,我们还有一些更多的计划,但初衷都不变,在于“不能让新人玩游戏的前几个小时的蜜月期内没有东西玩”。

没错,随着游戏产业的发展,现代玩家对游戏的蜜月期已经短到了几小时,甚至几分钟。这对于 Linodas 这种 PS2 时代的游戏(请注意,那个时候别说智能手机了,连普通手机都不一定人人都有),是难以想象的事情。

虽然我们并不在乎所谓日活周活,对于玩家弃坑玩其他游戏这种事情也是大受欢迎的。毕竟通过各种心理学暗示,制造损失焦虑,设计巧妙的“付费点”等龌龊而拙劣的方式逼玩家在线或付费的方式。完全就是现代手游为了恶性挤压抢占玩家的业余时间搞出来的东西。我们自然不会搞这种东西。当然,这并不代表 Linodas 是“慈善网游”,实际上,单纯我认为一个游戏赚钱应该“温和的,小心翼翼的,缓慢的,细致的”赚钱,而不是脑子里面只顾着赚钱。

当然,这是题外话,但我每次一写到这些东西就会比较激动,因为此被群友喷过很多次,请谅解。

那么,言归正传,初见体验改善计划有哪些计划呢?下面是一些简要的列表,这其中的一些内容可能需要新系统做好之后才能推进,而一些内容是可以立刻推进的,另外有一些内容是已经做好了并实装了的。

  • 移动力缓和:将会继续推进地图重制系统,确保缓步的增加内容的情况下缓步的增加玩家接触内容的效率。
  • 新的移动模式:接上一条,“徒步”旅行的模式目前也在稳步推进中。这确保玩家可以不受限制的在大地图上移动。
  • 增加低级地城:一个LV2的新地城已经实装过了,除此之外,还会在低级阶段(LV1-10)阶段增加一些地城,甚至包括重复等级的地城。来确保低级玩家的趣味性游玩体验。
  • 推荐好友系统重制:在很多年前的另一个饼里面提到过。会将现在过时的RAF系统(学名叫做 Refer-A-Friend,这是在2011年前的早期游戏中常见的引流新人的系统,甚至在英雄联盟早期都使用过)重制为更加现代化的“导师系统”。
  • 减少新手损耗:这包括已经实装的低级地城失败之后返还行动点数的设定,以及之前水友提过到“演习券”的系统,当然也包括更多的避免新手在学习探索阶段遭受损失的系统。
  • 增加不受CD限制的内容:此前的试运行的FATE模式的无CD限制的地城早就已经实装了,今后会将其和原来的“隐藏副本”系统尽量统合,并结合新的“探索系统”来达成类似于“遭遇战”一样的玩法(请注意:本条别说饼了,面粉都没有,还是种子
  • 新手签到,新手任务等等:新手签到系统现在的技术问题已经全部解决,会在稍后的版本中就会推出,除此之外,还在考虑做出更加让新手能流畅顺利的体验尽量多的系统的缓和设定。
  • 其他:还会有很多其他设想的东西。

虽然一个游戏到了开发十三年才开始照顾新人听起来很蠢,但这与其说是照顾新人,不如说也是属于缓慢的,渐进式的,慢慢让游戏变得更加现代化。改革是急不得的事情。需要温和而缓慢的进行。

此外,按照传统,所有的新人福利如果导致老角色无法享受,会尽一切可能的办法计算,追溯并一齐补发给老玩家,这是 Linodas 一直以来的惯例,已经实行了非常多次。这一点请务必放心。

账号归一化:欢迎回到节点中枢,冒险者/旅行者/指挥官/舰长/博士

虽然 Linodas 很早就使用了账号和角色分离的系统,但由于很多历史原因,以至于这个账号本身只是一堆角色的集合体,大多数内容包括游戏生涯内容依然关联在角色上。

过去了解 Linodas 的玩家都知道,这是因为我当年制作 Linodas 的时候根本不知道还可以做成这种角色和账号分离的机制,后来的系统是在原机制上分离出来的,以至于绝大多数内容都只和“角色”关联,账号只是容纳了这一大堆角色的合集。

不但如此,游戏中还有很多地方的用语比较混乱,诸如“角色”“玩家”“账号”“通行证”一类的概念胡乱存在,以至于让玩家较为混乱。

因此,为了让账号彻底和角色脱钩,也为了让后续的一些改进能得以运行,Linodas 将会在未来更新的中逐步的对这种混淆概念得以清理,来让整个游戏的运行逻辑更为清晰。总体的目标是,希望让“角色”成为更真实的,在克鲁利斯世界中冒险的英雄,而不是玩家的唯一化身。

那玩家的唯一化身是什么呢,虽然其实 Linodas 并没有这种概念(很明显,你建立的角色并不是其他手游中的“英雄”“随从”“干员”一类的指向),所以可以单纯的理解为收拢所有角色之上的账号控制者。或者,可以更中二一点,玩家的化身其实是一个坐在世界之上的一个浮空岛中(不妨将其设为“节点中枢”这种又带科幻又带奇幻的名词),在“冥冥之中的潜意识里”,“掌控着角色在棋盘上冒险”的“天理维系者”。

当然这只是奇怪的中二而已,诸如魔兽世界这样的游戏,同一个账号下有多个角色的时候,事实上玩家也没有被指代更高级的角色。

好,那么来看看为了进行这个账号归一化的

  • 捐赠系统&龙之纹章账号化:龙之纹章现在将会在账号级别生效,包括玩家捐赠获得龙之纹章等都会跨角色可用,同时,PLUS账号既然是“账号”,那么在获得PLUS账号订阅之后,也是所有角色都可以享受。
    • 有介于此,这涉及整个捐赠系统的调整,可能将会涉及部分物品的价格变动,会在之后的文章中说明。
    • 可以参考的是同类游戏 World of Dungeons 中的“白金账号”概念。
  • 角色限制放宽:玩家可以建立超出3个以上的角色
    • 但会限制可同时激活的角色数量。
    • 未激活的角色和已经激活的角色,将会有功能上的区别。
    • PLUS账号可以增加可以同时激活的角色。
    • 目前这一功能还在商讨规划中,细则会在今后公布。
  • 召集令系统账号化与重做:将使用“推荐码”或者其他方式来召集新玩家
    • 上一条已经提到过,这就是前面说的导师系统。
  • 兑换码账号化(暂未决定):每个公共兑换码现在只能在账号级别被使用一次,然后可以被决定领取到哪个角色上。
    • 请注意,考虑到这一条改动会让玩家损失游戏内容,所以这一改动还未决定,将会在玩家会议中商讨后再做定论。
  • 账号绑定的仓库:一部分卡片和物品(主要是通过特典,兑换码或者其他特殊渠道获得物品等,游戏内物品不在这一范围)可以放入账号仓库,其他角色可以将其领出。
  • 账号绑定的成就:其他角色在建号时会自动获得这些成就(成就奖励也会一并发放)
  • 权限绑定账号:某一角色获得的权限(例如各类大小GM权限,管理权限,版主权限,仲裁权限等)会一并在其他角色生效,并且未来会对这一权限进行公示,以方便识别哪些玩家拥有怎么样的权限。
  • 游戏生涯关联至账号(暂未决定):玩家的游戏生涯数据将会尽可能的关联在账号上而不是角色上,这包括上面说的成就和历史游玩记录,当然也包括多个角色才能完成的生涯数据。
    • 同时,生涯数据越多,玩家将可能可以领取一些特典,例如,玩家达成了一个满级的某职业角色,那么可以领取一个特典到账号仓库中,并在其他角色下使用。
    • 请注意这只是暂定,为了避免“必须要把每个职业练一次才有完全体”,“练XXX职业一定要练一个YYY职业当一个副职”这种“教玩家玩游戏”的情况出现,这一操作会在今后的玩家会议中的商定。
  • 角色转移:玩家可以将一个角色移出某一自己的账号,并移入到另一个自己的账号上。
    • 这用来解决以前因为三个角色限制而不得不多开账号的玩家的历史遗留问题。
    • 这并不是一个强制操作,Linodas *不认为*同IP下的多开账号违反游戏守则。你可以继续保留多个账号。
    • 此功能早已实装,但只能手动联系管理员进行操作,现在就可以使用。

如果以上的改动都做完了,可能会考虑增加更多的功能,来让角色更加真实的变为一个实在的冒险角色。请注意,上面的内容是,而这里的内容是面粉。这是根据同类游戏 World of Dungeons 中的一些特性的 Linodas 化:

  • 传奇等级:玩家可以将一个角色进行转生,这样建立的新角色将会获得特别的“传奇等级”,至于有什么用,还没定,以后再说。
    • 这样的角色还可以进行继续转生,这样传奇等级会向上叠加。
    • 即使不转生,也可以直接退休一个角色,这样可以获得灵活的,可以增加传奇等级的圣物,圣物除了可以自由的增加任一角色的传奇等级外,也可以用来召回一个已经退休的角色。
  • 名人堂:退休角色的总分数(未来会设定这个分数标准)的排行。
  • 英灵殿(暂命名):被退休到名人堂的顶级玩家的数据,将可能被做成在特别的副本地图中的可挑战NPC,也可以作为可被玩家自由使用的助战队友

考虑到实际情况,以上面粉可能将不会被烙为饼,仅仅作为一个先期的思路预览。

总之,这一改动就我个人认为来说,是一个对接下来 Linodas 的制作很有利的改动,同时,我也认为这是总体上对玩家有利的改动。

界面重制与手机版:啊,前端,美术与设计,是我心中永远的痛

众所周知,我个人作为一个汽车修理工,随身携带扳手……啊,串场了。

众所周知(老众所周知人了),我作为一个后端码农,对于各类前端和美术事务是极其陌生且无能的。对于很多大佬来说,做一个网页可以轻松的用各种框架做出手机版,但是我不行,不行的原因并不是因为 Linodas 的技术达不到,而是因为,我很菜!

菜到什么程度呢?许多年前我写了一篇开发日志阐述了为什么我做不出手机版。请注意,这是一篇六年前的文章。但时至今日,我已经初步稍微的有了那么一点点知道怎么设计手机版网站,加上也取材过很多手机/桌面双平台网站。经过许多年的技术沉淀,终于让这一个在六年前完全不可能完成的任务,现在变得可能。Linodas 现在已经有了所有可以制作手机版的技术前提。

很多暴躁网友会把这个形容为“吃X都赶不上热的”。手游火的时候你干嘛去啦!

诚然,作为一个经常开展批评与自我批评的人,这点我是承认的。下面就是解释:

我自己是很清楚知道自己一如既往的一个毛病,那就是“”。这里以英雄联盟/DOTA类竞技游戏举例,其他玩家可能玩10场就入门,玩100场就很会,玩1000场就是精通了。但我不一样,我哪怕玩了1000场,也和别人玩了10场的人没什么区别。这直接导致我在任何PvP类竞技游戏中玩到后面都相当痛苦,因为别人可能10场就会有大大的进步,而我不会,我1000场的进步也就是相当于别人10场而已。但系统已经会为我分配匹配了1000场的玩家了。这直接导致我后期英雄联盟即使赢了也是躺赢局,输了就是全面暴输局,不存在我一个人带飞全队的情况。

之后玩守望先锋甚至到了什么地步呢,我在知乎上说我竭尽全力也只能打900分,知乎网友说“我小学五年级弟弟都能打1200分”。我还有什么话可说呢?

至此之后,我就再也没有玩过同类的竞技类网游,同其他人动不动就责怪队友坑不同,我玩此类游戏从来没责怪过队友坑,都是责怪匹配系统为什么给我分这么强的对手。换言之,我自己就是坑。有鉴于此,我在此后也不玩任何PvP团队竞技类游戏了。

尽管如此,我还是认为我自己是很强大的一个人,为什么呢?因为我在敢于承认自己又坑又菜的同时,也在以这种又坑又菜的速度进行学习和进步。

那么,言归正传,为什么要绕这么大一圈呢,答案就是,“因为我笨,加上 Linodas 是一个极其古老的网站,其历史遗留的特殊性,使得 Linodas 的手机版制作不是不可能,而是性价比极低,直到今年的几次取材和高僧点拨,才解决了最后的几个难点。获得了一个性价比高,稍微简单易行,并且渐进式的手机版制作方案

对于其他码农来说,可能这就是很轻松的事情,对于我来说,这却是一个漫长而奇妙的旅途。

那么以下就是关于这一内容的饼:

  • Linodas 会尽我最大努力,推出完整适配的,同时兼容横屏与竖屏的手机网页版与平板网页版。
    • 这一功能会进行逐步实装
  • 为了适应这一改动,会对全部现成的PC版网页界面进行修改,以适应响应式布局。
    • 同样,会逐步实装
  • 依然没有任何 App 的制作计划,这个是我真不会!
    • 唯一的可能是在 Android 平台制作套壳浏览器,将会在所有页面响应式布局制作完成之后进行。

更多关于手机版制作的前瞻会在今后的文章中的推出。

莉游社:为了建设更美好的世界而战

Linodas 目前使用的社区包括 Trow 的 Linodas 讨论区和 NGA 的 Linodas 讨论区(这两个链接都可以在博客左边找到)。除此之外,贴吧的莉诺达斯吧也是一个讨论区(尽管没有官方进驻)。

在 Linodas 诞生之日,国内是不流行游戏自建社区的,各大游戏的讨论都是在专门的游戏论坛进行,这甚至包括一些热门游戏都是如此。时至今日,很多小众游戏都没有自己的社区,而是挂靠在各大大型游戏社区OR贴吧进行。

但在今年的一些感触和与云游高僧的交流。让我知道了自建社区的必要性,加之在进一步的取材其他游戏之后,明白了一个高度整合的社区(而不是挂靠一个 Discuz 论坛)对游戏的建设的重要性。

以下便是这一部分的

  • Linodas 内会建立一个“莉游社”,作为游戏内置社区
  • 此游戏社区会高度深度整合在游戏内,完全重新从零开始由我自行制作,而不是用一套现成的(诸如Discuz这种开源程序)论坛接入。
  • 有鉴于此,这个社区将会自带与 Linodas 完全整合的定制功能,例如自动接入玩家的账号和角色而不需要另外注册账号登录,玩家可以选择用哪个角色发表帖子,头像签名也自动同步。玩家可以自由插入物品卡片成就战斗记录等等各种链接。可以内嵌战斗录像,可以发布角色框(点进去就是角色介绍),发布组队与工会信息等。
  • 此论坛将会使用现代的“标签,话题与节点”的组织方式,而不是传统的“版块”组织方式。这一点可以参见著名案例 Bigfun
    • 虽然其实也想使用传统方式,但传统方式容易陷入“不分版块使得话题太乱,分了版块又会使得版面太冷”的问题。
  • 一部分游戏内置功能将会移入社区,例如,游戏首页公告将会变成管理员在特定节点下发帖。论坛的回帖也会在 Linodas 首页进行提示。各种盖楼活动等也将会即时发放奖励等。
  • 社区因为是重新制作,因此将自动兼容手机版
  • 社区建立完成之后,之前旧的社区也不会取消,依然作为对应论坛的 Linodas 玩家集中地。
  • 官方会对精华帖进行搬运,也欢迎热心玩家进行搬运工作。

结语

以上就是这次开发者茶水间的全部内容,虽然这里面包含的内容有80%都是饼,但请注意的是,这些饼都是一些独立饼,并不依赖于特定前置科技或者前置科技早已制作完成。并且在开这些坑之前,已经制作完成了完整的爬塔系统来表示游戏本体的制作依然是 Linodas 的重心(请参阅这篇日志)。所以,这些饼的实装速度,显然会比诸如改背包和做爬塔的速度要快很多。

那么,感谢收看本期的开发者茶水间节目。我们下期再见。

by 莉诺达斯 制作人 Lyragosa

新地城模式:远古地城,与一些探讨和愿景

虽然不记得是多久,但是 Linodas 大概在四五年前就一直停滞了主线地城的更新,而专注于制作各类周边功能。事实上,这并不是一个偷懒或者不想更新的想法,而是来自于我个人的一个奇怪心结,那就是:无限制向后加传统模式的地城可能并不是一个好的策略。

一直以来,我与 Linodas 都很反对所谓的“养成”“狗粮”“素材育成”这样的日式养卡游戏的调调。哪怕是玩家打通了游戏没有玩的内容了,宁愿让他们AFK了弃坑了,也比用无趣乏味的看录像来让玩家给自己的卡+1+2+n攻击力要好。产能低就应该放玩家去玩别的游戏,而不是想尽一切手段穷尽一切办法,甚至用损失焦虑把玩家每天捆在游戏里。

因此,Linodas 的地城发展陷入了瓶颈,我并不想强行设计出需要无限制的刷本刷素材的模式。尽管,这的确是一个可以解决所谓的长草的办法。同时,个人能力也无法无限制的向后增加新地城(这不光要累死人,而且显然会导致无限制的数据膨胀),而是想试试能不能利用我有限的技术能力做出更“有趣,好玩,更有策略性”的内容。

然而,在摒弃了养成要素之后,以我的脑子和策划能力,很难想出设计这些内容的办法。许多其他游戏是用各种随机怪物,随机装备,然后设计一套算法无限往上叠数值的办法。虽然 Linodas 并不是不能用这个办法。但这个看起来偷懒的机制,其实对技术要求更高。Linodas 的大多数技能(也就是卡片)都是直接写死的卡面,以我的水平大概很难做出那种看起来更泡菜的机制。

怎么办呢?这个心结一直困扰了我很久。因此 Linodas 的主线标准地城就此停更了许久。

虽然所谓“有心结”这句话虽然听起来颇为有一种“给自己找借口”的感觉。不过尽可放心,我是从来不找借口的,所以下面也会给出真实原因,那就是:

我又菜又懒!

没错,部分友商往往不愿意承认自己“技术能力低”同时“产能低下”,只会花式装死。对于这种赖皮行为,我是经常予以抨击的。因为我一直认为,有问题就老老实实承认,找一堆乱七八糟的借口来掩饰其实是一件很 Low 的事情,因此,我在掩饰完了之后,也实事求是的说明了情况。

因为个人技术水平的确很有限,加上 Linodas 的制作模式很难有第二个人能合作进来,所以,菜是肯定的,而且菜是原罪这个也没错。并且,因为三次元有越来越多的忙的事情,很难和当年在大学时候与刚毕业的时候那样非常轻松惬意的每天12小时制作游戏。所以,懒也是肯定的。

这几年来,虽说三次元生活遇到了各种颠簸流离,但 Linodas 也一直维持着技术级别的更新,内容的更新当然也有,甚至我自认还不少。只是,的确没有更新新的地城了,直到最近一年,才开始在增加一些低等级的地城。

之所以这么做,是一直在尝试打破一个魔咒:真的要靠不停增加新地城的方式来维持所谓的“产能”吗?这样下去我肯定会被自己累死的。能不能在现有的机制上做出更有趣,更有随机性,更有重玩度,最关键的是,更“简单”(指我做起来简单)的玩法呢?

当然有,在一年前的另一篇文章里已经说过了。

于是,在这几年来逐步解决各类底层和技术问题,包括重做副本逻辑,重写移动逻辑,重写背包逻辑(这是最痛苦也是最庞大的一块),以及将来会做的重做角色与账号逻辑,Linodas 终于可以加入一些稍微有随机性一点的玩法了。

而今次加入的就是那篇文章说的“爬塔”玩法。目前来说,暂时正式定名(暂时和正式两个词合在一起颇有一种怪异感)为:远古地城

远古地城总的来说有两个特点:

  • 关卡的怪物不一定是固定的,而可能是随机的
    • 这里的随机并不是真正意义上的随机,指的是在一个列表中选取的随机
  • 每个关卡中使用过的卡片都会被锁定到地城结束,在后续关卡不能再使用。
    • 可以理解为许多动作游戏/RPG游戏中的“BOSS RUSH”一类玩法。

熟悉的玩家应该看出来了,这其实就是一个很简陋的“锁船爬塔”的玩法。它的确……嗯,很简陋,很一般。而且和我想象中的不同,这种玩法制作起来工作量一点都不小。以至于我直到现在都还在想:这真的是一个有趣的玩法吗?

我个人认为应该算的,因为这种玩法将地城的所有关卡“视为”同一层,这意味着低级卡和所谓“有上位替换的下位卡”将重新派上用场,大量的被雪藏起来的无用低级卡可以重新发挥余热,也让 Linodas 的设计更像是“卡牌游戏了”(现实中的其他卡牌游戏,诸如“低星”“低COST”卡,都会设计出让他们能派上用处的玩法,而不是让你黄金大队突突了事)

无论如何,反正做都做出来了,同一关的怪物安排不同,并且将所有关卡纳入统一的卡片分配安排,想必在策略性,难度和对玩家卡片收集都是有了不少的新挑战。

目前已经开放了两个远古地城用以进行 BETA 测试

  • 位于莱萨达海岸的LV45远古地城:被荒废的古代雕像群
    • 此副本是真正意义上的远古地城,怪物安排是随机的(除去最后一层)
    • 此类地城未来还会制作多个,其中会包括一个LV10~20玩家使用的低级塔本
    • 此地城的掉落还未决定,参与模式也未决定
      • 但可以确定是
        • 地城本体是不消耗AP也无CD的(通关之后可以马上再次进入)
        • 地城入场需要消耗一个物品(类似于钥匙之类的东西)
        • 除此之外的还没想好,也欢迎大家提出看法。
  • 位于天枫城的LV50远古地城:梦魇交响诗
    • 此副本是将所有9个试炼地城的BOSS放置到一起的挑战,顺序和怪物本身是固定的。但依然会进行锁卡。
    • 虽然名字也是远古地城,但这一地城享受正常的副本冷却时间和正常的副本攻略消耗(每次挑战消耗15AP)。
      • 目前因为正在进行 BETA 测试,所以暂时没有消耗也没有奖励。

总之,耗费大概了两年精力(当然指的是物理时间两年,不是指游戏本身的制作时间,毕竟现实中还有很多其他事情要做)的“更随机化更有趣更有重玩度的地城”的第一部分终于尘埃落地,可喜可贺。而第二部分是做啥虽然还没开始决定,但最终的部分,是肯定要制作 Roguelike 玩法的地城。虽然不知道我制作出来的时候这类玩法还火不火,可能那个时候肉鸽已经又是过时的东西了。但这并不要紧,时间使一切都无关紧要。只有凝结于其上的人类精神永远光彩照人!(via 刘慈欣《地球大炮》)

最后,随着这一心结的告终,接下来 Linodas 将会按照正常方式更新和补完一些常规地城,这包括对新手阶段地城的补充,两个低等级团队地城的补充,以及LV45+的高难度地城的补充也会逐步进行。虽然这的确不符合正常游戏的开发思路(从外观看来,就像是一个游戏停更了五年然后突然腹泻式更新一堆东西一样)。不过,我一直都是这样,未来也会是这样。所以就这样吧……

by 莉诺达斯 制作人 Lyragosa

开发者茶水间:与新冒险者们一起再次迈出现代游戏的一步

大家好,欢迎收看本期的开发者茶水间节目。本期节目比较简单,而且几乎出乎意料的,全是做好的东西,基本上没有饼。当然,只是“基本上”……

每日登录奖励重做

在角色页面右侧一直有一个“领取今日的登录奖励”,实际上是给一个微乎其微的蚊子腿的系统。这个非常临时而测试的系统在 Linodas 里奇迹(甚至比最后生还者2还要奇迹)一般的存在了大概七年。(但这也很正常,众所周知 Linodas 中有极大量的做了一半然后神秘烂尾的东西存在,哦,要纠正一下,不是烂尾,而是“还没到排期”而已。)

而现在考虑到近期的一个契机,与一些前置科技的成熟,则终于到了要将其改革的时候了。

没有什么是永恒的,唯有签到和弃坑是永恒的

旧版的这个登录奖励系统简单来说,是一个每天可以点一次,获得一些蚊子腿,第二天开始的蚊子腿更多一点。连续点七天之后就会达到最大值,之后一直保持这个数字,如果断了就会回到第一天的蚊子腿。

没错,稍有常识的人都可以看出,考虑到这是2013年加入的系统,那么这个系统的来源就非常明显了:它来自于 Gungho 公司旗下的著名手游《智龙迷城》。唯一区别是没有友情点这种东西(事实上,我一开始还真打算过做友情点数,但当时的系统的确不足以支撑这种系统,而今天呢,其实也不知道够不够成熟……)

扯远了,总之,这一系统当时是一个临时的测试,单纯就是一个技术测试而已,做好之后也一直没动过,就这样一直延续了七年。

如今,这一系统将会彻底的改进为现代化的模式。大体如下

(请注意所有内容均为测试,不代表最终效果,即使最终效果上线了,也会经常频繁的,不提前通知的改来改去与反复横跳,当然一般来说都会通知,但有些时候也就不通知的顺便改了)

  • 旧的登录奖励系统内容会全部删除
    • (没错,全部删除,虽然每天有一点蚊子腿AP,但是很抱歉今后也没有了,在哪里补还没想好,也有可能就不补了,但那真的就是一点蚊子腿,为了未来着想,还是把那个系统移除了吧)
    • 因为这一系统年久失修,甚至我都找不到是从哪里改的了。
    • 由于蜘蛛网太多,考虑到也没什么大用,因此予以全数删除。感谢这个旧系统给我们带来的7年快乐(个屁)
  • 新的登录奖励系统是个全新的系统,当然还在那个位置。
    • 新系统是可以分为复数个组,每个组之间可以有单独的设定(包括有效期,适用人群,天数,内容等)也就是可以开出很多并行的不同的组。多个组也可以进行叠加,并且互不影响。
  • 总体来说,逻辑和大多数游戏的类似系统基本一致。
  • 新登录奖励系统可以包括有时限的“活动”类组(一般来说可能会是要求在14天之内登录7天,或者是10天之内登录3天,等等)
    • 没错,这意味着,几乎没有正常活动的火星游戏 Linodas,现在将终于可以开出“紧张刺激的签到活动”了。撒花。
    • 对,没错,甚至可以补开2009年6月的“开服活动”。
  • 除此之外,目前也有计划针对新人(自然,老玩家也算,只要没领过的都算),开一项永久性的单独的奖励组,送的东西会和今后的新人活动计划一起酌情考虑和发布。
    • 总体上来说,是为了让一个对 Linodas 饶有兴趣,动力满满的新人,不至于在游戏开头因为CD,AP与其他时限的限制,而没得内容玩。

这一系统目前已经是完工状态,实际上,第一个测试用的活动已经正式开启了。具体内容可以参见游戏内活动公告。

从克鲁利斯上第一个生命的萌芽开始……

……到巨龙时代的巨型野兽……再到凡间生灵们的第一次直立行走,你已经历许多。

一直以来,Linodas 和大多数“那个时代”的游戏一样(从Ogame开始,直到World of Dungeon……),作为一个新玩家,一上来给的游戏内容竟然是非常少的。以目前的设定来说,一个新手很有可能上来快则5分钟,慢则20分钟就消耗了全部可用的游戏内容,然后就得干瞪眼,等回复AP,等CD,等换日升属性升级……

总之,这让新人最有雄心壮志的时候,最热情满满的时候,却没有什么游戏内容可玩。虽然游戏中期开始就很符合现在的养生副游的设定,但前期的内容的确不足以让新人“啊,我要先肝一个小时”,虽然,未来的开发方向,包括开放世界的想法和大地图设定,这些饼都可以解决,但现在解决不了啊!

所以,登录奖励系统的重制其实也是侧面达成了这一点,通过在新人上来的阶段适当性的,有节奏的送一些东西,说不定就能稍微的改善这一现状,当然,内容上可能也需要改进(比如可能会新增数个低等级副本),但一切都宗旨都在于“不能让新人寒了心”。

有关于新手内容的更多情报会在今后的开发日志中说明,同时,老玩家也不需要担心,我游有一个一直以来的原则就是“能追溯的尽量追溯”。所以,全部旧的玩家,在新手签到(或者是其他的什么东西)上线之后,都可以一视同仁的再领取一次,童叟无欺,尽情放心。

以上就是本期的开发者茶水间节目,我们下期再见!

by 《莉诺达斯》制作人