ob电竞·(中国)电子竞技平台

ob电竞·(中国)电子竞技平台

ob电竞

ob电竞

“从入门到精通”:如何零基础做一款Roguelike?

【Gamelook专稿,转载请注明出处】

Gamelook报道/在游戏行业,Roguelike是最受独立游戏开发者青睐的玩法之一,凭借随机生成的地图、不可挽回的单向进程、非线性故事和复杂的系统,这类游戏的重复性极高,近年来国内独立开发者也对Roguelike十分感兴趣。

而且比较特别的是,这个品类的开发者与OB欧宝体育电竞官网之间的界限很模糊,不少都是因为热爱某个游戏,想要制作自己的版本而从OB欧宝体育电竞官网转为开发者。Grid Saga Games工作室的Josh Ge过去七年都在做Roguelike游戏,而且过去五年的全职工作都是从事这类游戏的研发,在网络上也形成了全球最大的的Roguelike开发者社区()。

最近,Josh根据自己过往的经历整理了一份非常详尽的新手开发者指南,对于希望做Roguelike的开发者甚至OB欧宝体育电竞官网都是极有帮助的:(Roguelike是RPG游戏的一个分支,详细解释请参考)

有英文基础的读者可以直接看视频(约30分钟)

几年前,在第一次Roguelike庆祝会上,我讲了自己如何成为一名开发者的经历,但这一次想说的是,如何让所有人都能做Roguelike游戏,对于RoguelikeOB欧宝体育电竞官网们来说,了解一些研发内容是很普遍的事情。我们在玩游戏的时候受到启发,然后想要做一些更好的、不一样的体验,或者只是为了想要做属于自己的东西。

这篇文章并不是一个新手教程,更多的是告诉你如何开始,以及在做Roguelike游戏研发过程中的一些建议。

做一款Roguelike游戏是非常困难的,不亚于你在充满障碍的地牢里冒险,在下面的图表中,你刚开始的时候就站在底部,顶部“有趣可玩的游戏”就是你的目标。

你的研发之路很容易像这张图一样,由于缺乏清晰的路径, 而在不同的方向、不同的系统投入大量不必要的时间。

有时候,你可能会在完成研发的时候发现,并没有达到最初的目标,但为此付出了什么代价?可能多年的努力都被浪费,甚至还可能因为压力而掉光了头发。在研发过程中,你很容易走入死胡同、卡在某个地方,意志消沉,甚至放弃研发。

你所需要的是达成目标的直线路径,有了基础的规划并且了解你要去哪里,就能够有非常良好的开始,然后,当你拥有了又去的核心游戏之后,在根据自己的意愿为之拓展。

开始的时候就要直指目标,然后打下坚实的基础。

在这篇文章里,我主要讲述的是基础内容,比如怎样以更高的成功率穿过这个地牢,尤其是当你开始只有热情、但又不确定如何去做的时候。

本文共分为七个部分,覆盖:编程语言、项目规模、核心机制、7DRL、研发资源、玩法吸引力、建议等方面。

编程语言:没有硬性要求

在开始研发的时候,人们问到最多的问题是,我该用什么语言做Roguelike游戏?

答案其实很简单:任何一种语言都可以。

如果把回答延长一些,编程语言没有那么大的影响。如果你已经学过一些语言,那是很好的情况,只管用就好,语言是达到目标的一种方式,而且此前已经有人用各种语言做过Roguelike游戏。

但这并不是说新手就没有更简单的开始方法,如果你不确定,那么我建议你使用Python:

Python代码样本

对于Roguelike初学者,Python是被推荐最多的语言,因为它的代码用起来简单直接,通过上图的代码就能一目了然,它没有太多奇怪的语法,即便是不会编程或者Python语言,也能通过代码看到它是做什么用的。

但是,不要担心代码简单会成为限制因素,因为你仍可以用Python做很出色的事情。

《ob电竞》就是用Python写的,而且是一个美丽而庞大的开放世界项目,目前还没有完成,但已经有非常不错的效果。

《ob电竞》也是用Python完成的

实际上用Python研发的Roguelike游戏有数百款,总的来说,这个语言可以让你有更顺利的开始,随后我们会讲如何用它开始研发。

Roguelike开发者们使用的语言列表

