04 2020 档案
摘要:MVC 在整个 GUI 编程领域,MVC 已经拥有将近 50 年的历史了。早在几十年前,Smalltalk-76 就对 MVC 架构模式进行了实现,在随后的几十年历史中,MVC 产生了很多的变种,例如:HMVC、MVA、MVP、MVVM 和其它将 MVC 运用于其它不同领域的模式。 早期的 MVC
阅读全文
摘要:好吧,在被这个算法折腾了许多天之后,我终于对它竖起了中指。这几天的经历让我明白了一个道理:对于数学基础不好的人来说,对待图形学最好远观不可亵玩焉;如果坚持硬闯却又碰巧E文不咋地,那受罪程度真叫人生不如死。最后,看待算法最好别太坚持“追求极致”,如果付出了太多而收获了太少,那么采取一种“妥协”的态度也
阅读全文
摘要:在Cocos2d-x 3.x版本添加了对3D物体的支持后,3D物体的碰撞检测方法也随之更新,其中一种最简单的碰撞检测方法就是AABB碰撞检测。 1. AABB包围盒 在游戏中,为了简化物体之间的碰撞检测运算,通常会对物体创建一个规则的几何外形将其包围。 其中,AABB(axis-aligned bo
阅读全文
摘要:接着上篇,介绍SDK资源的导入。首先介绍一下Android Studio工程。 AS工程可以由多个Module组成,我们可以把某个Module作为我们打包的Module,其他的Module当做资源导入到主Module中。我们unity导出的Gradle工程(有一篇介绍了unity出Gradle工程)
阅读全文
摘要:接着上篇,本篇对SDK接口进行封装。在开始之前,需要先了解下面知识。 (1)unity与android之间的交互 unity通过下面方式调用android中的函数: 方法一: AndroidJavaClass jc = new AndroidJavaClass ("com.unity3d.playe
阅读全文
摘要:每一款游戏都有接入多个SDK的需求。当接入多个SDK时会面临两个问题: (1)代码层面:每个SDK都有调用各自功能的方法,我们需要统一管理每个SDK提供的方法,这样会使每个SDK调用方便,使代码整洁易读。 (2)资源层面:每个SDK都带有各自的资源,如果你一股脑导入unity中,自己都分不清,以后升
阅读全文
摘要:说明 分析lua使用的gc算法,如何做到分步gc,以及测试结论 gc算法分析 lua gc采用的是标记-清除算法,即一次gc分两步: 从根节点开始遍历gc对象,如果可达,则标记 遍历所有的gc对象,清除没有被标记的对象 二色标记法 lua 5.1之前采用的算法,二色回收法是最简单的标记-清除算法,缺
阅读全文
摘要:自我总结一句话:警惕copy导致的数据冗余,和元表设置导致的深度索引lua里面实现class机制,比较关键的地方就是class的继承机制,以及class实例化的过程。 class继承机制的关键是怎么让子类拥有父类的方法集:<br>1.完全使用setmetatable()的方式实现,每继承一次,都把父
阅读全文
摘要:重要::::首先参考 C#高级编程 第10版 C# 6 & .NET Core ,次重要的是下面的截图部分 应该了解的垃圾收集机制 对于大多数应用而言,了解垃圾收集机制的主要动机并不是为了对内存“省吃俭用”,而是为了处理非托管资源的控制问题,这些问题往往跟内存的大小没有什么关系。例如对一个文件进行操
阅读全文
摘要:迪杰斯特拉算法介绍 迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径。它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止。 基本思想 通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算)。 此外,引进
阅读全文
摘要:这一节介绍Lua唯一的数据结构table,相对于大部分语言提供数组和字典两种类型,Lua将其合二为一,颇为精巧的实现了table。 table充分体现了Lua语言的特点,用最简练的语法表达丰富的信息,但也增加了用户的理解成本。table包含数组和哈希两部分功能,所以实现起来颇为复杂。 本文展示的代码
阅读全文
摘要:一、table结构 1、Table结构体 首先了解一下table结构的组成结构,table是存放在GCObject里的。结构如下: typedef struct Table { CommonHeader; lu_byte flags; /* 1<<p means tagmethod(p) is no
阅读全文
摘要:延迟补偿在C/S架构游戏协议设计和优化中的应用 1 分钟读完 1.综述Permalink 第一人称角色网络游戏的设计是一项很有挑战性的工作。网络环境下的健壮性,是动作游戏能否成功的一个重要因素。另外,PC上面的开发者需要考虑到玩家层次不齐的机器配置以及网络状况,很多用户的硬件配置跟网络跟当前最好的配
阅读全文
摘要:延迟补偿和对时的相关总结 少于 1 分钟读完 国内的网络游戏多是客户端/服务器方式,而对于游戏实时性要求比较高的网游,如 果采用客户端发送时间包给服务器,服务器校验后再下发给客户端表现的话,网络延时 和抖动都会恶化游戏体验。对于客户端和服务器的同步问题, 一般有两种算法解决: ① 、客户端和服务器之
阅读全文
摘要:1. 前言 很多年前就想将这些年工作中积累的优化经验撰写成文章,但懒癌缠身,迟迟未动手,近期总算潜下心写成文章。 涉及到具体优化技巧时,我会尽量阐述原理和依据,让读者知其然也知其所以然。 要完全读懂这篇文章,要求读者有一定的计算机语言/图形学/游戏引擎基础。希望读者看完后能将自己的游戏性能优化到一定
阅读全文
摘要:一:递归实现 在学校里学习递归的时候,老师就喜欢举斐波那契这个例子,看!多简洁清晰。其实这个例子是非常不适合作为递归举例的, 原因就是效率太慢,除了最后一个数,每个数都被算了一遍又一遍,时间复杂度差不多是5n^2/3。二:数组实现 空间复杂度和时间复杂度都是0(n),效率一般,比递归来得快。三:ve
阅读全文
摘要:Unity面试题总结 一:什么是协同程序? 在主线程运行的同时开启另一段逻辑处理,来协助当前程序的执行。实现原理是C#迭代器和状态机(参考链接) https://blog.csdn.net/hhh132/article/details/78937146 https://blog.csdn.net/R
阅读全文
摘要:RectTransform RectTransform 是 Transform 的 2D 對應 Component,Transform 表示單個點,RectTransform 表示一個2D矩形(UI空間),如果父子物體都有RectTransform,那麼子物體可以指定在父物體矩形中的位置與大小,簡單
阅读全文
摘要:https://developer.nvidia.com/content/life-triangle-nvidias-logical-pipeline Since the release of the ground breaking Fermi architecture almost 5 years
阅读全文
摘要:帧同步的相关问题 少于 1 分钟读完 Lock-StepPermalink 我们把游戏的前进分为一帧帧,这里的帧和游戏的渲染帧率并不是一个,只是借鉴了帧的概念,自定义的帧,我们称为turn。游戏的过程就是每一个turn不断向前推进,每一个玩家的turn推进速度一致。 每一帧只有当服务器集齐了所有玩家
阅读全文