2012年8月19日日曜日

生産状況(18-Aug)

SHOT04の現時点(5面ボスの第2形態を3~5割ぐらい作成完了したところ)の生産ステップ数を取得。

実行行数がほぼ16ksというところ。(8/4の前回の生産状況から+3ks増加)
まだ、エンディングとか、チュートリアルとか、調整とかでワサワサと増えそうな感じなので、完成時点で20ksぐらいになるかも。

以下、蛇足

ちなみに、仕事でプログラムを作る場合、ステップ数を見積もり値にしている所が意外と多くあるようですが、ステップ数の見積もり値なんて全然アテにならないのにやる意味あるんですかね?私が仮に、想定規模を計上する必要に迫られた場合、とりあえずFP法(私の場合、画面単位ではなく機能単位で算出する方が精度が高い)なりで何かしらの根拠のある数字を出しますが、だいたい以下のような要因でその数字はフェーズとともに上下します。
①「この機能とこの機能は共通化できる」(機能レベルの共通化見落とし)
②「この機能はx機能とy機能に分割しなきゃダメだ」(機能レベルの分割漏れ)
③「この機能が必要だった」(機能レベルの実装漏れ)
④「この機能は要らなかった」(機能レベルの冗長実装)
そして、より下流フェーズに進むと①~④の「機能」が「関数」とかの細かい単位に変わります。まぁ、下流フェーズでも機能レベルの設計ミス(=すり抜け不良)がある程度残存するものですが。一般的に、見積もり値の上下幅は、上流フェーズの設計ミスほど広く、下流フェーズの設計ミスであれば狭くなります。自社開発なら、それでも大して問題は無いと思います。問題は、他社に請負契約で発注するケース。請負契約の場合、発注時点で発注に掛かる費用(予算)を決めますが、プログラムが完成していない時点(コーディング前)の場合、幾ら掛かるのか客観的に分かり難いため、適正価格が発注時点で分かりません。だから、かなりアヤフヤな値であることを承知で想定規模(想定される画面数やプログラムのステップ数)なんかを指標にしている企業がたくさん居る訳です。個人的には、請負契約が妥当なプロセスは、テスト工程(※定性的な項目が多い統合テストなどを除く)ぐらいだと思います。請負契約で上手くやる(見積もりと実績の乖離を減らす)のに有用な開発手法は、経験則ではスパイラルモデルの開発ぐらいです。要は、見積もりと実績の乖離を減らすには、すり抜け不良を少なくすれば良い訳で、それをやるのに一番良い手段は、開発サイクルを小さく分割することだけだと思っています。学問レベルでは色々な手法が考えられているようですが、スパイラル以外の実用レベルで使い物になる手法は未だ見たことがありません。ただし、スパイラルだとそれを第三者が管理するのは無理に等しいから、開発作業とマネジメント作業を両立できるエンジニア以外できないこと(=要員確保が困難なこと)がネック。そして、そういうエンジニアは得てして単価が高いから、予算オーバーになり易いという落とし穴があります。そもそも、スパイラルで妥当な程度の規模にサイクルを分断すると、発注のオーバヘッド(恐らく裁断したサイクル単位で発注する→妥当な規模に裁断すると契約がポコポコ増える→大変になる)でパフォーマンスが落ちるような気もするので、結局のところ「コーディングまで委任契約がベスト」だと思っています。

要は、「コーディング=定量的な作業」という風潮をなんとかする必要があるんじゃないかと。

2012年8月17日金曜日

開発状況(17-Aug)

ネット環境がスマホしか無いところで1週間弱過ごし、今帰ってきました。
ポータブルな開発環境を整えたので、そういう所の方が捗るのかもしれません。
温泉宿とかで1週間ぐらい篭ったりするのが理想。
シーズン中は嫌ですが。(混むので)

「せっかく温泉宿に行ってゲーム作りなんて・・・」と、思うかもしれませんが、結構オススメです。
ゲーム作りでなくても、例えばその他の創作活動(漫画とか小説など)や試験勉強などにも良いです。
「xxxをする為にyyyに居る」という意識が働くことで集中力が増します。
更に、貧乏性の私の場合、「お金を払ってまで」という意識が更に集中力を増幅させます。

