编程导航游戏话题讨论

游戏

33 参与
分享

快来分享你的内容吧~

点击登录,快来和大家讨论吧~
表情
图片
话题
打卡
综合
交流
文章
问答

25届双非本春招基本结束,发点面经

**👜面试岗位:游戏客户端开发** ***小声逼逼:面试鸭可不可以收录一点游戏客户端的面试题(在群里提了好几次的说)*** ## 第一家:奥术游戏,一面挂 1、数组和链表的区别 2、数组下标随机访问的原理。 3、链表中间增删O(1)的原理。 4、实现三消算法中生成必定可以全消的内容; 5、实现俄罗斯方块 6、你对游戏和代码的优先级是如何的? 7、你有什么代码洁癖吗? 8、在游戏行业做开发,很多时候你会发现,你做的根本就是个垃圾,如果不是对代码有兴趣的话,你会很难做下去。 ## 第二家:万游网络,一面挂 先做个自我介绍吧。 你从什么时候接触到unity的? 先来个算法题吧,写一下翻转二叉树,方便共享屏幕吗? 讲一下过程。 细说一下,递归到什么程度。 那这种是深度优先还是广度优先。 那来一遍广度优先的。不用写了,口头描述下就行。 那这种的遍历顺序是什么样的。 这里一段是关于笔试题的提问。我就不写了。 vector的底层原理 数组删除的时间复杂度是多少 问点C++的知识吧。你刚刚也提到map和set是吧,他为啥查找是nlogn。 说一下红黑树的特点。 怎么判断二叉搜索树是否符合 讲一下c++内存 说一下栈内存和堆内存区别 说一下虚函数和用处。 析构函数只有delete时候调用吗 讲一下指针和引用的区别。 引用声明后可以更改吗? 你平时有玩什么游戏吗? 那你玩足球类游戏,或者其他体育类游戏吗? ## 第三家:成都维塔士,笔试挂 笔试全英文题目,但是作答可以用中文。 ## 第四家:柠檬微趣,三面挂 ### 一面: 自我介绍一下 你有什么项目经历吗?(这里答:就是简历上面写的那两个,我跟着课程学的。) 跟着教程学的是吧,那介绍一下吧。 那你说下这个架构怎么设计的,就是有哪些类? 那你说一下这个状态怎么切换的? 说一下EntityState这个类。(补充:我的这个项目是一个基于FSM做的,主要就在架构这里做文章)。 说一下这个Animation和Animator的区别? 说一下面向对象的特点。 多态怎么实现的。 那还有个静态多态你知道吗? 编译器怎么知道该执行哪个呢? 说一下这个vector的扩容机制。 说一下这个push_back和emplace_back的区别。 说一下这个map和unordered_map的区别。 用过erase吗?讲一下用erase删除vector全部数据。 讲一下这个虚函数表。 子类跟基类是一个表吗? 现在有一个基类,是空类,有个虚函数,他派生一个子类,有个int32数据。问这个子类实例化一个对象,占用多大。 子类new出来的对象,有虚函数表吗? 知道memset吗?你认为可以用这个去初始化一个对象吗? 知道memcpy的兄弟memmove吗?说下区别。 memove他是怎么做到可以在有重叠区域复制的。或者是说让你来设计,你怎么完成。 讲一下快排,口述就行。 快排稳定吗? 给你一个中序遍历和前序遍历的结果,让你去重构二叉树。二叉树的值都不相同。 再说一下,100的阶乘有多少个0。 你开一下编译器,把一个矩阵,方阵吧,给你简单点的,顺时针旋转90°。 ### 二面: 链表交叉的形状有哪些? 判断两个链表是否有公共节点(考虑存在环情况)。 A0-An链表重排为A0-An-A1-(An-1)......这种 钟表3:15形成的夹角 ### 三面: 实现一下堆内存。 虚拟内存的底层实现。 栈内存为什么比堆内存快,能让堆内存比栈还快吗? 编译器是如何优化栈的。 实现一下map的迭代器。 后续:三面挂 ## 第五家:乐易网络,二面挂 具体题目忘了,就记得俩智力题了。 一群人,戴白帽子或黑帽子,只能看到别人的帽子不能看到自己的帽子,上帝来问谁带了黑帽子谁举手,问到第四次才有人举手,问几个人带黑帽子。 四对夫妻互相握手,夫妻之间不能握手,两人之间最多握一次。李先生问了一圈,其他七个人握手次数都不一样,问李先生握了几次。 手撕代码是合并k个有序数组。 ## 第六家:多益 ### 一面: 正常技术面。 c++八股,虚函数,stl这些 手撕是回溯实现集合的子集。 ### HR面: ******************(自己体会吧,懂的都懂) ## 第六家:乐信圣文,OC ### 一面: CPP和算法部分: const的用法和作用,比如const int* ptr和int* const ptr区别。 比如说我一个类里面的成员函数的参数声明为const呢? 那比如我类里面一个成员不是const呢?能修改吗? 你笔试里面的那个动态循环队列还记得吗?说一下这个实现的要点。 笔试里面还有个扑克牌的题还记得吗?你是存到vector里面,然后对他整体排序得到答案的对吧,你这个时间复杂度多少? 你了解快排吗?说一下。 快排什么时候效率低下? 这题有O(n)的做法,你思考下。(用哈希表映射) 哈希冲突怎么解决。 哈希表有个get方法对吧,如果哈希冲突了,他是怎么实现的,就比如你这个链地址法。 野指针你知道吗? 数组声明的时候为什么要初始化? cpp会产生内存碎片,如果让你设计分配内存的方法,你如何去避免? 堆排序了解吗?说一下。 堆排序都有哪些应用场景。 TopK问题是吧。具体点的,假如排行榜里面,几百万人你去挑出前K,你怎么实现。时间复杂度多少。 项目部分: 你这个第一个,这个状态机,你觉得有什么要点。 讲一下你这个存储。 如果我要做一个渐变的UI,一会变暗,一会变亮,怎么做。 gameObject你怎么理解。 gameObject上都会有Transform组件知道吗? 知道RectTransform吗? 平时喜欢玩游戏吗? 如果让你设计一个moba,你会考虑哪些方面? ### 二面: 纯聊天,中间穿插着问了一下渲染管道和空间划分 后续:HR通过,OC 还有好几家没记录也实在回忆不起来题目了。 目前还在推进中的公司: 米等笔试结果 游卡(一面过,二面约改时间后一直没消息了) 祝大家都能收到心仪offer

