C++ 游戏vs游戏引擎?
我想知道是否有人能告诉我游戏和游戏引擎是如何融入游戏开发的。具体来说,我的意思是,游戏引擎实际上没有游戏。所以我不清楚的是,游戏开发人员是否构建了一个引擎,然后创建了一个从引擎继承的新类,这个类就成为了游戏 例:C++ 游戏vs游戏引擎?,c++,C++,我想知道是否有人能告诉我游戏和游戏引擎是如何融入游戏开发的。具体来说,我的意思是,游戏引擎实际上没有游戏。所以我不清楚的是,游戏开发人员是否构建了一个引擎,然后创建了一个从引擎继承的新类,这个类就成为了游戏 例: 基本上我不清楚游戏代码在引擎中的位置。 < P>游戏引擎通常考虑可以拔出的代码,并用它来改变它自己的游戏。p> class CoolDiscoLight : public Engine::Light { }; ... //and somewhere in the source "C
基本上我不清楚游戏代码在引擎中的位置。 < P>游戏引擎通常考虑可以拔出的代码,并用它来改变它自己的游戏。p>
class CoolDiscoLight : public Engine::Light
{
};
...
//and somewhere in the source
"CoolDiscoLight cdl = new CoolDiscoLight etc..."
EngineInstance.AddLight(cdl);
...
正如前面所述,如何准确地使用引擎代码取决于引擎本身
通常,您将从引擎库中引用类并使用它们。执行此操作的方式将由发动机决定
class CoolDiscoLight : public Engine::Light
{
};
...
//and somewhere in the source
"CoolDiscoLight cdl = new CoolDiscoLight etc..."
EngineInstance.AddLight(cdl);
...
有些可能提供比其他更多的功能,有些则侧重于模块性
通常情况下,一个完整的游戏引擎只需将不同的子引擎连接在一起,比如一个图形引擎,它可以处理实际绘制到屏幕上的图形。模拟游戏世界的物理引擎。用于UI和菜单的UI引擎。一种网络引擎,用于处理嵌入式工作
“游戏引擎”可能直接内置了这些组件,或者它可能只是包装了另一个引擎/库,以便您以与引擎其余部分类似的方式使用它。游戏和实际游戏引擎之间的区别在于架构。游戏逻辑是特定于一个游戏的,而游戏引擎是可以重用的。就像操作系统为应用程序提供实用程序一样,游戏引擎也为游戏代码提供同样的功能
class CoolDiscoLight : public Engine::Light
{
};
...
//and somewhere in the source
"CoolDiscoLight cdl = new CoolDiscoLight etc..."
EngineInstance.AddLight(cdl);
...
游戏引擎通常具有不同的API,用于:
- 加载音频、纹理、3d模型等多媒体数据
- 提供游戏循环并触发由用户输入引起的各种事件
- 联网
- 使用灯光、粒子效果或凹凸贴图进行图形渲染和各种技术,使游戏看起来更漂亮
- 音频
- 人工智能
- 允许定义游戏规则、游戏规则和游戏逻辑的API
- id软件在几年后将游戏引擎发布为GPL。通过阅读他们的代码,您将学到很多:。我还建议大家看看敌方领土,它是基于地震3代码:李>
是的,他们说了什么。我要补充的是,游戏引擎通常是为一种游戏风格而设计的。飞行模拟器的需求与地震大不相同。像《遗忘》这样的游戏正在将这些需求合并在一起,因此情况可能很快就不是这样了。这也取决于引擎的“级别”。 我的意思是,引擎是从某种游戏风格中抽象出来的。可能会有一些小东西,比如一个专注于FPS的引擎,可能是为了优化室内区域、室外区域以及高速飞行而设计的。因此,即使引擎可能未锁定到游戏,某些游戏类型也会更容易实现某些引擎 但是如上所述,游戏不会继承引擎,它更可能利用它的功能,并且您可能会将组件附加到它的现有组件。或展开作为发动机一部分的部件class CoolDiscoLight : public Engine::Light { }; ... //and somewhere in the source "CoolDiscoLight cdl = new CoolDiscoLight etc..." EngineInstance.AddLight(cdl); ...
更可能的是,仅通过从light扩展并重载正确的函数,level editor等就可以访问light,因此您根本不会通过源代码创建它们。事实上,我无法区分引擎和框架之间的区别。只是两个不同的名字 真正奇怪的是,游戏引擎完全是关于客户端的,似乎您不需要服务器框架,而纯套接字就足够了 但事实并非如此,至少应该有一些框架,如rails或django,以简化服务器开发。没有看到游戏服务器在可伸缩性、广播和其他方面比web开发更困难 有一个商业解决方案叫做smartfox服务器,还有一个新的开源解决方案叫做pomelo框架,我两个都试过了,pomelo要好得多。网易是它的家 游戏开发者是否构建一个引擎,然后创建一个新类 从哪个引擎继承成为游戏 视情况而定。大多数情况下,开发者会利用现有的游戏引擎,但有时不会,因为不存在想要的效果 我尝试了很多不同的游戏引擎。他们中的大多数人的行为如下: - 通过扩展精灵的基本实体类来定义精灵和声音元素
- 定义组以便于管理
- 为IO和精灵之间的交互定义房间或世界
- 在诸如“update()”等常见函数中编程逻辑(该函数将按帧调用)
- 修改程序入口,进入第一个“房间”或“世界”(可以是菜单) 因此,游戏引擎的主要任务是定义如何使用屏幕