2009-05-22 26 views
3

我有一款遊戲,目前在Windows和Mac OS X下運行,我希望在Linux下可用。移植應該相當簡單,因爲它是基於Java的遊戲,並且使用可在所有3個平臺上使用的便攜式庫。如何打包Linux遊戲?

這個問題的難點和原因在於將其打包,以便它可以在儘可能多的現代Linux發行版上運行。主要目標是Ubuntu 9.

Webstart不是一種可接受的方式,.tar.gz是最後的手段。我會非常喜歡一個已經正確定義了依賴關係的包(比如Java)並且很容易安裝。

我還需要能夠在Windows環境下構建包,因爲我的構建鏈中的某些工具是僅限於Windows的。

+0

最新的webstart允許離線模式。這會使它可以接受嗎? – 2009-05-23 18:57:45

回答

5

首先看看類似的項目是如何實現這一目標的。想到的是Freecol,這是一款基於Java平臺的跨平臺遊戲。他們的download page在很多平臺上都有相當清晰的信息。他們還在諸如Ubuntu的GetDEB和OpenSuse的PackMan等站點上提供軟件包。

一般來說,如果你想盡可能多的發行打越好,你應該考慮的格式是(按重要性的粗糙順序):

  1. Ubuntu的.deb文件(也創造了一個倉庫,如果你能)
  2. 的OpenSUSE的.rpm或.ypm(1個鍵安裝)
  3. 的Fedora的.rpm
  4. 名爲.tar.gz預編譯包

釷從源選項構建,或盡力而爲的二進制安裝程序。最後,看看其他流行的發行版,如Debian,Mandriva和BSD

一旦某個特定平臺的軟件包存在,您可能希望考慮讓它接受該分發。這將使用戶更容易找到並獲取。對Ubuntu的過程中的信息可以在這裏找到:

(編輯:更好的列表,這要歸功於Jonik的建議)

+0

對於ubuntu,您可以使用啓動板來構建軟件包並輕鬆創建存儲庫。 – 2009-05-22 13:03:20

1

您可以使用Ubuntu的deb系統。它會幫助你正確標記依賴關係。

包裝指南here

1

很好的問題 - 我不知道答案(我想這不是一個簡單而全面的解決方案),但是從Linux用戶的角度來看,這裏需要考慮一些問題。

我認爲.tar.gz(或.tar.bz2)不一定那麼糟糕。 Linux用戶習慣於它,例如許多商業軟件包都是這樣分配的。如果主要點是在某個位置提取文件,它經常會擊敗圖形化Windows風格的安裝程序。

一些(也許很多?)用戶將JRE安裝在包管理系統之外,因此僅提供RPM或deb(這取決於將JRE安裝爲RPM或deb)可能會有問題。 (我個人更喜歡在/usr/local/java下安裝幾個JRE版本(實際上是JDK)。)所以至少考慮提供zip/gz/bz2包以及其他選項。

另外,要了解如何創建Java軟件的RPM包,請參閱JPackage

1

每個發行版可能有自己的常規文件去哪裏。
在Ubuntu中,普通的java jar會進入/ usr/share/java。像commons-cli和liblog4j存在。如果您使用其中任何一種,請確保您的deb取決於相應的軟件包。如果該庫在您的應用程序中使用過,但不在Ubuntu回購站中,請考慮將其置於其自身的deb中,並視其爲何。您將需要爲/ usr/share/[name] /中的特定遊戲jar創建一個文件夾,然後創建一個shell腳本來啓動遊戲。該腳本應放置在/ usr/bin(或/ usr/games)中並可執行。

不要忘了依賴於一個合適的java包(我建議sun-java#-jre包因爲gjc是垃圾並且打開jdk並不是100%(至少METAL LaF是FUBAR,我不知道別的呢。)

2

看一看零安裝(http://0install.net/)。

  • 任何人都可以安裝軟件

你不必是管理員只需安裝文字處理器[更多]

  • 任何人都可以發佈軟件

你並不需要由分佈(或其他人)爲零的一部分被祝福安裝; 該系統是完全分散的[更多]

  • 自動更新

有更新可用時,零安裝會通知你[更多]

  • 安全

如果一個用戶下載惡意程序,其他用戶不受影響; 用戶可以共享下載,而不必相互信任; 安裝不會執行任何下載的代碼; 在新軟件爲r之前總是檢查數字簽名