見出し画像

VGS-Zeroができるまでの流れ

無事、VGS-Zeroのローンチタイトル「Battle Marine」をSteamでリリースすることができました。

Qiitaの方でVGS-Zeroの技術中心の紹介記事を投稿してます。

本書は、どういった経緯でVGS-Zeroが開発されたのかを時系列でまとめてみました。

プロローグ

2016年ごろ、当時の勤務先の会社で「ゲームプラットフォーム事業を立ち上げる」とのことで事業の方向性を検討するブレストに参加して、その席で「新しいゲーム機作りたいッス!!」と発言したところ、発言した当人の私自身ですら「何言ってんだコイツ?」みたいな空気感になったことがまるで昨日のことのように思い出される今日この頃です。

「VGSをベースにしたゲーム機を作りたい」というフワッとした考えはあったものの、当時はまだアイディアを咀嚼しきれておらず、現在のVGS-Zeroの完成形のイメージがあった上でブレストに参加していれば話は違っていたかもしれません。

VGSは、スマートフォンアプリをC言語で開発できるようにするために2011年頃から検討を始めて2012年ごろ形になった自作のSDKで、2015年に書いた記事(以下)でその全容をザックリと解説しています。

VGSは要するにUnreal Engine、Cocos2D、Unityなどをチープにしたイメージのもので、唯一の特異点はVideo Game Soundという自作のチップチューン音源(波形メモリ音源)を搭載していることです。

唯一のヒット作は上記記事(日記)のタイトルにある「東方BGM on VGS」というアプリで、このアプリは東方Projectの楽曲を耳コピしてVGSでアレンジした楽曲(東方Project二次創作)を配信するジュークボックス・アプリです。

後日、ゲーム業界出身の方に話してみたところ、「会社じゃなくて自分でやったら?」と親切なアドバイスを頂き、その場では「いやー、自分じゃ無理っすよーw」みたいにヘラヘラと答えておいたのですが、内心では「なるほど確かに」と納得して、個人での開発を進めることにしました。

VGSをより「ゲーム機」っぽくするため、CPUにZ80を採用することにしたのが2019年ごろの話で、気づけば検討開始してから3年の歳月が流れていました。その間、本業がシンプルに忙しかった事情もあったのですが、Z80を採用することもストレートに決まった訳ではありません。

当初、6502を採用しようとファミコンのプログラミングを勉強していた時期もあったのですが、6502はスタック領域が256バイトしかないのでC言語でのゲーム開発が厳しいと判断して却下。

アセンブリ言語のみ(フルアセ)だと開発効率があまり良くないので、初代VGSと同じようにC言語でプログラミングできるようにしたいと考えました。

オリジナルのCPUを開発してみてはどうか?と検討していた時期もありますが、コンパイラどころかアセンブラの開発すらものすごく大変なので、それも却下。

そして、最終的に行き着いたのがZ80です。MSXでもC言語が使えたらしいのでZ80なら多分大丈夫だろうということで。また、8ビットCPUなので構造も(16ビット以降のCPUと比べれば)シンプルで理解しやすいです。

2019年時点の私はZ80について無知に等しい状態でした。

Z80は、パピコン(PC-6001)、PC-88シリーズ、MSX(1, 2, 2+)、X1などの多くのパソコン(マイコン)に採用されていましたが、私が最初に触ったパソコンはPC-9801(80x86)で、実機を触ったことがあるZ80のコンピュータはゲームギアぐらいしかありません。

そこで、Z80の学習を兼ねて自作のZ80エミュレータ「 SUZUKIPLAN - Z80 Emulator」を開発してOSSとして公開。

「CPUを理解するにはエミュレータを作るのが一番」という、実に私(脳筋)らしい発想で開発しました。

学習が目的なので既存のZ80エミュレータのソースコードは一切参考にせず、ザイログが公開しているCPUマニュアルなどのドキュメントだけ見てコーディングしました。

