モリカトロン株式会社運営「エンターテインメント×AI」の最新情報をお届けするサイトです。
- TAG LIST
- CGCGへの扉機械学習安藤幸央ディープラーニング月刊エンタメAIニュースGAN河合律子OpenAI音楽ニューラルネットワークNVIDIA三宅陽一郎強化学習吉本幸記QAGoogleFacebook人工知能学会GPT-3自然言語処理グーグルDeepMind大内孝子森川幸人敵対的生成ネットワークキャラクターAIスクウェア・エニックスモリカトロンAIラボインタビューマイクロソフトルールベースシナリオAIと倫理映画デバッグアートDALL-E2StyleGAN倫理ゲームプレイAINFT自動生成SIGGRAPHメタAIStable Diffusionテキスト画像生成ロボット深層学習CEDEC2019プロシージャル遺伝的アルゴリズムテストプレイモリカトロンDALL-Eビヘイビア・ツリーディープフェイクCEDEC2021CEDEC2020ゲームAIVFXデジタルツインメタバース不完全情報ゲームVRナビゲーションAI画像生成AINPC畳み込みニューラルネットワークCLIP画像生成GDC 2021JSAI2022GDC 2019マルチエージェントCEDEC2022AIアートボードゲームファッション懐ゲーから辿るゲームAI技術史toioCNNAdobeUnity著作権小説アニメーション鴫原盛之HTN階層型タスクネットワーク汎用人工知能JSAI2020TensorFlowインタビューBERTMicrosoftイベントレポート対話型エージェントロボティクスMetaMinecraft水野勇太Genvid TechnologiesガイスターStyleGAN2GTC2022教育ソニーJSAI2021スポーツ研究シムピープルMCS-AI動的連携モデルマンガマーケティングGDC SummerバーチャルヒューマンブロックチェーンMidjourneyアストロノーカキャリアNVIDIA OmniverseeスポーツAmazoneSportsDQNBLUE PROTOCOLシーマンアバターOmniverse3DCGUbisoftメタAlphaZeroTransformerGPT-2AIりんなカメラ環世界中島秀之哲学ベリサーブPlayable!ChatGPT理化学研究所ジェネレーティブAISIGGRAPH ASIADARPAドローンシムシティImagenZorkバイアスモーションキャプチャーTEZUKA2020AI美空ひばり手塚治虫バンダイナムコ研究所スパーシャルAIElectronic Arts3DメタデータLEFT 4 DEAD通しプレイOpenAI Five本間翔太CMピクサープラチナエッグイーサリアム作曲ボエダ・ゴティエビッグデータ中嶋謙互Amadeus Codeデータ分析Microsoft AzureMILE模倣学習ナラティブスタンフォード大学アーケードゲームOmniverse ReplicatorWCCFレコメンドシステムNVIDIA DRIVE SimWORLD CLUB Champion FootballNVIDIA Isaac Simセガ柏田知大軍事サイバーエージェント田邊雅彦トレーディングカードトレカ音声認識メディアアートPyTorch眞鍋和子バンダイナムコスタジオaibo合成音声齊藤陽介マインクラフトお知らせMagic Leap Oneチャットボットサルでもわかる人工知能VAEDreamFusionリップシンキングUbisoft La Forge自動運転車ワークショップ知識表現ウォッチドッグス レギオンIGDA秋期GTC2022どうぶつしょうぎEpic Gamesジェイ・コウガミ音楽ストリーミングMITAIロボ「迷キュー」に挑戦野々下裕子徳井直生マシンラーニング5GMuZeroRival Peakクラウド対話エンジン斎藤由多加リトル・コンピュータ・ピープルCodexコンピューティショナル・フォトグラフィーゴブレット・ゴブラーズ絵画rinnaイラストシミュレーションデジタルヒューマン完全情報ゲーム坂本洋典PaLM釜屋憲彦ウェイポイントパス検索対談藤澤仁生物学GTC 2022画像認識GPT-3.5SiemensStyleCLIPDeNA長谷洋平masumi toyota宮路洋一OpenSeaGDC 2022TextWorldEarth-2BingMagentaSFELYZA Pencil松尾豊GTC2021CycleGANデータマイニング東京大学NetHackはこだて未来大学キャラクターモーションフェイクニュースエージェントRPGSIGGRAPH 2022レベルデザインAIボイスアクターNVIDIA CanvasGPUALife人工生命オルタナティヴ・マシンサウンドスケープLaMDAAI DungeonASBS栗原聡ぱいどんテキスト生成不気味の谷ナビゲーションメッシュ松井俊浩ELYZAフルコトELYZA DIGEST音声合成西成活裕Apex LegendsELIZA群衆マネジメントNinjaコンピュータRPGライブビジネスアップルタウン物語新型コロナKELDIC周済涛メロディ言語清田陽司ゲームTENTUPLAYサイバネティックスMARVEL Future FightAstro人工知能史タイムラプスEgo4DAI哲学マップバスキア星新一日経イノベーション・ラボStyleGAN-XL敵対的強化学習StyleGAN3階層型強化学習GOSU Data LabGANimatorWANNGOSU Voice AssistantVoLux-GAN竹内将SenpAI.GGProjected GANMobalyticsSelf-Distilled StyleGAN馬淵浩希Cygamesニューラルレンダリング岡島学AWS SagemakerPLATO映像セリア・ホデント形態素解析frame.ioUXAWS LambdaFoodly誤字検出森山和道認知科学中川友紀子ゲームデザインSentencePieceアールティLUMINOUS ENGINELuminous ProductionsBlenderBot 3パターン・ランゲージ竹村也哉Meta AIちょまどマーク・ザッカーバーグGOAPWACULAdobe MAX 2021自動翻訳AIライティングOmniverse AvatarAIのべりすとFPSNVIDIA RivaQuillBotマルコフ決定過程NVIDIA MegatronCopysmithNVIDIA MerlinJasperNVIDIA Metropolisパラメータ設計テニスバランス調整協調フィルタリング人狼知能テキサス大学AlphaDogfight TrialsAI Messenger VoicebotエージェントシミュレーションOpenAI CodexStarCraft IIHyperStyleMax CooperFuture of Life InstituteRendering with StyleIntelDisney類家利直LAIKADisneyリサーチヴィトゲンシュタインRotomationGauGAN論理哲学論考GauGAN2京都芸術大学ドラゴンクエストライバルズ画像言語表現モデル不確定ゲームSIGGRAPH ASIA 2021PromptBaseDota 2モンテカルロ木探索ディズニーリサーチMitsuba2バンダイナムコネクサスソーシャルゲームEmbeddingワイツマン科学研究所ユーザーレビューGTC2020CG衣装mimicNVIDIA MAXINEVRファッションBaidu淡路滋ビデオ会議ArtflowERNIE-ViLGグリムノーツEponym古文書ゴティエ・ボエダ音声クローニング凸版印刷Gautier Boeda階層的クラスタリングGopherAI-OCR画像判定JuliusSIE鑑定ラベル付けTPRGOxia Palus大澤博隆バーチャル・ヒューマン・エージェントtoio SDK for UnityArt RecognitionSFプロトタイピングクーガー田中章愛実況パワフルサッカー石井敦銭起揚NHC 2021桃太郎電鉄茂谷保伯池田利夫桃鉄GDMC新刊案内パワサカマーベル・シネマティック・ユニバースコナミデジタルエンタテインメント成沢理恵MITメディアラボMCU岩倉宏介アベンジャーズPPOマジック・リープDigital DomainMachine Learning Project CanvasMagendaMasquerade2.0国立情報学研究所ノンファンジブルトークンDDSPフェイシャルキャプチャー石川冬樹サッカーモリカトロン開発者インタビュースパコン里井大輝Kaggle宮本茂則スーパーコンピュータバスケットボール山田暉松岡 聡Assassin’s Creed OriginsAI会話ジェネレーターTSUBAME 1.0Sea of ThievesTSUBAME 2.0GEMS COMPANYmonoAI technologyLSTMABCIモリカトロンAIソリューション富岳初音ミクOculusコード生成AISociety 5.0転移学習テストAlphaCode夏の電脳甲子園Baldur's Gate 3Codeforces座談会Candy Crush Saga自己増強型AItext-to-imageSIGGRAPH ASIA 2020COLMAPtext-to-3DADOPNVIDIA GET3DデバッギングBigGANGANverse3DMaterialGANRNNグランツーリスモSPORTAI絵師ReBeLグランツーリスモ・ソフィーUGCGTソフィーPGCVolvoFIAグランツーリスモチャンピオンシップStability AINovelAIRival PrakDGX A100NovelAI DiffusionVTuberユービーアイソフトWebcam VTuberモーションデータ星新一賞北尾まどかHALO市場分析ポーズ推定将棋メタルギアソリッドVフォートナイトメッシュ生成FSMメルセデス・ベンツRobloxMagic Leapナップサック問題Live NationEpyllion汎用言語モデルWeb3.0マシュー・ボールAIOpsムーアの法則SpotifyスマートコントラクトReplica StudioAWSamuseChitrakarQosmoAdobe MAX 2022巡回セールスマン問題Adobe MAXジョルダン曲線メディアAdobe Research政治Galacticaクラウドゲーミングがんばれ森川君2号pixiv和田洋一リアリティ番組映像解析Stadiaジョンソン裕子セキュリティMILEsNightCafe東芝デジタルソリューションズインタラクティブ・ストリーミングLuis RuizSATLYS 映像解析AIインタラクティブ・メディアポケモン3DスキャンPFN 3D Scanシーマン人工知能研究所東京工業大学Ludo博報堂Preferred NetworksラップPFN 4D ScanSIGGRAPH 2019ArtEmisZ世代DreamUpAIラッパーシステムDeviantArtARWaifu DiffusionGROVERプラスリンクス ~キミと繋がる想い~元素法典FAIRSTCNovel AIチート検出Style Transfer ConversationOpen AIオンラインカジノRCPMicrosoft DesignerアップルRealFlowRinna Character PlatformiPhoneCALADeep FluidsSoul Machines柿沼太一MeInGameAmeliaELSIAIGraphブレイン・コンピュータ・インタフェースバーチャルキャラクター大規模言語モデルBCIGateboxアフォーダンスLearning from VideoANIMAKPaLM-SayCan予期知能逢妻ヒカリセコムGitHub Copilotユクスキュルバーチャル警備システムCode as Policiesカント損保ジャパンCaP上原利之ドラゴンクエストエージェントアーキテクチャアッパーグラウンドコリジョンチェックPAIROCTOPATH TRAVELER西木康智OCTOPATH TRAVELER 大陸の覇者山口情報芸術センター[YCAM]アルスエレクトロニカ2019品質保証YCAMStyleRigAutodeskアンラーニング・ランゲージ逆転オセロニアBentley Systemsカイル・マクドナルドワールドシミュレーターローレン・リー・マッカーシー奥村エルネスト純いただきストリートH100鎖国[Walled Garden]プロジェクト齋藤精一大森田不可止COBOLSIGGRAPH ASIA 2022高橋智隆DGX H100VToonifyロボユニザナックDGX SuperPODControlVAE泉幸典仁井谷正充クラウドコンピューティング変分オートエンコーダーロボコレ2019Instant NeRFフォトグラメトリartonomous回帰型ニューラルネットワークbitGANsDeepJoinぎゅわんぶらあ自己中心派Azure Machine LearningAzure OpenAI Service意思決定モデル脱出ゲームDeepLHybrid Reward Architectureコミュニティ管理DeepL WriteウロチョロスSuper PhoenixSNSProject MalmoオンラインゲームGen-1気候変動Project PaidiaシンギュラリティProject Lookoutマックス・プランク気象研究所レイ・カーツワイルWatch Forビョルン・スティーブンスヴァーナー・ヴィンジ気象モデルRunway ResearchLEFT ALIVE気象シミュレーションMake-A-Video長谷川誠ジミ・ヘンドリックス環境問題PhenakiBaby Xカート・コバーンエコロジーDreamixロバート・ダウニー・Jr.エイミー・ワインハウスSDGsText-to-Imageモデル音楽生成AIYouTubeダフト・パンクメモリスタ音声生成AIGlenn MarshallScenarioThe Age of A.I.Story2Hallucination音声変換LatitudeレコメンデーションJukeboxAIピカソVeap JapanAI素材.comEAPneoAIテンセントSIFT福井千春DreamIconDCGAN医療mignMOBADANNCEメンタルケアstudiffuse人事ハーバード大学Edgar HandyAndreessen Horowitz研修デューク大学NetflixAIQVE ONEQA Tech Nightmynet.aiローグライクゲーム松木晋祐東京理科大学下田純也人工音声NeurIPS 2021産業技術総合研究所桑野範久リザバーコンピューティングBardプレイ動画ヒップホップ対話型AIモデル詩ソニーマーケティングControlNetサイレント映画もじぱnoteNBA環境音暗号通貨note AIアシスタント現代アートFUZZLEKetchupAlterationAI News粒子群最適化法Art Selfie進化差分法オープンワールドArt Transfer群知能下川大樹AIFAPet Portraitsウィル・ライト高津芳希P2EBlob Opera大石真史クリムトBEiTStyleGAN-NADA世界モデルDETRゲームエンジンDreamerV3SporeUnreal Engineクリティックネットワークデノイズ南カリフォルニア大学Unity for Industryアクターネットワーク画像処理DMLabSentropyGLIDEControl SuiteCPUDiscordAvatarCLIPAtari 100kSynthetic DataAtari 200MCALMYann LeCunプログラミングサム・アルトマン鈴木雅大ソースコード生成コンセプトアートGMAIシチズンデベロッパーSonanticColie WertzTRPGGitHubCohereリドリー・スコットウィザードリィMCN-AI連携モデルマジック:ザ・ギャザリング絵コンテUrzas.aiストーリーボード介護大阪大学西川善司並木幸介KikiBlenderサムライスピリッツ森寅嘉Zoetic AIプロンプトゼビウスSIGGRAPH 2021ペットGPT-4ストリートファイター半導体Digital Dream LabsPaLM APITopaz Video Enhance AICozmoMakerSuiteDLSSタカラトミーSkeb山野辺一記NetEaseLOVOTDreambooth-Stable-Diffusion大里飛鳥DynamixyzMOFLINゲーム背景RomiGoogle EarthU-NetミクシィGEPPETTO AI13フェイズ構造アドベンチャーゲームユニロボットStable Diffusion web UIADVユニボPoint-EXLandGatoAGI手塚眞DEATH STRANDINGマルチモーダルEric Johnson汎用強化学習AIデザインOculus Questコジマプロダクションロンドン芸術大学生体情報デシマエンジンGoogle BrainインディーゲームSound Control写真高橋ミレイSYNTH SUPER照明Maxim PeterKarl SimsJoshua RomoffArtnomeハイパースケープICONATE山崎陽斗深層強化学習立木創太松原仁浜中雅俊ミライ小町武田英明テスラ福井健策GameGANパックマンTesla BotNEDOTesla AI DayWikipediaソサエティ5.0SphereSIGGRAPH 2020バズグラフXaver 1000ニュースタンテキ養蜂東芝BeewiseDIB-R倉田宜典フィンテック投資韻律射影MILIZE広告韻律転移三菱UFJ信託銀行
大森田不可止氏が語る『いただきストリート』に実装されたキャラクターAI:懐ゲーから辿るゲームAI技術史vol.3
『いただきストリート』とは?
1991年にアスキーから発売されたファミリーコンピュータ用ソフトで、『ドラゴンクエスト』シリーズでもおなじみの堀井雄二氏が考案したボードゲームです。サイコロを振って出た目の数だけマス目を進みながら、店や株を購入して資産を増やし、マップごとに設定された目標金額まで一番早く資産を増やし、スタート地点に戻ったプレイヤーが勝利となります。最大4人まで同時プレイが可能で、プレイヤーが4人に満たない場合はCPUキャラが参戦します。
マップ上のあちこちにある店を購入すると、以後他のプレイヤーが止まるたびに「買い物料」を、つまりお金をもらうことができます。逆に、他のプレイヤーが保有する店に止まった場合は、相手プレイヤーにお金を支払うことになります。
購入した店は、さらに増資をすることによって店の価値が上がり、他のプレイヤーが止まったときに支払ったり、店を売却する際の金額をアップさせることも可能です。また、銀行でエリア株を購入しておくと、そのエリアにある店を増資するなどの方法で株を値上がりさせることで、さらに儲けることができます。
続編のスーパーファミコン用ソフト、『いただきストリート2』からはエニックスが発売元となり、現在もシリーズ作品がスクウェア・エニックスから発売されています。
『いただきストリート』(以下、『いたスト』)に登場するCPUキャラは全部で7人。リスクを極力避ける堅実なプレイスタイルが持ち味のキャラクターもいれば、勝利のためならありとあらゆる手段を使う攻撃型のキャラクターもいるなど、それぞれ性格が異なるので1人で遊んでも十分に楽しめるのが特長です。
今年3月で、ちょうど発売30周年を迎えた『いたスト』では、キャラクターごとに異なる個性を出すために、どのようにしてAIを作っていたのでしょうか? 本作のプログラマー、大森田不可止氏にお話を伺いました。




