オープンソースとゲームの相性

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 10年前
住所: 北海道札幌市
連絡を取る:

オープンソースとゲームの相性

#1

投稿記事 by Dixq (管理人) » 3年前

管理人が自分のホームページで質問するなんて前代未聞かもしれませんが恥をしのんで質問します。

近日公開が近づいている四聖龍神録2ですが、制作に1年半かかった作品でコード規模は完成時には8万行前後になるかと思います。
参考:
http://dixq.net/ryujin2/
そんなコードをオープンソースで公開したいと思っています。
絵も全て自作、音も自作、ストーリーもプログラムも全て自作(Remicalsoftサークル作)です。

Githubに公開し、龍神録プログラミングの館のように作り方の紹介サイトも作ろうかと思いますが、ここで困ったことがあります。
ソースコードが開示されれば海賊版も出すことが可能だし、改造したセーブデータも作り放題です。
お金が貯まらないと購入できないアイテムもプログラムをいじれば購入可能ですし、
攻略しなくてもエンディングが見れる等、ソースコードを全て公開するとゲームとして機能しなくなります。

そういうことでオープンソースにすることで誰かゲームを作りたい人に貢献したいという気持ちがある一方で
自分が全力で作って来た作品を守りたい気持ちも大きいです。

ゲームとオープンソースは相性が悪いのだと思いますが、自分の作品を守りつつオープンにする何か良い方法はないものでしょうか。

白い変人

Re: オープンソースとゲームの相性

#2

投稿記事 by 白い変人 » 3年前

コードが第三者に知られてもセキュリティが担保出来る仕様に改良してから公開する・・・とかやりますと、ゲームの仕様に依っては、動作に支障が出かねない上、膨大な工数が必要になりそうですね。

では、案を提示する為にも、ソースコードを公開して下さい・・・とかやりますと、質問者様の懸念が早速現実になりかねませんしね。

現実的な回答になっていませんが、私はこの質問に哲学的な面白みを感じましたよ。

YuO
記事: 942
登録日時: 9年前
住所: 東京都世田谷区

Re: オープンソースとゲームの相性

#3

投稿記事 by YuO » 3年前

ゲームのうちの,正しく「映画の著作物」的な面白さの部分はオープンにする事と相反してしまう面白さだと思います。
いわゆる,ネタバレによって面白さが減じる部分です。

それに対して,ゲーム自体としての面白さに関しては,公開する事によって面白さが減少することはないでしょう。
オフトピック
例として挙げるなら,ソースコードが公開されているわけではないですが,スーパーマリオブラザーズは各種ブロックの配置から敵の配置までわかっています。
しかし,それによって面白さが減るものではありません。
どちらを重視するかは作り手次第だと思います。

ただ,OSIの言う「オープンソースライセンス」やFSFの「フリーソフトウェア」では,ユーザーによる改変は許可されるようなライセンスになります。
個人的には,その改変によって面白さが減ったり,ゲームとして機能しなくなっても,それは改変を行ったものの責任なのでかまわないのではないか,と思ったりします。
オフトピック
オリジナルでない四聖龍神録2の改変版での評価は,オリジナルの四聖龍神録2の評価とは別物ですし。
最終的に,dixqさんが「何を守りたいか」ということに帰着するのではないかと思います。
自身の作ったゲームのバランスそのものを修正されたくない,というのであれば,オープンソースとは相性が悪いでしょうし,
改変版の面白さまでは保証できないと割り切ってしまえば,オープンソース化することが可能だと思います。
あと,日記の方で少し書きましたが「オープンソース」と「ソースが公開されている」は別の概念なので,
オープンソースでないライセンスを付与する事で,少なくとも修正したものの公開を禁じることはできますし,
改変したセーブデータの利用を禁じる事も(ライセンス上は)可能です。

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 10年前
住所: 北海道札幌市
連絡を取る:

Re: オープンソースとゲームの相性

#4

投稿記事 by Dixq (管理人) » 3年前

白い恋人さん

コメントありがとうございます。
一応セーブデータに非公開キーのハッシュ値を付けることで正式版で海賊版データをはじくことは可能かと思っているのですが、
海賊版そのものが出回ってしまっては手の打ちようがないと思っています。
つまり私ではない制作者が海賊版龍神録2を公開してしまうような事態が起きるという事です。
龍神録プログラミングの館公開した1年後位は専門学校の卒業制作にそのまま出されているという報告が相次いだり
企業に自分の作品として提出されているという報告が相次ぎました。
龍神録プログラミングの館は一つのゲームとして完成していない状態であれですから、
完全なゲームとして完成している龍神録2のコードを公開したら前述のようなことが後を絶たないのではないかと言う懸念もあります。。。

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 10年前
住所: 北海道札幌市
連絡を取る:

Re: オープンソースとゲームの相性

#5

投稿記事 by Dixq (管理人) » 3年前

YuOさん

コメントありがとうございます。
確かに開示したコードのライセンスをきちんと守ってくれる人であれば懸念は無さそうですが、
そうでは無い人もいるでしょうから不正な海賊版が出回りそうな気がしています。
オープンソースと言うと改変自由なので、ここでは一旦ライセンス的に再配布や改変したデータ・ゲームの配布は無しにしたとしましょう。
あまり最初から自由にし過ぎるとオリジナルがどれか分からなくなりそうなので、公開から2年位はライセンスで守ろうと思います。
ただ龍神録1ですら不正にデータを改変する方法やセーブデータの公開が複数のホームページやブログでされているので
ソースを公開したら完全に制御不能になりそうです。