そのためか、公開当時の自作Z80エミュレータはかなりバギーだったので、別途SG-1000、MSX、ゲームギア、セガマークIIIなど、Z80を採用しているパソコンやゲーム機のエミュレータを色々と開発してみて、既存のゲームなどを使ったテストによりバグフィックスを行うアプローチで品質を向上させました。(※もちろん吸い出し機とカートリッジを買って自分で吸い出したROMやフリーで公開されているROMを使ってテストしてます)

Z80エミュレータの品質向上には年オーダーの時間を要すことになります。

Z80エミュレータの品質がほぼ安定したと思われた2022年に Qiita で紹介記事を書いて投稿してみた所、親切な方から「Z80 Instruction Exerciserを通した方が良いよ」とアドバイスを頂き、zexdocとzexallを全部通すことで更なる品質向上を実現。

また、GitHub上で親切な方から割り込みの仕様やundocumentedな機能の仕様などを詳しく教えていただいたりしました。

オープンソースって素晴らしい。

Z80の品質安定化に時間を要したのは、Z80に限らずMSXなどのエミュレータを自力で開発をする「車輪の再発明」に勤しんでいたことが大きな要因です。

Z80にしてもMSXにしても、既に品質の良いエミュレータが沢山あるため、それを新規で開発するのは車輪の再発明以外の何者でもありません。

車輪の再発明というとネガティブな印象を持たれる方も居るかもしれませんが、発明とは既存のなにがしかを組み合わせ行うもので「既存のなにがしか」に関する高度な知見が必要になり、それをインプットする手法として有用です。

賢い人ならわざわざ車輪の再発明などせずとも文献を読むだけで情報を完璧にインプットできるかもしれませんが、偏差値低めの高卒で成績も下の方だった私にはそれぐらいの荒療治が必要なのかもしれません。

主にMSXの車輪の再発明が楽しすぎて、本来の目的(自作ゲーム機の開発)を忘れかけていた節もあります。

MSXは現在もコミュニティ活動が活発で、MSX界隈の方々からも多くの知見を頂くことができました。

MSX方面の車輪の再発明の成果として、自作のMSXソフト(ゲームROM)を色々なコンピュータで動かせる micro-msx2p(micro MSX2+)という組み込み用MSXエミュレータを開発しています。

VGS-Zeroは私にとっての「ゲーム創作環境の最適解」にしたつもりですが、全てのクリエイターにとっての最適解であるとは思っていません。「MSXこそが最適解」と考えているクリエイターさんも多く居るので、それらの方々に貢献できればと考えてmicro MSX2+をゆるゆるのライセンスで公開してみました。(ただし、MSXの商標や公式BIOSを使うには別途許諾を取る必要があり、あまり使いどころがないモノになってしまったかもしれませんが…)

気づけば大半の2D時代(プレステより前の時代)のゲーム機やパソコンの映像処理装置(VDP, PPU)の技術的な知見をインプットでき、それらを応用してZ80で扱いやすい独自のVDPを設計できるスキルが身に付きました。

VGS-Zeroとローンチタイトル(Battle Marine)が完成後、技術中心の紹介記事をQiitaで書いてTwitterで紹介したところ、恐らく私のツイートでは過去最高にバズりました。

何とGigazineさんにも取り上げられました。
私の同人活動では初めてのことかもしれません。

かなり技術的にコアな内容だったこともあり、主に元ゲーム業界や現役ゲーム業界の方々を中心に共感して頂けたようです。

Twitterでの反応を見てみると「MSXっぽさ」を感じた方が結構居たようで、VGS-Zeroのローンチタイトル「Battle Marine」をSteamで販売した時も、海外のキュレーターさんから「nice MSX graphics」との評価を頂きました。

Steamのキュレーターさんの紹介記事
(一番左)

私はどちらかといえばセガのゲーム機のVDPを参考にして独自VDPを設計したのですが、MSXとセガハードは同じTMS9918系譜のVDPなので、結果的に「MSXっぽさ」を感じられたのかもしれません。

