ロビー執務室TADS

トライ&エラー克服記録


私のTADS利用環境:
Macintosh LCIII RAM=20MB HDD=160MB
OS: KT7-R7.1 + MacTCP, D&D manager etc.
外付けZIPドライブ(100MB)

他にPentium(R)-133MHzのWindowsマシンもあるが、家族の一人の煙草臭い部屋に置いてあるので滅多に触らない。

2000年12月下旬
 HyperTADSとT3を入手
 Macintosh TADS2.4を入手

サンプルコードのコピー&ペーストに注意

 TADS Author's Manual 2.0中にあるサンプルコードをコピー&ペーストを使ってソースファイルにすると、#include命令の前に空白が入ってしまうので、これを自分で除去する必要が出てくる。「#」は行の最初の文字でなければならない。

 この注意はマニュアルのWeb公開バージョン(2001.1.10の時点で2.5.1)の次のページに書かれているが、このページは一括ダウンロードバージョンには含まれていなかった。


http://www.tela.bc.ca/tela/tads-manual/tads-1.html

 私は当初この事実を知らなかったので、tadssamp1-1.htmlの最初のコードさえ正常にコンパイルできなかった。rec.arts.int-fictionでこのことを質問した結果、親切なNeil K.さんが教えて下さった。NeilさんはTADSに関するこつを紹介するtip sheetを作っている方だ。(というかN.K.Guyその人であった) 2001.1.10(水)


TADS日記

2003.5.4(日)

 2001.12.23(土)の実験に使ったコードを、インクルードするファイル名を標準のものに戻してからtoru.tという名前で保存し、オーサーズキット2.5.7のワークベンチでコンパイル後、HTML TADSインタプリタ2.5.7で読みこんだ。すると起こるものと思っていた文字化けが見られなかった。ブラービがザラーコにならない。どうしてだろう。判明している原因から考えて文面や文章量を変えることにより文字化けが発生するようになるとは思えない。2.5.5→2.5.7の間にテキストの扱いが変わったのだろうか。とにかくこれなら「\-」プレフィクスを使用するまでもない。

 ワークベンチのソース表示ウインドウ内で2バイト文字が化けるのは相変わらずだった。

2001.12.23(土)

 パーサーの応答文の日本語化の話の続き。adv.t内のすべての関数について12.11に書いたような置き換えをやることは面倒なので、adescやthedescそのものの定義を書き変えてしまう方が効率が良い。

 先日、TADSマニュアルの十章にようやく目を通した後、「ローマ字化した日本語コマンド」の定義及びその使用を実験してみた:

