SlideShare une entreprise Scribd logo
1  sur  37
Télécharger pour lire hors ligne
「超連射68K 開発日記」
- 弾幕世代以前の 2D STG のこと -


      by ファミベのよっしん
          2010/02/20




                         1
自己紹介
●   ファミベのよっしん(吉田弘一)
    ●   STG 大好きです
        ※ただし 2D に限る


●   80~90年代、趣味の一環として STG を作成
    ●
        雑誌にプログラムを投稿、同人ソフト販売


●   2000年代 SCE 在籍
    ●
        タイトル向け社内ライブラリ制作

                               2
80年代につくったもの




↓当時のメインマシン、ファミリーベーシック V3




                           3
90年代につくったもの




              4
90年代前半期の STG と
  それを取り巻く状況



                 5
当時のゲーセン=ゲーマー交流の場
●   インターネットは無い時代
    ●
        情報伝達速度は今ほど早くは無い


●   「コミュニケーションノート」という雑記帳があった
    ●   馴れ合い、罵り合い、絵師の落書き etc...
    ●   今で言う掲示板


●   ノートを軸に常連客コミュニティが形成される


                                  6
熾烈なハイスコア競争が展開される
●   雑誌が全国のゲーセンのハイスコアを集計
    ●   毎月全国TOPプレイヤを決定する仕組み


●   攻略法研究の遠方ゲーセン訪問が流行
    ●   「遠征」という
    ●   他店の常連が遠征に来ると、スパられないよう(=スパイされな
        いようという意)ダンボール箱を被ってプレイする者が出現する


●   エスカレートするスコア競争
    ●   スコアをめぐり、リアル抗争に発展する例も珍しくない

                                        7
当時ゲーセンで稼動していたSTG
●   STGはまだまだ花形ジャンル
    ●   スーパープレイと言えば STG。スーパープレイは希少


●   STG=指鍛錬
    ●   シューター曰く「STG に萌え要素など、公私混同も甚だしいわ」


●   今で言う弾幕ものはまだない
    ●
        弾幕は高次周回でのみ見られる現象だった



                                          8
当時のSTGデザインの傾向
●   張り付き撃ち速攻の美学
    ●
        敵の隙をつき懐にもぐり込む→張り付き撃ち(手連射)→瞬殺


●   スピード狂推奨
    ●   自機速度を MAX に上げ、張り付いたり安全地帯に入ったり


※一方、弾幕世代は弾避けに専念できるデザイン
    ●   弾避けに専念していても、敵にダメージを与え続けられる
    ●   オート連射機能。敵の耐久力=残り時間になってしまう傾向
    ●   張り付き要素との両立は各タイトル工夫されているようです
                                        9
90年代半ばは STG 苦難の時期
●   進化の方向性を模索するが糸口が見えない
    ●
        行き過ぎたマニア化をどう是正するか
    ●   3D 表現に移行しなければならないというプレッシャー


●   インカム効率(売上げ)で対戦格闘ゲームに及ばず
    ●   対戦=どんなに上手いプレイヤでも必ずどっちかが死ぬ
    ●   格闘ゲームは数分で1コイン、一方 STG は数十分で1コイン


●   STGに強いメーカーの撤退が相次ぐ
    ●   東亜プラン倒産、旧アイレム一時撤退
                                         10
一方、ホビーパソコンの動き
●   草の根 BBS の普及
    ●   草の根BBS=当時のネット環境に構築された掲示板
    ●
        ユーザー同士で活発に技術情報交換


●   個人でも市販クオリティのソフトが作成可能に
    ●
        フリーソフトで制作環境が一式揃った
    ●   当時それは画期的なことだった


●   ホビーのゲームプログラミング加速

                                   11
X68K ユーザーは STG を作りまくった
●   アーケード仕様の STG を好むユーザーが多い
    ●   X68Kには移植版 グラディウスI が標準添付されていた
    ●
        それを目的に購入した人が多い。つまりシューターホイホイ


●   「無いなら作るの X68K 魂」がスローガン
    ●
        とにかく何か作らないといけない気運、異様なテンション


●   コミケの X68K 枠は STG で溢れ返る結果に
    ●   STGメーカーの撤退に連動。無いなら作ればいい

                                       12
ここで動画デモ




          13
超連射68K の制作について




                 14
開発時系列
●   1993 年ごろ
    ●   X68K の基礎ライブラリ整備
●   1995 年
    ●   超連射68K バージョン 0.10 コミケ(C47だったと思う)で販売
●   1998 年
    ●   超連射68K バージョン 1.00 完成
●   2001 年
    ●   Windows 移植版作成、フリーソフト化


                                              15
開発体制
●   プログラムとドット絵
    ●
        私(よっしん)が一人で兼任


