首先让我给出一些背景知识:
我对构建模块化游戏感兴趣。这是从Unity3D中的一个项目开始的。当我将游戏编码为非常接近Unity3D的API时,我想知道,如果将来我希望/必须退出Unity3D,我是否应该为游戏构建自己的API?(对于另一个游戏引擎,或者更好的是,直接使用OpenGL / DirectX)
然后,我对将游戏移至虚幻引擎4感兴趣,因此我尽了最大的努力来抽象我的游戏,其中大部分游戏明确地将Unity3D的API用作其自己的API。我的Player
班级(GitHub)仍然是一个依赖Unity3D的班级示例
//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是否值得?
虽然我觉得没有其他选择可以实现我对游戏的“模块化”愿景,但是制作API的主要考虑因素是:
间接费用罚款是否值得(如果有)?更确切地说,
在我的情况下,在另一个API之上构建一个API是“过度杀伤力”吗?
我是否应该为游戏创建自己的API,以防将来希望/不得不退出Unity3D?
如果您将来想退出现有的游戏引擎,则应该这样做;)如果您不希望使用,则不应该;)
但是添加抽象层肯定会使速度变慢。慢度取决于您的API设计。
在我的情况下,在另一个API之上构建一个API是“过度杀伤力”吗?
如果您不想将来再使用其他游戏引擎-是的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句