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

【游戏引擎之路】登神长阶(五)

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

下个目标:汇编语言学习。

今天收工,这周完成了80小时的净工作时间,没有一点的水份。

去年过年之后,我开始了骑行,那时候我只是骑了十公里就非常疲惫,而现在的我骑个60公里也没有任何压力。当时我爬上一座小的山坡的半山腰,然后内心绝望与希望交织。

我绝望的是我当时感觉自已的抑郁症是好不了了。我从2017年抑郁症正式爆发之后,一直想着恢复,我年年都觉得“今年能够恢复”了。可是一年一年地过去,自已的状况也没什么根本的改变。当然,好是一点点在好起来,不然去年也不会有动力骑行了。

我当时觉得,抑郁症就这样伴随我一生吧。我也不挣扎了。我向众神祈祷,我不求别的东西,只要我每天能够坚持工作8小时,我就满足了,我就能实现自已的愿望。

诸神回应了我。

自从骑行之后,我的身体状态是越来越好了。到了今年的六月,我感觉自已又恢复到了一个新的高度,我从2号开始,到现在已经没有一天休息了。这一周更是打破了自已的记录,工作了80小时。不过这样的“拼命”只能用在破记录这一次。我年轻的时候,这样的工作状态一点不是问题。但现在不行了。为了破记录,昨天晚上工作到9点多(我是5点起床的),然后今天早上就开始偏头痛了,真的是不能透支一点。

我现在晚上根本不敢玩游戏,短视频也戒了。戒短视频可能是我养成的最好的习惯。为什么不敢玩游戏,因为游戏太消耗精神了,我如果晚上不养好精神,用最低能耗的状态休息,身体就一定会崩溃。所以我晚上只能听听书,做那种干一会就想睡觉的事情。现在这些日子,我根本上都在9点到10点钟就睡觉了。没有超过10点的。这种作息简直想都不敢想。我年轻的时候经常晚上1-2点睡觉,然后早上9点起。

之所以能够有这么大的动作,除了自已把自已的身体调理好之外,还在于我找到了人生的方向。我终于完成了自已的“龙场悟道”。孔子说“四十不惑”,我现在终于明白那个“不惑”是什么意思了。

我几年前刚刚接触Unity的时候,那时候是我人生的一个重大转型。我之前是搞页游手游的,也赚了一些钱。但是,我总觉得这些游戏并不是“真正的游戏”。不是我想做的。所以当时自已的身体崩溃之后,我在那样的环境中,有一种“非宁静无以致远”的态度,然后做出我的人生中的一个重大决定,我决定不再搞自已的手游,而是追逐自已的梦想,开发独立游戏。

当时我开始学Unity,之后的几年里面,也一直在捣鼓Unity。每日也有进步。但是,我当时有那么一种心态,觉得这个时代就是可以“速成”的时代。不止我在内,这个时代的所有人都这么想,就包括Unity的设计思路,虚幻引擎的设计思路,就是可以让你“速成”。而这个时代也有无数这样的成功者。

用虚幻引擎做做FPS,不需要有多大的技术力,也能够获得成功。也有题材选得好的人,做做视觉小说类的游戏也能成功。这样的事情在游戏界很多很多,以至于大家开发游戏的思路都是那种“我要寻找到一种成功的方程,我找到这个密码,我就能成功”。

大家更加痴迷于题材,创意,把这些东西拔高到很高的地步。也美化了追求这些的游戏开发者。我其实并不怪这些人,因为我自已也是这么想的。我也想利用我的编程经验,快速上手Unity,然后快速地出作品。我脑子里面有很多好的想法,那种“我觉得这一定受欢迎”的点子有就箩筐。

然而,在开发的过程中,我却渐渐地感觉到了不对劲。我不知道怎么样形容这种感觉,就好像修仙小说里面,大家都很痴迷于学得更好的技能,什么天地玄黄,得到一个天阶技能,就能打遍天下。这种所谓“天阶”“地阶”,就是游戏的灵感,题材。

除了功法技能之外,大家也追求速成的道路。比如Unity里面,很多很多插件。能够让你“速成”,不需要你去开发。你想要物理材质,有Magical Cloth,你要攀爬系统,动作系统,骑乘系统,都有。我最初也是觉得我能够好好地利用这些插件快速地让自已的作品成型。

