[過去ログ] C/C++ゲーム製作総合スレッド Part2 (1001レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(4): 2012/10/24(水)03:01 ID:oI68Vzqz(1) AAS
ゲーム製作におけるC/C++全般に関するスレです。

元スレ
DXライブラリ 総合スレッド その12
2chスレ:gamedev
C/C++ゲーム製作総合スレッド Part1
2chスレ:gamedev
921: 2013/01/03(木)13:51 ID:BC6tD7as(5/11) AAS
↑を、さっきのと同じ6コアCPU、Windows、VC++、x64、Releaseビルド(最適化無効)で
5〜6ms程度だ。testクラスなら7〜8ms。new/deleteをやめてk++にすると大方0msになる。
つまり1万回ではその1/10程度ということだ。
テストで生成しているオブジェクトの構造が単純であることを加味すると、十分に遅いだろ?
なお※の様に配列の領域のサイズを不規則にしてやると、38〜40msかかる。

ちなみにコンソールアプリを空プロジェクトとして生成して、main.cppを追加して記述している。
確認方法は、デスクトップ環境でexeファイルをダブルクリックにより実行。
省1
922: 2013/01/03(木)14:10 ID:Qmf3rDAa(12/19) AAS
つまりnewとdeleteとループ処理併せて一組0.00004ms=40ナノ秒
弾幕ゲーのように数フレームごとにオブジェクトの生成や消滅や数十個レベルで起こるとして、
それは使うとまずいレベルなのか?

結局自前で利用の有無をフラグの管理をするにしても、
ヒープからメモリを確保する場合と、利用有無フラグ捜索してポインタを返す場合と、
誤差以上の差が発生するプログラムが全く思いつかない。
923: 2013/01/03(木)14:36 ID:Hs6nIL6e(1/4) AAS
PCの場合、例えば平凡なDoug Lea Malloc(の亜種)を使うことについて
処理速度上の問題で難癖を付けるには、意図的に相当に意地悪な(過酷な)状況設定を
引っ張ってくる必要があると思うなぁ

例えば3D視点のゲームで、視覚効果に使う粒子状の短命オブジェクトが盛り盛り
無数に画面上に散りばめられてて、それらが何と一粒一粒馬鹿正直にヒープから
メモリ割り当てされてて何の工夫もない線形リストに挿入されてて、毎フレーム
線形リストを馬鹿正直に巡回して一粒一粒更新したり削除即時解放したりとか
924: 2013/01/03(木)14:41 ID:Qmf3rDAa(13/19) AAS
座標計算だけならいけそうだが、粒子の描画に処理が持って行かれるだろうね。
925: 2013/01/03(木)14:45 ID:Hs6nIL6e(2/4) AAS
描画関数に渡すパーティクル用のデータ構造と明らかに違う状態だから
そのセットアップもあるしね。まぁ、いずれにせよ、何でそんな馬鹿な
想定を持ち出すんだと閉口するような話に持っていかないと処理速度上の
問題で横槍いれるのは難しいと思う
926: 2013/01/03(木)15:20 ID:BC6tD7as(6/11) AAS
>弾幕ゲーのように数フレームごとにオブジェクトの生成や消滅や数十個レベルで起こるとして、
>それは使うとまずいレベルなのか?
そういったありきたりの仕様だけを想定するなら、都度new/deleteもあつらえ向きだろうな。
しかし熱望する仕様を満たす可能性を最大化する作法には程遠い。
927
(1): 2013/01/03(木)15:29 ID:Qmf3rDAa(14/19) AAS
認めはしたものの悔しいから含みを残す言い方で跡を濁す。
これもいつものパターン。
お疲れ様。
928: 2013/01/03(木)15:36 ID:1qjfamGg(1/3) AAS
お疲れー、次誰かデザインパターン講座オナシャス
929: 2013/01/03(木)15:41 ID:hxpfY6De(1) AAS
趣味でPCで作ってるならなんでもいいよ。
自分のPCで動けばいいんだから。

でもプロ目指すなら他のプラットフォームに
移植しやすい設計にしとけって話。
930
(1): 2013/01/03(木)15:43 ID:BC6tD7as(7/11) AAS
>>927
お前誰だよ?w、パターンて何だよ?
認めていないんだが。
仕様の話に向かわせているのはそっちだろ?
俺の時間を返せ。
新年早々、やれやれだぜ
931: 2013/01/03(木)15:52 ID:Qmf3rDAa(15/19) AAS
>>930
ヒープの使用が駄目だというのが分かる、自前のフラグ管理とやらのコードを提示すれば解決するよ。
本当に出たら間違いだったと認めるし、非礼を詫びもするよ。
ほら時間がもったいない。

と、こう煽るのもいつものパターンで、絶対に出てこないのもいつものパターン。
だいたい2chにいる人間ならこのパターンは見ているだろう。

ここであきらめの悪い人間のパターンは、コードを提示せずに延々と認めずにいいわけを繰り返すんだよね。
省1
932
(1): 2013/01/03(木)16:19 ID:BC6tD7as(8/11) AAS
お前に礼儀など期待していない。思いあがるな。
同一人物とやらによろしくな。
933
(1): 2013/01/03(木)16:27 ID:Qmf3rDAa(16/19) AAS
>>932
私は間違いだと証明されたら認める用意はあるってだけだよ。

でも君は何があろうと絶対に認めるつもりは無いんだろう。
かといって対抗するソースを出すわけでも無く、
認めたくないからいいわけを繰り返す。

最初の方で言った通りのパターンになっただろう?
君は見事にそのテンプレートにはまった人間なんだよ。
省2
934: 2013/01/03(木)16:41 ID:1RVPLY2V(1) AAS
説明してることはまともそうなのに、余計な煽り語を入れて損するパターン。
935: 2013/01/03(木)16:47 ID:fDDq8dLI(1) AAS
どっかのチャットで二人で話し合ってろよマジ迷惑
936: 2013/01/03(木)16:49 ID:Qmf3rDAa(17/19) AAS
ろくに検証しもせずに、脳内ソースで嘘偽りを並べ立ててる人間を見ると
すぐにカッとなるのはその通り。
得をすることは無いだろうね。
937
(2): 2013/01/03(木)16:56 ID:BC6tD7as(9/11) AAS
>>933
ソース出さなきゃ認めないって、ちょっと違うんじゃねえの。
しかもお前の提示したソースの原型は、非常に単純な例だったよな?
実際には継承もあれば包含もある。コンストラクタ・デストラクタも走る。
「想定範囲内の環境で、想定範囲内の仕様が満たせるから正しい」ってのは、
デメリットの及ばない範囲にとどめましょうってしてるだけだろ?
つまりデメリットを認めてデメリットから逃げた仕様に収まってるんだよ。
938: 2013/01/03(木)17:04 ID:Hs6nIL6e(3/4) AAS
俺はこういう殺伐とした流れ好きだな。ノスタルジックな香り
939: 2013/01/03(木)17:10 ID:1qjfamGg(2/3) AAS
こういう俺にもわかるような話なら良いんだけど
たまに自分には理解できないようなレベルが高そうな内容でドンパチやられると置いていかれる
勉強のチャンスでもあるから良いんだが
940
(2): 2013/01/03(木)17:15 ID:Qmf3rDAa(18/19) AAS
>>937
ほら、ソースを出さずにいいわけパターンでしょ。
なんでそんなに期待通りなんだろう。

これだけ何度も今後の行動を書いてあったのに、
その通りにしか動けない悲しさ。
941
(3): 2013/01/03(木)17:17 ID:Hs6nIL6e(4/4) AAS
>>937
>「想定範囲内の環境で、想定範囲内の仕様が満たせるから正しい」ってのは、
>デメリットの及ばない範囲にとどめましょうってしてるだけだろ?
>つまりデメリットを認めてデメリットから逃げた仕様に収まってるんだよ。

PCの場合、そのデメリットが及ぶ状況を引っ張ってくるのは難しいと思うなぁ
特にこのスレの場合、ざーっと流し読みしてみた限り、個人制作の学生さんが
ターゲットぽいし。UEとか重量級のゲームエンジンを使わない古風というか
省1
942: 2013/01/03(木)17:34 ID:WKW52K/b(1/2) AAS
>>941
逆に言えば個人製作程度のものならそんな意識する必要ないのかな
パッケージで出すならパフォーマンスを最大限出す方法を使わない理由はないんだろうけど
943
(1): 2013/01/03(木)17:36 ID:ADeGFW0Z(6/6) AAS
お前らまだやってたのか。
流し読みしたが話もかみ合ってねーし。

ほんと無駄に一日過ごしてしまったな
944
(1): 2013/01/03(木)17:46 ID:lNTqjEnd(1/2) AAS
なんか、正月早々荒れてるなー。
まぁ白味噌のお雑煮でも飲んで落ち着け。
945
(1): 2013/01/03(木)17:48 ID:1qjfamGg(3/3) AAS
>>944
雑煮が味噌汁とかwww そっちの方が荒れるわ
946: 2013/01/03(木)17:50 ID:Qmf3rDAa(19/19) AAS
>>941
重量級のゲームエンジンなんか使ったら、
それこそヒープの確保なんて大海の米一粒になってしまうから、
あえてそういう想定にしたんだけどね。
947: 2013/01/03(木)17:56 ID:BC6tD7as(10/11) AAS
>>941
確かに難しいみたいだな。

>>940
ああ、全くだ。
948: 2013/01/03(木)18:16 ID:BC6tD7as(11/11) AAS
リンク間違えたwww
>>940>>943ねwww
949
(1): 2013/01/03(木)18:53 ID:WKW52K/b(2/2) AAS
とりあえず断片化の弊害をひとつ
int1億個分の配列用意して添字0~10万までインデントするプログラムと
添字を1000ずつ増やして10万回インデントするプログラムを比べると
断片化したときにどれくらい実行速度おそくなるか見れる

かなり極端な例だけどねw
950: 2013/01/03(木)19:09 ID:lNTqjEnd(2/2) AAS
>>945
ほざきやがれ。白味噌こそ至高。超はんなり。
951
(1): 2013/01/04(金)17:45 ID:oXJzELqx(1) AAS
インデント・・・?
952: 2013/01/04(金)18:50 ID:/Y1k54OE(1) AAS
かなり極端なインクリメントだけどねw
953: 2013/01/04(金)20:21 ID:1LQvHzZA(1) AAS
>>951
素で間違えたわw
954
(6): 2013/01/05(土)05:55 ID:blAJcoX/(1) AAS
#include <iostream>
class Inner{
public:
void delete_self(){
//delete this; //自身をdelete
//this = NULL; //自身をNULL(左はエラー)
};
省17
955
(1): 2013/01/05(土)07:07 ID:jKk56rfs(1) AAS
>>954
thisは自身のアドレスだから変更出来ないし、仮に出来たとしてもobjの値は変わらないから意味がない
innerに**selfでも定義してobjのアドレス渡せば出来なくもないと思うけど

普通にA内でやればいいんじゃないの?
956: 2013/01/05(土)10:39 ID:PaEmLOIH(1) AAS
>>954
俺も>>955に同意だなぁ
文法的には可能だけど、人の道に外れてる
957: 2013/01/05(土)10:40 ID:DL/1aMkT(1) AAS
スマートポインタにしない理由が無い
958: 2013/01/05(土)23:36 ID:6cav/N/u(1) AAS
>>954
まずはメンバ関数名をgedatsu()にするんだ
959
(1): 2013/01/06(日)11:08 ID:gKY4QWAo(1) AAS
>>954
その為のスマポじゃ?
960: 2013/01/06(日)11:41 ID:wNZdSJOn(1/2) AAS
スマートポインタっていうのは知らなかったです
調べてみますありがとうございました。
961: 954 2013/01/06(日)11:43 ID:wNZdSJOn(2/2) AAS

962: 2013/01/06(日)15:11 ID:jfHdCFct(1) AAS
>>949
確かに3ms程度が計測出来た。

>>954
解決したのか。
>Innnerクラス内部からdeleteしてNULLを代入
って意図がよく分らんな。
親の変数を、子が直接いじれるとか、なんというか発想が「次世代型高級言語」だなw
省1
963: 2013/01/07(月)12:37 ID:Ypj77PMX(1) AAS
DWMに詳しい方いらっしゃいましたら教えてください。
DwmFlush()にて同期を取っているのですが
ウィンドウサイズが一定以上になるといきなり30FPSに落ちてしまいます。
PCの性能的には余裕で60FPS出そうなのですが
なぜこのように制限されてしまうのでしょうか?
964: 2013/01/07(月)20:49 ID:McpttzCQ(1) AAS
スマポは自殺したい場合の根本的解決にはならん気がするのだが
サンプルソースからはなんで自殺したいのかがわからんから
そもそも自殺する必要あるのかもわからんけど
965: 2013/01/07(月)20:57 ID:0sh5Q82W(1) AAS
外部からメソッド呼んでるし自殺の意味が無いから管理をスマポに任せろて事だろ
966: 2013/01/07(月)21:22 ID:l3WjGBS1(1) AAS
よう分からんけど、難しそう
967: 2013/01/08(火)09:00 ID:z802fMcU(1) AAS
難しい
968
(1): 2013/01/08(火)09:52 ID:kZxqHJAA(1) AAS
sharedとweakで安全に自殺出来ないかね?
自分自身のshared持っといて参照側はweak使うとか
969: 2013/01/08(火)14:06 ID:ubaFj8tR(1/2) AAS
thisをshared_ptrに変換できるクラスを作るには特殊な手順が必要だった気がする
970
(2): 2013/01/08(火)20:56 ID:qf9zAEDF(1/2) AAS
C言語でゲームを作ってみようと思ってるんですが、
おすすめのゲームプログラムの本はありませんか?
私は8年くらい前にプログラムを少しだけやっていたレベルです。
今ではほとんど忘れてしまったので、
もう一度、初めからやろうと思っています。
971: 2013/01/08(火)21:05 ID:fs6IBqjX(1) AAS
初めからやるゲームプログラミングの本なんてない。
C言語本からやりなさい。
972
(2): 2013/01/08(火)21:10 ID:uboPdkfh(1) AAS
14歳からはじめるわくわくゲームプログラミング
973
(2): 2013/01/08(火)21:14 ID:ubaFj8tR(2/2) AAS
昔やってたならどうかわからないけど
CとC++の区別もわからない状態で「C言語でやる」って言ってるのであれば
C++の概要を把握してもう一回どちらの言語でやるか考え直すべきだと思う

それとは別の問題で、スキルアップや勉強目的ではないのに
プログラミングやろうとするのは止めたほうがいいような気がする。
ただ単にゲームを作りたいだけならエディタを漁ってプログラミングにかける時間を
ゲームデザインの勉強に割いたほうが良いと思われる。
省1
974
(1): 2013/01/08(火)21:23 ID:Ko64W/I0(1) AAS
ゲームプログラミングにもよるからなぁ。
まさかコマンドラインでは満足しないだろうから、
基礎を固めた後にDirectXとか最低でもWindowsSDKとか。
或いはC++/CLIとかUnityとか。
そう考えればルート選択が昔と比べて随分複雑になったなぁ。
975
(1): 970 2013/01/08(火)21:49 ID:qf9zAEDF(2/2) AAS
皆さんありがとうございます
>>973の言った通り、一度言語の概要を把握してから考えて見ます。
私は資格を取るため勉強し、尚且つ趣味で新しく始めようと考えていました。
考えてる時、過去にC言語やってたからそれで行こうと軽い感じで思い今に至りました。
自分が考えてるより難しいこととは思ってもいませんでした。
976
(2): 2013/01/08(火)22:14 ID:Ns3Bg3Mj(1/2) AAS
自殺するという手段にそれほどの合理性というか、価値があるとも思えないんだけど

例えばCOMなんかではそな仕組み上、delete thisは頻出のフレーズだったけど
このスレであがってる自殺したいケースというと、例えば>>856あたりかな?

あえて自殺するのは単に美醜の感覚なのかな
977
(1): 2013/01/08(火)22:18 ID:Ns3Bg3Mj(2/2) AAS
ごめん>>976はアンカー忘れ。>>968宛て
978
(1): 2013/01/08(火)22:50 ID:OVw8/7Oj(1) AAS
実はフレームごとに生成・消去(自殺)するとか、
どういう構造で管理してるのかイマイチよくわからんかったんだが、
オブジェクトをdeque構造で管理しているならあり得るかとも思った。
それとも配列で、入れ替え&ループカウンタずらしでもしてるんかな。
マシン性能に依存したタスクシステムってわけだな。
979
(1): 2013/01/08(火)23:01 ID:dU9PHmtG(1) AAS
C言語ってことは組み込み系で働きたいの?
980
(1): 2013/01/09(水)03:22 ID:cCOUD0pQ(1) AAS
>>975
趣味でやるならCとDXライブラリ使って
>>972にもでてる本(昔のは誤植が多い)で
とりあえずゲームを作ってみるのがいいと思う
作ってあとで
>>974の言うようにいろいろある選択肢を選んでもいいし
>>973のようにエディタを使うでもいいし
省2
981: 2013/01/09(水)15:07 ID:1AzVNy17(1) AAS
>>979
あまり一般に知られてないけど、Unix系の業務インフラかもしれん
982
(1): 970 2013/01/09(水)21:42 ID:+PQ0+evL(1) AAS
>>959
趣味にしようと思っています。C言語を選んだのは、
昔、本屋でC言語の本を見つけ興味が沸き購入し、
C言語を少しやったからです。
>>980
とりあえず>>972の本を読んでみようと思います。
983
(1): 2013/01/09(水)21:46 ID:FusMjSdm(1) AAS
>>982
その本は俺もオススメだけど
ポインタや構造体がわからないレベルなら入門書を買うべきだと思う
984: 2013/01/09(水)21:50 ID:JGxAWztX(1) AAS
ブックオフとか古本屋に200円とか300円とかでC言語の本売ってるよ
985: 2013/01/09(水)22:17 ID:KXkEtFhK(1) AAS
おや、こんなところに105円で入手したリッチなカニチャーハン本が。
986: 2013/01/09(水)22:19 ID:SHei6O4/(1) AAS
>>976-978

>>856のタスク処理ってのはよく知らんので、適当に当てずっぽうで敵とか弾とか
自機みたいなもの、ゲーム内のエンティティをC++で記述する話と推測してみると
恐らくゲーム内での外部入力(押し倒されただの何かぶっかけられただの)に対する
ゲーム内での応答(振る舞い)を記述する部分だと思うんだけど、こういう部分って
自身のメモリ操作とか詳細な手続きにはあんま関心ないと思うんだよね

例えば、自身が生成された時にどのようにメモリを割り当てられたのか
省6
987: 2013/01/09(水)23:57 ID:n2uU3mE6(1) AAS
削除する対象が結果として自分になるとか言ってるし
わりと特殊なスタイルなんじゃないかなぁ
988: 2013/01/10(木)03:02 ID:JHYtLrYV(1) AAS
>>983

いやぁ、ポインタや構造体を理解するよりまず動くものを作れるようになるほうが
モチベーションは保てると思う。

そこで満足しちゃうと俺みたいに成長しないけど。
989: 847 2013/01/10(木)09:47 ID:PPN997+E(1) AAS
私の質問がまだ話題に残ってしまってるようなので、軽く事情を説明しといた方がよかったかな。

どういうときに自殺したくなるのかという話なんだけど、リストアップのときに必要になったんだ。
SLGで、世界がいくつかの地方に分割されている。各地方にはたとえば戦士、魔法使い、僧侶なんかの職業の人がいる。
ただしその地方にはある職業の人がいないかもしれないし、100人いるかもしれない。
で、その地方の詳細データを確認しようと思ったときに、各職業毎にまとめて一覧を表示したかった。
もちろん、その地方にその職業の人が何人いるかを確認して、結果を予測してからウィンドウを作り始めてもいいんだけど、それはちょっと気持ち悪い。
だから、とりあえず、「何人いるか知らないし、もしかしたらだれもいないかもしれないけど、適当に作り始めちゃってよ」ということにした。
省2
990: 2013/01/10(木)18:18 ID:+tuKUmyj(1) AAS
ゲーム内のキャラクターに対応したオブジェクトに処理詰め込んでるような設計だと自殺したいこともあるんじゃないかな
例えば被弾して削除したいときに、被弾の処理をそのオブジェクト自身がしてたらそのまま自分消したいよね

でも管理するクラスちゃんと作り込んでたら自殺する場面ってなさそうだな
991: 2013/01/10(木)18:57 ID:nRd29hG1(1) AAS
管理クラスがリストで保持してるアクターの位置を1つずつ更新して
終わったら1つずつ衝突判定して衝突があったら衝突イベントを
衝突イベントキューに予約しておいて全部の判定が終わったら
予約したイベントの中で重複したり無意味になるものを排除してから
キューのイベントを1つずつこなしていって消滅するやつがいるなら
消滅フラグをたててキュー内のイベントが全部終わったら消滅フラグが
立ってるやつを消滅させるとすると自殺させる暇がないな
992: 2013/01/10(木)22:03 ID:NUTO9jIe(1) AAS
どうでもいいが「自殺したい」とか読むとドキッとするw
993: 2013/01/11(金)12:11 ID:pXVVNmWd(1) AAS
俺もビックリした、自キャラがか
プログラミング切羽詰まって死にたくなっちゃったのかと
994: 2013/01/11(金)13:33 ID:T8efEkTC(1) AAS
正確には自殺させたいだよな。
995: 2013/01/11(金)14:03 ID:1OLgzzOv(1) AAS
それもイジメみたいで嫌だな
996: 2013/01/11(金)14:15 ID:yWv9+M/A(1) AAS
クラスのメンバーが自分の子を殺す、とか定番ジョークだよね
997: 2013/01/11(金)18:22 ID:pM3KIWAz(1) AAS
で、次スレは?
携帯で立てるのは面倒なんだな
998: 2013/01/11(金)19:12 ID:xdIUMDA+(1) AAS
しょうがないにゃあ

2chスレ:gamedev
999: 2013/01/11(金)19:58 ID:TAS2BFVS(1) AAS
ありがたいにゃあ
1000: 2013/01/11(金)20:07 ID:niGMKkbJ(1) AAS
1000ならC++が廃れてもう少し普通の人間に扱い易い言語に置き換わる
1001: 1001 Over 1000 Thread AAS
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.159s*