# IN_THE_FUTURE **Repository Path**: OOO_admin/in_the_future ## Basic Information - **Project Name**: IN_THE_FUTURE - **Description**: 我的游戏 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2023-10-22 - **Last Updated**: 2023-11-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # ANY 最后编写:`2023-10-22` `致未来` 本笔记用于记录与分享在学习和开发传统roguelike游戏中学到的知识 ## Vision Visualized 视觉可视化 ![Image text](https://gitee.com/OOO_admin/in_the_future/raw/master/NOTE/1.png) 最初我被这个效果所吸引,是源自于`紫色晶石`这款游戏。 像素风、回合制、中世纪、魔法这一切使我着迷 我当时就在想,“噢 天啊 这就是我想做的游戏” > What makes for a good field of view algorithm? 什么是好的视场算法? > What do those algorithms look like? 这些算法是什么样子的? > What can we use them for? 我们能用它们做什么? 上述三个问题是帮助我们快速了解背后核心的一些共识 > The dream 我们期望一个好的视场算法有以下品质 > Efficiency 效率 > Consistency (with line of sight) 一致性,我希望算法能在各个系统中都保持相同的结果。我看到的,就是我能瞄准的,而我能瞄准的,就是我能看到的 > Symmetry 对称性,我希望对方可以看见我,我也可以看见对方 ## Raycasting 光线投射 Getting started > Efficient : × > > Consistent : √ > > Symmetry : × ![Image text](https://gitee.com/OOO_admin/in_the_future/raw/master/NOTE/2.png) 最开始,我最简单的想法是用物理射线扫过周围,每个被扫到的物体都会被添加到障碍里,它在一定程度上效果很好 但是在扫描的过程中靠近发射点的图块会被反复扫描多次,这使得该算法的效率并不是很高 ## Shadowcasting 阴影投射 Becoming efficient > Efficient : √ > > Consistent : × > > Symmetry : × ![Image text](https://gitee.com/OOO_admin/in_the_future/raw/master/NOTE/3.png) ![Image text](https://gitee.com/OOO_admin/in_the_future/raw/master/NOTE/4.png) ![Image text](https://gitee.com/OOO_admin/in_the_future/raw/master/NOTE/5.png) 接着为了追求效率,我们改而使用阴影投射算法。如图所示,相对于光线投射的方法,阴影投射只有象限处被重复扫描了。 但是在一致性这里出了点问题,我们的碰撞盒如果采用正方形,那么在一致性上,会因为正方形的角落而使得我们无法瞄准 所以我们需要把碰撞盒改成菱形 ![Image text](https://gitee.com/OOO_admin/in_the_future/raw/master/NOTE/6.png) ![Image text](https://gitee.com/OOO_admin/in_the_future/raw/master/NOTE/7.png) 最后我们只检查碰撞盒的中心点