Excel上で「ドラクエ3」を再現した勇者に「最大の変態」「控えめに言って天才」と称賛 一体どうやって?
作者のパパセンセイさんにもお話を聞きました。
表計算ソフトの「Excel」を使い、なおかつVBA(Visual Basic for Applications)を使用することなく「ドラゴンクエストIII」を再現する――。そんな信じ難い動画と、その作り方を解説したブログに「今まで見たExcel職人の中でも最大の変態」「控えめに言って天才」といった声が寄せられています。
この偉業を成し遂げたのは、ブログ「パパセンセイ365」のパパセンセイ(@10mikiya)さん。投稿された動画はカクつきこそあるものの、どう見ても「ドラクエ3」。……と思いきや、後半ではMicrosoft Officeのヘルプで有名なイルカの“カイル君”も登場するなど、遊び心あふれるものになっています。
VBAとは、Excel上で動かすことができるプログラミング言語のこと。これを使えばちょっとしたゲームのようなものも作れるのですが、パパセンセイはあえてこれを使いませんでした。一体どうやって、VBAを使わずにExcelで「ドラクエ3」を再現したのか、ここではブログを元に、プログラムやExcelの知識がなくても可能な限り理解できるように解説してみました。
「散布図」を使って強引にゲーム画面を作る
ブログではまず、「散布図」を使用したゲーム画面の再現について触れています。散布図とは与えられたデータを“点”で表記するグラフのこと。棒グラフや折れ線グラフに対して“点グラフ”と呼ばれることもあります。
通常は与えられた数値を“点”で表示する散布図ですが、点の代わりに「任意の画像」に置き換えることもできます。パパセンセイさんは別途、16×16ドットのマップチップや勇者の画像などを用意して散布図上に配置。これで取りあえず動かないゲーム画面ができました。
そしてここからが散布図の本領発揮。散布図はグラフですから、数値を変えれば点(=16×16ドットの画像)の位置が移動します。これを利用して、画面のスクロールやキャラクターの移動、戦闘画面への移行などを表現しているとのこと。
加えて、これを利用すればフォントも扱うことができます。個々の点には“ラベル”を付けることができ、このラベルも散布図上には表示可能。つまり、黒一色の画像を用意して“こ”“う”“げ”“き”のラベルをそれぞれ付けておけば、“こうげき”という戦闘コマンドが表示できるわけです。これも同じように、数値を変えれば文字を書き換えたり、1文字ずつ滑らかに表示したりすることができます。
無限ループでアニメーション
ただ、Excelは基本的に何かしらの入力が行われたときにだけ数値を計算したり、数値をもとにした散布図への反映を行ったりするソフトです。散布図に画像を配置しても、何も入力しないままでは勇者は棒立ちのまま。ここからゲームを動かすためにはもう一工夫が必要です。
そこでパパセンセイさんは“循環参照”、言い換えれば“無限ループ”を利用しました。例えば「X=X+1」という計算をさせようとすると、計算を行うたびにXが1ずつ増えていくことになります。通常はこうなると警告が出るのですが、設定で警告を出ないようにして、F9キー(押すたびに再計算を行う)を押しっぱなしにすれば、時間に応じてXが1ずつ増えていく“カウンタ”が完成。これであとはカウンタの数字に合わせて画像を置き換えるようにすれば、アニメーションなどの処理ができるわけです。意外と力技だった。
VBAを使わずExcelだけで疑似プログラミング
さて、これで画像の表示やアニメーションは可能になりましたが、ここからゲーム的な動きをさせるには、やはりプログラミング的な動作が必要になってきます。パパセンセイさんはここでVBAを使わず、Excelだけで“疑似プログラミング”ができる環境を作り上げました。
ここは細かく説明すると非常に長くなるのですが、ものすごく簡単に言ってしまえば、行ごとに「ステップ数」と「処理させたい内容」と「次に進むステップ数」を設定しておき、「その行の処理を終えたら次の行の処理を行う」という仕組みです。もちろん、ただ単に上から下に流れるだけでなく、処理に応じて「次に進むステップ数」の数字を書き換えれば、途中の処理を飛ばしたり、戻って処理をやり直したりといったことも可能。言うなれば、Excel自身が自分に指示を出している状態になり、あとはこれを複雑に組み合わせることで、ほぼプログラミングと同じような動きを(VBAを使わず)関数だけで再現できるというわけです。実はこここそが今回の挑戦の一番すごいところなのですが、もっと詳しく知りたい人はパパセンセイさんのブログをどうぞ。
さて、これで「画像の表示」「循環参照によるカウンタ」「セルを使った疑似プログラミング」という“ゲーム作りの道具”がそろったことになります。こうなってしまえば、もはや「ドラクエ3」に限らず、理論的にはほぼどんなゲームでも作ることが可能。あとはひたすら絵とプログラムを書いて組み合わせていけば……「ドラクエ3」の完成というわけです。ただ、パパセンセイさんによれば「唯一出来ないのが音を出すこと」で、VBAを使わず自由に音を鳴らす方法だけはいまだに分からないそうです。
ネット上ではこの、すさまじいまでの“力技”による「ドラクエ3」再現に対し、「Excelの懐の深さなのか作者の狂気なのか判別がつかん」「久しぶりに『才能の無駄遣い』タグを付けたくなる突き抜けたのを見てしまった」など惜しみない称賛が寄せられることに。なお、今回の挑戦で実質どんなゲームでも作れるようになったパパセンセイさんですが、次は「テトリス」に挑戦するとブログを締めくくっており、既に着手をしている様子です。
最後に、なぜExcelで「ドラクエ3」を再現しようとしたのかなど、パパセンセイさんからメッセージをいただくことができました。
―― そもそもなぜExcelで、しかもVBAも使わずに「ドラクエ3」を作ろうと思ったのでしょうか。
パパセンセイさん:もともとExcelの機能や関数の勉強をしていたのですが、一つずつ機能を確かめるだけでは面白くなく定着もしませんでした。そこで目標として、ゲームを作れば楽しく学べるのではないかと思ったのがExcelでゲームを作り始めたきっかけです。課題があれば、その課題を解決するという目的を持って機能を隅から隅まで探すことになるので、とても効果的な勉強方法になっていると感じています。出来上がったものを私の子どもに遊んでもらうのも楽しみですね。
―― ブログを見ると、これまでにも簡単なゲームは再現されていたんですね。今回特に苦労したのはどのあたりでしたか。
パパセンセイさん:「ドラクエ」はこれまで作成した他のゲームより処理や分岐が複雑で、正直ギブアップしようと思っていました。Excelの機能を上から下までボタンを1つずつクリックしては動きを確認する作業を2~3周して、ようやくたどり着いたのが記事のような機能の組み合わせです。
―― よく完成にこぎつけましたね……。
パパセンセイさん:平日の夜2時間程度しか作業できず、予想外に大変だったのでくじけそうになりました。また、課題に対しゴールが見えるとやる気がなくなる性格なので、途中で手を止めてしまうのでは? という懸念もありました。毎日Twitterに進捗(しんちょく)を報告して、皆さんの反応をいただけたのが最後までやる気を維持できた要因ですね。フォロワーの皆さんには感謝です。
(C)1988, 2019 ARMOR PROJECT/BIRD STUDIO/SPIKE CHUNSOFT/SQUARE ENIX All Rights Reserved.
Copyright © ITmedia, Inc. All Rights Reserved.
“この子はきっと中型犬サイズ”と思っていたら……たった半年後とんでもない姿に 「笑わせてもらいました」
「さすがに無神経な内容」 “暴言受けた”伊藤友里が降板発表→岡田紗佳の直後の投稿に批判の声 Mリーガーも反応
2020年から脳出血で療養中の俳優、近影にファン感動 「だんだんと顔が……」「大集合してる!」
年の差21歳で「夫は娘の同級生」 “両親大激怒”で結婚は猛反発されるも……“まさかの行動”で説得
最初に軽く結ぶだけで…… 2000万再生された“マフラーの巻き方”に反響「これは使える」「素晴らしいアイデア」【海外】
自然発火する危険な合金を液体窒素に入れたら…… 衝撃のラストが1600万再生 「狂ってる」【海外】
ママが反抗期の娘に作った“おふざけ弁当”がギミックてんこ盛りの怪作で爆笑 娘「教室全員が見に来た」
「これすごい」 飛行機のエコノミークラスに搭乗→“まさかの機内食”に思わず二度見 投稿者に話を聞いた
山奥にあるゴミだらけの“ボロボロ廃墟”→2年間コツコツ片付けたら…… まさかの激変ぶりが50万再生「いやぁ~すごい」
16歳で結婚&出産 今日好き“しゅんまや”が約5年で離婚発表に衝撃の声続々 「信じられない……」「子どもは大丈夫?」
- パパに抱っこされる娘、13年後の成人式に同じ場所とポーズで再現したら…… 「お父さん若返った?笑」「時止まってる」2人の姿に驚き
- 古いバスタオルをザクザク切って縫い付けると…… 目からウロコの再利用に「すてきなアイデア」【海外】
- 14歳のとき、親友の兄と付き合うことになった女性→13年後…… “まさかの結末”に「韓国ドラマみたい」【海外】
- リンゴを1年間、水の中で放置→顕微鏡で見てみたら…… 衝撃の実験結果に「これはすごい」「息をのみました」【海外】
- 海釣り中、黒猫に「ちょっと来い」と呼び出された釣り人 → 付いて行くと…… 運命のような保護から2年、飼い主に話を聞いた
- “駐車場2台分”の土地に、建築家の夫が家を建てたら…… “とんでもない空間”に驚き「すごい。流行る」
- 「なんだこの暗号は……」 マクドナルドの“大人だけが読めるメッセージ”が410万表示「懐かしい~」「読める人同世代w」
- 着陸する戦闘機を撮ったはずが…… タイミングが絶妙すぎる1枚に「一部の専門家には貴重な一枚」 投稿者に話を聞いた
- ズボラ母が5人分サンドイッチを爆速で作ったら…… 目からウロコの時短テクと美しい仕上がりに「信じられない」
- 【今日の計算】「7-2×0+9」を計算せよ
- ドブで捕獲したザリガニを“清らかな天然水”で2週間育てたら…… 「こりゃすごい」興味深い結末が195万再生「初めて見た」
- 「配慮が足りない」 映画の入場特典で「おみくじ」配布→“大凶”も…… 指摘受け配給元謝罪「深くお詫び」
- 母「昔は何十人もの男性の誘いを断った」→娘は疑っていたが…… 当時の“モテ必至の姿”が1170万再生「なんてこった!」【海外】
- 風呂に入ろうとしたら…… 子どもから“超高難易度ミッション”が課されていた父に笑いと同情 「父さんはどのようにしてこのお風呂に入るのか」
- 母親から届いた「もち」の仕送り方法が秀逸 まさかの梱包アイデアに「この発想は無かった」と称賛 投稿者にその後を聞いた
- 市役所で手続き中、急に笑い出した職員→何かと思って横を見たら…… 衝撃の光景が340万表示 飼い主にその後を聞いた
- 「ごめん母さん。塩20キロ届く」LINEで謝罪 → お母さんからの返信が「最高」「まじで好きw」と話題に
- DIYで室温が約10℃変わった「トイレの寒さ対策」が310万再生 コスパ最強のアイデアへ「天才!」「これすごくいい」
- 「こんなおばあちゃん憧れ」 80代女性が1週間分の晩ご飯を作り置き “まねしたくなるレシピ”に感嘆「同じものを繰り返していたので助かる」
- 岡田紗佳、生配信での発言を謝罪 「とても不快」「暴言だと思う」「残念すぎ」と物議