用Docker玩俄罗斯方块

# 用 SQL 写的俄罗斯方块游戏:Tetris-SQL 用 SQL 写的俄罗斯方块游戏:[Tetris-SQL](https://github.com/nuno-faria/tetris-sql) # 运行Postgres容器 ``` docker run --name pg -p 5432:5432 -d -e POSTGRES_PASSWORD=postgres postgres:16 ``` - **docker run** 运行容器 - **-name pg** 容器命名为pg - **p 5432:5432** 将主机的端口和docker容器的端口映射起来。PostgreSQL 数据库默认使用 5432 端口,因此这样做可以使你从主机上访问容器内的 PostgreSQL 数据库服务。也就是说我们可以在自己的控制台里操控容器中的PostgreSQL 数据库了。 - **d** 以后台模式运行 - **e POSTGRES_PASSWORD=postgres** ai说是环境变量,设置PostgreSQL 数据库POSTGRES_PASSWORD环境变量值为postgres - **postgres:16** postgres是镜像的名字,:16 是镜像的版本标签。这个命令会从 Docker Hub 拉取(如果本地没有的话)版本为 16 的 PostgreSQL 镜像,并基于这个镜像创建和运行容器。 <img src="https://pic.code-nav.cn/post_picture/1740036006469459969/4maI5z44qKwA3C2J.webp" alt="image.png" width="570px" /> <img src="https://pic.code-nav.cn/post_picture/1740036006469459969/u3PXGZGlb4oToWyI.webp" alt="image 1.png" width="100%" /> 有时候可能网不好会失败,多执行几次。这样就成功啦 <img src="https://pic.code-nav.cn/post_picture/1740036006469459969/eWV0tT974lN8ug2k.webp" alt="image 2.png" width="100%" /> # 在docker容器中执行命令 ```bash docker exec pg apt update ``` - **docker exec pg** 在pg容器中执行命令 - **apt update** 更新apt包管理器 ```bash docker exec pg apt install -y python3-psycopg2 ``` - **apt install -y python3-psycopg2** 在容器内部运行的命令,使用 APT 包管理器安装 `python3-psycopg2` 包。`y` 选项自动确认安装,而不提示用户确认。 # 拉项目放到容器中运行 ```bash git clone https://github.com/nuno-faria/tetris-sql docker cp tetris-sql pg:tetris-sql docker exec pg chmod +x ./tetris-sql/input.py ``` - **docker cp tetris-sql pg:tetris-sql**: - **`docker cp`**: 这个命令用于在主机和 Docker 容器之间复制文件或目录。 - **`tetris-sql`**: 本地的文件或目录名称,这里是你刚刚克隆下来的 Git 仓库。 - **`pg:tetris-sql`**: 目标容器和目标路径。`pg` 是容器的名字,`tetris-sql` 是容器内的路径。这个命令将本地的 `tetris-sql` 目录复制到 `pg` 容器的根目录下。 - **docker exec pg chmod +x ./tetris-sql/input.py**: - **`docker exec`**: 用于在运行中的容器内执行命令。 - **`pg`**: 目标容器的名字。 - **`chmod +x ./tetris-sql/input.py`**: 在容器内执行的命令,用于将 `input.py` 文件设置为可执行。`+x` 选项使文件变为可执行文件。 <img src="https://pic.code-nav.cn/post_picture/1740036006469459969/vM8noVrOWrFjB0jc.png" alt="image 4.png" width="579px" /> # 运行 ```bash ## 先开一个终端作为输入 docker exec -it pg ./tetris-sql/input.py ``` - **docker exec**: - 用于在一个运行中的容器内执行命令。 - **it**: - **`i`**: 代表“交互模式”(interactive),使容器保持打开状态并允许你与容器交互。 - **`t`**: 代表“伪终端”(pseudo-TTY),为容器分配一个伪终端,这样你可以看到命令的输出并与其进行交互。`it` 选项组合通常用于运行需要用户交互的命令或查看命令输出的情况。 - **pg**: - 这是容器的名字,指示在名为 `pg` 的容器中执行命令。 - **./tetris-sql/input.py**: - 这是在容器内执行的命令。这里,它指向容器内的 `tetris-sql/input.py` 脚本文件。执行这个文件时,Python 会运行这个脚本。 <img src="https://pic.code-nav.cn/post_picture/1740036006469459969/MNJQ5PrLS2FxeGhM.webp" alt="image 5.png" width="584px" /> > 如果提示 > > > `exec ./tetris-sql/input.py: no such file or directory` > > **`What's next:`** > > `Try Docker Debug for seamless, persistent debugging tools in any container or image → docker debug pg` > > `Learn more at https://docs.docker.com/go/debug-cli/` > > 可能是python没装好,重新装一下。 > ```bash ## 再开一个终端作为俄罗斯方块的图形界面 docker exec pg psql -U postgres -f tetris-sql/game.sql ``` - **psql**: - 这是 PostgreSQL 提供的命令行客户端工具,用于与 PostgreSQL 数据库进行交互。 - **U postgres**: - 这是 `psql` 命令的一个选项,指定连接到 PostgreSQL 数据库的用户。`U` 选项后面的 `postgres` 是用户名。在 PostgreSQL 中,`postgres` 是默认的超级用户账号。 - **f tetris-sql/game.sql**: - 这是 `psql` 命令的一个选项,指定要执行的 SQL 脚本文件。`f` 选项后面的 `tetris-sql/game.sql` 是 SQL 脚本的路径。这个脚本会在 PostgreSQL 数据库中执行。 <img src="https://pic.code-nav.cn/post_picture/1740036006469459969/o8i2NUROnvmPFuUT.png" alt="image 6.png" width="570px" />

