少しずつゲームを作るスレ (961レス)
1-

1
(11): 1 ◆sszKYtA5zs 2013/04/24(水)09:20 ID:ZfuwJ3du(1/7) AAS
今は何も出来なくても、少しずつ頑張ればいつか凄いゲームが出来るはず。
というわけで、少しずつゲームを作っていくスレッドです。

少しずつゲームを作るスレまとめwiki
外部リンク:www54.atwiki.jp
932: ルナドンぽいの 04/01(火)23:19 ID:snwh2s4a(1) AAS
心を入れ替えてゲ製道に邁進すると言ったが……
スマンありゃウソだった(エイプリルフールの大胆な告白)

一応特性(性格)システム的なものを実装
キャラシートの「友好度」の欄にマウスカーソルを合わせると現在の友好度についての詳細がツールチップ表示される
画像リンク


特性ごとに相性があって、↑の例だと自キャラに「勇敢」と「公正」の特性があり、
NPCには「豪快」と「強欲」の特性があるので、それぞれで+と−の評価が発生して結局は相殺(w)となっている

……と作ってはみたものの、これ何かイマイチなシステムなような気がするなあ
まあ、これからゲーム的な要素を実装しながら内容を少しずつ調整していこうか
何か特性システムについてご意見があったらお願いします(虚空への呼びかけ)

さて、ここからゲーム的要素(町の施設とか移動とか)の実装を始める、
と言いたいところだが、現時点ですでに怪しい挙動がチラチラ見られるので
バグ取りしてすっきりしてから次の実装を開始したい
またしばらく進捗的なものは報告できないと思うけど心配しないで下さい(虚空への呼びかけ)
933
(1): ルナドンぽいの 05/21(水)21:49 ID:l52oayg9(1) AAS
今ごろこんなことで悩んでいるのは多分わしだけだろうが、前作(Text Dungeon)では
セーブファイル作成やディープコピー用のシリアライザーとしてBinaryFormatterを使っていたが、
今作(ルナドンっぽいの)で一応.NETのバージョンを最新(8.0)したところ、
安全性がうんたらかんたらでBinaryFormatterは使用禁止になっていてコンパイルエラーになってしまう

代替として公式ではSystem.Text.JsonやDataContractSerializerを推奨しているが、ちょっと試したところ、
これらはStaticなメンバーやImage(キャラグラとか)を直接シリアライズできず、やや面倒くさそう
またセーブファイルがJSONやXMLだと当然プレイヤーから丸見えで改変も自在なので暗号化などの対応も必要
(Text Dungeonのセーブファイルも単にバイナリ化しただけなので改変は容易だったが)

これはシリアライザーを自作するべきだろうか
それとももっと簡単な方法があるのだろうか
いっそ.NET6.0に戻すべきか……
世の中のゲーム製作者はどう対応しているのだろう
(大方はゲームエンジンを使ってるんだろうけど)
934
(1): 456 05/23(金)02:07 ID:Ux/2RGJp(1/2) AAS
FileStream、BinaryWriterで必要なデータだけセーブデータとして保存してますが何か?
C#でデータ編集してCで読み込んだりする必要があるからあんまり言語独自の命令使いにくいのよね
935
(1): ルナドンぽいの 05/23(金)21:47 ID:psSyBWGc(1/2) AAS
>>934
レスありがとうございます

>FileStream、BinaryWriterで必要なデータだけセーブデータとして保存
結局それが正解かもしれないですね、速そうだしサイズも小さくなりそうだし
わしも覚悟を決めてそうしようかなあ、やっぱ推奨通りJSONとかXmlにしようかなあ(優柔不断)
BinaryFormatter.Serialize()はクラスだろうがStaticだろうがそのままストリームに書き込めてめちゃ楽でした……

