当前位置: 首页 > news >正文

【游戏引擎之路】登神长阶(九)——《3D游戏编程大师技巧》:我想成为游戏之神!

5月20日-6月4日:攻克2D物理引擎。
6月4日-6月13日:攻克《3D数学基础》。
6月13日-6月20日:攻克《3D图形教程》。
6月21日-6月22日:攻克《Raycasting游戏教程》。
6月23日-7月1日:攻克《Windows游戏编程大师技巧》。
7月2日-7月6日:攻克《雅达利2600汇编游戏开发》。
7月7日-7月11日:攻克《x86/x64汇编语言》。
7月11日-7月22日:学习《3D游戏编程大师技巧》(阶段性)。
7月14日-7月18日:学习《游戏引擎架构》(完成)。
7月23日-7月30日:攻克Python语言学习。
7月31日-8月5日:攻克《3D游戏编程大师技巧》。

下个目标《DirectX12 3D 游戏开发实战》。

(一)近况总结

从6月开始的时候,我当时不知道为什么,好像找到了人生的目标,所以动力非常足。从6月4号开始,到今天为止,我没有休息过一天。星期六,星期天都在工作。但是我终于被我的抑郁症反噬了。本来《3D游戏编程大师技巧》还有阴影一个小节我还没有实现。但是当我学习的时候,脑子里面一波一波地头痛,这是我的抑郁症和神经衰弱的并发症,只要一透支脑力,就会痛。

本来我打算到国庆之前都不休息的,来一个史诗级的远征。但是看来坚持不下去了。于是,这个里程碑到此结束,我的最长工作记录——2个月不休息。即便是没有抑郁症之前,我也没有2个月不休息过,只不过那时我只是不想做,而不是没能力做。

休息两天,再整装出发吧。

(二)《3D游戏编程大师技巧》学习总结

今天终于把《3D游戏编程大师技巧》全部攻略完成。最后一个实现的是透明材质,其实还有阴影部分没有实现。但是阴影部分因为都需要Alpha混合,而我的引擎加上了Alpha混合之后变得巨卡,我也不打算做下去了。反正这个软光栅的学习也是一个学习,并不是真正制作引擎。

我的下一个学习目标是《DirectX12 3D 游戏开发实战》,这是真正能够用于制作实用的引擎了。其实《3D游戏编程大师技巧》(还有他的姐妹篇《Windows游戏编程大师技巧》)被称为游戏编程四大坑书之首不是没有道理的。因为里面用到的技术不仅老旧,在现在看来也没什么价值。比如说8位模式,我的显示器已经没办法支持8位模式了。

但是,如果你知道自已想要什么,这本书仍然不失为一个经典。他坑的原因不仅是因为难,而且因为繁杂,其实这本书的前半,作者还坚持给每个渲染管线8位和16位的版本,到后面他自已可能都觉得麻烦了,只留下了16位版本。

我在学这本书之前还学了《3D图形教程》。这也是一个软件光栅化的教程。比这本书深入浅出得多。只不过内容并没有这本书里面的丰富。

但是这段旅程我相信是有价值的。

(三)游戏之神是什么?

在这本书里面,序言中提到了这样一个事情。在游戏行业中,有两种人,一种是擅长技术的,一种是擅长设计的。很多擅长技术的人,游戏感不一定很好,他们不会设计有意思的游戏。而“游戏感”强的人,也很少有人有强大的动手能力,能自已捣鼓出游戏。而《3D游戏编程大师技巧》的作者正好是这两者都非常强的人。

其实这在游戏行业里面,这并不是什么问题。因为游戏不是一件艺术品,他是一个工程,是需要很多人通力合作做出来的。就像是卡马克有他自已的搭档罗梅洛一样。

在我心中,卡马克是游戏行业中的唯一真神,不仅仅是因为他的能力,而且是因为他的理念,我的自由软件的理念受他的影响很大。我的《薪火引擎》自然也会开源的。

然而,即便是卡马克,他离真正的“游戏之神”也有一定的距离。因为他的技术力虽然非常强,但是对于游戏设计却并不痴迷。

“游戏之神”是什么?

但在我的心中,游戏之神一定是“制作游戏”“设计游戏”都非常强的人。如果说一个设计者自已都做不出来游戏,怎么能称为游戏之神呢?那只是伪神而已。

当然了,这仅仅是我自已的信念,不能用这个去评价别人,而且也没有事实上的操作价值。因为每个人专精于自已的领域,比如说设计游戏的专精于设计,制作游戏的专精于制作,然后两人合作,才是是正道。

