第2章 基于网格的视野技术方案
视野是竞技类型游戏中最为重要的元素之一,基于网格的视野技术方案适用于MOBA类等战场区域固定的游戏。MOBA类游戏中的视野具有多阵营维度、视野共享、多探索源等特性,并且会频繁查询特定区域和角色的可见性,而网格视野技术方案具有O(1)的查询效率、构建快速、内存连续等特点,能很好地适应查询需求,但同时也具有网格数量随精度增长快、网格更新数量多、内存消耗大等问题。本章将围绕MOBA类游戏,从原理实现、性能优化两个维度阐述基于网格的视野技术方案并对上述问题进行解决。
实现原理主要包括动静分离的网格计算与渲染迷雾。
● 动静分离(离线部分)。将影响视野的静态物件进行离线计算来提高运行时效率。由于草丛、可阻挡视野的墙体、常驻显隐区域等影响逻辑视野物件的存在,并且它们作为静态物体位置不会发生变化,我们可以离线计算相关信息来大幅减少运行时需要计算的数据量。
● 动静分离(运行时部分)。运行时部分包括动态视野数据的设计、静态数据的使用、动态视野数据的更新,自此实现整个网格视野逻辑层技术方案。
● 渲染迷雾。可视化迷雾能让用户感知具体逻辑视野范围并且更具氛围感。基于网格的视野方案能够方便地生成主控角色视野二值图,再通过插值、场景渲染来实现渲染迷雾。
性能优化主要包括内存与计算性能两方面。
● 内存优化。通过紧凑的数据结构来优化内存,对于无视野阻挡或少视野阻挡的情况,通过合并视场遮罩数据可减少绝大部分内存消耗,使得高精度网格成为可能。
● 计算性能优化。根据不同对象更新频率的需求、运行时静态角色分离及SIMD指令集来提升计算效率。