![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
游戏开发
文章平均质量分 91
游戏开发
_Rye_
左手代码右手诗
一行代码一行诗
展开
-
复习课 | 梳理客户端开发的三个重点
(如果不放在脚本语言里,就直接写在硬代码里面。)我们在使用引擎和原生语言开发游戏的时候,只保持核心内容,其他游戏逻辑、游戏配置,特别是在游戏中可活动、可配置、可调节的部分,都提取出来,放到脚本语言里去编写。所谓的主程序,在 Windows 下就是 EXE 文件,一般情况下,更新 EXE 执行文件会导致一系列的更新,比如 DLL 动态链接库或者某些资源也会更新,所以更新资源包会变得很大。如果纯粹更新脚本文件,那就是几个脚本程序而已。原创 2023-11-04 19:49:08 · 89 阅读 · 0 评论 -
第36讲 | 热点剖析(九):谈谈独立开发者的未来发展
我曾经看过这么一句话,。作为个人独立开发者,一个人常常需要包揽所有职责,策划、美工、原画,甚至推广。说到推广,不得不提的就是发布平台。比如,我第一时间想到的就是 Steam,这个由专门开发电子游戏的美国 Valve 公司开发的 PC 游戏界最大的发行平台。对于 Steam,我想你应该非常熟悉了,这里就不多介绍了。但是,现在 Steam 的日子也并“不好过”,更别说独立开发者本身了。以前,一个人在 DOS 下就可以编写出一款小游戏,一支三五人的小团队就可以做出一款游戏,现在来说几乎是不可能的。原创 2023-11-04 19:47:45 · 66 阅读 · 0 评论 -
第35讲 | 热点剖析(八):谈谈移动游戏的未来发展
要思考移动端游戏的发展,不得不提硬件的发展。没有硬件的发展,移动游戏始终是这样几种形式。而在硬件问题还不能解决的情况下,移动游戏有哪些路可以走呢?首先,往更大型的方向发展,逐步取代电脑上一些中等、小型的游戏。手游的硬件发展带动质量的发展,变得更像电脑上的游戏,3D、2D 的精美的游戏将更多出现在市场上。而重度游戏的发展,将会有迎合重度硬核玩家的游戏加入,包括周边设备的联动推出,比如手柄、键盘等等。原创 2023-11-04 18:54:23 · 50 阅读 · 0 评论 -
第34讲 | 热点剖析(七):谈谈微信小游戏的成功点
为什么要自定义 Web 标准呢?我们从结果来看,自然是为了提升用户体验。而从技术层面讲,这和 Web 兼容性有关。Web 标准本身是个庞大的体系。所以如果既要全部兼容 Web 体系又要按照自己的意愿去实现功能,这是很难做到的事情。比如,如果微信本身的小程序浏览器会重塑一套渲染规则,比如播放视频的时候自动屏蔽广告、按钮默认变成椭圆形等等,因此,自定义 Web 标准,可以去做更多的事情。原创 2023-11-04 18:02:04 · 66 阅读 · 0 评论 -
第33讲 | 热点剖析(六):AR和人工智能在游戏领域有哪些应用?
在 2014 年左右,VR、AR、人工智能开始逐渐火热起来,我也曾在它最火的时候深入接触过这几项技术。如果你不是在这个领域从业的话,除了 VR 之外,有很多名词你可能都没有听说过,那我们就先来看一下这些名词是什么意思。通过这几个名词,我们来看一下它们究竟是如何在游戏领域应用的。原创 2023-11-04 17:28:25 · 105 阅读 · 0 评论 -
第32讲 | 热点剖析(五):如何选择移动端的游戏引擎?
上一次,我和你探讨了移动端游戏的一些区别和特点,我特别介绍了 libGDX 这款游戏引擎。因为这款游戏引擎是多平台的,且各种第三方工具都很完备,比如物理引擎、特效、2D 骨骼动画工具等等,所以 libGDX 目前已经被越来越多的公司和个人接受和使用。在苹果端,我们也讲到了,苹果公司推出的 SpriteKit 游戏开发框架,在苹果体系下,使用 XCode 就可以很方便地使用 SK 工具开发出好玩的 2D 移动游戏。原创 2023-11-03 22:01:49 · 89 阅读 · 0 评论 -
第31讲 | 热点剖析(四):安卓端和苹果端游戏开发有什么区别?
所谓的移动端,指的是可以随时拿在手上游戏和工作的,自带直流电源的设备,所以从游戏角度讲,手机、掌上游戏机、iPad 都属于移动端设备。我们今天的侧重点在安卓和苹果端的手机游戏,在开始说手机游戏之前,我们先简单了解一下掌上游戏机,因为这毕竟是移动端游戏的鼻祖。在游戏发展的历史中,游戏机从 8 位发展到 32 位、64 位;游戏存储的媒体,从芯片到卡带到光盘再到网络下载。从电视游戏机到掌上游戏机,游戏存储的容量也越做越大,游戏机也变得越来越小巧、轻薄。原创 2023-11-03 22:00:14 · 86 阅读 · 0 评论 -
第30讲 | 热点剖析(三):试试看,你也可以编写一款HTML5小游戏!
前面分析了HTML5 的核心竞争力以及HTML5 游戏的引擎。选择好了 HTML5 引擎,我们就可以开始制作游戏了。对于编写 HTML5 小游戏,你或许会很有兴趣,因为 HTML5 现在已然是一个潮流,而且利用引擎编写 HTML5 游戏已经变得相当方便。原创 2023-11-03 21:59:05 · 56 阅读 · 0 评论 -
第29讲 | 热点剖析(二):如何选择一款HTML5引擎?
它本身融合了 Cocos2d-HTML5 和 Cocos2d-x JavaScript Bindings(JSB),支持 Cocos2d-x 的所有核心特性并提供更简单易用的 JavaScript 风格 API,基于 Cocos2d-JS 的框架,可以方便地使用 JavaScript 语言进行游戏开发,快速构建原型进行测试和验证。原创 2023-11-03 21:57:30 · 192 阅读 · 0 评论 -
第28讲 | 热点剖析(一):HTML5技术是如何取代Flash的?
从前几年开始,H5 这个技术就开始蓬勃发展。不管是懂行的还是不懂行的,都开始以“H5”这个字眼来描述产品。比如老板会说“我们就做个 H5 的页面吧”,或者“这个游戏是 H5 的吗”。很多人已经把 H5 等价于“手机端页面”了,这样的理解显然是错误的。那么 H5 究竟是什么?它的优点在哪里?为什么现在大家都在谈论 H5?你真的知道 H5 是什么,并真的深入理解了它吗?原创 2023-11-03 21:55:06 · 418 阅读 · 0 评论 -
第27讲 | 如何制作游戏内容保存和缓存处理?
我们在打完游戏的关卡之后,需要保存游戏进度。单机游戏的进度都保存在本地磁盘上,如果是网络游戏的话该怎么办呢?这一节,就来讲这个内容。首先,我们要了解游戏内容的保存,需要先了解缓存处理。为什么要了解缓存的处理呢?那是因为在大量用户的情况下,我们所保存的内容都是为了下次读取,如果每一次都从硬盘或者数据库读取,会导致用户量巨大数据库死锁,或者造成读取速度变慢,所以在服务器端,缓存的功能是一定要加上的。原创 2023-11-03 21:39:58 · 195 阅读 · 0 评论 -
第26讲 | 如何用网关服务器进行负载均衡?
我们费劲心思做了一款游戏,那肯定希望有很多人来玩。一旦玩家数量开始多起来,服务器需要承担的压力就会变大,我们就需要做负载均衡了。所谓的负载均衡,就是对外有一个公共地址,在请求过来的时候,通过轮询、随机分配等方式,定点到不同的服务器,以分摊服务器的压力。原创 2023-11-03 19:08:49 · 473 阅读 · 0 评论 -
第25讲 | 如何判断心跳包是否离线?
在初学网络,编写过阻塞和非阻塞网络代码的时候,有一个问题,那就是在非阻塞的情况下,不知道对方的网络何时断开。因为在非阻塞的情况下,如果没有接收到消息,recv 的数值一直会是 0。如果以这个来判断,显然是错误的。而在阻塞情况下,只要对方一断开,接收到 0 就说明断开了,那么我们怎么才能在非阻塞的情况下确定连接是断开还是没断开呢?我们可以采用离线超时的方案来判断对方连接是否断开。那什么是离线超时呢?我们都知道,人累了就要休息。原创 2023-11-03 18:01:53 · 215 阅读 · 0 评论 -
第24讲 | 不可忽视的多线程及并发问题
既然我们说到了服务器端的开发,我们就不得不提起多线程和并发的问题,因为如果没有多线程和并发,是不可能做网络服务器端的,除非你的项目是 base 在 Nginx 或者 Apache 之上的。原创 2023-11-03 17:14:35 · 38 阅读 · 0 评论 -
第23讲 | 如何定制合适的开发协议?
我们讲完了三种目前最流行的开发协议,接下来我们要讲讲如何自己定义协议包。我们所说的协议包,是在 TCP 和 UDP 传输之上的协议包,也就是通过字符串的形式发送的协议包。这些协议包在客户端和服务器之间做了约定,也就是说,客户端和服务器都能通过拿到协议包来进行解包操作,并且进行一系列的逻辑运算并返回结果,当然结果也是协议包的形式发送出去。一个好的协议不仅能节约网络带宽,也能让接收端快速拿到和解析需要的内容。设计协议包,必须保证安全性和完整性。原创 2023-11-03 16:32:02 · 60 阅读 · 0 评论 -
第22讲 | 如何选择合适的开发语言?
有许多编程语言可以用来开发服务器端。一些语言对于网络开发有先天优势,一些语言没有先天优势,但是能完成任务,而有一些语言,则不太适合。今天,我就来具体讲一讲这些语言来开发网络服务的优劣势。原创 2023-11-03 14:16:10 · 55 阅读 · 0 评论 -
第21讲 | 如何使用脚本语言编写周边工具?
我们在 C/C++ 语言里面进行大量的封装和算法提取,并且也利用 C/C++ 进行调用和结果的呈现,这是一种常用的方式,也就是 C 语言占比 60%~70%,Lua 代码占比 30%~40%。2. 另一种比较好的方式是,原创 2023-11-03 11:53:47 · 34 阅读 · 0 评论 -
第20讲 | 脚本语言在游戏开发中有哪些应用?
上一次,我们谈到了如何在游戏中嵌入脚本语言,我们用的语言是 Lua。Lua 语言具有轻量级、速度快的特点,而且 API 的调用也非常方便和直观。现在,我们仍然拿 Lua 脚本,试着把它应用在我们开发的游戏中。我们使用 C 语言来对 Lua 脚本的绑定做一次深入的剖析,然后来看一下,在游戏开发中绑定了脚本语言后,脚本语言能做些什么事情。首先,我们要明白一点,事实上。当然在游戏开发的过程中,需要分工明确,如果不分工的话,效率可能会比较低。原创 2023-11-03 11:00:57 · 56 阅读 · 0 评论 -
第19讲 | 如何嵌入脚本语言?
从 2005 年开始,逐渐流行使用 C/C++ 语言结合脚本语言(Lua、Python、Ruby 等等)编写游戏。这是因为用 C/C++ 编写游戏的传统方式,硬代码太多,而使用硬代码编写的游戏,更新难度很大,除非重新编译一次程序。于是,就有人开始使用配置文件来做活动逻辑。比如填写好配置表、玩家等级多少、攻击力如何、等于多少的伤害力等等,一开始就将这些内容都读取进代码,在游戏中实时计算出来。但是这种方法其实也并不方便。很久以前的游戏,由于硬件资源限制,所以一般都加载 WAV 格式。原创 2023-11-03 10:12:42 · 198 阅读 · 0 评论 -
第18讲 | 如何判断客户端的网络连接?
由于涉及到网络、脚本语言等等,这一节起,我要开始讲一些基础的、看起来比较枯燥的知识。我会尽力写得有趣生动,但是,知识的获取并不容易,即便我已经在努力去讲解,还是需要你用更多的时间去摸索和学习。我们在前面说了 Pygame 的一些客户端知识,如果你想让这款游戏能够在网络上传输数据,接下来,那就需要编写服务器端,并且在客户端做客户端连接的准备。前面我们已经用 Pygame 讲解了很多内容,那我们客户端的网络连接,我也继续使用 Python 来编写,当然这已经和 Pygame 没有关系了。原创 2023-11-03 09:17:29 · 37 阅读 · 0 评论 -
第17讲 | 如何用鼠标和键盘来操作游戏?
所以在一款游戏中,鼠标和键盘的操作是必不可少的,有时候甚至鼠标和键盘都要同时操作,比如 FPS 游戏,比如即时战略等等。鼠标和键盘的操作在 Pygame 中需要进行实时检测,这个上一节我有提到过,然后我们就可以对游戏画面进行操作。我们在 Pygame 中有两种方式可以检测和编写键盘事件,一种是使用操作,一种是使用来进行键盘的判断操作。我们先来尝试一下使用事件进行操作的键盘事件。原创 2023-11-02 23:44:48 · 148 阅读 · 0 评论 -
第16讲 | 如何在游戏中载入UI和菜单?
今天我们要在游戏中载入 UI 和菜单,在开始之前,我们先调整一下,我们之前讲过的游戏代码部分的内容。首先我们需要更改游戏的背景图片,使之看起来更像是一款打飞机的游戏,而不是最早之前我们随便用的一幅山水图。我们先将游戏背景修改为正常的游戏背景,并且贴上飞机图像。这里,我想到一个问题,之前有人留言问我,程序员需不需要有美术功底。我在这里说一下我的看法。如果你只是要做一个程序员,那我可以告诉你,不需要。但是,如果你不是只想做一个“码农”,你想有更多的发展,那各方面的知识,比如策划、美术,你都需要去了解。原创 2023-11-02 22:58:12 · 146 阅读 · 0 评论 -
第15讲 | 如何载入背景音乐和音效?
好的音乐总是伴随着游戏一起,一直被玩家所记忆。在游戏中播放音乐和音效并不是什么困难的事情,但是究竟什么时候播放什么音效,具体怎么实现,这恐怕就需要一些技巧了。比如,我今天要讲的,我们可以和某些函数捆绑在一起实现。Pygame 支持 mp3、ogg、wav 音频和音效的播放。音乐的模块都在 pygame.mixer 中,这里面包括音乐和音效。我们在使用音频部分模块的时候,需要先初始化一次。这个初始化应该在 pygame.init() 的初始化之后。原创 2023-11-02 22:14:21 · 368 阅读 · 0 评论 -
第14讲 | 如何制作游戏资源包和保存机制?
我总结了一下,可以从这三个角度来理解什么是资源包。资源包是一种将游戏的资源和素材进行分类、梳理,并且打包的一种包裹。资源包可以用来压缩游戏资源和素材,减少游戏体积。资源包里存在任何可能性,比如它可以包含图片文件、模型文件、音频文件、脚本文件等等,具体要看游戏开发人员的配置需求,来决定资源包里的内容。现在很多游戏公司都不会编写特殊的资源包格式。因为设计一种资源包格式,需要经过一系列复杂的动作,包括包头、包身和包尾。关于这个格式的设计,一会儿我会给你仔细分析。原创 2023-11-02 19:57:28 · 542 阅读 · 0 评论 -
第13讲 | 如何设置淡入淡出和碰撞检测?
不知道你有没有注意,在我们玩过的打飞机游戏中,当每一关游戏开始的时候,都会有个游戏画面逐渐出现的过程。短短几秒,从无到有,整个画面就呈现在你眼前了。同样,每一关结束的时候,也会有个画面逐渐消失的过程。从画面效果讲,这个画面从有到逐渐屏幕变暗,直到消失,或者反过来,由暗逐渐变亮,到完全进入画面的过程,就叫做淡入淡出。从声音角度讲,也存在淡入淡出,比如音乐从无声到逐渐有声,或者从有声到逐渐无声。在 Pygame 中并不存在“画面的淡入淡出”这样的函数,需要我们自己去实现这样的功能。原创 2023-11-02 18:43:59 · 55 阅读 · 0 评论 -
第12讲 | 如何设置精灵的变形、放大和缩小?
先来解释一下什么是精灵。精灵当然不是我们传统意义上的什么树林里的精灵。精灵是一个游戏开发中的名词,英文叫 Sprite。它多用于游戏中的人物和可移动物品,也可以用于显示鼠标指针和输入的文字。如果屏幕上的可移动物体的尺寸比一个精灵图要大,可由若干个精灵图缩放或者拼接而成。从宏观的概念讲,精灵就是一幅图片。比如我们之前中讲过的那些飞机图、背景图,这些都可以认为是精灵或者是从精灵中派生出来的。它就是一系列可以变化的图片。这些图片可以变形、放大、缩小,或者是一系列的动画帧等等。从编程。原创 2023-11-02 17:46:45 · 449 阅读 · 0 评论 -
第11讲 | 如何设置图像的前后遮挡?
我们人的肉眼所观察到的世界是属于 3D 世界,有远近大小之分。一个物件 A 被另一个物件 B 遮挡,物件 A 就会看不到,而在 2D 的世界里,都是平面的,没有实际的高度区分,就算做成了斜 45 度角,也是一种视觉呈现,并没有在计算机内形成高度差。在一般的游戏引擎,或者像 Pygame 这样的游戏库中,基本都是“先绘制的图案先出来”,“后绘制的图案后出来”,而后绘制的图案一定遮挡前面绘制的图案。因为 2D 就是一个平面,从逻辑上讲,按照先后顺序绘制,没有任何问题。原创 2023-11-02 16:07:39 · 66 阅读 · 0 评论 -
第10讲 | 如何载入“飞机”和“敌人”?
1. 这些工作将在后续的内容中展开讲解。比如我们需要移动背景。这个我们上次已经说明了。在敌人飞机往下飞的过程中,我们需要考虑敌人飞机往下飞的速度,是不是要比屏幕移动的速度更快或者更慢,这样才能体现敌人飞机的等级高低,体现出游戏的难度是随着关卡的变化越来越难的。2. 我们将游戏背景的图片 blit 函数放在游戏循环的最开始,而载入飞机的代码则放在稍后的部分,那么如果我们将游戏背景的图片放到飞机之后载入会发生什么事情呢?原创 2023-11-02 14:43:47 · 40 阅读 · 0 评论 -
第9讲 | 如何绘制游戏背景?
在之前的文章中描述了各种基础知识,然后梳理了开发流程,并带你创建了一个窗体,现在我们要做的就是朝这个窗体里添加东西。会随着进度逐渐提升难度。就现阶段来讲,我们涉及的只是一些基础知识,并且只做事情都有先后顺序,做游戏开发自然也是。为什么要学习先绘制游戏背景而不是别的什么,很简单,因为只有先绘制了游戏背景,才能进行后续的游戏图像遮挡、图形图像的显示等等操作。不管你有没有玩过《超级玛丽》《魂斗罗》《雷电》之类的游戏,但一定对其画面不陌生。原创 2023-11-02 12:13:02 · 291 阅读 · 0 评论 -
第8讲 | 如何区分图形和图像?
很多人可能都分不清图形和图像这两个概念:一种情况是可能会觉得区分图形和图像这两个概念并没有什么实质的用途,于是就没关心过;另一种情况是,可能朦胧中对图形和图像的区别有一些了解,但是不够深入或者不够透彻,也说不出一个所以然。没关系,今天我就来深入浅出地给你讲一下,图形和图像背后的那些事儿。既然我们是做游戏开发,那首先我们得知道,从专业地角度讲,区分图形和图像对我们的开发工作有什么帮助。简单地说,原创 2023-11-02 10:42:52 · 120 阅读 · 0 评论 -
第7讲 | 如何建立一个Windows窗体?
今天,我要跟你分享开发 Windows 游戏的第一步,建立窗体。上一节,讲解 Python 和 C++ 的编译器,以及它们各自对应的 IDE 该如何选择,并且测试了 C/C++ 的运行,编译了一个 Lua 静态库。准备工作基本上算是完成了。如果你有一些编程功底,应该知道建立 Windows 的窗体所需的一些基础知识。如果你经验稍丰富一些,还应该知道 Delphi、C++Builder、C# 等等。原创 2023-11-02 09:48:02 · 192 阅读 · 0 评论 -
第6讲 | 从0开始整理开发流程
在第一模块的基础知识中,我已经讲过开发一款游戏需要的一些背景知识。对于 2D 游戏和 3D 游戏的区别、从程序到美术、从 2D、伪 3D 到 3D 等方面,我都进行了逐一地阐述。除此之外,对于任何类型的游戏开发都非常重要的三个概念:游戏引擎、底层绘图接口、地图编辑器,我也进行了一些我个人的解读。有了这些背景知识,这一节,我来带你整理一下整个游戏开发流程以及流程中所需要的工具。原创 2023-11-02 08:50:22 · 32 阅读 · 0 评论 -
第5讲 | 构建游戏场景的武器:地图编辑器
今天,我想和你聊一聊基础知识模块的最后一部分,地图编辑器。为了给之后的内容铺垫,我还会顺带介绍一些游戏 Demo 的知识。我们先来看一幅图。这看起来是一款 FPS 射击游戏对不对?也对也不对。说对,因为这确实是一款 FPS 游戏;说不对,这其实只是一幅地图,但是这幅地图来自《魔兽争霸 3》。更准确地说,这是使用《魔兽争霸 3》的地图编辑器制作出来的一幅游戏地图。《魔兽争霸 3》发布之初,没人能想到并且能做出这样“变态”且“不走寻常路”的地图。原创 2023-11-01 23:46:41 · 233 阅读 · 0 评论 -
第4讲 | 底层绘图接口的妙用
上一节,介绍了游戏引擎的概念及其在游戏开发中所起的作用。同时,也提到了游戏引擎背后的工作方式。在代码层面,游戏引擎是一套对底层绘图、音频、操作系统接口的封装实现。在此基础上,还举了一个在游戏屏幕上画线条的例子。在这个例子中,画线的接口函数在背后分解、组合、计算,并将绘制工作交给底层绘图接口。这个绘图接口,就是今天要讲的内容。原创 2023-11-01 23:39:47 · 181 阅读 · 0 评论 -
第3讲 | 游戏的发动机:游戏引擎
估计长期玩游戏的玩家,都能脱口而出几款游戏引擎的名字,比如“虚幻”“寒霜”“狂怒”等等。那你能说说,游戏引擎究竟是什么吗?它在游戏开发中究竟起着什么样的作用呢?原创 2023-11-01 22:49:21 · 203 阅读 · 0 评论 -
第2讲 | 2D游戏和3D游戏有什么区别?
我们知道,游戏的体现形式最主要是 2D 和 3D。最近比较流行的 AR/VR 等,都是属于 3D 类的体现形式。关于 VR 游戏,我会在之后的“热点剖析”模块详细介绍,这里就不多说了。最初的游戏,2D 是绝对的主流。虽然现如今 3D 游戏大行其道,但是 2D 游戏还是拥有一席之地。比如我们上一节提到的《返校》,日本光荣公司前几年仍然在推出 2D 版的《三国志》,以及最近暴雪又复刻的《星际争霸 1》高清版。原创 2023-11-01 22:04:46 · 598 阅读 · 0 评论 -
第1讲 | 游戏开发需要了解哪些背景知识?
这一节开始,我将带你进入游戏开发的世界。从最初的小霸王,到充满混混和烟味的街机厅,到 PS、Xbox、DC、N64 等次世代游戏主机,再到电脑游戏,再到如今,在手机上就能玩到各种各样的游戏。我会依次为你揭密,这些令人痴迷、沉浸的游戏,究竟是怎么发展的,常见的游戏种类有哪些,这些游戏在开发流程和细节上有什么不同,以及游戏开发究竟要从哪里开始学起。原创 2023-11-01 21:20:58 · 90 阅读 · 0 评论