10.10 tap4fun 游戏客户端 一面70min
1.自我介绍
2.上来直接问项目,自己做的游戏demo(UE4),要详细说明
答:
Character类
摄像机
弹簧臂,相机
遇到的问题:移动摄像机中bUseControllerRotaionYaw
输入控制(移动,攻击)
PlayerInputComponent->BindAxis
PlayerInputComponent->BindAction
子弹Base类
移动组件、碰撞体/碰撞逻辑、音效、粒子效果
与Character是组合的关系,Character要发射子弹
爆炸、碰撞逻辑(OnBeginOverlap)
游戏AI
UE中的AI行为树,selector、sequence、EQS、Decorater,举了一个生活中的例子来说明。
子弹是怎么生成的?
1.PlayerInputComponent->BindAction("PrimaryAttack", IE_Pressed, this, &ASCharacter::PrimaryAttack);
2.void ASCharacter::PrimaryAttack()
3.void ASCharacter::PrimaryAttack_TimeElapsed()
4.void ASCharacter::SpawnProjectile(TSubclassOf<AActor> ClassToSpawn);在这个函数中:
设置子弹发射的Socket位置;
设置子弹碰撞体大小;
设置子弹发射的飞行距离(起始位置+单位方向×5000),如果碰撞到了某物体则重点就是碰撞点
调用GetWorld()->SpawnActor<AActor>
子弹会一直存在吗?有没有做缓存?
1.这里只答了子弹在碰撞后的触发事件后,会调用Destroy,至于缓存,不了解。。
那如果子弹没有碰撞呢,会不会不会销毁?
你刚才关于摄像机说了挺多,那你能说一下怎样去把一个3D场景中的元素投影到2D屏幕中的?(渲染管线)
简单说一说你做的光线追踪渲染器?概念了解多深?与其他渲染方法的区别?这个光追概念提出了很久了,为什么近几年才开始使用?(硬核。。)
1.首先答了光追原理
2.然后答了Ray Tracing的如何受限于硬件(其实是瞎答的)
3.然后答了Path Tracing,从算法上的提高(也是瞎答的)
4.最后总结说受限于硬件和软件算法层面,最近几年才得以广泛应用(。。。)
继续回到你做的游戏,CS玩过没?FPS游戏子弹穿墙的bug是什么原因?(不知道)
1.答了碰撞体大小,可能大于墙的厚度,然后碰到墙后面的玩家(应该是不对的,毕竟敌人可以离墙很远)
问:那你怎么去解决?
答:可以调整一下墙的碰撞体积
问:那这样会不会使得墙碰撞体积过于厚了
答:那从碰撞顺序入手,只进行第一次碰撞逻辑,就停止执行碰撞逻辑。
问:那你这样的话,有很多情况下是没有第一次碰撞逻辑的,这下怎么办?
答:。。。一般在地图里,子弹射程肯定是在地图范围内的,除非向天上打一枪。。或者从射线检测方法入手,比如从枪口发一个射线,碰到墙体就结束,这种思路。
数学建模说一说?做了什么题目,什么思路?(这我是真没想到的,,,都4年过去了,早忘了,当年保研面试都没老师问过这个。。。)
3.C++
除了C++用过别的语言吗?C++STL数据结构的底层实现原理,功能对比。
vector、list、deque、map和set、unordered_map和unordered_set、stack、queue。能说的都说了。
那平时哪个数据结构用的多一些?为什么?
C++11的新特性?
能说的都说了。
C++的try和catch的怎么实现的?
不知道,可能是底层是if-else这种吧,后来面试官说是顺便问一嘴。
讲讲C++内存管理
说了new/delete,答了operator new、placement new、malloc、brk/mmap,构造函数,最后返回指针。
说了C++内存分区
怎么知道需要释放多少内存?free的时候。
C++11的智能指针说一说。并且设计到内存管理这块现在很多语言比如Java和C#,都GC机制,针对这些你有没有研究过。
1.答了各种指针,还有shared_ptr机制和循环引用问题
2.答了UE的GC(标记-清扫算法)
做过网络编程吗?游戏中有用网络的功能吗(没有,只了解基础知识)
设计模式用过哪些?
答了单例(懒汉式、饿汉式)、工厂(NewObject)、观察者(MVC,UE4中的多播委托),举了UE中的实际应用。(其实只说了大概,因为自己没有手动实现过)
算法题:大数相乘。
答了A*b这种形式,就是手动模拟竖式的方法。但是问的是均超过long long的范围。
问:那你这样会有很多开销啊,有没有其他的思路
答:(想了半天,记得有个中国剩余定理,但是细节也忘记了)其他的不知道了。
在学习和生活中有没有遇到比较困难的问题?怎么去解决的?
反问环节。
十一前因为受伤推迟到了十一后。
总体感觉稍微难一些,但问的都是简历上的东西。比较奇怪的是竟然问了本科水的不能再水的数学建模。。。而且也米有问实习经历。而且场景题问了好多。
具体自己可能做的游戏demo扣的不深,有很多地方说的有些牵强,还是需要打磨一些。
希望能有后续吧。。