非力なハードでも動かせる、対数を利用したAIプログラムを開発
——本日はよろしくお願いいたします。まずは大森田さんが『いたスト』の開発に参加することになったきっかけから教えていただけますか?
大森田不可止氏(以下、大森田):ゲームスタジオの遠藤(雅伸)さんから「プログラマーを探しているんだけど、ゲームスタジオでは受けられないので、受けてくれないか?」と紹介されたのがきっかけです。
——『いたスト』の主な開発スタッフは、大森田さんのほかにどなたがいらっしゃいましたか?
大森田:プロデューサーは、当時『ファミコン通信』の編集長だった塩崎剛三さんです。サブのスタッフにはYanaKen(柳澤健二)さんと、キャラメル・ママの社長で『ドラゴンボール』の亀仙人のモデルになった松本常男さんがいました。企画は堀井さん、イラストは荒井清和さんで、サウンドはゲヱセン上野(利幸)さんですね。プログラマーは私1人でしたが、最後にピンチヒッターとして遠藤さんにも手伝っていただきました。
——開発中は、アスキーのオフィスに出掛けてプログラムを作っていたのですか?
大森田:基本的には自宅作業でしたが、だんだん忙しくなってきてからはアスキーに席を用意していただきました。ちょうど薗部(博之)さんと机を並べながら仕事をしていましたね。
——PCや開発機材は、どのようなものを使っていたのでしょうか?
大森田:ファミコン用ソフトなので、大規模な開発機材などは必要ありませんでした。当時はPC-9801でプログラムを書いてからコンパイルして、ROMに焼いてチェックしながら作っていたと思います。
——当時であれば、すでにファミコンソフト開発用のICE(In-Circuit Emulator)はあったと思いますが、ICEは使わなかったんですね。
大森田:ICEはなかったのですが、途中でRAMにデータを転送すると動かせる、ROMの代わりとしてRAMが使える環境ができましたので、それからは作業効率がアップしたように思います。
——『いたスト』に登場するCPUキャラは全部で7人いて、それぞれ性格が違っているようですね。個々の性格や設定は誰が決めたのでしょうか?
大森田:私が決めました。荒井さんがデザインしたキャラクターはすごく立っていたので、「こういう姿をしているから、こんな性格だろうな」と絵を見て想像しながら作りました。例えば、ゲームの中に「5倍買い」(※)というルールがあるのですが、これは普通の人はなかなかチャレンジしないんですよ。そこで、「水沢けいこ」というイケイケ風のお姉さんキャラに、無理矢理「5倍買い」をするプログラムを入れたりもしていました。要するに、CPUがチュートリアルの役割を果たせるようにしたんですね。
※「5倍買い」:自分以外のプレイヤーが保有する店に止まったときに、お店の5倍の金額を払って店を買収する行為。主に、特定のプレイヤーが同一エリアの店の独占を阻止する際に用いられる。


