为了可移植性,在游戏引擎的API上构建API是一个好主意吗?

章鱼

首先让我给出一些背景知识:

我对构建模块化游戏感兴趣。这是从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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript-在闭包内使用函数构造函数不是一个好主意吗?

来自分类Dev

用薄的Cache层覆盖jQuery的$ .ajax是一个好主意吗?

来自分类Dev

由heroku上的node.js服务的静态文件-这是一个好主意吗?

来自分类Dev

在HttpContext.Current上发送覆盖响应不是一个好主意吗?

来自分类Dev

组合实例VBO是一个好主意吗?

来自分类Dev

为文本标签创建CSS类不是一个好主意吗?

来自分类Dev

提取大量String文字是一个好主意吗?

来自分类Dev

在开发过程中使用docker运行前端构建过程不是一个好主意吗?

来自分类Dev

为API身份验证添加UTC时间戳是一个好主意吗

来自分类Dev

在静态文件上分块使用Transfer-Encoding:是一个好主意吗?

来自分类Dev

git rebase-压缩初始提交通常不是一个好主意吗?

来自分类Dev

contextlib.redirect_stdout总是一个好主意吗?

来自分类Dev

对于最低API级别为21的项目,放弃appcompatpat是一个好主意吗?

来自分类Dev

一个好主意是为此使用复合模式吗?

来自分类Dev

在繁忙的构建节点上通过NFS托管Yocto SSTATE_MIRROR-一个好主意?

来自分类Dev

使用NTFS压缩是一个好主意吗?

来自分类Dev

一起使用HtmlCleaner和Jsoup是一个好主意吗?

来自分类Dev

在Ubuntu上这是个好主意吗?

来自分类Dev

使用C#和XNA学习游戏编程是一个好主意吗?

来自分类Dev

绑定PasswordBox密码不是一个好主意吗?

来自分类Dev

在HttpContext.Current上发送覆盖响应不是一个好主意吗?

来自分类Dev

组合实例VBO是一个好主意吗?

来自分类Dev

别名cd推送-这是一个好主意吗?

来自分类Dev

为了可移植性,在游戏引擎的API上构建API是一个好主意吗?

来自分类Dev

为API身份验证添加UTC时间戳是一个好主意吗

来自分类Dev

将操作系统安装在固态驱动器上是一个好主意吗?

来自分类Dev

检查每个细节上的SharedPreferences是一个好主意

来自分类Dev

一个好主意是为此使用复合模式吗?

来自分类Dev

设计GraphQL API时,“分组类型”是个好主意吗?

Related 相关文章

  1. 1

    Javascript-在闭包内使用函数构造函数不是一个好主意吗?

  2. 2

    用薄的Cache层覆盖jQuery的$ .ajax是一个好主意吗?

  3. 3

    由heroku上的node.js服务的静态文件-这是一个好主意吗?

  4. 4

    在HttpContext.Current上发送覆盖响应不是一个好主意吗?

  5. 5

    组合实例VBO是一个好主意吗?

  6. 6

    为文本标签创建CSS类不是一个好主意吗?

  7. 7

    提取大量String文字是一个好主意吗?

  8. 8

    在开发过程中使用docker运行前端构建过程不是一个好主意吗?

  9. 9

    为API身份验证添加UTC时间戳是一个好主意吗

  10. 10

    在静态文件上分块使用Transfer-Encoding:是一个好主意吗?

  11. 11

    git rebase-压缩初始提交通常不是一个好主意吗?

  12. 12

    contextlib.redirect_stdout总是一个好主意吗?

  13. 13

    对于最低API级别为21的项目,放弃appcompatpat是一个好主意吗?

  14. 14

    一个好主意是为此使用复合模式吗?

  15. 15

    在繁忙的构建节点上通过NFS托管Yocto SSTATE_MIRROR-一个好主意?

  16. 16

    使用NTFS压缩是一个好主意吗?

  17. 17

    一起使用HtmlCleaner和Jsoup是一个好主意吗?

  18. 18

    在Ubuntu上这是个好主意吗?

  19. 19

    使用C#和XNA学习游戏编程是一个好主意吗?

  20. 20

    绑定PasswordBox密码不是一个好主意吗?

  21. 21

    在HttpContext.Current上发送覆盖响应不是一个好主意吗?

  22. 22

    组合实例VBO是一个好主意吗?

  23. 23

    别名cd推送-这是一个好主意吗?

  24. 24

    为了可移植性,在游戏引擎的API上构建API是一个好主意吗?

  25. 25

    为API身份验证添加UTC时间戳是一个好主意吗

  26. 26

    将操作系统安装在固态驱动器上是一个好主意吗?

  27. 27

    检查每个细节上的SharedPreferences是一个好主意

  28. 28

    一个好主意是为此使用复合模式吗?

  29. 29

    设计GraphQL API时,“分组类型”是个好主意吗?

热门标签

归档