这些东西,就像是修仙小说里面那奇怪的能够快速提升实力的东西。然而,这些东西都有巨大的负作用,你每次使用这些东西提升自已,最终就会让你背负一样负担。最终你的系统会不堪重负。

我看到中国的独立游戏界,真的就像是看到修仙小说里面那些人在不择手段向上爬一样,每个人都想追求到什么功法,什么天材地宝,让自已一步登天。而事实上,每年也都有爆款,每年也都有成功者,这让这些人更加的狂热。

而时间一晃,如果从我开始学Unity的2020年,到现在已经4年了。这4年,诞生了很多成功的作品,可是,放眼中国独立游戏圈,这个圈子真的成长了吗?又诞生过多少大神呢?又有多少人从心底里面觉得,如果“照个这趋势发展下去,我们中国独立游戏界也能拿TGA”。

在我看来,中国独立游戏圈这些年,它的实力没有多少成长。

很多人会怪这是市场的趋势,那只是一部分原因。收益的成长不代表实力的成长,真正的成长是实力的成长。就像那些主角从来不会去服用那些追求短期利益而损失未来的丹药一样,我也不想成为那样的人,我想成为主角一样的人,我认为,这个世界是有“道”的。

所以当我一年前我骑上山坡的时候,我做了一个决定,一个我自已以前从来不敢想的决定,我决定,我要去攀登那座我之前只能仰望,而不能去攀登的山峰,我想要了解3D游戏制作的一切。

所有的武侠小说也好,修仙小说也好,都会告诉你,“基础”最重要。这些小说中的“道”,并不是虚假的,他是真实的“道”的印射,至少,我相信如此。想要做出最好的游戏,基础太重要了。

包括我的一些游戏制作的朋友,我在和他们聊这些的时候,都没有什么共同语言,而这些人,其实放在圈子里面,都属于相当有技术的人了。他们觉得他们手里面的技术够了,觉得做游戏最缺少的只是资源,又或者说,想游戏爆火,缺少的只是一个“点子”。

但我觉得,真正能够让游戏上一个台阶的,是真正的技术,不是那种能够运用引擎做出东西的技术,而是真正能够理解一切,才能够做出来最好的东西。我在自已做动作游戏的过程中,对这个就深有体会。我渐渐地知道了为什么国产的动作游戏和其它国外的游戏相比,总是差那么点意思,总是被人说打击感不行。这些东西你要做好,要用到3D知识里面最底层的东西。Unity的碰撞检查,连判定有时候都判定不准,我当时自已去找了一本3D数学的知识,然后自已写了一段我的物理引擎,给游戏附加了一套判定机制,这样才让自已满意。

而这,只是其中一样东西而已。游戏是靠无数这样的东西来组成的。

我不知道怎么说,因为有时候这个话题我自已都不清楚。如果你找一个人来和我辩论游戏怎么样才能成功,我也许也不能辩论过他。

可是,随着我自已做游戏,我越来越相信这一点,我越来越相信基础的重要。

于是一年前,我下定决心,从头开始。

直到现在,我仍然觉得这是一个需要勇气的决定。要知道,我已经很多年没有收入了。我现在就靠着自已仅剩的那点积蓄,苟活于世。我现在每个月的开销就是500。照这个开销,我想坚持多久就坚持多久。古时有人,一箪食一瓢饮,人在陋巷,不改其乐,我小时候学到这个的时候,我觉得这样的人真的好了不起,真的做不到。不过,我没想到自已有一天我也能做到了。哈哈。

从去年开始,我开始学习建模。在所有的知识之中,这是最难的一个。因为我是业余的。如果说到编程相关,我有十多年的经验。而建模,我完全一窍不通。

我开始学习Blender,然后其它所有的软件,什么Zbursh,Substance Painter,DAZ,能用的都用了。到了现在我已经能够做出《原神》那样的角色。我是真的没有想到,我居然还蛮适用干这个的。

学习了建模之后,我就再开始学习Shader。把技术美术的这一个关卡攻略下来。能够自已写Shader。我在这个过程中,真的是越来越感觉要做3D,有关3D知识,3D数学的基础实在太重要了。

