如何制作一款FPS游戏? [关闭]

2023-12-28

我想知道如何使用 SDL 库创建 fps 游戏?

有没有什么书籍可以举例说明?


这对于大多数开放式问题来说是胜利。你真的可以写一本书。但让我们确定指向正确的方向......

第一步,对于这样的项目,您需要良好的调试技能。阅读 Steve McConnell 的《Code Complete》。阅读全文。投入的时间比你可以阅读/实验的任何其他东西都更值得。

获得一些游戏的源代码。任何游戏。确保在看到大而复杂的东西之前先看到简单的东西,并记住,当您查看任何游戏代码时,他们可能有一个联合团队投入了比您更多的时间。重点是看代码结构。

获得 3D 数学的参考,不必那么深入,但您需要了解点积之类的东西,能够弄清楚如何在世界中为您的相机创建矩阵等。(即使你写了 0% 的渲染代码)

(edit)这是一本关于 3D 数学的好书3D 游戏编程和计算机图形学数学,第二版(游戏开发系列) https://rads.stackoverflow.com/amzn/click/com/1584502770这不是你在大学里学到的那种,它更像是三角函数和更高级的实用概念之间的交叉:如何为自己创建一个简单的物理、高效的碰撞检测等工具箱。

您需要了解一些有关渲染和管道的知识。 SDL 可以为您提供帮助,但请确保您了解其功能的概念。

阅读有关实用系统设计的内容。您的各种系统必须互锁。好好想想吧。你的系统在 C 或 C++ 中可能只是一个很好的系统,重要的是你的数据/控制如何流动的想法,而不是你模拟设计模式的完美程度(尽管这些也非常有用)

人工智能的基础知识,不是“真正的”人工智能,而是功能性人工智能;有一个很大的不同。状态机非常适合入门,对于简单的 FPS 来说已经足够了。

了解一些有关估算和规划的知识。您将没有时间去做您想要做的所有事情来正确地制作 FPS。您必须进行分类并学习如何分类;它们是两件不同的事情,后者更困难。经验是粗俗最好的老师。 (尽管传奇人物麦康奈尔也有这方面的书)

拥有一个将游戏玩法插入关卡的系统。如果您只是一名程序员,那么您最好的选择是为现有的编辑程序(例如 3DS Max)编写插件。对于程序员来说,我强烈推荐 Max,而不是 Maya。 Maya 脚本很好,但它更适合聪明的非程序员。我发现 3DS Max 的思考更多地类似于程序员如何创建和编辑你的世界。

您可以花费数年时间来制作工具来让您正确完成此操作,因此您希望以可以快速准确地编辑的方式做事 如果您制作自己的编辑器,请将其合并到您的游戏世界中。 如果您的世界不是真正的 3D 并且您想快速制作大量关卡,您可以将关卡数据保存为类似这样的内容,这将为您节省大量时间 其中 X 是墙,其他字母是游戏对象,简单的解析器可以将其转换为游戏对象和世界坐标

 xxxxxxxxxxxxxxxxxxxxxxxx
 xx..........P..........x
 xxxxxxx...........I....x
 xR....xxx...........E..x
 xx.................0xxxx
 xxxxxxxxxxxxxxxxxxxxxxxx

但这一切都取决于你的游戏。我的观点是,你需要诉诸“贫民区编码”,如何将游戏数据带入你的世界非常重要,你需要考虑一些既可以快速实施又可以快速使用的东西。

归根结底是你的目标是什么?如果要学习以绝对正确的方式编写代码,则需要花费大部分时间迭代一个月前看起来不错的代码,但现在您意识到自己的要求是什么,它真的可以使用另一遍。不要害怕重写,通过这样做你可以学到很多东西,但是如果你的目标是功能,你可能需要弄清楚在哪里破解一些东西(比如将游戏数据和坐标嵌入到代码文件中)IS只要您知道自己在哪里进行了黑客攻击,并且小心地将其与您的良好代码分开,那么您就可以进行黑客攻击,以便您有机会时可以回去正确编写代码。

