TSG
部報
Vol.178
—
駒祭反省号
—
目次
1 駒祭の反省 . . . Zephyr 2 2 ポケコン 8 台通信ゲーム企画の反省 . . . TARO 4 3 駒祭反省.AJI . . . あじ 6 4 DS が HR に勝つ日 . . . みつだ 7 5 占い —理論と非理論との狭間に— . . . うんぶ 9 >謎< 6 「花占い」のひみつ . . . 花占い研究班 12 表紙:大気を汚したのは、レーザープリンタの出すオゾンです:-) (HRD)恒例
!!
各賞発表
(T_T)
あう、忘れちゃいました。たぶん、 賞 受賞者 副賞 逆ステルス賞 TANK 班 脱輪したミニ四駆 座賞 ポケコン分科会 ??? ビジネス賞 占い班 パイプ うのめ賞 Makken めがね たかのめ賞 みつだ めがね ドロちゃん賞 立て看部隊 ??? ハンズ大賞 CYC ハンズの紙袋 だったと思います。(あやしい∼)1
駒祭の反省
駒場祭での惨状
こんばんは。タンク担当者 (メイン) の Zephyr であります。 ところで、みなさん。TANK ゲームってご存じですか (爆)。そう、’93 年の駒場 祭で出展する予定だった、幻のゲームです。本当だったら今年の目玉になるはずだっ たのに……。 駒場祭で 106 に来た人は、滑らかに全方向スクロールする画面上でレーシング カー (?) ともつかぬ “タンク” が千鳥足1で動きまわり、更には実況中継のアナウン サーが “Live” の文字を点滅させつつ怪しげに手を打ち振って Excite していたのを 見ることができたはずです。あれです。 当然 “ゲーム” といえるような代物ではなく、最終日のプレゼンテーションには相 当な苦労が伴ったようです。結局、TSG でも希有の大失敗企画という不名誉な結果 のまま、駒場祭は終わってしまいました。 駒場祭の後の打ち上げコンパでは “逆ステルス賞” というありがた∼い賞をいただ き、賞状と副賞の “片側が脱輪したミニ四駆” を獲得しましたこの “片側脱輪” に含 まれる寓意は、くるくる動きまわることしかできない2という、TANK の未完成度 を示しているようです。駒場祭前の状況
こういう悲惨な結果に終わったとはいえ、あれだけのものを実現するためにはか なりの労力と技術が必要なことは紛れもない事実です。それらは、私の周囲の人間 がすべて調達してくれました。 新部長の Ein 君3は超高速スプライトルーチンを作ってくれたし、Aji 君も制御構 造だけなら C 言語に準ずるゴージャスな仕様を持つ中間言語コンパイラ tclc を作っ てくれました。その外にも重要なヒントを与えてくださった人はたくさんいます。 にもかかわらず、なぜタンクゲームが日の目を見なかったのかというと、私がど うでもよい飾り (アナウンサー、“Live” だよ:-) にこだわったあまり、とうとう完 成しなかったというのが真相であります。 というわけで、タンク失敗に関する全責任は私にあります。多分。 1とはいっても、あの千鳥足はTANK のコントロールプログラムが、“相加法による擬似乱数” とい う高級な“関数” を搭載している (本当) という証拠なんですが。え、ぜんぜん高級じゃないって? 2とはいってもあのミニ四駆、実際に走らせるとまっすぐ走るんですよね。:-> 3今日のコンパには来てるだろうな。なに、来てない? こらぁ。。。駒場祭後の状況
現在は何をしているのかというと、タンクの制作です。やっぱり。ここまで来た以 上は引き返せませんからね。それに、やめたら多分みんな烈火の如く怒るだろうし。 とにかく、必ず完成させますので、待ってください。例のミニ四駆はいまでも Zephyr の部屋の、MuiltiSync ディスプレイの上に飾ってあります。ミニ四駆の車輪 は TANK が完成するまでは直ることがないでしょう。 開発の進度はというと、レーダーユニットのテストも終わり、とりあえずお互い を認知して動くことができるという程度です4。後はゲームとして成り立つように各 パラメータを設定し、プリセットの関数をたくさん作らなくてはなりません。 ただ、あいかわらずコントロールプログラムは僕しか書けないし、そのファイル 名はコンパイルをしなおさないと変更できない (爆) と来ているので、ユーザインタ フェイスの拡充も緊急課題のひとつでしょう。 最終的にはユーザは自分がデザインしたタンクを自分のプログラムに従いフィー ルド上で走りまわらせることができるようになります。これは本当です。というよ り、もう実現しているので、そうなりましたというべきでしょう。そのためのパター ンエディタももうできております。最後に
あ∼あ、LaTEX による部誌もこれが最後なのね。情けないなぁ。でもこれからも 原稿は TEX のソースで打ち続けてやるもんね。ふふん。TANK のマニュアルはもちろん、TEX with Tpic でかっこいいものを作ります。 ちょっとは期待してください。 ところで TANK っていうのは、実をいうと仮題にすぎないのです。企画・構想の 段階から特に呼称が定まることもなく、ただ “TANK ゲーム” と呼ばれてきた、そ れだけのこと。というわけで、TANK ゲームのかっこいいタイトルを募集します。 なんかいい案がある人は、Zephyr に教えてください。 18.Dec.’93 (Sat) 02:20:21 Written by Zephyr p.s. 朝 2 時か……ここまで原稿を引き伸ばすだなんて、私って本当にひどいやつ。 いぬ。もつながらないし。果たしてこの原稿は載るんでしょうか?5 (T_T) 4ただしMATE 上での話……。最終的には、286 で EGC がなくても完動するようにしたいのだけ ど。 5編集註: いぬ。がダウンしていたので、東京 BBS で印刷当日の朝 10:30 に受け取りました:-)
2
ポケコン
8
台通信ゲーム企画の反省
TARO(7K2HEA) そもそもこの企画は「もうすぐ駒祭号」で aji 君が言い出したことから始まった のでした。aji 君が、通信のシステム部を作るから僕がゲームを作らないかと言うの です。駒祭まで時間があまりないのが気になりましたが、面白そうだったので引き 受けました。そして E500 系のポケコンでプログラムを組んだ試しはほとんどなく、 SC62015 という CPU も使ったことがほとんどないのにこの企画はスタートしたの でした。まずしたことは CPU の命令を覚えることでした。Z80 と 8086 と CASL(お いおい) はできるのですが、SC62015 はこれらとアーキテクチャがかなり違い苦労 しました。 この CPU について驚いたことは、256 バイトの内部 RAM の存在、20 ビットの レジスタがあり 1M のメモリにダイレクトなアクセスが可能なこと6、スタックに 16 ビットではないレジスタをプッシュできること7、mv a,[x++]8などCみたいな命令 があること、I/O が内部 ram 上にあること9、などなど数多くありました。 つぎに E500 系のポケコンのハードの制御法や BIOS の使い方を学んで取り敢え ず 1 台で動く簡単なライトサイクルをてこずりましたが作りました。これを拡張し て 8 台通信ゲームにすればいいやと思っていましたが、重大な落とし穴があったの です。ライトサイクルは 1 秒間に数十ドット進まなくては面白いゲームになりませ ん。ところが通信システムの能力では 1 秒間に十数回しかデータをやり取りできな いことが分かりました。 これでライトサイクルは没。そもそもあの狭い画面で 8 本の線が走るのは無理が あります。かといってスクロールしたらゲームにならないでしょうし。というわけ で、この企画のゲームとして相応しいのは以下の条件を備えたゲームなのです。 1. 1 秒間に数回しかポケコン間のデータ交換が必要でないこと。 2. U6000 では画面いっぱいに表示を行うと薄くなるので、できれば画面をいっ ぱいに塗り潰さないこと。 3. キーがマトリックス方式で組み合わせによっては正しくキースキャンができな いので、適切なキーを使うこと。 4. 面倒なグラフィックの少ないこと10。 6セグメントというのがないわけ。 7Z80 や 8086 では 16 ビット長以外の push や pop はできない。 8Cでかけばa=*x++ 9Z80 や 8086 では in や out でアクセス。 10ただ絵を描きたくないだけ。5. 相手の画面やキー入力するところが見られないという点を活かすこと。 6. 人間同士の戦いが中心であること11。 7. 駒祭だから一般受けすること12 。 第 7 項以外を満たすものとして潜水艦ゲームを考えつきました。各プレイヤーが 1 艦づつ潜水艦を受け持ち相手の位置をソナーなどで探り魚雷などで攻撃するので す。相手の作戦が見えないのでなかなか面白いと思ったのですが、一般受けはしそ うになかったので却下しました。で結局作り始めたのはタンクゲームでした。後方 の視界を悪くし、視野の処理をしっかりやってやれば、物陰に隠れるとか、後ろか ら回りこむとか面白い作戦が取れるのではと思ったのでした。ゲームを作り始めま したが駒祭前日でも終わらず、当日も徹夜しても終わらず、できたと思ったら、aji 君の通信システムが作動していなかったり、結局通信部分が動かなかったので駒祭 中に出来上がりませんでした13。
教訓
:
共同開発で掛かる時間
∝
単独開発で掛かる時間
×
人数
2
11対戦ぷよぷよみたいに自分の得点が相手のペナルティになるというのが対戦の主な部分であるのは いやだ。せっかく8 台も繋いでやるのだから。 12マニアックなのを作って内輪で盛り上がるのも楽しいけど。 13今年中に完成させたい。3
駒祭反省
.AJI
あじ<
TANK >
僕はタンク制御言語及び中間言語の仕様決定と、制御言語→中間言語コンパイラ の作成をやりました。駒祭数日前にはきちんとコンパイラをあげました。にもかか わらず、なぜ TANK は「踊る」ことしかできなかったのでしょう? 理由は極めて単純で、「敵の位置に関する情報を与える関数が用意されていなかっ た」からです。コンパイラ側ではすぐに追加できるようにしておいたのですが、結 局駒祭期間中関数は作られなかったようです。 なんでそんな簡単なことが行われなかったのか僕にも不明なのですが、この件に ついてはしかるべき人からしかるべき報告があるはずなので、あえて僕からは言及 しない事にしますB-) サークルオリでは展示できるよね?> zephyr<占い>
駒祭 1 日目に、占いのソースをいじらせてもらってテキストを標準出力に流すよ うにし、適当に改頁コードと改行コードをぶち込むだけのフィルタを書きました。 パイプを使った占いの起動バッチを書いたのは僕です。当時はパイプが遅いとい うのを知らなかったもので(^^; ビジネス賞のパイプはありがたく頂戴しておきました。大事に使わせてもらいま す:-)<ポケコン>
かなり早い時期に LAN マネージャは書いておいたつもりだったのですが、駒祭 3 日目に TARO 君が制作中の TANK ゲームの方と併せてみたら異常な動きしかしま せんでした^^; (始めっから駒祭期間中にデバグするつもりだったのでした(^^;)ヒ ドイ) やはり早めに複数台つないでテストしておくべきでした。結局駒祭期間中は原因 が判明しなかった... 残念 (教訓) 通信物は小さいものでも、何が原因で動かないのか判りにくい。 #「座賞」ありがとうございましたB-(4 DS
が
HR
に勝つ日
みつだ 駒祭2 週間前: Makken が部室で見せていたマキシマムもどきを見る。DS でもで きないかなと考えはじめる。 1、2 日後: プログラム「勘」ピューターの答えは、探索回数 128, 横 80 方向, 縦 50 だとして DS で秒 10 枚。「やってやる」宣言。「無理、むり」と答えが返ってくる。 Kuma くん、「秒 4,5 枚でせいぜいなんじゃない。」 その週末: まず仮想 VRAM から実画面への転送ルーチンを作る。仮想 86 モード で秒 50 枚。リアルモードでは、秒 70 枚。OUT 命令を乱用しているのが原因。やっ ぱり、無理かなと不安がよぎる。 駒祭6 日前: あっさりと動く。かんどー。ずーっと眺めっぱなし。かなり、簡単 な背景だった事を考慮する必要があるが、秒 10 枚に達する。 次の日: 部室で見せる。「おお、すごい!!」。その日の内に 98 ではこれくらい動く のが当たり前になる。 Kuma くん、「これくらい、当然っす! もっと縦に細かくしないと· · · ·」 これは後回し、Makken の話を聞いて魚目になっていたのを直す。 駒祭1 日目: マップを、HR から持ってくる。マップが複雑になっていたため秒 9 枚くらいにまで落ちる。このときはマウスバージョンで操作性が悪かった。その ため、 「母:あっちの機械 (98) でもできるでしょ」 「子:だって、あっちは速すぎるんだもん。」 こんな風景も見られたそうだ。 駒祭2、3 日目: 色データを高さデータと試しに同じにして見る。グラデーション がかかって、前よりずっと奇麗。なーんだ。後、ジョイパッドに対応。駒祭1 週間後: 実はタコだった事に気付く。直す。くぞ、駒祭の時にこのバージョ ンを出していれば、「あっ、実は HR よりも DS の方が速いじゃん」となっていたの にーーー (嘘) 具体的に直したのは、 1. 高さの差 0∼255 のテーブルを引き負の場合は修正していたのを、テーブルを 2 倍にして、高さの差 -255∼+255 をそのまま角度に直すテーブルにした。 2. 調査点が見えない場合に、角度の差 (0-127) によってどのくらい省略できるの かというテーブルを作った事。これによって、探索回数は探索距離にとって変 わった。(今は、何回探索しているのかさえ実はわからない。) 3. その代わりラジアンテーブルをワードからバイトに変えたこと。精度にあまり 影響はなかった。 現在: C から呼び出せる関数形式に改造中。やっぱメインは C でないといろいろ 面倒。だろうし。 スペック: 探索距離 255, 横 80, 縦 50 画面で秒 13∼16 枚。探索距離 128 なら秒 20 枚を越える事もある。(DS で計測) とりあえず、デモソフトにしてネットに流す予定。
5
占い
—
理論と非理論との狭間に
—
うんぶ (TSG 占い班所属)第
1 章 占い—その制作に潜む追試とテーブルの影—
我々、といっても二人しかいないが、私うんぶと Ichi は、駒祭において「占い」 を担当することになった。時に 1993 年 10 月 2?日の事である。この時点で駒祭まで 30 日弱、我々は楽勝じゃん!と気楽なムードで過ごしていた。 言い訳めくが、その楽勝ムードをあっさり地獄の日々へと尽き落としてくれたの が、今年の 1 年生全体を揺るがした「成績表ショック」というわけである。私も、 TSG1 年生として、当然のように 数学 1:D、数学 2:D という成績をマークした14。 そのため、追試に否応なく巻き込まれることになり、11 月 12 日に追試が終了す るまで、「愛の六十花占い」と「四柱推命入門」という 2 冊の本を買い、「この本を 使って占うことにしよう」というぐらいしか決まらなかった。 それでも、占いなんていうものは高級言語を使えば、さくさく組めるもので、11 月 13 日 (金) に、ご存じ Tsg Annex Hrd Laboratory(TAHL、あるいは簡単に原田 研) で夜通し組み始めてからは、ある程度の能率で進んだ。 しかし、四柱推命&花占いの恐ろしいのは、本の占い方はすべて、何年何月何日 何時何分に生まれたかというデータを巻末の膨大な表を参照することになっており、 その表がどういうアルゴリズムで出てきたかはどこにも書いていないのである、規 則性が見つかりやすいのはもちろん、規則性を使ったが二つわからない表があり (こ れは TSG 部員の 1 部で規則性発見の会が開かれていたほど人気があった)、いかさ まな占いにしないためには、テーブルを作らざる終えなかった 。テーブルは私が 1008 個の 8 桁の数字、Ichi 君がなんと!3600 個のアルファベット 1 文字+数字 1 文 字、というプログラムを作ってんだか、テーブル打ちをやってんだか分からない程 疲れるものだった。 ただ、助かったのは、我々の窮状を見かねて、small 松浦君が (余談:なぜ small か といえば、小スキピオとかは見てわかるけど小松浦ってわかんないからね) 占いの 入力ルーチンを作ってくれたことだった。 しかし、変数名規約など作ったわりには、すっきりと link できたわけではなく、互 いに同じものをバラバラな名前でつかっていて、検索置換とかをやると変なことがお きるかもしれないので、渡すときに代入しなおしたりする、あほな link だった。(実 際は駒祭当日私が寝ている間に原田さんがちょこちょこっとやってくれたようだ15 14特筆すべきこととして、私はこの時点では数学科志望であった 15編集註:やったっけなぁ? 他の人では?)また、駒祭二日目には、tank の方の仕事が終わっていた aji 君がプリンター表示 の辺りを改善してくれて、見易い出力となった。 などど、長々制作の怪しさを見ていただいたが、反省すべきことをあげると、何 人かでプログラムを組むときは、できるだけ速くスタートすべきだったと言うのが 教訓である、何人かで組むというのはそれになれないものにとって、調整にかかる 時間が一人の時よりも数倍かかるので、簡単そうだ、二人ならもっと楽だろうから 楽勝などと勝手に思ってはいけないという事である。 占いマーフィーその 1:
N人で開発する場合、開発時間は Nに比例する。
また、結局初日の朝はほとんど動いていないという状態だったので、実質駒祭に 間に合ったとは言えないので、大事な企画の一つである占いを駒祭に間に合わせら れなかったことは、大変恥ずべき事だと思っています。情けなし· · · あと、来年作る人へ参考になるかもしれないので少し気付いたことをあげておくと、 占いの選定は満足のいくまで選んだほうがよいです。今年はちょっと 失敗だった。とりあえず、ベストなのは、プログラムしやすく、テーブ ル打ちでむなしくならず、そのわりにテキスト量が多いものです。(もし かしてこれって今年の反対じゃ...) テキストは部員の方々に打ってもら えるので、量は大丈夫だからねぇ。 あと、これは慣習にあわないかもしれないけど、間に合わなそうだっ たら、入力ルーチンぐらいは今までのを使うと、多分早いと思う。どう せ占い自体は変えなくちゃいけないからねぇ。ほんとは、入力ルーチン なんていらないんだけど、単に見栄えだけだし。(TSG 部員は入力ルー チンぐらいひどいのでも大丈夫な人だらけだもん) ちなみに、去年のカバラを親戚が来て家でやりたいってい うからやろうとしたら、atok7 と相性が悪くてハングるので、 他の fep がないから、わざわざ dos の[16 進] モードで漢字 コード探して打ったから、入力ルーチンなんてなくてもその くらい大丈夫といういい例でしょ。(necai.sysってあったと 思うけど、どこだか忘れた) 占いマーフィその 2:追試の難易度は勉強時間に反比例する。
(勉強して損した)
第
2 章 東大新聞の占い評価
私はよく知らないが、東大新聞で占いの評価という記事があって、その中で TSG の花占いはいかさまといわれていたそうだが、我々がいかさまをしなくても、本が いかさまなら、我々の占いもいかさまになるのは当然なので、いい本にしとくとやっ ぱいいよなぁって感じです。 しかし、取材にきた一人だけでその占いが当たるかどうかなんてなんでわかるん だ! 納得いかん· · ·編集長の独り言 あー、原稿が集まらん(;_;)仕方ないから前号に掲載し忘れた(オイ)UMB 君の原稿でも掲載してお茶を濁そう。
6
「花占い」のひみつ
理論科学グループ花占い研究班6.1 花占いとはなにか。
そもそも、花占いを説明する前に四柱推命のことを説明しなくてはなりません。 ご存知の方もおおいでしょうが、四柱推命とは人の生年月日、なんと生まれた時間 まで用いて運勢をばっちり当ててしまうという、中国四千年の歴史をもつ優れた占 いなのです。さて、四柱推命と花占いの関係ですが、花占いは四柱推命の欠点を克 服しつつ、相性についても正確に占えるようにした占いなのです。6.2 占い方の実際
占う場合には、占いたい人の生年月日時にある演算を施します。これは大したこ とをしていないものもあれば、非常に複雑な論理演算をしなくてはならないのもあ ります。具体的には、生日に対する花を求めるのは簡単ですが、生月から蔵干通変 星という内部パラメータをだすためには((x2+ 10− x1 and 254) mod 10) xor (x1 and 1)
という論理演算まで駆使しなくてなならず、なかなか大変です。占いの実際を詳し く知りたい方は、まず「四柱推命入門」と「愛の花占い」をお読みになることをお 薦めしますが、この占いで占った方はご自身で複雑なことをするまでもなく、運勢 をお分かりいただけるので、他の方を占おうと言うのでなければ、この機会に占わ れることをお薦めします。
6.3 占いたくなったひとへ· · ·
占いたくなったら、できるだけ生まれた時間を覚えてきてくださると、出力され るデータがより正確になる場合もあります。時間がわからなくても独自のアルゴリ ズムにより、96.6% 同じデータをだせるようになっておりますので、生まれた時間 が分からない方も心配せずにぜひいらっしゃってください。編集後記
♦ あー、現在、印刷当日11:40amであります。 ♦ 原稿の集まりが悪いねぇ(;_;) ♦ でも179号は妙に集まりが良さそうなので、その影響か? ♦ 179号は昨日印刷しましたが(はっ、179号の方が先に発行されるとは:-))、 フォントの選択がまちがってるなぁ、って感じですね。他はなかなか美しい。 ♦ うん、やっぱWindows上で編集すると図をいれたりするのが楽そう。 ♦ でも、LaTEXは386で十分動くし、私はあと数年は使い続けるでしょう。 ♦ 今回はレーザープリンタを奪われたので:)、熱転写で印刷です。やっぱり遅 いよう(T_T) ♦ いろいろとあやしげな教訓とか法則が提示されたことだし、来年に生かしま しょうね(苦笑) ♦ 私の編集する部報はこれがラストです。新編集部に期待しましょう! 編集長 理論科学グループ部報 TSG 第 178 号 平成 5 年 12 月 18 日 初版 第 1 刷発行 発行者 松内 良介 編集者 原田 昌紀 発行所 理論科学グループ 〒 153 東京都目黒区駒場 3-8-1 東京大学教養学部内 学生会館 305 tel. (03)3467-1534(呼) cTheoretical Science Group,University of Tokyo, 1993