到了今年。我把我的建模第一系角色做得差不多了之后,开始学习引擎部分。

我是卡马克的粉丝,在游戏行业,卡马克是我认可的唯一的真神。当时看《DOOM》启示录的时候,我就希望,要是自已有天也能像他那样就好了。我说的“像他那样”,不是指他的成就,而是指他的能力。我当时看到《DOOM启示录》里面说他“两个星期就能手搓引擎”的时候,我真的是惊为天人。

现在,我终于可以沿着神走过的路,去攀登这个登神长阶了。

我以前在B站,说自已要做能够上TGA的游戏。我真的是这样想的。我知道自已需要什么,就好像人这一生来到这个世界上,他是有自已的使命的,而我感觉自已就像找到了它一样。

最近这一个多月学的东西,我感觉比自已半年学的东西还多。我以前觉得那些学霸学东西好快啊,后来我才明白,学东西就是滚雪球,很多人以为别人学东西快,那是别人有天赋,其实不然,有人学得快,是因为他之前掌握的有东西,他所有的东西,都不是“全新”的,而只是“半新”的。所以他才学得快。

就比如说,我学这些东西,需要两个语言,C和c++。这两种语言我都十多年没用过了。以前我做页游,手游,用的是Java,我用了差不多十年。然后学Unity,我用的是C#。可是,我虽然已经不用C/C++十多年了。可是,当初我学编程的时候,我就是学C/C++起手的啊!这东西就像自已的母语一样,不可能忘记的。

C是这个世界上最优雅的语言,没有之一。即便我这些年用了无数其它的语言,我还是觉得这样。

3D数学这东西是看得头大。可是,当自已的知识一点一点积累起来之后,渐渐地也变得没那么可怕了。

我以前做动作游戏时,那些想做又做不出来的东西,随着自已的基础知识的增加,一点一点地变得清楚起来。

我希望自已的路没有走错。

这次《Windows编程大师技巧》,其实我毕业之后也买了这么一本。他后面还有《3D游戏编程大师技巧》,我以前也有,还用这个做了一个小小的3D战棋DEMO,当然,根本玩不了,可是,毕竟能够控制一个机器人在棋盘上走。可是那之后我就去做页游,这一晃就是十多年过去了。

这本书其实学完只学到了怎么用DirectX,几乎没有3D的内容。我学完之后做了一个《光明战神》的射击游戏。其实如果用Unity,最简单的初学者也可以做出这样的游戏,不过,对于我来说却是意义非凡,因为这就是我自已手搓的第一个引擎。这是真正的引擎。我在里面有很多引擎方面的构架,比如说,我就做了一个SpritePack,能够用XML定制Sprite的合集,这是以前我用COCOS或者Unity,要用附加工具才能做的,但是,我用一种非常灵活的方式做出来。这就是引擎的思路。

我觉得自已能够做的事情真的太多了。

而且有时候深入了底层,真的能够看到很多不一样的风景。比如说,上面显示的FPS是4000多,这不是BUG,是真的有4000帧率。就算我再渲染更多的东西,帧率还能这么高。

这就是底层的力量。因为我是用最底层的东西在加速,他的性能真就能这么变态。我的机器可是1080TI的老机器了,以前有钱的时候买的,随我征战多年,现在经济条件不好,所以也没得换了。

这次学完了这本,本来应该继续学《3D游戏编程大师技巧》的,可是我的书居然因为一些意外情况到不了,只好再重新买一次。所以我把之后应该学的汇编提上日程。学汇编,我想到这个事情,我自已都觉得有点好笑。我是这辈子真没想到自已会学汇编。因为汇编实际上对现在代的编程影响并不大了。

不过,我现在有点像《阿甘正传》里面的主角,觉得自已反正已经跑了这么远。那再跑远点又有什么呢?

我真的想看看,我自已一个人能够走多远。

我真的想看看,那不一样的风景。

我的《光明战神》,一个小小的成果:

虽然说Unity随便也能做出这种东西,但它已经拥有了一个引擎应该有的东西。至少,你不用因为下载量而付费了吧。哈哈。

相关文章:

