Opengl es 将Wii和/或PSOne游戏移植到OpenGL ES

Opengl es 将Wii和/或PSOne游戏移植到OpenGL ES,opengl-es,porting,wii,Opengl Es,Porting,Wii,我被要求调查将Wii游戏和一些(索尼)PSOne游戏移植到OpenGL ES(你能猜到是什么平台吗?) 我以前从未进行过这样的游戏端口(并将聘请人员进行),但我想了解这个过程 Wii使用OpenGL吗?如果没有,它使用什么?移植到OpenGL/OpenGL ES有多容易 是否有任何资源/书籍/博客可以帮助我理解这个过程 我的公司必须成为Wii的官方开发者吗?如果是,我从哪里开始这个过程 游戏控制台不使用OpenGL,而是使用自己的自定义库。主要原因是它们速度很慢,而且内存很少。所以你需要挤出每一

我被要求调查将Wii游戏和一些(索尼)PSOne游戏移植到OpenGL ES(你能猜到是什么平台吗?)

我以前从未进行过这样的游戏端口(并将聘请人员进行),但我想了解这个过程

  • Wii使用OpenGL吗?如果没有,它使用什么?移植到OpenGL/OpenGL ES有多容易
  • 是否有任何资源/书籍/博客可以帮助我理解这个过程
  • 我的公司必须成为Wii的官方开发者吗?如果是,我从哪里开始这个过程

  • 游戏控制台不使用OpenGL,而是使用自己的自定义库。主要原因是它们速度很慢,而且内存很少。所以你需要挤出每一点你能得到的性能。这意味着:自定义代码。通常,您会得到一个带有开发人员工具包的框架,它可以让您开始工作,然后,您就可以从中构建代码。最终,您将开始用自己的特殊代码替换开发工具包中的部件,以获得所需的所有速度和特殊效果

    PSOne游戏在PS3上如此丑陋的原因在于,尽管开发人员可以访问源代码,但收入并不能证明触碰代码是合理的

    这就是游戏开发如此昂贵的原因之一:每一款游戏(或多或少)都是一款全新的产品。有时候,游戏公司可以重用上一个版本中的一些代码,但更多的时候,他们不得不重新开发所有的东西。他们彼此也不怎么交谈

    近年来,工具包变得更加复杂和强大,你可以获得完整的游戏引擎(具有各种效果和3D支持),但每个引擎都是一种完全不同的野兽,因此你甚至不能将代码从引擎a复制到引擎B

    今天,媒体内容(视频、音频和渲染序列)非常昂贵,以至于实际的游戏引擎通常只是一个小细节,所以这不会很快改变

    最终结果:如果你想移植一个游戏,为硬件编写一个模拟器(它通常非常简单,允许你运行各种游戏)

    [编辑]要为Wii开发软件,请参见此处:


    对于Wii仿真器,请参见

    当我还是一名新的游戏程序员时,我移植了一些游戏,从使用一个版本的引擎到一个更新的版本(在这个版本中,向后兼容性既不被忽视也不被追求)。甚至复制(可能重命名)这些文件并将它们放在新项目中的一个家中都是一点工作。随后,程序如下:

    • 重新编译
    • 修复数百个错误中的许多[在许多地方,同一个错误反复出现]

    • 将新游戏引擎的调用“连接”到旧代码中的相应调用
    • 从旧代码到新游戏引擎的“连线”函数调用
    • 处理其他奇怪的事情(例如,在旧游戏引擎中,2d游戏本身会“旋转”纹理;在新版本中,引擎会这样做(在特定平台上))
    • 而且,虽然我记不清楚这一点,但它可能与一堆
      #ifdef
      混合在一起,将代码的某些部分整理出来,以便实际编译,并可能创建稍后填充的函数存根
    我记得,我花了三四天的时间才编译出了一些东西。(但是,当我们将其他游戏从旧版本移植到新版本时,它确实有所帮助!)

    任务的大小将取决于您得到的代码是什么样的。如果它有通用的3D调用,你可以截获它——添加一个thunking层——那么你就可以做生意了。它取决于代码中的抽象级别。如果它表现良好,并且具有诸如“RenderModel”和“RenderWorld”之类的调用,则可以替换这些函数,甚至替换它们所使用的结构。如果到处都在进行绘图,而且调用更像是“绘制多边形”和“绘制线”或“使用高度优化的数据结构绘制”,那么您可能要经历一段漫长的过程

    你不应该需要Wii开发工具包。有时,验证您收到的代码是否确实在原始环境中编译(并且与装运代码匹配!)是件好事,但有时您可以信以为真,让它在新环境中工作


    最后,我不认为Wii使用OpenGL,我真的不知道该向您指出哪里可以获得进一步的帮助。

    您可能想做的是从设计游戏的架构开始,为新游戏编写详细的规范

    一旦您有了这个,因为您将重写代码,您可能会发现一些不处理控制台的业务逻辑可以移植。但是,任何涉及I/O、用户交互或图形/声音的内容都将被重写,所以您最好从头开始

    规范非常重要,确保您了解当前游戏的工作方式,以便新端口能够提供相同的用户体验(如果需要的话)


    如果这是体验的一部分,你可能想保留相同的bug,比如,如果我知道在Wii中我可以跳下并从墙上弹下来安全着陆,那么如果在新版本中我不能做到这一点,那可能会很麻烦。

    将PS1游戏移植到iPhone上将是一项相当艰巨的任务,它们的工作方式截然不同。我相信这是可行的,但要将所有定点数学和缺乏基于Z缓冲区的渲染替换为真正的图形芯片,需要做大量的工作

    Wii会容易得多。Wii API与OpenGL非常相似。然而,Wii有一些非常好的固定功能,这在任何其他基于GL的平台上都是不可用的。应该是可行的,不过

    我不确定我还能说什么。多年来签署了太多的NDA,无法100%确定我能说什么和不能说什么;)