像C和C++这样更为复杂的语言,它们已经流行了很多年,意味着你将找到大量的相关资源和参考资料。我使用的是C++,但唯一的原因是对这个语言比较熟悉。对于新手,我不建议用它,尤其是当你的目标只是做一款Roguelike,而不是投入大量的时间做debugging,使用Python的开发者也很多,所以你仍然可以找到大量资源。

项目规模:从小游戏开始

对于新手开发者来说,另外一个问题就是打造“梦想中的Roguelike游戏”,这应该是你的首要目标吗?当然不是。

刚开始的时候,你需要学习很多东西,可能会犯一些没有意识到的错误,所以最好是先积累一些经验。更重要的是,游戏研发的重点在刚开始和最后结束的时候有很大差别,因此最好是至少先过一两遍流程,然后再考虑做更大的项目。在开始的时候把目标定小一点,也是让你的努力有结果呈现的最佳方式。

以我们开始说的地图为例,你首先要专注的是达到目标的直线路径:

主要的研发过程只包含少数必要功能(战斗后面之所以有问号,是因为Roguelike里并不一定要有战斗)。

通过这些功能,你可以做一个完整的游戏,也可以打下坚实的基础,为随后的玩法拓展提高做好准备。其他所有可以探索的领域都是很吸引人的,但一定记得不要离主路太远,这就像是玩一款Roguelike游戏:如果你开始就毫无目的的在未知区域游荡,只做自己喜欢的事情,而不是应该做的事情,除非运气非常好,否则很容易让角色挂掉,甚至是多次死亡。当然,在玩游戏过程中,这可能是一种有趣的经历,但在做Roguelike研发的时候,这种体验就完全是另外一回事了,因为这意味着你需要投入更多的时间,所以一定要保持专注。

比较好的消息是,你在做Roguelike的时候可以一点一滴积累,如果你觉得对于游戏有用,那么这些功能实际上都是一些分散的系统组合在一起的。

在此之后,你可以不断地对游戏进行拓展和调整,最好是有OB欧宝体育电竞官网反馈。

增加更多功能

最后你可能做出很多东西,然后还在问“时间都去哪儿了?”

vsheji

如果从整体来看一款Roguelike游戏,可能会让人望而生畏,但实际上你需要的只是一个计划和持之以恒,刚开始做小项目很重要,因为你可能会犯错,而且如果刚开始就做大游戏,失败的概率很大。

核心机制

那么,一个小的Roguelike游戏真正需要的是什么?只需要有一个核心玩法就可以,这是你积累经验的开始,最好是用一句话就能解释清楚,这也是你要做创意原型的东西,唯一的要求就是趣味性。

这个游戏对于Roguelike有什么独特的理解?如果你的游戏只有这个功能,它是否有趣?如果项目再大一点,这个功能是否还能作为核心玩法支撑其他功能?考虑OB欧宝体育电竞官网们在游戏里做什么,这些都是与核心玩法相关的。如果重复整个流程并没有趣味,那么你在它的基础上做什么都没有意义。

Roguelike游戏设计的基础功能

所以在初识创意原型里,只加入必要的功能,并且对核心玩法进行测试。另外,上面的动图看起来可能有些复杂,但这只是在核心玩法上有可能拓展的方向,Roguelike游戏哪怕是很简单,也一样可以很有趣。

为了探索更多的功能,我们来看看7DRL

7DRL(即七天完成一个项目研发)

每年7DRL完成研发的项目数量

这个词组的意思是在七天内做一款Roguelike游戏。每年三月份左右的时候,都会有开发者做这样的尝试,迄今已经延续了14年。这是很好的体验,因为只要完成研发,就意味着有一部分人体验过你的游戏,并且可能留下了反馈。有些赛事的评委还会在不同的领域给游戏打分,不过大多数人都把7DRL当作个人挑战,而不是竞赛。

在每年的这种活动中,都会有超过100款Roguelike游戏出现,它们很多都很有趣,虽然我不建议你的第一个项目做7DRL(没必要这么早承受压力),如果有一些经验的话,参加这个项目也是不错的尝试,尤其是你了解Roguelike需要说明,特别是技术方面,因为在有限的时间内完成研发可以帮助你提高效率。

我们来看一些案例:

Knight(2014年的7DRL项目)

