最近尝试用 Threejs 开发一个 RPG 游戏Demo。没有特别宏大的目标,就希望实现角色在地图上的路线规划 和 简单的战斗打怪。基于此仍然遇到了不小的技术挑战和性能瓶颈
Live: knight-adventure.vercel.app/
Code: github.com/luosijie/kn...
场景构建
这次场景和角色使用了开源的设计素材
最终在 Blender 创建了一个小场景
导出了的素材包括了
- 场景的 glb 文件
- 渐变贴图
- 用于路线规划的navmesh
角色处理
从网上下载的角色一般不会直接拿来使用
- 需要自己添加或修改一下模型,比如添加希望出现的道具
- 还要删除多余的动画预设,最大限度减少资源的体积
路径规划
刚开始用的是比较常用的库 three-pathfinding,发现在处理动态路障方面比较麻烦。
后来发现了 recast-navigation-js 可以比较顺利的处理当前的场景
问题与挑战
用 Threejs 开发类似的项目,遇到的主要挑战还是 性能问题 。
即便是在这样简单的场景下,在去除阴影效果的前提下,也无法同时容纳很多 动画绑定的角色。
如何在有限的资源和性能约束下,做出流畅又丰富的游戏体验。将是 游戏设计者 和 开发者 面对的问题