TMS9918の進化系譜

MSXは新規プロジェクト(MSX0, MSX3)が動いているようなのでそちらと競合しないように気を付けていたつもりでしたが、意図せず競合しているように見えてしまったかもしれません。

私にはMSXと競合しようという意図はありません。
むしろ、MSXとの競合を全力で回避したつもりです。

私の独自VDPよりもMSX2のVDPの方が高解像度なグラフィックを表示でき、MSX0ではIoTもできるのですが、VGS-Zeroはゲームを創ることしかできないので、MSXの方が技術のすそ野が広いと思います。

私がゲーム以外のことに一切興味が無いという事情もあるのですが、2020年ごろにとあるゲーム関連の生放送(ニコニコ生放送のプレミアム会員限定の配信)に西さんが出演された際、「ゲームが好きではない」という趣旨の発言をされていたので、ゲームだけに特化しておけばMSX公式と競合することは無いだろうと考えました。

別の機会にMSX界隈の方から、「西さんはラズパイが好きではないらしい」という話も伺ったので、ラズパイを使っておけばMSX公式とバッティングを避けられるだろうとも考えてRaspberryPi Zero 2Wを自作ゲーム機のローンチ・ハードウェアにしました。

ちなみに、VGS-Zeroの「Zero」は何も考えずに RaspberryPi Zero からとったのですが、「ゼロイチで創ったゲーム機」ということにしておきます。(今考えました)

MSXとの競合を避けるつもりが、逆にMSXとの対立軸を浮き彫りにしてしまったのかもしれません。う~ん…人間って難しい。

ともあれ、「新しいゲーム機作りたいッス!!」の発言から7〜8年ぐらいの歳月が流れてしまいましたが、どうにか念願の自作ゲーム機を形にすることができました。

もっと正確に言えば、2015年ごろにスマホアプリ市場に限界を感じて「次の一手」を考え続けていたので9年掛かりました。

不具合対策だけすれば良かったのに、敢えて曲追加をする茨の道を復活させた理由は、新しい方向性が見つからずに迷っていたためです。だから、今は 次の一手を模索する間の繋ぎ という位置付けで、東方VGSを続けています。

2015年の日記より引用

こういった研究開発はどうしても時間が掛かり、営利企業の事業活動だと収益化の枷もあるので、寿命が尽きるまで無限に時間を使える個人で進めることが最適解かもしれませんが、それにしても長考し過ぎたかもしれません。

長考し過ぎて色々な論理不整合も起きているかもしれませんが、まぁ細かいことは気にせず。

くぅ〜疲れましたw これにて完結・・・ではありません

ゲーム機はゲームが無ければただの箱なので、ゲーム機本体の完成はまだプロローグです。

任天堂Switch対応に向けて

Qiitaの記事でも書いた通り、今はVGS-Zeroの対応プラットフォームをゲーム機(ターゲットは任天堂Switch)に拡大することを目指して、Battle Marineを3,000本売り上げる目標でSteamにて好評販売中です。

Battle Marineが3,000本に届かなかった場合、次の新作で同じように3,000本を目指す(※目標本数はゲームの開発に掛かった期間により変動)というデスマーチを楽しんでいるところです。

当初、スマホにも対応しようと考えてiOSとAndroidにも移植済みですが、Battle Marineではスマホのバーチャルパッドだと満足のいく操作ができないため、今回はスマホ対応を保留してSteamに絞って3,000本を目指しています。

2024年2月27日の17:00にリリースして2024年3月4日時点(約1週間)でのセールス実績は、販売数が約100本ぐらい、ウィッシュリストが約200本ぐらい、キュレーション記事が2 件、レビューが4件(全てrecommend)です。

この勢いならスティールメディア(4gamerや電ファミなど)で記事化されるなどすれば3,000本に届くかもしれません。

