トップページgamedev
1001コメント366KB

【初心者】スレを立てる前にココで質問を【Part22】

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001名前は開発中のものです。2010/11/12(金) 19:11:38ID:FvfF5z6o
疑問に思うことがあれば、スレを立てずに、まずはココで質問。
スレッドを立てる前にはローカルルールを読みましょう。
http://pc11.2ch.net/gamedev/

>>980 を踏んだ人は次スレ立てをお願いします。
【アップローダ・避難所・Wiki】
ゲーム製作技術板公式Wiki
http://hibari.2ch.net/gamedev/

ゲーム製作技術板公式アップローダ
http://gmdev.xrea.jp/

gamdev.orgが落ちるたびにあげてみるスレ
http://hibari.2ch.net/test/read.cgi/gamedev/1107022166
0833名前は開発中のものです。2011/06/19(日) 17:19:39.62ID:Av0kkiTu
言い忘れた。
C++のファイルストリームも普通に使えるから。

0834名前は開発中のものです。2011/06/19(日) 17:21:46.28ID:PUnO1EWS
Cの標準関数とか勘弁してくれ。
OpenFile使ってCreateFileMappingでメモリマップドファイルを作って操作しておくれ。
テキストを大雑把に処理したいんだったらReadLine系でもいいけどさ。

APIwo使うときはAPIを使っていることを明示するべき。
Cに固執して怪しいラッパを使うなんで昭和の流儀だ。
0835名前は開発中のものです。2011/06/19(日) 17:25:42.73ID:vaLZt7st
>>831
ありがとうございました、解決いたしました
0836名前は開発中のものです。2011/06/19(日) 17:36:22.53ID:Av0kkiTu
>>834

仕事で嫌なことでもあったのか?力抜けよ。
とりあえず、自分の文章をよく読み返せ。

お前の文章は何を言いたいのか意味不明だ。

俺は好きなのを使えと言ってるのであって
別にCの標準関数に固執してる訳ではないよ

そもそも質問者が何をもって面倒と書いてるのかもわからないからな。

main()とWinMain()って書いてあるからWinAPIが使いたくないのだろうと
エスパーしただけ



0837名前は開発中のものです。2011/06/19(日) 17:53:09.15ID:2lzEN5BK
>>832
どもです
0838名前は開発中のものです。2011/06/19(日) 18:27:45.70ID:pPMGNQmb
メモリマップトファイルを使い始めたら、標準関数なんて面倒くさくて使えなくなる。
0839名前は開発中のものです。2011/06/19(日) 18:39:21.57ID:358w9vqV
wwww
0840名前は開発中のものです。2011/06/20(月) 08:09:18.04ID:M20TvgDf
少なくとも







例えばツェーなら、
・ifを3段以上重ねるやつ
・判断にswitch〜case使うやつ
・定数使うやつ

これはピログラマーとして不適格。
0841名前は開発中のものです。2011/06/20(月) 08:14:29.41ID:M20TvgDf
ifにしろswitch〜caseにしろ

「それ1コ調べるにも最低1クロックかかる」
ことを頭に置いてないやつは、ゲームのみならず組込でも
まったく使えない。

こういうところ分からないと、「大したものでもないのに最新PCでないと動かない」ものをひり出してしまう

FF14とかいい例だ
0842名前は開発中のものです。2011/06/20(月) 08:25:40.72ID:F4TymxCL
>>840
なぜ不適格であるかを述べなさい。

わかるかな〜?
0843名前は開発中のものです。2011/06/20(月) 08:26:51.90ID:CN65Hj54
重要な部分とそうでない部分がある。
その見極めが出来ず、最適化なんて 笑っちゃいます
0844名前は開発中のものです。2011/06/20(月) 08:27:39.47ID:KAs2FVoV
>>842
ピログラマって何か分からないけど、とにかくピログラマとしては不適合者なんだろ
0845名前は開発中のものです。2011/06/20(月) 08:42:01.09ID:M20TvgDf
だぁから1クロックも無駄にするなっつうこと

switch〜caseは特に無駄
評価項目が30コあるとして、一番下に目的のものがあったら
下まで来るのに最低でも30クロックかかる。