●   BGM
    ●   柏木るざりん氏 (http://loserkashiwagi.com/)
    ●   2003 年に「巫女みこナース・愛のテーマ」発表。電波ソング方面
        をはじめ幅広く活動中




                                               16
当時のコミケ
●   晴海埠頭で開催(C49 まで)
    ●   なぜか毎年晴天に恵まれる。台風が進路を曲げる
    ●
        オタクの熱気が作る上昇気流によるものであるという都市伝説も


●
    広く作品発表できる唯一の機会
    ●   インターネットが無い時代、オタクにとっては甲子園のようなもの


●   同人ソフトはまだマイナーな扱いだった
    ●   新館2Fという劣悪スペースに配置
    ●
        夏はサウナ状態。館内に熱気で雲ができたという都市伝説あり
                                       17
コミケ参加が超連射68K制作の推進力
●   年二回、絶対に動かせない締め切りがやってくる
    ●
        絶妙に妥協できない感じ


●   ユーザーからのフィードバックを反映して ver UP
    ●   コミケの度に ver UP(悪く言うと ver UP 商法)
    ●   頒布価格は 500 円と、低めの設定にしていた


●   完成まで中断できないサイクルに突入
    ●
        当時、学業が結構忙しく辛かった

                                         18
超連射68K の実装技術面について




                19
SHARP X68K はこんなマシン
●   CPU
    ●   MC68000 10MHz


●   スプライト(ハードウェアによるビットマップ描画)
    ●   16x16 dot サイズが 1 画面中 128 枚まで表示できる
    ●   16x16 dot の絵が 256 種まで登録できる


●   サウンド
    ●   FM 音源(8チャンネル)
    ●   ADPCM(周波数固定1チャンネル)
                                            20
90年代すでにX68Kに陳腐化の兆し
●   夢のマシンのはず、だったのに。。。
    ●   後発機も基本スペックを維持するのが SHARP のポリシー
    ●   X68K 成功要因の一つだが、副作用としての陳腐化は不可避


●   スプライト機能の貧弱さが顕著になってきた
    ●
        その時、すでに普及帯の家庭用ゲーム機と同等以下


●   プログラムの工夫でカバーしないといけない
    ●
        ファミリーベーシックの制約から逃れられたと思ったのも束の間、
        再びギリギリコーディングに(とか言いつつ結構楽しんでいた)
                                        21
スプライトを増やせ!
●   スプライトは走査線が通過した時に表示される
●   表示後、走査線より下に移動すれば、再表示可能
●   これによりスペックの 4 倍の 512 枚表示を実現




走査線が通過した      #0 #1 を走査線の   #0 #1 に走査線が
#0 #1 は表示済み   下に移動する        通過して再表示
                                          22
スプライト VRAM 不足を解消しろ!
●   16x16 dot の絵が 256 種しか定義できない
●   狭いが、仮想メモリだと考えれば十分なサイズ
●   メインメモリからVRAMへ動的に割り当て開放

                  ←動作中のスプライトVRAM全体像

                  たったこれだけの領域しかない

                  動的割り当てにより狭さを解消


                                   23
当時、重い処理と言えば衝突判定
●   32 vs 32 ごときで 60fps 維持できない
         /* これしきで CPU 処理時間を 100% 食いつぶす */
         for( i=0 ; i<32 ; i++ ){ /* 敵 */
           for( j=0 ; j<32 ; j++ ){ /* 自機の弾 */
             衝突判定( i , j ); /* 1024 回実行される */
           }
         }


●   スプライトは増えたが沢山のキャラは出せない?
    ●
        それでは意味がないので高速化を考えることにした


                                                 24
衝突判定の高速化(1)
●       「仮想ビットマップ方式」と当時呼んだ手法を採用
        ●
            画面をマスで区切ってキャラの居るところにマーク
        ●   マークを見つけたら実際に座標で比較
        ●
            衝突判定の面積に比例した処理負荷が生じるという欠点あり
    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   1   0   0   0   0   0   0   0   1   0   0   0   0   0   0
    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   0   0   0   0   0   4   0   0   0   0   0   0   0   4   0   衝突の可能性が
    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   あるなら厳密に
    0   0   2   0   0   0   0   0   0   0   2   0   0   0   0   0   判定を取る
    0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
    0   0   0   0   0   0   8   0   0   0   0   0   0   0   8   0

    キャラの居る位置にマーク                    判定を取る時は、衝突判定
    各ビットがキャラ番号に対応                   範囲内のマークを調べる
                                                                         25
衝突判定の高速化(2)
●   最終的には以下のような形に落ち着いた
    ●       X軸 Y軸 個別に 1 次元のマスを用意し、論理積で評価する
    ●       X軸評価時点で判定無しと判断可(アーリーアウトによる高速化)
    ●
            負荷は衝突判定の面積でなくサイズに比例(先の手法より高速)
             0   1   2   0   0   0   C   0        0   1   2   0   0   0   C   0

        0    0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0
        1    0   1   0   0   0   0   0   0    1   0   1   0   0   0   0   0   0
        0    0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0
        4    0   0   0   0   0   0   4   0    4   0   0   0   0   0   0   4   0
        0    0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0
        2    0   0   2   0   0   0   0   0    2   0   0   2   0   0   0   0   0
        0    0   0   0   0   0   0   0   0    0   0   0   0   0   0   0   0   0
        8    0   0   0   0   0   0   8   0    8   0   0   0   0   0   0   8   0
    X軸 Y軸 対応の1 次元配列にマーク                      X軸 Y軸 の論理積で衝突検出する
                                                                                  26
STGを取り巻く状況
90年代後半に起きた変化



               27
同人ソフトに Windows95 の波が直撃
●   大半のコード資産が無駄になった
    ●   X68K 的にはエンディアンが逆になったのは非常につらかった


●   当時の Windows はまだゲームが作りづらかった
    ●   DirectX3 が出た頃。初期化だけでコードが1000行以上に
    ●   高額なコンパイラ、少ない技術資料、GPUの状況も流動的


●   一時期、同人ゲームがかなり減ってしまった


                                           28
ゲーセンで起きた変化
●   コミュニケーションノートがその役割を終えていく
    ●
        インターネットが普及し、取って代わられていく
    ●   それに連動して、常連コミュニティの世代交代


●   ゲーメスト廃刊、ベーマガのハイスコア集計終了
    ●
        アルカディア誌に引き継がれるが規模は年々縮小の傾向


●   弾幕系STGというフォーマットが出現


                                    29
スーパープレイの位置付けが変化
●   YouTube やニコニコ動画で観られるようになった
    ●   手軽で良い。しかし、本物スーパープレイである保障は無い


●   TAS(Tool-Assisted Superplay)の台頭
    ●   エミュレータ等を駆使して作成したスーパープレイ動画
    ●   処理落ち環境でリプレイ採取しただけのお手軽TASも横行


●   本物スーパープレイのカリスマ性低下
    ●   STGはスーパープレイのカリスマ性と二人三脚で進化してきた
    ●   特にTASはそれを根底から揺るがす可能性がある
                                        30
90年代に積み残した問題
リプレイデータが本物であることをどう証明するか?




                       31
某全国TOP神シューター曰く
  ※シューター=2D STG を好むゲームプレイヤのこと



「ネットに公開されてるハイスコアは信用ならない」
 「仮にリプレイデータがあっても本物か判らない」
 「だから今でも競う土俵はネットでなくゲーセン」
  「ネットに移行できれば競う相手も増えるのに」

不可能を可能にしてきた彼らだからこそ、偽装「不可能」な
リプレイデータもまた存在し得ない=リプレイを利用してハ
イスコアの証明はできない、という解釈になる。
                                32
この問題をプログラマの視点で整理
●   「競う土俵」に求められる特性
    ●   明確なレギュレーション(ルール)があり、違反は100%検出可能
    ●   たとえ違反発生率がゼロでも、違反できる余地がある時点でNG


●   シューターにとってネットは競う土俵として不完全
    ●
        ハイスコアが本物であると証明する方法がない
    ●   リプレイ添付でも、精巧な本物プレイっぽいTASの可能性がある


●   技術的な問題にすぎない
    ●   TAS 利用チートを 100% 検出できれば良いのではないか?
                                          33
どうすればTASは防止できるか?
●   リプレイデータの改竄防止という方向性ではダメ
    ●   暗号化しても TAS には勝てない


●   「TAS の弱点=実プレイ時間」に着目
    ●   TAS は繰り返しリトライするため実プレイ時間が非常に長い
    ●   実プレイ時間を計測できれば TAS 利用チートは検出可能


●   乱数を予測不能にしてやれば良いのでは?
    ●   乱数予測系のTAS(例:テトリス電源パターン系)防止のため

                                        34
超連射68KでTAS対策を実験してみた
●   従来のランキングサーバー方式をちょっと改良
     1)ゲーム開始時、サーバーからゲーム内乱数シードを発行
     2)ゲーム終了時、リプレイデータのハッシュ値をサーバーに返す
     プレイ時間=(2)-(1)。これとハッシュ値をサーバーに保存、公開