ただし、魅力的なゲームは他にも沢山あるのでBattle Marineのゲーム本編だけだと記事化は厳しい(記者さんも忙しいので、記事化されるとすれば3,000本よりも遥かに沢山売れて話題になった後)と想定しています。

VGS-Zeroの仕組み込みで記事にすればかなり特異なので結構面白い記事が書けるのではないかと思っていますが、それだと若干マニアック過ぎるかもしれません。(その辺を踏まえたゲーム系のスティールメディア露出をするためのプロモーション案を水面下で進行中)

リリース前に「売れるため」にやったことについてはQiitaの方で纏めてます。

Steamでの販売は今回が初めてなので色々と手探り状態ですが、リリース後の初期段階に一番重要な施策は「コミュニティ対応」かもしれません。

コミュニティページでユーザーさんから細かいアップデートの要望があり、それに速攻で返信しつつ翌日には要望通りにアップデートするようにしてみたのですが、その結果レビューでRecommendを付けて頂くことができました。

また、その対応をした方の中に偶然キュレーターさんが居て、その方からキュレーション記事も書いていただけました。

初めてのキュレーション記事
(一番左)

Steamではキュレーション記事を書かれると売り上げが大幅に増えます。

実際、そのキュレーターさんをフォローして紹介しているゲームを幾つか買ってみたのですが、どれも私のストライクゾーンど真ん中の面白いゲームばかりなので、現在ゴリゴリと散財中です。

Steamは、自分のお気に入りのゲームのキュレーション記事を書いているキュレーターさんをフォローすることで、無数にあるSteamのゲームの中から自分の好みに合った面白いゲームを見つけやすくなる仕組みになっています。

なお、Steamでゲームをリリースすると、自称キュレーターやインフルエンサーの方々から「無料キーをくれ」という趣旨のメールがたくさん来ますが、それらは例外なく全てガン無視してます。

利用者サイドの視点でSteamを長らく使っている経験上、ちゃんとゲームを買って評価をした上で記事を書いてくれるキュレーターさんの記事でなければ意味が無いので。実際、キュレーションする記事のジャンルが滅茶苦茶なキュレーターさんが居ますが、そういったキュレーターさんの記事を見ても(少なくとも私は)ゲームを買おうとは思えません。

TwitchやYouTuberなどのインフルエンサーについても同じで、例えばHikakinさんが面白そうだと思ったゲームを動画で紹介する時、「動画で紹介するから無料のキーをちょーだい!」と作者にお願いする姿を想像できません。

インフルエンサーでもHikakinさんのようにそれを生業にできるタレント(才能がある人)は一握りかもしれませんが、実力のあるインフルエンサーは稼げる時代なので、わざわざ5ドルのゲームの無料キーをねだるような面倒くさい事はしない筈です。

もちろん、こちら側から直接案件を発注する時は礼儀として無料キーを渡すと思いますが、インフルエンサーやキュレーター側からの無料キーのリクエストは仮に本物でも全無視で良いと思っています。(そもそも、大半のリクエストは無料キーの転売ヤーだと思われますし)

Steamで販売した自分のゲームであれば、Steam Broadcastで生配信することができるので、開発者自身がインフルエンサーとなって配信するのが良いかもしれません。

SteamworksとSteamクライアントで設定すれば、自分のゲームプレイを配信できるようになり、コミュニティページから閲覧できるようになります。

お気に入りのゲームの作者自身の配信であれば、例え面白い実況の無いゲームプレイのみの動画配信でも興味深いと私なら考えます。時差の関係で生配信を見て頂ける確率は低いかもしれませんが、今は暇を見つけてはSteam BroadcastでBattle Marineの配信をするようにしています。

それが売り上げに繋がるかは不明ですが、見てくれる方はチラホラ居るようなので、コミュニティのエンゲージメントを高める効果はあるかもしれません。

この記事が気に入ったらサポートをしてみませんか?