これは無駄なので、何がどうでもswitch〜caseは不可。
0846名前は開発中のものです。2011/06/20(月) 08:45:20.69ID:qeAC3KY6
最適化でテーブルジャンプに変換されたりすることを知らない阿呆なんだろうね。
何の脈略もなく、馬鹿の一つ覚えでどうでもいい話題を振り出すし。
0847 [―{}@{}@{}-] 名前は開発中のものです。2011/06/20(月) 08:45:50.44ID:mDiYitdj
switchは2分探索でやると聞いたことがあるが
0848名前は開発中のものです。2011/06/20(月) 08:53:07.09ID:qeAC3KY6
判定範囲によって、出力コードを変えるんだよ。
0849名前は開発中のものです。2011/06/20(月) 09:11:55.36ID:M20TvgDf
仮にテーブルでも、バカのやること
こんなもん、60あっても2〜5クロックで終わらす方法がある。

割り込み使えるともっと減る
0850名前は開発中のものです。2011/06/20(月) 09:46:39.91ID:qeAC3KY6
仮にって、コンパイラの吐き出すコードも理解していないのにクロックを語りだすとは、
頭が悪いにもほどがある。
0851名前は開発中のものです。2011/06/20(月) 10:10:08.12ID:M20TvgDf
コンパイラが完璧じゃないってのはバカでも知ってる常識。

特に汎用OSじゃないからvolatileは必ず入る。
汎用OSでも入れないと最適にはならない。

バカ以外は知っている
0852名前は開発中のものです。2011/06/20(月) 10:28:35.77ID:klx9umu6
これまでのどうしようもない言動一覧

・ピログラマ
・条件分岐の代用に割り込み
・コンパイラの出力コードを確認してない
・何の前置きもなくvolatile
・汎用OS
0853名前は開発中のものです。2011/06/20(月) 10:46:34.67ID:lwpRdV8l
仕事でなくプライベートによるゲーム製作の場合

やる気>>>>>>>>>>>>>技術

IFが30個あろうが完成品を作った奴が神
凄いプログラムだろうが未完製品はカス
0854名前は開発中のものです。2011/06/20(月) 11:09:51.91ID:m9wEUO/c
俺、c言語初心者だからswitch使っちゃたけど
switchつかわないとifになっちゃう
0855名前は開発中のものです。2011/06/20(月) 11:17:31.12ID:M20TvgDf
基本的に、処理負荷は少なければ少ないほどよいのは常識。

となると、任せられるものは別に任せようとなるのは当たり前、

そういう意味で割り込み処理を使うのだ
割り込み処理は汎用コアでやるものもあるが、たいてい専用の割り込みコントローラを持つ。
これは汎用コアには影響を及ぼさない。

例を挙げればタイマーだ
ゲーム開始やイベント開始から指定秒数経ったら別のイベント駆動

これを汎用コアでやるやつは頭がどうかしている。
0856名前は開発中のものです。2011/06/20(月) 11:18:22.99ID:IzFJkAaU
DirectXなんすけどここで聞いてもいんですかね?

ポリゴンの周りのアンチエイリアスじゃなくて
例えば、板ポリに貼ったテクスチャーを
カラーキーで透過した周りのアンチエイリアスとか出来ないんですかね?
フィルターで全体をぼやかすんじゃなくて
あくまでも周りのアンチエイリアスなんですけど。

一応、画像にアルファチャンネル持たせて
それで周りの部分だけアンチエイリアスかかった感じには出来るんですけど
何かDirectXの方でアンチ表示出来ないのかなと思って聞いてみました。
0857名前は開発中のものです。2011/06/20(月) 11:20:38.20ID:dHAjRnJB
自称凄腕プログラマはゲ製では逃亡確率高めなイメージ
0858名前は開発中のものです。2011/06/20(月) 11:22:59.12ID:M20TvgDf
基本的にムダだろう
テクセル処理性能が高ければそれでもいいが、それでもムダだ
フルシーンでやらないなら、テンポラルでもいいので
素直にROPでAAやらせたほうがいい結果が出る。