●   ハイスコアが TAS 利用でないことを確認する手順
     1)プレイヤからリプレイデータを提出してもらう
     2)ハッシュ値とプレイ時間がサーバー記録と一致することを確認


●   これだけで大半の TAS が不可能になった
                                         35
依然可能なTAS利用チートがある…
●   AI 利用
    ●   画像解析で自律プレイ(ぷよぷよでは実装例があるらしい)
    ●   弾幕を避ける AI が作られる可能性はゼロではない


●   ゲームを早回しして時間をストック
    ●   常時 70fps ぐらいでプレイしておき、難所で処理落ちさせる


●   さらなる改良案が必要
    ●
        皆さんも考えてみて下さい

                                          36
以上です




       37

Contenu connexe

Tendances

条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxpsMITSUNARI Shigeo
 
OpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみたOpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみたTakahiro Miyaura
 
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズムTakuya Akiba
 
猫でもわかるUnreal Engine4
猫でもわかるUnreal Engine4猫でもわかるUnreal Engine4
猫でもわかるUnreal Engine4pafuhana 1213
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
 
CEDEC2017 VR180 3D live streaming camera at "SHOWROOM" case
CEDEC2017 VR180 3D live streaming camera at "SHOWROOM" caseCEDEC2017 VR180 3D live streaming camera at "SHOWROOM" case
CEDEC2017 VR180 3D live streaming camera at "SHOWROOM" caseTakeyuki Ogura
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてalwei
 
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All ThingsUnityTechnologiesJapan002
 
社会シミュレーションとデジタルゲーム
社会シミュレーションとデジタルゲーム社会シミュレーションとデジタルゲーム
社会シミュレーションとデジタルゲームYouichiro Miyake
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理DADA246
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveTokoroten Nakayama
 
多目的遺伝的アルゴリズム
多目的遺伝的アルゴリズム多目的遺伝的アルゴリズム
多目的遺伝的アルゴリズムMatsuiRyo
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案yohhoy
 
【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスターUnity Technologies Japan K.K.
 
2値分類・多クラス分類
2値分類・多クラス分類2値分類・多クラス分類
2値分類・多クラス分類t dev
 
ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」
ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」
ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」Sho Iwamoto
 
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングなぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングSatoshi Kodaira
 
ゲームAI・実装事例の紹介
ゲームAI・実装事例の紹介ゲームAI・実装事例の紹介
ゲームAI・実装事例の紹介Koji Morikawa
 

Tendances (20)

条件分岐とcmovとmaxps
条件分岐とcmovとmaxps条件分岐とcmovとmaxps
条件分岐とcmovとmaxps
 
OpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみたOpenVRやOpenXRの基本的なことを調べてみた
OpenVRやOpenXRの基本的なことを調べてみた
 
平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム平面グラフと交通ネットワークのアルゴリズム
平面グラフと交通ネットワークのアルゴリズム
 
猫でもわかるUnreal Engine4
猫でもわかるUnreal Engine4猫でもわかるUnreal Engine4
猫でもわかるUnreal Engine4
 
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
 
CEDEC2017 VR180 3D live streaming camera at "SHOWROOM" case
CEDEC2017 VR180 3D live streaming camera at "SHOWROOM" caseCEDEC2017 VR180 3D live streaming camera at "SHOWROOM" case
CEDEC2017 VR180 3D live streaming camera at "SHOWROOM" case
 
カスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについてカスタムメモリマネージャと高速なメモリアロケータについて
カスタムメモリマネージャと高速なメモリアロケータについて
 
llvm入門
llvm入門llvm入門
llvm入門
 
線形計画法入門
線形計画法入門線形計画法入門
線形計画法入門
 
【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things【Unite Tokyo 2019】Understanding C# Struct All Things
【Unite Tokyo 2019】Understanding C# Struct All Things
 
社会シミュレーションとデジタルゲーム
社会シミュレーションとデジタルゲーム社会シミュレーションとデジタルゲーム
社会シミュレーションとデジタルゲーム
 
shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理shared_ptrとゲームプログラミングでのメモリ管理
shared_ptrとゲームプログラミングでのメモリ管理
 
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLiveDXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
DXとかDevOpsとかのなんかいい感じのやつ 富士通TechLive
 
多目的遺伝的アルゴリズム
多目的遺伝的アルゴリズム多目的遺伝的アルゴリズム
多目的遺伝的アルゴリズム
 
新しい並列for構文のご提案
新しい並列for構文のご提案新しい並列for構文のご提案
新しい並列for構文のご提案
 
【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター【Unite Tokyo 2018】誘導ミサイル完全マスター
【Unite Tokyo 2018】誘導ミサイル完全マスター
 
2値分類・多クラス分類
2値分類・多クラス分類2値分類・多クラス分類
2値分類・多クラス分類
 
ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」
ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」
ゲームデザインを改善/批評するための時間構造モデル「ワンダールクス」
 
なぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリングなぜなにリアルタイムレンダリング
なぜなにリアルタイムレンダリング
 
ゲームAI・実装事例の紹介
ゲームAI・実装事例の紹介ゲームAI・実装事例の紹介
ゲームAI・実装事例の紹介
 

Similaire à 超連射68K 開発日記 -弾幕世代以前の90年代 STG のこと-

