什么是最平台友好的编码语言?

时间:2009-09-06 08:44:55

标签: programming-languages cross-platform portability

假设我想要创建FPS游戏,让我们说克隆孤岛危机所以每个人都能理解什么类型的图形&我追求的表现。编写这个游戏的最佳代码是什么,所以尽可能简单地将它移植到所有常见平台?当然,我希望应用程序能够感受并成为平台的本机。这也意味着应该很容易利用Snow Leopard的新功能,如OpenCL和Windows 7的新功能。我意识到GUI已经针对不同的平台单独编写,这不是问题。

所以我的问题是,这项工作的最佳语言是什么。我不是在寻找一对一的解决方案,而是更像核心的语言。我想有一种方法可以说,如果你需要将同一个程序移植到Windows,OS X& Linux呢? Java是不可能的。

11 个答案:

答案 0 :(得分:20)

C(现在有些填充达到15个字符)

答案 1 :(得分:12)

你见过布鲁斯兄弟吗?在电影中,杰克和埃尔伍德进入了一个酒吧,做了一个演出,问他们喜欢什么样的音乐,酒吧背后的女人回答:

  

我们有两种:国家和   西部。

这与这个问题有什么关系?那么,你想要创建高性能的3D图形,你问的是使用什么语言?

  

我们有两种:C和C ++。

答案 2 :(得分:3)

C ++。对于平台相关的东西,你可以避免数以百万计的“if #define”,而是使用继承(每个平台和客户端使用/知道抽象基类的派生类)。对性能关键部分可以做一些例外。

还有许多用于跨平台开发的库。

答案 3 :(得分:3)

您可能希望C具有较低级别的图形性能,可以是Visual C ++支持的C89变体,也可以使用MinGW和gcc C99(VC ++ 2008不支持C99代码中for循环的声明,这非常烦人,但是他们多年来没有在C ++中做到这一点。)

不可否认,如果您正在使用GNU并使用自己的GUI运行全屏,那么它就不再是跨平台了。

你也可能想要Lua或Python或其他脚本语言,它们可以很好地调用C来提供一种合理的更高级别的游戏控制方式。

答案 4 :(得分:2)

我真的建议您使用Lua进行任何脚本编写。它是一个ANSI C库,因此这意味着:它可以在(至少大多数)C ++编译器中编译,并且:如果有平台的C编译器,那么你可以使用lua。它可以显着扩展您游戏的灵活性,如果您愿意,也可以让玩家自定义它!

答案 5 :(得分:2)

个人而言,Java可能是最容易学习的东西之一。虽然Java没有那么棒的图形系统,如果你要编写“GAMES”,它需要更多代码来支持图形显示,如果你要编写一个网站,虽然选择JavaScript,CSS和HTML / 5 。或者只使用这些语言中的一种通常最好选择两种最适合您舒适的语言... =)对于FPS,我建议初学者使用Java,如果您对想要创建的内容有很好的理解,那么一个更复杂的游戏,然后使用C#或C ++,只是因为如果你想让更复杂的游戏在多平台上运行,它会使用更少的硬件。

答案 6 :(得分:1)

无论你使用什么,你都必须编写特定于平台的代码。 Java或其他解释语言(Python是我个人的偏好)等语言将允许您使用许多共性。但是,由于它不是一个快速而简单的项目,我建议使用</intelligent-looking-padding> C或C ++。

编辑:不一定要为每个平台从头开始编写GUI。检查wxWidgets

答案 7 :(得分:1)

大多数跨平台游戏都是用C ++编写的,因为它非常好 - 性能明智;它比C用户更友好。游戏需要最大的速度和速度。效率!

您可以隐藏您编写的某些抽象和API背后的平台特定内容,以便您可以轻松移植它。您还可以使用跨平台框架(如Qt或wxWidgets)作为窗口和窗口。 GUI元素。向非关键部分添加脚本语言也很不错。 :)

答案 8 :(得分:0)

正如大多数人在这里所指出的那样,你几乎肯定需要最终的图形C / C ++,特别是对于你的高性能(图形)要求。

然而,您可能有机会在脚本语言中开发“核心”,而脚本语言又很容易嵌入到C / C ++应用程序中。在这种情况下,要查看的前2种脚本语言将是Lua和Tcl。

特别是Lua尤其用于魔兽世界,我确信。另一方面,Tcl有更多“电池包含”(图书馆)。

答案 9 :(得分:0)

我也推荐C ++用于大型跨平台项目。但我认为你使用的构建工具也很重要。例如,SConsCMake可以为Windows / Linux / MacOS下的大多数编译器创建项目文件/ makefile。

答案 10 :(得分:0)

C是一种很好的语言,但通常你需要一种面向对象语言来编程游戏。如果您正在寻找速度,请使用C ++,但如果您没有太多编程经验,请使用python。查看sfml和pygame库。