それか普通どおりにエッジ検出して、シェーダでサブピクセル置いたらいい
シェーダでのアンチエイリアスは2005年から普通に行われていると思うが
0859名前は開発中のものです。2011/06/20(月) 11:30:46.54ID:IzFJkAaU
>>858
う〜ん、なるほど。
あんまりゲームプログラムには詳しくなくて
ずっとDirectX7の頃で知識が止まってましたので
やっぱシェーダとかで今はバリバリやったりするんですね…
あとはやっぱ画像にアルファ値持たせるのがいいみたいですね。
ありがとうございました。
0860名前は開発中のものです。2011/06/21(火) 03:06:14.24ID:Aj8fRJef
円と四角形の当たり判定をするときに、四角形の頂点に4個の配列使うのって当たり前なのか?
0861名前は開発中のものです。2011/06/21(火) 13:47:02.74ID:3pc3Ry/R
度々すみません
CとDXライブラリで現在2Dアクションを作っていて、
右向きの移動の場合
加速時の速さを定数"0,25"、時間を 変数"t"にします。そして速さと時間をかけて得られる距離を"k"とします
それをキャラクタ( 今回は文字定数"■"を移動させます )が居るx座標に足して移動を表現しています

k = 0.25*t  //速さと時間を掛けて出た距離
x+=k     //距離をキャラの座標に足す

この考えで、キー入力がない場合緩やかな減速
右キープラスBボタンが押されれば更に加速
という処理を実装させたいのですがうまく行きません

メインループの中に以下の処理を入れたら、うまく行きます

if(CheckHitKey( KEY_INPUT_RIGHT) == 1 )
{
t++;
k=0.25*t;
if(k>=8)k=8; //移動の限界値を設定
x+=k;
}

if(CheckHitKey( KEY_INPUT_RIGHT) == 0 && k>0 )
{
t=0;
t++;
k=-0.5*t +k;
x+=k;
}

DrawString ( x, 400, "■", GetColor( 255 , 255 , 255 ));
0862名前は開発中のものです。2011/06/21(火) 13:58:41.47ID:3pc3Ry/R
つづき
右方向だけの移動なら上の処理で問題ないのですが、
右と左の処理を分けるためにwhile文を使ってみたのですがうまくいきません
どなたかアドバイスお願いします

if(CheckHitKey( KEY_INPUT_RIGHT) == 1 )                 //右キー入力があれば
while(1){                               //ループに入る
if(CheckHitKey( KEY_INPUT_RIGHT) == 1 )   //右キー入力があれば移動する処理
{
t++;
k=0.25*t;
if(k>=8)k=8;
x+=k;
}

if(CheckHitKey( KEY_INPUT_RIGHT) == 0 && k>0 ) //キー入力なしで減速する処理
{
t=0;
t++;
k=-0.5*t +k;
x+=k;
}


DrawString ( x, 400, "■", GetColor( 255 , 255 , 255 ));


if( k<0 ) break;                        //移動が0でループを抜ける

}
}
0863名前は開発中のものです。2011/06/21(火) 14:00:42.66ID:3pc3Ry/R
すみません最初のifの中括弧の始まりを忘れました
実際はあってもうまくいきません
0864名前は開発中のものです。2011/06/21(火) 16:47:31.92ID:uE4oFvCy
イラストとか曲とかいくらでやり取りされてるの?
1キャラとか1曲の平均的な値段をおしえてくれ
0865名前は開発中のものです。2011/06/21(火) 16:59:49.34ID:LS2/8Qyk
>861
t=0からの距離を毎回自分の位置に加算するのは間違ってないか?

>864
平均とか言い出すと一枚10マソとかいう絵師さまが登場して荒れるから
864が出せる金額で頼める人に頼め
0866名前は開発中のものです。2011/06/21(火) 17:17:31.44ID:3pc3Ry/R
>>865
減速時のことでしょうか?
私も最初はおかしいかなと思ったんですが、その処理をするごとにkの値は減っていくので毎回t=0からでも問題ないです

if(CheckHitKey( KEY_INPUT_RIGHT) == 0 && k>0 ) //キー入力なしで減速する処理
{
t=0;
t++;
k=-0.5*t +k;
x+=k;
}

もし一回の処理で移動する距離( k )が最大の8の場合
一回目
k=-0.5*1 +8
k=7.5

二回目
k=-0.5*1 +6.5
k=6

という感じにうまく減速してくれます
加速時に0.25ずつ進む距離が増えるのに対して、減速時は0.5ずつ減るようにしたのですが
0867名前は開発中のものです。2011/06/21(火) 17:30:56.28ID:3pc3Ry/R
本当に何度も申し訳ないですが、自己解決というか妥協解決しました
右向きの処理と左向きの処理をループで括って分けたかったのですが、それがうまく行かなかったので
全ての処理を独立させることにしました