还有程序员不会玩黑神话悟空?是我太菜了

大家好,我是程序员鱼皮。我承认是我天真了,本来计划周二晚上公开直播新项目教学的,但是发现黑神话悟空这游戏的热度火的有点过头了啊!所以临时决定把新项目直播移到周四晚上 8 点。 《黑神话:悟空》是以中国神话为背景的动作角色扮演游戏,制作时间长达 7 年,并于 24 年 8 月 20 日正式上线。这个游戏有多火?一天就登顶全球销量榜首、各平台直播间基本都是该游戏的直播,而且就我身边来说,无论是朋友圈、交流群还是我们公司,都充满了对黑神话悟空的讨论。 这个游戏基本上就是流量密码了,有的主播甚至晕 3D 到吐也要直播玩。 <img src="https://pic.code-nav.cn/migrate_image/e5434e43e77c27b1a45325a2a615169e.webp" alt="" width="100%" /> 我自然也对这部国产大作充满兴趣和期待,所以干完正事后,就做了回 “游戏主播”,直播玩了玩这个游戏。 <img src="https://pic.code-nav.cn/migrate_image/0a9b45aca3b220a478af3c17504b967c.webp" alt="" width="100%" /> 实话说,我自认为我打游戏是不菜的,从小各种 2D、2.5D、3D、RPG、FPS 游戏都打过,高考结束后打某款不知名手游还获得过全区第三,大一的时候打守望先锋也获得过我们学校大一新生组第一轮小组赛 2 : 3 惜败的成绩。。。咳咳,开个玩笑。 太久没打这种 3D 游戏了,开播没多久,弹幕就有人说 “还有程序员不会玩黑神话悟空?” 我就纳闷了,谁说程序员打游戏就一定很强的?就跟有人觉得程序员一定会修电脑一样,我们程序员是开发程序的,虽然敲键盘多,不代表打游戏就很溜。而且有一说一,写代码改 Bug 久了,我感觉自己的反应力下降了不少,打游戏的时候老是怪物都打到我了,才按闪避键。 <img src="https://pic.code-nav.cn/migrate_image/b664506f38aa2950b279438598c5b8d6.webp" alt="" width="286px" /> 我不是来给这个游戏打广告的,我也只是一位玩家,说说我体验这个游戏的感受吧。 游戏的第一关就是让你在黑风山里探索,不得不说,画面画质堪称一绝。一开场就让我觉得非常真实,直接代入角色了。据说,为了让游戏场景更逼真,开发团队多次实地考察,扫描了真实的寺庙、佛像、森林、岩石等,还采用了虚幻 5 引擎和英伟达的光线追踪等先进技术。据说,这个游戏每小时的开发成本约为 1500 至 2000 万元! <img src="https://pic.code-nav.cn/migrate_image/a5f519679d544286087abb74fa4f7842.webp" alt="" width="100%" /> 不过我个人感觉,新手教程和指引不太够,对于没玩过此类游戏的朋友来说,刚开始可能会一脸懵逼。而且这个游戏竟然没有小地图给玩家指引方向,导致刚开始我经常跑来跑去找不到路。不过后面我发现自己多虑了,打一个 BOSS 我要死十几次,道路都快背出来了,熟练地让人心疼。 游戏的自由度虽然比较高,可以到处探索,但有一些路径会被空气墙挡住。比如我想从山上跳下去,或者想沿着石头爬上去,都不行,稍微有点扫兴。我玩游戏就是比较喜欢一些 “异常” 的操作哈哈,一般有小道就不会走大道。 游戏提供了各种技能、攻击方式、变身术、法术、道具等,可玩度很高。而且还是有一定难度的,如果不熟悉游戏机制的话,可能就会像我一样,第一关的两个 BOSS(广智和幽魂)每个都打了十几次才通过。不过只要摸索一段时间,找到自己擅长的攻击方式和丝滑小连招,就会越打越带劲。 比如我打 BOSS 的策略就是 “偏猥琐”: <img src="https://pic.code-nav.cn/migrate_image/94b9571bb2c6e2fcfe6be849e8ede522.webp" alt="" width="100%" /> 作为一名程序员,一边体验游戏、感叹游戏制作精良的同时,我的大脑 CPU 也在飞速转动,思考了很多问题,比如: 1. 游戏技能的冷却是怎么实现的? 2. 游戏技能的加点方案是如何存储的? 3. 游戏是如何实现存档功能的? 4. 游戏是如何实现碰撞检测和伤害计算的? 5. 游戏是如何实现打击反馈的? 等等等等。 还好我不是游戏开发,感觉比做网站难太多了啊! 最后,我的建议是别碰这个游戏,尤其是正在做项目找工作的同学,因为真的会上瘾啊! ## 更多 💻 编程学习交流:[编程导航](https://www.codefather.cn) 📃 简历快速制作:[老鱼简历](https://laoyujianli.com) ✏️ 面试刷题神器:[面试鸭](https://mianshiya.com)

