第761章 完全可破坏的地形 (第2/2页)
与其说是炮兵游戏,整个游戏过程其实更像是在解谜。
思索如何用最少的鸟,最少的开支,造成最大的破坏。
只要能找到结构上的缺陷点,就可以迅速击溃,并产生连锁反应。
这种纯粹的破坏性带来的爽感是浑然天成的。
但它也存在一个小小的问题。
不适合pvp环境。
一方摆放关卡,一方负责破坏,这种不对称竞技其实也有其生存空间。
甚至还有不少作品把它做成了乐趣的一部分,比如世嘉的《世纪之石》。
但它一定程度上其实失去了传统炮兵游戏的模板。对於一款传统的炮兵游戏来说,它比拼的其实就是谁的炮术更精湛,谁能迅速适应环境打出最准的攻击。
非对称化很难得到这样的体验。
「如果这样的话,那战斗也会容易陷入对策化吧?每张地图总会被摸索出最优解,最後就演变成抢阵地的玩法了。」
威尔迅速反应了过来,很快便意识到了这里面存在的隐患。
地图不再是物理化的零件,变成了固定的刚体,那它就注定存在客观上的『最优点』。
比如一个掩蔽很好,又有一定高度的位置,通过抛射能轻而易举地打到地图上的其他点位。
俗话说得好,高打低打啥比,最终一定会演变成对战略要地的争夺战。
「的确是这样,但……如果整个地图都可破坏呢?」
「哎?」
威尔眨巴眨巴眼,试图在脑海中构思出这样的场景,
「你是说……加入防御的阵地,护栏之类的可破坏物?让玩家可以通过武器拆毁地方的阵地之类的?」
这麽听来反倒是有点rts之类的意思了,多了点策略性。有点像之前雅达利那款《rampart》,双方抉择将防御工事摆在什麽位置取到最好的效果。
听起来似乎的确能对这种情况带来一些改善。
「不,我是说字面意义上的,整个地图都可破坏。」
林立新笑着摇摇头。
这才是炮兵游戏真正的灵魂。
一个每一回合都在发生变化的阵地,玩家永远都面对着全新的坐标环境,需要时刻调整射表并选择合适的武器。
「比如说……玩家现在在一座山头上。」
他伸手在板子上画出一个山丘的简笔画,
「现在另一位玩家一炮轰在了这片山头上,会直接在上面炸出一个坑。」
林立新擦掉山体的一部分,向内画出一道弧线,
「玩家也会因为脚底下的土地被炸空了的关系掉落下去。」
「哎?」闻言,不管是卡马克还是威尔都随之一愣,紧接着便是惊喜的眼神。
这个……好像能行哦。
至於要如何实现?
在场的三人不说是可观测宇宙内最强的码农,也绝对是世不二出的奇才,设计这种系统就是手到擒来的事。
几乎是十分钟都没用到,他们便得出了一个非常优雅的解决方案。
全地形可破坏,听起来似乎非常复杂。
毕竟它涉及到了整个地图状态的存储和修改,每一个像素点都要被计算在内,光是想想就是个巨大的开支。
但实际上业界里对此早就已经有了一套非常通用且高效的解。
尤其是他们甚至都不需要考虑物理的问题,这个问题就更好解了。
首先,建一个二维的表,用x代表横轴,y代表纵轴。
这样只需要一组地图范围内的坐标,就一定能定位到具体的某个元素,也就是屏幕上对应位置的那个像素点。
至於这个元素要存什麽……当然不可能保存这个地形的材质、颜色、硬度等各种乱七八糟的数据。
它只需要存一个1bit的数据,也就是一个0或1的值就够了。
1代表这个像素是实心的,0代表这个像素是空气。
这样一来,通过任意一个坐标,都可以迅速找到该点有没有地形。
被炸毁也只需要把对应坐标的值改成0即可。
那麽问题来了……
这样的话,地图岂不是只能显示成纯色?要是画面变成这个鬼样子,那视觉效果绝对是不及格的。
接下来就到了显卡上场的时候了。
显卡,尤其是ca架构最擅长的是什麽?
大批量处理海量的简单计算。
只需要提前准备一张地图的图片,根据地形情况在渲染的时候选择是否剔除即可。
如果这一个点位已经被炸掉了,那渲染的时候直接跳过就好了。地图实际的纹理更像是套用了一层遮罩,直接糊在地形上。
所以有地形的地方能看得到,没有地形的地方也会被自动剔除。
根本不需要实时计算那麽多复杂的数据,只需要维护一个几十kb的极小的表。
即便地图再大一些,也不过就是把这张表的边界拉大一点儿而已。
但经过这样一操作……
一个真正可以被炸毁的,打到哪哪里就多个坑的地图系统便诞生了。