——開発がスタートしてから、ゲームが完成するまでにどのぐらいの時間が掛かりましたか?
大森田:開発期間がとにかく長くて、約3年掛かりました。私以外のスタッフはみんな仲良しで、塩崎さんが毎週土曜日の夜に、みんなを集めて企画会議を開きながら作っていましたが、堀井さんが中心になって作っていたように思います。堀井さんの頭の中には、最初から完成形が描けていたようで、「ここはどうしますか?」とか「あれはどうしますか?」と相談すると、翌週には「こういうふうに作って」と仕様を完成させて持ってきてくれましたね。
——CPUキャラのAI、思考ルーチンも、最後は堀井さんがチェックしてオーケーを出したのでしょうか?
大森田:そうですね。実際に遊んでいただいて、特に文句などは出ませんでしたから、これはオーケーだろうなと思って作りました。当時はまだ誰もAIのことが分からず、「AIって、どうやって作ればいいの?」という時代でしたので、『いたスト』のAIは私や堀井さんが以前にやっていた『モノポリー』の研究を土台にして作ってあります。
——そもそも、堀井さんが『いたスト』を企画したきかっけは、『モノポリー』にインスパイアされたところが大きかったわけですよね?
大森田:はい。『いたスト』にはアメリカ大陸のマップが登場するのですが、最初の完成したマップがまさにアメリカ大陸でした。そこから開発がなかなか進まなくなったので、私がPC-9801のBASICで試しにゲームを作り、それを実際に遊んでもらうことを繰り返しながら開発を進めていきました。堀井さん以外のスタッフは、過去にゲームを作った経験者がほとんどいなかったので、私が作ったものを実際に見てもらいながら開発していました。
——AIのプログラムの制作期間はどのぐらいでしたか?
大森田:6か月ぐらいで作って、あとは自分で遊びながら少しずつ修正して完成させました。自分で遊んでいると、「ここをちょっと直したいな」という部分がたくさん出てきてしまうので、かなり時間が掛かってしまいましたね。
それと、個人的に一番面白かったのは、『いたスト』というゲームが本当に面白いゲームなのかどうか、分からなくなってしまった時期があったんです。ですが、ある日遊び始めたら「アレ? これって意外と面白いな」と気付いたときがあって、これで大丈夫だという自信が持てました。
自信を持つまでの間は、何度も繰り返し見ているゲーム画面なので、他人が見て本当に面白く見えるのか、あまり自信が持てなかったのですが、自分で遊んでいるうちに楽しくなったので、これでいけるなと。
——では、デバッグやテストプレイにはどのぐらいの時間を割いたのでしょうか?
大森田:デバッグはあまりやっていなかったと思います。確か、関連スタッフが遊んでいる最中に不具合いを見付けたら報告してもらって修正する形でデバッグしていたとは思いますが、あまり直した記憶がないですね。私自身もメチャクチャ長い時間遊んでいましたし、もともとナムコにいた頃から(※)、私のプログラムはバグが少ないことで定評があったので(笑)。
※筆者補足:大森田氏は、かつてナムコでMSX版『キング&バルーン』や、ファミコン版『ギャラガ』などのプログラムを担当していた。
——CPUキャラが自身の行動を決定するプログラムは、どのような仕組みになっているのでしょうか?
大森田:例えば、誰にも買われていない店がまだ残っていれば、店を買うことを優先しますが、だんだんゲームを進めていくと高額物件が出現しますので、もし高額物件が出てきた場合は、そこを通り越せる場所に進むことを優先するようになります。もし高額物件の反対方向から進んでしまうと、次のターンでそこに止まっちゃう可能性が生じますからね。
つまり、支払期待値がなるべく下がる作戦を取るようにするために、どれを優先にするのかを決める数式を用意して、その計算させてっていうのをプログラムの中でやっているわけです。

