Google+

PASTEL ORBIT ゲームプログラマが語る / (旧Team Dyquem!)

本業はPS4やPS3等のゲームプログラマ。もう一つの本業である文筆と、ちょっと経済、SFドはまり体質を語る。Team Dyquemとか言ってるけれどもアプリは一人開発

パステル オービット
.
new

TeamDyquem

Dyquem

検索フォーム

Twitter

全記事表示リンク

最新記事

アクセスランキング

[ジャンルランキング]
コンピュータ
1088位
アクセスランキングを見る>>

[サブジャンルランキング]
プログラミング
185位
アクセスランキングを見る>>

QRコード

QR

Mail

アプリに関するご意見等は、下記メールフォームよりお問い合わせ下さい。
直接のご連絡は、team.dyquem[at]gmail.com にてお受け致します。

Your address:
Message:

スポンサーサイト
-------- --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ
comments(-)|trackback(-)|スポンサー広告|--------_--:--|page top

ゲームプログラマが語る。もうファミコン時代じゃない!ゲームにおける山場作りの今
2014-09-02 21:18



 最近、「弱虫ペダル」という漫画が流行っているらしいですね。
昔々、大昔。まだ中学生だった当時の僕とその幼なじみ数人は、学校の部活を尻目に、ロードレース三昧にその三年間を過ごしておりました。当時は本気で全く無名なスポーツで、自転車乗るのにどうしてヘルメット被るの?と奇異な目でみられながらも、けなげに毎朝朝練に勤しみ、漫画にも登場した伊豆修善寺のサーキットやその他、関東津々浦々のレースにも転戦しておりました。
 そんな、超ド・マイナーだと思っていたロードが今、えらく流行っている様で、嬉しいやら何やら複雑であります。相当きついスポーツですからねぇ。

 朝起きてみて雨が降っていると、ほんとに泣くほど嬉しかった仄暗い思い出が、今も走馬燈の様に漂う TeamDyquem で御座います。皆様、こんにちは。


 さてさて。


rule
ゲームの「おもしろさ」?

 スタートボタンをチャランと押して、ゲームが始まり倒し倒され、ひとしきり盛り上がってゲームオーバー。
 赤い帽子の小さな配管工が、山谷を超えキノコを踏んづけていた頃の、古き美しき黎明期におけるゲームならばそれは、それでゲームメカニズムが完結しており、ゲームプレイにおける一つのスタイルでありました。
 時は移り変わり現代。ゲームスタイルの変化変貌たるや実に目を見張るものがあり、近代ゲームにおけるそのユーザー体験たるや今や、蒼々たるバリエーションにより彩られています。

 ゲームを「ゲーム」と一言に表現出来ていた時代はとうに過ぎ、多様化するジャンルだけにはとどまらず今では、そのデバイスの差、料金体系の差、目的の差など、ゲームは今まさに、未曽有宇の過渡期へ突入していると言えるでしょう。

 ユーザーの求めるゲーム体験を提供する為に、我々開発者が認識しなければならない事として、ユーザーが体験する「おもしろさ」というものを今回、時間軸にして考えてみましょう。


rule
「おもしろさ」を配置するタイミング

 まず、わかりやすい例としてゲームセンターのゲームを例にとってみます。
 昨今、マーケット縮小の危機にあると言われているこの分野。所謂アーケードゲームと呼ばれるものですが、基本的に、今も昔もそのビジネスモデルに大きな差はありません。

 百円を投入したユーザーへ、一定時間の楽しさを提供するという形がその基本スタイルで、細かい裏事情については割愛いたしますが、通例として、百円で平均三分間の楽しい時間を提供し、その続きをプレイする為に(コンティニュー)もう百円を如何に投下してもらえるかというゲーム造りを目指します。

 百円における平均プレイ時間がこれ以上伸びていくと、ゲームセンターの収益に影響すると言われており、これをインカム率等と表現しますが、この率が下がってしまうとそのゲームは、ゲームセンター側からの発注率が下がってしまいます。

 顧客の反応に止まらず、開発者がその三分間を如何にエキサイティングに彩るかという部分までを含めてこれら全てを、ゲームセンタービジネスモデルとして正しく理解し、ゲーム造りを進めなければなりません。

 麻雀ゲームへ、百円を投下と同時にロンと叫ばれてゲームオーバーとなるゲームモデルに唖然としていた世代がどれほどいらっしゃるかはともあれ、適切なプレイ時間、その中で推移する感情の盛り上がり曲線タイムラインを意識したゲーム造りが大切です。
つか、マジで百円返せ。


rule

 次に、家庭用ゲームで遊ぶ事の出来る大規模ロールプレイングゲームを例に考えてみましょう。
 RPGの盛り上がりが最初の三分間にしかなかったら、ド偉い事になりますね。後の五十時間だかを惰性でプレイしなければならないゲームなどありはしませんから、大抵は、物語の推移に従い、例えば、プレイ開始一時間後にまずは起承転結の「起」が始まり、十時間後辺りに大きな山が来る、等の様にゲームが盛り上がっていく事でしょう。

 では、同じRPGですが、最近では珍い形では無くなったF2Pフリーミアムと呼ばれるビジネスモデルを仮定してみましょう。所謂、基本無料ですね。
 このタイプのRPGを普通に、つまり、前述の様に一時間後・十時間後に盛り上がりがやって来る様な形で造ってしまうと、このプロジェクト、もはや百発百中と言って良い程の超絶無慈悲スナイパーの如し高確率で失敗します。


 この差は一体、どこからやってくるのでしょう。


rule

 言わずもがなでもありますが要因の一つとして、ユーザー心理における、財布の紐のゆるめ方にも起因していると言えるでしょう。
 簡単に言えば、無料でダウンロードしてきたゲームに対して人は、そこへかける情熱の度合いが低くなる傾向があります。プレイ開始後、すぐにその楽しさを体感出来なければ、いつ訪れるのか判らない楽しい瞬間に向けて長々と時間をかけてはくれません。今や、無料のゲームは幾らだって存在しているのですから。
 一方、五千円なりの投資をして購入したゲームを、
開始五分でイキナリ見限り、
ディスクを引っこ抜き、
愉快な奇声をあげながら窓からパッケージごと投げ捨てる様な人も、
まあ、なかなか希でしょう。
 居ないわけではないでしょうが(居ないでくれ)、大抵は、ある程度腰を据えて遊んでみるのでは無いでしょうか。

 料金体系一つをとっても、ユーザーに盛り上がりを感じてもらうべきポイントにはこれだけの差が生まれます。
 F2Pゲームであれば、ハッキリと目に見えた形にて、「楽しさのスタートダッシュ」が重要です。
 最初の三分なり五分なりに楽しさが集約されていなければ、そのゲームを労せず事無く無料で手に入れたユーザーは、すぐに見限ってしまうでしょう。そして、(F2Pタイプのゲームでは特に)一度離れたユーザーは決して、二度と、ほぼ確実に帰ってはきません。
 こうした至極当たり前の事情にすら目を背け、
基本無料大作RPG!等というキャッチコピーに踊らされ、
長々とオープニングを流し、悠長にストーリーを語り、
延々チュートリアルが行われるゲームを見かけると、
ああ、これは売る気がある無い以前の問題であるなと苦笑いに胸が痛くなるのであります。

 初めての起動から、ゲームを終了させるまでの時間をログとして集計でもしてみれば明らかでありますが、
ユーザーの気持ちの推移を考えたゲーム造りというものを、
心がけたいところでありますね。




 尚、この辺りの話題に関しましては、以前のエントリー

『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」



 こちらも、併せてご覧頂けましたら光栄です。


rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ
スポンサーサイト
comments(0)|trackback(0)|プロが語るゲーム開発|2014-09-02_21:18|page top

ゲームプログラマが語る。Push Start Button とゲーム性の意外な関係
2014-06-18 23:02



 今年も元気にやってまいりました梅雨。迷惑千万この上ないのですけれども梅雨。
海老湿気土の香りが何より苦手な Team Dyquem で御座います。皆様こんにちは。

 ナウシカに冷たく罵倒されそうな苦手癖でありますが、さて。


rule

 ゲームには、作り込みの度合いというものが存在しています。

 それは勿論、ゲーム性の事であったり、細部に渡る難易度調整の話であったりするのですが、それだけでは無く例えば、操作キャラのモーションの繋ぎ、操作入力受付時間の適切な調整、果ては話しかけたNPCが振り向く速度や、フェードインアウトの丁寧さ、キーリピートの適切な加減や、ロード中に飽きさせない仕組みなど、ありとあらゆる細かい点に、その制作チームが掲げた目標の片鱗が垣間見られるもの達の集大成、これらがつまり、「丁寧に造られたゲーム」と言えるでしょう。

 ゲームとはえてして、プランナーが作成した仕様書をそのまま実装して終了というものではありません。
 娯楽コンテンツの宿命であり、また同時に遣り甲斐であるとも言えますが、仕様書通りの実装が済んでからが本領発揮の時でもあるのです。
 いかに遊びやすく、いかに手触り良く詰めていくのか、こうした部分へ職人的な経験や技術が生きてくる、真にアーティスティックな行程であると言えましょう。

 この様な細かい部分へいかに時間をかけていくことが出来るのか、これは、良いゲームを造るにあたり、とても大切な部分であります。


rule

 さて、ところで。
こうした細かいこだわりへ、ユーザーが最初に出会う場面とはなんでしょう。

 まあ、たいていのゲームにおきましては、企業ロゴ等が流れた後、オープニングを経て、タイトル画面に到達する事でしょう。
 貴方をその作品へ導き入れる正門玄関、それがタイトル画面です。
 感謝すべき大切な新しいユーザーを迎え入れるエントランス。我々開発者達は、貴方へ、正装をもって対峙すべき場面です。
 この時、画面には表示されている事でしょう。
「Push Start Button」なり、それに類する言葉が。

 さて、ちょっと思い出してみて下さい。
 この「Push Start Button」がなんらアニメーションするでもなく、明滅するでもなく、単なる点滅すらしておらず、ビタ止まりで、画面に張り付いた様になっているゲームはありませんでしたか?

 仮にそういうゲームを思い出すことが出来たとして、そこにどんな感慨があったかと聞かれたとしても、「いや、特になにも……」と答える方が大半でしょう。
 一般ユーザー各位におかれましは、それでなんら問題はありません。

 しかし、僕は思ってしまうんです。
「このゲーム、いやな予感がするなあ……」と。
むしろ、業界人ならば、須く違和感を感じるべきでありましょう。


rule

 ちょっと考えてみて下さい。
 昨今の開発フローならば、タイトル画面の Push Start Button のアニメーション等というものはそもそも、タイトル画面やそれに類するアセットの中で、デザイナがつけたシーン情報として元々組み込まれている事でしょう。
 なんの手違いか、はたまたタイトル画面だけ特殊な実装なのかどうかはさておくとして、ともかく、開発中後期のある瞬間において尚、Push Start Button はアニメーションしていなかったと仮定しましょう。
 この時、チームでは一体何が起こっているのでしょう。
 考えられるシナリオは、大きく、二つしかありません。


 決裁権を持つコアメンバーの内、誰一人として、ビタ止まりのPush Start Button に対して何の違和感も持たず、そんな細かいことよりも少しでもゲーム本編を昇華しようという尊敬すべき奇跡の職人気質チームであったのか。

 はたまた、忙しすぎて誰も手が回らなかったのか、です。

 まあ、たいていは後者でしょう。


 もうちょっと考えてみて下さい。
 このPush Start Button を明滅させるコストを。
 そのプロジェクトの設計状況にも勿論依存しますが、だからといって、手慣れた人なら十分とかそういうレベルでしょう。新人がやっても一日かかりますか?
 たったこれだけのコストを割けない程に忙しいプロジェクトというものを、僕も勿論、沢山知っています。そういうプロジェクトの中に居た事も一度や二度ではありません。
 しかしながら、どんなに忙しいとしても、タスクには優先順位というものをあてる事になるわけですから、こうしたアニメーションが欠落しているゲームのプロジェクトにおいては、誰の判断か、Push Start Button の優先度が落とされていたのでしょう。

 一概には言えませんが、僕の価値観からするとこれは、ディレクションジャッジミスとしか言い様がありません。

 こうしたゲームに相対してしまった時に、僕は、深く勘ぐってしまいます。
 Push Start Button を明滅させるコストすら割く事の出来なかったこのゲーム。
 これから始まるめくるめく冒険の中で、一体何度、不便で操作し辛く手触りの悪さに苛まれる事になるのだろうか……と。

 時にそれは、大いなる取り越し苦労に終わり、タイトル画面で感じた不安などどこ吹く風となり、清々しい気持ちでエンディングを迎えることもあります。
 しかしながら往々にしてその予感は当たり、冒険半ばで、そっとディスクをイジェクトする事になるのです。

 UI(ユーザーインターフェイス)だけでゲームの本質を計る点に異論反論勿論認めは致しますが、UIは、その本質とユーザーを繋ぐ命綱です。
 たかがPush Start Button 等と言うなかれ。
 もしもその命綱を蔑ろにしているならば、その歪みは、タイトル画面にすら滲み出ている事だってあるのですよ。

 丁寧なゲーム造りというものを是非、心がけていきたいものですね。



rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:プログラミング
Genre:コンピュータ

comments(0)|trackback(0)|プロが語るゲーム開発|2014-06-18_23:02|page top

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
2014-05-12 23:06



 コンビニで、ちょっとだけムムっとする出来事、ありますか?
 基本的に、普段それほどイライラしない方だとは思いますし、ましてやコンビニで感情高ぶる事なぞありはしないつもりで御座います。
 無限に繰り返される「ポイントカードお持ちですか?いや大丈夫です」のやりとりにも菩薩の様な笑顔ですし、「未成年じゃないよボタン」も何回だってタッチします。

 が、しかし!

 ポイントカードの事はもういいから、頼むから、お願いですから……


ドレッシング別売りサラダを買おうとしている客が、
ドレッシングを買っていなかったら、
ドレッシング別売りですけれど宜しかったですか?

を聞いてくれーー!!!orz

 これまで何度、ランチで味のしないサラダを半泣きで食べるハメになった事か……。

 運命に導かれている様で、弄ばれているTeam Dyquemで御座います。
みなさま、こんにちは。


 苛、っとする事……と言えば。


rule


 昨今、ますますの多様化や進化をみせるゲームコンテンツの制作において、複雑化の一途を辿るゲームプログラミングであります。
 今や、ファミコンで2Dキャラクターがジャンプする様な軌跡を描いているだけでは到底、近代ゲームプログラミングを賄える筈もなく、僕ら開発者達は皆一様に、新しく生まれては消えていくコンテンツが少しでも高品質で且つ、その制作行程が合理的であるべく、日夜鋭意努力を重ねているわけであります。
 広義においては拡大傾向にあると言って良いマーケットに対し、制作側となる会社や開発者もまた増えており、ことゲームプログラマに関しましては特に、スキルや制作手法において、様々な開発スタンスが生まれている事と思います。

 ゲームプログラミングにおいて最も大切な事は何か……、そんな、万人が多様な解を持ち合わせているであろう設問に大した意味などありはしませんが、少なくとも、「大切な事」そのものは、確かに幾つか存在しています。
 それは、実装速度かもしれませんし、設計力かもしれません。問題解決能力や、他人のコードに対する読解力かもしれません。
 しかし今回、そんな中でも個人的に特に大切な部類に入ると考えている、リードプログラマとしてのセンス、適正、そして義務について、一つの大きなポイントへ注目してみたいと思います。


rule
リードプログラマとは?

 確かに、一言でリードプログラマと言っても、一体どんな役割であるのかを一概に想像する事が、難しい方も多いかもしれません。
 一昔前までは――主に日本国内においては――「メインプログラマー」と表現されていたこのポジションですが、意味は同じです。

 要するに、そのゲームを作るプログラマ達のリーダーであり、SEであり、コーディング主任であり、プレイングマネージャーでもあり、そして何よりも、優れたコーダーで無ければなりません。

 昨今の複雑なゲームコンテンツを構成する全てのプログラムに対し、開発計画を立て、適切な担当者へ分配し、コードの品質を管理し、全体のクォリティに対して責任を持つという、大変重要なポジションです。
 極論すれば、どんなゲームにおいても――それこそスマホのアプリから、数10人規模の中堅ゲーム、果ては何十億円何百億円規模とも言われるトリプルA大規模ゲームに至るまで――その成否は、このたった一人の人物が握っていると言っても、決して過言では無いのです。


 そういうわけで、リードプログラマには常に優しく接しなければなりません。
