内容会持续更新,有错误的地方欢迎指正,谢谢!

1.与数组相关的算法:

  1. 快速排序(分治思想的应用):不是任何情况都适用,数据量小的话,还不如冒泡快,但快排的确很优秀。
  2. 堆排序:可用于做游戏排行榜前多少多少名,根据求最大的K个数还是最小的K个数来建最大堆和最小堆,再将最大/小堆的根节点和最后一个子叶节点交换,最后调整堆,重复刚才那两个步骤,直到得到K个数。当然,这种题也可以用红黑树实现的set来做。
  3. 二分查找:用于查找出分数为多少多少的玩家

2.与树有关的算法

四叉树、八叉树可用来检测大量物体之间的碰撞总次数。

3.与图有关的算法

1.小型游戏可以用的简单的寻路算法:

  1. 随机寻路算法:当NPC不管是遇到障碍物还是遇到了边界(利用碰撞检测),都会随机选取一个前进的方向,继续行走
  2. 跟踪算法:当游戏中的主角进入到NPC 的“警戒区域”后,游戏的AI 可轻易获得目标的位置,然后控制NPC 对象移向被跟踪的对象
  3. 闪避算法:和跟踪算法完全相反,也就是当游戏中的主角进入到NPC 的“警戒区域”后,主角可以去追着NPC跑

2.大型游戏一般使用A*寻路算法:使用最广泛的一种寻路算法,简单说一下A*寻路算法:

公式:f(n)=g(n)+h(n),g(n)表示从起点到任意点n的实际直线距离,h(n)表示任意顶点n到目标点的估算距离(常用曼哈顿距离公式用于估算h(n):|x1 - x2| + |y1 - y2|)

把待处理的方格A存入一个”开启列表”,开启列表就是一个等待检查方格的列表;”关闭列表”中存放的都是不需要再次检查的方格。

每次从OPEN列表中选择 f(n) 最小的节点将其加入CLOESE列表中,同时扩展相邻节点并将它们加入OPEN列表,可把OPEN列表看成一个优先队列,key值为 f(n),优先级最高的先出。

最后直到把终点加入OPEN列表中,计算出指针指向就完事了。所以最后的路径就是,从终点开始沿着父指针不断往起点走,最后回到起始点,这样最短路径就找到了:

A*寻路的详细介绍请见:https://blog.csdn.net/billcyj/article/details/79462670

3.DFS、BFS也常用于求最优方法这类问题

游戏开发中常用的算法相关推荐

  1. 游戏开发中常用的算法1(20道题一篇文章)

    一.快速排序算法 步骤1:选取一串数字中的中心轴 步骤2:将大于中心轴的数字放在右边 步骤3:将小于中心轴的数字放在左边 步骤4:分别对左右两个序列重复前三步操作 public class Quick ...

  2. 游戏开发中常用的数据结构和算法

    转载Loving_初衷 前言 时间流逝,物是人非,就好像涌动的河流,永无终焉,幼稚的心智将变得高尚,青年的爱慕将变得深刻,清澈之水折射着成长. ----------<塞尔塔传说> PS:为 ...

  3. 游戏开发中常用的设计模式 【game design patterns】

    单例模式(Singleton Pattern):用于确保在游戏中只存在一个实例,例如游戏管理器(Game Manager)或资源管理器(Resource Manager). 工厂模式(Factory ...

  4. GIS开发中常用几何算法原理图解

    转自:OSGeo中国中心 http://www.osgeo.cn/post/ae457 计算机的出现使得很多原本十分繁琐的工作得以大幅度简化,但是也有一些在人们直观看来很容易的问题却需要拿出一套并不简 ...

  5. 游戏开发中常用的数据结构

    内容会持续更新,有错误的地方欢迎指正,谢谢! 1.数组:需处理的元素个数确定并且需使用下标时可以考虑,不过建议用泛型List 优点:数组在内存中是连续存储的,索引和修改的速度都非常快 缺点:插入和删除 ...

  6. 游戏开发中常用的设计模式

    使用设计模式来提高程序库的重复利用性是大型程序项目开发必须的.但是在"四人帮"的设计模式概述中提到了23种标准设计模式,不但难以记住,而且有些设计模式更多的适用于应用程序开发,对游 ...

  7. java开发中常用的算法_总结一下项目开发过程中常用的到的一些加密算法。

    一般常用的有: MD5.SHA算法:代码如下 Java代码 /* * Copyright (c) 2008 * All rights reserved. */ packagecn.com.jody.w ...

  8. 游戏开发中常用的几何之,两个线段是否相交

    游戏中判断两个线段是否相交的重要依据是根据向量的叉乘判断,所以不熟悉叉乘的意义的可以去看看叉乘的定义和几何意义 相交又分为两种情况,平行相交和非平行相交: 1:先说说平行相交,如果两个向量平行必然满足 ...

  9. web开发中常用的算法和函数

    1.isFinite() 函数用于检查其参数是否是无穷大. isFinite(number) 返回值 如果 number 是有限数字(或可转换为有限数字),那么返回 true.否则,如果 number ...

最新文章

  1. python autopy_安装python autopy时出错
  2. (转)Apache的安装与配置
  3. ZigBee TI ZStack CC2530 3.18 串口01-发送
  4. QT的QGLFunctions类的使用
  5. 初烧盲狙一条铁三角e40
  6. idea 快捷键java
  7. js中调用C标签实现百度地图
  8. 穆里尼奥:与范加尔风格不同,转变需要时间
  9. md5不是对称密码算法_密码学中的消息摘要算法5(MD5)
  10. [deviceone开发]-心形点赞动画示例
  11. 第二十五章:重新吃上饭的李恪
  12. usaco2.11Ordered Fractions
  13. powershell自动化操作AD域、Exchange邮箱系列(1)——powershell 简介
  14. 【渝粤题库】陕西师范大学500901 基础物理专题(力、热) 作业(专升本)
  15. 单选框_flutter Radio 单选框
  16. 陈绪:7月24日阿里云上海峰会出品人
  17. 2021年最新微信漫画小程序全开源商业版免费下载
  18. java pdf转jpg字体问题_java生成pdf字体的坑
  19. 超分辨重建-Bicubic双三次线性插值opencv实现
  20. 解决微信、QQ在一加手机系统中无法限制后台的问题

热门文章

  1. 基础测绘1:10000成果检验需注意的问题
  2. 小米路由修改服务器密码,小米路由器3G密码怎么重置? 小米3G路由器修改wifi密码的方法...
  3. WiFi功耗管理(一)(概述)
  4. 构建之法---第一次作业
  5. python截图工具和模拟鼠标键盘_python PyAutoGUI 模拟鼠标键盘操作和截屏功能
  6. Ubuntu WPS 字体缺失问题解决
  7. 一键将苹果实况照片livp转jpg的简单方法
  8. Ubuntu安装虚拟机
  9. linux 搭建 虚拟专用网络 (pptpd )
  10. scratch成语接龙 电子学会图形化编程scratch等级考试四级真题和答案解析2021-9