指南 游戏编程基础

游戏编程基础

如果你在寻找问题的答案“如何开发游戏”你来对地方了。首先,我们不会讨论学习编程语言或游戏引擎来为电子游戏编程的必要性,因为开发游戏远不只是编码和游戏引擎。事实上,游戏产业是一个包含许多不同产业的领域,包括数学,艺术,心理学,甚至电影。换句话说,仅仅掌握游戏引擎和学习编程语言是远远不够的。那到底是什么呢?我们需要知道?

这篇视频游戏开发初学者指南将涵盖你开始创建自己的游戏软件和应用程序所需知道的一切。

电子游戏机制解释

今天的游戏能够获得大量用户的最大原因之一便是游戏机制.为了更好地理解什么是游戏机制,我们必须考虑游戏系统。想象一下,这个系统控制着不同的子部分。为了更好地描述这一点,你可以查看下面的图表:

游戏机制概述

我们将在接下来的章节中描述构成游戏机制的各个部分。

游戏系统

如上图所示,游戏系统承担以下任务:

  • 处理文件的加载和保存。
  • 然后,它允许使用音频和图形元素运行介绍动画。
  • 当使用游戏界面时,用户输入确保图像和声音部分协调工作。
  • 最后,游戏系统确保图像、声音、用户输入、人工智能和网络部分在游戏中协调工作。

资源

资源描述硬盘上游戏的必要文件。

  • 这些资源包含描述游戏运行的默认设置的配置文件。
  • 如果可用,它包含介绍的视频文件,将在游戏第一次开始时播放。
  • 包含用户在游戏开始前获取游戏信息的文件。
  • 它包含游戏中的图像、音乐和章节信息,以及游戏需要向玩家显示音频和视觉数据的所有其他元素。

博弈模型

  • 游戏模型是从资源中加载到内存中的游戏图像、音乐和文本文件的状态。
  • 图像文件存储在显卡的内存或纹理内存中。
  • 章节、分数等信息保存在游戏模型中的变量和数据结构中。

上传并保存

这是将图像、音乐和其他来自源的信息放入内存(游戏模型)的部分,并在分数发生变化时,当游戏被保存或保存状态时,或当游戏被记录时,将其保存回源。

  • 上传:配置文件、章节文件、图像文件、音乐和声音文件、3D模型文件、视频文件和帮助文件。
  • 保存:在游戏过程中保存的得分文件和其他文件。

图形

在我看来,这是游戏中最重要也是最困难的部分。因为你不可能创造出一款没有视觉效果的游戏(除非你是在创造一款基于文本的老式电子游戏)。该部分负责涂装屏幕及以下内容:

  • 播放任何视频,
  • 显示游戏界面。
  • 查看和显示分数、帮助和配置信息。
  • 显示游戏本身的图像和视觉元素。

用户输入

没有互动的游戏就像看电影一样。用户交互绝对是其中之一必要条件将用户与游戏联系起来的游戏机制。系统不断地与用户交互。键盘、鼠标、相机等等都能够接收用户输入。用户输入是游戏机制的一部分,我们将使用硬件和设备让用户与游戏互动。用户输入允许玩家:

  • 使用游戏界面。
  • 查看帮助文件。
  • 检查分数文件。
  • 配置系统和游戏相关功能。
  • 在游戏中控制用户的角色。

声音与音乐

如果你真的想了解声音和音乐在电子游戏中的重要性,那就试着在玩你最喜欢的游戏时关掉声音。你会注意到,当没有声音时,游戏的价值会显著下降。对我来说,声音的价值和游戏画面的价值是一样的。

  • 背景音乐播放
  • 碰撞和移动的音效

人工智能(AI)

让我们考虑游戏中敌人的智力水平。他们看起来越像人类,行为越聪明,游戏就越有趣。它也不一定非得是敌人。在开放世界游戏中,路过的市民会看手表,在阳光明媚的天气里擦去额头上的汗水,给你让路,甚至与你争吵,在你虐待动物时攻击你,等等。所有这些元素都可以归入人工智能的范畴。

网络监听和发送

网络监听和发送是游戏机制的一部分,允许多人玩游戏,也称为多人游戏或在线游戏。在该部分中,双方向游戏服务器发送信息,并在游戏中更新侦听服务器接收到的信息。网络监听和发送负责:

  • 建立会话:参与游戏的玩家首先要商定使用何种协议和端口进行通信。
  • 包传递:游戏中的动作以包的形式发送到服务器。然后,服务器在进行必要的更改后将其分发给各方。
  • 包裹拾取:同时,双方通过监听服务器了解所做的更改,并将其反映到游戏中。