エクセルの装飾が苦手だったりしても暖かく見守り、
日々膨大なコーディングに追われているのですから少々のバグには微笑みを返し、
花見の席ではそのリードプログラマを中心に笑いの花を咲かせ、
唐揚げは常に一つ多く差し出さなければなりません。



rule
リードプログラマの役割

 この様に、抽象的に挙げただけでも多くの責務を背負うリードプログラマでありますが、種々、なにがどうでどの位大切であるのか、そうした話題は次の機会へ見送ることと致しまして、ここは一つ、リードプログラマにとって非常に大切な役割を挙げてみたいと思います。


 それは、「プレイヤー」を作る事。



 声を大にして言いましょう。
 昨今、プレイヤーを作らないリードプログラマが増えてきております。

 声を大にして、何度でも言いましょう。
 「言語道断」です。これはもはや職務放棄と言って良いでしょう。リードプログラマを名乗るべきではありませんし、何よりも、ユーザーに対する裏切りです。


 ユーザーが直接操作するプレイヤー挙動を人任せにしておいて、そのゲームのクォリティに対して責任を負っていると言えるでしょうか?
 ゲームコンテンツ造りとは、然るべきプログラミングを全てこなしてマスターアップさせるだけで構成されているものではありません。

 ゲームには「手触り」というものがあります。
 遊んでいて気持ちの良いゲーム、何か操作がしっくりこないゲーム、何がどうとは言えないけれども何となく動きの気持ち悪いゲーム、色々あるかと思いますが、これは、プランナーだけが考える事ではありません。
 こうしたものの完成度とはつまり、究極的にはゲームプログラマのセンスであり、積み重ねられた幾つもの職人技が調和した作品造りであり、経験と技術がものを言うゲーム造りの本質です。


「どんなゲームであろうとも、近代規模のゲームであろうとも、作ろうと思えば、大げさではなく本当に一人で全部作る事が可能。
しかし、コストと期間を商業的に解決する為だけにチーム構成をとっている」

 リードプログラマとは、この位の気概でなければなりません。
 ゲーム造りに対するそうした気持ちのバックボーンがあるならば、プレイヤー造りを他人任せにするという発想そのものが有り得ません。


「SEとしてコード全体に目を行き届かせるなんて事は当然自分に任せておけばいい。
それだけじゃない、遊びに直結する部分も全て自分に相談しろ。
ましてや、プレイヤー実装なんてものは、もはや誰にも触らせない」

 「真にゲームを作る」という事は、こう在るべきでありましょう。

 描画部分やフレームワーク的な部分をそこそこ作って、あとは痒いところに手を届かせている体で雑務だけをこなしている人間を、リードプログラマと呼ぶべきではありません。

 遊びの量産部分を皆で分担する事は勿論、遊びの本質部分に関しても手分けする必要がある事は当然です。
合理性を追求しながら、皆で作り上げるという事がとても大切である事は言うまでも無いことであります。
 しかしながら、それでも、真に本質的な、コンテンツの主軸となる部分は幾つも存在しており、
プレイヤー造りなんてものは、その更に中心要素です。
 こうこうこういう操作をした時に、ユーザーがどう思う、こう思う。こうするべきだ、これなら遊びやすい。
 こうした部分はどうしたって、人間がセンスで生み出す最後の部分です。

 こんな大切な部分を人任せに出来るならば、わざわざ困難なゲーム造りなんていう道を選ぶ必要もありません。
幸い、現職場にそんな人間は一人もおりませんが、業界にはまだ沢山居る様です。
身に覚えのある貴方。是非とも改めましょう。決して遅くはありません。


 ゲーム造りってのは、そういうものですよね。
rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:ゲーム
Genre:ゲーム

comments(0)|trackback(0)|プロが語るゲーム開発|2014-05-12_23:06|page top

ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
2014-02-23 23:21



 吹雪だソチだ大雪だと、世間はなんとも雪景色でありますが、日本ゲーム業界はホットです。
いよいよ発売されましたねPS4。我が家にも早速届けられました!なんとカッコイイ機体でありましょう。
 取り急ぎ、手元には同梱されていたKNACKとトゥームレイダーしかありませんが、これから数年間は確実に我がリビングを彩るパートナーでありますからね。ゆっくり楽しんでまいりたい Team Dyquem で御座います。皆様こんばんは。




 さて。


rule
今さら聞けないシリーズ

「フレーム」「60コマ」「16ミリ」など、フレームレートに纏わる単語は色々とありますが、これらは元来、純粋に技術的なキーワードでありますし、企画さんやデザイナさん、中には新人プログラマの方にも、これらの意味をそれほど深く掘り下げずに使用している方も多いのではないでしょうか。

 まあ、ゲーム制作に纏わる技術的キーワードはそれこそ無尽蔵に在りますからね。
細かい専門外知識はふわっとしたまま捕らえ、餅は餅屋でやっていくのもまた一つの在り方であるかとは思いますが、フレームレート周りの知識は重要な部類でありますし、ゲーム屋としてやっていくならば把握しておいた方が良い仕組みですので、是非ここで覚えてしまいましょう。


rule
フレームって何?

 ゲームや映画、テレビ番組、スマホやケータイの画面など、映像コンテンツを表現するほとんどの機器は、瞬間瞬間の制止画を連続再生させる事で、滑らかな動画表現を行っています。
 言ってみれば、超高速な紙芝居
 一秒間に何十枚という紙芝居を行うことで、それがあたかも動く映像であるかの様に見せているわけですね。
 その枚数は、フィルム映画なら1秒間に24枚。
 PS3やPS4、VITAや3DS等、一般的なゲーム機やスマホにおける、凝った3Dのもので秒間30枚。画像表現へのこだわりよりも滑らかさを重視するレースゲームや格闘ゲームでは秒間60枚。
 たった一秒間という短い時間の間に、これだけの紙芝居が行われているのです。

 1秒間に60枚の紙芝居を行うならば、その一枚を表示している時間は60分の1秒間になりますね。
「フレーム」とは、その中の一枚の絵を。
「1フレーム」といえば、その一枚を表示している時間をそれぞれ表しています。


rule
16ミリ秒?32ミリ秒?

 プログラマの口から、こうした言葉を聞いたことがあるかもしれません。
これは通常、「1フレーム」の時間です。

 「ミリ秒」とは、「1000分の1秒」。つまり、0.001秒の事ですね。
秒間60フレームのゲームならば、そのゲームにおける一フレームの時間は「60分の1秒」です。
 これは、0.016666秒、つまり約16ミリ秒という事になりますね。
秒間30フレームのゲームならこれらが倍になり、32ミリ秒(16.6ミリ秒の倍なので、正確には約33ミリ秒)というわけです。

 30フレームのゲームならば、一フレームにかかる処理時間が33ミリ秒を超えると、それは処理落ちやフレーム落ちとなって表れる事になります。
 ある一フレームにおける処理時間が40ミリ秒かかっているとしたら、そこから何とかして7ミリ秒の高速化や最適化を行わなければ、処理落ちが解消出来ないというわけです。
こうしたシーンでよく使われる言葉達ですね。


rule
60フレームの次が30? 50とか49とか中途半端な数字が出てこないのは何故?

 これは、企画さんやデザイナさんサイドより、何度も質問された事がありますね。
 言われてみれば確かに、理屈を知っていなければ不可思議な事でしょう。
 若いプログラマさん等の中でも、その理由を正しく答えられる人は減ってきている様な気がいたします。

 本当に根っこから説明すると、それこそブラウン管時代発祥の走査線機構や、水平同期、垂直同期、帰線期間、CRTC等をはじめとするハードウェア周りをガチで解説しなければなりませんので、ここでは簡単に。

 これは、テレビという装置の構造に依存しています。

 ものすごくザックリいうと、テレビというものは、必ず1秒間に60回の画面更新が入ります。これは、固定であると考えてください。
(玄人の方へ注:100hzモニタだとかGVSync、ティアリングとかは割愛しますよ?本当はガッツリ書きたいですけれども)

 全てのゲーム機は、「秒間60回画面更新」というテレビの構造へ、強く依存して設計されていると考えて下さい。
 この仕組みに従ってゲームを作るという事はつまり、「60分の1秒」の間に1フレーム分の処理を全て終わらせ、そのフレーム用の画面を作成し、テレビにそれが表示されるという事。
 この繰り返しが、つまりゲームです。

 もしも、この「60分の1秒」つまり「16ミリ秒」という短い時間に処理が間に合わなかったとしましょう。
 敵キャラが沢山出現しているせいでしょうか?
 画面いっぱいに爆発エフェクトが出る瞬間だったのでしょうか?
 理由はともあれ、兎に角、処理負荷の高いシーンだったのでしょう。

 例えばこの時、普段ならば16ミリ秒に収まっていた処理が、20ミリ秒もかかっていたとしましょう。
 単純に考えるならば「1フレームの時間が20ミリ秒になっただけ」、それで良さそうなものでありますが、テレビの構造上そうはなりません。

 「16ミリ秒目」というフレーム更新タイミングを一度逃してしまっています。
 これは、16ミリ秒毎にホームへやってくる電車の様なものですね。一旦逃してしまったならば、次のタイミングを待つしかありません。
 次回到着時刻は、どうしたって「32ミリ秒目」なのです。


 こうして、画面更新タイミングへ処理を合わせる事を、「同期する」と呼びます。

 処理落ちがなければ秒間60フレーム。
 毎フレームの処理が16ミリ秒を超えるならば、2フレームに1回の画面更新となりますから、秒間30フレームに。
 そして、更に負荷が上がり、毎フレームの処理が33ミリ秒をも超えるならば、今度は3フレームに1回の処理となり、秒間20フレームに。

 60 → 30 → 20、と推移します。
 さて、次は?

 更に負荷が上がり、4フレームに1回となる訳ですから、60÷4で、秒間15フレーム。次は60÷5で12。60÷6で10。

では更に更に、8フレームに一度となった場合は?
60÷8ですから、秒間7.5フレーム……となりますが、「0.5フレーム」という物理的な状態はありません。これはあくまでも便宜上そう呼ぶしかないわけであります。
 この状態を正確に表現するならば、約分し、「2秒間で15フレーム」となるわけですね。


rule
余談

 ところで、処理落ち等によって発生した、次の画面更新タイミングまでの待ち時間、例えば、20ミリ秒目~32ミリ秒目までの空き時間はどうしましょう?何とも勿体ない話です。
 とは言え、基本的にこれは空白の待ち時間です。特に何も行わず、次の画面更新タイミングまで待機状態に入ることも可能です。VITAや3DS等の携帯機では、この僅かな時間だけCPUを停止させ、バッテリー消費を抑えるという基本的な指針が定められています。

 が、実際に近代ゲームを開発する現場では、こんな悠長な事は言っていられません。実際には、こうして生じた僅かな待ち時間でさえも無駄にするわけにはいきませんからね。
 「ちゃんと作っている」ゲームならば、この僅かな時間へ色々な処理を詰め込みます。そのフレーム内で完結しなければならないシビアな処理ではなく、数フレーム後、ものによっては数秒後に結果が得られれば構わない処理を、少しずつ行っておくイメージです。
 例えば、キャラクター等の経路探索処理や、敵の思考処理などですね。


 プログラマでは無い方にとりましても、大変重要な概念である「フレーム」。
 かなりザックリとした解説でありましたが、基本の「キ」と「ホ」程度は網羅出来たかと思います。
 上記記事内におきましても少し触れましたが、ここから更に、ティアリング問題や、それを超合理的に解決するGVSync技術等、フレーム関連の学習はまだまだ奥の深いものであります。
 興味をお持ちの方は、更に学習を進めると良いでしょう。



rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:プログラミング
Genre:コンピュータ

comments(0)|trackback(0)|プロが語るゲーム開発|2014-02-23_23:21|page top

ゲームプログラマが語る「次世代機」天下一武道会。3DSとWiiUが天津飯なワケ
2013-07-20 12:50



 奇妙な梅雨が明けたが早いか、暗雲は立ちこめるは、猛暑酷暑が順繰りに襲ってくるは、バリューセットが如しお手軽終末感に彩られる関東平野。
 カラっとした晴れ間なんてものは久しく見ておらず、まるで、自分が豚マンになったかの様な気候が続いておりますが、今日も今日とてTeamDyquemで御座います。皆様、こんにちは。


rule

 さて、昨今はまさに久しぶりのコンシューマ新型機ラッシュ。
 各社より現代コンソール機の発表が出揃った中、新しいゲーム時代の到来を心待ちにされているユーザーも多い事でしょう。
 かく言う僕も、作り手側ではあるとはいえ、大変待ち遠しい日々で御座います。

 据え置きはPS4XBOX ONEWiiU。携帯はVITA3DS
 スーファミ一強時代がなんとも遠い昔の様な――事実、遠い昔なのですが――そんなアンソロジーでカタストロフィーで想い出のエントロピー的な懐かしさを覚えるというものではありませんか。

 いずれも良いハードウェアですし、個性的な面々ではあるのですけれども。ここは一つクリエイター視点を持ちまして
 任天堂陣営ハードウェア上での開発において、苦戦を強いられる事必至と言える大きな爆弾に触れてみたいと思います。


rule
WiiUと3DSの弱点

 任天堂系ハードウェアが性能的に一歩遅れをとっているという話題につきましては、ネット上での賑わいの通り、ある意味でそれは事実であります。
 何をもって「性能」と表現するのかは評価の分かれる所ではありますが、単にFLOPS的な視点からも、そもそも描画性能やメモリといった単純な評価基準でさえも、その性能不足は明らかであり、この点、もはや議論の余地もありません。

 マシンパワーのみがゲームの面白さや本質を決定する要素だなんて事は、決して在りはしませんが、性能はお金と同じ。無いよりは、在った方が良いのです。
 この点において、その圧倒的な描画能力差や表現の多彩さが、任天堂機とそれ意外の現世代機間へ、一定量の購買意欲差をもたらしている事は確かでしょう。

 しかし、任天堂機には、他に無い個性的なデバイスが備わっています。


 3DSにおける多画面+裸眼立体視。
 WiiUにおけるお手元画面、ゲームパッド。


 こうしたアイディアの追求こそが任天堂の戦い方であり、任天堂における勝利の方程式でもあります。彼等は、そこへ性能を詰め込む代わりに、常に新しい遊びを搭載し続けて参りました。

 しかし、また。
 これこそが、任天堂ハードウェアにおける最大のネックでもあるのです。


rule
処理能力の使い方

 本体性能そのものは他社のハードに大きく劣るWiiUに3DSでありますが、この点を補う遊びとして、裸眼立体視や複数画面を搭載している点は、大変良いアイディアであると言えるでしょう。
 僕如し一開発者に言われるまでもなく、それは確かに素晴らしいアイディアであり、それを生かしたゲームが量産された暁には、ゲーム機の本質すらをも覆しかねない、まさに任天堂大勝利時代となる筈でした。

 しかし、そんな時代は、そう簡単にはやってきません。

 開発者側からの視点からすると、多画面という事はつまり――極論すれば――、一つのゲーム機における処理能力で、二台分の画面を作らなければならないという事です
ほんとに極論ですが


 裸眼立体視も同様。あれは、左目+右目用にそれぞれ別々の画面を生成し、特殊な装置でそれを両目へ独立伝達させるという仕組みであり、やはりここで二台分の画面を作っている事になります。(3DSは、下画面を入れれば合計三画面を生成している事になりますね)

 限られたマシン性能を注力すべきデバイスが、分散しているのです。

 一つの画面へ、心血を注いだ最高の絵作りを行う。
 これが一般ゲーム機の通例でありますから、単純に画面を比較されれば任天堂機に勝ち目等在りはしないのです。
 その上更に、元の性能がそもそも劣っているのですから、その描画能力の差はまさに、桁違いの距離となって表れてしまうのもやむを得ない所です。

 任天堂機特有のデバイスに遊びを傾ければ、表現力は桁違いに落ちてしまう。