《ob电竞》主要就是让OB欧宝体育电竞官网控制动量,你大多数时候都是骑在马上,你只能移动中间的蓝色小方块,而且每个回合只能一个空间,你移动到的地方也就是下一个回合所在的地方,这意味着OB欧宝体育电竞官网必须提前规划,计算你角色路过这些地方的时候,挥剑所带来的攻击伤害。

《ob电竞》(2016年的7DRL项目)

之所以喜欢这个游戏,是因为你可以从名字里看到玩法(下载地址)。OB欧宝体育电竞官网在游戏里是一艘太空飞船,在你自动攻击范围内敌人的时候,敌人的炮弹移动速度很慢,你可以看到他们下一个回合的弹道,所以你可以持续攻击,同时避免被击中。

Seven Day Band(2015年7DRL项目)

在《ob电竞》里,你可以一边玩游戏一边创作自己的Roguelike。四周都是新的未知敌人和物体,在第一次遇到他们,或者这些物品变得重要的时候,你需要给他们取名和设置能力。

Broken Bottle(2011年的7DRL)

在这款游戏里,你扮演的是灾后世界里的酒精,游戏里的酒精消耗和大多数的体验有关,完全取决于你的选择(这是一个故事向的游戏)。

Drakefire Chasm(2012年的7DRL项目)

在《ob电竞》里,OB欧宝体育电竞官网扮演一条年轻的龙,在充满怪兽、冒险和其他龙的洞穴里作战,但游戏里没有物品,你只需要升级龙的能力,吃掉自己的敌人然后变得更大更强,这款游戏目前还经常更新。

Golden Krone Hotel(2017年的7DRL项目)

在游戏里你要利用角色吸血鬼和人类形态下的不同能力,包括与动态光的互动,这个项目最后变成了更大的商业游戏,而且一年前发布到Steam平台之后,表现非常不错。

Cogmind 7DRL(2012)

这是最初的Cogmind 7DRL,你是一个机器人,需要用找到的部件和其他机器人拆下来的零件从头开始建造自己,由于物品破坏极大,所以你需要经常重塑。很明显,这个项目最后也成了一款更大的商业游戏,我从来没有想过六年前做的7DRL居然会成为工作内容的一部分,但我很高兴参与了这个活动,因为完善核心机制是非常有趣的事情。

Polybot-7(2018年的7DRL项目)

2018年的7DRL活动上,我做了《ob电竞》,它有点像Cogmind,但玩法有很大不同,因为核心机制发生了很大改动。在这款游戏里,OB欧宝体育电竞官网们不再选择物品,附近的物品会自动飞过来并且吸附到你身上,你甚至无法移除它们,除非遭到了破坏。我最初的打算是把它做成一个小号的Cogmind,但在活动结束的时候,我一直觉得这款游戏不值得做,因为它还需要真正的吸引力才能显得独特,也就是一个全新的核心玩法。但最后带来的体验却很有趣,也增加了很多的玩法,为此,我还专门做了对比,并且为整个研发过程做了复盘(链接)。

所以,尽管这些游戏可能不止一个玩法系统,但很明显,他们都只是核心玩法,与很多其他的7DRL项目一样脱颖而出。

非7DRL案例

我们还是来看一些非7DRL项目,这些游戏用了很多年的时间研发,而且也包含大量的系统,但你仍然可以看出他们是如何围绕核心玩法不断进化的:

Mage Guild

在《ob电竞》里,有最出色的化学系统,你可以混合任意两种物品,不管是药品、怪物掉落还是任何东西,都可以得到有趣的新物品和效果。

Demon

在《ob电竞》里,你招揽大量的恶魔作为追随者,并且训练它们。

The Ground Gives Way

这个游戏完全是通过物品推动游戏进度。

Xenomarine

这款游戏是基于远程战斗和定向facing,在其他Roguelike游戏里并不多见。

NetHack

《ob电竞》的已经开发者曾告诉我,这款游戏的核心机制是,“如果看起来它可以做某些事,那你就很可能做到”(这个案例看起来没有核心玩法,而且不适合新手开发者,但实际上它最初的核心玩法很简单)。

ob电竞APP下载研发资源

做Roguelike游戏里研发,最重要的一件事就是获得信息,这包括学习基础技能、回答问题、随后参与更高级的话题,或者只是为了找灵感。

