ティラノスクリプトV5でSteamworks APIの組み込みができました
これは何
ここ最近ずっとティラノスクリプトをゴリゴリ改造して略。第4弾で急にバカでかい話になるんですが、Steamworks APIの組み込みができたので、ご報告+ざっくりとやり方説明になります。ただ、普通にやると、ゲーム書き出しの度に手順を踏む必要があるので、若干めんどいです。そのへんも含めて説明します。
注意
この手順を踏むと32bitで書き出せなくなります。今回用いているライブラリが64bit版しか提供されていないため、私もやむを得ず32bit版を諦めました。
あと、実績とかについては書いていません。あくまでオーバーレイ出してF12でスクショ撮るとかができるようになるまでの手順です。検証できたらまた別で記事書こうかな。
ガチで注意
改造OKの条件下でかなり無茶をしているので、自己責任でお願いします。バックアップ等とってからやりましょう。特にティラノビルダー改造なんかは一歩間違えると動かなくなるので。
広告
↓作ってます。そのうち体験版も出します。WISHLIST NOW!!!!!!!!!!!!!
事前準備
デベロッパー向け1行説明: steamworks.js をどうにかしてダウンロードしてきてください。
↑で分からなければ下記の手順を踏みましょう。
ライブラリ取得のために Node.js を導入します(インストール方法はいろいろあるのでお好きな方法でどうぞ)
適当に汚してもいいフォルダを1個用意します
用意したフォルダ内でターミナルを開きます(このへんが参考になるかも)
"npm i steamworks.js" と入力してEnterキーを押します
フォルダを再度確認すると "node_modules" というフォルダができていて、中に "steamworks.js" というフォルダがあるはずです
組み込み方法 (Any%)
ファイルを隠蔽せずにゲームを書き出します(最速でやるなら必須です)
書き出されたゲームフォルダを開き、 steam_appid.txt というテキストファイルを作り、そこにSteamのゲームIDを書き込みます(ゲームIDについての説明はここでは割愛します)
ゲームフォルダ内の resources/app フォルダに移動します
node_modules フォルダがあるので、上で取得した steamworks.js フォルダをフォルダごと突っ込みます
main.js を開いて下記のように行を追加します(+付いてるとこが追加行です。6行目辺りになるはずです)
let mainWindow = null
+ const steamworks = require('steamworks.js')
+ steamworks.electronEnableSteamOverlay()
+ const c = steamworks.init()
app.on('ready', () => { // これが
let fs = require('fs')
デベロッパー向け: やってることとしては内蔵の Chromium に対する起動時引数の設定なので、アプリケーションの準備が完了する前にやってあげるのがミソっぽいです。これを発見するのに2日かかりました・・・。
広告
とりあえずここまで読めば最低限の対応はできるのでここでもう1回広告打っときますね。
↓作ってます。そのうち体験版も出します。WISHLIST NOW!!!!!!!!!!!!!!!!!!!
でも書き出す度にこれやるのはめんどいんだよね
なので私は上記手順の自動化のためにティラノビルダーを魔改造しました。こんなはずではなかったが・・・。ちなみにPRO版使ってます。無料版でも同じことできるのかなあ。
main.js はティラノビルダーのフォルダから resources/app/system/pkg/system と辿ると入ってるので、上と同じように修正しておきます。
node_modules については、既存のコピー処理をちょいと弄って良い感じにコピーするようにしました。
steam_appid.txt はそんなに手間じゃないので今は手動でコピペしてますが、そのうち自動化しないと忘れそうですね。
ファイル隠蔽もできたよ
これ対応するの結構苦労したんですが、どうにかいけましたね。 steamworks.js から呼び出している Steamworks API のライブラリは、ファイル隠蔽に巻き込まれると呼び出せなくなっちゃうので、部分的に隠蔽しないように工夫して上げる必要があります。書き出し処理において electron-packager を用いている箇所があるのですが、 asar のオプションを上手いこと指定してあげると、特定のファイルだけ隠蔽しないようにすることができます。ティラノビルダーのコードをホントにちょびっとだけ引用していますが、問題あったらご連絡ください・・・。
asar: e.asar ? { unpack: '*.{node,dll,so}' } : false
これをやると、 resources フォルダの中に app.asar.unpacked というフォルダが作成され、その中に除外したファイルが、フォルダ構成そのままに置かれます。この仕組みさえ分かれば手動でできないこともないんですが、結構しんどいと思います。
app.asar.unpacked
└─node_modules
└─steamworks.js
└─dist
├─linux64 // Linux用ライブラリファイル群
├─osx // Mac用ライブラリファイル群
└─win64 // Windows用ライブラリファイル群
おわりに
説明足りないかもなーってのはあるんですが、説明しきってもむずいもんはむずいので、もう少しやりやすくなると今後作る人は嬉しいだろうな~という気持ちがあります。とはいえ、どっちかというとティラノスクリプトはSteamよりかはノベコレとかでの配布が適していそうではあるので、適材適所なんだろうなとも思います。ティラノゲームフェスも盛り上がってるし。
まあとりあえず大変でしたがどうにかなりました。めでたしめでたし。
広告
かなり頑張ってるんでね。3回目も打たせてくださいね。
↓作ってます。そのうち体験版も出します。WISHLIST NOW!!!!!!!!!!!!!!!!!!!!!!!!!!!
この記事が気に入ったらサポートをしてみませんか?