何回も長文を書いてスレを汚してしまって申し訳ないです
0868 忍法帖【Lv=2,xxxP】 2011/06/21(火) 17:39:41.92ID:zxB2o0EE
whileで分ける意味が分かんない、誰か教えて。
0869名前は開発中のものです。2011/06/21(火) 18:32:58.12ID:3pc3Ry/R
>>868
移動距離"k"を正の値のままにしておきたかったからです
しかし正の値のままだと何もボタンを押していない時の条件が被ります

if(CheckHitKey( KEY_INPUT_RIGHT) == 0 && k>0 )
if(CheckHitKey( KEY_INPUT_LEFT ) == 0 && k>0 )

ですので、whileでなくとも何か違う関数の中にいれて条件が被らないようにしたかったのです


別にkの値を負にすればいいじゃないか。というかそれが正しいと言われると思いますが、
別の関数に分けるという考え方は大体合ってると思うので、それが出来ないとまた同じようなアルゴリズムを組む時苦労すると思ったので
こっちのやり方も出来るようになっておきたかったんですよ
0870名前は開発中のものです。2011/06/21(火) 19:49:33.44ID:/qLvVUPm
ほんと面白いわこのスレ。エスパ−神としったかレスこじきが同居してるな
0871名前は開発中のものです。2011/06/21(火) 19:57:41.12ID:BWXuLMpT
全ての板において初心者スレは

ちょっとかじった、知ったか君
無能だった自分と重なって的確なアドバイスができる上級者

が集う
0872名前は開発中のものです。2011/06/21(火) 20:26:06.58ID:w6AfA9yw
そして知ったか君に限って、
自分は的確なアドバイスが出来る上級者だと勘違いしている。

本物の上級者のほうは、レスを書いた後で本当に適切だったか悩む。
0873名前は開発中のものです。2011/06/21(火) 20:33:53.60ID:qMXhUuYS
加速時の速さが定数という時点で、加速してないだろそれと、
挫折した俺には到達できない領域。
0874名前は開発中のものです。2011/06/22(水) 04:14:45.43ID:v3yVn6tb
>>869
現在位置と凅ではなく、時間tを使って移動先を求めているのは何か意味があるってこと?
物理シミュでもやってるのかな。
0875名前は開発中のものです。2011/06/22(水) 13:00:30.23ID:aqyPnKWY
大きめのマップで自分の移動に合わせて表示画面をスクロールする
プログラムの仕組みを教えてください

例えばポケモンみたいに
0876名前は開発中のものです。2011/06/22(水) 16:01:14.88ID:pWb0e9lc
>>875
いろいろ方法はあると思うけど、
真上から見下ろすカメラがあると想定してみるのはどうかな。
0877名前は開発中のものです。2011/06/22(水) 19:21:16.19ID:uoWZAZid
>>873
動きは確かにキビキビしてますが、現状これくらいしか頭がないもんで
 k=0.125*t^2 くらいにしたほうがらしくなるかもしれないですね
それか t の範囲をいくらかに分けて段階的に傾きを変えてみるとかですか

>>874
ただこれしか思いつかなかっただけです・・
その現在位置と凅を使ったやり方も宜しければ教えていただけないでしょうか?
もしくは参考になるサイトを
0878名前は開発中のものです。2011/06/22(水) 19:51:18.41ID:pWb0e9lc
>>876
携帯からなんで軽く。

ライブラリの公式サイトに等速移動のサンプルがあったと思うが、
ここに書かれている移動量(±3)の部分を変数にする。
この移動量変数は、ループ毎に初期化されないように注意。

左方向へ移動させたい場合は、移動量を負の数にするのが一番楽。
どうしても正の数が必要になったら、そのときに改めて絶対値を計算すれば良いだけ。

0879名前は開発中のものです。2011/06/22(水) 20:04:24.71ID:aqyPnKWY
>>878
ありがとうございます

今から組んできます
0880名前は開発中のものです。2011/06/23(木) 06:24:38.91ID:nv3y+bY4
あれ?
0881名前は開発中のものです。2011/06/23(木) 14:24:18.16ID:8jCWoIDE
ゲーム文字は文章データから読み取った文字を
1文字ずつ画像に変換する処理をしている?
0882名前は開発中のものです。2011/06/23(木) 14:36:46.05ID:cLXuAiSF
昔の9801や8801系みたいなTEXT-VRAMをもったPCならともかく、今のPCならゲームに限らず全部そうだろw
0883名前は開発中のものです。2011/06/23(木) 16:01:30.57ID:4Rg2XpCB
フォント表示はいろいろある
一番楽なのは、文章をそのままテクスチャにしたテクスチャを用意するもの
2011年現在に至っても、まだ存在している。