你遇到的困难会与其他开发者不一样,因为每个人都有不同的技能和个性,但你可以使用在线资源和好友克服这些障碍。虽然可能没有人真正和你一起做项目,但其他人可以提供你需要的建议。但前提是,你得去问,这用了我很长时间才学会,而我刚开始的进度很慢,因为我从来不接触其他人,所以在这里要提醒新人,只要你开口,有大量的帮助等着你。

我们来看一些比较有用的资源:

Reddit平台上的RoguelikeDev论坛(地址)是世界上最大的Roguelike开发者活跃社区,我们形成了热情互助的社区氛围,而且右边栏有大量不同的资源。

在这些资源里,有各种语言的教程和图书馆,有些成员曾经是用过这些资源,还能回答你遇到的问题。

此前我提到用Python开始研发,而最简单的方式就是叫做libtcod的资源库,我们实际上有很多。

libtcod logo

和很多的游戏库一样,libtcod处理的是基础的功能,比如游戏窗口、鼠标和键盘支持、Bitmap字体、调色板以及颜色控制。但它也会包括很多Roguelike特定的功能,比如地图生成、FOV和寻路系统。

在互动libtcod demo里找到的功能样本

我此前展示的两款Roguelike游戏,《ob电竞》和《ob电竞》都是用这些新手教学开始做的,最终两款游戏都作出了独特的功能,libtcod是非常不错的资源库,而且迄今为止已经持续更新了十年。

新手开始的另一个方式是参加r/RoguelikeDev暑期code-along活动,如果需要更多的动力和节奏管理,你还可以与其他开发者共同学习libtcod教程。

r/RoguelikeDev暑期code-along活动logo

我们已经做了很多年的新手指导,开发者对此兴趣很高,每年都有100人左右参加。技术层面来说,你并不需要使用libtcod或者Python也能参加,很多使用其他编程语言的开发者也带来了他们的Roguelike项目或者类似的教程。

在为期两个月的活动结束时,你会做出可玩版本的Roguelike游戏,以下是过去几年参加活动的开发者做出来的样本:

样本项目

这是一个非常不错的经历,你基本上可以获得研发Roguelike所需要的技术背景,然后充分发挥自己的想象力。

在活动的后期,我们还提供了,针对各种话题解决不同的研发难题,比如:

这些包括核心话题,比如规划和动机、以及很多细节,比如普通的系统、策划、各种各样的事情。这些年间,我们有大量的开发者为FAQ做出了贡献,包括很多的知名Roguelike开发者。

坦白说,有很多开发者经常在社区活动,还有很多人在做长期兴趣项目,他们知识丰富而且乐于助人,我们还有用于实时讨论和求助(我们与r/RoguelikeDev论坛共享服务器,所以你还可以发现很多人在其他频道讨论各种各样的Roguelike问题)。

RogueBasin

在Reddit论坛之外,Santiago Zapata还在很多年前创作了这个非常好的网站,你们可能有些人听过RogueBasin,你可以发现整个研发过程的相关文章。

文章内容分类截图

这个网站有大量的文章,虽然很多内容有些老,但大多数的知识仍然可以用,实际上很多年前我就是从这个网站开始学习的,虽然内容量很大,可对于Roguelike研发来说,这是一个循序渐进的过程,你每次只需要学一点就可以。

Roguelike Radio

Darren Grey、Andrew Doull、Mark Jonson和其他人负责主持的节目。

2011-2018年节目话题列表

检查所有的话题,这些还包括大量Roguelike开发者的采访,我甚至还出现在其中的两三期节目里,包括曾经提到Cogmind可能在2016年完成之类的事情,如今已经是2019年,我还在给游戏增加更多功能。

还有很多节目是报道7天Roguelike挑战的,这在开发者社区是很重要的事情。

所以我们已经有大量的渠道可以获得研发知识,不过,在游戏研发方面,另一个重要的部分游戏资源

ob电竞APP下载资源

这些是我们的资源:

Roguelike研发资源

认真的说,ASCII在很多方面都是很出色的,而且增加新内容非常容易。只要有合适的前景色和背景色,你就可以做出很漂亮的游戏。

Brogue

如果你已经对Roguelike很熟悉,或许会认出它是Brogue,不过这些年来,我收集了大量的ASCII截屏,并且希望分享一些,给你们展示它的可能性究竟有多大:

来自不同ASCII Roguelike游戏的22张图

美术风格的多样化非常不错,因此做独特的风格仍有很多探索空间。