なので、コストは高ければ高いほど良いから、温泉宿がベスト。
ただし、温泉宿だとちょっと足が出ない場合、ビジネスホテルとかでも良いかも。
または、(音が気にならないのであれば)漫画喫茶とか。
あと、国内出張ならグリーン車、海外出張ならビジネスクラスかファーストクラスというのもアリです。
(もちろん、普通料金からの差額は自腹で)

まぁ、今回私が行ってきたのは温泉宿でもなければビジネスホテルでもありませんが。
法要で田舎で宿泊してただけ。(漫画喫茶にはチョクチョク行って作業しましたが)
とりあえず、SHOT04の5面の道中が完成し、ラスボスを作成しているところ。
ラスボスは作画が終わっていて、あとはアルゴリズムを組むだけという感じです。
この土日でとりあえず完成させて、あとは8月中に調整を終わらせ、9月中にはリリースしたい...

2012年8月11日土曜日

4面完成

4面が完成。
割とゴチャゴチャしたステージになりました。
一定距離を保って箱を打つと、アイテムジャラジャラみたいな感じです。
難易度はほど良い感じ。

あとは今週中に5面完成すれば良いなぁ・・・。
そういえば、説明書とかってAndroidだと、Windowsみたいにドキュメント(Readme.txt)を付属する習慣が無いから、やっぱり、チュートリアル的なものを作らなければ駄目かな?と、今さら考え始めました。
しかし、言語フリーで作るのは結構大変そうかも。
基本、ゲーム画面中には、単語レベルの英語以外は入れたくないと思っています。
例えば、基本的な操作系であれば、
1. Touch -> Fire and Move
2. Not touch -> Charge
3. Fill & Touch -> Laser
ぐらいが、言語を用いる上限になるイメージ。

今、ふと、「リプレイの機能を使ってそれを流しながら上記の単語レベルの説明入れていけば良いんじゃないか?」というナイスな考えを思いつきました。ちょっと面倒くさそうですが、そういう部分には力を入れた方が良さそうな気がしないでもないです。

動く開発環境

今日購入したUltraBook(になるのか?)のAspireV3にAndroidビルド環境の構築が完了。
もちろん、Windowsの開発環境(Visual C++ Express 2010 & DirectX-SDK)も構築済み。
これで、ノート環境ですべての開発ができるようになりました。

Androidのビルド環境の構築手順が、自宅マシンに構築したときと若干変わっていたので、構築手順をメモっておきます。なお、青字部分は、SonyのWalkman Zシリーズをデバッグ機として使う場合の設定です。

■SDKを使うための手順
①JDKを入手してインストール
②システム環境変数JAVA_HOMEにインストール先パスを指定
③システム環境変数PATHに%JAVA_HOME%\binを追記
④Android-SDKの入手してインストール(※C:\android\sdkにインストールした前提で説明)
⑤システム環境変数PATHにC:\android\sdk\platform-toolsを追記
⑥システム環境変数PATHにC:\android\sdk\toolsを追記
⑦SDK Managerを起動し、以下のパッケージをインストール
- Android SDK Tools
- Android SDK Platform-tools
- Android 2.3.3 (API level 10) の SDK-Platform
- Google USB driver
⑧Apache-antを入手(※C:\android\antにインストールした前提で説明)
⑨システム環境変数PATHにC:\android\ant\binを追記

■Zシリーズを使うための手順
⑩C:\android\sdk\extras\google\usb_driver\android_winusb.infをメモ帳で開く
[Google.NTx86]と[Google.NTamd64]に以下の行を追加。
%CompositeAdbInterface% = USB_Install, USB\VID_054C&PID_0691&MI_01
⑪以下のコマンドを実行
echo 054c > "%SystemDrive%%HomePath%\.android\adb_usb.ini"
⑫Zシリーズをパソコンに接続
⑬デバイスマネージャを開き、警告マークが付いているZシリーズのアイコン部分を右クリックして、デバイスドライバを選択(探索パスには、C:\android\sdk\extras\google\usb_driverを指定)

■NDKを使うための手順
⑭cygwinを入手してインストール
※自宅環境のディスクから持ってきたディレクトリを使ったので、どのパッケージを入れたかは忘れました
⑮システム環境変数HOST_AWKに/usr/bin/gawkを設定
⑯NDKを入手してインストール(※C:\android\ndkにインストールした前提で説明)
⑰システム環境変数PATHにC:\android\ndkを追記
⑱システム環境変数NDK_ROOTにC:\android\ndkを設定