今主流なのは、ちょっと高度になビットマップ
フォントファイルから文字コードとともに抜き出し、文字をテクスチャにするが
「ココからココまでの座標が何のデータですよ」というものを覚えさせるので
文章データはテキストファイルでも何でもいい。

プログラムは、そのテキストファイルに相当するものからデータを取り出してみて
「このデータだから、ここからここまでの座標にある絵を入れればいいんだな」と判断して表示

だから座標が間違ってると表示されるものもおかしくなる
0884名前は開発中のものです。2011/06/23(木) 16:13:43.59ID:A1S7MgvQ
それ全部

>文章データから読み取った文字を1文字ずつ画像に変換する処理
0885名前は開発中のものです。2011/06/23(木) 16:44:44.04ID:4Rg2XpCB
ビットマップもテクスチャードも画像に「変換」っていうかね

前者はもとから全文テクスチャとしてあるから、別に変換はしないでいい
もとから画像テクスチャデータとして存在するので、「ゲーム内以外で読まれると困るやつ」には使えない。

後者は「文字を羅列したテクスチャ」はもとからあるので
プログラムがやっているのは配置するだけだな

切り貼りしているようなものだ

0886名前は開発中のものです。2011/06/23(木) 16:55:35.87ID:8jCWoIDE
>>885
つまり文章そのものを全て画像で配置したデータを作ってそれを利用するってこと?

その文章画像データ(変な言葉)は予めツールか何かをつかってテキストデータから変換して生成しておく
でOK?
0887名前は開発中のものです。2011/06/23(木) 17:07:58.05ID:4Rg2XpCB
厳密にはちょっと違うが、後者を簡単に言うと
まず、一枚のでっけえテクスチャに

ABCDEFGHIJKLMN・・・あいうえおかきくけこ・・・・

と、使う文字や記号を描いておく。

プログラムは、テキストファイルを読みこめば文字コードと文字データを取得できるだろう
そうして読んだデータが例えば0x01としよう

そうしたら、対応テーブルを見て「0x01はテクスチャのどっからどこまでやねん?」ということをはじき出す。

仮に0x01は、座標0.0から12.12まで としたら、最初に作ったテクスチャからそこまでの範囲を切り出して
表示させたいところにポンと置くだけだ。


前者は、まさに文章をテクスチャに全部書いておく。
文章ぶんのテクスチャ数が必要になるが表示させるだけなので簡単。
unrealエンジンが、少なくとも1〜2はこれだったと記憶している
0888名前は開発中のものです。2011/06/23(木) 17:16:28.74ID:4Rg2XpCB
一文字づつ判断して、座標出して、切って貼って
これを繰り返して文章にする

ただ、テーブルの構築や、そもそも「文字コードの理解」が必要になるので
そこまで簡単ではない。特にUTF-8の文字コードの理解が他に比べるとややこしい。
でも、スマートかつ基礎さえ出来れば応用が利いて後々の苦労が少ないのはこれだ


できなかったら、文章を全部テクスチャに書き込んでおくUnreal方式がいいだろう
0889名前は開発中のものです。2011/06/23(木) 17:19:53.92ID:A1S7MgvQ
>>885
前者はすでにほぼ絶滅しているし、後者は明らかに文字コードを画像に変換しているな。
0890名前は開発中のものです。2011/06/23(木) 17:33:17.29ID:QwuQYJQ5
アクションゲーのメニューなんかでは今だに普通にビットマップ使ってることが多いけどね
0891名前は開発中のものです。2011/06/23(木) 17:42:56.05ID:A1S7MgvQ
それは元質問者が意図した文章か?w まあ文章ではあるわな。そうですねw
0892名前は開発中のものです。2011/06/23(木) 17:47:42.35ID:8jCWoIDE
どうも勘違いしていたようだな
後者のやりかたが当然と思っていたから前者なんて論外だった

前者で文章表示していたら膨大な画像データになるんだろww
会話データをそんな処理していたとは考えにくいが

それに前者の方法なら文章データは不要で
フラグ管理だけで十分じゃないのかな?