【游戏引擎之路】登神长阶(五)

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

FireAct:使用智能体(agent)微调大语言模型

1.概述 近年来,针对语言模型(LMs)的研究致力于探索其与外部工具或环境互动的能力,以推进新型语言代理的发展。此类代理具备从环境反馈中汲取新知识、通过语言推理进行连续决策,以及借助自我反思提升任务解决能力的能力。工业界的进展,如ChatGPT插件,凸显了语言代理在实际…...

20240626让飞凌的OK3588-C开发板在相机使用1080p60分辨率下预览

20240626让飞凌的OK3588-C开发板在相机使用1080p60分辨率下预览 2024/6/26 15:15 4.2.1 全编译测试 在源码路径内,提供了编译脚本 build.sh,运行该脚本对整个源码进行编译,需要在终端切换到解压 出来的源码路径,找到 build.sh 文件…...

python数据分析——数据分类汇总与统计

数据分类汇总与统计 前言一、Groupby分类统计语法按列分组示例一示例二示例三 遍历各分组示例 使用字典和Series分组示例 使用函数分组示例 二、数据聚合groupby的聚合函数示例一示例二 逐列及多函数应用示例一示例二 返回不含行索引的聚合数据示例 三、一般性的“拆分-应用-合…...

iOS17系统适配

iOS17 新功能 文章目录 iOS17 新功能iOS17支持哪几款机型Xcode15新特性iOS17-开发适配指南 横屏待机 在iOS 17中,还带来了横屏待机功能,苹果将这个新功能命名为“Standby”模式,为 iPhone 带来了全新的玩法。iPhone启用之后,默认情…...

树洞陪聊陪玩交友程序系统源码,解锁交友新体验

在繁忙的都市生活中,你是否渴望找到一片属于自己的秘密花园,倾诉心声、分享快乐?今天,就让我带你走进这片名为“树洞”的神秘之地,感受陪聊陪玩交友的全新魅力! 🌳树洞陪聊陪玩交友程序系统 你…...

区间动态规划——最长回文子序列长度(C++)

把夜熬成粥,然后喝了它。 ——2024年7月1日 书接上回:区间动态规划——最长回文子串(C)-CSDN博客,大家有想到解决办法吗? 题目描述 给定一个字符串s(s仅由数字和英文大小写字母组成&#xff0…...

无人机远程控制:北斗短报文技术详解

无人机(UAV)技术的快速发展和应用,使得远程控制成为了一项关键技术。无人机远程控制涉及无线通信、数据处理等多个方面,其中北斗短报文技术以其独特的优势,在无人机远程控制领域发挥着重要作用。本文将详细解析无人机远…...

240627_关于CNN中图像维度变化问题

240627_关于CNN中图像维度变化问题 在学习一些经典模型时,其中得维度变化关系总搞不太明白,集中学习了以下,在此作以梳理总结: 一般来说涉及到的维度变换都是四个维度,当batch size4,图像尺寸为640*640&a…...

食品行业怎么用JSON群发短信

食品作为日常生活不可缺少的元素,市场需求是很稳定的,但是份额就那么多,商家都要来抢占的话,就需要运营推广各凭本事,市场运营中选择合适的推广方式,可以增加店铺销售额,很多实体店或商城都会建…...

MySQL高级-MVCC-隐藏字段

文章目录 1、介绍2、测试2.1、进入服务器中的 /var/lib/mysql/atguigu/2.2、查看有主键的表 stu2.3、查看没有主键的表 employee2.3.1、创建表 employee2.3.2、查看表结构及其其中的字段信息 1、介绍 ---------------- | id | age | name | ---------------- | 1 | 1 | Js…...

探索PcapPlusPlus开源库:网络数据包处理与性能优化

文章目录 0. 本文概要1. PcapPlusPlus介绍1.1 概述1.2主要特性和功能1.3 PcapPlusPlus 主要模块关系和依赖1.4 网络协议层处理过程 2. 实例2.1 基于 PcapPlusPlus 的应用程序设计和封装流程:2.2 多线程示例代码2.3 代码说明: 3. 程序性能进一步优化3.1 避…...

深入理解SSH:网络安全的守护者

在当今数字化时代,网络安全已成为全球关注的焦点。随着网络攻击手段的不断升级,保护数据传输的安全性变得尤为重要。SSH(Secure Shell)作为一种安全的网络协议,为远程登录和网络服务提供了强大的安全保障,成…...

DDD学习笔记四

领域模型的构建 基础领域模型的基本组成有名称、属性、关联、职责、事件和异常 发掘领域概念3种策略: 1)学习已有系统,重用已有模型 2)使用分类标签。分类标签来源于领域,需要我们研究一些资料并做一些提炼。从采用5W…...