硬件

玩家喜欢游戏中的各种元素,总是在寻找更好的图像、音乐、物理和人工智能。要实现这一切(游戏会随着时间的推移变得更加复杂),必须满足以下两个条件之一:

应该进行软件优化,开发新的算法。
应该使用适当的设备和硬件,包括提高处理速度和内存。

如今,新算法和代码优化发现的进展远远慢于新硬件的开发速度。为了解决这个问题,开发人员应该关注可重用性、代码开放性和代码安全性(封装)等问题,而不是新的算法。为了实现这一点,硬件会尝试为这些新请求尽可能地提高处理器速度和内存容量。

许多不同类别的硬件都可以归入此部分,包括以下几种:

  • 显卡
  • 处理器
  • 主板
  • 声卡
  • 显示器,扬声器和其他输入设备

读:Unity游戏编程:标准化跨设备游戏速度。

最佳游戏开发编程语言金宝搏官网188

编程语言是一种计算机语言金宝搏官网188,它允许程序员以某种标准形式开发命令和软件。多亏了编程语言,控制计算机在不同情况下的输出金宝搏官网188成为可能。简而言之,得益于编程语言,计算机和人类可以有效地交流。金宝搏官网188

因为我们的主题是电子游戏开发,所以很自然地,我们会花一些时间来关注编程语言,我们最终会使用这些语言来创造电子游戏。金宝搏官网188

根据你想要创造的内容,你可以使用几乎所有的编程语言来开发游戏,尽管程度不同。金宝搏官网188总会有人坚持让你学习c++特别是如果你想为PlayStation 5或Xbox等主机编写游戏代码。然而,这绝对不是真的。你可以制作出很棒的游戏JavaScriptc#Python(多亏了像PyGame)或甚至C.只在主机屏幕上运行的基于选择的冒险游戏可能会非常有趣。但是,如果你想要编写更专业的游戏,并且能够吸引更多用户,请继续阅读下文。

c++

由于c++是一种高级语言,它将教你面向对象编程(OOP)的基础知识,因此学习它是一个好主意。它也是用于创造主机和Windows游戏的语言。此外,它使用OpenGL或类似的框架(我们将在本指南后面更详细地介绍OpenGL)。

c++是一种快速编译的编程语言。您在内存管理方面也有很多发言权。它有大量有用的库来设计和支持复杂的图形。有很多文献可供你研究和学习,因为数十年来它一直是电子游戏程序员的首选语言,你会发现在线社区愿意回答你的问题。

如果我们说c++很容易学,那就是在说谎。与其他编程语言相比,它很难学习。金宝搏官网188然而,它之所以有用,不仅是因为c++游戏很容易在各种平台上发布,还因为如果你懂c++,你就可以快速学习c#和其他面向对象语言,包括C和Java(尽管从技术上讲,Java不是面向对象语言)。金宝搏官网188c++、C、Java和c#是当今最常用的编程语言。金宝搏官网188

总而言之,如果你想从头开始为多个平台创建视频游戏,学习c++是一个不错的选择。

阅读我们的c++编程教程。

c#

c#对于电子游戏开发的好处在于XNA框架.这是微软开发的一套工具和工作区,特别适合在Xbox或Windows平台上开发游戏。

如果你比较c++和c#,你可能会考虑这个例子:c++就像一辆手动变速器的汽车;另一方面,c#就像一辆自动变速箱汽车。让我们以Unity游戏引擎为例。如果你使用Unity游戏引擎,你就必须使用c#编写游戏脚本。然而,这个游戏引擎的核心是使用c++代码开发的。

你的目标平台,你想要制作的游戏,你将使用的游戏引擎等等都会影响你所选择的语言。不管怎样,学习c#进行游戏开发是个不错的主意。

阅读我们的c#编程教程。

Java

游戏程序员通常使用Java,因为Java支持多线程和套接字。多线程使用更少的内存,并充分利用可用的CPU资源,而不会在后台运行大量进程时阻塞用户。套接字有助于多人游戏的创建。此外,Java运行在虚拟机(JVM)中,所以游戏更容易部署到不同的平台。

此外,如果你想为Android平台开发应用程序和游戏,Java将是一个不错的选择。

阅读我们的Java编程教程。

JavaScript

面向浏览器制作游戏与面向主机制作游戏截然不同。如果您想使用3D图形或复杂图形和内容管理系统,还需要SVG或WebGL。

使用ActionScript编程语言的Flash动画在过去的浏览器游戏中很常见,但现在不再支持Flash了。

Unity 3D引擎接受Javascript。麻省理工学院开发的基于webgl的Java引擎(如PlayCanvas)允许用户同时使用在线浏览器在游戏中工作,并将游戏发布到多个平台。

此外,还有一些很棒的游戏引擎,你可以使用JavaScript开发游戏。其中一个例子是PhaserJS

阅读我们的JavaScript编程教程。

游戏开发api

什么是API?它代表应用编程接口.api是帮助我们使用大量函数和方法执行特定任务的库。

我们将在游戏中使用的api将是能够让我们通过提供图像和声音硬件接口来利用它们的库。例如OpenGL过剩GLU举Direct3DDirectDrawDirectShow的DirectInput直接连接声音处理软件DirectMusic),Java2DJava3DJavaMusicJavaNETJavaMedia,在你一个这些都是游戏开发api的例子。

尤其对于游戏开发者来说,学习OpenGL库非常有用。考虑到这一点,让我们再多谈谈OpenGL。

OpenGL游戏开发

OpenGL驻留在图形硬件中,并提供到该硬件的接口。这个接口包含250个不同的指令集。其中200个在OpenGL核心中,另外50个在OpenGL实用程序库中。借助OpenGL图形API,您可以开发3D交互式应用程序。

OpenGL是一个平台独立的API。它被设计为一个执行连续运行的命令流的接口。为了确保这种质量,它不包括窗口任务和获取用户输入等命令,而是从OpenGL平台提供的窗口和输入服务中受益。同样,它也不包含用于创建高级3D对象的命令。但通过它提供的命令,它可以创建汽车、飞机或分子表面。为了用OpenGL创建所需的这种类型的模型,我们使用了我们称为的小工具包中的点、线和多边形几何元素

当然,创建一个更好的图形系统可以建立在OpenGL的核心结构之上。OpenGL实用库(GLU)具有许多高级建模特性,二次曲面、NURBS曲线和曲面渲染。

渲染过程中执行了哪些操作?

在下面4个阶段中,你可以简单地看到渲染过程中发生了什么进程:

  • 使用数学表达式创建形状和几何对象(OpenGL有工具来创建基本对象,如点、线、多边形、图像和位图)。
  • 物体在三维平面上的排列和视角的调整。
  • 计算对象的颜色值,并通过考虑光和纹理值将它们应用到屏幕上。
  • 将所有对象值的定义和颜色值转换为像素值并实现栅格化事件。

一个简单的OpenGL代码示例

使用OpenGL图形系统选择如此多的选项并执行复杂的操作会使OpenGL显得复杂。但基本上,用OpenGL编写的程序结构非常简单。你所做的实际上是定义某些状态,并对OpenGL应该呈现哪些对象以及应该如何呈现它们设置一个控制机制。

你可以把OpenGL看作实时渲染软件.下面是OpenGL在代码中的示例:

main(){initializeAwindowPlease();glClearColor(0.0, 0.0, 0.0, 0.0);glColor3f(1.0, 1.0, 1.0);glOrtho(0.0, 1.0, 0.0, 1.0, -1.0, 1.0) glBegin(GL_POLYGON) glVertex3f(0.25, 0.25, 0.0) glVertex3f(0.75, 0.25, 0.0) glVertex3f(0.75, 0.75, 0.0) glVertex3f(0.25, 0.75, 0.0) glVertex3f(0.25, 0.75, 0.0) glVertex3f(0.25, 0.75, 0.0) glEnd();glFlush() UpdateTheWindowAndCheckForEvents();

游戏开发教程

首先,非常感谢那些走了这么远的人。总结一下到目前为止我们从游戏编程教程中学到的东西:

  • 游戏开发不只是学习编程语言和游戏引擎。金宝搏官网188
  • 你必须掌握很多技术。我们没有提到的技术包括Adobe Premier、Adobe After Effects、3D Studio Max、Lightwave、Maya和Poser等程序。学习和掌握这些只有通过经验才能做到。
  • 这就是为什么我们谈论硬件和OpenGL。爱你的电脑和键盘,而不是专注于一件事。掌握游戏开发的最佳且唯一的经验法则是:保持好奇心,大量阅读并无所畏惧地编写代码!

最新的文章

有关的故事

Baidu
map