10.10 tap4fun 游戏客户端 一面70min

原本在牛客网上分享的面经,后来不知道为什么被封了。不想多说什么了。

作者:BBBourne
链接: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扣的不深,有很多地方说的有些牵强,还是需要打磨一些。

希望能有后续吧。。

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值