Discuss Scratch
- Jinenjo_000
-
100+ posts
セーブコードについてみんなで話し合う場所1
#460
「ビットフラグのアドレスが改ざんされたセーブコード」の作成をどうやって防ぎますか?
「ビットフラグのアドレスが改ざんされたセーブコード」の作成をどうやって防ぎますか?
- Catapult-
-
100+ posts
セーブコードについてみんなで話し合う場所1
開始時の乱数のシードと、その後の入力全てをセーブコードに含めてしまうのはどうでしょうか。
ゲーム再開時に今までの動きを全てシミュレートして、セーブ時の状態に戻すやり方です。
Misskeyの機能の一つであるMisskey gameで、スコアの不正対策として似た方法が使われているようです。
遊べば遊ぶほどデータ量が増えてしまうのがデメリットですが、マインスイーパーやローグライクのようなターン制ゲームでは使えそうです。
また、同じような入力が続く場合はランレングス圧縮などの圧縮も使えそうです。
ゲーム再開時に今までの動きを全てシミュレートして、セーブ時の状態に戻すやり方です。
Misskeyの機能の一つであるMisskey gameで、スコアの不正対策として似た方法が使われているようです。
遊べば遊ぶほどデータ量が増えてしまうのがデメリットですが、マインスイーパーやローグライクのようなターン制ゲームでは使えそうです。
また、同じような入力が続く場合はランレングス圧縮などの圧縮も使えそうです。
Last edited by Catapult- (April 26, 2024 13:05:21)
- JIXG
-
11 posts
セーブコードについてみんなで話し合う場所1
ぼくたちがいつも使っているのが10進数で1、2、3、4、5、6、7、8、9、0の10個の数を使って表します。 ごめんなさい 進数って何ですか? 小5なので分かりません
例えば2進数なら0と1しか使えませんし7進数なら0.1.2.3.4.5.6しか使えません
因数分解を利用してこれを変換出来ます
- Jinenjo_000
-
100+ posts
セーブコードについてみんなで話し合う場所1
いい方法だと思います。 開始時の乱数のシードと、その後の入力全てをセーブコードに含めてしまうのはどうでしょうか。
ゲーム再開時に今までの動きを全てシミュレートして、セーブ時の状態に戻すやり方です。
VRFを使えばゲームの進行状況、入手アイテム、ガチャの抽選結果などの不正が難しくなるかもしれません。以前話題に出した VRFを実装してみました。事前にプレーヤーに公開鍵を登録してもらえば、「開始時の乱数のシード」を調整するチートを防ぐことができます。
こちらのVRF を使ったゲーム処理の安全なリモート委譲という記事が参考になります。
- newmomizi_txt
-
1000+ posts
セーブコードについてみんなで話し合う場所1
確か「トルネコの大冒険」(不思議のダンジョンシリーズ)では、「そのフロアに入った時の状況と、その後の行動」を保存していたはずです。
(オートセーブ機能があるため、パスワードセーブとは異なりますが)
要するに、単に行動全てを保存するだけでなく、一定時間ごとにデータをまとめると良いのではないかということです。
ただ、「そのフロアに入った時の状況」を保存する方法だと不正をしやすいので、「1つ前のフロアに入った時の状況」などにした方が良いかもしれませんね。
(オートセーブ機能があるため、パスワードセーブとは異なりますが)
要するに、単に行動全てを保存するだけでなく、一定時間ごとにデータをまとめると良いのではないかということです。
ただ、「そのフロアに入った時の状況」を保存する方法だと不正をしやすいので、「1つ前のフロアに入った時の状況」などにした方が良いかもしれませんね。
- CPU-Nagi
-
52 posts
セーブコードについてみんなで話し合う場所1
すみません質問なのですが10進法から2進法に変更して該当する文字に変更(例えば000だったら「あ」にする001だったら「い」にするなど)その後その文字を10進法に変換(あなら00いなら01にするなど)してまた2進法に直して……と言うのを繰り返すようにして最終的に文字化けしたみたいなものを作れないでしょうか。
Last edited by CPU-Nagi (Dec. 1, 2024 01:37:39)
- kouhei-1
-
1000+ posts
セーブコードについてみんなで話し合う場所1
その操作だと数字が
hoge(10) -> hoge(2) -> hoge(10)… と 延々と hoge(10) と hoge(2) を周回する気がします。
(hoge(2)を10進数として扱ってそれをまた2進数に変換するということでしょうか?)
なぜ文字化けさせたいのかはわかりませんが、一番簡単なのは文字の大量に入ったリストを作り換字式暗号のようにすると文字化けのように見せることができると思います。
hoge(10) -> hoge(2) -> hoge(10)… と 延々と hoge(10) と hoge(2) を周回する気がします。
(hoge(2)を10進数として扱ってそれをまた2進数に変換するということでしょうか?)
なぜ文字化けさせたいのかはわかりませんが、一番簡単なのは文字の大量に入ったリストを作り換字式暗号のようにすると文字化けのように見せることができると思います。
Last edited by kouhei-1 (Dec. 1, 2024 00:14:26)
- CPU-Nagi
-
52 posts
セーブコードについてみんなで話し合う場所1
この上の文字を使ってセーブコードを作ればわからん説(環境依存文字なのでディスカッションフォーラムには出ないっぽい)
Last edited by CPU-Nagi (Jan. 17, 2025 14:14:15)
- negitoro-1026
-
2 posts
セーブコードについてみんなで話し合う場所1
疑問が解消しました。 この上の文字を使ってセーブコードを作ればわからん説
Last edited by negitoro-1026 (Jan. 18, 2025 08:50:38)
- ioqj
-
500+ posts
セーブコードについてみんなで話し合う場所1
Scratch上でコメントなどで使用できる絵文字には限りがあります。 この上の文字を使ってセーブコードを作ればわからん説(環境依存文字なのでディスカッションフォーラムには出ないっぽい)
「❓」などの文字は表示できます。
- negitoro-1026
-
2 posts
セーブコードについてみんなで話し合う場所1
自分はこの話題について知識がほとんどないので、詳しくはわかりませんが、
一人一人のアカウントから一つの数字を導き出し、
セーブコードと組み合わせてみてはどうですかね(おそらく換字式暗号)?
すでに出ている案だとしたらすいません。
一人一人のアカウントから一つの数字を導き出し、
セーブコードと組み合わせてみてはどうですかね(おそらく換字式暗号)?
すでに出ている案だとしたらすいません。
Last edited by negitoro-1026 (Jan. 19, 2025 08:48:28)
- blackcoffeeoisii
-
17 posts
セーブコードについてみんなで話し合う場所1
10個の数字を使って表す数10進数:0~9までの
2進数:0,1の2個の数字を使って表す数
16進数:0~9,a~fまでの16個の文字を使って表す数
2進数はフラッシュメモリー的な?
というわけはコンピュータは2進数で動いているということ