マリオジャンプの公開で考えたこと

先日、Qiitaで以下の記事を公開しました。

スーパーマリオのジャンプのアルゴリズム

多方面で記事を評価して頂けているようでうれしい限りです。ただ、やはり、内容が内容だけに、こういう事して大丈夫なの?という心配の声も受け取っています。また、エンジニアとしての倫理観に欠けるという厳しい意見もありましたし、内心、渋い顔をされているゲーム業界の方もいらっしゃると思います。
この件で言い訳をするつもりはありませんが、記事の公開に当たって考慮した事と、なぜQiitaで公開しようと考えたのかをnote上に記そうと思います。技術的な話ではないですし、あちらの記事にポエムを混ぜたくなかったのでQiitaとは別媒体にしています(noteが適切かどうかはともかく)。

記事を書くにあたっては下記の事柄を考慮しました。

・記事では、調査や研究を目的とし、著作権法第32条の範囲内と考えた上で、Bit誌の内容を一部引用しています。

・ゲームのアイディアやアルゴリズムには著作権が適用されません。ただし、プログラム(カセットの中身そのもの)には現在も保護期間内の著作権が適用されますので、記事中にはオリジナルのコードは転記していません。参考用にカートリッジ内データの先頭部分を画像として引用していますが、ジャンプ処理とは関係のない箇所です。また、マリオのジャンプに関する何らかの特許出願・設定登録がされていたとしても、カセットの発表からは特許の存続期間が経過しています。

・ジャンプの挙動は、6502/Z80のプリミティブな機能で組まれた処理を、C#の言語仕様に合わせて再現しています。記事の主題はジャンプ処理ですので、それ以外の箇所には触れず、また、ゲームそのものを再現するというような内容ではありません。

・本文中にも記述してある通り、このカートリッジには読み取りを困難にしたり、特殊な方法でないとアクセスできないような制御機構(技術的保護手段/技術的制限手段)は含まれていません。純粋なメモリとしてシンプルに読むことが可能です。

とは言え、現行法の下では、各種権利の行使は権利保持者が判断すべきことですし、記事そのものは調査目的であっても、掲載媒体であるQiitaは営利団体ですから、私が断言できることは何もないというのが正直なところです。
こうしてみると、これらの事は私にとってリスクを負うだけでしかないのですが、以下の考えから記事を公開しました。

その1)「マリオ ジャンプ アルゴリズム」でGoogle検索すると、Verlet積分で説明されたページがTOPに出てきます。元のブログを書かれた方に悪意がないことは充分承知していますが、ネット上に誤解された情報が残り続けるのはよくないのではと感じました。
また、ツイッターで同じ単語を検索したところ、過去に奥村先生が、

 マリオのジャンプとVerlet積分,アルゴリズムの授業で使えそうだ #ipsjce

とツイートされているのを見かけました。Verlet積分の活用事例を教育の場で伝えるのはとても素晴らしい事だと思うのですが(聞いた人は記憶の結びつけが起きて忘れないですよね)、不正確な情報が広く伝わってしまうと、後からの訂正が難しくなります。

では、誤りに気が付いたとして、それを誰が指摘出来るのかといったら気が付いた本人だけですから、これは私がやるしかないかなと。ただ、それも「間違ってるよ!」と言うだけだったり、プログラム例を提示するだけでは説得力がないことは想像がついたので、原典からちゃんと調べたという方法をも記事に含めました。Qiitaで記事を公開したのは、適度に広く伝えることができる媒体だと判断したからです。

その2)世の中にはゲーム作りの技術書籍が多く出版されていますが、ジャンプゲームの実装方法は位置・速度・加速度を使った基本的な物理法則の式か、最近だと物理エンジンを使って解説したものが多いようです。それは基礎知識として必要なことなのですが、ゲームのジャンプはもっとこう、自由で多様性を持つものじゃないかなと思うのです。
この記事を書いている今現在、スーパーマリオブラザーズが発売されてから約35年になります。基本的な物理法則の式に独創的な計算を加えたスーマリのジャンプが35年前の技術ということは、今の任天堂はスーマリから35年先のジャンプゲームを作っているということです。
今の時代に、ゲーム作りの初学者向けの本が、物理の計算式を使っただけのジャンプ処理の解説だけで済ませていいのだろうかと思うことがあります。
私も含めたゲームを作る人、作ろうとしている人は基礎に留まらず、もっとよいジャンプ表現を磨くべきではないかという気持ちと、ゲームを作ろうとしている初学者の皆さんにとって、あの記事くらいのレベルのジャンプの技術と知識は知っておいて欲しいという思いから、記事を公開することにしました。技術と知識の共有はエンジニアの務めかなと。(そのやり方や内容が適切かどうかは別の話ですが)。
なんだか、ちょっと上から目線の文章な感じもありますし、上手く言語化できず伝わっているかどうか不安ですが、まぁとにかく、ゲーム開発者みんなでより心地よくて楽しいジャンプゲームを作りたいですね。


この記事が気に入ったらサポートをしてみませんか?