#include <adv-j.t> #include <std.t> startroom: room sdesc = "ブラービの司令室" ldesc = "とうとうブラービの秘密基地の中枢にたどり着いた。 しかし、やつの姿はない。部屋の中央に目を向けるとここにも小型 爆弾がテーブルの上に設置されていた。" ; toruVerb: deepverb verb = 'toru' sdesc = "toru" doAction = 'Toru' ; bakudan: item noun = 'bakudan' adjective = '不気味な' sdesc = "爆弾" ldesc = "爆弾はライターくらいの大きさで黒い。" location = startroom verDoToru( actor ) = {} doToru( actor ) = { "手をかけた瞬間に爆弾が炸裂した。"; die(); } ;  実験は成功した。「toru bakudan」と入れると爆弾が炸裂し、プレーヤーは死んだ。「toru」というオリジナルコマンドの定義ができたのだ!!
 しかし、残念なことにHTML TADS Interpreter 2.5.5(Windows用)は日本文の表示に難があることも発見してしまった。すべてではないが、日本語の文章中の文字が所々別の文字に入れ替わってしまうのだ!! たとえば、「ブラービの司令室」が「ザラーコの鯖令室」になってしまう(^^; ザラーコという語感に大いに受けたのは良かったが、これではゲームにならない。もしもプレーンテキストのみに対応したインタプリタでも同じありさまだとするとWindowsにおけるTADS利用に暗雲が立ち込める。ブ→ザという化け方から推測すると、1バイトの空白が介在しているように思える。もしそうだとすると英語を見栄えよく表示するためのジャスティフィケーションが施されていて予期しない空白の挿入でもあるのか? よくわからない。もともと2バイト言語が使用されることなど夢にも思わずに作られたものなのでしかたないといえるのだが、少なくともMacintosh用インタプリタではこの問題は生じない。残念だ。TADS3はユニコードを採用するが、そのことはこの問題の回避を約束してくれるのだろうか。とにかくマイケル・ロバーツ氏に挨拶がてらいち早く報告した方がよいと最も思わせる問題である。

2001.12.11(火)

 11月18日にTADS3になって初めて仮想マシンが導入されると書いたが、これは誤りだ。仮想マシンをすでに採用しているからこそ1ゲームソースがマルチプラットフォームに対応できているのだ。

 2001.5.18-19の続き。ある物の表面に置かれている物の説明に冠詞「a」が付かないようにするための方法はやはりadv.tの中に見出せそうだ。コンテナの中にある物を列挙する概論的ルーチンはlistcontgenという関数であるが、showcontcont内に使われていたlistcontもまたこの一般的ルーチンを呼び出す形になっていた。今日、ようやくWindows用の製作者用キットをAptivaにインストールした後、adv.t内を視野を広げて眺めた結果わかった。
 下のようにlistcontの中身はlistcontgenそのものであった。

listcont: function(obj)
{
/* use the general-purpose contents lister to show a "wide" listing */
listcontgen(obj, 0, 0);
}

 それではlistcontgen内はどうなっているのかというと、リストの様々な状態を想定していくつかのサブルーチンを集合させている。
 その中で今回の問題に関係するのが以下の部分である。オブジェクトが一つしかないときは現行オブジェクトの「adesc」を表示するようになっている。これを「sdesc」に変えれば「a 金色のどくろ」からaが取れるはずである。

{ /* there's only one object - show the singular description */
cur.adesc;
}

 先ほど初めてWindowsでコンパイルした結果、上の推論が正しいことを確認した。(23:27)
 それにしても、このコンパイラとインタプリタでは日本語の使用に若干の問題があるとは。インタプリタの方はフォント選択画面でフォント名が化けるだけだ。しかし、コンパイラ/デバッガの方はソースコードの表示に使うフォントの一覧に日本語フォントが初めから含まれていない。まあ、これもここでソースを修正するわけではないから目をつむるべきだが。

2001.11.18(日)

 マイケル・ロバーツの公式サイトでTADS3の概要をざっと眺めた。ずいぶんたくさん改良点が並んでいたが、これはいいとすぐに思ったのが、

・パーサーの分離独立
・ユニコードの採用

だ。現在インタプリタに内蔵されているパーサーが単体で供給され、しかも全面的カスタマイズ機能を備えるらしい。この機能とユニコードへの移行により日本語導入の可能性がどれだけ出てくるのだろうか。それから、TADSの文法はJAVAやC++の利点を取り入れて拡張されるらしいが大部分はTADS2と「much in common」だというから一安心した。根本的な問題としては仮想マシンの導入が一番大きいだろう。これは、すでに完成しているらしいがライブラリはこれからだそうだ。。各プラットフォーム用のシステムが出そうろうのはまだまだ先らしい。

 先月からADRIFTに手を出してしまっている。少しうしろめたい気持ちがあるが、ADRIFTゲーム「The Cell」を遊んでいるうちに「ブラビ伝説」の基本設定のアイデアがようやく浮かんできたから収穫はあった。これをもって単なる浮気ではないと言い切れる。
 「ブラビ伝説」はADRIFTでさっさと形にしてしまって、後でWindows以外のプラットフォームのためにTADS化するという計画が有力ではないかという予感がある。

 今まで当然のようにプレーヤーキャラクタ=豹悟郎氏と考えていたが、ブラビの正体を未だに知らないこともあり、謎解きの重心がブラビの方に寄ってしまうとプロット作りで苦労する、そのことを漠然と意識して今まで悶々としていた。ブラビの正体が作者もよく知らない曖昧模糊としたもののままでも製作進行可能な設定として、プレーヤー=任意のあなた、にすることにした、正確に言うと豹悟郎の従姉妹にする可能性もあるけれど(とにかく「架空の従姉妹」または「架空の着ぐるみクラブの女」は出す。『Windows』は検討中)、確実なのは第一作におけるプレーヤーの最大の目的はブラビの姑息な計略により誘拐された豹悟郎氏の救出だということだ(笑)。


 自分がなぜTADSを入手するに至ったのか忘れないうちに書いておく。  TADSというアドベンチャーに関係するなにものかがあるのはInfo Macダイジェストのある号でTADSゲームが紹介されていたときに、あるいはそれ以前に自分でInfo Macアーカイブを物色する過程で知っていた、と思われる。
 Macintoshで使える各種開発環境を網羅した   でゲーム部門のページを見たか?

TADSホームページにあるソースコードをコンパイルしたら約50KBになった。コンパイル所要時間はLC3で21秒だった。

2001.5.3

 先日、TADS author's manualが2.5.5になっているのを知った。内容の信頼性の検証が完全に終わっていないという断わり書きもなくなっていた。こうなると翻訳対象を切り替えざるを得ない。

 個人的には第4章の翻訳を終えたことによって、後はソースコードが公開されているゲームの動作とコードそして言語レファレンスを相互参照しながら実際にプログラミングに挑戦して行ける段階に来た。つまり、マニュアルの翻訳はもうつまみ食いでよい。
 しかし、コピーライトとライセンスの条件に関わることなので時間がかかっても一つのバージョンを完全に訳しておきたい。そうなると、当然2.5.5しか選択肢がない。

2001.5.18-19

 手引きの第1章の教材となっているサンプルゲームのコードを日本語化してコンパイルしてみた。すると当然ではあるが、パーサーからの応答として、

Sitting on the 台座[daiza] is a 金色のどくろ[dokuro].
のように非常に不自然すぎるメッセージが出てきた。台座[daiza]、金色のどくろ[dokuro]はともに私が日本語化した部分である。[ ]内のローマ字化した日本語はプレーヤーに対し、それが操作対象となる物品であることとコマンドの一部として入力する際の綴りを示すために付けようと企画しているものである。

 それにしても「Sitting on the 台座[daiza] is a 金色のどくろ[dokuro].」というのはひどすぎる。プレーヤーをこんなまぬけな文章に触れさせるのは申し訳ないと思った。
 そこで、パーサーの反応を日本語化する実験の最初の一歩として、初めてadv.tの中をいじった(そして「adv-j.t」という名前で保存し、ゲームのソースの#include行もそれに応じて変更した)。
 Sitting〜の表示を定義している部分(showcontcont: function(obj))を検索機能で見つけ、そこを日本語らしい言い回しになるように加工した結果、
the 台座[daiza]の上にあるのはa 金色のどくろ[dokuro]だ。
のようになった。しかしthe 台座というのもおかしいので、showcontcont関数中の
obj.thedesc;"の上にあるのは";listcont(obj); "だ。";
の中にあるobj.thedescをobj.sdesc
に変えたところ、
台座[daiza]の上にあるのはa 金色のどくろ[dokuro]だ。
になった。

 a 金色のどくろも同じ方法で冠詞を取れるかと思ったが、adv.tを加工するレベルでは無理ではないかと考える状況になってしまった。










ロビー執務室TADS



楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル