クローン(ザナクロ)をソースからコンパイル、ビルドする。クローン(ザナクロ)をソースからコンパイル、ビルドする。クローン(ザナクロ)をソースからコンパイル、ビルドする。ゲーム『XANADU』(ザナドゥ)とは、80年代の名作PCゲームだ。アクションRPGに分類されるゲームだが、それではゲームの本質的な特徴を網羅しきれない。その詳細は、Wikipediaをはじめ、様々なネット・メディアで語られているし*1、YouTubeでも多数の攻略動画が配信されている。端的には、トレードオフを伴う、限られたリソース(モンスターの数、得られる経験値、アイテム、資金...)を按配して、キングドラゴンを倒すゲームだ。目的を果たす以外に、ストーリーや謎解きの要素は一切なく、前述の制約に基づいてプレイヤーなりの「攻略」を楽しむ。『Rogue』のクローンがオープンソース、フリーウェアとして流通している様に、『XANADU』にもクローンが存在していることに気付いた。それはオープンソースでも、フリーウェアでもなかったのだが、実行ファイルとともに、ソースコードとMakefileまで収録されていたのには、驚かされた。web.archive.orgそのC言語で記述されたコードは、役割、機能ごとに明瞭に区別、整理されており、コメントも適切に挿入されていることから、とても読みやすいものだった。リソース(画像、音声、マップ、モンスターなど)はソースとは独立しており、設定やファイル名を書き換えることで差し替えることができる。レベルごとのフロア構成、モンスター配置はバイナリ・ファイルだった。ゲーム上の仕掛け、仕組みだけでなく、武器や魔法、ユーザーのデータはソース中に記述されており、それらの改変にはソースコードのリビルドを伴うのだった。「強くてニューゲーム」的な遊び方をするには、プログラムを書き換え、それらをビルドする必要がある。ソースコード全体がエラーなく、コンパイルできる状態であるのかを確認しておく必要がある。エラーなくコンパイルを完了し、実行ファイルが出力されることを目的として、ザナクロをビルドし、独自の実行ファイルを出力する手順を紹介する。念のため、次の2点を申し添えておく。ザナクロのソースコード、実行ファイルの在処は掲載していない。*2ザナクロのソースコード、実行ファイルを再配布することはしない。Cloneprosbiboroku.blogspot.comこの参照先によると、ザナクロには複数のバージョンが存在しているようだ。それらは単純にバージョン・アップを積み重ねたものではなく、異なる開発者が、それぞれにフォーク版をリリースした結果であることが読み取れる。私が参照しているソースコードは、「Ver.08-392」に該当しているようだ。1.1.4”の記載を確認できた。ツールこの投稿で紹介する作業では、次のツールを用いる。必要なものをダウンロード、インストールする。ファイルの文字コードをUTF8へ変換する。Makefileを実行する。ソースコードをコンパイル、ビルドする。Edition)のインストールに際し、オプション選択を求められる。この投稿で紹介するコードの読解、コンパイル、ビルドの範囲であれば、最低限のオプションで構わない。コンパイル、ビルドの範囲であれば、実際のところGUIすら必要ない。Community”さえインストールできていればよい。紹介する作業手順では、コマンドを実行するに際し、適切に環境変数が設定されていることを前提としている。各ツールのインストール先は、各自の環境によって異なるだろう。各自の適切なパスを設定すること。この投稿が前提としている環境では、次のパスが環境変数”Path”に登録されていることを前提としている。(x86)\Embarcadero\Studio\20.0\bin環境変数が適切に登録されていることを確認するため、PowerShellで次のコマンドを実行する。適切な環境であれば、それぞれのヘルプが出力される。-hフォルダこの投稿では、ザナクロのソース・ファイルは、次のフォルダに収録されている。以後、このフォルダを「ソース・フォルダ」と呼ぶ。各々の環境に合わせたパスへ読みかえること。temp\work\xanadu\src文字コードの変換ザナクロに収録されているファイルは、異なる文字コードで記述されたものが混在している。JISだが、ソースとヘッダー・ファイルはJISで記述されていた。そのため、ソースコードをエディタで参照する際、適切なエンコードが指定できなければ、特にコメントが文字化けしてしまう。JISを指定することはできるが、JISを指定することはできない。次の3種類のファイルについて、文字コードをUTF8へ変換する。txtchPowerShellで、次のスクリプト(dcs.ps1)を実行する。このスクリプトでは、次のことを実行している。”xanadu”フォルダ配下の全ファイルを精査し、対象ファイルの一覧を取得する。対象ファイルの一覧から一ファイルずつ、DCSを用いてUTF8へ変換する。dcs($files)}”$from”が変換前のファイル、”$to”が変換後のファイルだ。このスクリプトでは、どちらも同一に設定している。変換前のファイルが上書きされる。変換後のファイルを別に保存したければ、$toの値を書き換えればよい。Makefileの編集ソース・フォルダに”Makefile”が格納されている。ザナクロをビルドするには、このファイルを実行する必要がある。実行前に、その内容に目を通すと、いくつかのポイントを修正しておく必要があることに気付く。具体的には、bcc実行オプションを変更する。”-wTE”→”-wT”UNIXファイル・パスを、Windowsのものへ変更する。”/”→”\”UNIXコマンドを、Windowsコマンドプロンプトのものへ変更する。”rm”→"del"※コマンド”make”から実行される都合上、PowerShellコマンドレットは指定できない。d:/home/archive”以下の行を削除する。再配布する意図はないので、アーカイブ、圧縮ファイルは不要。Makefileの全文は、次のようになる。allリビルドまだソースコードには何も変更を加えておらず、既にコンパイル済みのバイナリ・ファイルも存在しているため、まずリビルドを試す。PowerShellにて、ソース・フォルダをカレント・フォルダとし、次のコマンドのいずれかを実行する。リビルド中の出力をログに記録する場合。コマンド終了後、フォルダ””src中にlog.txtが出力される。log.txtリビルド中の出力を記録しない場合。rebuildリビルド中に出力されるのは、多数の”Warning”だ。それらはすべて、次のいずれかに該当している。未参照の変数が定義されている。function開発者の意図が分からないため、このWarningを放置してもよいのか、訂正しなければならないのかは、Warningで指摘された行と、関連処理を精査する必要がある。後者は、プログラム実行中に予期せぬエラーや、期待に添わない動作、結果を生じるリスクがある。気になる人はリビルド中の出力を手掛かりに、該当ファイルの該当行を参照し、ロジックを追跡して、必要ならばプログラムを手直しすることになるだろう。この投稿では、まずコンパイルを通して実行ファイルを得ることを第一義としているため、その詳細には触れない。”Error”が出力されていないため、とりあえずの目的は果たせた。実行リビルドが終了すると、フォルダ”src”に”xanadu.exe”が出力される。これはWin32形式の実行ファイルなので、実行前にプロパティの設定を変更する。98の互換モードで実行するよう、設定する。3)"までの動作を確認した。それ以降のバージョンでは、起動画面でのキー操作に反応しなかった。ME”を選択している。II読みやすく、改変しやすい環境へソースコードは問題なくビルド、実行できることが分かった。効率的に読みやすく、設定やパラメータを改変しやすい環境を用意したい。Studioへ取り込むことにする。その次に、ソースコードの全体像を把握しやすいよう、可視化ツールであるSourcetrailも導入する。『XANADU』は過去数回、Windows向けに再版されている。現状では、いずれも高額で取引される部類の商品になってしまった。80年代に出版された関連書籍も、非常に高額で取引されている。Tumblr広告を非表示にする関連記事2023-04-03Androidで動かすGPT、しかしRAM=6GBでは動かない。al...今回の投稿は、先日の投稿*1のWindows編だ。TOGAFTumblrはてなブログをはじめよう!espio999さんは、はてなブログを使っています。ブログを報告する引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。