かといって、裸眼立体視やゲームパッドを無視して一画面に特化した絵造りをしたところで、元の性能差が足枷となり、結局PS4らに太刀打ち出きるレベルには達しません。

 結局、ゲーム本来の面白さで勝負するという至極当然である原点へ立ち返るわけで在りますが、その実現の為には必ず求められる条件「開発メーカーの多さ」というハードルを、任天堂は自ら上げています。



 その姿はさながら……。
rule

 もともと戦闘力の大きく劣っている天津飯が、「四身の拳」を使って悟空に挑んでいる様なものでありましょう。一人の力を大きく分散してしている為に、能力が半減していしまっているのです。3DSも、WiiUも。

rule


rule

 とは言え、なんだかんだ言ってもゲームはやはりその内容。
 これから一体どんな面白いゲームが表れるのか、それを「性能」だけで語る事はナンセンスでありましょう。
 本エントリーはまあ、各ハードウェアを彩る――あくまでも――、一つの側面です。

各陣営満を持した次世代機出そろった今、群雄割拠の結末に高揚感を禁じ得ませんが、PS4vsXBOX ONE、二代巨頭の対決は、間も無くです。

rule



rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:■■■ニュース!(ゲーム&業界)■■■
Genre:ゲーム

comments(0)|trackback(0)|プロが語るゲーム開発|2013-07-20_12:50|page top

ゲームプログラマが語る。「○を押せ」「×を押せ」? 割とガチでQTEをディスってみる
2013-05-07 23:34



スマホでご覧頂いている皆様。本エントリーは、PC版サイトでの閲覧を是非、推奨致しますm(_ _)m


 人恋しさに苛まれ、今日も今日とてゲーム三昧的な幸せ感を醸し出しながら、ここのところ、手を出すゲームが全てが色々と特殊な感じ。。
まるで、神経が鰹節のように削り出されているTeamDyquemで御座います。

 それなりに色々なゲームに手を出してはみながらも、時折、楽しさが憎しみにジョブチェンジしている皆様、こんばんは。
それは、僕の事でした。すみません。
 DQ7、おまえの事だw

 いやしかし。
最近購入致しました「大神 絶景版」、こちらは大変楽しく堪能させて頂いております。

 まあそれはともあれ、「大神」と言えば……?


rule

 ゲームに載せるべきでは無い要素は数々ありますが、一般的に認知されているであろう代表例を幾つか挙げてみるならば、次の様なものが当てはまるのでは無いでしょうか。

スキップ出来ない長尺ムービー?
セーブスロットが一つ?
有限コンティニュー?

いやいや。QTEでしょ。

QTEとは。
デモ中やムービー中、画面に表示されるコマンド「○」や「×」等を上手に入力出来るか否かによって、その後の展開が分岐するというもの。いわゆる「クイック・タイム・イベント」の略ですね。



悪名高いバイオのQTE


 そもそもの大前提として、娯楽としてのゲームというものは須く、遊んでいて楽しいものでなければなりません。
 敵の攻撃をかいくぐり、敵を倒すことが出来て……と、その様に当たり前の要素をただ漠然と制作していても、決して楽しい作品に仕上がる事のないゲームでありますが、これは、ある程度実証された根拠に基づいた理論の上に成り立つ、至極当然の事象です。
 ゲームの面白さとは、昇華されたゲームメカニクスという理論の上に構築されて初めて産み出されるものであるからです。

 こちらの話題に関しましての詳細は、以前のエントリー
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」


上記も、併せてご覧頂けましたら光栄です。


rule

 そうした、ゲームの楽しさを追求するための理論へ、相反する立ち位置にある要素が、QTEだと僕個人は考えています。誤解を恐れずに極論を展開させて頂くならば、正直、その存在自体が害悪であるとすら思っています。
 この、QTE。何が一体、僕をこうまで激昂させているのでありましょう。

 大凡の通例と致しまして、QTEが行われる背景には、デモやそれに類する物が再生されている事でしょう。そしてやはり大抵の場合には、何の前触れも無く、また、そのシーンに対する一片の描写的な説得力すら携える事もなく、それは突然現れます


画像、もっかい使ったった

 この時、初見ユーザーの脳内においてはまず何よりも、この事態に対する困惑が巻き起こっている事でしょう。なにしろ、それまではただデモを鑑賞していただけなのですから。それは、美麗なデモムービーであったかもしれません。感動的なシーンの後において、エキサイティングな展開を予感させる、なんとも心躍る一シーンであったかもしれません。
 しかし、ユーザーのそんな心理にはお構いなしに、突然、――大抵は、その制作チームにおける残念なディレクターの一存により実装された――QTEはカットインで乱入してきます。
 現代のゲームユーザーならばまあ大抵、突然現れたその横柄な強制イベント、「○ボタンを押せ」的な思慮の欠片も感じられないその御題を、まあそれなりにこなしてしまう事でしょう。
 ――慣れている――そう、言えるのやもしれません。
 それまでに感じていた楽しさや、エキサイティングに高揚した気持ちを無慈悲に中断され、その御題に従って○ボタンを――やむを得ず――押す事でしょう。
 別にですね……、
「ああ! これはいつ○ボタンを押せと言われるやもしれないぞ! ああ、これは気が抜けないぞ! これはハラハラドキドキするぞ!」
等と、考えているわけではありません。
 あくまでも、やむを得ず、面倒くさいけれど押さなければ仕方が無いから、○ボタンを押すのです。

 こんな仕組みの存在に、何一つ心躍る要素など存在してはおりません。ゲームメカニクスや楽しさの理論などお構い無しですからね。
 こんなものを起案する愉快で困ったディレクターへ、僕はいつだって、苦言を呈せずにはいられないのです。ユーザーへは勿論、作っているチームにすら悲しさの旋風を巻き起こす、残念な残念な要素なのですから。


rule

 殆どのパターンにおいて、その存在自体に何も意味が無いどころか、ユーザーにとっては寧ろ害悪であると、僕個人はそう確信すらしているQTEでありますが、実際にはもう少し細かい幾つかのパターンに分類する事が可能です。
 中には、効果的に機能している作例もありますが、まあ、併せて比較してみましょう。

ボーナス加算系

 まず、格闘ゲーム等によく見られるパターンですが、なにか必殺技の様な特殊なアクションを繰り出した際に発動するQTEで、その入力結果によって与えるダメージが変化する等といった効果の現れるパターン。
 これは、「まだマシなQTE」です。
 まあ、あくまでも付加要素に留まっている感がありますが、美麗なデモを見ている最中に、思考を中断される罪に変りはありません


拡張ページ送り系

「ああ、このままでは爆弾が作動してしまう!○ボタン連打で、爆弾を解除するんだ!」
 そう御題が出されはするものの、○ボタン連打に時間制限やノルマは無く、失敗してゲームオーバーになったりする事もなく、単に、一定以上の連打が確認されればシーンが進むというもの。
 これは、「まあ微笑ましいよねQTE」です。
 これを、QTE等という汚染されたジャンルに仕分けする事は、やや憚られるかもしれませんね。個人的に、この手の演出ならば寧ろ楽しむ事が出来ます。


ストーリー分岐系

 デモの最中に、「○か×を押して、ストーリー選択!」と題され、その結果によって進行が変化するタイプ。
 たっぷりと余裕をもった設定の時間制限切れも選択肢の一つで、それぞれに描写的な意味があり、どの選択肢にも極端なネガティブ要素が設定されていないならば。
 これは、「エキサイティングなQTE」です。

 FF13-2の序盤では、効果的に運用されていましたね。
これほど、心に余裕を持った状態で楽しめたQTEはありませんでした。

 さて。

クリアしないと進めない系

 失敗すると即ゲームオーバーであり、そのチャレンジを避けて通る事も出来ないケース。
これが、「最も禍々しいQTE」です。

 敢えて作品名を挙げ断罪する様な事はしませんが、ちょっと思い出してみるだけでも、結構な数のタイトルにおいて採用されていますね。
 ゲーム本編はとても秀逸で楽しいにも関わらず、何故か要所要所に極悪QTEが配置されている作品も多く見られ、開発チームの悲しさが伝わってくると同時に、残念で愉快なディレクターがまだ業界に跋扈している現実を嘆くばかりです。


rule

 アンバランスなQTEが無理矢理載せられているであろう殆どの作品では、こんなチープな要素になんぞ頼らなくたって、充分に魅力在るコンテンツでありました。
 多くの現場の人間は――特にプログラマは――こんな仕組みを作らなければならない事に大きな悲しみを感じている事でしょう。
 大抵は、要素の水増し感の為であったり、単に自分がプレイ慣れしてしまっている事に気が付いてすらいない浅はかなディレクターの「なんか単調じゃね?」の一言で実装が決定される極悪QTE。

 面白くないものは、面白くないのです。
 全国の現場の皆さん。心血を注いだ作品が汚されてしまわない様、勇気を持って立ち向かって参りましょう。


rule

 最後に。
ドラゴンズレア」さんや、「タイムギャル」さんをディスっているエントリーでは御座いません。
古き良きレーザーディスクゲーム、昔よくやったなー。
すぐ死んでたけど。


rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:■■■ニュース!(ゲーム&業界)■■■
Genre:ゲーム

comments(0)|trackback(0)|プロが語るゲーム開発|2013-05-07_23:34|page top

ゲームプログラマが語る。パーティーゲーム等における通信不具合ケアは、ソフトの命運を分ける
2012-07-22 00:13



 照りつけるような照り焼き的な夏がやってまいりました。
紫外線からお肌を守る皆様、こんにちは。
独身アラフォー男性としては、むしろ世間の目線が肌に痛い
小鳥の様な繊細さを持ち合わせているTeamDyquemで御座います。

 最近の更新頻度低下がもたらすクォリティ低下に拍車を掛けるかの様に、長文エントリー化を懸念しておりました。今夜は、バシ!っと短く参ります。
ゲームプログラマと致しまして、感心話を一つ。


rule


 短く参りますね。

 はい。ゲームやってたんです。とある、パーティーゲームなんです。
わいわいと、マルチプレイで。PSPで。

 正直、細かい実装について特筆する事は無いな、瞬時に判断する事が出来ました。
パーティーゲームですからね。そういった期待はしておりませんでした。

 結構古いそのゲーム。
多少なりともその場を盛り上げてくれさえすれば、まあそれでいいかなと、やや投げやりな期待に留めておりましたが、いざマルチプレイが始まってみるとこれが面白い。大変失礼な感想なのではありますが、これが大変面白い。
正直、映像技術などを見るに、特筆すべき点は在りません。在りませんが、しかし、丁寧な造り込みがもたらす作用でありましょうか、ついつい時間を忘れてしまったのです。

 ところがですね。
事件は、突然おきました。
会議室でなんかじゃあ、ありませんよ。


rule
通信断絶

 通信が切れちゃったんです。ゲームストップ!
それまで、何十分遊んでいた事でしょう。
ゲームは進行しています。有利不利の確立に一喜一憂しているんです。盛り上がっているんです!

 いやあ。ばちん!と切れましたね。通信が。
それまで、何十分と進めていたパーティーゲームが通信断絶されると、結構ダメージが大きい。皆様そうでしょう。

rule
シッダールタもビックリ

 この通信方式は、専門的はアドホック通信という方式です。端末同士が無線で通信し合うこの方式ですが、プログラマならばご存じでしょう。まだまだ不安定な通信方式です。

 もしかしたら、在るかな?
 もしかしたら、ちゃんと作ってくれているかな?

 思っていた矢先に、発動しましたYO

自動通信回復!
&、何事もなかったかのようにゲーム再開。

正直、業界人じゃなければ気がつかないレベル!


すごい!すごい!すごい!


エヴァンゲリオンのメガネの少年も大騒ぎです。

 何気なく見えるこの実装は、ソニーよりデベロッパー契約必須事項に含まれていないため、見過ごされやすい項目です。
格闘ゲーム等において、同様の通信障害が発生したならば、問答無用で単なるラウンド終了となる事でありましょう。

 んが、しかし。
パーティーゲームでそれをやってしまったならばその時には、ユーザーに頭があがらない……こうした謙虚な思想が出発点となっていなければ、わざわざこんな大変な実装を工数として計上する事は難しいのです。

 その性質上、プログラマが正直にその大変さを挙げながら、且つ実装の必要性に前向きで、会社的に承認が降りるという複雑なフェイズを経ている筈でありましょう。

 逆に言うならば、このくらいの事をちゃんと出来ないソフトハウスなんかへ、パーティーゲーム系の仕事を卸すべきではありません。結構ありますよ、こういう最低限のマナーすら守れていない会社や、そうした状態のまま発売されてしまった悲しいゲーム。


rule
ナウシカの様な気持ちになって、実装しよう!

 ゲームプログラマ諸君。
 通信状態の回復は別に面倒な事ではありませんが、ゲーム進行状態の維持を心がけましょう。
 重要な中枢データはワンパックにしておくのです。
 そのクラスインスタンスさえ生きていれば、全てを再生可能!そうしたデータ運用が大切だと僕は思いますし、こうした思想は、昨今の「なんでもマイクロカーネル化」トレンドを採用する過程において大変有用でありましょう。

 ある処理をしなければならない、その処理を担当するクラスはその処理だけを行えばよい。
「オブジェクト指向」という言葉が死語として朽ち果ててしまっているかどうかはともあれ、「モジュールの役割分担最小化」という概念だけは、仮に千年後の未来におけるプログラミングにおいても、有効な考え方でしょう。これ以上合理的な考え方など在りはしませんからね。


して、そのゲームとは!?

別に、ステマでもなんでもないので採り上げる必要も無いかなとは思いましたが、一応挙げておきますね。

いたストです!




寧ろ、パーティーゲームであるにも関わらず、こうした気遣いの全く見られない幾つかのゲームを、おもいっきり断罪したいくらいでありますが、伏せておきますね。


rule
時代は、エラーセーフ

 プログラムへ沢山のAssertを仕込む事は、一定の品質保守における通例です。
しかし、それだけで終わってはいませんか?

 現代ゲーム制作において大切な事は、それだけではありません。
昨今のOS複雑化に伴い、銀行ATMに求められる様なエラーセーフ実装に対する重要性が見直されてきています。仮に何か、システムとして進行不能な状況が検出されたとしても、システムは、出来る限りセーフティに進行し続けなければなりません。
 この事が、ゲームにも求められる時代になって参りました。


 次回は、この辺りをじっくり掘り下げましょう。



// ==================================================================== // rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:■■■ニュース!(ゲーム&業界)■■■
Genre:ゲーム

comments(0)|trackback(0)|プロが語るゲーム開発|2012-07-22_00:13|page top

ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
2012-01-18 13:11



やや間の開いた更新であるにも関わらず次週のサザエさんは的な勢いで冒頭からボケ倒してみたいところでありましたが最近周囲が繰り出す「不安の範囲攻撃」に苛まれている内にやる気もネタもなくなり、結局何を書こうと思ったんだったのでありましょう。

夢の中でヤドカリと会話する様な人はどうかと思いますが、いっこうに会話の内容を思い出す事が出来ず、不安すぎて昼も眠れないTeamDyquemで御座います。皆様、こんにちは。

次回のエントリー用「ガッツリ宇宙ネタ」草稿も併せて書いておりましたので、何となく気分が宇宙的な感じでありますが、ペテルギウスの超新星爆発による人類壊滅も目前に迫った本惑星であります事ですしね。

気を取り直して、ゲーム製作初心者さん向けエントリーを一つ。


rule
整数と、浮動小数点

題材として、何か大きな数値が必要ですね。
光は1秒間に約30万キロメートル進むわけですが、これを例にとってみましょう。

もう少し正確に言えば29万9792.458キロメートル。キロではなくメートルで表現する為に全部数字を並べれば「299792458メートル」という大きな数値です。

32ビット符号無し整数の最大値が「0xffffffff==4294967295」ですから、この値を32ビット符号無し整数として扱う事は可能です。しかし、32ビットを単純に整数として扱う場合には「299792458.0+0.00001」の様な少数部の含まれる計算は行えませんし、そもそも「299792458+5000000000」の様な更に大きすぎる値を伴う計算も行えません。整数として数を表現する為の「幅」が32ビット幅を超えて広がってしまう事が原因で、これはビット精度不足と呼称されています。


