11月初め、Microsoftの表計算ソフト「Excel」でマクロ言語「VBA」(Visual Basic for Applications)を使わずに『ドラゴンクエストIII そして伝説へ』(以下、ドラクエ3)の序盤を再現した猛者が現れたことが話題となった。
まとめました。
— パパセンセイ@Excelで遊ぶ人 (@10mikiya) November 3, 2020
機会がありましたら皆さんも是非チャレンジしてみてください!
ExcelでVBAを使わないでドラクエ3を再現する https://t.co/Pq0nSICEI3 #Excel #NoVBA #ドラクエ
VBAを使わずに『ドラクエ3』を再現したのは、普段の業務でExcelを使う仕事をしているブロガーのパパセンセイ氏だ。氏が公開した動画「ExcelでVBAを使わないでドラクエ3を再現してみた」では、ファミコン版『ドラクエ3』の序盤、最初の街「アリアハン」からフィールドを移動して「スライム」などのモンスターと遭遇、戦闘シーンまでもが見事に再現されていることを確認できる。
Excelでは、付属しているVBAを使ってプログラミングができるので、オセロやブロック崩しゲーム、『スーパーマリオ』や『ロックマン』を制作可能だ。しかしパパセンセイ氏はこのVBAを頼らずに、Excelの関数と機能だけでセル上で擬似的なプログラムを再現することへ成功した。
具体的にはオプションで反復計算を有効にして、循環参照を使ったという。循環参照は、セル参照がループ(循環)している状態のことで、普段はエラーメッセージが表示されるが、あえてそれを利用することによってプログラムカウンタを実現している。
またとくに難問だったのがアニメーションの再現とのことで、これはキーボードのF9キーを押しっぱなしにして再計算し続けることで突破したとのこと。なお地図やモンスターなどの画像は、パパセンセイ氏がExcelで1から作ったものを使用している。
パパセンセイ氏いわく「セル上でも疑似的なプログラミングが可能だということは、ほとんどのゲームが作れる」とのことだが、課題としてはVBAを使わずに音を鳴らす方法がいまだにわからないとのこと。
本日の進捗、というより調査です。
— パパセンセイ@Excelで遊ぶ人 (@10mikiya) November 9, 2020
性能の確認と、ついでにテトリスの雰囲気を出すところまで作りました。今のところ循環参照や散布図は使っていません。動かすだけならそこまで要らなそうです。
明日は散布図で作ってみて動きが良さそうな方を採用しようと思います。#Excel #NoVBA pic.twitter.com/ZSfyNMndO7
これまでパパセンセイ氏は『ドラクエ3』以外にも、VBAを使わずにExcelで「スライドパズル」や『マインスイーパー』を作っており、次はVBAを使わない『テトリス』に挑戦するという。はたして次はどのような仕様になるのか、パパセンセイ氏の動向に注目といえそうだ。
ライター/福山幸司