第67章 杂交版的实现(1/2)

对於穿越前的那个世界来说,植物大战殭尸的二次开发並不非常容易。

每一种独特的新玩法都相当於是从头开始做了一遍。

这自然跟这部作品本身的架构有点关係。

这款09年就已经发售了的作品基於c++开发,使用的並不是现代那些成熟完整的游戏框架,在各个方面都有一定的缺陷。

但林琅从头做一遍,自然不会再老老实实地去一比一照抄,从开发之初,他就选用了c#作为主架构的首选语言。

哪怕不藉助harmonyx这种注入补丁,他也能够轻鬆加入各种模组支持。

得益於他內置的程序集加载器,只要模组的结构符合规范,便可以在启动游戏时动態热加载这些置於外部资源中的模组。

也因此,增加新的植物、殭尸、玩法等的工作量也得以骤降。

对於植物大战殭尸这款游戏来说,杂交版的完整体量已经完全可以当作dlc来卖了。

不过林琅不打算这么做,也不准备完整復刻杂交版出来。

毕竟只是一个用来当作模组开发教学的项目,只要能利用到那些接口就足够了。

过於繁多的內容反而会打击玩家的创造热情,这些应该由他们自己去发掘。

这套体系想要实现起来非常简单。

一个完全面向对象的高级语言,对於游戏来说是非常优雅的。

首先这些所有新增的植物,自然还是要遵循植物大战殭尸的底层逻辑,继承自同一个基类,也就是实体类。

为了便於使用,林琅已经提前对实体类进行了诸多衍生实现。

比如殭尸类、植物类、射弹类等,它们皆出自实体,却又各有不同。

而这些子类也自然都有著易用的实现。

就如林琅现在打算做的『双发仙人掌』,自然就继承自植物类中的『射手类』。

顾名思义,不论是豌豆射手、双发豌豆、机枪、还是双向等,它们皆可以继承自该类。

只需要覆写它內置的发射函数和弹丸种类的定义,便可以定製出一款截然不同的植物。

而对於不会编程的玩家来说,林琅也贴心的准备了一个完全可视化的工具。

射速、弹速、子弹类型、子弹路径、击中行为……

他几乎为所有可以设想到的情况都预置了接口,实现了一套完全数据化驱动的体系。

这套机制可以让玩家在完全0代码基础的条件下肆意发挥自己的想像力。

你甚至可以做出一个发射樱桃炸弹的机枪射手!

没错,弹丸可不一定要是豌豆或是尖刺之类的。

林琅一不做二不休,乾脆將子弹的限制移除,让所有基於实体类的实现都可以被当作弹丸。

而为了兼容这一点,他又將子弹的移动剥离成单独的脚本,以动態掛载的形式实现。

这套机制非常巧妙,它就像是把所有东西都给『插件化』了一般。

我们大可以將任何东西都视作一个容器,一个能够填入任何脚本的容器。

本章未完,点击下一页继续阅读。