以上です。
ちなみにEclipseは入れてません。
コマンドラインとテキストエディタのみで作業する方が楽なので。
Javaでガッツリと書く場合は、入れた方がよいです。
(私の場合、Javaコードは全体の1%未満なので、Eclipseを使わない方が楽)

新PC導入

AcerのAspire V3 V3-571-H54C/Kという機種を導入。
http://kakaku.com/item/K0000378324/

普通の家電量販店で39,800円でした。
スペック的には、
・OS: Windows 7 Home Premium x64
・CPU: Core i5 2450M 2.5GHz x 2way x Hyper-Threading
・Memory: 4GB
・HDD: 320GB
4万切っててこれだけあれば十分過ぎるぐらい。

GPUはIntelのオンボードのもので、現状自宅で使っているPC(オンボード版のGeForce)よりも若干スコアが落ちる程度。(エクスペリエンス・インデックスで評価点を確認したところ4.7ぐらい)
ただ、CPU性能の評価は、倍以上。(7.0ぐらい)

サブマシンとしては申し分ない程度のスペックだと思います。
まぁ、私は今後コレをメインマシンにする訳ですが。
しかし、HDDの熱排出の位置が左側というのは何とかなりませんかね・・・
私はマウスを左手で使う(※利き手は右手です)ので、暖かい風が当たります。

あとは、環境構築がだるい。。。
主に、Android系の開発環境の構築がだるい。。。

2012年8月10日金曜日

電源失念

今日から夏休みなので帰省したのですが、ノートPCのアダプタを自宅に忘れるとか。。。
アダプタだけ買おうか、この際だから、メインマシンとして使えるレベルのウルトラブックを買ってしまおうか、迷いどころです。
自宅メインマシンは、atom機だから、Android用の開発機としては大分厳しいと思っていたところ。メインマシンには、acerのAspire RevoというPCを使ってますが、GPU はそこそこ速いけど、CPU は開発機として使うには無謀なレベルです。

Windows 用のCコンパイラをコマンドラインで使う作業がメインなので、基本的に問題ありません(SHOT04のフルビルドがだいたい10秒弱で終わります)が、cygwinでgccを使ってスマホ用の共有ライブラリをフルビルドするのにはだいたい1分強ぐらいかかります。
ちなみに、apkモジュールは、Eclipce を使わず、コマンドラインでantとかをバッチで叩いて作ってますが、それにも署名などを含めて1分ぐらいかかります。

最新のウルトラブックなら、大分改善されるはずだし、何より、自宅でも出先でも、使いなれた普段の環境で作業できるのが魅力的な気がしています。

やはり、Windows版が本丸

Android用のゲーム開発を開始してそろそろ半年ぐらい。
しかし、端末毎の仕様差が想像以上に激しいので、やはりAndroid版でのモノ作りは色々と厳しい。
設備投資を惜しまず、最初はiPhone向けで作るのが吉だった感が否めません。
私が一番気にしている問題(VSYNCの端末差)は、Android4.1でようやく解消されるようなので、Android版の開発はそれを待ってからやるべきだったんじゃないかと。あと、Android4.0で地雷(SurfaceViewの大幅な性能デグレード問題)を踏みましたし。

ですが、今開発中のSTGの本丸プラットフォームは、Windows版。
要は、Android版やiPhone版というのは客寄せパンダ的な位置づけのつもり。
やはり、STGはタブレットや電話機のようなチマチマとした画面ではなく、大画面でやりたいので。
しかも、今回は縦画面のフルスクリーン対応。
23型ぐらいのワイドディスプレイを縦置きにしてプレイすれば、ゲームセンターと同じ迫力で楽しめます。

Androidと仕様を合わせる都合上、入力装置にマウスを使うのがちょっとアレですが。
シューターは伝統に囚われる人が多いから、最初は抵抗があるかもしれません。
ただ、STG用の入力機器としては、セイミツ工業のアケステ以上にマウスの方が向いているかも。
アケステよりも精密な動きができるので。

合理的ではないものを作りたい

ここ最近、実機版の東方VGSの開発が忙しくて、東方VGSの曲追加が滞っています。 東方VGS(実機版)のデザインを作りながら検討中。基本レトロUIベースですがシークバーはモダンに倣おうかな…とか pic.twitter.com/YOYprlDsYD — SUZUKI PLAN (...