🧰

Siv3D用リソース埋め込み補助ツールを作った

2022/12/09に公開約3,000字

はじめに

初めまして🤟
私はしがない一般モバイルゲームエンジニアです。
この記事はSiv3Dのアドベントカレンダーの10日目の記事です。
余裕をぶちかましてゲームしてたので、
時間が無くなりハードコーディング多めです。ご了承ください。。

私がツールを作るときに考えていることと、ツールの内容についての記事です。

ツールのリポジトリはこちら

ツールダウンロードはこちら

きっかけ

開発が楽になるように環境改善していきたいと考えたのが始まりでした。
最初はコンソール上で動くものを作っていたのですが、
コマンドを打つ手間を考えると手動で埋め込み捜査したほうが楽なのでは、、、
となったのでGUI作ればええやんってことで作りました。

OpenSiv3Dを選んだ理由

昨今のGUIライブラリは非常に潤沢です。(いい時代ですねぇ)
私が迷ったのは以下の項目ですが、まだまだほかにもたくさんあります。
・自作フレームワークにのっけたImGuiを使う
・Qtを使う
・OpenSiv3Dを使う
・C#を勉強する
・Pythonを勉強する
これらで迷っていた時、OpenSiv3D ver 0.6.6 より、
GUI周りのアップデートが入るとのことと、
OpenSiv3D用のツールだしOpenSiv3Dを使うかという流れで選びました。

ツールを作るときに考えていること

まず、大前提として、ツールを使う人がいます。
開発者自身もそうですし、公開した場合には不特定多数のユーザーが出現します。
これについてはゲームを造る上でも共通して言えますね。
使うのは人間ということで人間が操作に迷わないような設計を心がけます。

デメリットを超えるメリットの供給

自作ツールを使ってもらう以上、使い方を覚えるという無駄な作業(デメリット)が発生します。
ですので、それ以上のメリットを供給しないとツールとして不必要です。
(今回作ったこのツールはまだゴミ段階です)

Siv3D用リソース埋め込み補助ツールの紹介

このツールができること

Siv3DのWindowsプロジェクトでは、
リソースを埋め込むためにResource.rcとプロジェクトへ追加、追記する必要があります。
詳細は、[Siv3Dリソースの埋め込み方法]こちらをご覧ください。
これをGUIで操作し追加できるようにします。

開発環境

opensiv3d ver 0.6.6
Windows 10 pro
MicrosoftVisualStudio 2022 v17.4

機能紹介

・埋め込むリソースの追加
・埋め込んだリソースの削除
・エンジン任意のリソースON/OFF

使い方

埋め込むリソースの追加

起動したら、リソース埋め込みを行いたいプロジェクトファイル(*.vcxproj)を開きます。
open_project
プロジェクトが開けたら、Userタブを選択している状態で
editメニューのregist resourceか、
regist resourceボタンを押下します。
追加したいリソースがあるフォルダまで移動し、リソースを選択しましょう。
how_to_use
サンプルでのPNGとなっているのがタグとなり、
Resource Files\exampleはフィルタの項目となります。
fileメニューからsaveを選択することでResource.rcに追記され、プロジェクトにも追加されます。

埋め込んだリソースの削除

追加できるのであれば最低でも削除の機能が欲しいですよね。
(タグの削除方法は手動でResource.rcを触る他ありません...)

リソースの削除はタグを選択し、削除したいリソースを選択すると、
regist resourceボタンの右に🗑️ボタンが出現し、
押下することで削除できます。
(editメニューのerase resourceからでも削除できます。)
how_to_use
ちなみに、undo redo も存在します。
Ctrl+Zで元に戻す、
Ctrl+Yでやり直しのショートカットも仕込んでます。😎
ここの仕組みはツールの醍醐味ではありますが、それだけで記事書けちゃいそうなのでまた次回。

エンジン任意のリソースON/OFF

Engineタブからエンジンに組み込まれているリソースの選択ができます。
どれをON/OFFすればいいかのガイドラインはこちらで、
helpメニューのengine resource built-in cancel guidlineからも飛べます。
how_to_use
OFFにしてsaveすると、
Resource.rcでコメントアウト化され、埋め込みから省かれます。
元に戻す時はONの状態でsaveすると、コメントインされて再度埋め込まれます。
(Shiftを押しながらスクロールすると水平スクロールが可能です。)

余談

C++26以降で、プリプロセッサディレクティブに#embedが追加される?提案[P1967R9]があるようです。
埋め込みリソースの形が変わってくるのか変わらないのか、、
それまでに血反吐をはいて柔軟に対応できるよう改善、リファクタしなければ、、

終わりに

今後も保守していくために一度リファクタリングを行います。
私は不器用で設計してもうまくいかないので、
作って壊して作り直すを繰り返し、保守できる形を目指します。
この記事、ツールが誰かの参考になれば幸いです。
(ツールを使っていただけると尚ハッピーです)

💪💪💪来年もSiv3Dとともに成長し発展していくぞ~!!💪💪💪

GitHubで編集を提案

Discussion

ログインするとコメントできます