0%

RectTransform

Position
Size
Width,Height
Left,Right,Top Bottom
Anchors
Pivot

Anchors是相对父结点的锚点位置
Pivot是Rect的中心点
Position是Pivot相对Anchors的偏移位置
Left,Right,Top,Bottom是根据Pivot,Width,Height计算出的Rect四条边的位置

阅读全文 »

背包系统

背包插入物品
背包删除物品
背包查询物品
背包修改物品
背包使用物品
背包玩家之间交易物品
背包强化物品
背包镶嵌物品
背包物品叠加
背包容量
背包整理

背包是一个Rect时,每个物品有自己的Rect,物品的摆放

服务器端不对背包物品排序,客户端做排序表现

只关注物品数量

服务器端每个物品只记录相对应的物品数量
客户端做排序表现

关注物品数量,和每个物品的唯一id

当物品可以交易或者可强化时
物品可交易时,每个物品需要一个唯一id;
物品可强化时,每个物品也需要一个唯一id;

当物品需要有一个唯一id时
服务器端记录格子信息并且不进行排序
客户端根据格子信息数组,对格子进行排序表现
进行修改,使用操作时,根据物品的唯一id进行操作

服务器端管理背包的排序,客户端只做表现

阅读全文 »

背包整理

背包整理(交换操作)

将背包物品排序
只可以进行两两物品交换操作
求背包整理需要的最少操作次数

有重复物品

例子1:
每个物品有字段 id,quality,nums
首先 quality大的靠前,然后id小的在前,最后数量大的在前

[[1,2,3],[1,2,4],[2,3,2],[3,1,2],[10,3,5],[20,2,10],[20,2,30]]

例子2:
每个物品有字段 id,quality,nums
每个物品有一个折叠数量上线

需要折叠合并的物品要合并,
然后对背包进行交换操作排序

阅读全文 »

问题

2020/09/08
数据结构与算法
很多房间和门 声音传递
垃圾回收机制
C++ 11 特性
角色状态机
AI实现
寻路
技能
位移同步
骨骼动画
C++ 迭代器什么情况下会失效

2020/01/01
怎么画一个圆
怎么判断一个点是否在三角形内
一组数中找出第K大的数 TOP K
一组数中,判断有没有组合等于一个固定的数 subsetsums问题
简单计算器的实现
怎么渲染一个半透明的玻璃杯
同步如何实现的 影子追随,预判法 平滑处理
团队管理 技术框架 团队人事管理
骨骼动画

C++11有那些特性?
C++11模板中的特化和偏特化分别指什么?都在那些情况下应用?
C++11模版的高级使用有那些?请举出例子。
Java Runtime和Lua Runtime有什么区别和相同点?
游戏中状态机如何实现REDO,UNDO和MERGE?(用stack即可实现)
极大极小算法的原理和在AI中的应用?
3D游戏中相机是有那三个元素构成的(Translate,Target和Up Vector),分别起什么作用,如何使用四元数进行相机的变换?

网易游戏的面试流程整体走下来,感觉还是蛮规范的,网易确实在认真的招人和面试,我的感觉是网易希望招聘的应届生除了有一个拿得出手的项目之外(最好是游戏相关的),还要在以下这两个方面至少熟悉一样:

计算机图形学
游戏服务器编程
然后再说一下网易的基本要求,当然了,什么数据结构,操作系统,数据库,编译原理这些的基本原理和应用就不细说了,都是本科生基础必会的东西,说些和游戏相关的要求:

对C++的模版的高级用法要了解的比较深入。
对C++的内存管理的各种解决方案要非常熟悉并亲手实验过。
对AI的各种算法要有了解:比如博弈论中的极大极小算法,A*算法的优化等等
对C++的装载链接过程和Lua的虚拟机的一些底层实现要有了解
对VS或者Xcode这两种IDE需要可以熟练的应用
需要的项目经历:自己开发过 一个简单的游戏引擎或者是做过比较复杂的 游戏Demo(大概是Kingdom Rush这个级别就可以了吧)
对Unity3D或者Cocos2d-x有着丰富的使用经验 (可以没有,有的话加分)
对OpenGL或者是DirectX要有了解,做过一些Shader和Renderer (可以没有,有的话加分)
了解过网易的后端框架Pomelo(可以没有,有的话加分)

如何对手机游戏进行优化,我的回答基本上是以下这样的
一般分为内存优化帧数优化,内存优化和运存优化。
帧数优化可以考虑对一个message loop中的逻辑运算进行优化,比如可以考虑A*的剪枝。或者进行time slice,具体可以参考我的这篇文章
体积和运行内存优化有以下几点
使用工具对资源进行打包,使用TexturePacker等工具把多张资源合成一张图片。
采用png压缩工具,在打包图片之前对每张图片进行压缩,降低图片质量。
针对不同的平台使用特定的压缩格式的图片
如果项目中帧序列占的比较多,那么可以采用降帧的方式来优化。
缩放图片,将原来图片缩小为原来的70% ~ %80,再对图像进行放大
采用编辑器,将大图转化为拼接,那么就可以利用地图编辑器、动作编辑器等从而减少体积,降低内存的使 用。
如何在对游戏的“手感”进行改进:
游戏手感一般指的是打击感,那么我就在打击到一个游戏对象时,游戏对象要产生击退的效果,产生该对象被打击的感觉。
时间控制要恰当,要让某个对象(比如火球,拳头)打击到另一个游戏对象的时候,才产生击退效果,这就需要进行使用消息机制和回调来解决。
如何在数据库中存储一个人的所有装备
建立一个人物ID和装备ID的关系表。
将人物的所有装备的id序列化为一个JSON字符串存储为人物的一个字段。
这两个最大的区别是在修改装备时,第一个只会影响一条记录,当时第二个会影响所有装备,一旦出现bug还让玩家损失所有装备。两者各有利弊,根据使用场景自己权衡。
C++11的新特性?
如何对一个快排进行优化使得它的最坏的时间复杂度达到O(LogN)?
Lua和Unity中的协程是怎么使用的,都有什么区别?
我的游戏Demo中AI的设计思路是怎样的。
如果让你设计一个暗黑破坏神的简化版手机游戏,你会从哪里开始设计。

项目要点

阴影
翅膀 身体 武器 合并 draw
五方向
C#和lua的通信
消息分发机制 广播 观察者 dispatch

阅读全文 »