Head First设计模式中的典型设计模式解析与案例分析

Head First设计模式中的典型设计模式解析与案例分析 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿! 《Head First设计模式》是一本广受欢迎的书籍&#xff0c…...

iptables 防火墙(一)

iptables 防火墙(一) 一、Linux 防火墙基础防火墙分类 二、iptables 的表、链结构规则表规则链数据包过滤的匹配流程 三、编写防火墙规则iptables 的安装iptables的基本语法规则的匹配条件通用匹配隐含匹配显式匹配 四、总结 在网络安全的世界里&#xf…...

数据库物理结构设计-定义数据库模式结构(概念模式、用户外模式、内模式)、定义数据库、物理结构设计策略

一、引言 如何基于具体的DBMS产品,为数据库逻辑结构设计的结果,即关系数据库模式,制定适合应用要求的物理结构 1、在设计数据库物理结构前,数据库设计人员首先 要充分了解所用的DBMS产品的功能、性能和特点,包括提供…...

QT加载安装外围依赖库的翻译文件后翻译失败的现象分析:依赖库以饿汉式的形式暴露单例接口导致该现象的产生

1、前提说明 VS2019 QtClassLibaryDll是动态库,QtWidgetsApplication4是应用程序。 首先明确:动态库以饿汉式的形式进行单例接口暴露; 然后,应用程序加载动态库的翻译文件并进行全局安装; // ...QTranslator* trans = new QTranslator();//qDebug() << trans->…...

13_旷视轻量化网络--ShuffleNet V2

回顾一下ShuffleNetV1:08_旷视轻量化网络--ShuffleNet V1-CSDN博客 1.1 简介 ShuffleNet V2是在2018年由旷视科技的研究团队提出的一种深度学习模型&#xff0c;主要用于图像分类和目标检测等计算机视觉任务。它是ShuffleNet V1的后续版本&#xff0c;重点在于提供更高效的模…...

Linux系统编程--进程间通信

目录 1. 介绍 1.1 进程间通信的目的 1.2 进程间通信的分类 2. 管道 2.1 什么是管道 2.2 匿名管道 2.2.1 接口 2.2.2 步骤--以父子进程通信为例 2.2.3 站在文件描述符角度-深度理解 2.2.4 管道代码 2.2.5 读写特征 2.2.6 管道特征 2.3 命名管道 2.3.1 接口 2.3.2…...

stm32G473的flash模式是单bank还是双bank?

今天突然有人stm32G473的flash模式是单bank还是双bank&#xff1f;由于时间太久&#xff0c;我真忘记了。搜搜发现&#xff0c;还真有人和我一样。见下面的链接&#xff1a;https://shequ.stmicroelectronics.cn/forum.php?modviewthread&tid644563 根据STM32G4系列参考手…...

高等数学(下)题型笔记(八)空间解析几何与向量代数

目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Psychopy音频的使用

Psychopy音频的使用 本文主要解决以下问题&#xff1a; 指定音频引擎与设备&#xff1b;播放音频文件 本文所使用的环境&#xff1a; Python3.10 numpy2.2.6 psychopy2025.1.1 psychtoolbox3.0.19.14 一、音频配置 Psychopy文档链接为Sound - for audio playback — Psy…...

Rust 异步编程

Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

【Linux】Linux 系统默认的目录及作用说明

博主介绍&#xff1a;✌全网粉丝23W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

并发编程 - go版

1.并发编程基础概念 进程和线程 A. 进程是程序在操作系统中的一次执行过程&#xff0c;系统进行资源分配和调度的一个独立单位。B. 线程是进程的一个执行实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。C.一个进程可以创建和撤销多个线程;同一个进程中…...