自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 【游戏面包屑】开发类职业攻略1.0

简单的做了一个技术类的职业规划,以及一些提升能力的方式。仅供参考,具体职位的介绍可以自行查阅资料。游戏开发工程师职业路线职业要求(偏独立开发者)初级游戏客户端工程师 定位:掌握基础专业能力 1、扎实的编程能力,对于简单模块有能力进行实现。能解决简单的bug。 2、架构思维。 3、优化思维。 4、对成熟的独立模块进行解读学习。 5、个人能独立完成市面上自己专精类型的小游戏。 考核标准:对市面上的小游戏进行完整开发。中级游戏客户端工程师...

2022-01-22 23:45:22 3116

原创 【游戏面包屑】位运算的一种精妙方式

位运算的一种精妙应用‘|’核心:单一|组合:(相同类型数据)扩展组合‘&’核心:单一&组合:筛选是否存在相同点(该单一是否存在在该组合)因为位运算是基于二进制形式的数据。因此可以通过枚举(或其他int类型的数据结构)来进行这种精妙的应用,只需给对象一个标志符(int类型的即可),将该标识符进行位运算即可做到 组合与筛选。例子:过滤器模式,可以给过滤器的过滤类多一个标识符(如id)。用户在需要过滤时传入 过滤规则组合(‘|’运算组合的id)然后在过滤算法对标识符(id)进

2022-01-16 11:59:37 2288

原创 【游戏面包屑】简单的导航栏设计

前言为了便于UI的开发,设计了一个简单的导航栏结构。目前版本的导航栏抽象类简化了导航栏选项的事件监听、移除。后续根据需求再丰富功能、结构。本次实例用于设计角色·技能UI窗口的左侧导航栏以及右下角的按钮集。让事件能统一管理,减少过多的事件方法并简化的代码编写。实现效果:角色·技能界面代码UI的通用接口(IButtonProcessor可能用于RadioButton等各类的设计,所有抽出为接口)using UnityEngine.UI;/// <summary&...

2022-01-16 11:56:31 2349

原创 【游戏面包屑】时间回溯·逆流吧

学习链接【Creator3】实现时间倒放效果,游戏开发时间倒流的技术实现方案,时间回溯在游戏开发中如何实现,来个tenet信条玩玩_哔哩哔哩_bilibili早上看了这个学习视频,心里挺痒的,正好有一些灵感。提前写了一些学习心得分享。实现思路 1.使用数据结构存储状态(类似 堆栈,可根据游戏自定义设计特定数据结构)。 使用多个栈存储所需的状态(类)。 2.根据游戏设计记录时间轴状态规则:记录频率、记录长度、记录的内容。 3.需要时间回溯时,不断出栈...

2021-12-24 21:52:07 2265

原创 【游戏面包屑】图片自定义裁剪

