资源管理

每个游戏都是有种类繁多的资源(有时候称为资产或媒体的构成),例如网络、材质、纹理、着色器程序、动画、音频,关卡布局、碰撞数据、物理参数等。游戏资源必须妥善保管,这包括两方面,一方面是建立资源的离线工具,一方面是在执行期载入,卸下及操作资源。因此,每个游戏都有某种形式的资源管理器。

每个游戏资源管理器都有两个元件组成,这两个元件及独立又相互整合。其一负责离线工具链,用来创建资产及把它们转换成引擎可用的形式,另一个元件在执行期间管理资源,确保资源在使用之前已转入内存,并在不需要的时候把它们从内存卸下。

缓存命中

缓存命中

游戏开发者可分为两类:在他们的游戏引擎中使用STL模板库之类的。以及不使用的。一些开发者认为STL内存分配模式(memory allocation pattern)不高效,也导致内存碎片问题,使STL不能在游戏中使用。一些开发者认为STL的强大和方便超过它的问题,而且大部分的问题还是可以变通解决,笔者个人认为STL在PC上可以无障碍使用。因为PC上可以无障碍使用虚拟内存(virtual memory)系统,谨慎的分配内存变得不那么紧要(虽然游戏开发者仍要非常谨慎)。在游戏主机上,只有有限(甚至没有)虚拟内存功能,而且内存命中失败(cache miss)的代价极高,游戏开发者最好编写自定义的数据结构,保证是可预期或者有限的内存分配模式。(在PC上做同样的事情,肯定也不也错不了。)【以上内容来自《游戏引擎架构》第29页】

struct 结构体类型的大小计算

关于偏移量

  • 偏移量指的是结构体变量中成员的地址和结构体变量地址的差。结构体大小等于最后一个成员的偏移量加上最后一个成员的大小。显然,结构体变量中第一个成员的地址就是结构体变量的首地址。
  • 由于存储变量时地址对齐的要求,编译器在编译程序时会遵循两条原则:
  • 一、结构体变量中成员的偏移量必须是成员大小的整数倍(0被认为是任何数的整数倍)
  • 二、结构体大小必须是所有成员大小的整数倍。

Unity小技巧-清除缓存

创建新帐号的时候,默认给选择服务器。目前创建新账号,会记录上个帐号的选择服务器id。

如何判断?

  • 在移动平台,可以通过服务器记录上次登录的服务器id,或者服务器不记录的话,可以用PlayerPrefs.GetInt(“ServieId”);
  • 在PC上要清除临时文件。

自动上阵功能开发的小结

最近一周中周一体检,周二发了一天低烧,周三才好一些。解决一个自动上阵的问题,截止到昨天晚上,算是最终解决问题。

槽点

这个功能没有案子,很早之前的案子也找不到。所以只能看代码。而我一边晕着看着代码,一边理当中的逻辑。

从功能划分

  • 设计的内容:主将=》副将=》武器。
  • 具体操作:下阵=》界面刷新=》上阵=》界面刷新
  • 对应到数据层:清楚数据=》设置新数据,整个过程都是客户端给服务器发协议,设置的计算是客户端来做。
  • 未知风险:代码哪一些处理;还有数量级上去了是否会出现卡顿;界面在刷新过程中会出现隐藏UI情况,感觉并不是很好。

MVC、MVP和MVVM的图示

MVC

  • MVC,全称是 Model View Controller,是模型 (model)-视图 (view)-控制器 (controller) 的缩写。它表示的是一种常见的客户端软件开发框架。
  • MVC 的概念最早出现在二十世纪八十年代的施乐帕克实验室中(对,就是那个发明图形用户界面和鼠标的实验室),当时施乐帕克为 Smalltalk 发明了这种软件设计模式。

Shader的纹理

一直在看《Unity shader入门精要》,纹理这章的划线重点部分笔记,关于纹理采样的内容。

  • 纹理是使用一张图片来控制模型的外观。纹理映射技术,把一张图“黏”在模型表面,逐纹素地控制模型的颜色。
  • 在OpenGL中纹理空间的原点位在左下角,在DirectX中,原点位于左上角。Unity做了在DirectX平台上翻转屏幕图像纹理

如何快速熟悉一个老项目

加入新的项目快一个月了。写了两个简单功能,做了一个比较复杂的功能。基本上也熟悉了一些内容了。作为思考怎么让自己更快的熟悉项目。

先玩游戏本身

  • 正常情况下,玩到一定级大部分的功能就熟悉了,对关键模块的内容就了解了。
|