——その数式は、具体的にどのような計算をするのでしょうか?
大森田:ファミコンのCPUで計算できるのは8ビットで、しかも掛け算ができないので、とにかく計算が苦手で時間が掛かるハードなんですよ。そこで、計算を簡単にするために8ビットの対数表を持たせてあります。対数を使うと掛け算が足し算になるので、非常に簡単に計算できるようになりますし、大小関係もちゃんと維持されますので。でも、本来ならば対数を元の数値に戻さなければいけないのですが、実際は元に戻さずに大小の比較チェックだけを実行していましたから、大雑把な計算しかできないんですよね。
——ファミコンみたいな8ビットのハードでは、容量的にも制約が厳しかったのでしょうか?
大森田:ええ。容量もそれほど大きくないですし、とにかく8ビットの計算しかできないのは厳しかったです。CPUにZ80を使っていれば16ビットの加減算まではできたのですが、ファミコンのCPUに使っていたのは完全8ビットの6502だったので、もし16ビットの計算をさせようとするとクロックをたくさん使わなくてはいけないので、何とかしてそれを回避する必要がありました。確か、ファミコンは1.7 MHzで、それが60分の1秒でワンセットの処理を終了させないといけない仕様でしたから、何とかその範囲内で計算ができるように工夫するのがなかなか大変でした。
収入・支出の期待値を調整してCPUキャラの個性を作成
——CPUキャラごとの性格や特徴などはどうやって調整したのでしょうか?
大森田:基本的には、先に数式を作っておいて、後からそれを修正しながら仕上げました。一度数式を作っておけば、あとはパラメーターを変えるだけで、キャラごとの個性が出せるんです。基本はあくまで数式ですが、例えば株の売買のように計算できない部分もありますので、そういう場合は人間のプレイヤーの真似をして動くようにしてあります。
——ゲーム中に、プレイヤーの行動を見て真似をするプログラムが入っていたんですか?
大森田:いえいえ。そうではなくて、開発中に私が別の人のプレイを見て、その人と同じ買い方をさせるプログラムそのものを組んだんです。
——AIを作るときは、ついつい強くしようとし過ぎると失敗するので、より人間らしくする必要がありますよね?
大森田:普通に一番バランスのいいキャラクターを作ろうとすると、みんな行動が似てきちゃうので、何とかそれを外すようにいろいろ仕込んでいました。さっきもお話をした「けいこ」の5倍買いもその一例ですね。「いただきストリート」では、バランスの取れたプレイが一番強いハズなのですが、そこから多少外れても意外と裏目に出て強かったりする面もあるんですよ。例えば、全然関係ない株を買ったら、後でたまたま値上がりしちゃうこともありますので。
——例えば、チャンスのマス目に止まってカードを引いた場合は、完全に運の要素で資産が突然増えたり減ったりしますからね。
大森田:ええ。多少は自由度の高いプレイをするようにプログラムは組んであったと思います。みんな同じような個性になると、遊んでいて面白くないですしね。一番プレイしたのは私でしたから、私自身が遊んでいて面白くなるようにちゃんと作ってありますよ(笑)
——AIに関しては、ほかのスタッフから何か意見や改善の要望を受けたことがありましたか?
大森田:AIがどう動いているのかを誰も想像できなかったみたいで、意見はあまり出てこなかったですね。AIに関しては、私のほうでかなり自由に作っていました。
——ちなみに、大森田さんは学生時代にAIの勉強をされたことはあったのでしょうか?
大森田:それほどはやっていなかったですね。学生の頃は、ちょうど第2次AIブームでニューラルネットワークが注目されていた時期だったので、多少は関連書籍を読んではいましたが、まだまだコンピューターが非力な時代でしたから、実際に試せる環境は全然ありませんでした。
——では、当時からAIへの興味自体はあったわけですね?
大森田:そうですね。薄くではありますが勉強していました。あの時代は遺伝的プログラミングとか、成果はほとんど出なかったのですが、いろいろと実験的なプログラムが流行したので、まあ面白い時代ではあったように思います。
——ニューラルネットワークから進化したものがディープランニングになるかと思いますが、「いたスト」では対戦を繰り返すごとに強くなる、学習するAIを作っていたのでしょうか?
大森田:ちょっとだけ考えましたが、ファミコンの性能ではそこまで実装することはできなかったですね。バックアップRAMの中に、いろいろな経験を積み上げること自体は可能なのですが、容量が2キロバイト程度しかなかったので、直前の局面を記憶するだけでもう精一杯でした(笑)。でも当時としては、あのハードであれだけのものを遊べるようにできていたこと自体が大きかったと思います。
——ターボファイル(※)を使っても、学習するAI実装は無理だったのでしょうか?
大森田:そうすると、開発がすごく大変になってしまう問題が出てきますね。もしプログラムを学習型にすると、特にデバッグがメチャクチャ大変になって、完成させようと思ったら相当な労力と気合いが必要になると思います。ゲームって、たまにしか起こらないことを仕込むと、デバッグが大変になるんです。
ある知り合いの会社で作ったシミュレーションゲームで、滅多に出ないイベントを仕込んだらデバッグで一度も発生しなくて困ったことがあったそうです。「本当に機能してるのかな?」って(笑)。プログラムを作るときは、そこまで考えなければいけないので難しくなりますよね。
※ターボファイル:アスキーが発売していたファミコン用データレコーダーのこと。乾電池による駆動で、対応するタイトルのプレイデータをセーブすることができた。
——『いたスト』における、AIのプログラムで最も工夫したポイントはどこですか?
大森田:やっぱり、対数が一番のキモでしょうね。掛け算をさせたくてもできないので、対数で何とかごまかそうと……(苦笑)。
——ソフトの発売後、『いたスト』のAIのプログラムについて同業者や業界内での評判はいかがでしたか?
大森田:あまり聞いたことはないのですが、「よく考えて行動するな」とはみんな言ってくれてましたね。
——後に、大森田さんはスーパーファミコン版の『モノポリー』(※1993年にトミーから発売)でもCPUキャラのAIを作ることになりますが、『いたスト』のプログラムで得た経験がここでも生かされたのでしょうか?
大森田:はい。『いたスト』の開発には3年掛かりましたが、『モノポリー』は以前から研究していた成果もあったので3か月で完成しました(笑)。
——『いたスト』では、プレイヤーが任意のタイミングで保有する店を競売に出したり、他のプレイヤーと交渉してお店を交換することもできますよね? CPUキャラの交渉する、しないの判断は、どうやってプログラムしたのでしょうか?
大森田:基本的には、収入期待値と支払期待値というものがあって、前者はできるだけ大きく、後者はできるだけ小さくするように計算するプログラムを組んでいますので、物件の交換とかの場合は、交換する前後で期待値がどう変化するのかを見たうえで判断しているハズですね。
——終盤戦になると、負けているCPUキャラがあえて相手に有利になるように店を交換するなどの方法で、イチかバチかの勝負を仕掛けることもあるようですが、これもあらかじめプログラムしていたのでしょうか?
大森田:ええ。それもやっていたかもしれませんね。支払期待値は大きくなってしまうけど、負けているときは多少のリスクは負わなくてはいけない、というプログラムも作ってあった気がします。要は、将棋の勝負手みたいなものですよね。ただし、8ビットの対数はすごく精度が低いので、もしかしたら精度が低かったせいで、たまたまそうなった可能性も無きにしもあらずですが(苦笑)……。