在使用ASCII或者类似的单色Tilesets的时候,你还可以尝试我的编辑器REXPaint(集成了libtcod)。对我来说,它是一个不可或缺的工具,而且有很多开发者在用,可以用来作UI设计、地图和艺术设计。

REXPaint logo,粒子界面和样本图片(截图里的颜色太多,因此动图看起来效果不佳)

Tilesets

当然,如果想让更多人玩你的游戏,或者如果它能帮助你的项目,实际上还有很多不错的tilesets可以使用,其中很多都是免费的,还有些价格也非常低,你可以在r/RoguelikeDev侧边栏找到大量链接。

2D Roguelike tilesets样本

对于有些开发者来说,tilesets可以激发灵感,可以帮助推动研发进度。也就是说,你可能在其他Roguelike游戏里看到过这些,但漂亮而免费的美术素材对于独立开发者的价值是非常大的。

不错的起始点

在最后一部分,我希望从一些比较实际的地方讲述如何开始你的设计过程,你想要专注什么。你可能满足于在屏幕上移动字母,或者想要做的更多,并且希望其他人像你一样喜欢这款游戏。

当然,首先你需要有独特的吸引力才能让人感兴趣,但这种吸引力可以通过很多种形式展现:

我们已经谈过了核心机制,这是最简单的吸引力之一,因为它直接与游戏玩法相关,Roguelike最最重要的就是玩法。如果游戏体验没有可重复性,那么所有的永久死亡设定就是没有意义的。

优秀的音频设计能是不多见的,不过,我们看到很多的Roguelike游戏开始走这个方向,因为它可以吸引更多的OB欧宝体育电竞官网,因此把音乐做好也是有帮助的。

Roguelike tilesets demo

但我这里想要强调的是主题,它也是很好的吸引力,只不过很多人都没有充分利用。

主题

业内有很多出色的地牢探险游戏,所以,如果你真的想让自己的项目具有辨识度,最好是找一个独特的主题,而不是烂大街的魔幻地牢探险。

可以使用的主题

基本来说,Roguelike游戏是基于有趣的玩法,但拥有独特的主题不仅可以让整个体验与众不同,还可以让你做出全新的机制(全新的主题几乎会迫使开发者想新的办法)。特别是,历史和神话主题可以提供大量的素材可以探索和拓展。人们始终希望更多科幻主题的Roguelike游戏,在Roguelike品类,科幻主题的游戏币其他品类要少的多。

近些年来,我们也看到了一些非常独特的主题。

MakaiRL基于日本神话和历史幻想

Skies of Bloody April是一战主题

这些游戏的主题都引人注目,尤其是完成研发之后(上述游戏都还在初期研发阶段)

另外一个完成度较高的游戏是《ob电竞》,你在游戏里探索大自然,有时候要进入一些危险的地下洞穴。

Pirate Rogue概念艺术

还有些主题是Roguelike社区问到最多,但又很少人做的,比如海盗主题,所以《ob电竞》在论坛获得的投票很高。

不过,这个项目还只是在概念阶段,开发者们意识到他们的经验不足,因此暂停了游戏研发,但我们可以看到这个主题的需求。

超级英雄和赛博朋克主题也是经常被问题到的主题,所以也是不错的选择。

在RoguelikeDev论坛有很多不错的故事,也有很多优秀的项目,但这里我特别想要分享的是《ob电竞》。

你在游戏里操作一辆二战坦克,带领几名成员参与活动,它的开发者Gregory Scott刚做这个项目的时候,研发经验很少,但通过libtcod Python教程很快就上手研发了。

一年之后,他不仅完成了研发,游戏还拿到了Rock,Paper,Shotgun的推荐。

也就是说,从几乎没有经验到完成一款在欧美主流PC评测网站拿到推荐的游戏,只用了一年。这期间有一定的运气成分,但独特的主题也是吸引人们注意的重要原因之一。

所以,选择一个独特的主题并且做出与众不同的内容,这会让更多人感兴趣,也会给你带来动力。

Gregory目前在做续作ArmCom2

还要记得的是,你的游戏不一定是一板一眼的Roguelike,不要被定义束缚。我们经常见到有人想出了游戏想法,但他们担心别人是否同意它是个Roguelike游戏,这实际上并没有关系,因为OB欧宝体育电竞官网们对它的定义有很多,只要它内在连贯而且符合你的计划,那就没有问题(不要担心,你也可以在论坛经常看到某些东西是否是Roguelike玩法的相关讨论)。

