少しずつゲームを作るスレ (960レス)
上下前次1-新
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
956: Text Dungeon(英語化) [sage] 2025/07/17(木) 21:57:49.42 ID:BQA9x4Yr(1/4) AAS
Potionのデータ構造を見直したついでに、MODでユーザーが新規ポーションを追加できるようにしてみた
需要があるか分からないが(無い)、以下コード込みで手順を公開
まずMod製作用に公開するAPI(DLL)を用意
https://imgur.com/GxPrNiM.png
全てinterfaceで定義して、ゲーム本体のクラスには直接アクセスしない方式にした
が、全部(または一部)publicにして本体を参照するやり方が簡単でいいかもしれない……次回作はそうしようかしら(10年後)
Mod(DLL)のコード
https://imgur.com/My2lJWN.png
上のAPIを使って新規ポーションの実装とDLL読み込み時の初期化処理(インスタンス受け取り)を行う
今回は「エリ草ー」(Potionじゃないし)と「ヤバい薬」(飲むと死ぬ)を実装
世界観ぶち壊しだけどModならまあええやろ(自作自壊派)
本体側のMod呼び出しクラス
https://imgur.com/PLD9dNe.png
Modsフォルダー内の.dllを検索して、初期化(必要なインスタンスの引き渡し)とIPotionの登録を行う
現状では初期化処理を必ずMOD側で記述してもらう必要があり、この辺はまだまだ検討の余地がありそう
その他、IPotionをDictionaryに登録するクラスを作ったり、IPotionをPotionに変換するラッパーを作ったり、
必要なら不確定名を割り振ったり、登録情報を元に実際にPotionをゲームに登場させるメソッドを作ったりで、
実際のところAPIやModを作るよりこれらの方が大変だったが、長くなるので割愛
興味ある人がいたら公開しますよ!(いない)
957: Text Dungeon(英語化) [sage] 2025/07/17(木) 22:15:48.06 ID:BQA9x4Yr(2/4) AAS
そして作成したMod(.dll)をModsフォルダに入れていざゲームを起動すると
怪しいポーションが登場
https://imgur.com/nvHvieS.png
飲むと……
https://imgur.com/WIlb7iT.png
エリ草―の場合、不確定名を""(空文字)にしているので他のPotionと同様にランダムな名前が割り振られる
https://imgur.com/YZXj8sT.png
飲むと鑑定されて、以後は「エリ草ー」になる
https://imgur.com/JPCqx5t.png
尚、Modで作ったポーションの英語化(または日本語化)対応は……諦めようと思う(人生諦めが肝心)
Mod(DLL)のstringを自動でJSONやCSVに追加する仕組みとかできなくもないかもしれないが、それはそれでファイルの管理がややこしくなるし、
他のゲームのModでも他言語への翻訳はそれぞれのMod側で対応するのが主流っぽい
それに実際のところこのゲームのModを作る人は多分おらんやろうし……(そもそもプレイする人がいn)
本体の英語化はどうなったかって?じゃまた来週!(遁走)
958: Text Dungeon(英語化) [sage] 2025/07/17(木) 22:23:33.51 ID:BQA9x4Yr(3/4) AAS
>>456氏
以前MOD用APIについて言及されていたと思いますが、
具体的にこんなAPIがほしいとか、こういう機能を実現したいとかありますかね
わしの実力的に対応できるかは置いといて、検討したいと思います
そんな昔のことは忘れたならば無理に思い出すことはないですが
960: Text Dungeon(英語化) [sage] 2025/07/17(木) 23:39:56.93 ID:BQA9x4Yr(4/4) AAS
>>959
あれ、そうだったんですか
すみません、てっきり456氏の発言かと思い込んでいました
確かにModはメタ的というか、特にDLLだとプログラミングなので現実世界に引き戻される感がありますね
コントローラー対応は確かにあった方がいいですね(販売する気なら尚更)
ぼちぼち検討してみたいと思います
>>848氏
失礼しました
改めて何かご意見や希望等ありましたらお願いします
そんな昔のことは忘れたならば無理にry
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.030s