Oh! java script 夢の続きを語ろうよ〜emscriptenの逆襲
Oh! java script 夢の続きを語ろうよ〜emscriptenの逆襲Oh! java script 夢の続きを語ろうよ〜emscriptenの逆襲
Oh! java script 夢の続きを語ろうよ〜emscriptenの逆襲Takashi Toyoshima
 
第2回html5jゲーム部勉強会 Oh! JavaScript 夢の続きを語ろうよ〜emscriptenの逆襲 - html5編
第2回html5jゲーム部勉強会   Oh! JavaScript 夢の続きを語ろうよ〜emscriptenの逆襲 - html5編第2回html5jゲーム部勉強会   Oh! JavaScript 夢の続きを語ろうよ〜emscriptenの逆襲 - html5編
第2回html5jゲーム部勉強会 Oh! JavaScript 夢の続きを語ろうよ〜emscriptenの逆襲 - html5編Takashi Toyoshima
 
GCC2016 ゲームエフェクト制作の現状報告
GCC2016 ゲームエフェクト制作の現状報告GCC2016 ゲームエフェクト制作の現状報告
GCC2016 ゲームエフェクト制作の現状報告t h
 
「深層学習」第6章 畳込みニューラルネット
「深層学習」第6章 畳込みニューラルネット「深層学習」第6章 畳込みニューラルネット
「深層学習」第6章 畳込みニューラルネットKen'ichi Matsui
 
開催趣旨・00年代イントロ・パネルディスカッション資料
開催趣旨・00年代イントロ・パネルディスカッション資料開催趣旨・00年代イントロ・パネルディスカッション資料
開催趣旨・00年代イントロ・パネルディスカッション資料IGDA Japan
 
