セーブデータのセキュリティはどこまで必要か?

セーブデータのセキュリティはどこまで必要か?

ゲーム開発者にとって頭を悩ませる要素の一つだと思います。
しかしこの悩みは目的を見直すことで解決するかもしれません。

本当に必要なのか?

例えばソーシャルゲームなどのデータ改ざんは売上に直接響くことになります。
しかしインディゲームのほとんどは売り切り型の作品であることが多いです。

例えば2,000円で購入したゲームのセーブデータを改ざんするユーザーがいるとします。
彼は改ざんしてゲームを有利に進めることでゲームをクリアしました。(チートですね)

これは果たして楽しいのか?という疑問があります。
恐らく彼は「改ざんする事自体が楽しい」のかもしれません。
2,000円払い、そんな手間をかけてまでゲームを有利に進めたい気持ちがあったわけです。

しかし、開発者にとっては売上に響くわけでもなく、ただそういうユーザーがいるという事実だけです。
この事実のために、何週間・何か月間の手間暇を掛けてセキュリティを強化する必要があるのでしょうか?

セキュリティが必要なパターン

海賊版

違法に複製され、配布される海賊版は世界中のPCゲーム業界を騒がせました。
各プラットフォーマーやメーカーがDRMを導入し成長してきました。

つまり、個人で海賊版対策を行うのはなかなか敷居が高いです。

Steamなどのプラットフォームの場合は、海賊版対策として優れたDRMが導入されています。
つまりSteamのSDKを組み込む上ではある一定のコピーガードが掛かっています。

他のユーザーに迷惑が掛かる

ソーシャルゲームやオンラインゲームなどは不特定多数のユーザーが何らかのコミュニケーションを取ることになります。
このコミュニケーションを阻害するクラッキングが行われるのは損害でしかありません。

情報が流れることでユーザー体験に影響する

攻略サイトやSNS・動画サービスなどに情報が流れる事によってユーザー体験に影響するゲームデザインの場合は、セーブデータ改ざんによってクリアが早まり情報の拡散が早まる可能性があります。

しかし、現代においては遅かれ早かれ流れる情報になります。
かつてレベルファイブはレイトン教授シリーズの攻略サイト掲載について「削除のお願い」を発表したことがあります。

また近年で言うと、「アベンジャーズ/エンドゲーム」ではネタバレ禁止令も出されました。

しかし、これらは「ユーザーの良識に訴える形」でしか成立しないため、どうしても情報拡散を防ぐことはできません。

サマリー

話を戻します。

一定の暗号化・難読化は必要になると思いますが、本当にその手間を掛けて守るべきモノなのかを今一度考えてみてもいいのかなと思っています。

むしろ、時代に合わせてどうやったら多くのユーザーが楽しめるのかを考える時間にあてる方が有意義なのではないかと私は思っています。

GameMaker Studio 2の暗号化・複合化

GameMaker Studio 2では一定の暗号化及び複合化を自動で行う関数が用意されています。
md5などのハッシュ値を利用して、より複雑な暗号化を行う事も可能です。

個人的に強固なセキュリアなデータを作るのであれば、以下のような流れがいいかもしれません。

  • ds_gridでダンプ(すでに難読化されている)を作る
  • bufferに渡してbuffer_base64_encodeでさらに難読化
  • bufferのチャンクをいくつかに分割して入れ替える(独自ルール)
  • buffer_saveでバイナリデータとして保存

基本はGMS2の機能を使っているので、これを反対に処理すれば複合化できます。

Related Posts

GMS2ファーストリファレンスを追加しました
GMS2ファーストリファレンスと銘打ってブログとは別コンテンツとしてサイトに追加しました。 どんな形にするかすごく迷っていたんですが、本のよう...
第32回!GMS2の世界的ゲームジャム『GM48』が開催!
来週19日から四半期に1度開催されるGameMakerのゲームジャム『GM48』が開催されます! スケジュールは以下の通り。 日時 内容 10月7日...
これだけは押さえておこう!GMLベストプラクティス!
GMS2では独自言語GML(GameMaker Language)を使用します。 エンジンの特性からプログラム経験が浅い方は「この書き方で合って...
初心者でも簡単!2Dゲームエンジン『GameMaker Studio 2』の魅力
大好きなゲームを作って売ってみたいと思う人は多いと思います。 でもゲーム開発はハードルが高くて、なかなか手が出しづらいですよね。 UnityやU...