web-dev-qa-db-ja.com

古典的なNESゲームはオープンソースですか?

ブラウザウィンドウでRBI Baseballのゲームをプレイしました。

それ自体は、単に驚くべきことです。私が若い頃、ファミコンは魔法の箱であり、世界中の子供たちに何時間も楽しむことができました。

数十年後の今、私はプログラマーです。そして、数十年前に、より原始的なハードウェアで開発されたゲームに組み込まれたプログラミングに感謝することができます。実際、いつの日か、私はこれらのゲームのいくつかのコードがスミソニアンに安置されることを完全に期待しています。

私のプログラミングの質問:

古典的なNESゲーム(RBI Baseballなど)がオープンソース化されている場合、オープンソース化されている場合、どこで調査するコードを見つけることができますか?

それが失敗した場合、anyのソースコードを学習できるNESゲームはありますか?

彼らの例から学ぶことは価値があると思います。

例えば:

  • 彼らはオブジェクト指向プログラミングを使用しましたか?
  • 彼らはコードを保守可能に保つためにデザインパターンを使用しましたか?
44
Jim G.

いいえ、少なくとも私が知っていることはありません(そして、私は探していました)。

NESは1983年のビデオゲームのクラッシュ直後に登場しました。市場がクラッシュした主な理由は、悪いゲームの洪水であり、どのゲームが良かったのかを知る方法がなかったため、顧客が単一のゲームを購入しないようになりました。

したがって、任天堂はNES(およびSEGAのマスターシステムなど、当時の他のすべてのコンソール)を導入したときに、承認されたゲームだけがリリースされることを決定し、オープンソースを高額の罰金との契約違反とすることを決定しました。パブリックAPIをリリースしないことで、「自家醸造業者」が市場をあふれさせることが難しくなるということです。

今日、任天堂はゲームを許可するという点ではるかに簡単です、Wiiで安っぽいゲームの洪水を見てください。それでも、コンソールが「本当の」APIを使用して洪水を回避することはできません。誰かがいるときでも問題がありますWiiでGPLエンジン(ScummVM)を使用して問題を引き起こしました。任天堂システムのゲームのソースをリリースすることは契約違反であり、GPLはソースをリリースするように要求します。 。

いいえ、XNAとPS3 Linuxは実際にはコンソールAPIではありません。どちらも、コンソールで実行できる操作に厳しい制限を課します。

多分あなたは自作、またはリバースエンジニアリングされたゲームを見つけることができます。しかし、これはあなたが尋ねたものではないと思います。

また、リメイクやポートのソースが見つかることもありますが、これらはコンソールAPIを使用していません。

26
speeder

たぶん、これを見つけたかもしれませんが、Metroid(オリジナル、NES/Famicom用)が分解され、コード(美しいASM内)がRomhacking.netに投稿されました。

直接リンク

13
Russel

NESプログラミングに興味がある場合は、 エピソード91-天元の再会円卓会議 of Retronauts をチェックしてください。 (これはポッドキャストの最初の実行のエピソード91であることに注意してください。新しいエピソードは@ http://www.retronauts.com/ で見つけることができます)

これは基本的に、システム(およびその他のレトロシステム)でのゲーム開発について回想する、元のNESプログラマーの集まりです。彼らは時々技術的なものに夢中になり、それはすべて本当に魅力的です。

12
James McMahon

私はビデオゲーム業界で働いたことがありませんが、それについてかなり読んだことがあり、そのような友達と時々話しますので、ゲームとゲームの違いは多かれ少なかれ何であるかを説明しようと思いますプログラミング方法論に関するその他のアプリケーション。

最初に理解しておくべきことは、ゲームは1回限りの製品であることです。これはスプレッドシートやワードプロセッサとは異なり、新しいバージョンをリリースして、以前のコードベースを改善および拡張できます。

2つ目は、できるだけ早くゲームをリリースする必要があることです。通常、ゲームで過ごす時間が長いほど、その時間の他のゲームと比べて悪くなります。これは、ハードウェアがコンソールの世界よりもはるかに速く進化するPCゲームにほとんど当てはまりますが、それでもかなりの範囲で適用されます(ゲームは、より優れたツールやアルゴリズムが開発されるのと同じハードウェアを使用してもさらに向上し続けます)。

3つ目は、通常、ゲームはハードウェアを限界までプッシュする必要があることです。したがって、コードの実行速度を低下させた場合にコードをより美しく維持しやすくするためのエレガントなパターンをすべてねじ込みます。

したがって、古いNESゲームのソースコードを分析した後に期待するのは、スパゲッティコードだけです。そのほとんどは、マシンのアーキテクチャに密接に関連付けられた多くの低レベルのハックを含むアセンブリで記述されています。

私の回答がお役に立てば幸いです。

7
fortran

NESゲーム開発に興味がある場合は、 nesdev.com を参照することをお勧めします。彼らは詳細なドキュメントを持っています。

3
mani1986

オリジナルのゲームのソースを見つけることはおそらくないでしょうが、そこには自作のものがたくさんあり、比較的成熟したツールチェーンがあります。お気に入りの答えであるように、グーグルはあなたの友達です。しかし、あなたが始めるために、これは比較的まともなチュートリアルです:

http://www.bestdamnpodcastever.com/millerblog/?p=72 via "The Wayback Machine"

2
Goyuix

NES Gamesは(私の知る限り)アセンブラーでのみ開発されたものであり、ソースコードはその数年後には長い間失われていると思います。
とにかく、アセンブラのソースコードを持つことは、マシンコードからそれほど遠くないので、CまたはJavaコードの場合のように、明らかになりすぎないかもしれません。
オブジェクトの方向と設計パターンについては、再び、それはアセンブラーであり、80年代でしたが、それを期待することはできません。

1
Petruza