栏目介绍本栏目主要是介绍一些游戏开发的逻辑思路以及记录可能的游戏心得。不会对排版进行追求(懒)。思路通过给图片设定定点,并将定点按顺序连接进行裁剪,然后将裁剪获得的图片替代原图即可。详细过程创建一个新的组件。其长宽为1,中心点位置为(0,0)。定义存储结构vertex(Vector2)顺序存储点的位置。设定好自定义的裁剪点后,让每个点在脚本中根据原图资源的长宽进行折算(按比例)为图片点坐标同时自身也进行连线(每个点只有一条线,“自身也进行连线”这一步是为了显示在UI中以...

2021-12-18 17:55:31 1274

原创 【游戏面包屑】文件路径遍历寻找目标文件

功能:指定目标文件绝对路径,寻找该路径下目标文件以下是C#版本代码 /// <summary> /// 遍历目标路径下所有文件寻找目标文件 /// 找到文件后设置curPath为目标文件的Resources下的相对路径 /// </summary> /// <param name="dirs">遍历的绝对路径</param> /// <param name="name">目标文件名(包含后缀)

2021-12-18 17:52:48 1462

原创 【游戏面包屑】功能:排序(过滤器)、查找(最相似)、记忆回退Esc

通过过滤器模式实现功能:根据不同选择对数据进行针对性排序。思路1.获得玩家的排序选择(如类型、数量、价格等,可使用简单的按钮button组合或者下拉框等方式)。2.使用过滤器模式进行设计。3.根据玩家的选择,选取不同的过滤器进行数据过滤、排序并返回。过滤器模式 帮助开发者用不同的标准来过滤一组对象,通过逻辑运算以解耦的方式把它们连接起来。这种类型的设计模式属于结构型模式,它结合多个标准来获得单一标准。 1.创建一个类 2.创建一个接口-接口实现方法:过滤方法(参数为该类...

2021-12-18 17:51:51 1708

原创 【游戏精粹】AI-初幕·终焉

详情请翻阅《游戏编程精粹》系列丛书,原文虽然会稍难些,但是顾及方方面面且点明了各个技术的出处(包括技术所属公司、引用论文出处等)。如果对书中的名词不懂想了解的,建议去外网Google搜索。对于AI来说,优化是最重要的。优化会始终贯彻整个游戏的开发,在AI系统(一):优化策略一文中提到了11个简单而实用的策略: 使用事件驱动行为而非轮询; 减少重复计算; 由管理员集中进行协调; 不那么频繁的运行AI; 将处理工作分散到多帧中完成; 利用细节级AI; 只解决问题的一部分...

2021-12-01 23:07:50 180

原创 【游戏精粹】使用战力值评估模型进行战争役分析

前言 QJM不仅是一种战争模型也是一种战争理论。最初,它是用来模拟历史上的战争,后来,经过进一步的修改它被用于现代战争的预测。这是预测游戏中潜在胜利者的一个理想系统。在本文中,我们将描述基本的QJM公式。可以通过增加模型来进一步的扩充这个基本公式,例如,磨损计算模型、单位的空间效力模型和伤亡效力模型。 基本公式 基本QJM公式会生成一个战斗力的值(CP): 除非另有说明,所有变量都定义为0和1之间的值。 计算兵力 ...

2021-12-01 20:31:10 2181

原创 【游戏精粹】独立非玩家角色合作行为的实现

前言 本文讨论了一些可以容易添加的机制,这些机制可以使独立的非玩家角色具有更多的合作性。尽管每一个非玩家角色独立地决定它自己的行为,增加一些附加的信息并简单地进行通信将使得游戏看起来好像真的发生了合作行为一样。 可能的解决方案 合作,能够用很多方法来解决。一种解决方案是什么也不做。一些游戏类型避免了添加复杂的合作行为,因为敌人被假定为只会混乱地行动(例如《植物大战僵尸》中的僵尸彼此之间没有合作,而巨人僵尸的投掷行为与梯子僵尸的行为只能算是简单的合作行为)。然...

2021-11-30 20:16:46 1510

原创 【游戏精粹】应用基于模型的决策-蝗虫人工智能引擎

前言 通常,通过基于规则的方法来开发游戏的人工智能。但是,规则在开发、修改和调试的过程是不稳定、昂贵和费时的,并经常导致游戏出现非智能的行为。本文讨论一种新的游戏智能开发方法:基于游戏世界模型的方法——行动、效果和观察。基于模型的方法更稳定,更省时也更经济,并且非常已与修改,这也使游戏所表现的行为更加智能化。 引言 现在的计算机游戏通过综合图形、物理和人工智能的方法来达到游戏的真实感。这通常是指游戏的沉浸感以及游戏中出现的非玩家角色的智...

2021-11-26 19:44:37 367

原创 【游戏精粹】叙述战斗:利用AI增强游戏张力(调节动作类游戏的难度、节奏的AI)

前言 理想地,最好能有某些机制让游戏设计者根据玩家的进度来调节游戏的节奏。这些调节机制不仅仅是由游戏设计者决定的,而且要考虑到玩家当前的经验和技术水平。这样一个更加动态的环境通过提高或降低戏剧张力使游戏的可玩性始终处于一个会让玩家觉得享受的状态。 本文讨论了如何创建一个AI系统来调节动作类游戏的难度和节奏。这个系统除了把高度节奏化的游戏元素、可玩性和更高自由的游戏控制结合起来,还可以使游戏设计者更容易创作出有好的节奏游戏——这个系统只需设计者对特定的一个地形给其大致的...

2021-11-24 19:48:14 2150

原创 【游戏精粹】针对AI代理、对象的可拓展触发器系统(相对简单的游戏编辑器)

前言 一款游戏如果可以让玩家对其人工智能引擎进行修改和拓展,那么能极大丰富游戏的内容。然而,玩家并非开发人员,而且你也不应该强迫他们去学习一种虚构的编程语言,甚至对其结果进行调试。如果你想要自己游戏中平均程度的玩家能改造游戏,那么简洁性是一个关键的因素,而通过实现一个可扩展的触发器系统,就能达到此目标了。 触发器系统简介 触发器系统时专门做某件事情的一段集中的代码:它将对各个条件进行检验,继而执行相应的事件响应。如果有一组条件满足了,那么对...

2021-11-19 20:51:09 1304

原创 【游戏精粹】AI系统(一):优化策略

优化策略 策略1:使用事件驱动行为而非轮询 最理想的情况是自主体应不断地监控其所处的环境,并做出相应的反应。这种方法的问题在于,它将导致大量重复计算。替换方法是尽可能采用事件驱动技术。如棒球游戏,当棒球被击打时,棒球只需告诉接球手,自己被击打即可。 策略2:减少重复计算 通过在多个AI主体之间共享结果以减少重复计算。很多时候,虽然本可以只计算一次并共享计算结果,但主体将重复计算相同的信息。这种优化很容易,通常可以节省大量的时间...

2021-11-17 20:17:57 1469

原创 【游戏精粹】AI个性化决策系统

目录 创建影响力地图 策略评估技术 有关态度的一切:为意见、声望和NPC个性构建单元 个人观点 一、创建影响力地图前言 本节和下一节将介绍这样的一些技术:让AI主体能够从战术和战略的角度深入了解游戏世界中的角色和当前的游戏状态,还将讨论与不同的游戏类型和虚拟环境相关的技术。 影响力地图 影响力地图是AI主体关于游戏世界知识的空间表示,让计算机玩家能够根据游戏环境的物理/地理表示获悉当前游戏状态的战术视图...

2021-11-16 19:46:47 1705

原创 【游戏精粹】随机数

目录 可预测随机数 生成真正的随机数 随机数生成 一、可预测随机数前言: 细节丰富的背景已成为成功游戏的重要因素,游戏中的各种动作正式在此前景之上发送的。不仅如此,背景还在玩家与游戏的交互中扮演着积极的角色。为了得到这种效果,传统的方法是将手工制作的关卡数据提取出来,然后保存在一个相对复杂、占用空间较大的关卡文件里,以备实时重放。但即便拥有强劲的资源配置,对于规模宏大而复杂的游戏而言,开发者也常常缺乏足够的空间进行调配。如果关卡数据不足,可能会使游戏的深度低于...

2021-11-16 19:42:22 1271

原创 【游戏精粹】模糊逻辑

往期内容 模拟群体行为:Flocking算法 目录 模糊逻辑基础 避免模糊系统的组合激增 一种模糊逻辑的实际应用:管理场景复杂度的模糊控制方法 一、模糊逻辑基础模糊逻辑允许我们量化地模拟大小逻辑,如“有点害怕”、“非常愤怒”、“非常大”等。因此我们可以使用模糊逻辑模拟AI的情感,这也允许我们创造一个比传统逻辑(true或false)更聪明的AI。 使用模糊集合,我们可以模糊“是”与“否”之间的界限,如“好像是”、“不完全是”。 ...

2021-11-11 21:25:16 1914

原创 【游戏精粹】模拟群体行为:Flocking算法

目录 Flocking:模拟群体行为的简单技术 有齿物群的模拟:捕食者和猎物 一、flocking:模拟群体行为的简单技术Flocking(有时也称为是warming或herding),拥有4项简单的规则,把它们组合在一起时,为自治主体群给出一个类似于鸟群、鱼群的群体行为的逼真形式。定向行为规则:分离原则、列队原则、聚合原则、躲避原则 分离原则:定向时要避免与本地flock同伴拥挤。即定时检测邻近同伴,避免拥挤; 列队原则:驶向本地f...

2021-11-09 20:25:39 3528

原创 A*算法基础

学习资料:《游戏编程精粹1》第三章简介本文旨在A*算法的基础入门,带读者了解A*算法的大概,不做过于详尽的深入研究和具体实现。除了A*的基础,A*算法还有许多的更先进的发展,如基于A*的战术式寻径、超越A*算法、动态A*(D*)算法、超越A*:IDA*(迭代延伸A*)和边缘搜索等。A*是一种在状态空间中进行搜索的算法,它主要是通过检查特定状态的相邻或邻接状态来搜索从起始状态到目标状态的最小代价路径。教学实例:15数码难题(15-puzzle) 本质:A*...

2021-11-06 20:17:17 218

原创 交互功能实现:类《原神》

本文为实现类似《原神》在世界中与物品、NPC等的交互功能,在此抛砖引玉讲讲自己的实现方案。实现思路:简单版: 1.射线检测范围内可交互对象(可优化降低性能); 2.存在交互对象时显示交互界面; 3.点击交互界面选项进入该选项下一级UI可选交互选项; 4.点击交互选项实现其对应效果功能。升级版:射线检测范围内可交互对象(可优化降低性能)1.角色设计射线检测方法2.设计可交互...

2021-10-28 22:21:45 755

原创 简单有限状态机代码实现

学习链接:Unity有限状态机编写 - 木子微冷 - 博客园实现思路: 1.创建状态基类BasState,所有具体状态类继承该类。基类有3个方法:进入状态、状态中、离开状态;2.创建管理类来管理状态机(StateMgr),并实现状态机的各个方法:状态转换、设置默认状态等; 3.创建具体状态类(继承BasState),并实现其3个方法(virtual方法如果没有重载override会默认调用父一级的该方法);4.初始化管理器(StateMgr)。注意事项:...

2021-10-27 20:46:26 791

原创 数字大写转换(13位以下)

//功能:将数字转换成大写数字(13位数字以下),例如银行的转换应用等#include&lt;stdio.h&gt;#include&lt;string.h&gt;int main(){ int i, j, lon; char num[100]; char key[10][3] = { "壹","贰","叁","肆","伍","陆","柒&quot

2018-05-10 00:57:53 589

原创 回文数的基本判断

关于求回文数的判断。这里有2种基本方法和一种小编自己想的,可供参考//求位数int Import(int M){ int key, i, j; for (i = 1;; i++) { j = pow(10, i); if (M / j == 0) return i; }} 1.将数字对折,求对折2半的值是否相同PS:小编想出的一种//M,N为对(M,N)范围内的数字进行判断void Dea...

2018-04-23 23:17:43 322

原创 关于VS使用graphics.h函数

下载Easyx.h最新版,安装对应的VS。只能在C++中使用该函数graphics.h中的使用方法会有所变动.具体可以访问该网址:http://blog.sina.com.cn/s/blog_677a5dc30102uw2h.html...

2018-03-21 18:15:21 11249

转载 各排序法

相关资料在百度上获取。每个排序法的定义都是由百度的定义摘抄下来。作者仅是整理一遍重要的信息。具体相关可以直接上百度查询。若是文字太小可以按住Ctrl + 滑轮上下移动,来进行缩放1.插入排序:有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序法,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中...

2018-03-17 08:32:41 236

原创 竖式问题(乘法)

问题:输入一个数集。找出所有形如abc*de(三位数乘以两位数)的算式。使得在完整的竖式中,所有数字都属于一个特定的数字集合(全由数集中的数字组成)输出数字集合(相邻数字之间无空格)。本文提供2种方法。请读者选择自己喜欢的方法。第一种是作者自己编写的。比较繁琐。第二种是在书籍上摘抄的。这种方法比较简单,容易理解,可读性强第一种://竖式问题//作者是将大多数计算数据

2018-02-11 14:43:59 3380

原创 关于产生随机数

以时间为种子产生随机数:#include#include#includemain(){int n;float m;srand((unsigned int)(time(NULL)));n = rand()%100 + 2//(产生2~101的随机整数)m = rand()/(double)(RAND_MAX/100)//产生0~100浮点的随机浮点数(

2018-01-01 14:26:26 298

原创 车票问题

假设某线路的公共汽车共设置 26 个车站,准备了 1 元、2 元…6 元的车票,收费标准为:6 站以内票价为 1 元,每 4 站票价增加 1 元。现在随机生成一些乘客的上车站与下车站,显示每位乘客应付的票价和单程售出的总票价,并统计几元的车票卖得最多。#include#include#include#define N 20 //乘客的个数main(){i

2018-01-01 13:54:25 1096

原创 分屏处理数据系统(简陋)

分屏处理数据系统,以时间为种子产生随机数的用法,函数的使用,清屏。

2018-01-01 11:41:37 3357

原创 各进制转换

//本程序是由VS编写的,所以请把scanf_s改成scanf,才能正常运行。//思路是先将其统一转换成10进制再转化成目标进制。//为了保证代码的正确性,我通过网上的在线进制转化器 多次测试数据,当然这个程序只能实现2~16进制的转换。#include#include#includemain(){char num1[1000], num2[1000];int

2017-12-31 09:37:06 487

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除