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.
関連記事
- ファミコンなのにヌルヌル回転縮小、とある自作ゲームに「意味わからない」「すげぇ」と称賛の声
「古いハードは触っていて楽しい」との思いからファミコンで作ったそうです。 - アトラスなのにちゃんと原作尊重してて偉い! 令和によみがえった「真・女神転生III」、歴年のファンから見た良い点・ダメな点
あと一歩だけ本気を出して欲しかった、という部分はあるものの……オコッテナイデスヨ。 - 水平思考(ねとらぼ出張版):「ファイナルファンタジーらしさ」とは飛空艇でありシドであり大して強くないアルテマである
なぜFFシリーズの飛空艇は「速い」のか? - 懐かしの「ゲーム&ウオッチ」が復活! スーパーマリオ35周年記念コラボで
「スーパーマリオブラザーズ」「スーパーマリオブラザーズ2」が遊べる! - 「桃鉄」最新作は11月19日発売 早期購入特典にファミコン版「スーパー桃太郎電鉄」
関連リンク
Copyright © ITmedia, Inc. All Rights Reserved.
-
岡田紗佳、一連の騒動を生中継で謝罪 頭を深く下げ「申し訳ございませんでした」
-
がん闘病の森永卓郎、容態急変後にモルヒネ投与で“結構厳しい状況” スタジオ出られず弱々しい声で「そう長く持たないかもしれない」「本格的に転移が始まったよう」
-
新潟のお葬式で香典返しにもらった“謎の白い物体” パッケージにも情報なし「これなんだかわかりますか?」
-
「立体的に円柱を描きなさい」→中1の“斜め上の解答”に反響「この発想は天才」「先生の優しさも感じます」 投稿者に話を聞いた
-
鮮魚店で売れ残ったタコを水槽に入れたら、数週間後まさかの展開が…… 胸を打つ光景に「目が腫れるくらい泣いてます」
-
大人なら5秒で解きたい!「9+0÷2−3」の答えは?【算数クイズ】
-
「うちの祖父(81)わけてほしいわこのセンス……」 衝撃的な私服コーデに驚きの声「本物のイケジイ」「目標にします!!」
-
買ったばかりの家の風呂場に”ありえない欠陥” 信じられない状況に「そんなことある?」「取り付けた業者……」
-
「昔はモテた」と自慢げな父→娘は“絶対ウソやん”と思っていたけど…… 当時の姿に「ハハハ冗談だろ?」【海外】
-
正方形のスカーフ1枚→切ってゴムを縫い付けるだけで…… 魅力的な完成品に「デザインがきれい」「簡単に作れました」【海外】
- 風呂に入ろうとしたら…… 子どもから“超高難易度ミッション”が課されていた父に笑いと同情 「父さんはどのようにしてこのお風呂に入るのか」
- DIYで室温が約10℃変わった「トイレの寒さ対策」が310万再生 コスパ最強のアイデアへ「天才!」「これすごくいい」
- 岡田紗佳、生配信での発言を謝罪 「とても不快」「暴言だと思う」「残念すぎ」と物議
- スーパーで買った半玉キャベツの芯を植え、5カ月育てたら…… 農家も驚く想像以上の結末が1300万再生「凄い」「感動した」
- 東京藝大卒業生が油性マジックでサンタを描いたら? 10分で完成したとんでもない力作に「脱帽です」「本当にすごい人」
- 定年退職の日、妻に感謝のライン → 返ってきた“言葉”が約200万表示 大反響から7カ月たった“現在の生活”を聞いた
- 【ヤフオク】“3万円”で購入した100枚の着物帯 →現役着付師が開封すると…… “まさかの中身”に驚き
- 「立体的に円柱を描きなさい」→中1の“斜め上の解答”に反響「この発想は天才」「先生の優しさも感じます」 投稿者に話を聞いた
- 「すんごい笑った」 “干支を覚えにくい原因”を視覚化したイラストが勢いありすぎで1700万表示の人気 「確かにリズム全然違う!」
- 母親から届いた「もち」の仕送り方法が秀逸 まさかの梱包アイデアに「この発想は無かった」と称賛 投稿者にその後を聞いた
- ザリガニが約3000匹いた池の水を、全部抜いてみたら…… 思わず腰が抜ける興味深い結果に「本当にすごい」「見ていて爽快」
- パパに抱っこされている娘→11年後…… 同じ場所&ポーズで撮影した“現在の姿”が「泣ける」「すてき」と反響
- 東京美容外科、“不適切投稿”した院長の「解任」を発表 「組織体制の強化に努めてまいる所存」
- ズカズカ家に入ってきたぼっちの子猫→妙になれなれしいので、風呂に入れてみると…… 思わず腰を抜かす事態に「たまらんw」「この子は賢い」
- 母親から届いた「もち」の仕送り方法が秀逸 まさかの梱包アイデアに「この発想は無かった」と称賛 投稿者にその後を聞いた
- イモトアヤコ、購入した“圧倒的人気車”が思わぬ勘違いを招く スーパーで「後ろから警備員さんが」
- 「何があった」 絵師が“大学4年間の成長過程”公開→たどり着いた“まさかの境地”に「ぶっ飛ばしてて草」
- フォークに“毛糸”を巻き付けていくと…… 冬にピッタリなアイテムが完成 「とってもかわいい!」と200万再生【海外】
- 「何言ったんだ」 大谷翔平が妻から受けた“まさかの仕打ち”に「世界中で真美子さんだけ」「可愛すぎて草」
- 鮮魚スーパーで特価品になっていたイセエビを連れ帰り、水槽に入れたら…… 想定外の結果と2日後の光景に「泣けます」「おもしろすぎ」