游戏行业跳槽其他行业难度怎么样?

皮总好。距离我实习已经满3个月了,我现在在一家三百多人的游戏公司,但是不是开发游戏的目前是做bt渠道跟游戏折扣的,类似于游戏盒子,而且这方面做得也是不错的。我是25届的,现在问题是:公司是答应给我转正的。因为这家公司是不参与秋招春招的,他们是缺人了就出来招人,所以当时是只有我一个实习生的,我感觉应该是可以转正。但是我现在担心的问题是这个行业会不会前景不太好,比如说我后面想跳槽其他非游戏公司的话会不会没戏?重点就是这个行业的发展前景,我看小红薯上说应届生不要一开始就接触这个行业,不然后面想去其他行业就很难。但是如果我现在放弃的话出来秋招因为我在听到公司说给我转正之后我就有想法说留下来,因为公司氛围挺好的,也不怎么加班,所以我基本没去背过像八股文或算法了。所以现在想问问您的看法就是说这个行业后面跳槽其他行业难度怎么样?打扰了!

面试SLG游戏项目开发值得去吗?

刚刚约了一个面试,是一家20~99人的公司,要求是Java基础、HTTP、Servlet.Json、XML、Socket这些,还要熟悉SMARTFOXSERVER等基于NETTY的网络框架(这个不会),还要有游戏开发经验(这一点也不符合)。主要是想问一下,SLG游戏项目开发值得去吗?希望有相关经验的同学能给指点一下,谢谢!

Minetest

地址:https://github.com/minetest/minetest

Codepip

这个网站中只有flex布局的青蛙游戏和grid布局的给萝卜浇水游戏是免费的。网站中是支持设置为中文的 地址:https://codepip.com/

ByteLegend

地址:https://github.com/ByteLegend/ByteLegend

Unity3D新手入门教程

地址:https://www.bilibili.com/video/BV1TZ4y1o76s

basic-computer-games

地址:https://github.com/coding-horror/basic-computer-games

下载 APP