Google+

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

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

パステル オービット
.
new

TeamDyquem

Dyquem

検索フォーム

Twitter

全記事表示リンク

最新記事

アクセスランキング

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

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

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

ゲームプログラマと初歩物理。「泡」みたいな動きの接触判定ってどーするの?ルポ
2011-08-24 13:31



 「鼻ペチャなんて気にしないわ」って、別に気にする必要は僕も私も無いと思いますとも時代はもはや先進の一途、ネット華やかかりし個性溢れる現代に鼻ペチャ一つ気にしていてはクリエイティブな事なんて出来やしないどころか寧ろ衰退も不可避、自己主張と表現が最も重要な武器となる昨今寧ろ頼もしいけれど、いやいやそうでは無くて、「鼻ペチャを気にしない」という無味乾燥な主体を初対面冒頭に持ってくるその協調性の無さに関してはもう少し考えていこうよキャンディさん

 「意味の判らない書き出し」という大会があるならば、本年度の優勝は頂いた。

 暑い日が続きますが、如何お過ごしでしょうか。天気予報の警告を無視し傘を持たず、暴風雨に晒された翌日にまた猛暑。こんな惑星にはもうすっかり辟易している皆様こんにちは。
 良くも悪くも場自答増、いつだって二律背反TeamDyquemで御座います。


rule

 さて今回は、シリーズ化して参りましたゲームプログラマ初心者さん向けエントリーと致しまして、衝突判定について触れてみたいと思います。

 シリーズ企画と致しまして、以前のエントリー

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

ゲームプログラマが語る。宇宙に意識が生まれる仕組みと、バグテスト

ゲームプログラマが語る。竜田揚げと並列処理のススメ

 上記等も、中華屋さんのメニューの如しラインナップとして取り揃えて御座います。
是非併せてご覧頂けましたら、幸いです。幸いなのです。

 さて。


rule
お手軽実装。個性的な衝突判定処理

 ゲームプログラマを志し、若しくは興味を抱いた方ならば、少なからず興味をそそるであろう衝突判定プログラム。エンターテイメント系ソフトを彩る上におきましては、よもや欠かす事の出来ない技術であります故、それはもう古今東西種々語られ尽くしてきた感が漂っております。
 しかしながら、重要な技術でありますが故にこそ、一様に万能な解というものが普遍的に存在している訳ではありません。様々な効率化と工夫が重ねられ、現代の、それこそ星の数程の多種多様なアプローチが存在するに至っている訳でありましょう。

 線分や移動球と平面法線から数学的に解決していくという土台の部分に関しましては、言わば”通例”と呼ばれる、稼働実績の多い安定した手法を選択する事となります。しかしながら、例えば3D空間を自在に行動出来るアクションゲーム等にて、街並みを構成する建物の壁に接触判定を行うシチュエーションにおける、壁をこすりながらも進行を妨げない様なアルゴリズムは、通例とは言えそうですが、その実アプリ毎の個性として実装しなければならない一面を持っています。

 ま、堅い話になりそうな気配でありますが、ここは視点を例えば拙作脱力ゲーム群へ置き換えてみましょう。振り返ってみれば拙作アプリ達。「毬藻」だの「泡」だのが良く出てくるなと改めて思いましたが、所謂「柔らかくて丸いもの」に焦点を当ててみましょう。

 まず反例と致しまして、例えば何かが何かに当たったという情報だけを扱いたいのであれば、上記冒頭部分の様に数学的に一発で算出可能であり、それは衝突判定の根幹にある普遍的な通例に従えば事の足りる、あまり面白みのない話となりましょう。それが球であるならば、中心点からの距離と、双方半径の合計を比較すれば望む結果が得られるでしょう。しかしながら本エントリーにて扱う話題と致しましては、衝突を検知したその後のインタラクティブな展開を含めた「広義の衝突判定」と定めてみたいと思います。

 先に例を挙げました「柔らかくて丸いもの」とは何でしょう。拙作アプリに登場する「毬藻」や「泡」は想像に易しいかとは思いますが、風船やスライムの様な生き物も良い例でしょう。


 こうした物体、例えば「泡」がのんびりと漂いながら空間に二つ。
さてここから数秒後、どんな光景を想像しますか?


 二つの泡がユルユルと接触するとしましょう。
