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

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随便也能做出这种东西,但它已经拥有了一个引擎应该有的东西。至少,你不用因为下载量而付费了吧。哈哈。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/759442.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

厦门新能安科技Ampace校招实习待遇及Verify测评SHL演绎数字推理历年真题题库

一、厦门新能安科技公司介绍 厦门新能安科技有限公司主要业务包括电池制造和销售,电容器及其配套设备制造与销售,电池零配件生产与销售。此外,公司还提供包括技术服务、技术开发、技术咨询、技术交流、技术转让和技术推广在内的全方位服务。公…

安卓开发app-基础的java项目构建补充知识

安卓开发app-基础的java项目构建补充知识!上一次分享了基础的项目构建,但是还遗漏了一些基础的内容。今天补充完整。 首先,是关于项目的一些配置文件的信息。 第一个配置文件:{setting.gradle} 国内阿里云仓库地址信息&#xff1…

深度学习基准模型Mamba

深度学习基准模型Mamba Mamba(英文直译:眼镜蛇)具有选择性状态空间的线性时间序列建模,是一种先进的状态空间模型 (SSM),专为高效处理复杂的数据密集型序列而设计。 Mamba是一种深度学习基准模型,专为处理长序列数据而设计&…

WAIC2024 | 华院计算邀您共赴2024年世界人工智能大会,见证未来科技革新

在智能时代的浪潮汹涌澎湃之际,算法已成为推动社会进步的核心力量。作为中国认知智能技术的领军企业,华院计算在人工智能的广阔天地中,不断探索、创新,致力于将算法的潜力发挥到极致。在过去的时日里,华院计算不断探索…

界面控件Telerik UI for Winforms 2024 Q2新版亮点 - 发布全新的AI相关组件

Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件,所有的UI for WinForms控件都具有完整的主题支持,可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。 本文将介绍界面组件Telerik UI for Winform…

4个文章生成器免费版分享,让文章创作更轻松便捷

在当今这个信息飞速传播的时代,文章创作的重要性愈发凸显。无论是从事内容创作的专业人士,还是偶尔需要撰写文章的普通大众,都希望能更高效地完成文章创作任务。而在实际操作中,我们常常会遇到思路卡顿、没有创作灵感的问题。今天…

AWT的菜单组件

AWT的菜单组件 前言一、菜单组件的介绍常见的菜单相关组件常见菜单相关组件集成体系图菜单相关组件使用小要点 二、AWT菜单组件的代码示例示例一示例二实现思路 前言 推荐一个网站给想要了解或者学习人工智能知识的读者,这个网站里内容讲解通俗易懂且风趣幽默&…

pyqt 文件浏览列表视图和图标视图

pyqt 文件浏览列表视图和图标视图 目的效果代码 目的 使用pyqt实现文件浏览列表视图和图标视图,像电脑文件浏览一样。如下图所示。 效果 代码 import sys from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QToolBar, QAction, Q…

同元软控受邀出席2024年工业软件与新质生产力创新发展论坛

近日,由广东省工业软件学会主办的“2024年工业软件与新质生产力创新发展论坛”在广州成功举办。同元软控深圳子公司副总经理周胜受邀出席,并作《数智驱动创新,科学计算与系统建模仿真加速新质生产力进化》主题演讲。 本次论坛集结工业软件界…

用pycharm进行python爬虫的步骤

使用 pycharm 进行 python 爬虫的步骤:下载并安装 pycharm。创建一个新项目。安装 requests 和 beautifulsoup 库。编写爬虫脚本,包括获取页面内容、解析 html 和提取数据的代码。运行爬虫脚本。保存和处理提取到的数据。 用 PyCharm 进行 Python 爬虫的…

【日常记录】【JS】SSE 流式传输 ChatGPT 的网络传输模式

文章目录 1、SSE 流式传输2、后端代码3、前端代码5、SSE和WS 对比6、chatgpt SSE的服务端返回的数据参考链接 单工通信是一种单向的通信方式,其中信息只能从发送端传输到接收端,而接收端不能向发送端发送任何信息。在Web开发中,Server-Sent E…

【UML用户指南】-24-对高级行为建模-进程和线程

目录 1、概念 2、主动类 3、通信 4、同步 5、常用建模技术 5.1、对多控制流建模 5.2、对进程间通信建模 在UML中,可以将每一个独立的控制流建模为一个主动对象,它代表一个能够启动控制活动的进程或线程。 进程是一个能与其他进程并发执行的重量级…

chrome.storage.local.set 未生效

之前chrome.storage.local.set 和 get 一直不起作用 使用以下代码运行成功。 chrome.storage.local.set({ pageState: "main" }).then(() > {console.log("Value is set");});chrome.storage.local.get(["pageState"]).then((result) > …

JAVA学习笔记-JAVA基础语法-DAY19-File类、递归

第一章 File类 1.1 概述 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作。 1.2 构造方法 public File(String pathname) :通过将给定的路径名字符串转换为抽象路径名来创建新的 File实例。public File(St…

〔002〕虚幻 UE5 发送 get、post 请求、读取 json 文件

✨ 目录 ▷ 安装 varest 扩展▷ 开启 varest 扩展▷ 发送 get 请求▷ 发送 post 请求▷ 读取 json 文件 ▷ 安装 varest 扩展 打开 虚幻商城,搜索 varest 关键字进行检索, varest 是一个 api 调用插件,支持 http/https 请求,也支…

【成都活动邀请函】7月6 | PowerData 数字经济-“成都“开源行!

【成都活动邀请函】7月6 | PowerData 数字经济-"成都"开源行! 活动介绍活动信息线上直播扫码报名往期活动回顾专注数据开源,推动大数据发展 活动介绍 九天开出一成都,万户千门入画图。 自古以来,成都便是国家发展的重要…

Linux 安装、配置Tomcat 的HTTPS

Linux 安装 、配置Tomcat的HTTPS 安装Tomcat 这里选择的是 tomcat 10.X ,需要Java 11及更高版本 下载页 ->Binary Distributions ->Core->选择 tar.gz包 下载、上传到内网服务器 /opt 目录tar -xzf 解压将解压的根目录改名为 tomat-10 并移动到 /opt 下, 形成个人…

爬坑之 [‘NODE_ENV‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。]

在package.json中配置如下: 执行npm run dev启动 报错: 实际上, NODE_ENVdevelopment webpack-dev-server 这条脚本会合并为两条命令执行, 分别为: NODE_EVNdevelopment webpack-dev-server 这种写法在cmd中是不被支持的 解决…

==和equals的区别(面试题)

和equals有什么区别 对于基本数据类型,比较的是值是否相等,对于引用类型则是比较的地址是否相等;对于equals来说,基本数据类型没有equals方法,对于引用类型equals比较的是引用对象是否相同 那针对以上结论&#xff0c…