>C#でデータ編集してCで読み込んだりする必要がある
ちなみにですがなんでそんな必要があるんでしょうか
936
(1): 456 05/23(金)22:20 ID:Ux/2RGJp(2/2) AAS
>>935
ファミコンウォーズや大戦略のゲーム部分はC++とDirect2Dで作ってますがユニットエディタみたいなWindowsフォームを使った画面はC#で作った方が楽なので
937: ルナドンぽいの 05/23(金)23:01 ID:psSyBWGc(2/2) AAS
>>936
成程そういうことですか
昔C++を少しかじっていた頃、C#が出てきて「新しい言語?ヤダ何か怖い!」みたいな拒否反応を示していたのですが
いざ使い始めたら便利な機能が多くて、今となってはC++には戻れない体になってしまいましたw
まあC#もかじった程度しか使えていないんですけどね!

あとC#の方がいい加減に書いても何となく動いてしまう感覚があって、
わしのようななんちゃってプログラマーにも向いているような気がします
(そして後でよく分からない不具合が起きて地獄を見る)
938: ルナドンぽいの 05/26(月)23:28 ID:sA2igFt8(1/2) AAS
最近「Text Dungeonの英語版を作ってSteamで販売する」という妄想が止まらなくて本気でどうしようか悩んでいる
こんなフリーでも大してDLされてない(現在累計470DLくらい)ゲームを販売とか頭わいてんのか、と言われそうだが、
勿論わしも売れるとは思っていないが、どうにも試してみたい気持ちが膨らんでいる

次作(ルナドンぽいの)も最終的には販売したいというこれまた妄想に近い野望というか願望があって、
販売するとなると、上に書いたセーブファイルの脆弱性とかクリアしないといけないし、
DLLで英語化(→MOD対応にもつながる)とか実績に対応とか色々やることがあるので、
それならText Dungeonで一度予習しておくのもいいんじゃないかと考えた次第
あとText Dungeonと次作は世界観が共通しているので、一応次作の宣伝にもなる(はず)と目論んでいる
939: ルナドンぽいの 05/26(月)23:40 ID:sA2igFt8(2/2) AAS
「予習とか宣伝が目的ならフリーで出せば?」という意見もあるかもしれない
ネットを検索すると相当な手間暇をかけた自信作(?)が10本くらいしか売れなくて絶望、
みたいな話がゴロゴロしていて、わしのも多分そうなると思うのだが、
それでも実験してみたいというか、怖いもの見たさというか、
「全く売れない」を実体験として体感しておくのもいいんじゃないかと思うのである

ちなみにフリーで出した場合、SteamにはフリーならとりあえずDLするという層が一定数いるようで、
多分1万〜2万DLくらいはされると思われる(ただしプレイするのはその内1割くらいらしい)
だから宣伝が主目的ならフリーで出すのが正しいかと思う
まあ販売してみて箸にも棒にもかからなかったら1年後くらいにフリーにするのもありかなと思っている

と色々書いたが、結局のところどうするかは決めかねている
このスレを見ている人で何か意見とか疑問とか体験談とかあったら是非書いてってほしい
940
(1): 456 05/27(火)13:11 ID:iSj9dOjY(1) AAS
迷わずやれよ
やればわかるさ
941: ルナドンぽいの 05/27(火)21:39 ID:LiYeZ7IQ(1) AAS
>>940
元気ですかー!!(故人)
そういえばわしは青森にあるA猪木の墓を訪れたことがあります
意外とこぢんまりとした墓でしたが綺麗にされていて真新しい花や酒などが多く供えられていたのが印象的でした

ってそんなことは置いといて、後押しありがとうございます
そうっすね、やらないことには始まりませんよね
まあ本当にSteamで販売するかは保留にして(大事な決断はなるべく後回しにする製作者の屑)、
英語版はいずれ作りたいと思っていたのでまずはそれに取りかかろうかと思います
942: ルナドンぽいの 06/05(木)22:13 ID:6mDB2sDM(1) AAS
Text Dougeonを.NET FrameWorkから.NETに移行するのに手間取ったりしつつ、ようやく英語版の作成に取りかかる
色々考えたが、ゲーム内のテキストデータをTextDataクラスとしてまとめてJSONファイル化するのが翻訳に便利な気がする