「割れる」ってのはナシです。話が終わってしまいます。泣きます。
 ここは、60分の1秒程にごくごく短いスライスした時間単位で考えてみましょう。まず、触れあう瞬間が訪れます。お互いに速度を持っていますので、触れあいながらも双方は更に食い込む様に進んでいく事でしょう。しかし、ある程度食い込んでいくとお互いの反発力に相殺され、今度は跳ね返って反対側へ飛んでいく事でしょう。
 この仮定モデルがビリヤードの玉なのであれば、接触の瞬間から反射を行えば良いのですが、泡の様な物体にはもう少し気の利いた処置が必要です。と言いましても、ここでそれを物理演算的お堅く実装しその解説を行う事も可能ですが、私個人は、ユルユル脱力アプリでそこまで堅苦しく実装する事に意味を見出さないタイプでありますので、もう少し簡易な方法をご紹介しましょう。


 サンプルプログラムの前に、以前のエントリー

iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタ「2Dベクトル」

iPhoneアプリ、ゲーム制作初心者の方へ小ネタ「線分と円の交差」

上記記事が、前知識としてお役に立てるやもしれません。
一読頂けましたら、幸いで御座います。


 さて、泡A、泡B双方の座標に注目してみましょう。
双方の座標はどの様な推移を見せるべきでしょうか?

 双方は互いに近づき、接触し、「ゆっくりと」反発し、触れあうか触れあわないかのギリギリの位置へ押し返されて行くわけです。



// それぞれの座標が入っていると仮定
CVector2 bubbleA;
CVector2 bubbleB;

// それぞれの半径
const float radiusA( 10.0 );
const float radiusB( 10.0 );

if( bubbleA.Distance( bubbleB ) < radiusA + radiusB )
{
// 接触している

// 双方の中間点
const CVector2 center = ( bubbleA + bubbleB ) * float( 0.5 );

// 中間点から泡Aへの単位ベクトル
const CVector2 vectorToA = ( bubbleA - center ).Normal();
// 泡Bは、↑ベクトルの逆
const CVector2 vectorToB = -vectorToA;

// 中間点から、泡Aと泡Bが接触しないギリギリの位置
const CVector2 toA = center + vectorToA * radiusA;
const CVector2 toB = center + vectorToB * radiusB;

// 現在の位置から、上記位置へ、「少しずつ」移動
bubbleA += ( toA - bubbleA ) * float( 0.2 ); // 肝
bubbleB += ( toB - bubbleB ) * float( 0.2 );

}



 可読性確保の為に随分と冗長なコードとなっておりますが、そこは留意頂けましたらと思います。「肝」の部分に示された「少しずつ移動」とは、イージング処理と呼ばれるもので、詳細は以前のまた別のエントリー
iPhoneアプリ作者より、ゲーム制作初心者の方へ小ネタを一つ
へ譲る事と致します。

 これは、その座標へ少しづつ近づくという処理であり、肝となるのはその係数「 float( 0.2 ) 」。これが1.0へ近づく程、行ってみれば「固い動き」という様相を呈してまいります。この辺りの調整はアプリ毎に変化してくる部分であり、これを決めて行く作業こそが、ゲームやエンターテイメント系アプリの醍醐味、最も面白い作業の一つと言って良いでしょう。


rule

 さてさて。

 毎度毎度、何故こうもダラダラと長いエントリーになってしまうものなのか、開設より一年以上も経過している本Blogであるにも関わらず、永遠の謎として悲しさを色濃く彩っておりますが。いえいえ、そう仰らず。
脳内垂れ流しBlogでは御座いますが、これからも気長にお付き合い頂けましたら幸いです。

 毎日が台風一過。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(2)|trackback(0)|ゲーム制作初心者の方へ|2011-08-24_13:31|page top

トラックバック


この記事にトラックバックする(FC2ブログユーザー)

コメントの投稿

非公開コメント

No title
2点の中点を求める式が、
( bubbleA + bubbleA ) * float( 0.5 )
となっていますが、
( bubbleA + bubbleB ) * float( 0.5 )
ではないでしょうか?

突然あらわれて不躾なコメント、すみません。
Re: No title
>irurusさん

わーーー、なんという事でしょうw
記事、修正致しました。

不躾だなんてとんでもありません^^
ご指摘有り難う御座います~。
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。