将我的 Unity 游戏转换为 .deb 文件?

将我的 Unity 游戏转换为 .deb 文件?

我想以更简单的方式为 ubuntu(和其他基于 debian 的发行版)发布我的游戏,为此,我希望为其制作一个 .deb 安装程序。尽管我尽了最大努力,但我找不到任何简单的教程和/或工具(主要是没有适用于 Windows 10 的工具)。

有谁知道有什么工具和/或方法可以轻松地做到这一点?

我不介意安装虚拟机来制作 .deb,但最好通过 Windows 进行。我的游戏被导出为 .x86_64 文件(连同其他 2 个 .so 文件和一个文件夹)

答案1

我没有使用过 debs,但我知道发布游戏的 snap 包非常容易:https://snapcraft.io/blog/publish-your-unity-games-in-the-snap-store

答案2

真实的方式,以及简单快速且(非常?)肮脏的方式。对于后者,你应该手边有一台 Ubuntu GNU/Linux 机器。西弗吉尼亚海岸就足够了。但是,拥有完整的 VM 将允许您测试 deb 本身的安装以及软件包安装后的图形部分。即当用户按下徽标键或单击屏幕左下角的“应用程序启动器”时,游戏是否会出现在应用程序列表中?VM 快照可以轻松地将 VM 恢复为已知状态并再次尝试安装。所以也许,你应该使用 WSL 进行打包,并运行完整的 VM 来测试原始 Ubuntu 桌面系统上的安装。

首先在你的 Linux 机器上安装 fakeroot。

sudo apt-get update && sudo apt-get install fakeroot

然后你就不再需要 sudo 了。使用你的普通 Linux 帐户创建一个名为的目录packaging-your-game,并在该目录中创建如下所示的文件树结构。还要记住,你创建的任何文本文件都必须是 utf-8 编码的,必须使用 unix 行尾(单个换行符\n),并且不得有物料清单。Linux 文本编辑器很好,但如果您使用的是 Windows 编辑器,请检查设置。

packaging-your-game
├── DEBIAN
│   └── control
├── opt
│   └── your-game
│       ├── bin
│       │   └── your-game-launcher
│       ├── lib
│       │   ├── lib-foobar.so
│       │   ├── lib-your-game.so
│       │   └── your-game.x86_64
│       └── share
│           └── icon
│               ├── your-game.png
│               └── your-game.svg
└── usr
    └── local
        └── share
            └── applications
                └── your-game.desktop

控制文件看起来应该是这样的

Package:        yourgame
Version:        2.0-1
Section:        game
Priority:       optional
Architecture:   amd64
Maintainer:     your name <[email protected]>
Description:    Monster killer FPS.
 This is a very spiffy FPS game in wich you
 must kill zombies and other monsters coming
 form everywhere at an increasing rate.
 .
 This game requires a very fast CPU, something like
 the latest i7 or ryzen 7000 CPU and at least 3 graphic
 cards. If not, your experience of the game will
 be disappointing
 .
 Please note that this game is not suited for children
 under 20 as the monsters are very scary. Also the
 flashing lights could permanently damage your brain,
 whatever your age.
Depends:        libgl, libx11-foobar, other, package, names, with, optional, version (>4.5), for, example

版本 :2.0是游戏本身的版本。1是软件包的版本。如果您发布的软件包有缺陷,您可能需要在较新的软件包中发布相同版本的游戏。在这种情况下,您只需更改软件包版本,字段Version将为2.0-2。另一方面,每当游戏版本发生变化时,更改版本并将软件包版本重置为 1。例如2.0.1-13.0-1等等...

Depends 字段:您必须找到所需的软件包名称列表。查看类似的软件包,或查看文件/var/lib/dpkg/status(它列出了所有已安装的软件包)。明智地选择依赖项,它必须反映所需的图形/声音/操纵杆/任何库,但您不能强加你的自己的选择。假设 libGraphicFoo 由软件包 libgraphicfoo-gnu 和 libgraphicfoo-nongnu 提供,您的软件包不应依赖于某个特定的实现,除非它只适用于其中之一。在 libgraphicfoo 库有多个实现的情况下,可能存在一个名为 libgraphicfoo 的虚拟软件包,您的软件包可以依赖它。用户将安装 libgraphicfoo-gnu 或 libgraphicfoo-nongnu。

您也可以简单地删除此字段,等待人们报告游戏无法运行,然后发布带有更正的依赖项列表的软件包的较新版本。;-)

yourgame.desktop 文件将如下所示。这尚未经过测试,因此请尝试、测试、调整:

[Desktop Entry]
Type=Application
Name=yourgame
GenericName=Your Game
GenericName[fr]=Ton jeu
GenericName[he]το παιχνίδι σου
Comment=longer but short description of your game
Comment[fr]=Description plus longue mais courte
Comment[he]=Μεγαλύτερη αλλά συντομότερη περιγραφή
Exec=/opt/your-game/bin/your-game-launcher
Terminal=false
Icon=/opt/your-game/share/icon/your-game.svg
NoDisplay=false
StartupNotify=true

/opt/your-game/bin/your-game-launcher 可以简单到

#! /bin/sh
exec /opt/your-game/lib/your-game.x86_64

或者更复杂的东西(也未经测试)

#! /bin/bash
export LD_LIBRARY_PATH=/opt/your-game/lib
logfile=/tmp/your-game-log-file-$(id -u).log
exec /opt/your-game/lib/your-game.x86_64 --debug 2>"$logfile"

完成后,创建您的 deb 包。只需 cd 到包含packaging-your-game目录的目录并运行以下命令:

fakeroot dpkg -b pacakging-your-game

这将创建 packaging-your-game.deb。只需重命名该文件your-game.deb并发布此 deb 文件即可。

相关内容