我可以在一个 Linux 发行版上开发 Windows、macOS 和 Linux 软件或游戏吗?

Iqb*_*lah 9 linux development games windows macos

我是新来的,对 Linux 和软件开发还没有很多经验和知识。

我想开始学习软件和游戏开发,目前我正在构建一台 PC 以实现这一目标。我想开发支持三大平台(Windows、macOS 和 Linux)的软件或游戏。

我可以在一个操作系统上顺利开发支持三大平台的软件或游戏吗?就像如果我使用一个 Linux(其中有很多开发工具)并且想要开发也支持 Windows、macOS 和其他 Linux 发行版的软件或游戏,我可以做到这一点而不会在以后遇到诸如切换回操作系统之类的问题吗?来回测试它是否有效?或者我是否只需要安装所有操作系统(以及每个操作系统中的所有开发工具)并在每个操作系统中构建它们以获得每个支持?

Whi*_*Owl 13

是的,当然可以。

为此,您需要一种可以在所有目标机器上理解的通用语言。一旦你有了这样的语言 - 在它上面编写一个软件,而不使用特定于操作系统的代码,你就完成了。

你猜怎么着——这样的语言有很多,从 C、C++、Java 等等。您还可以使用多平台框架(语言加上一组库和工具)来完成多平台项目。

更好的是,有专为多平台游戏创建而设计的框架。目前,Unity 占据该列表的榜首。它将为您提供许多特定于游戏的功能并支持几乎所有现代操作系统。Win/Max/Linux - Unity 的免费版本,以及商业版本中的十几个其他版本(包括 Xbox/PlayStation/等)。

  • 将 C/C++ 定义为通用语言有点误导。核心语言是通用的,这就是 C 的设计初衷。然而,如果不与操作系统交互,任何实际的 C 程序都不会真正存在,而且 Windows 从未与 Linux 存在任何真正的重叠。编译后的 C 程序不可在操作系统之间移植,并且在 Linux 平台上对 Windows 进行交叉编译非常棘手。这与 Java 完全不同,Java 中“编译”的程序在“JVM”上运行,并且操作系统特定的 JVM [Java 虚拟机] 提供操作系统特定的样板以允许一个程序运行。 (29认同)
  • 我认为这个答案缺少一个主要的症结所在。至少如果没有其他环境(Windows 和 MacOS)的虚拟机,就不可能在这些系统上进行测试。这是灾难的根源。任何开发跨平台的人都应该能够以某种方式访问​​他们计划发布的所有环境。问题是问他们是否特别需要。 (10认同)
  • @Philip Couling:这就是为什么这里推荐像 Unity 这样的框架的原因。使用 Qt,您还可以拥有独立于平台的程序(在使用为 MacOS 制作并在 Windows 和 Linux 上编译的程序时进行测试)。 (2认同)

Dan*_*Niu 8

@WhilteOwl 的回答非常好,我想补充一些。

你也可以尝试学习HTML5/ES6/CSS3这些Web编程技术。您可以使用它们来开发一种跨平台软件,可以在台式机、平板电脑、电视机和手持设备上运行。

您可以将其托管在网络上,以节省用户下载内容,并且您可以使用ElectronJS 框架来构建可执行文件。

HTML 和 JavaScript 具有我认为最简单的学习曲线,尽管后端安全编程是一个困难的话题。

我相信H5 生态系统比 Unity 有更多免费的可重用组件,并且为该平台进行开发绝对不需要使用专有工具。

简单的2D游戏可以使用Canvas API来开发,3D游戏则有WebGL和WebGL2的支持。还有诸如Three.js之类的框架。