——参加プレイヤーを0人に設定すると、CPUキャラだけが参加するゲームを見ながらルールを勉強することもできますよね? 企画段階から、チュートリアルも兼ねた観戦モードを用意する構想があったのでしょうか?
大森田:いいえ。プログラマーの遊びです。「あ、こんなこともできるじゃん」と思いついたので、面白いかどうかは別にして「じゃあ、やっちゃえ」と作っただけですね(笑)。
——もしかして、0人プレイはもともとデバック用に作ったものを製品版にもそのまま残したのでしょうか?
大森田:いえいえ。そこまでの発想はなかったですね。デバッグの最中は、どの道ずっと画面を見ている必要がありましたから、自分でプレイしたほうが一番しやすかったんですよ。

CPUキャラの調整以外にもあった、AIのプログラムに工夫を凝らした理由
——ゲーム開始時に、CPUキャラの強さを「強い」「普通」「弱い」などのように、プレイヤーが任意に設定できる機能を実装しようというお考えはなかったのでしょうか?
大森田:それはなかったですね。個性を付けて、ちゃんとプレイできるCPUにするだけで手一杯で、そこまでは手が回りませんでした。キャラクターは全部で7人いますから、組み合わせによっては簡単だったり、逆に難しくなったりすることはあればいいかな、と思ったぐらいですね。
『いたスト』は、サイコロの目がかなり大きく影響するゲームで、いい目が出続ければ弱いキャラでもときどき勝ってしまうこともありますので、この点でも面白くできたなとは思います。
——サイコロの出目は、CPUキャラによってバラつきなどが発生するのでしょうか?
大森田:サイコロに関してはまったくいじっていません。一番最後に振られた目のデータは保存するように作ってあるので、電源を切ってからやり直してもまた同じ目が出るようになっています。それ以外のときは、基本的にはプレイヤーが順番を待っている間に乱数を更新しているので、ボタンを押すタイミングによって目が変わってしまうのですが、プレイヤーにはそれが伝わりませんので。つまり、サイコロのズルは一切しないプログラムにしてあります。
——現役のプログラマーに向けて、『いたスト』のAIプログラムで参考にしてほしい、あるいは継承してほしい部分などはありますか?
大森田:長いこと苦労しながら作ったので、それなりに愛着はありますが、今とはハードの能力が違いすぎるので……。ファミコンは8ビットでレジスタが3個しかありませんが、今のPCはレジスタが32個もあって、64ビットの浮動小数点演算を1クロックでできますしね。
ただ、ゲームを面白くする上での工夫は、色々と入っていると思います。CPUの能力が上がっても、ゲームに関して工夫する部分は今もそれほど変わっていない気がしますので。『いたスト』は、遊んでいるうちにいろいろなことが起きるので、CPUキャラを強くするにはどうすればいいのか、なかなか一筋縄ではいかないのも面白いところですね。自分でプログラムを作っていてすごく思いました。『いたスト』みたいな昔のゲームを、今のマシンパワーでリメイクしたら、もっと面白くなりそうですよね。今の『いたスト』シリーズでも、すでにAIはかなり賢くなっているとは思いますけど。
——ゲームを面白くするポイントについて、詳しく説明していただけますか?
大森田:実は、AI以外の部分にもいろいろあるのですが、例えば画面分割しているところですね。『いたスト』では画面分割をしているけれど、ハードウェアを載せていないんですよ。普通はタイマーチップとかを載せるのですが、力ずくで画面分割をさせていますので、もしAIの処理が重くなると、画面分割がときどき乱れることがあるんですよ。
——ナルホド。AIのプログラムをうまく作らないと、別のところでも支障が出ちゃうんですね。
大森田:それから、荒井さんにイラストをお願いするときに「ファミコンは4色まで使えますよ」と私が言ってしまったせいで、荒井さんが背景とは違った色を1色使ってキャラを描いちゃったんです。でも、せっかく描いていただいたので、何とかして5色とも表示させたいなあと考えていました。
そこで、5色のうち一番面積の小さいところに、スプライトをパッチとして充てる方法を思い付きました。例えば、赤が最も面積が小さかったら、スプライトを使って赤を出すみたいな処理をするわけですね。ですので、イラストを元にしながら、どの色の面積が一番小さいのかを計算するプログラムを作ってあります(笑)。
ただし、スプライトの面積が大きくなった場合は、下の画面の色が足りなくなって、その分だけでスプライトを借りてくる形になってしまうので、マップの色がチラつくようになってしまいましたね。ただ、プレイヤーの目線は上側、つまりキャラクターの方を向くだろうから、多分気付かれないだろうなと思っていました。でも、後から何人かに気付かれちゃいましたけど……。まあファミコンの性能では、多少のところは目をつぶらないといけない面はありましたね。
——細かいところで、すごい工夫をされていたんですね。
大森田:画面分割をしているので、分割するところまでにすべての処理を終わらさないといけないので、まあ大変でした。時間はあったので、いろいろと凝った処理を作っていましたね。

——もしかしたら、『いたスト』のようなゲームはオンラインでプレイデータ集めるようにすればAIをさらに強くできるのではないでしょうか? あるいは、プレイヤーの傾向やクセに合わせて、CPUの強さを調整できるようになるかもしれないですね。
大森田:そうですね。『いたスト』であれば、オンラインの実装はそれほど難しくはなさそうですし、今どきのAIの作り方ができるかもしれないですね。CPUキャラの数が7人いてちょうどよかったとは思いますが、もっと人数を増やして個性を出してもありかなあとは思います。
『モノポリー』のときは、CPUキャラを30人ぐらい作りましたが、そのなかには実在のプレイヤーをモデルにした人が2人いて、いつもその2人は張り合う設定にプログラムしたら、ちゃんとゲーム内で競い合うように動いてくれたので面白かったですね。
取材・文/鴫原盛之
©ARMOR PROJECT/ KADOKAWA CORPORATION