また、懸念はもう一つあり、上のコメントにも書いた通り、
卒業制作や企業の入社試験の作品持ち込みに利用されることが龍神録プログラミングの館で多かったので
そのような事態になることも懸念しています。

コピーしたら透かしが入る的な巧妙な工夫が出来たらいいんですが、
そういういいアイディアないでしょうか・・。
まぁ、無いですよね・・プログラムが全て公開されている以上。

ライセンスで守った上で一面のプログラムだけ公開するようなスタンスが妥当な所でしょうか・・。

白い変人

Re: オープンソースとゲームの相性

#6

投稿記事 by 白い変人 » 3年前

懸念事項が分かったので、個人的にプログラミングの問題としては面白いネタなので、もう1案書いてみます。

完全な解決にはなっていませんが、コードを全て公開する事を諦めて、

1.プログラムの動作に絶対に必要になる、自作が難しい処理
2.「このソフトウェアはコピーです!!」の透かしを強制的に入れる処理

を結合した処理をDLLみたいな物にして、ソースコードを公開する。

すると、ソースをパクっても、上記DLLモドキが無いと動作しないので、強制的に透かしが入ってしまう。
という様な仕様にすれば、スクリプトキディは音を上げるかもしれません。

ただ、DLLだと、それなりに知識のある人に解析される可能性があるかもしれませんので、一工夫必要なのかもしれません。


参考までに、私の知っている事例を提示しておきますと、

私が最近注力して開発に励んでいるプログラムは、為替取引等の自動売買を行うプログラムでして、もしかするとご存知かもしれませんがMetatrader4というソフト上で動作するMQL4という言語(C/C++を踏襲した言語)で開発されるものです。

初期のMetatrader4ではMQL4で書いたコードをコンパイルして生成されたロードモジュールが簡単に解析されてしまう脆弱性があり、オリジナルのコピー品が溢れた時代が有りました。

ただ、現在では同様に解析しようとすると、完全に実行可能な状態には復元出来なくなり、

ロードモジュール→解析→リコンパイル

とすると、コンパイルエラーになるような対策が施されている様です。

この事例でいう解析対策に類似する物を実装出来れば、全てオープンとは行かなくても、ある程度オープンソース化は出来るのかもしれません。

ただ、私が質問者様の立場だったら、面倒臭いので、やはり当面はソースは非公開にするかもしれません。

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 10年前
住所: 北海道札幌市
連絡を取る:

Re: オープンソースとゲームの相性

#7

投稿記事 by Dixq (管理人) » 3年前

白い変人さん

あ、お名前間違っていましたすみません、、、。
札幌在住なもので白い恋人という文字に見えました。。。

なるほど、面白い情報ありがとうございます。

> プログラムの動作に絶対に必要になる、自作が難しい処理

ここ難しいですね・・。
この処理を外して自分で書いてしまえばいいってことですよね。
弾幕ゲーなので外せないモジュールをDLL化するなら弾幕モジュール部でしょうか。
しかしそこを隠すとオープンにする意味が無いような。。。
DLL化した部分は非公開にするという認識であっていますか?

NNN

Re: オープンソースとゲームの相性

#8

投稿記事 by NNN » 3年前

既に出ていますがブラックボックスな部分を作っておくのが良いと思います

ではどこを?という点においてはきゅーさんの譲れない部分が
各要素においてどれくらいか、に依存すると思います
セーブデータ改変や海賊版を例に挙げていますがこれらでも譲れないラインは個々で違うのではないでしょうか?

私でしたらゲーム公開後、少し間を置いてソース公開して
少々の改変などは自由にしちゃって、とすると思います
海賊版なんかは諦めですね、その類の話は同人誌関連でよく聞きますが
防止の労力が結果の割りに合いません

ゲームとかではないですが、過去のツールにて認証処理をライブラリで静的リンクして
その中で動的に呼ぶ認証用DLLでこれは体験版です、みたいなメッセージを出す仕組みを作ったことがあります
確かリリースコンパイル時のみ表示させるみたいな感じだったかな
分かる人ならさっくり回避されそうですが
技術足りない人がコピーして「私の作品だー」とかならない程度の抑止力はあるんじゃないかと思います

アバター
Dixq (管理人)
管理人
記事: 1661
登録日時: 10年前
住所: 北海道札幌市
連絡を取る:

Re: オープンソースとゲームの相性

#9

投稿記事 by Dixq (管理人) » 3年前

譲れる部分、譲れない部分をまず整理してみることにします。
とりあえず剥ぎ取るのが難し目なコーディングで透かしを入れるようにし、
それでも取れてしまうのであればよくできましたってことで海賊版が出てもしょうがないと考えましょうか・・。

その透かしを入れるいい方法ありますかね。
DXライブラリのDraw系メソッドを検索していき対象の透かしコードをコメントアウトしたらそれで済んでしまいそうな・・。

返信

“C言語何でも質問掲示板” へ戻る