1だったら○○の文章データ(画像)を表示
0893名前は開発中のものです。2011/06/23(木) 18:09:17.62ID:4Rg2XpCB
前者、unreal方式はテキストファイル類は必要ない
どこで何を出すかさえ決めておけばいいだけで、
会話自体が少ないアクションシューティングでは問題にならなかった。
オブジェクティブ表示、ステータス表示、程度だし

Doom3エンジンの「オリジナル」は字幕機能を持っていないし
もしもしゲー用のエンジンも持ってないこともあるので
今でもテクスチャ貼り字幕は存在している。

必要があったら、Prey、ETQW世代のD3エンジンのように拡張して字幕機能を持たせることもあるが
0894名前は開発中のものです。2011/06/23(木) 19:38:00.42ID:s6g/tj/H
C# + XNAで開発しています。
XNA専用スレが一つしか無かったので、まずはこちらで良いですか?

spriteBatchで描画した画像やテキストをクリアするためには、
spriteBatch.Dispose()して、新しくspriteBatchを作成するしかないでしょうか
※メニュー選択後の画面遷移をしようとしています、他に方法があればそれでも問題ありません
0895名前は開発中のものです。2011/06/23(木) 20:01:21.64ID:Zvnkqj4Q
素材について意見がききたいんだけど適当なスレがないんでここで質問。

メッセージ枠素材を配布しようと思ってるんだけど
現在の標準サイズって800*600基準でいいのかな。
あるいは他に使いやすいサイズがあれば知りたいです。
0896名前は開発中のものです。2011/06/23(木) 23:12:25.13ID:ryrUA2vo
縮小はどうにでもなるのでなるべく大きなサイズならつぶしが利くだろう。
重要視するべきはサイズじゃなくて比率かな。4:3用途か16:9用とか。
どれにでも利用できるサイズにするなら4:3用で作成することになる。

結局は利用して貰いたいコミュニティのデファクトに合わせるのが普通だから、
そこで聞くべきだ。

0897名前は開発中のものです。2011/06/24(金) 00:01:17.80ID:IetTbbk8
ワクそのものでもいいのだが、一部だけでも用は成せる

解像度固定でないなら、「その一部を何回X方向Y方向に繰り返してどれだけの大きさにするか」
ってのが容易に出来る
アクセントがあっても重ねるだけ


どうしても凝ったデザインにしなきゃならんならワク全体を配布すべきだが
0898895 2011/06/24(金) 01:44:05.94ID:tVBhkhN8
自作吉里吉里製アドベンチャーに使った素材がほしいと言われたんですが
psdで保存してあったから、どうせなら標準的なサイズにして配布しようかと思って。
まさに比率が気になってたんですが4:3で問題ないんですね。
パターンの一部+パーツ別もあわせて考えてみます。
ありがとう。
0899名前は開発中のものです。2011/06/24(金) 02:01:58.57ID:IetTbbk8
それなら丸ごとでもいいんじゃないの

0900名前は開発中のものです。2011/06/24(金) 02:20:24.84ID:3eZR6aVo
いっそのこと、aiでつくるとか。
0901名前は開発中のものです。2011/06/24(金) 06:10:21.91ID:PG3ZOgrs
例えば16:9のアスペクト比で3D表示した横幅の可視領域は
4:3の比で表示した場合の、どのくらいカメラを引いたのと同じなんでしょうか?
要するに4:3で表示した時に上と下を切ってワイドっぽく対応したいんです。
それとも根本的にこの考えはおかしいですか?
0902名前は開発中のものです。2011/06/24(金) 06:44:45.29ID:Wo5NDXjk
ワイドの言葉の意味を考えればおかしい
上下を切るより左右をワイドにする
0903名前は開発中のものです。2011/06/24(金) 07:25:14.07ID:PG3ZOgrs
>>902
もしかするとまだ勘違いしているかもしれないんですが
一応今の所下記の様に思っています。
何か間違いがあればご指摘頂ければと思います。

左右の領域については、4:3の比率で表示した時に
カメラをある程度引けば(つまりカメラのz値をマイナスすれば)、
左右の可視領域は増えてるという事になると思うんですけど。
実際に目測で大体16:9の時と同じくらいの左右の可視領域を増やせてるんですが
それを目測ではなく、厳密に計算式でやりたいなと思って。
上下を切るのは、カメラを引く事によって上下の可視領域も拡大されるので
その余分なところをカットするという意味です。
0904名前は開発中のものです。2011/06/24(金) 07:36:52.25ID:PG3ZOgrs
分かりにくいかもしれませんが↓みたいな感じです。
■の表示は真ん中に表示した板ポリ

