游戏开发常用算法概述

游戏开发属于软件开发中的一种,但又是非常特殊的一种。

游戏开发几乎可以用到软件设计中的任何一种算法,任何一种设计模式,任何一种编程思想,较普通的软件开发,难度相对要大一些。

游戏几乎模拟出一个完整的世界。

下面是我收集的一些常用的算法、设计模式及变成思想,欢迎拍砖和补充。

一 算法

1 随机数

常用于抽装备,暴击,闪避等

2 最短路径

用于地图中寻找到达指定位置的最短路径,dota,LOL中,点击地图上任一可达的点,英雄单位就会找到最短的路径,到达指定点。

不知道有木有人玩起凡,起凡中的寻路算法就比较坑爹,找的不是最短路径。

二 设计

1 观察者模式

用于对全局数据的监听,但数据改变时,界面做出相应的刷新。

例如,玩家升级时,玩家的属性界面需要刷新,关卡界面也需要做出相应的刷新,如开启新的关卡等。

2 有限状态机

对于游戏中简单的NPC可以用状态机来实现

3 行为树

行为树多用于英雄单位,或者敌方单位等有多种复杂行为的单位

三 思想

1 MVC

数据与界面分离,因为游戏的UI通常是需要经过多次的迭代和挑战,如果数据与UI没有分离,每一次挑战改动量就会非常大。

使用MVC思想写出的代码,一般不是太大的改动只需要调整UI部分的代码,而数据部分是不用改的。

2三层结构

三层结构结构通常是指的对于数据的操作,是对MVC思想中的M进行了更详细的划分。

接下来的一段时间,将一一学习上面列举出来的东西。

时间: 2024-10-16 07:29:33

游戏开发常用算法概述的相关文章

【读书笔记-《Android游戏编程之从零开始》】3.Android 游戏开发常用的系统控件(Button、Layout、ImageButton)

3.1 Button Button这控件不用多说,就是一个按钮,主要是点击后进行相应事件的响应. 给组件添加ID属性:定义格式为 android:id="@+id/name",这里的name是自定义的,不是索引变量."@+"表示新声明,"@"表示引用,例如:"@+id/tv" 表示新声明一个id,是id名为tv的组件:"@id/tv" 表示引用id名为tv的组件. 给按钮添加点击事件响应  想知道按钮是否被

【读书笔记-《Android游戏编程之从零开始》】8.Android 游戏开发常用的系统控件(系统控件常见问题)

Android 中常用的计量单位Android有时候需要一些计量单位,比如在布局Layout文件中可能需要指定具体单位等.常用的计量单位有:px.dip(dp).sp,以及一些不常用的pt.in.mm.下面详细介绍下这些计量单位之间的区别和联系.in:英寸(长度单位):mm:毫米(长度单位):pt:磅/点,1/72英寸(一个标准的长度单位):sp:全名 scaled pixels-best for text size,放大像素,与刻度无关,可以根据用户的字体大小就行缩放,主要用来处理字体的大小:

【读书笔记-《Android游戏编程之从零开始》】5.Android 游戏开发常用的系统控件(ProgressBar、Seekbar)

3.7 ProgressBar ProgressBar类官方文档地址:http://developer.android.com/reference/android/widget/ProgressBar.html 在Android应用开发中,ProgressBar(运行进度条)是比较常用到的组件,例如下载进度.安装程序进度.加载资源进度显示等.在Android中提供了两种样式来分别表示在不同状态下显示的进度条,下面来实现这两种样式.默认进度条是圆形,通过style属性来指定系统进度条的大小:sty

【读书笔记-《Android游戏编程之从零开始》】4.Android 游戏开发常用的系统控件(EditText、CheckBox、Radiobutton)

3.4 EditText EditText类官方文档地址:http://developer.android.com/reference/android/widget/EditText.html EditText继承TextView,所以EditText具有TextView的属性特点,下面主要介绍一些EditText的特有的输入法的属性特点android:layout_gravity="center_vertical":设置控件显示的位置:默认top,这里居中显示,还有bottomand

【读书笔记-《Android游戏编程之从零开始》】6.Android 游戏开发常用的系统控件(TabHost、ListView)

3.9 TabSpec与TabHost TabHost类官方文档地址:http://developer.android.com/reference/android/widget/TabHost.html Android 实现tab视图有2种方法,一种是在布局页面中定义<tabhost>标签,另一种就是继承tabactivity.但是我比较喜欢第二种方式,应为如果页面比较复杂的话你的XML文件会写得比较庞大,用第二种方式XML页面相对要简洁得多. <?xml version="1

【python游戏编程之旅】第八篇---pygame游戏开发常用数据结构

本系列博客介绍以python+pygame库进行小游戏的开发.有写的不对之处还望各位海涵. 上一个博客我们一起学习了pygame中冲突检测技术:http://www.cnblogs.com/msxh/p/5027688.html 这次我们来一起学习在pygame游戏里面常用的一些数据结构: 数据,列表,元组,队列,栈. 一.数组与列表 数组可以理解为简化的列表.像我们之前使用的pygame.sprite.Group这样的精灵组,也是一个列表.列表的元素是可变的,它具有添加.删除.搜索.排序等多种

【读书笔记-《Android游戏编程之从零开始》】7.Android 游戏开发常用的系统控件(Dialog)

在Android应用开发中,Dialog(对话框)创建简单且易于管理因而经常用到,对话框默认样式类似创建样式的Activity.首先介绍android.app.AlertDialog下的Builder这个类.Builder是AlertDialog类的子类,而且还是它的内部类.正如其名所示,Builder相当于一个具体的构造者,通过Builder设置对话框属性,然后将Builder(对话框)显示出来. 本人做了个Dialog显示效果集合的小Demo,效果如下(GIF图片较大,需要点加载时间): 主

Python游戏开发常用库

PyWeek:编程挑战,主要是Python游戏开发方面的 PyGame:PyGame在优秀的SDL库之上添加了更多功能.允许使用python语言创建功能齐全的游戏和多媒体程序.具有高度的可移植性,几乎可以在所有平台和操作系统上运行 PySoy:Python 3的高级3D游戏引擎,紧密结合了渲染,物理,动画和网络 Pyglet:用于opengl的跨平台窗口和Python的多媒体库,可在mods / bfheores / python文件夹中找到 Python-Ogre: 用于OGRE 3D引擎的完

史上最全最完整的IOS 游戏开发 PDF电子书定制下载

<iOS 5游戏开发>作者:(新西兰)James·Sugrue著 页数:191 出版社:北京市:人民邮电出版社 出版日期:2012.08 简介:<iOS5游戏开发>是一本iOS5游戏开发的基础入门书.全书使用通俗易懂的简单实例,带领读者经历构建经典动作游戏的整个周期.读者在本书的阅读过程中,将经历从开发概念.规划设计一直到编写实际代码的全过过程.本书的每一章,都将演示游戏创建过程中的一个逻辑步骤,读者将在其中学习如何创建Sprite,用触摸屏.重力感应器和屏幕游戏棒控制玩家角色等-