なんかひさしぶり。全体の(演出の)質を向上させるための方法論の続き。
基本は単純。「通しプレイと修正の繰り返し」。プロトタイピングと、スパイラル開発は品質向上に有効に働きます。この種の制作作業においては「一発勝負の感性の重要性」という側面もなきにしもあらずですが、総合的な完成度をあげるには、やはり全体レベルでの見直しが必要でしょう。
それに対するシステム側の支援としては、RADツールや、構成管理システムの活用などがあります。ゲーム制作においても、これらの活用は十分効果を発揮することでしょう。RAD ツールで適切なのがあるかっつーとちょっと思い浮かびませんが、構成管理システムはいろいろ使えます。今さら CVS の類が無い生活には戻れません。
ただ、現実問題として、こういったシステムを作業者全員が導入して作業するのはとても難しいです。ぶっちゃけ、なかなか使ってくれません(苦笑)。 CVS は複雑なのと、あと、「段階的な情報提供」には向いてないという問題もあります。
というわけで、もすこし頑張って、どんなことができるだろーかと考えてみる。
まず、システム作業者は、開発の初期段階から短いスパンで「リリース」を行うべきです。たとえば、シナリオが上がってきた時点で、まず、絵とかは全然なしでも「通して遊べる」状態になるべきでしょう。
「リリース」は、毎回、インストーラつきのフルセットの状態でなされるべきです。途中参加のスタッフも、そのセットを入手することで「現時点で動作するもの」が即座に入手できることになります。
ただ、インストールのためのパッケージング作業というのは案外手間なんですね(汗)。とても毎日はやってられません。とはいえ、一度形がきまってしまうと、基本的には機械的作業です。つまり、自動化の余地があります……って、よーするにうちは自動化できてないのです(苦笑)。あかんですねぇ。技術的には Microsoft の Windows Installer XML あたりがかなり使えるのではないかと思案中。だれかこれをうまいこと活用するドキュメント一つかいてくれ。日本語希望。
問題は棚にあげて、インストーラつきのリリースが毎日できてくる状態になったとして、それを毎日全部ダウンロードさせてインストールさせて……なんてことは、やっぱり誰もやってくれないでしょう(苦笑)。そこでアノ機能が生きてきますよ、先生。そう、既に弊社のゲームエンジンに「ブラウザ」と「ネットワーク同期システム」がはいってるわけですから、これを活用しない手はありません。
このシステムは、単独フォルダ動作であり、インストールパッケージもフォルダそのままの構成になるので、リリース用に自動的につくられるパッケージ構成は直接実行可能な状態です。これを同期対象として、ネットワーク経由で定期的にアップデートしてもらうことにします。こういった活用に気づいたのが某アレのデバッグ作業をしてた時ってのが遅すぎ。
細かい修正作業を行うわけでない人──たとえばデバッグ要員の人――には、最初「実行ファイル」のみを配布します。これは次のような機能を持ちます。
開発用ポータルサイトの設置が前提です。スケジュール状態や、 関係者へのお知らせなどを、起動時には毎回確認するような習慣をつけてもらいます。 掲示板やバグトラッキングも WEB インターフェースで完備しておきます
バグトラッキングは設置するわけですが、バグトラッキングへの入力作業ってのは 案外めんどうなものです。システムの状態ってのは、そのシステムが一番知ってる わけですから、直接システムに報告させるのが筋です。問題点に遭遇したら、 システムのメニューから、「問題点を送信」。これで、問題がおこったシステムのバージョン、 システムの状態、シナリオファイルなどのバージョンと状態、画面キャプチャなどを コメントを沿えて直接ネット経由 (または蓄積して一括送信) でトラッキングシステムに送る機能を搭載します。
まあ最低限ここまでしないとダメだろうってことで。合言葉は「人に作業させるな」。けっこう下準備としてはたいへんになるけど、一度確立してしまえば、あとはかなり長くつかいまわせるはずです。
さらには、rsync とか svn とかのライブラリも駆使して、単純なプレイのみの作業の人だけでなく、グラフィッカーさんとかが素材を「アップする」ツールにもならないかなーとか。原状 ftp でちまちまあげてもらってるわけですがそれの集約と、ワークフローへの組み込みがしたいです。半自動で最新データの同期と収集処理が行えると理想。このあたりもぼちぼち考えていきましょう。
反応。 そんなに程遠くもないかなーと。某の場合ですら、
ってかんじで流れてたので……。発注した先は専門職にわたって素材があがってきてます。作業者B の人(ばればれ)は、ある程度絵コンテ的なものを考えながら2の作業をしていて、 7の作業の時にはそれにしたがって素材とか大量につくりつつ手をいれていた模様です。作業の「専門化」と「外注化」が進行すると、(主にマンパワーの問題から)こういった切り分けの重要性があがってくるんだろうなとは思います。それこそアニメ並に。その上で、全体の作業を把握して指示が出せる「監督」の重要度があがるかなぁと。
あと、収録された音声に対してフィードバックを行いたい (音声にあわせて絵をつくる、ふくらんだイメージにあわせてシナリオを改訂する、などなど) という要望があります。音声収録は、開発初期、中期、の最低2回はしたい、と考えている演出氏は案外多いのではないでしょうか(想像)。作品の価値のうち、音声の占める割合は確実にあがってますので、それを意識しつつ、さらに品質をあげるには、一発どりでの声優さんの瞬発的な個人技と、音響監督の技にたよるだけでは限界があります。ただ、フィードバックするためには、初回の音声は早い段階であがってくる必要があり、そうなると、やはり「シナリオ」は、あらゆる作業の開始前に一通り上がっておく必要があるわけです。
全作業完了してから、音声だけあとからつけたしで差し込んで完成、というのが、システム作業的、いや、データ作業的は美しいし、なにより「楽」だとも思いますが、(Visual Arts の作業体制がそうらしいと耳にはさんだことがあります。さすがだ)、それはプログラマ的すぎる思考かなと(苦笑)
今週末は、大量の段ボールの山の引っ越し作業の人足にさらわれる予定でして、それがまだ未確定なので、カレーがどうなるかは微妙っす>誰か
引越しが土曜になるようなら日曜午後、日曜になるようなら土曜午後かも?
あ、達成されます(苦笑)。
ただ、それが、「だけ」かどうか、というのがポイントでして、たしかに難しくないんですけどやっぱ難しいんですよぉ(^^;
update と commit ボタンしか無い CVS クライアントがあればなぁという、低いレベルのお話なのでした。プログラマとスクリプタにはさっくりその辺りインストールして使い方たたきこんだらおしまいなのですが、それと同じことを全体にさせたくないわけで。まあ、させたほうが教育的には良いのかもだけど。
エンジン本体は誰がなんと言おうと必須ツールですから、じゃあ「開発版」エンジン本体に、その種の必要なものは全部ぶちこんでしまうのはどうだろう? ということですね。
CVS はソースが以下略なので、SVN 方面を利用してどーにか簡素なものが組み込めないかなと思案中←まだ思案してるだけ
某所から某所に、本のはいった段ボールをひたすらはこぶ。けっこう時間かかるかとおもったけど、人数がけっこういたのと、手際がかなり良くて、予定よりかなり早くおわりました。終わったあとビールのんでジンギスカン食っておつかれさまで解散。
業界標準サイズ(謎)で 370箱。いやあ、あのサイズの家にここまで入るものなんですねぇ。
いろいろめずらしいもの見させていただきました m(_ _)m
ありりんが横で蔵プレイ中継してるのを横目にふと思い立って開始。おー、なるほど、娘げーか(苦笑)。とりあえず国とり完了したところまで。普通におもしろいです。
最近はケロロ軍曹しかずっと見てない気が……。アニメもいいかんじですが、個人的には原作のノリのが好みかな。
鋼が見てないのがたまってるな(汗)。ダフネが地味におもしろいので、タイミングあったら見てます。もうすこし作画が良ければなぁ。あとは美鳥ぐらいか。
で、絢爛舞踏祭がおもしろい、おもしろい、とみんな言ってるのでどんなものかと見てみました。……確かにこりゃおもしれぇ(笑)。3話ぐらいまで地味なんですが、4話からぐぐっとお話動き出して、たいへん良い感じになっております。思わず7話まるごと見てしまった。ポイポイダー、カコイイ。もてもてだし(ぉ。
IRC の一部ではそれなりに話題にしてたかも。主に私が(^^;
ぱれっとは、前作(復讐の女神)で、演出的に見るべき点が多かったのと、あと、北都南様の使い方が激しく素晴らしかったので(双子あんど性格豹変ですよ!)、要チェックブランドになってます(爆)。細かいところのクオリティUPに期待。
C言語において、関数ポインタと、普通のポインタとの間のキャストは ANSI外です。それぞれ整数とは変換できるので、ANSI 適合にするには (VC とか警告だしてくれるので、警告うざい場合は必要)
pData = (PData*)(intptr_t)pFunc;
という二段キャストが必要です (※intptr_t は C99なので無い場合はポータビリティに不安がでるけど int などを使う)。
ここまでは TIPS 。で、そもそもキャストができないのは、たぶん歴史的経緯なんだけど、それはどこから来たのだろう、という話題に。たとえば 8086 な環境 (MS-DOS とか) がデータポインタとプロシージャの呼び出しのためのポインタが構造違うので、そういったあたりの流れだろうってのはあるんだけど、それを C 言語が仕様とするに至った元祖はどこなのかにゃと。キーワード的にはハーバードアーキテクチャ。というわけで誰か知ってる人は教えてぷりーず。
これは俺内部的に。
cygwin とかの gcc でつくったオブジェクトは、VC からもリンクできます。が、C のオブジェクトはともかく、C++ や Objective-C のオブジェクトの場合、リンクは通るのですが、クラスの初期化コードが呼ばれないので、実行時に怒られておちます。
これを適切に処理するにはどうしたもんかなぁと。その処理自体は __main() の中でやってるぽなので、main() の頭で __main() よばせてみたんだけど、どうも、それが内部で見る初期化用メソッド群の INDEX の構築がうまくいってないようで、結局何もよばれないみたい。たぶんそれの構築はリンカさんがやってくれてるんだろうけど、その周辺よくわかってないのでここまでで壁にぶちあたりました。んー、そもそもリンクを LD にやらせればええのかな?そうすると、それはそれで VC 側のクラスが動かなくなるような気はする(^^; だれかいい方法知ってたら教えてぷりーず。
ちなみに、C++ はどーでもよくて、Objective-C のクラスを VC でつくってるアプリケーションにリンクでけへんかなってのが課題(^^; 口を C の形にして呼び出しできるようにしても、クラスの初期化処理がよばれてないから、実行時に「そんな名前のクラスはしらん」っておこられるのよね