Dive Into Source Code

この記事は Roguelike Advent Calendar 2013 の24日目の記事です。


今回の記事は「Roguelikeゲームのソースコードを読んでみよう、読みやすくする環境を整えてみよう」について書いてみます。

ソースコードのダウンロード

商用・同人ゲーム用でないRoguelikeゲームの多くがソースコードを公開しています。置いてある場所はsourceforgegithub、自前サイトなど様々ですが、好きなタイトルのソースコードをダウンロードしてみましょう。


プログラムを完全に理解するにはC言語等の知識が必要ですが、特に知識がなくても読める部分(*bandのlib/edit/以下とか)もたくさんありますので、ダンジョン探索の合間の気分転換がてらにいかがでしょうか。


Macでのやり方は(持ってないので)今回解説しません。

Windows

個人的にはDevasというソフトを使っています。→ ダウンロードページ
複数のフォルダから正規表現検索でき、動作もそこそこ軽いのでおすすめ。好みの外部エディタでファイルを開くこともできます。

ソースコード全体を読むのにはやや力不足ですが、特定のメッセージの周辺を探すには十分です。


他にもこんな便利なソフトあるよ! という人は是非教えてください。

Linux

伝統的なgrepではこんな感じですが:

% cd include
% find . -type f -print | xargs egrep -n "Hallu[[:alpha:]]+"

ack-grepというツールを導入することで、さらに見やすく検索することができます。

% ack-grep "Hallu[\w]+"

ack-grepの導入は以下の通りです。

; apt-getでのインストールの場合
# apt-get install ack-grep 
; YUMでのインストールの場合
# yum install ack

ブラウザで見る 〜GNU Global編〜

% cd nethack-3.4.3
% gtags
; GPATH, GRTAGS, GSYMS, GTAGSが生成される。
% htags --alphabet --line-number --symbol --xhtml
; HTMLディレクトリが生成される。これを適当なHTTPサーバで公開される場所に置く


ワンクリックで変数や関数の定義場所に飛ぶことができます。
また、emacsvimなどエディタとの連携も可能です。

GNU Globalの導入は以下の通りです。

; apt-getでのインストールの場合
# apt-get install global
; YUMでのインストールの場合
# yum install global

ブラウザで見る 〜OpenGrok編〜

すいませんがOpenGrokのインストールに手間取ってるので後で追記します……

まとめ

ソースコード読むだけでもけっこう楽しいのでレッツチャレンジ。

次回予告

飛び入りの方が誰か入らない場合@deskullさんになると思います。