少しずつゲームを作るスレ (970レス)
前次1-
抽出解除 レス栞

リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
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に戻すべきか……
世の中のゲーム製作者はどう対応しているのだろう
(大方はゲームエンジンを使ってるんだろうけど)
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-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.026s