ニュース
» 2020年11月21日 20時30分 公開

Excel上で「ドラクエ3」を再現した勇者に「最大の変態」「控えめに言って天才」と称賛 一体どうやって?

作者のパパセンセイさんにもお話を聞きました。

[オピオン,ねとらぼ]

 表計算ソフトの「Excel」を使い、なおかつVBA(Visual Basic for Applications)を使用することなく「ドラゴンクエストIII」を再現する――。そんな信じ難い動画と、その作り方を解説したブログに「今まで見たExcel職人の中でも最大の変態」「控えめに言って天才」といった声が寄せられています。

 この偉業を成し遂げたのは、ブログ「パパセンセイ365」のパパセンセイ(@10mikiya)さん。投稿された動画はカクつきこそあるものの、どう見ても「ドラクエ3」。……と思いきや、後半ではMicrosoft Officeのヘルプで有名なイルカの“カイル君”も登場するなど、遊び心あふれるものになっています。



ExcelでVBAを使わないでドラクエ3を再現してみた

Excelでドラクエ ちゃんと歩けるフィールド画面

Excelでドラクエ 戦闘突入時のアニメーションも

Excelでドラクエ モンスターとのバトルもそのまま

Excelでドラクエ 動画後半にはカイル君も登場

 VBAとは、Excel上で動かすことができるプログラミング言語のこと。これを使えばちょっとしたゲームのようなものも作れるのですが、パパセンセイはあえてこれを使いませんでした。一体どうやって、VBAを使わずにExcelで「ドラクエ3」を再現したのか、ここではブログを元に、プログラムやExcelの知識がなくても可能な限り理解できるように解説してみました。


「散布図」を使って強引にゲーム画面を作る

 ブログではまず、「散布図」を使用したゲーム画面の再現について触れています。散布図とは与えられたデータを“点”で表記するグラフのこと。棒グラフや折れ線グラフに対して“点グラフ”と呼ばれることもあります。


Excelでドラクエ これが散布図。与えた数値に応じて青い点が何カ所かに打たれています(パパセンセイさんのブログより)

 通常は与えられた数値を“点”で表示する散布図ですが、点の代わりに「任意の画像」に置き換えることもできます。パパセンセイさんは別途、16×16ドットのマップチップや勇者の画像などを用意して散布図上に配置。これで取りあえず動かないゲーム画面ができました。

 そしてここからが散布図の本領発揮。散布図はグラフですから、数値を変えれば点(=16×16ドットの画像)の位置が移動します。これを利用して、画面のスクロールやキャラクターの移動、戦闘画面への移行などを表現しているとのこと。


Excelでドラクエ 大体均一な正方形になるように調整した散布図

Excelでドラクエ この記事用に作った力作を点と置き換えてみました。これをもっと精密に行えば、正方形の画像の集合でゲーム画面を表現できます

Excelでドラクエ 上の妙なイラストで敷き詰めた散布図の1カ所だけ数値を変更。画像が1枚だけ右へ移動しています

Excelでドラクエ 散布図上に打つ点(=画像)の候補をあらかじめ用意しておいて、それらを反映させることでゲーム画面を表現しています(パパセンセイさんのブログより)

 加えて、これを利用すればフォントも扱うことができます。個々の点には“ラベル”を付けることができ、このラベルも散布図上には表示可能。つまり、黒一色の画像を用意して“こ”“う”“げ”“き”のラベルをそれぞれ付けておけば、“こうげき”という戦闘コマンドが表示できるわけです。これも同じように、数値を変えれば文字を書き換えたり、1文字ずつ滑らかに表示したりすることができます。


無限ループでアニメーション

 ただ、Excelは基本的に何かしらの入力が行われたときにだけ数値を計算したり、数値をもとにした散布図への反映を行ったりするソフトです。散布図に画像を配置しても、何も入力しないままでは勇者は棒立ちのまま。ここからゲームを動かすためにはもう一工夫が必要です。

 そこでパパセンセイさんは“循環参照”、言い換えれば“無限ループ”を利用しました。例えば「X=X+1」という計算をさせようとすると、計算を行うたびにXが1ずつ増えていくことになります。通常はこうなると警告が出るのですが、設定で警告を出ないようにして、F9キー(押すたびに再計算を行う)を押しっぱなしにすれば、時間に応じてXが1ずつ増えていく“カウンタ”が完成。これであとはカウンタの数字に合わせて画像を置き換えるようにすれば、アニメーションなどの処理ができるわけです。意外と力技だった。


