项目脚本结构
前言当我返回来看我一年前陆陆续续开发的游戏脚本时发现我当时压根就没有进行分类,四五十个脚本就这么和和睦睦的挤在一起,现在随着对项目理解的加深,深刻意识到了一个合理的项目结构到底有多重要,故写下此篇文章,记录自己的学习与理解 定义项目脚本结构对我而言就是Script文件夹下的文件层级。根据脚本的类别,所属场景等对脚本进行合理分类。在游戏项目的开发中,一个合理的脚本分类结构可以提升开发时的效率和项目脚本的可读性。 目前我理解的常用分类方式一、按脚本属性(功能/职责)分类 分类名称 英文标识 核心介绍 典型示例 核心管理 Manager 全局唯一、统筹管理游戏核心模块,控制整体流程与资源 GameManager(游戏总控)、AudioManager(音频管理)、DataManager(存档管理)、UIManager(UI管理) 实体控制 Controller 绑定到具体游戏对象,负责单个实体的行为、交互与状态控制 PlayerController(玩家控制)、EnemyController(敌人控制)、DoorController(门控制)、BulletCont...
从大逃杀到搜打撤:玩法革新的底层逻辑
BiliBili视频地址 正文导入近年来,搜打撤正快速成为射击品类中最具潜力的现象级玩法。这个视频就以三角洲为例进行拆解:搜打撤模式,为什么能成立、他为FPS带来了什么。 (交战、搜索、搞定就撤)战斗,搜索,撤离,是搜打撤的核心机制。也是与传统大逃杀最本质的区别,搜打撤的成功,关键在于引入了一套贯穿全局的局外经济系统。可以说:局外经济系统是搜打撤机制的核心支撑 要理解这套设计的高明之处,我们必须先一起复盘复盘:上一任FPS老大哥,大逃杀模式,走到今天遇到了哪些结构性困境。 大逃杀类型简要讲述2018 年《绝地求生》爆火,大逃杀凭借强随机、高对抗、强社交迅速占领市场。核心循环非常简单:开局一队人,装备全靠捡,缩圈战斗,活到最后即是胜利。可到如今炸鱼、同质化、慢节奏,外挂劝退了一批又一批玩家。 在大逃杀类型下,胜利条件只有一个:活到最后。一旦死亡所有努力一局清零,不管你搜得多富、杀得多爽,只要没吃鸡,装备、物资、瞬间归零,即使你成为百里挑一的冠军,一局结束后,也依旧会回到起点。 而搜打撤,正是精准解决了大逃杀的所有痛点。 第一点:搜索行为认知转换在传统大逃杀的逻辑里,流程是单向且残酷...
拆解
游戏拆解游戏拆解可以理解为反推现有游戏,获取拆解策划案的过程,依据拆解的对象大小可以分为游戏拆解和游戏系统拆解 什么是游戏系统拆解对已有的游戏产品进行设计上的详细拆分、梳理和分析。把一款完整游戏,按策划视角拆成最小模块,分析它为什么好玩、为什么成功、结构是什么、逻辑是什么。通俗的讲就是分析这个游戏为什么好玩 游戏拆解与玩游戏有什么不同当作为一个用户游玩游戏时,关注点在于游戏给你带来的感受。而游戏拆解就是以一个游戏设计师的视角,从上帝视角剖析游戏对用户造成的影响及其背后的原理。 游戏拆解的意义 对感兴趣的游戏进行剖析,从而取其精华,学以致用 提升自身的设计能力,是一个学习的很好路径 累计知识,提高游戏阅历的深度,进行积累 如何进行游戏拆解拆解核心玩法 找到这款游戏最核心的循环 描述:玩家在游戏里重复做什么 玩家感到游戏好玩的点在哪 游戏目标找到游戏设计的或对普遍玩家有内驱力的游戏目标例如 短期目标:过关、打怪、搜装备 中期目标:升级、换装备、通关副本 长期目标:通关、全成就、排行榜、毕业 拆解核心循环对游戏的核心循环进行详细的拆解,找到这套循环的运行逻辑常见三循环: 核心...
ER图
ER图主要是用于表示实体,属性,和关系的图像,通常用于描述数据库的数据及其之间的关系 ER图核心概念ER 图(Entity-Relationship Diagram)是描述数据库概念模型的核心工具,核心包含三大要素: 实体(Entity):客观存在的事物(如用户、订单),用矩形表示。 属性(Attribute):实体的特征(如用户姓名、订单金额),用椭圆形表示。 关系(Relationship):实体间的关联(如用户下单),用菱形表示。 ER图中三种关联的联系一对一(1:1) :1对1关系是指对于实体集A与实体集B,A中的每一个实体至多与B中一个实体有关系 例如一个人只能有一个身份证号,是一一对应的一对n(1:n):1对多关系是指实体集A与实体集B中至少有n(n>0)个实体有关系例如一个人可以有多个邮箱,但是一个邮箱只能属于一个人多对多(m:n):多对多关系是指实体集A与实体集B中至少有n(n>0)个实体有关系例如一个人可以加入多个组织,一个组织也可以有多个成员 ER图绘制一对一(1:1):组织 & 用户(法定负责人) 12345678910111...
C++中Vector和数组区别
数组数组是存放类型相同的对象的容器,数组的大小确定不变,不能随意向数组中增加元素。 定义和初始化 数组的大小不变,(a[d],d为数组的维度),数组的维度必须是一个常量表达式。定义数组的时,必须指定数组的类型和大小。 初始化时,允许不指明数组的维度,不指明维度,则编译器根据数组初始值的大小推测出维度; 当定义字符串数组时结尾还会有一个空字符,数组大小等于字面值加一!!!数组不允许拷贝和赋值 数组操作获取数组元素个数 静态sizeof(arr)/sizeof(arr[0]) 动态必须手动记录 扩容:手动扩容(申请新内存→拷贝→释放旧内存)删除元素:手动移动后续元素覆盖,动态数组需手动调整大小遍历: 下标循环 / 指针循环排序:std::sort(arr, arr+n)(传首 / 尾地址,需 <algorithm>)传参:退化为指针,需手动传大小:void func(int arr[], int n) 向量vectorvector在C++中时类模版,是类型相同对象的容器,vector的大小可以变化。 vector的size和ca...
排序算法
排序算法作为最经典的算法排序算法本质上是将数字按照顺序排列下面将介绍比较经典的排序算法,以从小到大排序为例子并且使用C++实现IDE:visual Studio数组长度为设为n 冒泡排序 (Bubble Sort)定义冒泡排序的核心思想是比较相邻两位数字大小,根据结果进行交换,遍历一次数组即为一轮,每遍历一轮既可以确定一个数字所在位置,遍历n轮后即排序结束,由于数字移动的方式像是冒泡一样挪过去,被称为冒泡排序。 详解在冒泡排序中,第一次许比较n-1次,第二轮需要比较n-2次,比较n轮,根据等差序列通项和公式 $$S_n = \frac{n(a_1 + a_n)}{2} $$ 可以近似将比较次数记为$\frac{n^2}{2}$因此冒泡排序的时间复杂度是$O(n^2)$ 代码实现1234567891011121314151617181920212223242526272829#include<iostream>#include<cstdlib>using namespace std;void bubbleSort(int arr[], int n)...
C++学习笔记
C++语法C++简介C++是一种静态类型的,大小写敏感,支持过程化编程,面相对象编程和泛型编程。 标准库 核心语言 c++标准库 标准模板库(STL) 经典Hallow world123456# include<iostream>using namespace std;int main(){ cont <<"Hellow World"<< endl;//输出Hallow World return 0 } 可以使用”/n”来替代endl’ 程序结构头文件#include导入头文件using namespace std是选择std命名空间 告诉编辑器我们将要使用空间std中的函数或者对象。int main()同C语言,主函数入口return 0 程序结束 结束符 为; 注释单行注释//多行注释/* */ 数据类型基本的内置类型 类型 关键字 布尔型 bool 字符型 char 整型 int 浮点型 float 双浮点型 double 无类型 v...
Mermaid
施工中
LaTeX
施工中基本用法行内使用$ 内容 $ 来表明这是一段LaTeX的写法$内容$ 行间使用$$ 内容 $$ 来表明这是一段LaTeX的写法$$ 内容 $$ 绝对值直接用|...|包裹内容物即可 分数\frac{分子}{分母}$$\frac{分子}{分母}$$
Hexo中加入Mermaid图
什么是Mermaid 图Mermaid 是一款基于 JavaScript 的开源绘图工具,核心特点是:用纯文本代码替代手动拖拽,可以轻量的实现流程图类图等图像的绘画特别是在ai广泛使用的现在,通过ai分析代码生成Mermaid源代码图很适合快速分析代码工作流程 如何在Hexo中使用Mermaid图导入包Hexo原生不支持Mermaid图的使用,这里需要用到一个包快速下载:npm install hexo-filter-mermaid-diagrams --save 配置包安装好这个包后需要在 _config.yml文件中配置主要就是打开enable就好,其他的都有默认设置 123456789101112mermaid: enable: true code_write: false theme: light: default dark: dark version: "10.6.1" # 指定Mermaid版本( options: # 全局自定义Mermaid渲染参数(进阶) fontSize: 14 # ...