XRLs(蹭IP)

现在我们来个180度大转弯,你还可以尝试其他带来优势的方式,也就是所谓的XRLs。这些都是基于现有IP,为你节约了大量的规划时间和设计方面的投入,因为大多数问题都已经被解决了。只不过,你需要用Roguelike的形式改编它。对于XRL,你可以专注于执行层面和其他基本元素。

很多开发者都是这么做的,之前我还在RogueBasin网站做了一个,下图的所有Roguelike游戏都是基于现有IP改编的:

从个人角度来说,我认为这是开始研发很好的方式之一。

或许最著名的XRL是DoomRL,通常我们就叫它DRL。

提示:你需要注意一些比较喜欢打官司的公司,比如任天堂(不建议做口袋妖怪Roguelike),但总的来说,Roguelike属于小众品类,而且不容易被大众市场所注意,因此如果是兴趣项目,做XRL是没有问题的。只有那些获得了大量关注的项目才需要注意版权相关的事宜,而到了这个阶段,你实际上已经可以考虑到底是做自己的品牌,还是在成熟经验的基础上从头开始新的游戏研发。XRL项目通常是短期行为,而且是用来学习的小游戏,但仍然有不少XRL项目做了很多年(任何情况下都不要忽视现有IP的商业风险)。

目前,DoomRL开发者Kornel Kisielewicz正忙于精神续作《ob电竞》的研发,这是一个非常好的案例,他先用XRL获得比较大的粉丝群,然后在此基础上做更大的商业化Roguelike游戏。

早些年间,Kornel还做了另外两款XRL游戏:AliensRL和DiabloRL,也是我最早接触的Roguelike游戏之一。

AliensRL

DiabloRL

高产Roguelike开发者Slashie也根据银河战士、恶魔城、塞尔达、星球大战、洛克人和很多其他的IP做过XRL。

甚至我的首个半Roguelike项目,XCOMRL也属于这个品品类,这在初期带来了很大的帮助:

自此之后,我开始做自己的机制和内容,尝试更多已经成熟的主题。

XRL另一个优势在于,你已经有了相当规模的潜在用户群,喜欢Roguelike和这个IP的人都可能会尝试你的游戏,比如一些核心粉丝最早就是从《ob电竞》开始关注我的。

长期研发的建议

这些建议可以在长期研发的时候给你带来帮助:

尽早完成、尽快发布

RogueBasin统计的项目宣布与发布记录

这是Roguelike研发的原则,快速做出最小化可玩版本是非常好的习惯,这样做可以尽早得到一些不错的反馈,对于长期研发是很有价值的。

每周分享

即使是在首款游戏发布之前,哪怕只有一个概念,或者已经做了很久的研发,都可以参与我们每周的分享讨论()

对于有些人来说,这是一个审视自己项目的好机会,你可以分享过去的一周做了什么或者什么也没做成,在讨论的过程中遇到志同道合的朋友;也可以讨论增加的新功能或者新想法,总之,这是一个很优秀的社区。

保持写博客的习惯

除了每周分享外,把你的研发信息集中到一个地方也是很好的,开发者博客实际上有很多优势,以下是主要的几点:

组织你的想法;

从不同视角检查你的工作;

记录研发过程;

创造一个有用的长期参考;

获得反馈;

打造社区。

我本人已经坚持了很长时间,而且发现这样做的价值很高,以下是这些年来我的博客曾经讲过的话题:

你可能会发现很多有用的信息

可达性很重要

通常来说,Roguelike是小众品类,因此不会涉及到可达性的话题,但在如今的游戏市场,只要愿意付出努力,你就有机会接触大量用户,这意味着你要做大量的文档,一个新手教学、支持全鼠标操作、tileset等等。

为了展示支持鼠标操作和tileset的价值,你们可以看看Cogmind的OB欧宝体育电竞官网数据:

需要注意的是,有些功能需要从项目的一开始就要考虑,但在第一款Roguelike游戏里,不要担心这些,用ASCII和键盘操作也没有问题。

结束,也是开始

这是文章的结束,也是你新项目的开始,加油吧。

如若转载,请注明出处:http://www.ashkeling.com/2019/07/364660