1280x720(16:9)
―――――――
 ■■■■■
 ■■■■■
 ■■■■■
―――――――

1280x960(4:3)
―――――――
■■■■■■■
■■■■■■■
■■■■■■■
■■■■■■■
■■■■■■■
―――――――

1280x960(4:3) カメラzをマイナス(余分な上下は塗り潰す)
―――――――
 
 ■■■■■
 ■■■■■
 ■■■■■

―――――――

どこまでカメラを引けば、きっちり16:9の可視領域と同じか知りたい(公式が欲しい)。


0905名前は開発中のものです。2011/06/24(金) 08:00:28.18ID:Wo5NDXjk
公式という言葉の意味を考えれば無い
公になっていない
0906名前は開発中のものです。2011/06/24(金) 08:27:09.71ID:PG3ZOgrs
>>905
公式というのはちょっと言い方が悪かったですが
複数の解像度に対応した式でカメラのマイナス値を算出する方法はないでしょうか?
0907名前は開発中のものです。2011/06/24(金) 08:39:35.27ID:PiATbYSQ
スクリーンのサイズと視野角が分かれば、視点からのスクリーンを挟む三角形が出来るから、簡単に距離なんて出るだろう。
0908名前は開発中のものです。2011/06/24(金) 08:50:36.64ID:PG3ZOgrs
>>907
すみません(汗)
プログラミングとかしていながら数式にはめっぽう弱いもんで。
後は自分でがんばってみます。
0909名前は開発中のものです。2011/06/24(金) 09:34:03.49ID:3eZR6aVo
これってモニタの縦横比とは無関係なのでは…
0910名前は開発中のものです。2011/06/24(金) 10:06:53.39ID:PG3ZOgrs
>>909
どういうことでしょうか?
0911名前は開発中のものです。2011/06/24(金) 10:08:48.18ID:PiATbYSQ
アスペクト比で縦を1とするから、キーとして使うサイズは縦方向のサイズをとる。

>>908
三角形の一辺と角度から、他の辺の長さぐらい求められるだろう。
公式なんて検索すれば出てくるんだから、弱いとか関係ないから。
0912名前は開発中のものです。2011/06/24(金) 10:10:14.75ID:PiATbYSQ
正確にいうと三角形じゃなくて直角三角形。
0913名前は開発中のものです。2011/06/24(金) 10:32:41.79ID:PG3ZOgrs
>三角形の一辺と角度から、他の辺の長さぐらい求められるだろう。

はい。これは大丈夫です^^
なんとも低レベルな質問にお答え頂きありがとうございました。
0914名前は開発中のものです。2011/06/24(金) 10:33:52.74ID:S6/XRV49
視野角60度、幅1280とすると d = 1280 / 2*tan(60/2度) = 1108.51252 ?
0915名前は開発中のものです。2011/06/24(金) 10:39:39.36ID:PiATbYSQ
幅=高さならそれであってるよ。
0916名前は開発中のものです。2011/06/24(金) 10:49:15.02ID:S6/XRV49
ありがとうございます
0917名前は開発中のものです。2011/06/24(金) 13:36:42.37ID:fTw62tmE
配列[10]から以下のような画像配置をする時if文だらけでなく、何か良い計算式はないでしょうか?
配列[x]
  ■■■
 ■■■■
  ■■■

ベタな方法なら
x≧0 〜
x≧4 〜
x≧7 〜

応用すればこういうのもOKな感じになるようなもので
   ■■
  ■■■
 ■■■■
  ■■■
   ■■


横幅が変わらない場合(理想的でない)
■■■■■■■■■■(9)

  ■■■
 ■■■
■■■

Y軸+x%3*○

0918名前は開発中のものです。2011/06/24(金) 17:59:21.23ID:IU+rSsxS
■■■■■■■■■■って配列[10]を
■■■□■■■■□■■■ という配列[12]にしてから

  ■■■□
 ■■■■