最重要的是,您需要决定您的目标是什么,学习还是功能,并找到两者之间的折衷方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何制作一款FPS游戏? [关闭] 的相关文章

  • 为什么在 cocos2d 中只有 60 fps 才算流畅?

    以前可能有人问过 但我找不到它在任何地方 在 videoland 中 24 fps 及以上的速度都是流畅的 Cocos2d 好像是 仅当 60 fps 或更低时才流畅 任何介于 30 和 50 肯定不流畅 fps 计数器似乎不准确 为什么是
  • 是否可以并行读取网络摄像头帧?

    我有一个简单的Python使用捕获网络摄像头的脚本OpenCV 我的网络摄像头有潜力传输 30 FPS 但自从我树莓派不够强大 我只能读取 20 FPS 运行脚本时 我的 CPU 的一个核心最大使用到 100 但其余核心未受影响 因此我尝试
  • AVAudioPlayer - 帧率下降

    我有一个简单的问题 我正在将 mp3 文件加载到 NSData 对象中 然后在游戏中使用 AVAudioPlayer 来播放它 大约每隔一秒 帧速率就会下降 您可以看到屏幕上出现卡顿现象 这并不是一个重大的减速 但明显明显并且对游戏玩法造成
  • 恒定 FPS Android OpenGLES

    你好安卓开发者 我正在 Eclipse 中使用 OpenGLES 1 0 为 Android 开发一个简单的游戏 我使用 Samsung Galaxy S2 Android 2 3 作为开发设备 我有一个关于双核和使帧速率恒定的问题 因此
  • ffmpeg CLI 设置 -r 30 如果输入 => 30 fps,否则 -r 如果 < 30 fps 则采用输入 fps

    我发布了我的原来的问题在这里 Tried 建议的解决方案 但这并不能解决我的问题 这就是我所做的 下载这个视频来自 Youtube 作为测试 使用 ffprobe 给出 Stream 0 0 Video h264 High yuv420p
  • 实时生成(泊松?)随机变量

    我有一个实时运行的程序 具有可变的帧速率 例如可以是 15 fps 也可以是 60 fps 我希望平均每 5 秒发生一次事件 每一帧 我想调用一个函数 该函数将自上一帧以来的时间作为输入 并在调用它的情况下平均每 5 秒的运行时间返回 Tr
  • 如何使用Camera API实现慢动作和延时视频录制

    有没有办法使用Camera API实现慢动作和延时录制 我尝试使用MediaRecorder环境VideoFrameRate VideoBitRate VideoCaptureRate但对我来说没有任何作用 我已经成功地使用 JNI 实现了
  • 使用 Thread.sleep() 限制 Libgdx 游戏中的 FPS 不起作用

    我正在使用 libgdx 为 android 开发一个小游戏 并希望将 fps 限制为 30 以节省电池 问题是它不起作用 fps 只是从 60 下降到 56 这是代码部分 位于渲染部分的末尾 System out print nFPS G
  • ffmpeg 忽略每个帧速率选项,将结果锁定为 25 fps

    ffmpeg 版本 3 4 8 0ubuntu0 2 版权所有 c 2000 2020 FFmpeg 开发人员 无论我做什么 ffmpeg 都会忽略所有内容并将其编码为 25fps framerate 60什么也没做 t 60什么也没做 r
  • HTML5 Canvas 性能 - 计算每秒循环/帧数

    我知道以前有人问过一些类似的问题 例如 在JS中检查FPS https stackoverflow com questions 4787431 check fps in js 这在某种程度上确实有效 我能够找出每个循环需要多长时间才能完成
  • 如何制作一款FPS游戏? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Android SurfaceView 的低 FPS

    我在使用 SurfaceView 时遇到了一些帧速率问题 我正在做我在一些教程中找到的典型内容 所有教程都说一样 但我无法在我的三星 Galaxy S 旧款 i9000 上达到像样的帧速率 这是我的循环线程的代码 FPS 初始化为 30 O
  • Pydub - 如何在不改变播放速度的情况下改变帧速率

    我有几个在 Pydub 中打开的音频文件AudioSegment 我想将音频质量从帧速率 22050 降低到 16000 Hz 一个通道文件 如果我简单地更改 AudioSegment 的帧速率 我得到的是以较慢的速度播放的完全相同的波形
  • 在 Android 上访问高 fps 相机

    有些手机官方支持高 fps 录制 例如 Galaxy S5 和 S6 我尝试了两者 两者都可以使用默认相机应用程序录制高 fps 视频 60 甚至 120 fps 或者在 S6 上使用 Gear VR 的 直通相机 功能 但是 当您通过标准
  • 如何在(Android)机顶盒上的 Chrome 中显示 FPS 仪表?

    我想在机顶盒 android 上的 Chrome 中使用 HTML5 标签显示视频的 FPS 在 Chrome 29 中 我可以使用chrome flags show fps counter使用 FPS 计 但是最新版本 50 我再也找不到
  • XNA 的 CPU 使用率高

    我今天刚刚注意到 当我编译并运行一款新的 XNA 4 0 游戏时 其中一个 CPU 线程以 100 的速度运行 并且帧速率下降到 54 FPS 奇怪的是 有时它可以在 60 FPS 下运行 但随后就会下降到 54 FPS 我以前没有注意到这
  • android NDK 可能实现最快的 2D 帧速率,我的尝试包括在内,有更好的选择吗?

    android NDK 可能实现最快的 2D 帧速率 我的尝试包括在内 有更好的选择吗 我使用 NDK 和 OpenGL ES 2 0 将帧显示为 GL TRIANGLE STRIP 上的纹理 这是在 HTC Desire 上完成的 其硬件
  • fps - 如何将计数除以时间函数来确定 fps

    我有一个计数器可以计算每一帧 我想要做的是将其除以时间来确定程序的 FPS 但我不确定如何在 python 中对计时函数执行操作 我尝试过将时间初始化为 fps time time time fps time float time time
  • iOS AVCaptureSession - 如何获取/设置每秒记录的帧数?

    我是 AVCaptureSession 的新手 希望更好地了解如何使用它 因此 我设法将视频流捕获为单独的 CIImage 并将它们转换为 UIImage 现在我希望能够获取每秒捕获的帧数 并且最好能够对其进行设置 知道该怎么做吗 AVCa
  • 我可以从带时间戳的图像创建 VFR 视频吗?

    首先 我对图像制作视频的经验几乎为零 我拥有的是一组带有 BMP 时间戳的图像 我想从中生成视频 由于时间戳的间隔不相等 我不能简单地使用从图像创建恒定帧速率视频的软件 一个可能的解决方案是在固定的时间间隔创建人造图像 但如果我无法制作 V