rule
整数型の限界を超える、浮動小数点型

こうした点を解消する為のアプローチとしてfloat型(double型)という型が考案され、IEE754という標準規格の元、世界的に広く運用されているわけでありますが、その仕組みについて本当に把握している方はあまり多くない様に思います。
ゲームプログラマにとり、float等に代表されるこれらの型との縁は切っても切る事は出来ませんし、完全な見方につけるべき概念でありますからね。
一つ、掘り下げてみたいと思います。

float型はご存じの通り32ビットの型でありますが、上記の符号無し32ビット整数では解決出来ない小数部を含む数値の扱いや、非常に大きな数値の扱い等の問題を制限付きで解決します。同じビット長であるにも関わらずこれが解決出来る仕組みは、そう難しいものでは在りません。

これら「浮動小数点」と呼ばれる型は、floatならばその32ビットの中を3つのフィールドに分けて管理しています。内訳は符号1ビット + 指数8ビット + 仮数23ビットとなっており、IEEE754フォーマットとして定められています。

符 指指指指指指指指 仮仮仮仮仮仮仮仮仮仮仮仮仮仮仮仮仮仮仮仮仮仮仮

という並びですね。

浮動小数点の仕組みを簡単に言えば、「仮数部=種となる数字」「指数部=種を何乗にするか」「符号=プラスかマイナスか」という物であります。
キーとなるのは指数部の「何乗にするか」という部分であり、実際には「10の何乗に」するかという指数でありますが、例えば10の8乗にする為に「8」という意味の数値を指数部にセットしておけば、種が10の8乗された非常に大きな値を取り扱う事も可能となりますし、逆に「10のマイナス8乗」という意味の数値を格納する事により、「0.0000…1」の様な非常に小さな数値を表現する事も又出来るのです。

冒頭の「光の速度=299792458メートル」を実際に float型にてビット化するならば、光速299792458の仮数は2.99792458、指数は10の8乗、つまり8でありますから上記の様に表現する事が可能となるわけであります。

この時、デバッガ等でその値を確認してみると、299792448.0f という意味を表す実際の32ビット値は [0x4d8ef3c2] となっている事を確認出来るでしょう。
IEEE754にて定められたフォーマット、
実際の数値 = 符号 × 2(指数-127) × (1+仮数)
へ当てはめてみれば、まさに上記の値となる事が判りますが、この辺りの詳細は種々ネット情報等へ譲り先へ進みます。


rule
浮動小数点型が犠牲にしているもの

浮動小数点型は、非常に大きな値でも、非常に小さな値でも、指数を活用し表現する事の出来る優れた型であります。指数の幅はfloatならば8ビットもありますので、相当に大きな値でも、また、相当に小さな値でも表現する事が可能です。

例えば、上記の光速 「299792448.0」。
例えば、もの凄く小さな値「0.000001」。
どちらも、指数部8ビットを大きく活用しfloatで表現する事の出来る値である事は確かです。

しかし。
上記二つの値を合算する事は出来ません。

「299792448.0 + 0.000001」を行う場合、大きな値から小さな値までの「指数の幅」が8ビットを超えてしまい、値の小さな部分に対しての「丸め」が発生。
結果、この演算は無かった事になるのです。

「丸め」とは、その表現における限界を超えた部分に対して、最小の影響にて施される回避策です。制限を超えたビットに関する演算結果を「捨てる」という挙動であり、数学的には「近似」と表現され得ますが、演算結果の一部が捨てられている事実に変わりはなく、所謂「計算誤差」という形となって表面化する事も少なくありません。

この様に、浮動小数点には限界があり、その犠牲として計算誤差が発生する恐れが存在します。
この辺りの詳細は、「イプシロン」等で調べてみても面白いかもしれません。


rule
ゲームに及ぼす影響

商業ゲームを製作するに辺り、こうした特性を把握しておく事は大変重要であります。

例えば以下の事例。
前回のエントリー、
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

にて紹介させて頂いた書籍より、例として拝借致します。

昨今のゲームにて目にする事もあるかと思いますが、「プレイ時間」という情報について例にとってみましょう。(モンハン等では、これが300時間等に達している方も少なくないでしょう。)

単純に秒の蓄積を表す器として、float mSumOfPlayTime; 等の様な変数にしてしまうと、この段階でアウトです。
この変数へ、毎秒30フレームのゲームがフレーム毎に経過時間を加算していくとしましょう。

mSumOfPlayTime += 1.0f / 30.0f;

1の30分の1とは、0.033という小さな値です。これが mSumOfPlayTime に蓄積される値はどんどんと大きくなり、いずれは「光の速度」の様に非常に大きな数値へと育って行くでしょう。

上記にて「299792448.0 + 0.000001」が丸めにより計算できなくなる例を出した様に、mSumOfPlayTime にも、指数により運命を定められた限界を突破するXデイが着々と迫ります。

Xデイを迎えるとそれ以上プレイ時間は加算されず、どんなにプレイしてもそれ以上の時間が表示されないという重大なバグへと育ちます。

さて、そのXデイとは?


延々と1/30秒を加算し続けてく場合、それは約12.9日後にやってきます。


ハマリにハマれる素晴らしいゲームにおいて、プレイ時間の合計はユーザーの勲章でもありましょう。300時間超えでプレイしてもらえるという素晴らしいゲームでありながら、そのまま実装していたならば、「プレイ時間表示は309時間でカンスト」というなんともお粗末なバグにより、一気にユーザーを興ざめさせる事でしょう。


rule
本質を知り、上手に付き合う

こうした事態を十分に想定し、精度を意識した実装を心がける事が大切です。

経過時間を計るならば、それに適した構造体型を用意するべきでありましょう。ミリ秒、秒、分等を別々のメンバとして含み、加算メソッド等を用意すれば事足りるのです。そうした組み込み型も存在しています。

体長が50メートルもある様な巨大なボスの持つ絶対座標矩形情報に1ミリを加算しても意味が無く、「このボスの座標に1ミリを加算していき、丁度1メートルだけ動いたら次の処理へ」。
こういう動作があった場合、このボスはこの段階で停止する事でしょう。

精度不足の値が加算される事そのものではなく、「その加算には単に意味が無いだけで、動作に影響は及ぼさない」という実装を常に意識する事が重要でありましょう。

丸め誤差も精度不足も、それと判って付き合っていけば、これほどまでに役立つアトミック型はありません。「小数部が使える」という表面的な部分だけに捕らわれず、その本質を理解した上で、上手に付き合っていきましょう。


「アトミック型」につきましては、以前のエントリー
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ

上記も併せて参照頂けましたら幸いです。



さて、週の真ん中水曜日。
今週ももう少し頑張って参りましょう。

ちなみに、次回は恐らく本当に「ガッツリ宇宙ネタ」の予定で御座います。


ゲームエンジン・アーキテクチャ
ジェイソン・グレゴリー
ソフトバンククリエイティブ
売り上げランキング: 58316




rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:プログラミング
Genre:コンピュータ

comments(0)|trackback(0)|プロが語るゲーム開発|2012-01-18_13:11|page top

ゲームプログラマが語る。冒険はどこへいった?ゲーム機の進化とサイヤ人
2011-11-07 13:39



むかしむかし、遙かな昔。丸く小さな宇宙船で地球へやって来た拳法少年が、やがて宇宙を救う戦士へと成熟していった様に。
小さなゲーム機「ファミリーコンピューター」だったモノが、今では何処の星の超戦士ですかと言わんばかりの怪物へと進化しています。

思えば、ファミコン時代のあの頃。惑星規模の視点から眺めてみればそれは確かに空も飛べない下級戦士であったかもしれませんが、そこには冒険があり笑いがあって、あの燃えさかる山を越えた先には何があるんだろう。海に沈んだ宝石を、いったいどうやって手に入れるのだろうとワクワクしたものでした。この頃、世界はまだ十分に広く、謎と期待に満ち溢れていたのです。
背景画像も音楽も無い初期のゲーム達、ゴリラを操作し樽を飛び越え、「テニスだ」「野球だ」とそれ以上いかなる説明も付け加えらない程のシンプルな遊びに首まで浸かり、やがて小さな髭の配管工が冒険に出掛けるまで、どれも皆、僕を無秩序なほど夢中にしてやまなかった。
そこに散りばめられた遊びは皆原始的ではあるけれど、少年が意のままに伸び縮みする棒切れ一つで華麗な闘いを繰り広げてみせてくれた様に、僅かなボタンだけを装備した小さな赤い箱は、驚くほど多彩な楽しみを提供してくれたものです。

時は移り、昨今、プレステ3やXBox360等の怪力マシン達が群雄割拠しておりますが、なるほど彼等はある種、フリーザ一味やセルであると言えるでしょう。大電力の超処理能力が産み出す映像は今や実写と見紛うばかりであり、空冷ファンの音をブンブンとけたたましく奏でながら、画面には溢れんばかりのキャラクターの大群を並べ立ててきます。

中国の様な山奥で一人、魚を捕って暮らしていた拳法少年はメキメキと力をつけ、ついにはこうして宇宙を襲う様な強大な敵にも威風堂々相対する事が出来たのです。


しかし、何かがモノ足りませんね。
なんでしょう、この、何処か寂しい感覚は。


rule

「力」がインフレーションを起こし、様々なピンチを演出する敵キャラクター達が狙うターゲットも最初は財宝、次に村や町、やがて国家を襲い、地球を脅かし、遂には全宇宙を手に入れ様とするその過程。

これは、ゲーム機の進化にそのまま当てはめる事が可能です。

天井知らずの「処理能力」向上。基本的にこの部分が最も重要な進化要素であると見られる事が多く、事実、ゲーム機はその様に進歩してきました。
しかし、底上げされた処理能力をどうにか使い尽くさなければ旧世代のソフトに見劣りしてしまうという強迫観念に押され、グラフィックはどんどんと美麗になり、溢れる程の敵キャラクターが所狭しと動き回るのです。

ゲーム機の進化は、ここにきて飽和状態に達していると表現して良いでしょう。やや専門用語を用いてしまいますが、GPUの進化は頭打ちに近い状態になっており、GPGPUやテッセレーションの性能をこれ以上いくら高めても、生産性との対比例効果を効率よく得られる段階をとうに過ぎています。昨今、この状況に対し姿勢制御系の更なる技術追求等へシフトする傾向も見られますが、これもやはり「強大な敵を、戦闘力アップで倒す」というベクトルに違いはありません。


このままではやがて敵側のやるべき事がなくなってしまい、連載打ち切りの憂き目にあう事は必至です。どこかで進化のインフレーションを止め、その力を多様性展開に開放しなければなりません。漫画の場合は、この辺りから頭脳戦になったりしますね。


rule

ゲーム機の場合はどうでしょう。

力の進化一辺倒であったゲーム機においても、救いの御手が差し伸べられてきた様に思います。iPhoneであったり、PS Vita や Wii-U が織り成すクラウドとの融合は、ゲームエンターテイメントにおける新しい遊びの空間でありましょう。これはまさに「食いしん坊の魔神が出てきた」的な新しくワクワクするストーリー展開であり、ここから更に葛飾勤務警察官とのコラボでもあれば楽しさも一入ですね。


以前のエントリー
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」
上記も併せてご覧頂けましたら幸いですが、これからはゲームも多角的に楽しむ時代だと思います。

Nintendo-3DSの裸眼立体視。体質による所もありますが、僕個人的にはその美麗さや立体感を楽しめています。が、しかし、この機種の魅力という意味では寧ろ「すれ違い通信」系の進化や、冒険的な企画である筈のAR系ゲームが本体に内蔵されている点に、明るい未来を感じます。


rule

地球の科学文明はいまや進化の袋小路にはまり込んでいると言われ、千年王朝ミレニアムの建国を待たずして滅び去るやもしれませんが、ゲーム機進化のインフレーションは回避されつつあり、その過剰なエネルギーを「楽しさの追求」という本来の方向性へ向け直して欲しい所ですね。

地球が滅びさったたとしても、正しく楽しいゲーム機へと進化した「プレイステーション10」は発売して欲しいTeam Dyquem でした。

今からAmazonで予約しなくっちゃ。


rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:■■■ニュース!(ゲーム&業界)■■■
Genre:ゲーム

comments(0)|trackback(0)|プロが語るゲーム開発|2011-11-07_13:39|page top

グローバル化を真面目に考えるゲームプログラマが語る。英語と、プログラミング
2011-07-25 01:00



 地上アナログ停波の瞬間がいったい何時にやってくるのだろう、その瞬間を自分の目に捕らえたいとヤキモキしながら約20時間を無駄にした皆様、こんばんは。
それはワタクシの事でした、TeamDyquemで御座います。

今週からはまた暑い日々が続く様ですね。
何故か読者様よりのメールが多い一週間で御座いましたが、一部、掲載許可を頂いた件に関しましては、久しぶりにFAQ形式のエントリーを近く予定しております。
どうぞご期待下さいねm(_ _)m


さて、その前に。

rule


 昨今、多種多様な言語が存在し、それは勿論通常の言語に関する話題でもありますが、我々が題材に挙げるとするならば、ここはやはりプログラミング言語と相成る事でありましょう。それでも、しかししかし。ここは敢えて通常の言語とプログラミング言語双方を、融合した話題につきまして、プログラマという観点から一つ掲げてみたいと思います。


尚、英語学習につきまして、ジョークネタ気味扱いました以前のエントリー
iPhoneアプリ作者の英語学習と、醤油レッスン

iPhone作者が語る。英語のススメって言うかチャーシュー多すぎ

等も、併せてご覧頂けましたら幸いで御座います。


rule

 さて。
今回は少々、お堅めエントリーとなったやもしれません。
「冷やし中華はじめたい」その様な見切り発車感は拭えませんが、一つ、提言させて頂きましょう。
プログラマの方では無くとも、語学に興味がある方には是非一読頂ければ嬉しいです。


さてさて。


 大抵のプログラミング言語というものは、一般的にアルファベットをベースとして構築していくものでありましょう。英数字を基本としてプログラミングしていく事は、それが完全なるデファクトスタンダードであると断言するにまでは至りませんし、ここに例外が無いわけではありませんが、英文ベースプログラミングは、ほぼ世界標準であると言って良いでしょう。「日本語ベーシック」といったものや、はては、ハングル語のGUI+スクリプト言語というものも現実に存在しておりますし、その多様性や意義につきましてはここでの言及を避けますが、プログラミングと英語の密接な関係性の存在につきまして、もはや疑われるべき要素も無いでしょう。

 こうして、プログラミングと英語の関係性が非常に優れているという世界的な背景の中、我々日本人の様に、英語を母国語としていないプログラマにとりまして、その距離感をどの様に扱うかという点に関しましては、益々のグローバル化を遂げる昨今のソフトウェア開発畑におきましては大変重要な要素と成り得るでしょう、そしてまた、重要な要素であると捕らえるべきであります。


 英語を習得する。
 ここで、少しだけ、便宜上必要な個人的な見解を展開させて頂きますが、例えば、日本義務教育で習う「英語」という学科は、もはや廃止すべきであると考えております。
「英語」という単独学科は、もはやその存在自体がナンセンスでありましょう。
 無意味に広いんです。日本英語学習推進委員会の様なものがあるかどうかはともあれ、日本の教育委員会が学生の英語学習という点に対し、素人ながら意見を並べ立てさせて頂いておりますが、個人的見解の列挙を続けます。

 無意味に広いんですってば。

 何故、中学一年生から英文法を学ばなければならないのでしょうか。欧米の同学年生が、日本語の単語すらも殆ど知ってはいないその段階から、いきなり「てにをは」を覚えさせられて、日本語の何を学んでいけるのでしょうか。
「英語」という学科が必要無い、その様に断言しても良いのですが、もう少しオブラートに包むならば、「英会話」という広義の設問と機会の提供が何よりも求められている事象でありましょう。世界の子供達が、その生を受け、最初に言語を学ぶ際には、機会を通して身振り手振りを学び、様々な表現を真似し、模写を通して意味を知り、最終段階として文法解釈を試みる、そういった形が人類の通例でありましょう。何度も模写をし、漸く意志が疎通出来る程度のモノマネ会話が出来る様になって、その後、更に漸く、「てにをはを」駆使し、be動詞や助動詞といった、会話の意味を100倍も広げるルールを学び、文法としての深みを理解していく事が霊長類としての定番でありましょう。あくまでも、この惑星限定ですけれど。


 さて、十分に皆様へどん引きして頂きました所で、本題へ。
