什么是构建针对Web和本地语言的游戏框架的良好平台?

fuz*_*Tew 5 javascript c++ lisp opengl flash

我想开发(或者发现,如果已经在开发中)一个支持加速图形和声音的框架,该框架构建在一个足够灵活的系统上,可以编译成以下内容:

  • 原生ppc/x86/x86_64/arm二进制文件或编译它们的语言
  • JavaScript的
  • ActionScript字节码或编译它的语言(ActionScript 3,Haxe)
  • 可选Java

我想,例如,创建一个API,我可以打开窗口并进行类似OpenGL的调用,框架以相对有效的方式将其映射到带有画布对象的WebGL,Flash中的3d图形,带有EGL的OpenGL ES 2,或者X11,Windows或Cocoa窗口中的桌面OpenGL.

到目前为止,我一直在研究这些途径:

  • Haxe建立游戏库
    • 优点:
      • 存在PHP,JavaScript,ActionScript字节码,C++的目标
      • 高级,面向对象的语言
    • 缺点:
      • 不支持finally {}块或析构函数,使资源清理变得困难
      • C++目标不允许室用于产生高度优化库 - 外国功能接口要求所有原始类型的包装对象装箱,仿佛写入绑定的脚本语言; 这些对于实时图形和音频来说是不合适的,尤其是导出低级功能.
      • 似乎还不成熟
  • 使用C预处理器创建翻译器,完全用宏编写程序
    • 优点:
      • CPP广泛且易于使用
    • 缺点:
      • 这是一项艰巨的任务,可能是工作的错误工具
      • CPP实现在功能支持方面差异很大(例如,尽管声称符合C99,但xcode cpp没有可变参数宏)
      • 在这条路线上几乎没有优化空间
  • 使用llvm支持多个后端,将c/c ++定位到Web语言
    • 优点:
      • 可以用c/c ++编写代码
      • LLVM是一种非常成熟的高度优化编译器,可执行全局内联
      • 动作脚本(炼金术)和javascript(emscripten)存在目标
    • 缺点:
      • Actionscript目标是封闭源,非维护和错误.
      • Javascript目标不使用HTML5的功能进行适当的优化(例如带有类型数组的线性内存),并且不成熟
      • LLVM目标必须从低级字节码转换,因此高级构造将丢失,并且通过翻译单个指令来创建膨胀的不可读代码,这对于未准备好的JIT进行优化可能更加困难."jump"指令会导致没有"goto"语句的语言出现问题.
  • 使用libclang编写从C/C++到Web语言的翻译器
    • 优点:
      • 一个漂亮的解析库,可以轻松访问代码结构
      • 可以用C/C++编写代码
      • 赞助了Apple的开发者工作
    • 缺点:
      • 不完整的; 当前功能集针对IDE.基本运算符是未公开的,必须从返回的AST元素中手动解析以进行标识.
      • 在编译之前翻译代码可能会放弃在c/c ++中假设的优化,例如内联.
  • clang创建新的代码生成器以转换为Web语言
    • 优点:
      • 可以用C/C++编写为libclang
    • 缺点:
      • 没有API; 代码结构不稳定
      • 比使用libclang要大得多的工作; 铿锵的内脏是复杂的
  • Common Lisp中构建游戏库
    • 优点:
      • 灵活,完善的语言
      • 广泛的内省应该可以轻松编写翻译人员
      • 译员至少存在于javascript中
    • 缺点:
      • 不熟悉的语言
      • 没有标准化的库函数,各种各样的实现

我应该追求以下哪些途径?你知道其他任何系统或任何可能有用的系统吗?

像这样的一般项目是否已存在于某个地方?

谢谢你的任何意见.

Pot*_*ert 0

Blitz Research ( http://www.blitzbasic.com )目前正在开发一种语言,尽管发布日期已经临近,但它尚未发布。

主要开发人员的博客在这里: http://marksible.blogspot.com/2010/05/hi-ok-heres-plan-i-am-currently-working.html

该语言已被宣布为免费和开源(尽管游戏模块将作为单独的产品出售)。

目标平台包括 Windows、Linux、MacOSX、android、iPhone、XNA、flash 和 HTML5

这可能正是您正在寻找的。