Excelでドラクエ 無限ループする計算は、通常ならこういった警告がでます

Excelでドラクエ 例えば勇者の足踏みアニメーションは、カウンタの10の位を参照することで画像を置き換えています(パパセンセイさんのブログより)

VBAを使わずExcelだけで疑似プログラミング

 さて、これで画像の表示やアニメーションは可能になりましたが、ここからゲーム的な動きをさせるには、やはりプログラミング的な動作が必要になってきます。パパセンセイさんはここでVBAを使わず、Excelだけで“疑似プログラミング”ができる環境を作り上げました。


Excelでドラクエ 解説用に用意された、プログラムのフリをするExcel(パパセンセイさんのブログより)

 ここは細かく説明すると非常に長くなるのですが、ものすごく簡単に言ってしまえば、行ごとに「ステップ数」と「処理させたい内容」と「次に進むステップ数」を設定しておき、「その行の処理を終えたら次の行の処理を行う」という仕組みです。もちろん、ただ単に上から下に流れるだけでなく、処理に応じて「次に進むステップ数」の数字を書き換えれば、途中の処理を飛ばしたり、戻って処理をやり直したりといったことも可能。言うなれば、Excel自身が自分に指示を出している状態になり、あとはこれを複雑に組み合わせることで、ほぼプログラミングと同じような動きを(VBAを使わず)関数だけで再現できるというわけです。実はこここそが今回の挑戦の一番すごいところなのですが、もっと詳しく知りたい人はパパセンセイさんのブログをどうぞ。


Excelでドラクエ 次に処理する行を別途用意しておけば、処理を小分けにできるため見やすいプログラム(のようなExcel)にできるそうです(パパセンセイさんのブログより)

 さて、これで「画像の表示」「循環参照によるカウンタ」「セルを使った疑似プログラミング」という“ゲーム作りの道具”がそろったことになります。こうなってしまえば、もはや「ドラクエ3」に限らず、理論的にはほぼどんなゲームでも作ることが可能。あとはひたすら絵とプログラムを書いて組み合わせていけば……「ドラクエ3」の完成というわけです。ただ、パパセンセイさんによれば「唯一出来ないのが音を出すこと」で、VBAを使わず自由に音を鳴らす方法だけはいまだに分からないそうです。


Excelでドラクエ 実際に使われている戦闘用処理の一部(パパセンセイさんのブログより)

 ネット上ではこの、すさまじいまでの“力技”による「ドラクエ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.

先月の総合アクセスTOP10

  1. 「訃報」「愛猫」「手風琴」って読める? 常用漢字表に掲載されている“難読漢字”
  2. Excel上で「ドラクエ3」を再現した勇者に「最大の変態」「控えめに言って天才」と称賛 一体どうやって?
  3. 「降板を言い渡されて……」 小林麻耶、「グッとラック!」でのいじめを“笑顔”で主張 事務所とも突然の契約終了
  4. オンラインクレーンゲーム「トレバ」、景品獲得されそうになると“スタッフが裏操作”していたと発覚 被害者と運営会社を取材
  5. 加藤紗里、カフェ店員の前でパンケーキをたたきつぶす 衝撃動画に「これは笑えない」「何がしたいのか分からない」
  6. 保護した子ネコに「寂しくないように」とあげたヌイグルミ お留守番後に見せた子ネコの姿に涙が出る
  7. 「落選が内定」と開き直る金爆に「不甲斐ない」とAKB、謝罪する演歌歌手も 紅白出場逃した歌手の嘆き
  8. タイツメーカーのアツギ、「タイツの日」PRイラストで炎上 絵師25人以上とコラボ 「性的搾取」など関連ワードがTwitterトレンド席巻
  9. 「とうとうその日が来た」 AKB48、紅白落選で衝撃 メンバーは“言い訳のできない現実”を受け止める
  10. Koki,&cocomi、若かりし父・木村拓哉とのラブラブショットで48歳バースデーを祝福 「いつまでもカッコイイ父上でいてください」