ついつい筆が乗ってしまったんです……ごめんなさいT_T


 プログラミングにおきましては、例えば、関数名など、英語を基軸とした命名は日常と完全に融合している分野でありましょう。
 関数へ、その機能を十分に表現した、端的な分かり易い命名を施す事は、プログラマへの基本的な義務であります。

 日本人プログラマによる命名において見かける事のある例でありますが、例えば、何かを描画する関数へ「Dispなになに」。何かを管理運営するのであろう関数へ「なになにCont」と命名されているケース。これらの例で考えてみる場合、省略の形が個性的な点と、動詞と目的語が順不同な為、混乱する事もあるでしょう。描画系は「Drawなになに」。管理系は「Manageなになに」等、チーム一環としたルールがあれば、ヘッダファイルを開く事も無くコール部分を記述する事すら、可能となってくるでしょう。


 余談でありますが、iOSが展開するAPI系命名規則には、もはや美学すら感じます。私は、確かにAppleの製品やその設計思想を盲目的に溺愛している部分はありますがw、開発者という視点からすれば、やはりそこには、自分の哲学へリンクする確固たる理由が存在しています。

「didFinishLaunchingWithOptions」
美しいw
冗長性に関しては完全に目を瞑るというポリシーにも、個人的には賛成です。

 「ルール」を敷設し、楽しく従って行く。プログラミングってのはただでさえ堅苦しいですからね。そのルールが盲目的な奴隷制度の様なものではなく、リーダーによる整然とした、理論的でかつ、皆が笑顔で納得出来るものであれば、チームの開発効率と、そして何より楽しさが大きくなっていくものでしょう。



それでは皆様。
今週も、頑張ってまいりましょうね^^
TeamDyquemでした。



rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:■■■ニュース!(ゲーム&業界)■■■
Genre:ゲーム

comments(0)|trackback(0)|プロが語るゲーム開発|2011-07-25_01:00|page top

ゲームプログラマが語る。バグを生まない仕込みと、バルスの例外処理
2011-06-22 13:21



いよいよと、初夏の装いがギラギラと目に痛い季節がやってまいりました。なんやかんやと、季節や地球に悪態をついておりますが、湿気と暑さには本当にめっぽう弱いTeamDyquemで御座います。皆様、こんにちは。

まだ6月だというのにも関わらず、既にやや茹だる様な様相を呈しております関東平野。湿気にやる気を削がれて、死んだ魚の方がまだ生き生きとした目をしているTeamDyquemですホントに。

反面、冬は大好きなのでありますよ。冬最高。凍れ、全てよ。


さてさて。
今回は、バグと上手に付き合う方法につきましてヒトネタ。
プログラマ視点からはこんな気持ちで臨むと良いよ、という話でありますが、プログラマでは無い方も是非サラっと一読頂けましたら幸いです。

rule

プログラミングというものは、良くも悪くも結局はヒューマンエラーとの闘いであるとも言えるでしょう。バグは人為的ミスである以上、高尚な合理性を掲げ、如何に芸術性を追求してみたところで、バグのあるモジュールの存在意義には常に疑問符がついて回ります。
では、「バグが無いプログラム」とは何でしょう。それは勿論、読んで字の如しではあるのでしょうが、突き詰めてみればバグというものは結局、設計者の意図に反した動作を行う設計になってしまっているプログラムの総称であり、バグが無い事を理論的に証明するためには、その課程において設計者の脳内を通過しなければならず、これはつまり所謂「悪魔の証明」よろしく「無い事を証明できない」典型的な詭弁と相成るわけであります。
バグが無いプログラムを定義する事の無意味さについてはこの通りなのですが、ここで重要な点は、「バグが在る」としても、それを機械的に発見させる為の「」を植えておく事でありましょう。それはあたかも白血球であるかの様に、自身の仕組み内にて潜在的不穏因子、つまり人の力ではなかなかに見付け出す事の難しいバグ等をも自動的に検出し、排出出来る様なシステムとして稼働します。設計段階において人が全てのヒューマンエラーを排除する事は殆ど不可能でありますから、その補助システムを予め組み込んでおく形が望ましく、また合理的でありましょう。

さて、ものっすごく冗長に書いてみました。

バグを発見するスキルと、可能な限りバグを作らないスキルは別物であるのですが、今回は後者に言及する為に必要な冗長さとしてご容赦下さい。最も大切なこのフェイズを十分に実装しておくと、後々に不可解なバグで何日も時間を浪費する可能性も下がり、結果として、貴重な制作時間の短縮に大きく貢献する事になるのです。

さて、 「脱、バグ苦悩」プロジェクトの第一弾としまして、今回は「Assert:(アサート)」を取り上げてみましょう。


rule
「脱、バグ苦悩」プロジェクト第一弾 ~ Assert ~

assertとはデバッグ系ユーティリティの一つで、プログラム設計者の定める仮定が満たされていない場合にその時点で実行を停止させ、利用者、又は設計者へ、意図しない動作が発生した瞬間を通知し被害を最小限に食い止め、もしくはバグ修正への情報を提供する為のツールです。

簡単な例を挙げてみましょう。


namespace
{
const unsigned int num = 3;
const char* nameTable[ num ] =
{
"Dyquem",
"Marimo",
"Nekoris",
};
}

const char* getName( unsigned int aIndex )
{
assert( aIndex < num );
return nameTable[ aIndex ];
}


関数 getName へ 3以上の引数を与えた場合、assertがそれを捕捉しプログラムは停止します。もしもassertが無ければ、いったいどんな事が起きるでしょう。
このケースならば、謎のメモリ領域にたまたま存在しているグチャグチャなNULL終端文字列を返し、受け取った処理はそれを正規の「名前」であるとして処理は進み、仮にそれが住所録アプリであるならば、最終的なユーザーレベルの視点には「グチャグチャな名前の人が、アドレス帳に時々現れる」等といった、原因究明のなんとも厄介そうなバグへと成長するでしょう。

assertはC言語標準関数としてassert.h により定義され、そのまま使用する事も出来ますが、TeamDyquem的には以下の様に拡張した上で使用しています。



void Abort( const char* apFileName, unsigned int aLine, const char* apFormat, ... )
{
vsnprintf_s等で、引数の文字列を表示する、等
exit( 1 );
}

#define Assert( aExpression, ... ) {\
if( bool( aExpression ) == false ){\
Abort( __WFILE__, __LINE__, __VA_ARGS__ );\
}

// ex.
Assert( aIndex < num, "[getName] Illegal argument (%d/%d)", aIndex, num );


VisualStudioでのサンプルです。__VA_ARGS__等はコンパイラが定める定数ですので、お使いのプラットフォームに適時合わせて下さい。

この様に拡張すると、実際には

[test.cpp](240行目): [getName] Illegal argument (3/10)」

この様なメッセージを表示した後にプログラムが停止します。
設計者が設計時にこのメッセージを目にすれば、直ちに原因となった箇所をチェック出来ますし、ユーザーさんがバグ報告をしてくれた際にも、このメッセージを教えて貰えるのとそうでないのとでは、解決までに要する時間も大きく異なるでしょう。


Assertは、それはもう山の様にありとあらゆる箇所へ仕込んで置く事が良いでしょう。
個人的には、基本的にポインタの類は全て触る前にはAssertでチェック、配列アクセス言わずもがな。switch文にて意図しないcase値は全てAssert。また、本稿の話からは少しだけ逸脱しますが、Static Assertという機構も併用しています。


rule
リリース版では

あんまり仕込みすぎると、実行速度に影響があるのではないかと思われるかもしれませんが、その様な事はありません。 条件コンパイルにて、くだんのAssertマクロ内容を空にする様にするだけで、実際にリリースするバージョンでは全てのAssert文が自動的に消滅してくれますね。


rule

100利あって1害無し。
心ゆくまでAssertを仕込んでいきましょう。


さーて、次回のサザエさんはっ

これがAssert例外処理をミスりまくっている代表例だ!
プログラマちょっとここへ来て正座しろ!的なお話として、


「スカウターの爆発」

「名前を間違えた場合の、デスノートの挙動と動作」

「バルス」




を、お送りします。(するのか?)



rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:プログラミング
Genre:コンピュータ

comments(0)|trackback(0)|プロが語るゲーム開発|2011-06-22_13:21|page top

ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント
2011-06-03 13:29



ずっと使っているオートチャージ付きViewSuica定期の便利さといったら在りませんが、
定期を更新し忘れていると、うっかりオートチャージにて毎日無意識にお金を毟り取られるという仕様。
何とかならないのか殆ど詐欺だろコレ!と脳内で叫びまくっているTeamDyquemで御座います。
皆様こんにちは。

自業自得ですけれどね、かつて2~3回やってしまいました…orz

さて、気がつけばもう6月でありますよ。なんという事でしょう。
ビフォー・アフターはもうリフォームじゃなくて新築って言っちゃいなYO!
TeamDyquem的には、3月末にリリースさせて頂いた「ネコりす」より早2ヶ月。
新作開発は順調とまでは言えませんが、遅々としていながらも何とか進んできております。
幾つか平行制作しておりますが、もう間もなくプロトタイプに辿り着きそう子が一つ。
この一つは例によってパズル系なのですが、意外性を目指す余り何とも謎のゲームになってきています。
ネコが出てこない久しぶりのアプリなので開発に彩りが足りない気もするのですが
これからも頑張って参りたいと思います。


そう言えばアレですよ。
ここの所ハマっていた「ヴィーナス&ブレイブス」をクリアしました。
これまでに体験したゲームの中でも群を抜いてスタッフロールの素敵なゲームでありました。
これを見るだけで報われたというものです。


さて。

rule
乱数よもやま話

ゲームを始めとする娯楽系アプリ開発においては特に、
又、異なる系統においてもある種意外性やエフェクト等を取り入れようとする場合など、
各種色々な場面にて所謂「乱数」の組み込みが必要となるケースもあるでしょう。

読んで字の如しと言いたいところで在りますが、プログラマ的な視点より離れますと、
「乱れた数字」になんの意味があるのだろうと思わなくもありません。
そもそも「変数」という言葉にも疑問を感じていた黎明期が自分にもあった筈なのですが。
乱れる数だの変な数だの、和訳されたプログラミング用語にはよくよく考えると不思議な言葉が多いですよね。

仮想関数、名前空間、値渡し、高級言語、etc etc。
日常的にプログラミングへ接しているといつの間にやら忘れてしまいがちな事ではありますが、
どれも、何となくどことなくシックリと来ない謎めいた不思議な言葉達だとは思いませんか?

まあ、「フレンド関数」を「友愛処理」とか言う習慣が育たなかった点はGJというか、
寧ろ少し寂しい感じもしますが。「例外友愛処理」「友愛DLL」…うん、いける。


rule

暴走列車並の脱線プリではありますが、今回は「乱数」につきまして。

プログラマではない方へ「乱数」を簡単に説明する事は意外にも難しいかと思うのですが、
要するにデタラメな数字を取り出せる箱の様なもの、といった所でしょうか。
ゲーム上にてサイコロを振り何が出るかが判らない状態を設計する、等といったケースも良い例です。

この「何の目が出るか判らない」という状態を設計する事は、厳密に言えば実は結構難しい事であります。
以後の話を展開する為に簡単な例題を設けてみました。解いてみて下さいという事ではありませんが、
正しい乱数を実装又は採用するという意味においては大変重要な概念でありますので、一読頂ければ幸いです。

●問1
サイコロを振り10回連続「1」の目が出た後で、11回目に「1」が出る正しい確率は?

●問2
双六ゲームにてサイコロ10回連続「1」の目が出る事は、確率として問題があるか?

●問3
RPGで高確率にてHPの回復する初心者救済的なマスに乗ったら、偶然敵が現れて死んだ


いずれもおかしな設問ではありますが、1に関しては勿論単純に「6分の1」が正解であり、
2には「問題ない」と答えるのが正しいディレクターです。
この2点に異を唱える事はつまりこの宇宙自体を否定する事と同義であり、
不服ならば多次元へ拠り所を探すしか道はありません。

まあネタはともあれ、「神はサイコロを振らない」という物理法則の大原則に則り、通常確率は一定です。
敢えて問題とするならば、そうした神がかった運の持ち主に相対した場合に、
不公平に対する何らかの均等化ボーナス処理を追加していなかった事が挙げられる場合もありますが、
これも通常強制的ではありません。
運の良い人を運の良いままに、悪い人を悪いままに扱う事も、また大切であるという解釈もありましょう。
同じ理由にて、問3もゲームとしての構成に問題があるかどうかはともあれ、確率は平等であるという例です。


rule

さて、ここまでは「乱数」が正しく機能している事を大前提とした理論でありますが、
そもそも「乱数が正しく機能する」とはどういう事でしょう。

一般にコンピューターが扱う乱数も、ひいては自然界に起こる真にランダムに見える様な事象に至るまで、
本当の意味での「ランダム」という状態は存在しません。
神はサイコロを振らない、つまり、世界は全て素粒子レベル量子レベルにおける微細な運動の積み重ねにより、
マクロの事象全てを突き動かしている連鎖反応の産物であるという話であり、
まあ、そんな大風呂敷広げるつもりはなかったのですが、
要するに相当それっぽい疑似乱数ルーチンを採用出来るかがどうかは、
アプリ開発におきましてとても重要になってきます。


数年前でありますがとある市販ゲームにて、
乱数処理が余りにも稚拙な為に、スゴロク部分が大破綻してしまった例が記事になっています。
該当記事

何をどう適当にコーディングしたらこんな事が起こるのかと思う方も居るでしょう。
しかし、上記の例は決して大げさなパターンでは無く、
それこそC言語のrandを使っているだけでも起こりえる事なのです。
まあ上記のゲームにつきましてはコーディング云々というよりも、
デバッグ体制とデバッグ結果のフィードバック機構において、
ゲーム制作会社組織として重篤なシステム的欠陥があったであろう点の方がより大きな問題であると思いますが、
何にせよ簡易乱数が乱数として機能していない、ある種典型的なパターンと言えましょう。


こういった事態を引き起こさない為には正しい乱数処理を実装する事がとても大切なのですが、
「乱数」という高度に数学的な論理モデルを、スクラッチから構築するとなればこれは大変極まりありません。
論文レベルですからね。。

既存の、高度で十分に運用実績があり、高速で軽量、且つライセンス的に問題の無いモジュールがあれば
それを有り難く利用させて頂く事が合理的であります。

上記の条件を満たす発表済みの乱数処理は世界に幾つか存在しておりますが、
日本人の手により開発され世界的に有名となったアルゴリズム「Mersenne Twister 」、
TeamDyquem的にはこれを強くお勧め致します。
623次元超立方体に均等分布するとかその攻撃力も抜群。
市販ゲームにも数多く実装されておりその運用方法も実に単純明快な、非常に優れたアルゴリズムです。

Mersenne Twister Home Page

TeamDyquemでは、BSDラインセンスへ準拠しながら感謝しつつ利用させて頂いております。
ちゃんと使える乱数」について興味をもたれましたら、参考になさっては如何でしょう。



梅雨の季節がやってまいりましたが、皆様良い週末を。
「休み」よりも「明日は休み」の方が好き。TeamDyquemでした。


rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:プログラミング
Genre:コンピュータ

comments(0)|trackback(0)|プロが語るゲーム開発|2011-06-03_13:29|page top

ゲームプログラマが語る。モンハン3Pに見るマルチプラットフォーム化の恩恵
2011-05-30 13:40



今年も元気にやってまいりました梅雨。迷惑千万この上ないのですけれども梅雨。
雨が降ればいいってもんじゃあ無いって事を判らせたいですね梅雨。
ダメなんです。湿気にまみれると色々と駄目な自分なのです。
相性が悪いんじゃない?地球と。」的な会話がナチュラルに飛び出す関係というのはどうかと思いますが、
梅雨のせいなのです。何かこう、自動的に毎日が「明日から頑張るモード」となりませんか?なりませんね。