□■■■
(□は実際には描画しない)
0919名前は開発中のものです。2011/06/24(金) 21:02:04.53ID:3eZR6aVo
最適化のソリューションというのは状況や環境に寄り添うと言うことなので
こんなシンプルな問題なら、最低でも何の配列で、それをどういう構造を
持った先に書き込むのか分からないと答えようがないんですよ。

書き込む先の横幅に依存すると高速化できるかも知れないし、
配列の要素によってはマスクをテーブルで用意して合成に利用すれば
高速になるかも知れないし。

0920名前は開発中のものです。2011/06/25(土) 02:15:50.76ID:av3YTDPA
>>917
予め画面に対応する配列を用意しておいて
外部のマップ配置データを読み込むというのが
一番オーソドックスなやり方の様な気がするけど。
0921名前は開発中のものです。2011/06/25(土) 08:45:28.72ID:ljrl4TvH
>>917
条件が良く分からんな。第1と2の図を考慮したら3はこうなると思うんだが

  ■
. ■■
■■■
. ■■
  ■
0922名前は開発中のものです。2011/06/25(土) 09:39:16.80ID:bgBde/zB
MODとか上手く使えば計算式で出来るかもしれんがややこしいだけでしょ
>>917みたいにベタな方法でも別にいいと思うが
あるいは>>920みたいにやるか
0923名前は開発中のものです。2011/06/25(土) 09:46:09.77ID:bgBde/zB
絶対値とか使えば上手く出来そうな気もするな
ようはy=f(x)で
x0123456789
y0001111222
を求める問題に帰結できそう
2番目も同じ
数学板の奴に聞けば解いて貰えそうな気がする
まあそこまでやらなくても上のようにやれば十分だと思うがね
どうしても計算式で表したいって気持ちも分からんでもないが
0924名前は開発中のものです。2011/06/26(日) 00:11:07.08ID:tRK+x7lL
ゲームで動画って使うのか?

俺はフラッシュとかで動画つくってロードできて使えたらいいな〜
って部分がかなり沢山ある
0925名前は開発中のものです。2011/06/26(日) 03:01:39.84ID:B4vmplE/
if文を少なくして、常に良いプログラムを考えながら組むのと

if文だらけになろうともまずは動作するようにしてその後、if文や計算式の最適化

どちらが良いのだろうか・・・・
0926名前は開発中のものです。2011/06/26(日) 04:49:21.11ID:tdcXr8Eq
行き当たりばったりで組んでるならどっちも大差ない確率でこける
0927 忍法帖【Lv=4,xxxP】 2011/06/26(日) 13:48:34.91ID:S3ucWYBu
自分の場合、ある程度は考えながらやるけど、基本的に最適化は後回しだなあ。
最適化の優先順位なんて、全体が見えてこないと判断できないし。
0928名前は開発中のものです。2011/06/26(日) 14:37:30.65ID:OTl5CjgI
細かい部分でIF文が多いとかはどうでもいい。
全体をパーツに分けて、入れ替えやバグ解析を
簡単にできる方が重要だと思ってる。
0929名前は開発中のものです。2011/06/26(日) 17:03:01.17ID:nuBXaIcP
>>925
if文が少ない≠良いプログラム。
全体を完成させてプロファイルしてから、最適化しろ。

ところで、最初2行目が

if分が少ない≠酔いプログラム

って変換されてワロタ。

0930名前は開発中のものです。2011/06/26(日) 19:03:41.51ID:tRK+x7lL
ただ、敵10体、自分、敵と自分の弾を表示させただけなのに重くなってる

自分を中心としてスクロールてるんだが、多分マップ全体を描画して
とこからウィンドウ画面を表示してるのが悪いのかもしれん。

なんか軽くする方法しらないか?
0931名前は開発中のものです。2011/06/26(日) 19:28:35.85ID:JTqXQOAQ
>>930
うー無、曖昧さ100%でなんと答えてよいのやら
具体的にフレームレートは? 3Dなのか2Dなのか? スクリーンショットある?

やっぱね、一番の近道は 
ソースコード付きでコンパイル可能な状態でUPLOADすることだ
0932名前は開発中のものです。2011/06/27(月) 01:04:02.53ID:tvFf2HrL
if文連続してあるこの糞みたいなコード見せるの恥ずかしいんだけどな
ちなみにスクリーンショットも恥ずかしいんだわ

これ初めて作るゲームだしな
なんだか、もうカオスだしよ
レス数が900を超えています。1000を超えると表示できなくなるよ。