2008年11月12日 (水)松竹梅解決法
おはようございます。本日の当番、プログラマーのM.L.Kです(LはのLittleのLです、Little&Big!)。
ある調査によると、コストの制約を伴う状況で、グレードの異なる3つの選択肢が与えられた場合、多くの人が、2番目のグレードを選択する傾向にあるそうです。
まあ要するに、財布ん中ぼちぼちの人が、“松”・“竹”・“梅”のいずれかを選べ、って言われたら、大抵の人が、“竹”を選ぶ、っちゅうアレです。
最近まで、これは“日本人の性格上~”、といった文脈で語られがちだったのですが、どうも、これは全人類に共通した性質みたいです。
行動経済学だとか、心理学だとかでは、ほとんど常識なんだそうで。
さて、16とか256とか65536とか、とにかくキリの良い数字が大好きなプログラマは、
「う~ん?だいたいそのあいだくらい?」
とか言われると、イラッとします(←ちょっと余裕なさすぎ)。
もっとも、ゲームのプログラミングは、曖昧な世界をデジタルに表現していく過程とも言えますので、そのどちらつかずな曖昧さを何とかコンピュータが理解できるようにしなければなりません。
2つの値の間を変動する数値を求める際、以下のような実装を行う場合があります。
α(1-t) + βt [0≦t≦1]
αとβとの間にある値を比率tを用いて表すやり方ですね。
tが0.5だったらちょうど半分、0.3だったらちょいα寄り、みたいな。
αとβのように単なる値だと、まあ、しょうもない話なんですが、ゲーム製作の現場では、もっと抽象的な要求が出る場合もままにあります。
例えば、
「ほとんど直線っぽくまっすぐなカンジなんだけど、やや曲線に曲がるカンジ?」
…
(ノ゜皿゜)ノ彡┻━┻
注)誤解のないように敢えて注釈しますが、プランナーやデザイナーがいい加減である為にこういった指示が生じているワケでは、決してありません。
それくらいに微妙で複雑な機微のやりとりをして製作する必要があるのです。
先ほどの式は、αとβの部分を、数式にすることもできます。
Fをf(x,y)、Gをg(x,y)の関数として、
F(1-t) + Gt [0≦t≦1]
上の例えで言えば、Fに直線の式、Gに曲線の式を入れて調整することになります。
余談ですが、FとGをそれぞれ任意の曲線(曲面)の式にして、tが連続的に変化する様子を表現すると、いわゆる“モーフィング”の処理になります。映画なんかで使われているものは、色情報なども対象となるので、もっと複雑ですが。
ゲーム製作にはハードスペック等のどうしようもない制約が伴いますので、心に描くクオリティはなかなか実現が難しいものとなります。少しでも思い通りのものを作りたくなるのが人情。
そんな心情を察して、プログラマはそっと品書きを出すワケですよ。
松:f0(x,y)+f1(x,y)+f2(x,y)…+fn(x,y) 数式入れれば思うがまま
竹:F(1-t) + Gt [0≦t≦1] tを0~1の範囲で調整できちゃう
梅:f(x,y) 予め決まった曲線だけだよというか、直線?
…
つ┳━┳
ちゃぶ台、おいときますね。
| 固定リンク | コメント (0) | トラックバック (0)
「プログラマー」カテゴリの記事
- 技術交流の業(2019.03.07)
- 福袋争奪戦デビュー(2019.01.31)
- 温泉旅行(2019.01.24)
- ゲーセンの近況(2018.11.29)
- 健康的にプログラミングを続けるためのちょっとした習慣(2018.10.18)
この記事へのコメントは終了しました。
コメント