关灯
护眼
字体:大 中 小
上一章
目录
下一页
对于穿越前的那个世界来说,植物大战僵尸的二次开发并不非常容易。
每一种独特的新玩法都相当于是从头开始做了一遍。
这自然跟这部作品本身的架构有点关系。
但林琅从头做一遍,自然不会再老老实实
哪怕不借助HarnyX这种注入补丁,他也能够轻松添加各种模块支持。
得益于他内置的程序集加载器,只要模块的结构符合规范,便可以在激活游戏时动态热加载这些置于外部资源中的模块。
也因此,增加新的植物、僵尸、玩法等的工作量也得以骤降。
对于植物大战僵尸这款游戏来说,杂交版的完整体量已经完全可以当作DLC来卖了。
不过林琅不打算这么做,也不准备完整复刻杂交版出来。
毕竟只是一个用来当作模块开发教程的项目,只要能利用到那些接口就足够了。
过于繁多的内容反而会打击玩家的创造热情,这些应该由他们自己去发掘。
这套体系想要实现起来非常简单。
一个完全面向对象的高级语言,对于游戏来说是非常优雅的。
首先这些所有新增的植物,自然还是要遵循植物大战僵尸的底层逻辑,继承自同一个基类,也就是实体类。
为了便于使用,林琅已经提前对实体类进行了诸多衍生实现。
比如僵尸类、植物类、射弹类等,它们皆出自实体,却又各有不同。
而这些子类也自然都有着易用的实现。
就如林琅现在打算做的‘双发仙人掌’,自然就继承自植物类中的‘射手类’。
顾名思义,不论是豌豆射手、双发豌豆、机枪、还是双向等,它们皆可以继承自该类。
只需要覆写它内置的发射函数和弹丸种类的定义,便可以定制出一款截然不同的植物。
而对于不会编程的玩家来说,林琅也贴心的准备了一个完全可视化的工具。
射速、弹速、子弹类型、子弹路径、击中行为……
他几乎为所有可以设想到的情况都预置了接口,实现了一套完全数据化驱动的体系。
这套机制可以让玩家在完全0代码基础的条件下肆意发挥自己的想象力。
你甚至可以做出一个发射樱桃炸弹的机枪射手!
没错,弹丸可不一定要是豌豆或是尖刺之类的。
林琅一不做二不休,干脆将子弹的限制移除,让所有基于实体类的实现都可以被当作弹丸。
而为了兼容这一点,他又将子弹的移动剥离成单独的脚本,以动态挂载的形式实现。
这套机制非常巧妙,它就象是把所有东西都给‘插件化’了一般。
我们大可以将任何东西都视作一个容器,一个能够填入任何脚本的容器。
比如子弹,直接为它挂载‘移动脚本’和‘击中脚本’,就可以仅靠修改这两个脚本的参数的情况下让子弹千变万化。
最可怕的是,这个所谓的‘脚本’,同样是一个可以随意继承实现的类。
不过想要自定义新的脚本就很难在不编程的情况下做到了。
这套体系便是整个模块API的内核逻辑。
基于此,可以开发出无数匪夷所思的充满想象力的另类玩法。
不过对于脚本的灵活应用,林琅打算留给他已经想好了的第二款模块。
当下这款自然还是集中在让大家了解如何新增自定义的植物和僵尸等。
继承自豌豆,将发射函数延迟片刻额外执行一次,并将子弹的引用替换成仙人掌刺。
仅仅如此操作,一个双发仙人掌便做出来了,当然他还需要为其准备一套美术素材。
同样的逻辑,阳光炸弹只需要继承自樱桃炸弹,为爆炸击杀后添加一个生成一坨阳光的效果即可。
有射手类,当然也会有投手类,尽管它们都出自一个叫‘攻击型植物’的父类。
这样的设计虽然非常便于理解和使用,但并非象看上去那样完美。
复杂的重重嵌套带来的是代码的高度耦合,这其实并不符合编程追求的解耦思想。
一环套一环的层层依赖,带来的结果是灾难性的可维护性。
假设某一天林琅突然想要动一动实体类这个万物源根,就有可能一脚踢翻整座‘屎山’。
不过所见即所得,这对于模块开发者而言却是一件好事。
不消多会儿,林琅便为几种常见的植物类型都做好了变种版本。
但这还没完,尽管可以直接为它们设置好阳光消耗,直接加载到卡池中,但他还是选择了另一种方式。
回到主菜单的那个墓碑之上,这玩意儿其实
本章未完,请点击下一页继续阅读>>『加入书签,方便阅读』
上一章
目录
下一页
天竹小说手机版 - 随时随地畅读精品小说
澜和文学手机站 - 小说阅读更轻便
知暮小说移动端 - 精选免费小说合集
山青小说手机版 - 畅读全网热门小说
月然书院手机版 - 小说迷的移动书架
风缤小说手机端 - 免费追更每一本好书
云初小说手机版 - 精选小说轻松看
寒涟小说手机版 - 小说更新实时推送
明歌小说手机站 - 精彩小说掌上读
清珏小说手机端 - 海量精品小说免费读
澜语小说移动版 - 小说迷的掌中宝
逸华小说手机站 - 热门小说即时更新
天桂小说手机版 - 免费小说随时读
风竹小说手机端 - 精选完本小说推荐
云明小说手机站 - 小说迷必备阅读站
书冉小说手机版 - 精彩小说免费在线
澜山小说移动端 - 精选原创小说合集
寒竹小说手机版 - 免费阅读完本佳作
清蝉小说手机端 - 小说迷的最佳阅读平台
风翎小说手机版 - 精选网络小说在线阅读