10.10 tap4fun 游戏客户端 一面70min
创始人
2024-03-31 08:05:13
0

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

作者: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 ClassToSpawn);在这个函数中:

    设置子弹发射的Socket位置;

    设置子弹碰撞体大小;

    设置子弹发射的飞行距离(起始位置+单位方向×5000),如果碰撞到了某物体则重点就是碰撞点

    调用GetWorld()->SpawnActor

子弹会一直存在吗?有没有做缓存?

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

希望能有后续吧。。

 

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...