「後ろから吹く風」と「湿気」が、何よりも苦手なTeamDyquemで御座います。
皆様こんにちは。


耳よりな情報が耳にどれ程寄っているのか、ですとか、
「どこもかしこも」の「かしこ」って何処だろうと気になり始め、昼も眠れません。
「小耳に挟んだ」とか言われると、挟まってないじゃん!という脳内リフレインに苛まれ、
「あししげく通う」という字面だけを見ると、「あししげ」<「通う」みたいで、
「あししげ」が「通う」より劣っているんじゃないかと心配になる始末。

えと、何科に行けばいいんでしょうか。


さて、今週も頑張って参りましょう。


rule

先日はカプコン社の大型タイトル、モンスターハンター・ポータブル・3。(以下、MHP3)
上記大ヒットゲームのPS3版リリースが発表されましたね。
400万本超えという国産ゲームとしては空前の大ヒットとなった本作でありますが、
PS3ハイデフ画面にてのプレイも又大迫力でありましょう。

ところで、業界以外の方の間ではあまり知られていない事かもしれませんが、
先日、次期PSPとして発表された「NGP」。高性能なPSPという位置付けで構わないかと思いますが、
このNGP上にてMHP3が動作しているデモが一部にて公開されましたね。

加えて、今回のPS3ハイデフ版の発表。
その全ての機種にて、元のPSP版を完全再現しさらにハイデフ化等が行われ、
色々な機種にて全く遜色なく動作している様、今回はこの点に注目してみましょう。


MHP3は何故こうもサクサクと色々な機種にて展開発表され、
殆ど時間をかけている様子も無く、短期間にて発表できるクォリティにまで到達しているのでしょう。

これは、まさにマルチプラットフォーム化の恩恵なのであります。

以前より何度か展開させて頂いております、アプリプログラミングにおけるマルチプラットフォーム化のススメ。
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1
関連シリーズものと致しまして、上記エントリーも併せてご覧頂けましたら幸いです。


本BLOGにてエントリーの際に幾度となく強調して参りましたが、
ベースとなる考え方は一つ。アプリケーションコードからの依存性排除が大変重要であります。

仮想入力デバイスによりプレイヤーを移動させるというコードは、
どんな機種でもビルドさせられる様に実装する抽象化したレイヤーへ配置、
「仮想入力デバイス」の中身は機種毎に実装していく事になり、それがPSPならばアナログスティック、
PS3ならば「左側のアナログスティック」等の様に、機種依存レイヤーにコーディングしていきます。

移動したプレイヤーが剣を振り、敵にヒットした際にダメージはこれこれ。
装備をナニナニに変更した場合防御力は幾らになる、等といった、
アプリケーション本体となる部分は全て抽象化コードとして実装する事が可能な筈であり、
またそうするべきで在りましょう。

平行し、機種に依存する部分をレイヤー化しておく事がとても重要で、
開発当初は展開予定機種が例え1機種に限定されていたとしても、
レイヤーを分けておく事で全体設計方針が明確になり、
後に手間が省けるという意味以上の合理性をもたらします。


MHP3の例を見てみましょう。
カプコン社内にてどの様な運営方針の展開があったかは判りませんし、その事は本質とは関係在りませんが、
PSP版MHP3をNGPへ展開するには、NGP版の機種依存レイヤーコードを追加実装すれば良く、
PS3版においても同様です。
また、カプコン社はどう控えめに見てもそういったマルチ展開スキルの非常に高いメーカーであります故、
その設計指針も大変高度に合理化、明確なルール化が施されている事でありましょう。
故に、こうも短期間にてアプリケーション完全移植版が次から次へと、
それこそは公式クォリティにて発表出来ているという点に疑問の余地は全くありません。

PS3版MHP3においては、PSP版セーブデータとの間にて相互運用が可能という発表がありました。
これを、単に「便利ですね」で終わらせてしまう事は簡単でありますが、
プログラマから見ればこれは、アプリケーション抽象レイヤーにてバイナリレベルの互換性が実現されているという事であり、
それはつまり、MHP3が純然たる抽象化アプリケーションであるという事実に他なりません。

これは推測でありますが、恐らくはかなり高い確率にてWindows版のMHP3も存在している事でしょう。
主開発はWindows版で行う形が最も合理的ですし、無駄も少ないですからね。
まあ、流出にだけは気をつけて欲しい所ですが、知的好奇心の範囲にて一度お目にかかりたいものです。

合理性を追求していくという事、その事から得られる優位性やチームの利便性向上、
これらからやり甲斐や快感を得られる様になれば、貴方も最前線プログラマの仲間入り、なのです。


rule

そういった意味を踏まえ、個人にて展開するiOS系アプリ制作におきましても
マルチ化を導入していく事は大変有意義でありますし、又、そうするべきでありましょう。

ゲーム以外のアプリにおいてもマルチ化していくとなりますと、
これは流石にフレームワーク作りがとても大変ではありますが、
一度に全部のUIを実装するのでは無く、また初めから完全な形を用意する必要はありません。
アプリの一部へその機構を導入する事も、大変良いアプローチであると思います。

拙作、「まりも育成」に関しましては、パラメータ進行部分は抽象化レイヤーにてコーディングしてあり、
その成長過程等はWindows上にて確認出来る様に実装してありますよ。


これからは、兎にも角にもマルチ化が進む事でありましょう。
自分自身まだまだ興味のつきない分野でもあります故、今後もエントリー組んでいけましたらと思います。



rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:■■■ニュース!(ゲーム&業界)■■■
Genre:ゲーム

comments(0)|trackback(0)|プロが語るゲーム開発|2011-05-30_13:40|page top

プログラマーは歯が命。愛用ツールは秀丸
2011-05-24 13:48



靴を作る道具を買いに行く為の靴の無い靴職人が街に溢れかえっている様な、
はたまた除湿棒を湯船に落としたかの様な、倦怠感メーターが常にMAX梅雨入りで御座います。
「後ろから吹く風」に継いで嫌いな事象「湿気」。
カビキラーに生えたカビに、心理フリーズ&サイコロックをかけ続けられているTeamDyquemで御座います。
皆様こんにちは。

最近はアレですよね。世の中禁煙ブームで御座います。
かくいう自分も禁煙開始より早4ヶ月。禁煙というよりも絶煙の決意ではおりますが、
禁煙するとメシが旨い」でありますとか、「肌の調子が良い」等という話を聞いておりましたものの、
自分の感じる限りそんな事は特にありませんねぇ。
苦しい想いを乗り越えて禁煙に成功した先陣達のPR活動に思えて仕方がありません。
まあ、自分が鈍感なのでありましょう。とりあえずは、体重に気をつけていれば良いかという所でしょうか。


はて、さて。

梅雨時になるとですね、なんといいますか常時「明日から本気出す」状態に陥るのはデフォルトでしょうか。
アロエリーナも頬杖ついて、スナックのママの様な「フフン」とした鼻笑いを繰り出すレベルです。


はて、さて気を取り直して参りましょう。
よっこいしょ。

rule

合理性の追求が重要であるプログラマーをとして活動していくのであれば、
商売人や職人が商売道具に拘る様に、須く、少なくとも常用ツールには拘るべきでありましょう。

キーボードやモニタなど周辺デバイスは数あれど、
こういったハードウェアに関する部分では
多分に財力が物を言ってしまう味気の無い領域であるかとは思いますが、
ソフトウェアに関しては、これはもうセンスが色濃く出てくる所です。

職業プログラマとなった場合、それはもう毎日日夜四六時中使う事になるツール類。
合理的で手に馴染み、便利で軽快な物をチョイスして行くべきでありましょう。
昨今におきましてはシェアウェア系の充実に平行し、安価良質な物が増えてきていますので、
ここは一つ、TeamDyquem的愛用ツール類に関するエントリーと致しまして、まずはエディタ編を。


rule
TeamDyquem的愛用ツール:その1テキストエディタ

我々プログラマにとってみれば、何は無くともテキストエディタが無い事にはお話になりません。
Windows付属の「メモ帳」や「ワード」で全てのコーディングをこなす、
その様な拘りを持つ方ももしかしたら居るのかもしれませんが、
その頑なな心意気は素直に素晴らしい所でありながらも、一緒に仕事はしたくありません。

昨今では Visual Studio 内蔵エディタを愛用されている方を多く見かけますね。
あれはあれで良いと思うのですが、専用エディタも大変便利。

TeamDyquem的にはかれこれ15年以上にもなりましょうか、
秀丸エディタ」が最早、自分の体の一部となっていますよ。



現在でもバリッバリに開発進行中であり、その発展は留まる事を知りません。
常用しているツールのバージョンアップが止まっていないと言う事はとても重要でありますしね。
何より、その高機能プリは半端ではありません。

アプリという物は勿論プログラマが作るのでありますが、エディタというジャンルはやや特殊。
何しろ、プログラマがアプリを作る際の必須アイテムではありますが、
エディタを作っているのも勿論プログラマですからね。

自分の作っているエディタで、自分の作っているエディタを開発するという、
ニンともカンとも、鶏が先かヒヨコが先か的な、いやヒヨコだろ的な事態が発生します。

以下はマイクロソフトに関する有名な話なのですが、

Have you ever heard the saying "eat your own dog food" ?
I don't who was the actual author but
it's one Microsoft lives by when it comes of software.

マイクロソフトでは、Windowsを開発する際に、その開発中のWindowsを使用するという話。
この事を彼等は「ドッグフードを食べる」と呼んでおり、
開発中の発展途上段階にあり完成度が低くドッグフードの様な状態である段階から、
実際に自分達で食べてみて悪いところを徹底して洗いだそうという姿勢です。

テキストエディタ開発も又同様。自分の作るエディタを、自分の作っているエディタで開発する。
いずれのエディタメーカーやエディタ作者さんも、多かれ少なかれ同様にされている事と思いますが、
こと秀丸エディタに関しましてはまさに、「プログラマが自分のプログラミングの為に」作っている、
そうしたパワーと情熱をヒシヒシと感じるエディタなのであります。


Emacs派、XCode派、色々な拘り派がいらっしゃると思いますが、
もしも、特にエディタを定めてはいないという方は、
お気に入りのエディタ派閥へ属し、とことんまで使い倒してみるのも楽しいですよ。

さて、貴方は何派でしょうか。



rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:プログラミング
Genre:コンピュータ

comments(0)|trackback(0)|プロが語るゲーム開発|2011-05-24_13:48|page top

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
2011-05-16 13:40



それは幾ら何でも性急に過ぎるのでは無いでしょうかとの苦言に舞う、早くも初夏の装い関東平野。
日差しと気温を気にした服装で外出すれば冷や雨。寒いかと思えば初夏。
そこら辺りを歩くカニも、壁をグーで殴りだすレベルでは御座いますが皆様如何お過ごしでしょうか。
世界で一番エビが嫌い。TeamDyquemで御座います。皆様こんにちは。

最近アレですよ。
かなり久しぶりにスターウォーズをEP1より観なおしているのですけれども、
10年近くも前の映画とは思えない程の美しいCG。色褪せない壮大なストーリー。
世界中を魅了した作品が彩るその世界観に時間を忘れて浸っておりましたが、
フォースがドラえもんのポケット並に万能過ぎて集中出来ません。
あの力のもたらす影響が気になりすぎて、いずれ、
キャベツの値段暴落もフォースの力だと言われる事でしょう。

いや、大好きな作品です。


rule

さて、マルチプラットフォームネタ第4弾で御座いますが、
前回に引き続き、マルチにとどまらない抽象化ネタとしてエントリーを構成してみました。

以前のエントリー
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3

シリーズエントリーと致しまして、上記も併せてご覧頂けましたら幸いです。


親子関係」についてのよもやま話を一つ。
又それに留まらずエントリー末筆におきましては、
前回の可変長フレームレートネタとの融合への布石として締めくくりました。

なんだか、エントリータイトルがどんどんと本質から乖離している気がしないでもありませんが、
勢い重視という事でご容赦頂けましたらと思います。

さて。


rule
階層親子構造を抽象的に実装する

ゲームに限定された話ではありませんが、種々インスタンス群は場合により
階層的に管理する形がピタっとはまるケースが少なくありません。

ここで言う「階層化」とは所謂親子構造の事であり、
ゲーム寄りの技術として比較的一般的なものの一つに、
キャラクターのボーン構造等が挙げられるでしょう。
背骨や大腿骨、腕や指など、人体骨格構造をデータ化しキャラクターの姿勢を管理する
世界的にごく一般的な手法ですが、階層化を学ぶ上においては大変判りやすい例でありましょう。

例えば首の骨や腕の骨は、背骨の「子供」という位置付けであり、
背骨が移動すれば、首や腕は自動的にそれへ追従されるという親子関係が形成されています。
また、首と腕の関係も重要であり、この二者は背骨の子という関係において共通しており、
つまり「兄弟」として表現する事が可能です。
実際のコード実装においても、「兄弟」として管理する為の幾つかのメソッドに包括されます。


コーディング技術というよりは寧ろ概念的な話ではありますが、
この「階層化」の歴史は非常に古く、また用途も多岐に渡り、
ゲーム設計という観点に限らず、広く大変に重要な技術であります。

OSが管理するスレッドにおいてもこの概念は導入される事が多く、
例えばあるアプリケーション。そうですね、それが仮に家計簿ソフトであるとして、
メインウィンドウへ収支一覧が表示されており、これをメインスレッド。
その子供として金額入力ウィンドウ等が子供のスレッドとして駆動しているケースを仮定。
この場合、メインスレッドが一時停止されれば金額入力ウィンドウ等も停止
破棄されれば一族郎党抹殺よろしく、合理的に関連スレッドが全て破棄されます。
金額入力ウィンドウの更に子供として、「前借り」ボタンや「臨時出費」ボタンなど、
機能的に階層化した個別の要素を追加する事も勿論可能であり、
メインのスレッドにより何らかの事象にて「金額ウィンドウ」だけが一時停止されれば、
その配下にあり、本質的に「金額ウィンドウ」と同様に一時停止してほしい前借りボタン等は
自動的且つ能動的に一時停止されるという仕組みです。


ややお堅い実装の話になっておりますが、この技術はゲームとも非常に相性が良く、
例えば何らかのアクションゲーム等における、そうですね、
ステージの終わりの大きなボスを仮定しましょう。
シューティングゲームでもアクションでも構いません。自由に想像してみて下さい。

ボスは非常に大型で、プレイヤーを倒そうと執拗に攻撃してきます。
攻撃方法は多種多様ですが、彼のもつ攻撃方法の一つは「」を放つ事。
更に「手に持った剣」を振り下ろす強力な一撃を持ち、
もう一つの手に持った盾」をかざし、こちらの攻撃を防ぎます。


ここで、このボスについて親子構造を考えてみましょう。
冒頭のボーン構造における「背骨」にあたる部分。親子関係で言えば長老クラスの第一世代。
ボス本体はこれに当たります。ボス本体がまずは自由に動作できる個体であると考えます。

ボスから放たれる「弾」。
いきなりイレギュラーでありますが、この「弾」は本体と親子関係を持たない存在です。
放たれた瞬間より本体であるボスとの因果関係は消失し、
ここでは「直線的に飛ぶ」という独自の法則にのみ支配される独立した個体です。

次に「剣と盾」。もうお判りですね。
彼等がボス本体の「子供達」と位置づけられ、この二者は兄弟関係にあります。
剣と盾にはお互いを拘束する様な因果関係はなく独立して駆動する事が出来ますが、
同一の親を持っている点で共通しています。つまり兄弟です。
盾が破壊されようとも剣の威力になんら変わりはありませんが、
親であるボス本体が倒されれば一族郎党共倒れるという因果関係が結ばれています。

この様に管理する事のメリットは多大であり、
例えば剣の制御プログラムの中へ「親が動いたら、剣自身の座標を更新する」ですとか
「親が死んだら、剣自身も自分が死ぬプログラムを動作させる」、
例えばこの様なナンセンスなプログラムを書く必要から解放される事を含みます。

このコーディングの何処がナンセンスであるか。
それはつまり合理性という点に集約されるわけでありますが、
プログラムとは常に須く適者担当に妥当なモジュール設計を志すべきであり、
つまり、あるモジュールの仕事はそのモジュールだけが知っていれば良く
「親が死んだら自分はこうする」等の様な画一的その場処理はいずれ、
他者の状態を調べるというコード群の山を築く事になるでしょう。

