为了便携性,在游戏引擎的 API 上构建 API 是个好主意吗?
Is it a good idea to build an API over a game engine's API for the sake of portability?
让我先介绍一下上下文背景:
我有兴趣构建一款旨在模块化的游戏。这开始于 Unity3D 中的一个项目。当我编写游戏代码时非常接近 Unity3D 的 API,我想知道,我是否应该为游戏构建自己的 API 以防我 wanted/had 离开 Unity3D将来?(到另一个游戏引擎,或者更好的是,直接使用 OpenGL/DirectX)
然后我有兴趣将我的游戏转移到 Unreal Engine 4,所以我尽力抽象我的游戏,其中大部分明确使用 Unity3D 的 API 到它自己的 API. class 仍然依赖于 Unity3D 的一个例子是我的 Player
class (GitHub)
//Vector and GameObject are both Unity3D classes
private Player(PlayerID id, Vector position)
{
GameObject playerPrefab = Resources.Load<GameObject>("Player");
playerObject = GameObject.Instantiate(playerPrefab, position, Quaternion.identity) as GameObject;
playerObject.AddComponent<UnityObjectScript>().Bind = this;
playerObject.name = "Player " + id.ToString();
coreObject = playerObject.transform.FindChild("Core").gameObject;
bodyObject = playerObject.transform.FindChild("Body").gameObject;
players[(int)id] = this;
UnityLink(playerObject);
}
长话短说,我放弃了对已经制作的内容进行抽象并决定重写它。不管怎样,这一切的重点是:
是否值得在已经存在的 API(游戏引擎)之上构建我自己的 API?
虽然我觉得没有任何其他选择可以实现我的 'modular' 游戏愿景,但我制作 API 的主要顾虑是:
间接费用是否值得(如果有的话)? 或者更确切地说,
在我的情况下 'overkill' 是在另一个 API 之上建造一个 API 吗?
Should I have built my own API for the game in case I wanted/had to
move off Unity3D in the future?
如果你想在未来离开你现有的游戏引擎,你应该;)如果你不这样做,你就不应该;)
但是添加抽象层肯定会减慢速度。慢的程度取决于您的 API 设计。
Is it 'overkill' to have an API built over another API in my case?
如果您以后不想转移到另一个游戏引擎 - 是的。
让我先介绍一下上下文背景:
我有兴趣构建一款旨在模块化的游戏。这开始于 Unity3D 中的一个项目。当我编写游戏代码时非常接近 Unity3D 的 API,我想知道,我是否应该为游戏构建自己的 API 以防我 wanted/had 离开 Unity3D将来?(到另一个游戏引擎,或者更好的是,直接使用 OpenGL/DirectX)
然后我有兴趣将我的游戏转移到 Unreal Engine 4,所以我尽力抽象我的游戏,其中大部分明确使用 Unity3D 的 API 到它自己的 API. class 仍然依赖于 Unity3D 的一个例子是我的 Player
class (GitHub)
//Vector and GameObject are both Unity3D classes
private Player(PlayerID id, Vector position)
{
GameObject playerPrefab = Resources.Load<GameObject>("Player");
playerObject = GameObject.Instantiate(playerPrefab, position, Quaternion.identity) as GameObject;
playerObject.AddComponent<UnityObjectScript>().Bind = this;
playerObject.name = "Player " + id.ToString();
coreObject = playerObject.transform.FindChild("Core").gameObject;
bodyObject = playerObject.transform.FindChild("Body").gameObject;
players[(int)id] = this;
UnityLink(playerObject);
}
长话短说,我放弃了对已经制作的内容进行抽象并决定重写它。不管怎样,这一切的重点是:
是否值得在已经存在的 API(游戏引擎)之上构建我自己的 API?
虽然我觉得没有任何其他选择可以实现我的 'modular' 游戏愿景,但我制作 API 的主要顾虑是:
间接费用是否值得(如果有的话)? 或者更确切地说,
在我的情况下 'overkill' 是在另一个 API 之上建造一个 API 吗?
Should I have built my own API for the game in case I wanted/had to move off Unity3D in the future?
如果你想在未来离开你现有的游戏引擎,你应该;)如果你不这样做,你就不应该;)
但是添加抽象层肯定会减慢速度。慢的程度取决于您的 API 设计。
Is it 'overkill' to have an API built over another API in my case?
如果您以后不想转移到另一个游戏引擎 - 是的。