まず手始めにキャラ作成時の「通称」と「名前」のリストをTextDataとしてシリアライズ(JSON化)
出来たJSONファイル(見やすさのためデータ量は適宜減らしている)
画像リンク


これをAI神に「このJSONファイルのValue部分を英訳して下さいオナシャス!」と奉納する
そして下賜されたJSONファイル
画像リンク


ゲーム開始時にこの英訳されたJSONファイルをデシリアライズしてゲーム内のテキストデータに展開するようにして、
ゲームを開始すると……「通称」と「名前」が英語化している!(当然)
画像リンク


だが、英訳が長すぎたりすると変なことになったりもする。こういうのは個別に調整するしかないかも
画像リンク


あとは粛々と残りのテキストデータもTextDataクラスにまとめて、ゲーム内データに展開する処理を追加すれ一気に英語化できる、はず
このやり方なら英語だけじゃなく中国語とかロシア語とか他の言語もいけますね、これは最初から20か国対応いけるな!(AI神頼み)

ただ、JSONのままだとユーザーに中身が丸見えになってしまう
通称や名前のリストが見えても大した問題ではないが、イベントなどのテキストまで読めてしまうと興醒めというかゲームとしてどうかと思うので
暗号化とまでは行かなくてもバイナリ化するなどして一般ユーザーには基本見えなくなるような処理を加えたい
具体的には……勿論これから考えますよ!(いつもの)
943: Text Dungeon(英語化) 06/10(火)21:55 ID:+DfLqwUX(1) AAS
バイナリ化はとりあえず後回しにして(いつものパ)、言語の選択を実装した

↓のように"Language"フォルダに各言語のJSONファイル(ファイル名=言語名とする)を入れると
画像リンク


タイトル画面でドロップダウンリストから言語を選べるようになる
何かロシア語が妙にデカいんだけどフォントの問題かしら?
画像リンク


一応タイトル画面だけ中国語対応してみたw(Steamの4人に1人が中国語ユーザーだとか)
画像リンク


あとはひたすらテキストデータをTextDataクラスにまとめる作業を進め……ているんだけど
これがかなりのボリュームであとどれくらい時間がかかるか見当もつかない
ほぼテキストで出来ているゲームなので当然と言えば当然なんだが
まあ迅速に少しずつ進めていきますよっと(3か月コース)
944
(1): Text Dungeon(英語化) 06/12(木)00:32 ID:yZyhP/xw(1/2) AAS
↑でコンボボックス(ドロップダウンリスト)を配置したら、何故か
「常にコンボボックスがフォーカスされ、背景(ユーザーコントロール)にフォーカスを移せない」
(this.Focus()を何度書いても背景にフォーカスを移せない)という現象が発生し、
'1'キーを押してもゲームを開始できないし、'2'キーを押しても続きから始められなくなってしまった
(ただし、クリックすればゲームを始められる)

ネットを検索しても同じような現象を見つけられず、AI神に泣きつきながらあれこれ試した結果、
コンボボックスのTabStopプロパティをfalseにした上で、DropDownCloseイベント発生時に
this.ActiveControl = nullを入れて無理やり非アクティブにしてやると、
コンボボックスの操作後に背景にフォーカスが移ってキー入力が効くようになった

