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扣的不深,有很多地方说的有些牵强,还是需要打磨一些。
希望能有后续吧。。


#游戏客户端开发工程师##游戏##tap4fun##游戏开发#
全部评论
硬核的面试过硬的技术
点赞
送花
回复
分享
发布于 2022-10-11 15:52 河南

相关推荐

点赞 评论 收藏
转发
2 18 评论
分享
牛客网
牛客企业服务