可是,游戏之神是什么,这是人类向上帝的提问,没有人拥有权威,谁都可以定义自已心中的游戏之神。

我真的希望自已成为那个“真神”。当我有天用自已的引擎做出《三千神界》的时候,我就可以说我做到了这一点。

因为我相信,当有一天我能站在那个地方的时候,能够看到不一样的风景。

相关文章:

【游戏引擎之路】登神长阶(九)——《3D游戏编程大师技巧》:我想成为游戏之神!

5月20日-6月4日:攻克2D物理引擎。 6月4日-6月13日:攻克《3D数学基础》。 6月13日-6月20日:攻克《3D图形教程》。 6月21日-6月22日:攻克《Raycasting游戏教程》。 6月23日-7月1日:攻克《Windows游戏编程大师技巧》。 7月…...

Linux:线程同步之信号量

信号量 (1)What(什么是信号量) 提供一种计数器的方式控制对共享资源的访问;当计数器大于0时,请求资源成功并计数器-1;当计数器小于0时,线程阻塞,等待其它线程执行signal(V操作&…...

GPT-SoVITS-文本转语音(你的声音不再是唯一)

本文将要介绍GPT-SoVITS的安装和使用方法 首先感谢花儿不哭大佬带来的RVC声音克隆 花儿不哭: 花儿不哭的个人空间-花儿不哭个人主页-哔哩哔哩视频 (bilibili.com) GPT-SoVITS下载地址 GitHub - RVC-Boss/GPT-SoVITS: 1 min voice data can also be used to train a …...

C语言深度剖析(部分)--剩下随缘更新

C语言深度剖析 关键字auto-最宽容大度的关键字 变量的分类 代码块:用{ }括起来的区域 局部变量:包含在代码块中的变量,局部变量具有临时性,进入代码块,自动形成局部变量,退出代码块自动释放。 全局变量…...

计算机毕业设计选题推荐-电缆行业生产管理系统-Java/Python项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…...

Linux 下查看 CPU 使用率

目录 一、什么是 CPU 使用率二、查看 CPU 利用率1、使用 top 查看2、用 pidstat 查看3、用 ps 查看4、用 htop 查看5、用 nmon 查看6、用 atop 查看7、用 glances 查看8、用 vmstat 查看9、用 sar 查看10、dstat11、iostat 三、总结 CPU 使用率是最直观和最常用的系统性能指标&…...

数理基础知识

数理基础 大数定律期望方差常见分布伯努利分布泊松分布高斯分布服从一维高斯分布的随机变量KL散度服从多元高斯分布的随机变量KL散度 Gibbs不等式凸函数Jensen不等式 似然函数泰勒近似信息论信息量信息熵KL散度JS散度交叉熵 Wiener ProcessSDE 大数定律 期望方差 x为连续随机…...

Java解决lombok和mapstruct编译模块的问题

pom.xml <dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><!-- 1.18.16版本 --><version>${lombok.version}</version><scope>provided</scope><!-- 防…...

大模型场景应用全集:持续更新中

一、应用场景 1.办公场景 智能办公&#xff1a;文案生成&#xff08;协助构建大纲优化表达内容生成&#xff09;、PPT美化&#xff08;自动排版演讲备注生成PPT&#xff09;、数据分析&#xff08;生成公式数据处理表格生成&#xff09;。 智能会议&#xff1a;会议策划&…...

理解RabbitMQ中的消息存储机制:非持久化、持久化与惰性队列(Lazy Queue)

文章目录 1. 非持久化消息&#xff08;Transient Messages&#xff09;内存压力处理 2. 持久化消息&#xff08;Persistent Messages&#xff09;3. 惰性队列&#xff08;Lazy Queue&#xff09;官方推荐 总结 在RabbitMQ中&#xff0c;消息的存储和处理方式可以根据不同的需求…...

【机器学习】BP神经网络正向计算

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 BP神经网络正向计算1. 引言2. BP神经网络结构回顾3. 正向计算的基本原理4. 数学…...

谷粒商城实战笔记-108~109-elasticsearch删除与批量导入

一&#xff0c;108-全文检索-ElasticSearch-入门-put&post修改数据 第一种更新方式&#xff1a; POST customer/external/1/_update {"doc":{"name": "John Doew"} }第二种更新方式&#xff1a; POST customer/external/1 { "name&q…...

RabbitMQ:发送者的可靠性之使用消息确认回调

文章目录 配置RabbitMQ的ConfirmCallback使用ConfirmCallback发送消息实际使用中的注意事项总结 在开发消息驱动的系统时&#xff0c;消息的可靠传递至关重要。而RabbitMQ作为一个广泛使用的消息队列中间件&#xff0c;提供了多种消息确认机制&#xff0c;确保消息从生产者到交…...

HCIP学习 | OSPF---LSA限制、不规则区域、附录E、选路

目录 Days06&#xff08;24.8.8&#xff09;OSPF---LSA限制、不规则区域、附录E、选路 特殊区域 stub 区域&#xff0c; 末节区域 Totally stub &#xff1a;完全的末节区域 NSSA区域&#xff1a;(not so stub area) 非完全末节区域 完全的非完全的末节区域&#xff1a; …...

CVE-2017-15715~Apache解析漏洞【春秋云境靶场渗透】

Apache解析漏洞 漏洞原理 # Apache HTTPD 支持一个文件拥有多个后缀&#xff0c;并为不同后缀执行不同的指令。比如如下配置文件&#xff1a; AddType text/html .html AddLanguage zh-CN .cn# 其给 .html 后缀增加了 media-type &#xff0c;值为 text/html &#xff1b;给 …...

thinkphp 5.0.24生成模块

访问的形式生成模块&#xff1a; 1、需要在入口文件Public/index.php中加入以下代码&#xff1a; //生成Home模块&#xff0c;添加以下这句后&#xff0c;打开浏览器执行&#xff1a;http://www3.phptp5.com/public/index.php自动生成Home模块 \think\Build::module(Home); …...

值得注意!家里有带毛发动物就有浮毛?宠物空气净化器一键净化

上次跟朋友逛完街去她家&#xff0c;她家热情的哈基米开门就一个猛冲&#xff0c;我朋友接住就是一顿猛亲&#xff0c;亲猫一时爽&#xff0c;汗液粘着猫毛&#xff0c;粘得满手臂、满脸都是&#xff0c;看得鼻炎星人头皮发麻...好多养宠物的都说&#xff0c;梳毛根本不管用&am…...

Linux 代理(proxy)设置

有关网络代理的环境变量 环境变量说明可选的取值http_proxyhttp协议的网络连接使用该代理。ip:porthttp://ip:portsocks://ip:portsocks4://ip:portsocks5://ip:porthttps_proxyhttps协议的网络连接使用该代理。ftp_proxyftp协议使用该代理。all_proxy所有网络协议的网络连接都…...

操作系统真相还原:获取文件属性

14.15 获得文件属性 14.15.1 ls命令的幕后功臣 ls 命令中调用了大量的系统调用 stat64 和write &#xff0c;其中stat64 用于获得文件的属性信息&#xff0c; write 用于把信息输出到屏幕&#xff0c;即标准输出。这里的 stat64 表示 64 位版本的 stat。 其函数原型是int sta…...

聚鼎装饰画:投资一家装饰画店铺要花费多少钱

在艺术的殿堂里&#xff0c;每一幅装饰画都是静默的诗篇&#xff0c;而开设一家装饰画店铺&#xff0c;便是将这份静谧与美好呈现给世界的开始。然而&#xff0c;背后的投资成本&#xff0c;却是一笔需要精打细算的账。 店铺的选址&#xff0c;犹如画家挑选画布&#xff0c;至关…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

python/java环境配置

环境变量放一起 python&#xff1a; 1.首先下载Python Python下载地址&#xff1a;Download Python | Python.org downloads ---windows -- 64 2.安装Python 下面两个&#xff0c;然后自定义&#xff0c;全选 可以把前4个选上 3.环境配置 1&#xff09;搜高级系统设置 2…...

解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八

现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet&#xff0c;点击确认后如下提示 最终上报fail 解决方法 内核升级导致&#xff0c;需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3

一&#xff0c;概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本&#xff1a;2014.07&#xff1b; Kernel版本&#xff1a;Linux-3.10&#xff1b; 二&#xff0c;Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01)&#xff0c;并让boo…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

佰力博科技与您探讨热释电测量的几种方法

热释电的测量主要涉及热释电系数的测定&#xff0c;这是表征热释电材料性能的重要参数。热释电系数的测量方法主要包括静态法、动态法和积分电荷法。其中&#xff0c;积分电荷法最为常用&#xff0c;其原理是通过测量在电容器上积累的热释电电荷&#xff0c;从而确定热释电系数…...