同じような現象が起きて困っている人のために一応ここに記す
(こんなところに書いても誰も見つけられない定期)
っていうか検索して出てこないのだからおま環なんだろうか、わけがわからないよ
945
(1): 456 06/12(木)09:33 ID:1UEcXoJI(1) AAS
FormのプロパティKeyPreviewをTrueにすれば良いような気がするが背景(ユーザーコントロール)が謎すぎて何とも
946: Text Dungeon(英語化) 06/12(木)22:10 ID:yZyhP/xw(2/2) AAS
>>945
レスありがとうございます。
Text Dungeonはフォームは1つ(Form1)で、From1上に各画面ごとのユーザーコントロール
(例えばタイトル画面だったらUserControl_Title、メイン画面だったらUserControl_Mainなど)があって、
ユーザーコントロールを切り替える(.Visible=true/falseする)ことで画面を切り替える仕様になっています
また、KeyPressイベントは各ユーザーコントロールのイベントハンドラ(タイトル画面ならUserControl_Title_KeyPress)で処理しています

で、ユーザーコントロールにはKeyPreviewプロパティがないので、Form1のKeyPreviewをtrueにして
Form1のkeyPressイベントをUserControl_Title_KeyPressに転送してみたところ、>>944の現象を回避することができました
こっちの方がActiveControl = nullなんてことをするより筋のいいやり方かもしれません

ただ、この手法だとフォーカスは相変わらずコンボボックスに残るため
コンボボックスの操作終了後も四角い点線枠が表示され続ける(↓)
画像リンク

のが妙に気になるので、一旦は>>944の処理で対応したいと思います。

ちなみに本現象はコンボボックスに限らずキー入力があるコントロールをユーザーコントロール上に置くと発生するようで
どうもユーザーコントロールはKeyPressイベントはあるのにTabStopプロパティはない、
子コントロールを置けるのにKeyPreviewプロパティはないなど、フォーカス周りの設計思想があいまいというか、
システム側にぶん投げてるような感じで、プログラマー側ではフォーカスを制御できないような気がします
(調べたわけではないので個人の感想です)

