Study Works

YuukiHiraiの勉強したものを上げていきます。

BOOTH や itch.io で1GB以上のゲームを1ファイル1GBに収めて配信する方法について

はじめに

昨今、Steam以外でPCゲームを配信する際に「BOOTH」「itch.io」を使われている方が多いかと思います。

booth.pm

itch.io

しかし、「BOOTH」や「itch.io※」では1ファイル1GBという制限があり、開発しているPCゲームが1GB以上で困っている方がいるかと思います。
※ itch.ioでは有料プランで1GBの制限を無くすことが出来るみたいですが、詳細は分からないです…

 

今回、使用する方法としてはsplitを用いて実行ファイルを分割して、ユーザーには分割したファイルを統合してもらってプレイするやり方です。
Windous 10でやり方を解説します。

yuukihirai.booth.pm

1、Bashをインストール

ファイル分割の「split」のコマンドを使用するため、Bash等のLinuxコマンドを使用できるコマンドプロンプトを用意します。
すでにそういった環境を用意しているなら、対応は不要です。
今回はゲーム開発で良く用いられる「Git Bash」をインストールします。

git-scm.com

2、ゲームファイルを分割

インストールしたBashを開き、ゲームファイルがあるところまで移動します。

あらかじめ、ゲームファイルを1つのZipファイルにまとめておきます。
その後、下記のコマンドでファイルを分割します。

split -b 1G -d --additional-suffix=.zip ~Zipファイルにしたゲームファイル~.zip ~配布したいゲームファイル名~

仮にMyGame.zip(容量1.5GB)で下記のコマンドを実施した際は

split -b 1G -d --additional-suffix=.zip MyGame.zip MyGame

「MyGame_100.zip(1GB)」「MyGame_101.zip(0.5GB)」という2つのファイルが生成されるかと思います。
これで分割は完了です。

3、分割したゲームファイルを統合

分割したファイルを統合する際は下記のコマンドで実施します。

COPY /B ~分割ファイル名A~.zip+~分割ファイル名B~.zip ~Zipファイルにしたゲームファイル~zip

仮にMyGame.zip(容量1.5GB)を分割して実施した際は下記のコマンドになります。

COPY /B MyGame_100.zip+MyGame_101.zip MyGamezip

この「COPY」コマンドはWindous標準のコマンドプロンプトで使用可能です。

しかし、ユーザーにコマンドプロンプトを実施してもらうのは敷居が高いので、バッチファイルを用意すると良いかと思います。

~ファイル名~
ゲーム構築バッチ.bat

~ファイルの中身~

@echo off
COPY /B ~分割ファイル名A~.zip+~分割ファイル名B~.zip ~Zipファイルにしたゲームファイル~zip
exit

上記のようなファイルを一緒に頒布することでバッチファイルを実行(ダブルクリック)するだけでZipファイルを作成します。

注意点

ファイル名を指定する際は相対パスや絶対パスに気をつけましょう
例えば、下記の内容のBatファイルだとBatファイルと同じフォルダに「~分割ファイル名A~.zip」や「~分割ファイル名B~.zip」を用意しなければいけません。

COPY /B ~分割ファイル名A~.zip+~分割ファイル名B~.zip ~Zipファイルにしたゲームファイル~zip

BOOTHだと「.bat」ファイルは頒布出来ないため、「.bat」ファイルをフォルダに格納してZipファイルにして頒布するのが良いかと思います。
その際に下記の内容のBatファイルだと、そのまま実行してもファイルは生成されません。

COPY /B ~分割ファイル名A~.zip+~分割ファイル名B~.zip ~Zipファイルにしたゲームファイル~zip

そのため、下記のどちらかを対応する必要があります。
A、Batファイルを分割ファイルのフォルダに移動するようにユーザーに指示する
B、下記のコマンドに置き換えて、Batファイルを解凍したフォルダから実行できるようにする

COPY /B ..\..\~分割ファイル名A~.zip+..\..\~分割ファイル名B~.zip ~Zipファイルにしたゲームファイル~.zip

最後に

コマンドプロンプトやBatファイルなど、全く知らない方には理解しにくい内容かと思います。。。
本記事では詳細を省きますが、ご自身で調べて理解してもらえると幸いです。