随机推荐

  • 如何在 jersey 2.0 中使用 hk2 注入常量?

    如何在球衣中使用 HK2 将常量注入某个类 有了Guice 我可以上一些像这样的课程 public class DependsOnFoo Inject public DependsOnFoo Named FOO String foo 我会在
  • python 中基于 websocket 的 MQTT

    python 是否支持通过端口 8080 订阅 mqtt 代理 import sys import paho mqtt client as mqtt def on connect mqttc obj flags rc print rc st
  • 访问图中重复访问次数最少的所有节点

    我有一个基于图块的地图 其中几个图块是墙壁 其他图块是可步行的 可步行的瓷砖构成了我想在路径规划中使用的图表 我的问题是他们有什么好的算法可以找到访问图中每个节点的路径 从而最大限度地减少重复访问吗 例如 地图示例http img220 i
  • app:srcCompat 不适用于 ImageView

    我正在向库项目添加矢量可绘制支持 并使用app srcCompat引用可绘制的矢量 唯一有效的视图是 ImageButton 我不知道为什么 这是我的 build gradle 的相关部分 android defaultConfig vec
  • 从另一台具有不同 Gradle 版本的 PC 导入 Android Studio 项目?

    我有一个用 Android Studio 版本 1 3 2 编写的 Android studio 项目 现在 在另一台装有 Android Studio 2 1 2 的 PC 上 我想导入或打开该项目 但是当我尝试打开时 我的 Gradle
  • 发送 XMLHttpRequest 时缓存结果出现问题?

    我对 AJAX 和缓存的想法很陌生 On the AJAX 向服务器发送请求 http www w3schools com ajax ajax xmlhttprequest send asp来自 W3Schools 它说你应该添加 t Ma
  • 为什么不允许 movl 从内存到内存?

    我想知道集会中是否允许这样做 movl edx eax 我猜它会访问第一个操作数中的内存并放入 第二个操作数的内存 例如 a b 但我还没有看到任何处理此类问题的示例 所以我猜这是不允许的 另外 我被告知这是不允许的 leal esi ed
  • 什么是 Git 修剪?

    我不小心修剪了一些远程分支 我真的不知道这样做的后果是什么 我单击了 Git 扩展中的 修剪远程分支 按钮 认为它会删除远程分支 官方文档说 git prune 从对象数据库中删除所有无法访问的对象 我实在不明白这是什么意思 我猜这可能会删
  • 需要帮助使用 Perl 修复此正则表达式代码吗?

    我需要您的专业帮助来使用 perl 修复此正则表达式代码 我有这个数据文件 Data SCSI test A ccccccccccccccccc aaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbb Data SCSI t
  • 如何在 python 代码中利用 locals() ?

    我在阅读时偶然发现了以下警告像 Pythonista 一样编码 惯用的 Python http python net goodger projects pycon 2007 idiomatic handout html作者 大卫 古杰 文章
  • 如何使用 on_delete 属性在用户模型的外键字段中设置用户全名?

    我在 django 中有一个模型 它具有带有用户模型的外键 class News models Model user models ForeignKey AUTH USER MODEL on delete models SET messag
  • 内容和 div 之间的边距溢出滚动条

    我使用以下代码来保持菜单项固定 同时允许内容滚动 因为它似乎是所有浏览器中最稳定的方法 body overflow hidden div content height 100 overflow auto 我的问题很简单 但我似乎无法弄清楚
  • Mongodb聚合框架|对多个值进行分组?

    我想使用 mongoDB 的聚合框架来运行 SQL 中的内容 看起来有点像 SELECT SUM A B C from myTable GROUP BY B C 文档指出 您可以指定管道中文档中的单个字段 先前计算的值或由多个传入字段组成的
  • 在 Azure Web App 上打开其他端口

    我最近将 NET Web API 2 应用程序从 Azure 云服务迁移到 Azure Web 应用程序 但是 我们有一个遗留应用程序需要与端口 8080 和 444 上的 API 进行通信 有没有办法在网络应用程序上打开额外的端口 你不能
  • django 1.9 和注册/login.html

    我正在开发 django 1 9 项目 在 Django 1 7 7 中 登录功能可以正常工作 但现在我一直有 registration login html Template Does Not Exist 模板 login html lo
  • 将 OpenIdConnect 与 AzureFunctions 结合使用

    我使用 azure 函数来托管 React 应用程序的 API 但我也使用相同的 azure 函数来托管应用程序的 html js css 通过 Blob 存储上的静态文件的代理函数 我一直在使用 EasyAuth 为其提供身份验证 效果非
  • 从 javascript 数组中查找匹配的字符串

    我有一组字符串 我需要找到以某个键开头的所有字符串 例如 如果有一个数组 apple ape open soap 当使用键 ap 搜索时 我应该只得到 苹果 和 猿 而不是 肥皂 这是在 JavaScript 中 Use indexOf h
  • 从 GWT 调用 JQuery 函数

    我正在启动一个使用 GWT 的项目 设计团队使用 HTML 和 JQuery 制作了一个原型 我实际上正在使用 UIBinder 来 重建 UI 我的问题是应用程序有一个使用 JQuery 的下拉菜单 但它不起作用 到目前为止 我尝试的是在
  • std::map 可以在调用 const 函数期间重新平衡吗?

    我有一个const std map
  • 如何制作一款FPS游戏? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi