找回密码
 立即注册
查看: 560|回复: 11

游戏开发最基础的组成元素是什么?

[复制链接]
发表于 2021-11-16 18:15 | 显示全部楼层 |阅读模式
例如我会box2d,但是要做出一个游戏,还要什么? 光靠物理引擎是不够的吧。渲染什么是什么?物理引擎如何与其他的库结合使用?关注者
197

被浏览
9,949





关注问题写回答
邀请回答好问题
1 条评论
分享









<div class="Question-main"><div class="Question-mainColumn"><div id="QuestionAnswers-answers" class="QuestionAnswers-answers" data-zop-feedlistmap="0,0,1,0"><div class="Card AnswersNavWrapper"><div class="ListShortcut"><div class="List">11 个回答

默认排序


<div class="" role="list"><div class="List-item" tabindex="0"><div class="ContentItem AnswerItem" data-za-index="0" data-zop="{"authorName":"Milo Yip","itemId":52725913,"title":"游戏开发最基础的组成元素是什么?","type":"answer"}" name="52725913" itemProp="acceptedAnswer" itemType="http://schema.org/Answer" itemscope="">Milo Yip/path>
2016 年度荣誉答主





34 人赞同了该回答

<div class="RichContent RichContent--unescapable"><div class="RichContent-inner"><span class="RichText ztext CopyrightRichText-richText css-hnrfcf" options="[object Object]" itemProp="text">要回答开发游戏需要什么,有需要定义什么是(电子)游戏。 @空明流转 都猜得差不多了,但就缺少了一个很重要的因素──乐趣(fun)。例如一个专业飞行模拟软件可能有交互、规则、评价,但没有有趣的成分,可能只会当作一个模拟软件。但乐趣是很难定义的,见仁见智,或许有人使用那个专业飞行模拟软件也觉得很有乐趣,他可能会认为该软件也是一个游戏。

我节录《游戏引擎架构》一些相关的段落,这部分内容都在可下载的样章里( gea_excerpt.pdf)。

1.2 游戏是什么

“游戏”是什么,每个人多半都有自己非常直观的理解。“游戏”一词泛指棋类游戏(board game),如象棋和《大富翁(Monopoly)》;纸牌游戏(card game),如梭哈(poker)和二十一点(blackjack);赌场游戏(casino game),如轮盘(roulette)和老虎机(slot machine);军事战争游戏(military war game)、计算机游戏、孩子们一起玩耍的多种游戏等。学术上还有个“博弈论(game theory)”,它是指在一个明确的游戏规则框架下,多个代理人(agent)选择战略及战术,以求自身利益的最大化。在游戏主机及计算机娱乐的语境中,“游戏”一词通常会使我们的脑海里浮现一个三维虚拟世界,玩家可以控制人物、动物或载具。(老一辈的玩家可能会想起一些二维的经典游戏,如《乓(Pong)》、《吃豆人(Pac-Man)》、《大金刚(Donkey Kong)》等。)在《快乐之道:游戏设计的黄金法则(Theory of Fun for Game Design)》一书中,拉夫·科斯特(Raph Koster)把游戏定义为一个互动体验,为玩家提供一连串渐进式挑战,玩家最终能通过学习而精通该游戏[26]。科斯特的命题把学习及精通作为游戏的乐趣(fun)。这正如听一个笑话时,发现其中的奥妙,明白笑点的一瞬间该笑话变得有趣一样。

基于本书主旨,我们会集中讨论游戏的一个子集,子集里的游戏由二维或三维虚拟世界组成,并有少量的玩家(1~16个左右)。本书大部分的内容也可以应用到互联网上的Flash游戏、纯解谜游戏(如《俄罗斯方块(Tetris)》)或大型多人在线游戏(massivelymultiplayer online games,MMOG)。但我们主要集中讨论一些游戏引擎,这些游戏引擎可以用来开发第一人称射击、第三人称动作/平台游戏、赛车游戏、格斗游戏等。

1.2.1 电子游戏作为软实时模拟

大部分二维或三维的电子游戏,会被计算机科学家称为软实时(soft real-time)互动(interactive)基于代理(agent-based)计算机模拟(computer simulation)的例子。以下,我们把这个词组分拆讨论,以便理解。

在大部分电子游戏中,会用数学方式来为一些真实世界(或想象世界)的子集建模(model),从而使这些模型能在计算机中运行。明显地,我们不可能模拟世界上的所有细节,例如到达原子或夸克(quark)的程度,所以这些模型只是现实或想象世界的简化或近似版本。也因此,数学模型是现实或虚拟世界的模拟。近似化(approximation)和简化(simplification)是游戏开发者最有力的两个工具。若能巧妙地运用它们,就算是一个被大量简化的模型,也能非常接近现实,难辨真假,而能带来的乐趣也比现实更多。

基于代理模拟是指,模拟中多个独立的实体(称为代理)一起互动。此术语非常符合三维电子游戏的描述,游戏中的载具、人物角色、火球、豆子等都可视为代理。由于大部分游戏都有基于代理的本质,所以多数游戏采用面向对象(object-oriented)编程语言,或较宽松的基于对象(object-based)编程语言,也不足为奇了。

所有互动电子游戏都是时间性模拟(temporal simulation),即游戏世界是动态的(dynamic) 随着游戏事件和故事的展开,游戏世界状态随着时间改变。游戏也必须回应人类玩家的输入,这些输入是游戏本身不可预知的,因而也说明游戏是互动时间性模拟(interactive temporal simulation)。最后,多数游戏会描绘游戏的故事,并实时回应玩家输入,这使游戏成为互动实时模拟(interactive real-time simulation)。显著的反例是一些回合制游戏,如计算机化象棋及非实时策略游戏,尽管如此,这些游戏通常也会向用户提供某种形式的实时图形用户界面(graphical user interface,GUI)。因此基于本书的目标,将假设所有电子游戏至少都会有一些实时限制。

......

这本书虽然未必能直接回答「游戏开发最基础的元素是什么」,因为「什么是最基本」可能有不同的定义。但应该适合题主了解游戏开发(从技术上来说)的方方面面。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
发表于 2021-11-16 18:22 | 显示全部楼层
要回答开发游戏需要什么,有需要定义什么是(电子)游戏。 @空明流转 都猜得差不多了,但就缺少了一个很重要的因素──乐趣(fun)。例如一个专业飞行模拟软件可能有交互、规则、评价,但没有有趣的成分,可能只会当作一个模拟软件。但乐趣是很难定义的,见仁见智,或许有人使用那个专业飞行模拟软件也觉得很有乐趣,他可能会认为该软件也是一个游戏。

我节录《游戏引擎架构》一些相关的段落,这部分内容都在可下载的样章里( gea_excerpt.pdf)。

1.2 游戏是什么

“游戏”是什么,每个人多半都有自己非常直观的理解。“游戏”一词泛指棋类游戏(board game),如象棋和《大富翁(Monopoly)》;纸牌游戏(card game),如梭哈(poker)和二十一点(blackjack);赌场游戏(casino game),如轮盘(roulette)和老虎机(slot machine);军事战争游戏(military war game)、计算机游戏、孩子们一起玩耍的多种游戏等。学术上还有个“博弈论(game theory)”,它是指在一个明确的游戏规则框架下,多个代理人(agent)选择战略及战术,以求自身利益的最大化。在游戏主机及计算机娱乐的语境中,“游戏”一词通常会使我们的脑海里浮现一个三维虚拟世界,玩家可以控制人物、动物或载具。(老一辈的玩家可能会想起一些二维的经典游戏,如《乓(Pong)》、《吃豆人(Pac-Man)》、《大金刚(Donkey Kong)》等。)在《快乐之道:游戏设计的黄金法则(Theory of Fun for Game Design)》一书中,拉夫·科斯特(Raph Koster)把游戏定义为一个互动体验,为玩家提供一连串渐进式挑战,玩家最终能通过学习而精通该游戏[26]。科斯特的命题把学习及精通作为游戏的乐趣(fun)。这正如听一个笑话时,发现其中的奥妙,明白笑点的一瞬间该笑话变得有趣一样。

基于本书主旨,我们会集中讨论游戏的一个子集,子集里的游戏由二维或三维虚拟世界组成,并有少量的玩家(1~16个左右)。本书大部分的内容也可以应用到互联网上的Flash游戏、纯解谜游戏(如《俄罗斯方块(Tetris)》)或大型多人在线游戏(massivelymultiplayer online games,MMOG)。但我们主要集中讨论一些游戏引擎,这些游戏引擎可以用来开发第一人称射击、第三人称动作/平台游戏、赛车游戏、格斗游戏等。

1.2.1 电子游戏作为软实时模拟

大部分二维或三维的电子游戏,会被计算机科学家称为软实时(soft real-time)互动(interactive)基于代理(agent-based)计算机模拟(computer simulation)的例子。以下,我们把这个词组分拆讨论,以便理解。

在大部分电子游戏中,会用数学方式来为一些真实世界(或想象世界)的子集建模(model),从而使这些模型能在计算机中运行。明显地,我们不可能模拟世界上的所有细节,例如到达原子或夸克(quark)的程度,所以这些模型只是现实或想象世界的简化或近似版本。也因此,数学模型是现实或虚拟世界的模拟。近似化(approximation)和简化(simplification)是游戏开发者最有力的两个工具。若能巧妙地运用它们,就算是一个被大量简化的模型,也能非常接近现实,难辨真假,而能带来的乐趣也比现实更多。

基于代理模拟是指,模拟中多个独立的实体(称为代理)一起互动。此术语非常符合三维电子游戏的描述,游戏中的载具、人物角色、火球、豆子等都可视为代理。由于大部分游戏都有基于代理的本质,所以多数游戏采用面向对象(object-oriented)编程语言,或较宽松的基于对象(object-based)编程语言,也不足为奇了。

所有互动电子游戏都是时间性模拟(temporal simulation),即游戏世界是动态的(dynamic) 随着游戏事件和故事的展开,游戏世界状态随着时间改变。游戏也必须回应人类玩家的输入,这些输入是游戏本身不可预知的,因而也说明游戏是互动时间性模拟(interactive temporal simulation)。最后,多数游戏会描绘游戏的故事,并实时回应玩家输入,这使游戏成为互动实时模拟(interactive real-time simulation)。显著的反例是一些回合制游戏,如计算机化象棋及非实时策略游戏,尽管如此,这些游戏通常也会向用户提供某种形式的实时图形用户界面(graphical user interface,GUI)。因此基于本书的目标,将假设所有电子游戏至少都会有一些实时限制。

......

这本书虽然未必能直接回答「游戏开发最基础的元素是什么」,因为「什么是最基本」可能有不同的定义。但应该适合题主了解游戏开发(从技术上来说)的方方面面。
发表于 2021-11-16 18:31 | 显示全部楼层
居然是最基础元素???莫非是游戏里的精灵???

---以下分割线离题万里---看在我调试游戏触控响应到现在---加---知乎手机浏览器编辑真难用---加---快找人调调吧

以我刚用了两个js的游戏库,也稍微玩了pygame,love/lua,的经验看。

一个游戏无非就是
怎么画上图,
怎么让图动起来,
怎么让图和图响应事件(键盘触控,碰撞),
多个图层怎么交互
音乐什么时候放
菜单逻辑如何安排
如果是网游还要考虑网络通信
建议可以从cocos2djs入手,只需要个webstorm和firebug就可以开发了。当然做图片栈和场景编辑还要俩小软件,当然gimp/ps之类的少不了。

既然提到了box2d,cocos2djs用的另一个物理引擎,不过嘛,相信看文档的能力。

我也刚开始学,有机会一起做个小游戏呗。
发表于 2021-11-16 18:37 | 显示全部楼层
以下是我的原创理论:

游戏开发最基本的就是:资源和资源的组织形式
资源:包括ui图块、图像、模型、动画,贴图、字库文件、声音视频等。
资源的组织形式:包括固定的组合形式(代码),可调节的组织形式(数据库、脚本、编辑器文件),以及二次以上组织形式。比如代码和数据库实际上就是资源的组织形式,但为了写好代码,填好数据库,你需要再次进行组织,写好开发规划,设计文档什么的,都是二次以上组织形式。

所以一款游戏,就是图像、声音等资源的有机组合,呈现在玩家面前。其实任何多媒体产品作品,都可以用这个理论理解。但是游戏有别于其他多媒体产品的特色在于,游戏多了一种独特的特性,那就是在可调节的组织形式中,开放了一部分给玩家进行操作修改,并且可以得到结果反馈。比如我可以操作角色的位置(移动),还可以操作角色调用一个攻击脚本(攻击),还可以操作玩家在一定范围内改变自己的属性(加点)。
不具备这种开放一定资源组织形式的,就不是游戏,而是多媒体电影。但是开放有一个重要条件,那就是这个开放本身,也是利用自身资源和组织形式来实现的,也是一个自洽的系统。不自洽的系统,玩家可以任意修改,那也称不上是一个游戏,而是资源包或者mod包之类。

那么回到现实的问题,我们要做完一款游戏,需要什么呢?
首先当然是资源,各种ui资源,图形图素,动画,模型贴图,视频音频等。
然后我们需要代码,数据库来组织这些资源。比如我规定游戏有10张地图,每张地图多大,一张大地图如何由一个个模型文件拼起来的(编辑器文件)。
再比如玩家攻击,攻击会调用哪个动作,这个动作就是资源,什么时候会攻击,攻击产生什么结果(对方显示被击动作,调用被击动作资源,然后屏幕要显示红色数字费血,调用字库资源),说到底都是资源的组织形式。

然后我们需要把这些组织形式要做好,怎么办呢?这就需要二次组织、三次组织。。。。。比如写开发计划,写设计文档,写地图编辑规划文档。。。。等等。
发表于 2021-11-16 18:45 | 显示全部楼层
成熟的游戏引擎一般有渲染引擎、物理引擎(网游一般不需要)、碰撞检测系统、音效、脚本引擎、人工智能、网络模块以及场景管理;同时一般还需要一整套工具链,如动作编辑器、动画编辑器、粒子编辑器、特效编辑器、UI编辑器等等(随手写的,不全面)。这只是工具部分,人员上又各有分工。
物理引擎通过接口改变游戏中结点的属性,渲染模块将结点的这些属性表现出来。
发表于 2021-11-16 18:53 | 显示全部楼层
先写一个向量类,再写一个矩阵类,再学习一下简单的GDI+,写出一个旋转立方体后,你就知道写游戏需要什么了。
发表于 2021-11-16 19:03 | 显示全部楼层
从开发角度看:渲染,输入,轮询,数据读取保存
从设计角度看:机制,挑战,目标和奖励
发表于 2021-11-16 19:06 | 显示全部楼层
很简单,哈哈,用u3d,恰巧你又和我一样是个会ps,3dmax的码农就全齐了,就差一个垃圾策划了
发表于 2021-11-16 19:08 | 显示全部楼层
学cocos2dx吧,有C++的基础的话,一周的时间就可以做出一个比较不错的2D游戏。什么场景切换啊、动画啊、粒子特效啊、碰撞检测啊都有。如果你以前学过ogre3d,再回过头来学cocos2dx,整个过程就像读小人书一样快乐。
发表于 2021-11-16 19:09 | 显示全部楼层
Fascinating aspect of online casino games really makes these games very attractive. As a player, you can expect a competitor exhibitors from around the world. Now, you are not required to travel to the location of these games are played. It has become easier to find <a href=" http://www.sky3888a.com/info/singleplayergame/type/slot/cn/老虎机游戏"> casino games
</a> website and use it without any trouble .
懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )

GMT+8, 2024-11-29 00:50 , Processed in 0.072490 second(s), 23 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表