こういった構造的な挙動は全て、統一した仕組みに組み込んでしまうという方針を立て、
剣のプログラムには剣だけの処理、例えば剣と地面の接触判定等に特化させる形がスマートであり、
剣自身の制御が不要になるタイミングを判定するのは、剣自身ではなく、
それが身を委ねているもう一つ大きな仕組み、つまり「親子関係システム」に黙って一任する
そういった形が合理的でありましょう。


rule
実装

さて、タイトルの通り本エントリーもマルチプラットフォームを元来視野においており、
その実装方法が大変重要になってまいります。

こういった概念的な仕組みというものは須く抽象的に実装するべきであり、
機種や環境に依存させない事が大切です。
本エントリーにて取り上げた「親子関係」。
実装方法はそれこそ多種多様な解釈があるかと思いますが、
ここでは、TeamDyquem的運用に沿った、実際に自分が使っているコード抜粋を紹介致します。



template< class T >
class THierarchy
{

public:

/// Initialize.
void Initialize()
{
mpParent = NULL;
mpSibling = NULL;
mpChild = NULL;
}

public:

/// 子供を追加
void AddChild( T* apParent, T* apTarget )
{
gAssert( apParent );
gAssert( apTarget );
gAssert( apTarget->mpParent == NULL );
gAssert( apTarget != apParent );
if( mpChild )
{
T** p = &mpChild->mpSibling;
if( *p )
{
// [p] を末端の兄弟へのポインタ迄進める
while( ( *p )->mpSibling )
{
p = &( ( *p )->mpSibling );
}
( *p )->mpSibling = apTarget;
}
else
{
*p = apTarget;
}
}else{
mpChild = apTarget;
}
apTarget->mpParent = apParent;
}

/// あるオブジェクトを一族から取り除く
void DetachFromParent( T* apSelf )
{
gAssert( apSelf, "apSelf is null" );
// 親が居る場合
if( mpParent )
{
// その親の直子が自分の場合
if( mpParent->mpChild == apSelf )
{
if( !mpSibling )
{
// 自分に兄弟が居なければ、その親の子は居なくなる
mpParent->mpChild = NULL;
}
else
{
// 自分に兄弟が居れば、その親の直子はその兄弟になる
mpParent->mpChild = mpSibling;
}
}
else
{
// 自分は、その親の直子の兄弟の場合
T** p;
{// 自分の一つ上の兄弟を探す
p = &mpParent->mpChild;
while( ( *p )->mpSibling != apSelf )
{
p = &( ( *p )->mpSibling );
}
}
// その兄弟の1つ下の兄弟を、自分の1つ下の兄弟にする
// ( 自分が末っ子だったなら、その兄弟が末っ子になる )
( *p )->mpSibling = mpSibling;
}
}
mpSibling = NULL;
mpParent = NULL;
}

/// 必須インターフェイス
public:

/// 子供を追加 (純粋仮想関数)
virtual void AddChild( T* apTarget ) = 0;

/// あるオブジェクトを一族から取り除く (純粋仮想関数)
virtual void DetachFromParent() = 0;

/// あるオブジェクト「のみ」を一族から取り除く (純粋仮想関数)
virtual void DetachSelf() = 0;

/// アクセサ
public:

/// Kinship ties.
T* pParent() const
{
return mpParent;
}

/// Kinship ties.
T* pSibling() const
{
return mpSibling;
}

/// Kinship ties.
T* pChild() const
{
return mpChild;
}
};

/// 階層構造化するクラスの定義は、こんなカンジで
class CTest :
public THierarchy< CTest >
{
public:
// 純粋仮想メソッドのオーバーライド
virtual void AddChild( CTest* apTarget ){ THierarchy< CTest >::AddChild( this, apTarget ); }
virtual void DetachFromParent(){ THierarchy< CTest >::DetachFromParent( this ); }
virtual void DetachSelf(){ THierarchy< CTest >::DetachSelf( this ); }
private:
char* mpSample;
};

/// 使用例
void Test( CTest* t )
{

// 兄弟が居れば呼ぶ
if( t->pSibling() ){
Test( t->pSibling() );
}

// 子供が居れば呼ぶ
if( t->pChild() ){
Test( t->pChild() );
}

}



全てを掲載するには長いコードでありましたので抜粋と致しましたが、
付加機能等は各自ご想像頂けたらと思います。


rule
さらなる発展。可変長フレームレートと親子関係の融合

以前のエントリー
→「ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3

にてご紹介させて頂きました、可変長フレームレートによるアプリ時間進行管理。
この技術、及び本稿における親子階層。

この二者の融合は、更なる多大なメリットをもたらします。
次回は、この辺りのお話について触れてみたいと思います。



なんだか、エントリーがどんどんと長くなっている気がしなくもありません。
もう少し完結に書ければ良いのですけれど。。
これからも勢い重視にはなるやもしれませんが、お付き合い頂けましたら幸いで御座います。

堅っ!




rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:プログラミング
Genre:コンピュータ

comments(0)|trackback(0)|プロが語るゲーム開発|2011-05-16_13:40|page top

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
2011-05-09 14:08



ゴールデンな一週間が過ぎ去って久しい昨今。皆様如何お過ごしでしょうか。
過ぎ去って久しい感じがするのは本業に苛まれていたからであると信じたい所ですが、
精神的本業のアプリ制作への時間配分がなかなか思う様にはいかず、
そろそろ、ヤフオクにて「精神と時の部屋の入場券」を本気で探し始めたTeamDyquemです。皆様こんにちは。
1万円までは即決します。

東十条を「ひがじゅう」と呼ぶのは古来より定められたアラフォーの呪縛かもしれませんが、
それを即座に「僻み充実」の略と勘違いできる超絶ドM後輩の発言に、今日も心の緑地が荒らされる気分。

以前に少し紹介したアプリ作成仲間でもあるこの後輩。
彼もまたマルチプラットフォーム化を施したエンジンを漸く完成させ、
本格的にアプリ本編開発を開始した模様。
リリースの暁には、本ブログにても改めてご紹介させて頂けましたらと思います。


rule
マルチプラットフォームネタと可変長フレームレート

さて、マルチプラットフォームネタ第三弾で御座います。
今回は、マルチにとどまらないネタとしてエントリーを構成してみました。

以前のエントリー
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
シリーズエントリーと致しまして、上記も併せてご覧頂けましたら幸いです。


さて。


マルチプラットフォーム化により、iOS系デバイス、iOSシミュレータ、
及びWindows環境にて同一の共通コードをビルドし実行する事が出来る様になってくると、
そもそも実行速度に違いのある幾多のデバイス上でありますから、
同じゲームでも環境によりフレームレート差違が生じるケースを考慮する事になるでしょう。

昨今では一言にiOS系デバイスと言いましても、iPhone3G辺りの古いデバイスから最新のiPhone4やiPad2等、
そのデバイス処理能力にも大きな差が生まれています。
古いデバイスをサポートしないという選択肢も存在しておりますが、それだけでは無く、
アプリケーションのフレームレートを動的に柔軟に設定出来る様、
エンジンの根本から考慮し設計していく事は様々なメリットをもたらします。

フレームレートとは1秒間に何回画面を更新するかという数値であります。

その上で例えば、秒間60回の更新処理を想定している様なゲームにおいて、
その処理完了が60分の1秒以内に合わずに、
結果処理落ちと呼ばれる現象が発生し画面がスローになってしまうパターン、
昨今では多くありませんが、こうしたゲームを見かける事もあるかと思います。

昨今の様に様々なデバイスが存在すると、例えばiPhone4ではスムーズに動くが、
iPhone3では処理落ちが発生しスローなゲームになってしまうという可能性が出てきます。

可変長フレームレートとはつまり、こうしたケースに対応する為の手法の一つでありまして、
1フレームの処理に対し時間経過を測定し、これをDT値と呼んだ上で毎フレーム運用します。
例えばあるフレームにおいてその処理が問題なく60分の1秒で完了しているならば、
それを 1.0 という係数へ正規化しDT値とします。
30分の1秒かかってしまったならば、その時は2.0という係数を算出しやはりDT値とします。

この上で。

例えば、ある敵キャラクターが毎フレーム1ドット移動する様な処理になっているとしましょう。
この敵キャラクターの座標値を正直に +1 ずつしていると、
処理落ちした際には当然スローな動きになってしまいます。

ここでDT値が登場します。 敵キャラの座標 += 1; としてる様な箇所は全て、
敵キャラの座標 += 1.0 * DT; という形に統一します。

ゲームが進行するありとあらゆる箇所にてこのDT倍率付加を採用するわけですね。

座標だけではなく例えば100秒でタイムアップとなるゲームならば、
int timer = 100*60;timer--; としていたかもしれませんが、
可変長フレームレート環境下ではこの処理は上手く行きません
float timer = 100.0f * 60.0f; とし、 timer -= 1.0f * dt; とする事で、
フレームレートに依存せずにタイマーを進行させる事が可能になるわけです。

この様に実装する事により、
デバイスの処理能力に依存せずどの機種どの環境においても、
又、処理落ち時においても画面の更新頻度が下がるだけで、
本編の進行速度自体は一定となるゲームが制作可能となるのです。


rule
実装例

さて、具体的とまではいきませんが簡単なサンプルを。

まず、例えば下記の様なゲーム本編管理クラスの一部抜粋を想定します。


class CGame
{
public:
// ゲーム内容の進行
void Progress( float aDT );
};


このクラスを、各機種のメインループにてドライブしていくわけですが、
例として iOS版、 Windows版のメインループサンプル抜粋をご覧下さい。


Windows版

MSG msg, msg.message = 0;
while( msg.message != WM_QUIT )
{
if( PeekMessage( &msg, NULL, 0, 0, PM_REMOVE ) )
{
TranslateMessage( &msg );
DispatchMessage( &msg );
}
else
{
// ゲーム部分進行
const float dt = 前回の描画から60分の1秒を1.0とした経過時間;
// ↑処理落ちいない通常時に1.0となる様な値
CGameのインスタンス.Progress( dt );
// 描画
direct3dのデバイスインスタンス->
Present( NULL, NULL, NULL, NULL );
的な処理
}
}



iOS版

// タイマー駆動開始
NSTimer* animationTimer =
[ NSTimer scheduledTimerWithTimeInterval:
( NSTimeInterval )( 1.0 / 60.0 )
target:self selector:@selector( drawView: )
userInfo:nil
repeats:TRUE
];

-( void )drawView:( id )sender
{
// ゲーム部分進行
const float dt = 前回の描画から60分の1秒を1.0とした経過時間;
// ↑処理落ちいない通常時に1.0となる様な値
CGameのインスタンス.Progress( dt );
// 描画
[ renderer render ]; 的なEAGLView的なクラスの処理
}


これらはあくまでも単純なサンプルではありますが、
本実装する場合におきましても理論は変わりません。


rule
実装コストと、将来への展望

コストの問題等によりそういった処理は行わず、
単にiPhone3をサポートしないといった選択肢も存在してはおりますが、
それはあくまでも単に現在現時点に対してたまたま有効な解決策であったというだけであり、
エンジン設計という観点から考えるならば、
今後どの様なデバイスが突然登場しても対応出来る合理的な設計ポリシーを、
予め敷設しておくに越したことはありません。


rule
さらなるメリット

現時点にてiPhone3等の比較的低速なデバイスにおいても、
例えば特に処理落ち等が発生していないプロジェクトがあるとしましょう。
この案件へ可変長フレームレート実装を施す意味は無い様に思えるかもしれません。

しかし、フレームレートが可変する事のないケースにおいても、
DT値ベースでの運用は多大な付加価値をもたらします。

進行速度の任意可変を施すことが出来るという事そのものが既に大きな機能的優位性であり、
寧ろ、こちらが真のメリットであると言っても過言ではありません。



格闘ゲーム等で、激しいコンボ中に攻撃がヒットする度画面が一瞬ストップする演出、
敵キャラクターのHPを全て奪いスローになりながらトドメの技がアップになる演出、
映画マトリックスの様に、登場人物は空中でスローになりながらもカメラは等速に進行する様な演出、


これらは全て、進行速度任意可変により実現可能な技術であり、
DT値運用を用いている場合のメリットです。

フレームレートが可変しなくてもDT値は任意に生成する事が出来ますからね。
その発展系としてキャラクター毎にDT値を持っても構わないわけです。
それぞれのDT自体をツリー構造で繋ぎ、システム抜本にマスターDTを用意。
ここへフレームレートによる可変長性を反映、枝のDTではそれぞれが演出用に値を制御。
こうする事で全てが一貫したツリーDT運営が可能です。

また、開発時やデバッグ時の繰り返しテストする冗長なシーンの効率向上として、
全体早送り機能」や「全体スロー機能」なんて事も簡単に実装する事が出来ます。

根本のDTを0にすれば、既にそれはポーズ機能です。

これらの手法はTeamDyquem的お気に入りでありまして、
商業ゲームにおいても10年以上実装してきておりますよ。



さて。GWが明けて一気に弛緩ムードの日本列島で御座います。
次の祭日はいつなのだろうと思うと泣きたくなりますけれども、頑張って参りましょう!




rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:プログラミング
Genre:コンピュータ

comments(0)|trackback(0)|プロが語るゲーム開発|2011-05-09_14:08|page top

iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
2011-04-20 13:21



昨今まれに見る飛散量を記録した本年の花粉事情もどうにか終息の目が見え始めたその矢先、
最近では暖かい日も続き、
ああ今日のそのハーフコートは少し暑いかもチョイス間違えたかもね~
ああこれはもうジャケット一枚でも暖かいよね~

等と浮かれきった会話にも花が咲くそんな季節。

翌日気分揚々本当にジャケット一枚で出勤してみれば、唐突に訪れた昨夜の極寒、雨、暴風
桜も散った4月の中旬にまさかの両奥歯ガチガチ手悴みで、震えながら帰宅。
翌日は風邪気味というアイデンティティ・クライシスに対処しきれないTeamDyquemで御座います。
皆様こんにちは。


暑さ寒さと言えばアレですよ。

暑さ寒さもひがんまで
中国に古くから伝来し季節を司るとされる仏教神「比嘉(ヒガ)」。
そして、比嘉が巡礼の際に旅路を共にした愛馬「ひがん馬」。
暴虐や色欲により比嘉の怒りを買い、異常気象から不作の憂き目にあった多数の農民が、
「ひがん馬」に祈りを捧げながら、猛暑極寒の過ぎ去りを待った事が由来となった言葉です。
夏の猛暑や冬の極寒も、ひがん馬に祈りを捧げれば堪え忍びやがて新しい穏やかな季節が来る。
なんとも感慨深い意味が込められておりますね。

呼吸をするかの様に嘘を吐く。TeamDyquemで御座います。
皆様ごめんなさい。

過去エントリーより引用してまでネタを展開するのもどうかと思いますが、
さて、心ゆくまでネタさせて頂いた所で本題に入りましょう。


マルチプラットフォームネタ、前回のエントリー

→「ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1


にて、マルチプラットフォーム開発について触れてみました。
スクリーンショット等を交えキャッチーなエントリー構成を目指してみましたが、今回はその基礎部分。
前回に比較してやや地味ではありますが、設計思想についてお送りしたいと思います。


rule
全機種共通アトミック型の定義

マルチプラットフォーム開発を行う場合、アプリ内大部分のコードが全機種でビルド出来なければなりません。
「機能」を示す種々の定義を行い、その実装部分のみを機種の数だけ存在する機種依存層へ配置しますが、
フレームワークの大部分も又、全機種でビルドさせる必要が御座います。

この様に、機種非依存性について留意しながら実装を進めていくわけですが、
この時、機種間における差違について留意する事が大変重要となってまいります。

例えば「 int 」という型を例に考えてみましょう。

C言語の基本的な型でありますが、言うまでもなく符号付き整数ですね。
これが符号の付いた整数であるという定義については何ら考慮する必要はなく、
それがそうであるとして実装、運用していく分には通常問題は起こりません。

しかし、マルチプラットフォームでは事情が異なります。
例えば以下のコードにて検証してみましょう。


for( unsigned int lp=0; lp<70000; lp++ )
{
printf( "%u\n", lp );
}


0から始まる数値を7万回表示するプログラムですね。
現代では大抵の機種において正しく動作致しますが、
20年前とかのコンピューターでは6万5千回を少し超えた辺りから意図しない数値へ変化します。

誰が20年前のPCを使ってるんだよ懐古厨かYO!その様に思うやもしれません。
では、以下のコードではどうでしょう。


for( unsigned int lp=0; lp<4300000000; lp++ )
{
printf( "%u\n", lp );
}


昨今浸透し始めている64ビットOS対応等に向けてビルドを行った上で実行した場合は正しく動作致しますが
普通のWindows環境向けでは、カウントが43億回に到達する少し前から値に変化が生じます。

だから、誰が43億回も数を表示したがるんだYO!
その様に思う気持ちも無理はありませんが、論点はそこではありません


この問題について正しく理解する為には、機種依存、コンパイラ依存という概念を考慮しなければなりません。
この例においては「int」という型のビット長に関し、C言語が定める定義に曖昧性が存在する事へ着目します。
言わずもがな、C言語におけるintのビット長は、アーキテクチャへ準拠した上でコンパイラに依存します。
20年前の16ビットCPUを搭載したPCならば16ビット長となり、intが表現できる正の整数値の上限は65535。
昨今の32ビットWindows環境であるならば同様に32ビットとなり、intの幅は42億9496万7295まで広がります。
ですが、それぞれ7万であったり43億という数値は表現出来ません。

この問題の本質とは、その様に大きなintの数値をどう扱うか、そんな事では全く無く、
機種ぞれぞれ同様に int と表記した場合においても、
機種によっては動作に差違が生じるという事実そのものであります。

マルチプラットフォーム化という着地点を考えるならば、
この様なタイプに属する注意点が大なり小なり多数存在しており、
その全ての箇所において、言語特性を理解し正しく隠蔽、汎用化していく事が重要であります。

例えば今回のintのケースは本当に極端でありますが、理論的な対処としましては
ご自身のフレームワークにおいて、「機種ごとに」以下の様なアトミック型を定義する事が合理的でしょう。


typedef signed short s16;
typedef unsigned short u16;
typedef signed char s8;
typedef unsigned char u8;
typedef signed int s32;
typedef unsigned int u32;



「atomic:アトミック」とは、微細なさま、これ以上分割出来ないという意味で、
この例では数値を表す最小構成の型定義を指しています。


s16やu32等の命名ルールについてはお好みで構いませんが、ビット長を含んだ形になっている点が重要です。
古今東西どんな機種に移植したとしても、s16は符号付き16ビット整数であると保証します。
この上にこれらを用いてアプリを構築していく事で、移植性の高い堅牢な実装と運用への貢献が可能となり、
この様な基礎実装を基軸とした上で、この思想そのものをフレームワーク詳細にまで発展させていくわけです。

例えば3D系のゲームにおいて、
そのアプリのコードより「このシーンの視野角は41度である」と指示が在った場合、
その実行環境がiPhoneやWindowsであろうが、PS3であろうが、
横幅解像度がiPhoneの480ドットとPS3の1920ドットの様にどれだけ違っていようとも、
フレームワーク内部の機種依存層にてその視野角が必ず41度へ帰結する様に数式を構築する事が重要です。
画面の解像度が違おうとも、又ポリゴン数やテクスチャの精細さが機種毎に違おうとも、
「同様のシーンを、クォリティ差とは独立して同様にレンダリング出来る」事。
これがマルチフレームプラットフォーム化の絶対的な優位度であり、
合理性に貢献出来る事実であり、突き詰めればそれが唯一の存在意義でありましょう。

アプリのコードは1つだけ存在していれば良く、そのコードをiPhoneに持って行こうがPS3に持って行こうが、
各機種フレームワークはすべからく、同じアプリを全機種差違無く駆動させられなければならないという事ですね。


rule
次回

さて、次回は DirectXとiOSにて採用されているOpenGLES間において、
実際にポリゴンをレンダリングするコードの差違等に触れてみたいと思います。たぶん。


rule
備考

今回のエントリーにおきまして、64ビットOSへの移植に関する話題が少しありましたが、
例えば32ビットintと64ビットint等に関する実際の運用に関しましては、

[__w64キーワード] [/Wp64] [64ビット移植への対応]

この様なキーワードにて検索してみると、色々と調べる事が出来るかと思います。




rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:プログラミング
Genre:コンピュータ

comments(0)|trackback(0)|プロが語るゲーム開発|2011-04-20_13:21|page top

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1
2011-04-12 13:30



新作、「ネコりす」をリリースさせて頂き5日が経過。
なかなかのご好評を頂き、また本Blogへ足を運んで下さる方も増え嬉しい限りで御座いますが、
胎児の頃よりの天の邪鬼な性格が派手に災いし、ここに来てまさかの精神的萎縮。
むせかえる様なバラになるよりも、本当はアスファルトにて見苦しいまでに生きさらばえたい
根っからの雑草体質TeamDyquemで御座います。皆様こんにちは。

さて、今回のエントリーはやや長くなっておりますもので、
ネタは切り上げて、本題に入りましょう。

本当はネタだけで500行オーバーの長文エントリーを続々と展開して参りたい所でありますが、
誰も来なくなったBlogを運営する事になんの意味があるのだという、未来で起きた悩みを今解決


ネタは切り上げて、本題に入りましょう。



rule
業界的なマルチプラットフォーム化のトレンド

TeamDyquem的なiOSアプリ開発環境を、まずはさわりだけですが簡単にご紹介します。
iOSアプリ開発環境、それはつまりMacとXCodeの事じゃないのか?
その様に思われがちでありますが、その通り。
いや、その通りなのですがそれだけではありません。

本Blogタイトル直下にも掲げております通り、わたくし。
本業はPS3やXBox360、その他諸々のゲーム機やPCにてゲームを制作している職業プログラマです。
その様な背景の上、本業にての開発スタイルや流儀の様なものは個人的に身についているものであり、
これらを踏襲継承しながら個人的にiOSアプリ等を制作しております。

現代ゲーム開発におきましての手法やスタイルは、それはもう種々ありますが、
何と言いましても昨今の世界的トレンドの代表的スタイルといたしましては、
まずはマルチプラットフォーム化による合理化が挙げられるでしょう。

ソニーやマイクロソフト、任天堂を筆頭とするプラットフォームホルダーは勿論、
それらから直接出資されているファーストーパーソンメーカー
例えばアンチャーテッドシリーズでお馴染みのノーティードッグ社等、
これらの会社群は各社が携える代表ハードウェアに特化した設計開発を行い、
その高い技術パフォーマンスを売りに製品展開を行っておりますね。

転じてセカンドパーソンや一般メーカー、ひいては私の様な個人開発者に至るまで、
大抵のメーカーや開発者は複数のプラットフォームを手がける事も珍しくは在りません。
一般ゲームメーカー事情としてお話するならば、それはあるタイトルを複数の機種にて市場展開を行う例でもあり、
その本質としてまず、我々プログラマが複数プラットフォーム同時開発の土台を構築しなければなりません。

その辺りの深い話はまた別の機会に譲ると致しまして、
本エントリーにおきましてはもう少しライトになりますが、
iOSゲームアプリに特化する事が多い手法に触れて参りましょう。


rule
iOSゲームアプリをWindowsで制作

単純にWindows環境に慣れ親しんだ方が、慣れないMacだけでは中々効率が上がらないですとか
チーム全員にMacを支給するのは大変なのでアプリ部分はWinで分担制作し、コアな所をMacでといった
ベンチャー系企業さん等で求められるインフラ展開例といった需要があるかもしれないお話です。


実機確認や最終的なビルド、Appleへの提出におきましてMacは必ず必要です。
ですが、チーム全員が常にMacで作業するという形しか選択肢が無いというのも堅苦しい話。
ここはプログラマ的に合理的に解決していきましょう。


詳細は、また別エントリーにて用意していきたいと思いますがまずは概要を簡単に。
Cocoa Touch とOpenGLESを根底に置いたアプリの基幹部分はMacでビルドします。
同時に、DirectXをベースとしたWindows版の基幹部分を開発し、Windowsでビルドします。
この段階では、双方に互換性は必要在りません。言語はC++/ObjectiveC++混合になるでしょう。

この上で、インターフェイスレイヤーをC++(若しくはC)にて構築します。
もの凄くシンプルな例を一つ挙げましょう。

ファイル:draw.h
void gDrawSprite( struct tSprite );

上記の様なヘッダファイルを用意。
C言語のグローバル関数でも何でも良いので、
ここでは例えば2Dスプライト(画像)を表示する関数を定義します。

この「定義だけ記した層」というものを想定し、これをインターフェイスレイヤーと呼びます。
このレイヤーは、MacでもWindowsでもビルド対象に出来る様にし、
どちらかの機種に依存したコードを存在させてはいけません。

この上で、draw_ios.mm / draw_win.cpp の様にソースコードファイルを用意し、
各機種毎に gDrawSpriteの「中身」を「実装」していくわけですね。
これらは各機種毎にビルド出来れば良く、機種に依存したコードを存在させて良いレイヤーです。
TeamDyquem的にはこれらを機種依存層、「アブストラクトレイヤー」と呼んでいます。


rule
そうすると、どうなるの?

こんな事が出来る様になるのです。


以下は、TeamDyquemにて実験的に開発中のプロジェクト画面写真ですが、
基本的にはゲームの主な部分は全てWindowsで開発調整しており、
定期的にMac上でもビルド。iPhoneエミュレーターで実行したり、iPhone実機に持って行ったりしています。
実際の画面写真をご覧下さい。Windows上でもiPhoneシミュレーターどほぼ同様の操作が可能です。
ゲーム本編はこの様にWindowsで作ってしまう手法、これが楽なので気に入っています。



個人的にMacも大好きでありますが、Windowsに慣れている度合いが大きい為この様な環境を整えました。



また、例えば手持ちのWindowsノートPCでも開発出来ますし、
更に、誰かに助っ人を頼む際にもWindowsビルド環境だけがあれば良く、
それこそVisualStudioのアカデミックパックとネットブックで超安価な開発環境も用意出来ます。
いずれにせよ、本ビルドは自分のMacで行いますしね。

先日リリース致しました新作「ネコりす」も
→「紹介記事

Windows上、Mac上双方で元気に動作しておりますよ。




マルチプラットフォーム系ネタは中々にヘビーですので、
今後も少しずつエントリー組んで参りたいと思います。


オマケですが、
TeamDyquem的にはMacとWindowsのモニタをこんな風に並べて開発していますよ。
Mac、Windowsそれぞれでビルドされた同一のアプリを同時テスト出来ている様子ですが、
なかなか効率がよく、気に入っております。



rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:プログラミング
Genre:コンピュータ

comments(0)|trackback(0)|プロが語るゲーム開発|2011-04-12_13:30|page top

普通に本職ゲームプログラマですYO
2010-08-16 01:06

かなりビックリしてしてしまう勢いでアクセス数が増えている本blog。
AppBank様に紹介頂いてからは更にうなぎ登りで、
実際には嬉しい悲鳴というよりも、こんな色の気も無い技術blogで恥ずかしい悲鳴です。

と言いつつ調子にのって、数日前からTwitter貼りました。
基本、目立ちたがり屋です。すみません・・。


開設当初と比べると、数百倍にまで跳ね上がってしまった日刊アクセス数。。。
開発者様から頂くご訪問が多い感じがしますけれども、最近は一般のユーザー様から感想等も頂いています。
有り難う御座います!

ああ、また変テコな事を書けなくなってしまった。書くけど。

そうそう。最近幾つかメールフォームにて頂いたのですけれど、
「本職はなにされているんですか?」系。

はい。がっつり本職現役ゲームプログラマです。
この仕事しかした事ありませんし、生涯職業として誇りもってますYO。

まあそうは言っても、iPhoneが余りにも楽しすぎて本業に差し支えない様にアプリ開発を楽しんでいる、
Team Dyquemで御座います。
売り上げUPやアクセス増加、なんだかモチベーション上がります。
有り難う御座いますね^^ これからも頑張ります。
rule

シリーズ記事まとめ

Aニュース、ガジェット通信 寄稿記事

『連載.jp』寄稿「ゲームプログラマが語る「プロ棋士に勝ったAIは、タクシー基本無料化をもたらす?」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ”買わない理由”がもたらす充足感と、開発者達の心理」」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る アップデート版に潜む開発者モラルハザード」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る ソフトやアプリと携帯ゲーム課金における経済行動学」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る。新しいゲーム機が定期的に生まれる理由」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 楽しさの仕組み ゲームメカニクス」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 3Dテレビとゲームの微妙な関係 その打開策」
『Aニュース/ガジェット通信』寄稿「ゲームプログラマが語る 無料アプリのビジネスモデルと舞台裏」
『Aニュース/ガジェット通信』寄稿「新発表ラッシュに見るクラウド大航海時代の幕開け」

■ゲーム制作初心者さん向け系

ゲームプログラマが語る。なんちゃってリードプログラマにはなるな!ゲーム造りで放棄してはいけない大切な事
ゲームプログラマが語る。今さら聞けないフレームレートに纏わる話。秒間60?16ミリ?
ゲームプログラマが語る。「浮動小数点」と商業レベルで上手に付き合う方法
「ゲームプログラマが語る。ゲーム制作初心者の方へ小ネタ「クォータービュー入門」」
「ゲームプログラマが語る。「正しい乱数」が彩る確率世界とエンターテイメント」
「iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」」
「iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ」

「プロのゲームプログラマとして、ゲーム製作に関する書評を」シリーズ

ゲームプログラマが語る書評:「MMORPGゲームサーバープログラミング」を読んでみた
ゲームプログラマが語る書評:「ゲームプログラマになる前に覚えておきたい技術」を読んでみた
ゲームプログラマが語る書評:「ゲームエンジン・アーキテクチャ」を読んでみた

■個人でも出来る、マルチプラットフォーム開発関連

ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その4
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その3
iPhoneアプリ作者が語る。マルチプラットフォーム化その2・アトミック型定義のススメ
ゲームプログラマが語る。iOSゲームをWinマルチプラットフォーム開発・その1

■リリースしました系

PASTEL-ORBIT/TeamDyquemアプリ第19弾。ローグライク決定版「隣人は魔王」をリリースしました。
TeamDyquemアプリ第18段。ご当地バトルRTS「埼玉クエスト」をリリースしました。近隣の県を滅ぼそう(*-_-*) 埼玉以外でも遊べます #47app
アプリ新作「ネコりす マカロン」をリリースしました
埼玉県ご当地アプリ、「タッチ the さいたま」をリリースしました #47app
アプリ新作「ひよこガーデン」をリリースしました
TeamDyquem新作。結構真面目なアクションパズル「ネコりす」リリース
iPhoneアプリ作者が、iアプリ「泡リス女子部 for iアプリ」をリリースしました
自作iPhoneアプリ改良版、「ネコがゴミのようだネ:アーケード」をリリースしました
iPhoneアプリ作者が、「まりも育成」for iモードをリリースしました
iPhoneアプリ新作 「ナタ・デ・ネコ」 をリリースしました
秋刀魚は関係ないけれど、新作「i-Wishbone」リリース
アプリ新作「ネコがゴミのようだ」。プロモ動画をアップしてみた
「泡リス 女子部」、販売開始
AppBankにまりも紹介記事が!

ゲームプログラマとして参加。ご当地47都道府県アプリプロジェクト #47app

□ビジネス系

ゲームプログラマが語るドコモiPhoneと、インフラから合法的に大金を抜くスキーム
ゲームプログラマが語る。秀丸エディタのビジネスモデル

■SFネタ系

ゲームプログラマがSFを語る。意識はどこからやってきて、死んで、そして何処へ行く?
ゲームプログラマが語る。気の遠くなるスキもない程の、宇宙の話
iPhoneアプリ作者が語る。流れ星に馳せる真実
iPhoneアプリ作者が警笛。どこでもドアの使い過ぎには注意
iPhoneアプリ作者が語るSETI理論。異星人さんは何処!?


人気ブログランキングへ

Theme:iPhone
Genre:コンピュータ

comments(0)|trackback(0)|プロが語るゲーム開発|2010-08-16_01:06|page top
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。