世界・日本のコンテンツ及びビデオゲーム市場の動向 (Digital content and video game market in the world ...
世界・日本のコンテンツ及びビデオゲーム市場の動向 (Digital content and video game market in the world ...世界・日本のコンテンツ及びビデオゲーム市場の動向 (Digital content and video game market in the world ...
世界・日本のコンテンツ及びビデオゲーム市場の動向 (Digital content and video game market in the world ...Nobushige Kobayashi (Hichibe)
 
Sig-Gloc Ex1
Sig-Gloc Ex1Sig-Gloc Ex1
Sig-Gloc Ex1Kenji Ono
 
XNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところXNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところIGDA Japan
 
ゲーム産業の近未来2011
ゲーム産業の近未来2011ゲーム産業の近未来2011
ゲーム産業の近未来2011Kenji Ono
 
ゲーム x リアル - Mont Blanc Pj. & LITTAI -
ゲーム x リアル - Mont Blanc Pj. & LITTAI - ゲーム x リアル - Mont Blanc Pj. & LITTAI -
ゲーム x リアル - Mont Blanc Pj. & LITTAI - hecomi
 
【Unite 2017 Tokyo】ゲームAI・ゲームデザインから考えるゲームの過去・現在・未来
【Unite 2017 Tokyo】ゲームAI・ゲームデザインから考えるゲームの過去・現在・未来【Unite 2017 Tokyo】ゲームAI・ゲームデザインから考えるゲームの過去・現在・未来
【Unite 2017 Tokyo】ゲームAI・ゲームデザインから考えるゲームの過去・現在・未来Unity Technologies Japan K.K.
 
ゲームAIと学習する人工知能エージェント
ゲームAIと学習する人工知能エージェントゲームAIと学習する人工知能エージェント
ゲームAIと学習する人工知能エージェントYouichiro Miyake
 
ゲームエンジン導入セミナー【UDK編】
ゲームエンジン導入セミナー【UDK編】ゲームエンジン導入セミナー【UDK編】
ゲームエンジン導入セミナー【UDK編】Junya "Jun" Shimoda
 
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24俊仁 小林
 
商業ゲームの保守化とインディーズゲームへの期待
商業ゲームの保守化とインディーズゲームへの期待商業ゲームの保守化とインディーズゲームへの期待
商業ゲームの保守化とインディーズゲームへの期待IGDA Japan
 

Similaire à 超連射68K 開発日記 -弾幕世代以前の90年代 STG のこと- (20)

Oh! java script 夢の続きを語ろうよ〜emscriptenの逆襲
Oh! java script 夢の続きを語ろうよ〜emscriptenの逆襲Oh! java script 夢の続きを語ろうよ〜emscriptenの逆襲
Oh! java script 夢の続きを語ろうよ〜emscriptenの逆襲
 
第2回html5jゲーム部勉強会 Oh! JavaScript 夢の続きを語ろうよ〜emscriptenの逆襲 - html5編
第2回html5jゲーム部勉強会   Oh! JavaScript 夢の続きを語ろうよ〜emscriptenの逆襲 - html5編第2回html5jゲーム部勉強会   Oh! JavaScript 夢の続きを語ろうよ〜emscriptenの逆襲 - html5編
第2回html5jゲーム部勉強会 Oh! JavaScript 夢の続きを語ろうよ〜emscriptenの逆襲 - html5編
 
HoloLens Meetup vol9
HoloLens Meetup vol9HoloLens Meetup vol9
HoloLens Meetup vol9
 
GCC2016 ゲームエフェクト制作の現状報告
GCC2016 ゲームエフェクト制作の現状報告GCC2016 ゲームエフェクト制作の現状報告
GCC2016 ゲームエフェクト制作の現状報告
 
「深層学習」第6章 畳込みニューラルネット
「深層学習」第6章 畳込みニューラルネット「深層学習」第6章 畳込みニューラルネット
「深層学習」第6章 畳込みニューラルネット
 
開催趣旨・00年代イントロ・パネルディスカッション資料
開催趣旨・00年代イントロ・パネルディスカッション資料開催趣旨・00年代イントロ・パネルディスカッション資料
開催趣旨・00年代イントロ・パネルディスカッション資料
 
世界・日本のコンテンツ及びビデオゲーム市場の動向 (Digital content and video game market in the world ...
世界・日本のコンテンツ及びビデオゲーム市場の動向 (Digital content and video game market in the world ...世界・日本のコンテンツ及びビデオゲーム市場の動向 (Digital content and video game market in the world ...
世界・日本のコンテンツ及びビデオゲーム市場の動向 (Digital content and video game market in the world ...
 
SIG-Gloc Ex1
SIG-Gloc Ex1SIG-Gloc Ex1
SIG-Gloc Ex1
 
Sig-Gloc Ex1
Sig-Gloc Ex1Sig-Gloc Ex1
Sig-Gloc Ex1
 
XNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところXNAとはなにか?XNAうれしいところ、うれしくないところ
XNAとはなにか?XNAうれしいところ、うれしくないところ
 
ゲーム産業の近未来2011
ゲーム産業の近未来2011ゲーム産業の近未来2011
ゲーム産業の近未来2011
 
ゲーム x リアル - Mont Blanc Pj. & LITTAI -
ゲーム x リアル - Mont Blanc Pj. & LITTAI - ゲーム x リアル - Mont Blanc Pj. & LITTAI -
ゲーム x リアル - Mont Blanc Pj. & LITTAI -
 
【Unite 2017 Tokyo】ゲームAI・ゲームデザインから考えるゲームの過去・現在・未来
【Unite 2017 Tokyo】ゲームAI・ゲームデザインから考えるゲームの過去・現在・未来【Unite 2017 Tokyo】ゲームAI・ゲームデザインから考えるゲームの過去・現在・未来
【Unite 2017 Tokyo】ゲームAI・ゲームデザインから考えるゲームの過去・現在・未来
 
ゲームAIと学習する人工知能エージェント
ゲームAIと学習する人工知能エージェントゲームAIと学習する人工知能エージェント
ゲームAIと学習する人工知能エージェント
 
日本ゲーム産業史概説
日本ゲーム産業史概説日本ゲーム産業史概説
日本ゲーム産業史概説
 
ゲームエンジン導入セミナー【UDK編】
ゲームエンジン導入セミナー【UDK編】ゲームエンジン導入セミナー【UDK編】
ゲームエンジン導入セミナー【UDK編】
 
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
変化の時代で勝つためのアジャイルゲーム開発 2012 03-24
 
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
バイキング流UE4活用術 ~BPとお別れするまでの18ヶ月~
 
GDC2018報告会
GDC2018報告会GDC2018報告会
GDC2018報告会
 
商業ゲームの保守化とインディーズゲームへの期待
商業ゲームの保守化とインディーズゲームへの期待商業ゲームの保守化とインディーズゲームへの期待
商業ゲームの保守化とインディーズゲームへの期待
 

Plus de IGDA Japan

PSM向けノベルゲームの開発の課題_サークルやまどん
PSM向けノベルゲームの開発の課題_サークルやまどんPSM向けノベルゲームの開発の課題_サークルやまどん
PSM向けノベルゲームの開発の課題_サークルやまどんIGDA Japan
 
PlayStation Mobileで多言語ノベルゲームを作る_ぜろじげん
PlayStation Mobileで多言語ノベルゲームを作る_ぜろじげんPlayStation Mobileで多言語ノベルゲームを作る_ぜろじげん
PlayStation Mobileで多言語ノベルゲームを作る_ぜろじげんIGDA Japan
 
PSMとXNA~とある同人サークルの一存~_こびとスタジオ
PSMとXNA~とある同人サークルの一存~_こびとスタジオPSMとXNA~とある同人サークルの一存~_こびとスタジオ
PSMとXNA~とある同人サークルの一存~_こびとスタジオIGDA Japan
 
『僕は森世界の神になる』がPlayStation Mobileで発売されるまでの流れ_神奈川電子技術研究所
『僕は森世界の神になる』がPlayStation Mobileで発売されるまでの流れ_神奈川電子技術研究所『僕は森世界の神になる』がPlayStation Mobileで発売されるまでの流れ_神奈川電子技術研究所
『僕は森世界の神になる』がPlayStation Mobileで発売されるまでの流れ_神奈川電子技術研究所IGDA Japan
 
PlayStation Mobile現況および今後の展開について_SCE
PlayStation Mobile現況および今後の展開について_SCEPlayStation Mobile現況および今後の展開について_SCE
PlayStation Mobile現況および今後の展開について_SCEIGDA Japan
 
ソシャゲと家庭用のユーザーの違いと重なり_小山友介
ソシャゲと家庭用のユーザーの違いと重なり_小山友介ソシャゲと家庭用のユーザーの違いと重なり_小山友介
ソシャゲと家庭用のユーザーの違いと重なり_小山友介IGDA Japan
 
SIG-INDIE10_「PlayStation Mobileの現状と可能性」_概要_七邊信重
SIG-INDIE10_「PlayStation Mobileの現状と可能性」_概要_七邊信重SIG-INDIE10_「PlayStation Mobileの現状と可能性」_概要_七邊信重
SIG-INDIE10_「PlayStation Mobileの現状と可能性」_概要_七邊信重IGDA Japan
 
120915 sig indie9
120915 sig indie9120915 sig indie9
120915 sig indie9IGDA Japan
 
[120915] igda sig indie9
[120915] igda sig indie9[120915] igda sig indie9
[120915] igda sig indie9IGDA Japan
 
東方Projectにみる弾幕演出とゲームプレイ
東方Projectにみる弾幕演出とゲームプレイ東方Projectにみる弾幕演出とゲームプレイ
東方Projectにみる弾幕演出とゲームプレイIGDA Japan
 
いわゆるマジコンを巡る法的議論の現状
いわゆるマジコンを巡る法的議論の現状いわゆるマジコンを巡る法的議論の現状
いわゆるマジコンを巡る法的議論の現状IGDA Japan
 
Global Game Jam 2011 プレビュー
Global Game Jam 2011 プレビューGlobal Game Jam 2011 プレビュー
Global Game Jam 2011 プレビューIGDA Japan
 
110122 ぜろじげん講演会資料 配布用
110122 ぜろじげん講演会資料 配布用110122 ぜろじげん講演会資料 配布用
110122 ぜろじげん講演会資料 配布用IGDA Japan
 
110122 sig indie8趣旨説明・ディスカッション
110122 sig indie8趣旨説明・ディスカッション110122 sig indie8趣旨説明・ディスカッション
110122 sig indie8趣旨説明・ディスカッションIGDA Japan
 
日本のポピュラー音楽に見るインディーズの成立条件
日本のポピュラー音楽に見るインディーズの成立条件日本のポピュラー音楽に見るインディーズの成立条件
日本のポピュラー音楽に見るインディーズの成立条件IGDA Japan
 
商業視点から見た、同人と商業の違い
商業視点から見た、同人と商業の違い商業視点から見た、同人と商業の違い
商業視点から見た、同人と商業の違いIGDA Japan
 
実践事例から学ぶプロデュース・PR術
実践事例から学ぶプロデュース・PR術実践事例から学ぶプロデュース・PR術
実践事例から学ぶプロデュース・PR術IGDA Japan
 
AI(エーアイ)は世界を変える! 同人ゲーム24時間USTREAM放送イベント
AI(エーアイ)は世界を変える! 同人ゲーム24時間USTREAM放送イベントAI(エーアイ)は世界を変える! 同人ゲーム24時間USTREAM放送イベント
AI(エーアイ)は世界を変える! 同人ゲーム24時間USTREAM放送イベントIGDA Japan
 
インディーズ作品だからこそできる事
インディーズ作品だからこそできる事インディーズ作品だからこそできる事
インディーズ作品だからこそできる事IGDA Japan
 
同人ゲーム制作支援からの四方山話 2
同人ゲーム制作支援からの四方山話 2同人ゲーム制作支援からの四方山話 2
同人ゲーム制作支援からの四方山話 2IGDA Japan
 

Plus de IGDA Japan (20)

PSM向けノベルゲームの開発の課題_サークルやまどん
PSM向けノベルゲームの開発の課題_サークルやまどんPSM向けノベルゲームの開発の課題_サークルやまどん
PSM向けノベルゲームの開発の課題_サークルやまどん
 
PlayStation Mobileで多言語ノベルゲームを作る_ぜろじげん
PlayStation Mobileで多言語ノベルゲームを作る_ぜろじげんPlayStation Mobileで多言語ノベルゲームを作る_ぜろじげん
PlayStation Mobileで多言語ノベルゲームを作る_ぜろじげん
 
PSMとXNA~とある同人サークルの一存~_こびとスタジオ
PSMとXNA~とある同人サークルの一存~_こびとスタジオPSMとXNA~とある同人サークルの一存~_こびとスタジオ
PSMとXNA~とある同人サークルの一存~_こびとスタジオ
 
『僕は森世界の神になる』がPlayStation Mobileで発売されるまでの流れ_神奈川電子技術研究所
『僕は森世界の神になる』がPlayStation Mobileで発売されるまでの流れ_神奈川電子技術研究所『僕は森世界の神になる』がPlayStation Mobileで発売されるまでの流れ_神奈川電子技術研究所
『僕は森世界の神になる』がPlayStation Mobileで発売されるまでの流れ_神奈川電子技術研究所
 
PlayStation Mobile現況および今後の展開について_SCE
PlayStation Mobile現況および今後の展開について_SCEPlayStation Mobile現況および今後の展開について_SCE
PlayStation Mobile現況および今後の展開について_SCE
 
ソシャゲと家庭用のユーザーの違いと重なり_小山友介
ソシャゲと家庭用のユーザーの違いと重なり_小山友介ソシャゲと家庭用のユーザーの違いと重なり_小山友介
ソシャゲと家庭用のユーザーの違いと重なり_小山友介
 
SIG-INDIE10_「PlayStation Mobileの現状と可能性」_概要_七邊信重
SIG-INDIE10_「PlayStation Mobileの現状と可能性」_概要_七邊信重SIG-INDIE10_「PlayStation Mobileの現状と可能性」_概要_七邊信重
SIG-INDIE10_「PlayStation Mobileの現状と可能性」_概要_七邊信重
 
120915 sig indie9
120915 sig indie9120915 sig indie9
120915 sig indie9
 
[120915] igda sig indie9
[120915] igda sig indie9[120915] igda sig indie9
[120915] igda sig indie9
 
東方Projectにみる弾幕演出とゲームプレイ
東方Projectにみる弾幕演出とゲームプレイ東方Projectにみる弾幕演出とゲームプレイ
東方Projectにみる弾幕演出とゲームプレイ
 
いわゆるマジコンを巡る法的議論の現状
いわゆるマジコンを巡る法的議論の現状いわゆるマジコンを巡る法的議論の現状
いわゆるマジコンを巡る法的議論の現状
 
Global Game Jam 2011 プレビュー
Global Game Jam 2011 プレビューGlobal Game Jam 2011 プレビュー
Global Game Jam 2011 プレビュー
 
110122 ぜろじげん講演会資料 配布用
110122 ぜろじげん講演会資料 配布用110122 ぜろじげん講演会資料 配布用
110122 ぜろじげん講演会資料 配布用
 
110122 sig indie8趣旨説明・ディスカッション
110122 sig indie8趣旨説明・ディスカッション110122 sig indie8趣旨説明・ディスカッション
110122 sig indie8趣旨説明・ディスカッション
 
日本のポピュラー音楽に見るインディーズの成立条件
日本のポピュラー音楽に見るインディーズの成立条件日本のポピュラー音楽に見るインディーズの成立条件
日本のポピュラー音楽に見るインディーズの成立条件
 
商業視点から見た、同人と商業の違い
商業視点から見た、同人と商業の違い商業視点から見た、同人と商業の違い
商業視点から見た、同人と商業の違い
 
実践事例から学ぶプロデュース・PR術
実践事例から学ぶプロデュース・PR術実践事例から学ぶプロデュース・PR術
実践事例から学ぶプロデュース・PR術
 
AI(エーアイ)は世界を変える! 同人ゲーム24時間USTREAM放送イベント
AI(エーアイ)は世界を変える! 同人ゲーム24時間USTREAM放送イベントAI(エーアイ)は世界を変える! 同人ゲーム24時間USTREAM放送イベント
AI(エーアイ)は世界を変える! 同人ゲーム24時間USTREAM放送イベント
 
インディーズ作品だからこそできる事
インディーズ作品だからこそできる事インディーズ作品だからこそできる事
インディーズ作品だからこそできる事
 
同人ゲーム制作支援からの四方山話 2
同人ゲーム制作支援からの四方山話 2同人ゲーム制作支援からの四方山話 2
同人ゲーム制作支援からの四方山話 2
 

超連射68K 開発日記 -弾幕世代以前の90年代 STG のこと-

  • 1. 「超連射68K 開発日記」 - 弾幕世代以前の 2D STG のこと - by ファミベのよっしん 2010/02/20 1
  • 2. 自己紹介 ● ファミベのよっしん(吉田弘一) ● STG 大好きです ※ただし 2D に限る ● 80~90年代、趣味の一環として STG を作成 ● 雑誌にプログラムを投稿、同人ソフト販売 ● 2000年代 SCE 在籍 ● タイトル向け社内ライブラリ制作 2
  • 5. 90年代前半期の STG と それを取り巻く状況 5
  • 6. 当時のゲーセン=ゲーマー交流の場 ● インターネットは無い時代 ● 情報伝達速度は今ほど早くは無い ● 「コミュニケーションノート」という雑記帳があった ● 馴れ合い、罵り合い、絵師の落書き etc... ● 今で言う掲示板 ● ノートを軸に常連客コミュニティが形成される 6
  • 7. 熾烈なハイスコア競争が展開される ● 雑誌が全国のゲーセンのハイスコアを集計 ● 毎月全国TOPプレイヤを決定する仕組み ● 攻略法研究の遠方ゲーセン訪問が流行 ● 「遠征」という ● 他店の常連が遠征に来ると、スパられないよう(=スパイされな いようという意)ダンボール箱を被ってプレイする者が出現する ● エスカレートするスコア競争 ● スコアをめぐり、リアル抗争に発展する例も珍しくない 7
  • 8. 当時ゲーセンで稼動していたSTG ● STGはまだまだ花形ジャンル ● スーパープレイと言えば STG。スーパープレイは希少 ● STG=指鍛錬 ● シューター曰く「STG に萌え要素など、公私混同も甚だしいわ」 ● 今で言う弾幕ものはまだない ● 弾幕は高次周回でのみ見られる現象だった 8
  • 9. 当時のSTGデザインの傾向 ● 張り付き撃ち速攻の美学 ● 敵の隙をつき懐にもぐり込む→張り付き撃ち(手連射)→瞬殺 ● スピード狂推奨 ● 自機速度を MAX に上げ、張り付いたり安全地帯に入ったり ※一方、弾幕世代は弾避けに専念できるデザイン ● 弾避けに専念していても、敵にダメージを与え続けられる ● オート連射機能。敵の耐久力=残り時間になってしまう傾向 ● 張り付き要素との両立は各タイトル工夫されているようです 9
  • 10. 90年代半ばは STG 苦難の時期 ● 進化の方向性を模索するが糸口が見えない ● 行き過ぎたマニア化をどう是正するか ● 3D 表現に移行しなければならないというプレッシャー ● インカム効率(売上げ)で対戦格闘ゲームに及ばず ● 対戦=どんなに上手いプレイヤでも必ずどっちかが死ぬ ● 格闘ゲームは数分で1コイン、一方 STG は数十分で1コイン ● STGに強いメーカーの撤退が相次ぐ ● 東亜プラン倒産、旧アイレム一時撤退 10
  • 11. 一方、ホビーパソコンの動き ● 草の根 BBS の普及 ● 草の根BBS=当時のネット環境に構築された掲示板 ● ユーザー同士で活発に技術情報交換 ● 個人でも市販クオリティのソフトが作成可能に ● フリーソフトで制作環境が一式揃った ● 当時それは画期的なことだった ● ホビーのゲームプログラミング加速 11
  • 12. X68K ユーザーは STG を作りまくった ● アーケード仕様の STG を好むユーザーが多い ● X68Kには移植版 グラディウスI が標準添付されていた ● それを目的に購入した人が多い。つまりシューターホイホイ ● 「無いなら作るの X68K 魂」がスローガン ● とにかく何か作らないといけない気運、異様なテンション ● コミケの X68K 枠は STG で溢れ返る結果に ● STGメーカーの撤退に連動。無いなら作ればいい 12
  • 15. 開発時系列 ● 1993 年ごろ ● X68K の基礎ライブラリ整備 ● 1995 年 ● 超連射68K バージョン 0.10 コミケ(C47だったと思う)で販売 ● 1998 年 ● 超連射68K バージョン 1.00 完成 ● 2001 年 ● Windows 移植版作成、フリーソフト化 15
  • 16. 開発体制 ● プログラムとドット絵 ● 私(よっしん)が一人で兼任 ● BGM ● 柏木るざりん氏 (http://loserkashiwagi.com/) ● 2003 年に「巫女みこナース・愛のテーマ」発表。電波ソング方面 をはじめ幅広く活動中 16
  • 17. 当時のコミケ ● 晴海埠頭で開催(C49 まで) ● なぜか毎年晴天に恵まれる。台風が進路を曲げる ● オタクの熱気が作る上昇気流によるものであるという都市伝説も ● 広く作品発表できる唯一の機会 ● インターネットが無い時代、オタクにとっては甲子園のようなもの ● 同人ソフトはまだマイナーな扱いだった ● 新館2Fという劣悪スペースに配置 ● 夏はサウナ状態。館内に熱気で雲ができたという都市伝説あり 17
  • 18. コミケ参加が超連射68K制作の推進力 ● 年二回、絶対に動かせない締め切りがやってくる ● 絶妙に妥協できない感じ ● ユーザーからのフィードバックを反映して ver UP ● コミケの度に ver UP(悪く言うと ver UP 商法) ● 頒布価格は 500 円と、低めの設定にしていた ● 完成まで中断できないサイクルに突入 ● 当時、学業が結構忙しく辛かった 18
  • 20. SHARP X68K はこんなマシン ● CPU ● MC68000 10MHz ● スプライト(ハードウェアによるビットマップ描画) ● 16x16 dot サイズが 1 画面中 128 枚まで表示できる ● 16x16 dot の絵が 256 種まで登録できる ● サウンド ● FM 音源(8チャンネル) ● ADPCM(周波数固定1チャンネル) 20
  • 21. 90年代すでにX68Kに陳腐化の兆し ● 夢のマシンのはず、だったのに。。。 ● 後発機も基本スペックを維持するのが SHARP のポリシー ● X68K 成功要因の一つだが、副作用としての陳腐化は不可避 ● スプライト機能の貧弱さが顕著になってきた ● その時、すでに普及帯の家庭用ゲーム機と同等以下 ● プログラムの工夫でカバーしないといけない ● ファミリーベーシックの制約から逃れられたと思ったのも束の間、 再びギリギリコーディングに(とか言いつつ結構楽しんでいた) 21
  • 22. スプライトを増やせ! ● スプライトは走査線が通過した時に表示される ● 表示後、走査線より下に移動すれば、再表示可能 ● これによりスペックの 4 倍の 512 枚表示を実現 走査線が通過した #0 #1 を走査線の #0 #1 に走査線が #0 #1 は表示済み 下に移動する 通過して再表示 22
  • 23. スプライト VRAM 不足を解消しろ! ● 16x16 dot の絵が 256 種しか定義できない ● 狭いが、仮想メモリだと考えれば十分なサイズ ● メインメモリからVRAMへ動的に割り当て開放 ←動作中のスプライトVRAM全体像 たったこれだけの領域しかない 動的割り当てにより狭さを解消 23
  • 24. 当時、重い処理と言えば衝突判定 ● 32 vs 32 ごときで 60fps 維持できない /* これしきで CPU 処理時間を 100% 食いつぶす */ for( i=0 ; i<32 ; i++ ){ /* 敵 */ for( j=0 ; j<32 ; j++ ){ /* 自機の弾 */ 衝突判定( i , j ); /* 1024 回実行される */ } } ● スプライトは増えたが沢山のキャラは出せない? ● それでは意味がないので高速化を考えることにした 24
  • 25. 衝突判定の高速化(1) ● 「仮想ビットマップ方式」と当時呼んだ手法を採用 ● 画面をマスで区切ってキャラの居るところにマーク ● マークを見つけたら実際に座標で比較 ● 衝突判定の面積に比例した処理負荷が生じるという欠点あり 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 4 0 衝突の可能性が 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 あるなら厳密に 0 0 2 0 0 0 0 0 0 0 2 0 0 0 0 0 判定を取る 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 0 8 0 キャラの居る位置にマーク 判定を取る時は、衝突判定 各ビットがキャラ番号に対応 範囲内のマークを調べる 25
  • 26. 衝突判定の高速化(2) ● 最終的には以下のような形に落ち着いた ● X軸 Y軸 個別に 1 次元のマスを用意し、論理積で評価する ● X軸評価時点で判定無しと判断可(アーリーアウトによる高速化) ● 負荷は衝突判定の面積でなくサイズに比例(先の手法より高速) 0 1 2 0 0 0 C 0 0 1 2 0 0 0 C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 4 0 4 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 2 0 0 0 0 0 2 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 8 0 0 0 0 0 0 8 0 8 0 0 0 0 0 0 8 0 X軸 Y軸 対応の1 次元配列にマーク X軸 Y軸 の論理積で衝突検出する 26
  • 28. 同人ソフトに Windows95 の波が直撃 ● 大半のコード資産が無駄になった ● X68K 的にはエンディアンが逆になったのは非常につらかった ● 当時の Windows はまだゲームが作りづらかった ● DirectX3 が出た頃。初期化だけでコードが1000行以上に ● 高額なコンパイラ、少ない技術資料、GPUの状況も流動的 ● 一時期、同人ゲームがかなり減ってしまった 28
  • 29. ゲーセンで起きた変化 ● コミュニケーションノートがその役割を終えていく ● インターネットが普及し、取って代わられていく ● それに連動して、常連コミュニティの世代交代 ● ゲーメスト廃刊、ベーマガのハイスコア集計終了 ● アルカディア誌に引き継がれるが規模は年々縮小の傾向 ● 弾幕系STGというフォーマットが出現 29
  • 30. スーパープレイの位置付けが変化 ● YouTube やニコニコ動画で観られるようになった ● 手軽で良い。しかし、本物スーパープレイである保障は無い ● TAS(Tool-Assisted Superplay)の台頭 ● エミュレータ等を駆使して作成したスーパープレイ動画 ● 処理落ち環境でリプレイ採取しただけのお手軽TASも横行 ● 本物スーパープレイのカリスマ性低下 ● STGはスーパープレイのカリスマ性と二人三脚で進化してきた ● 特にTASはそれを根底から揺るがす可能性がある 30
  • 32. 某全国TOP神シューター曰く ※シューター=2D STG を好むゲームプレイヤのこと 「ネットに公開されてるハイスコアは信用ならない」 「仮にリプレイデータがあっても本物か判らない」 「だから今でも競う土俵はネットでなくゲーセン」 「ネットに移行できれば競う相手も増えるのに」 不可能を可能にしてきた彼らだからこそ、偽装「不可能」な リプレイデータもまた存在し得ない=リプレイを利用してハ イスコアの証明はできない、という解釈になる。 32
  • 33. この問題をプログラマの視点で整理 ● 「競う土俵」に求められる特性 ● 明確なレギュレーション(ルール)があり、違反は100%検出可能 ● たとえ違反発生率がゼロでも、違反できる余地がある時点でNG ● シューターにとってネットは競う土俵として不完全 ● ハイスコアが本物であると証明する方法がない ● リプレイ添付でも、精巧な本物プレイっぽいTASの可能性がある ● 技術的な問題にすぎない ● TAS 利用チートを 100% 検出できれば良いのではないか? 33
  • 34. どうすればTASは防止できるか? ● リプレイデータの改竄防止という方向性ではダメ ● 暗号化しても TAS には勝てない ● 「TAS の弱点=実プレイ時間」に着目 ● TAS は繰り返しリトライするため実プレイ時間が非常に長い ● 実プレイ時間を計測できれば TAS 利用チートは検出可能 ● 乱数を予測不能にしてやれば良いのでは? ● 乱数予測系のTAS(例:テトリス電源パターン系)防止のため 34
  • 35. 超連射68KでTAS対策を実験してみた ● 従来のランキングサーバー方式をちょっと改良 1)ゲーム開始時、サーバーからゲーム内乱数シードを発行 2)ゲーム終了時、リプレイデータのハッシュ値をサーバーに返す プレイ時間=(2)-(1)。これとハッシュ値をサーバーに保存、公開 ● ハイスコアが TAS 利用でないことを確認する手順 1)プレイヤからリプレイデータを提出してもらう 2)ハッシュ値とプレイ時間がサーバー記録と一致することを確認 ● これだけで大半の TAS が不可能になった 35
  • 36. 依然可能なTAS利用チートがある… ● AI 利用 ● 画像解析で自律プレイ(ぷよぷよでは実装例があるらしい) ● 弾幕を避ける AI が作られる可能性はゼロではない ● ゲームを早回しして時間をストック ● 常時 70fps ぐらいでプレイしておき、難所で処理落ちさせる ● さらなる改良案が必要 ● 皆さんも考えてみて下さい 36