今年のしらさぎ祭に,ランチャーを提出しました.本当はflutterでボドゲ作る予定だったんだけど,通信関係のライブラリが使い物にならなくて諦めました.
ランチャーは某先輩が作ったものを改良する形式にしました.デザインは完成していたので基本そのままで,ゲームの自動アップデート機能の追加をメインに行いました.内部的には,基本reactで書かれたものをelectronでパッケージにしている感じです.
アップデート機能を入れるにあたってサーバー上にゲームのzipを置いてDLしてくる方針か,ゲームのフォルダまるごとgitで管理するかどっちがいいか迷いました.ゲームのzipを置いておくシステムだと,普段git管理していない開発者なら負担が少ない一方細かい変更に対して毎回上げ直さなければいけないのは面倒かな〜って思いました.また,遊ぶ側もアップデートの度に全データをDLするのは負担です.なのでgit提出という形式にしました.
今回作成したランチャーの内部システムの説明をします.サーバー上に提出用のページを作り,リポジトリと作品情報を入力し,サーバー上でエラーチェックをした上で遠ったものをjson形式でweb上に公開します.ランチャーは起動時,そのjsonデータをDLしてきて,新規登録されたものはclone,削除されたものは削除,その他はpullしてきます.簡単ですね.それらが完了するとランチャーを起動するといった感じです.
その他,ランチャーのデザインを少し変えました.アイコンとプレイ画像2つのイメージを用意し,アイコンをタップするとプレイ画像が出て,上のオススメの所ではプレイ画像が流れる感じにしました.なんか,そっちのほうがメリハリがある気がしたので.でもまあ実はちょっとデザインが微妙なところがあったり,ゲーム詳細画面にアイコンが無いのは微妙な気がします.ここらへんは次のランチャー製作者への課題とします(偉そうに...).
反省点
- 普段gitを使ってない人にとっては負担が大きい
- 大容量のデータはLFSを使わないといけない
- gitで開発していると無駄なデータもcloneされる
- ゲームのデータが大きいとDLに時間がかかる(これはgitに限らず)
- ローカルにgitが必要
- よくバグってた(テストをする前にページ公開したので,色々バグった,早めに作っとけば...)
- ランチャー自体の自動アプデ機能で壊れた
完成しなくてごめんなさい.
次にランチャーを作る人へ
- git勉強会をしましょう(LFSもいれて,てかこれは普通にやった方が良い気がするな,LT会復活させて誰かやってくれ)
- ランチャーははやめに作ってデバッグしましょう.前日にはランチャー動かせるようにしよう...
- ゲーム作る人もはやめに作らせましょう.ギリギリにやると死ぬ.(まあ出来ないんですが)
- webのランチャーと上手く動くようにしてくれ〜(規格は統一してるはず.webゲームとexeのゲームは別リポジトリにした方がいいかも,web版のDLはムダなので)
- そもそもnodeとjsでアップデート処理書くのは微妙.こういうのはシェルスクリプトで書くべき(だけど,起動時にアップデートも便利で悩ましい)
- 可能ならzip提出可能にしてくれ(相当ロジックが複雑になるのは覚悟してね)
- ランチャーの自動アプデ機能はやめとけ(やるなら最低限のファイルだけ内包しておき初回起動で全部cloneしてくる感じで)
頑張って下さい.聞いてくれれば僕も手伝います.多分その時には忘れてるけど