つまり、わしが悪いんやない、Microsoftがいい加減なのが悪かったんや……!
(と、いい加減プログラマーが申しております)
947: Text Dungeon(英語化) 06/15(日)23:33 ID:5+yigztT(1) AAS
相変わらず遅々として進まない、父の日だけにね(ニゴッ
まさかこのスレでこのネタを4回もやるとは思わなかったよ……

英語翻訳は上記のようにAI君にやってもらっているのだが、
単なる作業と思いきや会話していると色々英語の勉強になって意外と楽しい。例えば

中央都市:国の首都であり、高い教育水準を誇っています。 この都市の出身者は技量値が高くなる傾向があります。
の「中央都市」の英訳を幾つかオナシャス!と頼むと

この都市の特徴を考慮すると、以下のような英訳が適しています:
- Capital City(シンプルに「首都」を表す一般的な訳)
- Metropolitan Capital(教育水準が高い都会的な首都を強調)
- Academic Capital(学問や教育の中心であることを強調)
- Scholar’s Haven(学者が集まる知識の中心地というニュアンス)
- High Education Capital(高い教育水準を持つ都市であることを強調)
「技量値が高くなる傾向がある」という点を考慮すると、「Refined Capital City」 や 「Skillful Metropolitan」 という表現も適しているかもしれません。
イメージに合うものはありますか?

と返してくる
だが、地理的に「中央」であることを強調したいので「Central Capital City」はどないや?と聞くと、

"Central Capital City" は、都市の特徴を明確に伝えつつ、首都であることを強調できる良い選択肢です!
ただ、英語では通常「Capital City」で首都の意味が十分伝わるため、「Central Capital City」は強調しすぎて少しくどい印象かもしれません!

と持ち上げつつやんわりとダメ出しされ、ぐぬぬ……となったりして割と楽しい(結局シンプルに「Central City」にした)
まあAI君、たまに堂々と間違ったことを言うので裏取りは必要になるんだけどね
でもこのペースだとマジで3か月コースになりそう、まあ父の日だからね、しょうがないね(意味不明)
948
(1): Text Dungeon(英語化) 06/19(木)23:51 ID:rg8+gcaO(1) AAS
↑で「20か国語対応いける!」などとはしゃいでいたが、翻訳作業を進めるにつれ、
んなわきゃないことがようやく分かってきた(知力3)

固定の文章だったらその対訳をデーターベース(JSONファイル)に登録するだけでいいが、
ゲームなので当然ながら文章は常に固定ではなく一部が動的に変わるケースがある

例えば「輝くロングソードを拾った」という文章だったら「ロングソード」が「バックラー」になったり、
また、「輝く」が「光る」や「古ぼけた」になったり、ゲーム中の状況に応じて単語が動的に変わるわけだが、
言語によっては冠詞や形容詞が名詞の性(男性名詞か女性名詞か中性名詞か)、数(単数か複数か、言語によっては双数という区分もある)、
格(名詞の文章上の役割、主格、所有格、目的格など)によって変化することがある

例えばドイツ語の場合、「輝くロングソードを拾った」はロングソードが男性名詞で、単数で、直接目的格なので
冠詞はein、形容詞(輝く)はglanzendes になるが、これがバックラーだと女性名詞なので冠詞がeinen、形容詞はglanzendenになる
また、「輝くロングソードは炎に包まれた」のようにロングソードが主格になった場合も冠詞、形容詞が変化するし、
さらにロングソードが単数か複数かによっても変化する
おまけに変化の仕方も必ずしも一定の規則に従うとは限らず、不規則変化する単語もある
(ドイツ語はほぼ規則的に変化するが、フランス語やロシア語などは不規則変化する単語が多い)

よって、単に「ロングソード」や「輝く」の対訳を一つ登録するだけでなく、
名詞ならそれが男性名詞か女性名詞か中性名詞かを登録する必要があるし、
不規則変化する形容詞だったらその変化形をデータとして登録する必要がある
さらに冠詞や形容詞を動的に変化させるための処理をプログラム側で実装する必要もある
無論、変化の仕方(どういう場合にどう変化するか)は言語によって異なるので、
言語ごとにその処理を実装しなければならない

要するに言語ごとのJSONファイルを用意さえすれば多言語対応できる、
などという甘い夢はひとひらの幻となり、時の淵へと沈んでいったのである(唐突な文学的表現@AI)
949: Text Dungeon(英語化) 06/20(金)00:14 ID:4tDnrhMf(1/2) AAS
で、結局どうするかだけど「英語だけ対応してあとは諦める」方向にしようかと(人生諦めが肝心)
もしかしたら中国語(簡体字)にも対応するかもしれない
(中国語には冠詞も形容詞の変化もないようなので比較的楽そうな気がする、気がするだけかもしれないが)

そもそもText Dungeonをローカライズしたいという有志が現れる可能性は0.01ppmくらい(適当)だし、
億が一そんな人が現れたら、その時はその時で対応すればいいと思うのである

一応、固定文でない言葉はクラス化して属性なり変化形なりのプロパティを後からつけ足せるようにしておけば
億が一の事態が発生した場合も柔軟に対応しやくなる、はず
例えばクリーチャーの名前だったら

public class CreatureName
{
public string Name { get; set; }
public string Plural { get; set; }  //複数形
public string Quantifier { get; set; } //量数詞
//public int Gender { get; set; } //性(後で追加する……かも)

public CreatureName() //コンストラクタは日本語とする
{
Name = "名無し";
Plural = string.Empty; //
Quantifier = "体の";
//Gender = 0;
}
}

みたいにしておいて、後から男性名詞やらなんやらに対応するときはGenderプロパティを追加する形にしようと思う
他にも「こうしといた方がいいよ」とか「こういう場合はどうするんだ」など意見や疑問があったら書いて貰えるとありがたい
なんて言ってもレスは無いことは分かっている。いいんだ、AIと勇気と456氏だけがともだちさ(一方的な友達認定)
950
(1): 456 06/20(金)00:45 ID:CAVCWRzU(1) AAS
こまけえことは気にすんな
誤訳も個性って事にしとけばええんよ(思考停止)
951: Text Dungeon(英語化) 06/20(金)21:22 ID:4tDnrhMf(2/2) AAS
すみません、バックラーは男性名詞でした
なんてこった、これがゲルマン魂ってやつか(意味不明)
>>948の「バックラー」は「プレートメイル」に置き換えてお読みください

 
>>950
そうですね、某ファイナルソードも翻訳がアレで却ってウケた感がありますし(尚、日本でしかウケなかった模様)
JSONファイルでの単語置き換えは簡易翻訳ということで、良かったら使ってください(自己責任で!)という感じにしようかと
952: Text Dungeon(英語化) 06/24(火)22:01 ID:P292I//X(1) AAS
キャラメイク画面の英語化がようやく一通り完了
画像リンク


だが、また細かいところで気になっていて、「通称」「名前」が今はこの順で並んでいるのだが、
英語だと異名や二つ名などは名前の後に来ることが多い
例えば「ドラゴン殺しのローレ」なら「Lore the Dragonslayer」になるので、
英語版では「名前」「通称」の順に変えるか、また、多言語対応するならJSONファイルで順序を設定出来るようにすべきかもしれない

この行き当たりばったりで作るわりに細けえところで妙に悩む癖、どうにかなりませんかね(他人事)
まあ悩んだ挙句、とりあえず保留にするのがいつものパティンなんですけどね

さらに「体力」「技量」「運勢」の3つの能力値は某ゲームブックをパ、参考にしているのだが、
元は英語で「Stamina」「Skill」「Luck」で、「Stamina」は何となくしっくりこないのでVitarityに変えるとして、
「Skill」をそのまま採用すると剣術、呪文詠唱などの「スキル」と被ってしまう
「Skill」をProficiencyとかCompetencyにするとやはりしっくりこない上に長すぎるし、
いっそPowerにするか、或いは「スキル」の方をTalentとでも訳すか、なかなか悩ましい

……とりあえず保留にしとこう(いつものパ)
953: Text Dungeon(英語化) 06/28(土)00:59 ID:zzXrp4sr(1) AAS
名前などの個別設定画面も英語化完
画像リンク


タイプと出身地は選択すると説明が表示されて、それからEntで決定するように仕様変更
画像リンク


英語
画像リンク


これからようやっとゲーム本編の英語化に移るが、本編もチップツールなどを使って、
アイテムや呪文などの情報を簡単に見られるようにUIを改良したいと妄想している
あと、日本語を英語化するとどうしても文字数が増えがちなので(漢字って便利)、
改行をオートで行うなどメッセージ周りの仕様を変更する必要もあるかもしれない

3か月コースと言ったが6か月コースになりそうな悪寒……でもまあ少しずつ作っていきますよ!(次スレ必須)
954: Text Dungeon(英語化) 07/07(月)22:58 ID:O48nZ/qv(1/2) AAS
本編を英語化し始めてからようやく気づいたのだが(またこのパ)、
今のやり方だと「続きから」でゲームを再開したとき、一部が英語化されないことが判明した

何故かと言うと、現在の仕様ではゲーム内のアイテムやクリーチャーは
ゲーム開始時に生成用テーブルに従って名前、重さ、体力などの各プロパティが割り振られる
例えば「治療の薬」や「ゴブリン」がそれぞれのテーブルからインスタンス化される
しかし今のやり方では、その生成テーブル(の一部)を英語化しているだけなので、
すでに生成された後のインスタンス(=セーブデータに保存された情報)には反映されない
つまり再開しても英語にならないのである

それで、幾つか対応を考えてみた

(1) セーブデータをロードする時、データ内の全てのインスタンスをスキャンして、
  英語化すべきプロパティがあったら英語にセットし直す
 
(2) インスタンスごとにプロパティを持たせるのではなく、
  共通の値を持つプロパティは1つのデータとして共有参照し、そこを英語化する。
 (例:ゴブリンの「ゴブリン」という名前は全インスタンスで共通 → 名前は共有参照データとして「Goblin」に置き換え)

(3) 諦める(人生諦めが肝心)
  「今日は日本語でプレイしよう」、「今日は英語の気分だな」みたいな感じで
   ゲーム再開のたびに言語を切り替える奴はおらんやろ……

正直(3)で誰も困らない気はするのだが、これまで各インスタンスが全プロパティを保持していたのは
はっきりいって冗長すぎた(ゲーム本体は1MB足らずなのにセーブデータは5、6MBあったのはこのせい)ので、
この機に(2)のやり方でデータ構造を見直そうと思っている
何が言いたいかというと、6か月コースが早くも9か月コースになりそうってこと(期間が3か月ずつ延びていく恐怖)

こんなに苦労しているのだから、リリースされたら大ヒット間違いなしだな!(エフォート・ジャスティフィケーション)
955: Text Dungeon(英語化) 07/07(月)23:11 ID:O48nZ/qv(2/2) AAS
で、早速(って言うか、しばらくこれに手こずっていたのだが)ポーションのデータ構造を一部共有化してみた

こんな感じで日本語版でデータをセーブして
画像リンク


タイトルに戻って英語版に切り替えて、ゲームを再開すると……
画像リンク


ちゃんとポーションの名前が英語化されてる!(ご満悦)
画像リンク


尚、共有化すべきなのは名前だけじゃなく、複数形の名前やポーションの説明文などもある
こういう「一種別について複数のプロパティをまとめて共有化/英語化」したい場合、JSONよりもCSVのほうが扱いやすいので
それ用のCSVを準備することにした、こんな感じ↓
画像リンク


準備するファイルが増えていってどんどん複雑化していく悪寒……
まあ、なるようになーれ(AA略)
956: Text Dungeon(英語化) 07/17(木)21:57 ID:BQA9x4Yr(1/4) AAS
Potionのデータ構造を見直したついでに、MODでユーザーが新規ポーションを追加できるようにしてみた
需要があるか分からないが(無い)、以下コード込みで手順を公開

まずMod製作用に公開するAPI(DLL)を用意
画像リンク


全てinterfaceで定義して、ゲーム本体のクラスには直接アクセスしない方式にした
が、全部(または一部)publicにして本体を参照するやり方が簡単でいいかもしれない……次回作はそうしようかしら(10年後)

Mod(DLL)のコード
画像リンク


上のAPIを使って新規ポーションの実装とDLL読み込み時の初期化処理(インスタンス受け取り)を行う
今回は「エリ草ー」(Potionじゃないし)と「ヤバい薬」(飲むと死ぬ)を実装
世界観ぶち壊しだけどModならまあええやろ(自作自壊派)

本体側のMod呼び出しクラス
画像リンク


Modsフォルダー内の.dllを検索して、初期化(必要なインスタンスの引き渡し)とIPotionの登録を行う
現状では初期化処理を必ずMOD側で記述してもらう必要があり、この辺はまだまだ検討の余地がありそう

その他、IPotionをDictionaryに登録するクラスを作ったり、IPotionをPotionに変換するラッパーを作ったり、
必要なら不確定名を割り振ったり、登録情報を元に実際にPotionをゲームに登場させるメソッドを作ったりで、
実際のところAPIやModを作るよりこれらの方が大変だったが、長くなるので割愛
興味ある人がいたら公開しますよ!(いない)
957: Text Dungeon(英語化) 07/17(木)22:15 ID:BQA9x4Yr(2/4) AAS
そして作成したMod(.dll)をModsフォルダに入れていざゲームを起動すると

怪しいポーションが登場
画像リンク


飲むと……
画像リンク


エリ草―の場合、不確定名を""(空文字)にしているので他のPotionと同様にランダムな名前が割り振られる
画像リンク


飲むと鑑定されて、以後は「エリ草ー」になる
画像リンク


尚、Modで作ったポーションの英語化(または日本語化)対応は……諦めようと思う(人生諦めが肝心)
Mod(DLL)のstringを自動でJSONやCSVに追加する仕組みとかできなくもないかもしれないが、それはそれでファイルの管理がややこしくなるし、
他のゲームのModでも他言語への翻訳はそれぞれのMod側で対応するのが主流っぽい
それに実際のところこのゲームのModを作る人は多分おらんやろうし……(そもそもプレイする人がいn)

本体の英語化はどうなったかって?じゃまた来週!(遁走)
958: Text Dungeon(英語化) 07/17(木)22:23 ID:BQA9x4Yr(3/4) AAS
>>456
以前MOD用APIについて言及されていたと思いますが、
具体的にこんなAPIがほしいとか、こういう機能を実現したいとかありますかね
わしの実力的に対応できるかは置いといて、検討したいと思います
そんな昔のことは忘れたならば無理に思い出すことはないですが
959
(1): 456 07/17(木)23:18 ID:DOoBRGzR(1) AAS
848の発言の事ですかね?
多分アレは自分では無いです。
欲しいAPIがあるかと言われると...無いw
と言うのも人から出されたゲームをクリアしたり出されたお題でゲーム作るのは好きなんですが人の作った物を改造するのは嫌いなんですw
〇〇だったら良いのにと思ったり言ったりはするんですが自分で触ると急に冷めてしまって...嵌ったゲームは逆に縛りプレイを始めてしまうような奴でして...
物語に入り込んでる所メタ発言で急に現実に戻されるのが嫌みたいな?何かめんどくさい奴ですねw
あったら良い機能としてはスイッチかXBoxコントローラーで全部操作可能とか
寝っ転がってやるときはこれが楽でいいんですよね(典型的ダメ人間)
960: Text Dungeon(英語化) 07/17(木)23:39 ID:BQA9x4Yr(4/4) AAS
>>959
あれ、そうだったんですか
すみません、てっきり456氏の発言かと思い込んでいました
確かにModはメタ的というか、特にDLLだとプログラミングなので現実世界に引き戻される感がありますね
コントローラー対応は確かにあった方がいいですね(販売する気なら尚更)
ぼちぼち検討してみたいと思います

>>848
失礼しました
改めて何かご意見や希望等ありましたらお願いします
そんな昔のことは忘れたならば無理にry
961: Text Dungeon(英語化) 08/20(水)22:50 ID:4Vf3nhfe(1) AAS
>>933あたりでBinaryFormatterの置き換えについての話をしたが、
英語化の目途が立ったのでMessagePackへの移行作業を始めたところ、
これが想像の10倍、いや体感100倍くらい面倒だった

興味ある人はあまりいないだろうから詳細は省くが、
Text Dungeonではポリモーフィズムを多用しており、
ゲームに登場するアイテムやクリーチャーはObjeクラスを基底として
ゲーム中で動的にPotionやCreatureなどに派生する
MessagePackでこれらを保存・復元するには基底クラスに[Union]属性で派生クラスを登録したり、
派生クラスの保存したいプロパティに[Key(n)]を重複しないよう割り振ったりする必要がある

これらがあちこちに及ぶため作業がめちゃ大変で、見落としから実行時にNullReferenceExceptionが頻発したり、
その他の細かい罠もあってコンパイルエラーが出まくったり……
そんなこんなで前回のレスから1か月以上経ったが、未だに移行が完了していない
というか、一部データ構造の見直しが必要なことがわかってきた

正直、BinaryFormatterのままリリースしたくてしょうがないが、AIさんに相談したところ
「内部利用ならともかく、外部に提供するアプリでBinaryFormatterを使うのは危険だよ、
何かあったとき開発者が責任を問われる可能性があるけど本当にいいの?」
とのことで、やはり置き換えからは逃げられそうにない

何が言いたいのかというと、9か月コースが12か月コースになりそうということ
Text Dungeonは2026年夏にSteamにてリリース予定です!(諦念)
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 3.145s*