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

C/C++ゲーム製作総合スレッド Part6

■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。2014/07/08(火) 19:30:19.51ID:J+zVqUil
ゲーム製作におけるC/C++全般に関するスレです。

元スレ
DXライブラリ 総合スレッド その17
http://toro.2ch.net/test/read.cgi/gamedev/1383795645/

前スレ
C/C++ゲーム製作総合スレッド Part1
http://toro.2ch.net/test/read.cgi/gamedev/1337516528/
C/C++ゲーム製作総合スレッド Part2
http://toro.2ch.net/test/read.cgi/gamedev/1351015269/
C/C++ゲーム製作総合スレッド Part3
http://toro.2ch.net/test/read.cgi/gamedev/1357899040/
C/C++ゲーム製作総合スレッド Part4
http://toro.2ch.net/test/read.cgi/gamedev/1376262450/
C/C++ゲーム製作総合スレッド Part5
http://peace.2ch.net/test/read.cgi/gamedev/1389798031/
0584名前は開発中のものです。2014/11/08(土) 11:30:01.41ID:unIj8h+A
プログラム内であまり時間を使っていない部分までマルチスレッドにしてもパフォーマンスが落ちるだけ
0585名前は開発中のものです。2014/11/08(土) 12:09:00.67ID:mcbpZdSD
DirectX11のDeffered Contextとか使うとうまくマルチコア化できるんかな
気になってはいるんだけど試せてないんだよな
0586名前は開発中のものです。2014/11/08(土) 12:09:24.51ID:hcp3vt2I
>>583
1フレーム内で不整合起きなきゃいいんだしそんな神経質にやることないと思うけど
描画スレッド内で他スレッドから書き込まれる領域とスレッド内で使う領域分けておけばいいんじゃない
0587名前は開発中のものです。2014/11/08(土) 12:10:50.95ID:/8NTzH0L
マルチスレッドを使ってドヤ顔したい年頃なんだろう
0588名前は開発中のものです。2014/11/08(土) 12:11:13.95ID:mcbpZdSD
綴り間違ってた、「Deferred Context」だった
まさにGPUへのコマンドリストの構築と発行をやってくれるっぽいんだが
0589名前は開発中のものです。2014/11/08(土) 12:11:48.40ID:V2oqVXE4
自分もいまいちDefferedContextの使いどころが分からんくて
ImmediateContextしか使ってない。

DefferedContextは並列化の点で少し中途半端なものらしく、
この点を改善するのもDirectX12の目的みたいよ。

早くDirectX12を触りたいなぁ。
0590名前は開発中のものです。2014/11/08(土) 12:51:36.67ID:omvuHK+K
そもそもウィンドスレッドとゲームスレッドにすら処理を分担できてないゲームが珍しくないけどな
重い処理をやってるとウィンドが動かなくなるとかw
0591名前は開発中のものです。2014/11/08(土) 13:25:48.11ID:omvuHK+K
そもそもマルチスレッドでプログラムするのは良いけれど、コア数いくつのマシンを前提にしてる?
あと、コア数の足りないマシンは切り捨てるの?
0592名前は開発中のものです。2014/11/08(土) 14:33:58.84ID:kQCHHHLC
コア数少なかったらOSが勝手にスレッド振り分けてくれるんじゃないの?

まぁそうじゃなくても、今どきPCでゲームやろうって人がシングルコアなんて無いと思うけど
0593名前は開発中のものです。2014/11/08(土) 14:46:37.18ID:omvuHK+K
>>592
おまえは>>582を読まなかったのか?
あと、PCはネットに繋ぐための道具とかワープロの代わりとしか思ってない人は珍しくないし、
そーゆー人はPCが壊れるまで買い換えない
0594名前は開発中のものです。2014/11/08(土) 14:50:59.54ID:zEUiJRA7
ゲーム用途じゃないじゃんw
0595名前は開発中のものです。2014/11/08(土) 14:54:18.14ID:CsoGcbNX
DVD再生装置にインディーズゲーム、使い道はまだまだ広いぞwww
2Dゲームの信者はまだまだ多い
0596名前は開発中のものです。2014/11/08(土) 15:00:01.75ID:mKjDtcTQ
エロゲじゃないんだw
0597名前は開発中のものです。2014/11/08(土) 15:46:47.80ID:hKybVK3f
2Dっつーか古いOSでしか動かないゲーム?

いいこと思いついた、お前ら古ゲーを新型OSでも動くように移植しようぜ
え?俺?ソースもないのにそんなのやる気ないです
0598名前は開発中のものです。2014/11/08(土) 17:38:42.74ID:Gya1/bv4
みんなはC++でゲーム開発するときシーン制御ってどうやってやってる?
王道とかあるの?
0599名前は開発中のものです。2014/11/08(土) 17:52:05.59ID:R8iM6laI
そのシーンについて、もう少しkwsk

(ジャンルによって、ツールによって)意味が異なるので、そこんとこの絞り込みを
0600名前は開発中のものです。2014/11/08(土) 18:03:53.69ID:R8iM6laI
>>584
ですよねぇ…

>>591
個人的なケースでは、自分が使ってるi5のノートPCのバッテリ駆動状態で
できるだけ長く動かせるように仕方なく組んだ事ならありますねぇ

即売会でのデモ用(試遊用)として、予備バッテリーを何個も持って行きたく
なかったので。あと夏なので、あまりアッチッチーになるのも困るんで
0601名前は開発中のものです。2014/11/08(土) 18:11:24.52ID:Gya1/bv4
>>599
例えばRPG作るとして、タイトル、セーブデータ選択、マップ、戦闘、またマップ、町のマップ、お店で購入、みたいなシーンの管理
今あげた奴の中でも、戦闘までシーンとして管理していいのかどうかとか
0602名前は開発中のものです。2014/11/08(土) 19:04:20.72ID:kQCHHHLC
例えばRPGのマップ画面で戦闘になると、戦闘画面へと切り替わるじゃん
でもマップ画面でショップ画面になっても、画面とは名ばかりの操作できるウィンドウが表示されるだけなのかもしれないし
0603名前は開発中のものです。2014/11/08(土) 19:26:18.89ID:omvuHK+K
戦闘シーンこそ別個で管理しないとややこしいことになりそうなんだが……
0604名前は開発中のものです。2014/11/08(土) 20:42:42.63ID:hcp3vt2I
ウィンドウ出す程度なら分けなくていいんじゃないの
こうしなきゃいけないなんて決まりはないんだから複雑さ見て決めりゃいいと思うけど
0605名前は開発中のものです。2014/11/08(土) 21:13:23.69ID:omvuHK+K
自分の場合、マップシーンでは、セリフはメッセージウィンドウ、
メニューはメニューウィンドウ、買い物は販売メニューウィンドウ、
所持金は金額ウィンドウ、ってな感じに分けてるが、
戦闘シーンは別プログラムで処理している
タイトルシーンではメニューウィンドウ出してるし
あと、フィールドマップと町マップとダンジョンマップでは、
データを変えて同じプログラムで処理している
この辺はわざわざ別個のプログラムにする事は考えもしなかったな
0606名前は開発中のものです。2014/11/08(土) 21:33:54.63ID:0KWVrT87
セガ本はStateパターンって話は聞いた
0607名前は開発中のものです。2014/11/08(土) 22:19:46.15ID:zEUiJRA7
そういやゲーム関連での定番、デザパタって決まっているもん?
やっぱりGoFの流用?
0608名前は開発中のものです。2014/11/08(土) 23:09:04.26ID:xWQV6qjI
ゲームつくろーのやつ見てたな
0609名前は開発中のものです。2014/11/08(土) 23:25:12.94ID:hcp3vt2I
タスクシステム
0610名前は開発中のものです。2014/11/08(土) 23:48:44.70ID:zEUiJRA7
>>609

振る舞いに関するパターンやね。メモリ管理も含めた。
0611名前は開発中のものです。2014/11/09(日) 00:03:30.39ID:tU74c/u+
マルチタスクって平行に複数の動作を同時に行うって事だからね
スクリプト言語のコルーチンを使えば簡単簡単
マルチスレッド?あれは同じメモリに複数アクセスすると例外を発生させるから難しいんだよ、
処理速度は早くなるけどな
0612名前は開発中のものです。2014/11/09(日) 00:20:14.91ID:tU74c/u+
>>589
スレッディング・ビルディング・ブロックに対応するのかな?
0613名前は開発中のものです。2014/11/09(日) 02:11:09.89ID:b6C1rYs5
>>601
以下、あくまでも私感

演出上の場面(シーン)として。テレビゲームの典型的な和RPG(例:ドラクエ)
同様にマップ移動と戦闘で完全に切り替えてるなら、別シーンとして区切る

ゲームルールというかゲームマスター視点で。マップ移動中と戦闘中では
時間も移動距離も各キャラの見た目も状態もできる事も挙げればキリがない
くらい仕事が異なるので、別シーンとして区切る

プログラミングの視点で。自分は戦闘だけでテストできるようにしときたい派。
戦闘における値のやり取りが面白さの肝だと思う戦闘厨(ストーリーとか設定
とか見た目なんて飾りだよ派)なので、まず戦闘が面白くなるまで練り込みたい
から。マップ移動時とは別のモジュールとして区切る
0614名前は開発中のものです。2014/11/09(日) 02:45:25.53ID:CGct2DUQ
入れ子にすればいいじゃん
なんで階層を一つまでに制約してるん
0615名前は開発中のものです。2014/11/09(日) 07:19:30.89ID:b6C1rYs5
>>614
んー。そんな話はしていないと思うんだが…何か誤解があるようなので
もう少しkwsk頼む。整理するために確認させてもらっていいかな?

・モジュール分割する事 (或いはシーンを分ける事)
・入れ子(ネスティング)しない事 (或いは階層を一つまでに制約する事)

これらは直結するか?(YES/NO)
0616名前は開発中のものです。2014/11/09(日) 10:41:43.85ID:IF+insbO
http://getnews.jp/archives/54427
マップ画面中に戦闘画面とか
0617名前は開発中のものです。2014/11/09(日) 11:21:15.79ID:ot2OM0IR
昔、どこかでチラッと聞いただけだから細かいことは分からないんだけど、
階層構造付きのStateパターン(?)って、どうやるの?

Scene
├Title
├Game
|├Play
|├Pause
|└Result
└Config

みたいな構成で、Game::PauseからTitleに飛ぶとか。
単に名前空間で分けるだけにして、シーンとしては並列に扱うのが楽だとは思うんだけどさ。
0618名前は開発中のものです。2014/11/09(日) 11:29:19.51ID:8zzCuCYW
スタック
0619名前は開発中のものです。2014/11/09(日) 11:54:42.19ID:ot2OM0IR
ああすまん、流れを読み違えてた。
あるシーンの中で、別のシーン(メニュー画面など)を挿入するという話だったのね。失敬した。
0620名前は開発中のものです。2014/11/09(日) 11:58:46.71ID:mPPfhXcl
考え方としてはスタックに詰んで行く感覚で良いけど
実際の持ち方としてはリストの方がいい。
RPGで戦闘画面の背景にマップ画面を使ったり、
ARPGでメニュー画面開いてる間も敵が動くようにできる

Stateパターンはシンプルな動作の切り替えに留めて、
シーンの遷移はAndroidのintentを参考にして作りこんだ方が良い
0621名前は開発中のものです。2014/11/09(日) 12:05:20.17ID:ot2OM0IR
スタックによるシーン処理で思い出した。

テイルズシリーズのどれかだったか、
フィールドでメニュー画面を開いて、そこからタイトル画面に戻ると、
暗転中にフィールドのBGMが一瞬だけ流れるというネタがあったなあ。

シーンそのものはともかく、BGMをスタックで管理してたからなんだろうか。
0622名前は開発中のものです。2014/11/09(日) 17:00:17.96ID:IF+insbO
atoi関数ってなんでatoiなの?
stoiとかctoiとかcptoiとかならわかるけどなんでaなの?
0623名前は開発中のものです。2014/11/09(日) 17:02:41.77ID:EiTaW/mC
>>622
asciiコードから変換だから
0624名前は開発中のものです。2014/11/09(日) 21:42:38.03ID:6dA8GNBZ
>>623
あいうえおのaかと思ってた
0625名前は開発中のものです。2014/11/11(火) 00:52:56.10ID:XQVF6NRm
それだったらABCのAの方が説得力あるだろ
0626名前は開発中のものです。2014/11/11(火) 01:38:28.59ID:Ml1KtPS5
どうでもいい突っ込みをすると、ABCを変換するわけじゃないし。
0627名前は開発中のものです。2014/11/11(火) 09:36:35.03ID:KfLTdZLl
アルファベットのaらしい
0628名前は開発中のものです。2014/11/11(火) 11:07:29.28ID:uQazbP0q
http://ja.m.wikipedia.org/wiki/Atoi
0629名前は開発中のものです。2014/11/11(火) 11:46:03.47ID:NdomKUg0
>>627
いつからアラビア数字はアルファベットになったんだよ
0630名前は開発中のものです。2014/11/11(火) 14:06:45.04ID:l6H8mfSN
シェーダーとかネットワークって

シェーダー・・・座標変換と色の計算
バッファ・・・シェーダーの変数
バインド・・・バッファの適用

ソケット・・・ネットワークの変数
send・・・データの送信
recv・・・データの受信

っていう感じであってる?
0631名前は開発中のものです。2014/11/11(火) 15:51:23.77ID:FlAn94PS
>>630
そういう理解で構わないから、実際に使って(試して)(手を動かして)みたほうがいい

あれこれ疑問を持つのはその後でいい
0632名前は開発中のものです。2014/11/12(水) 10:33:52.89ID:3FzO9Rn6
いまの時代cとdirectxでゲーム作ることってあるんですか?
学習にはいいと思うけど、現実的ではないように思えるんだけど…
0633名前は開発中のものです。2014/11/12(水) 11:21:02.43ID:tRAW/G/v
いまの時代もゲームはほとんど全部CかC++で出来ている
0634名前は開発中のものです。2014/11/12(水) 12:10:58.56ID:nj7UpIrk
つまり632は現実を知らなかったと
0635名前は開発中のものです。2014/11/12(水) 12:13:44.26ID:2wLmFIfA
CPU性能が上がり続ければC以外の選択肢も増え続けたんだろうけどな
やっぱトロい言語じゃ駄目だぁな
0636名前は開発中のものです。2014/11/12(水) 12:15:34.55ID:Jp7fJIBG
お前らのc++ゲーム制作知識を
wikiかどこかに集約してくれ(他力本願
0637名前は開発中のものです。2014/11/12(水) 12:25:14.03ID:U9TuOuDT
今のCPUがC言語に合わせた進化してるだけなんだけどね
動的言語はハードウェア側での最適化が難しいけど
0638名前は開発中のものです。2014/11/12(水) 12:25:50.29ID:AuBOaCee
なおC#もとい海栗も増えてきている模様…結局C系列じゃん

>>636
言い出しっぺの法則
0639名前は開発中のものです。2014/11/12(水) 12:36:22.31ID:NowaE2rM
なぁに、いずれ並列処理用言語が出来て、他の言語は駆逐されるよ
今は速度が必要なら並列化を目指せばいいからな
0640名前は開発中のものです。2014/11/12(水) 13:07:42.51ID:dBZQKyvT
ガベコレ持ち言語じゃ作りにくいよな
C#がどうなってんのかわかんないけど
0641名前は開発中のものです。2014/11/12(水) 13:18:03.99ID:uNUWqhDA
c++もスマートポインタやらSTLやら使わない?
0642名前は開発中のものです。2014/11/12(水) 13:24:07.08ID:nj7UpIrk
量子コンピューターの思考イメージを展開する、初の思考パターンイメージコンパイラの誕生である
0643名前は開発中のものです。2014/11/12(水) 14:19:53.36ID:Uu3QrSPF
海外の公害基準でCPUの性能止められてるし、当分は今のままだろう
0644名前は開発中のものです。2014/11/12(水) 14:33:14.13ID:ovXfI3JT
C#やJavaが主流になれないのは速度より良いライブラリが無いからじゃないの
UnityでC#の人気が爆発してるし、薄いクラスライブラリで良いのがあればいいのだが
http://d.hatena.ne.jp/Nagise/20090322/1237723661
0645名前は開発中のものです。2014/11/12(水) 17:16:29.25ID:5VJqGqvp
>>632
そういう理解で構わないから

@自分に適した道具選べ
Aそれ使って面白いもの作れ
B人に遊んでもらえ

これ出来る奴は、お前の疑問とは縁がない。関係ないからな
0646名前は開発中のものです。2014/11/12(水) 17:46:38.37ID:AuBOaCee
ま、まあ2と3は「自分が楽しめる物を作る」だけでもいいと思うよ
別にすべての開発者が作った物を「俺のゲームをやってくれ!!!!1」ってガンガン公開する訳じゃないから
他人に公開するにしても、自分すら楽しめないようなゲームはクソの中のクソ キングオブクソ
0647名前は開発中のものです。2014/11/12(水) 21:20:04.82ID:SYY1txKH
C++&DirectXでガリガリと組み上げていくことに喜びを感じる
0648名前は開発中のものです。2014/11/12(水) 21:53:11.34ID:GHnQwsv6
Unreal Engineは最新のバージョン4では3までにあったスクリプト言語のUnreal Scriptが無くなってC++で書くようになったしな。
Visualスクリプトエディタが強力になったのもあるけど
0649名前は開発中のものです。2014/11/13(木) 07:26:45.01ID:R9H0HNzV
アンリアルエンジンの本って売ってるけど、アンリアルエンジン未経験者でも出来るようになるの?
誰か買ったことある人いたら教えて
0650名前は開発中のものです。2014/11/13(木) 11:32:24.41ID:pEhVoeVb
C++は代わりが無いぐらい重要な言語なのは分かるが、最新の仕様とか見てると
もう一度根本的に一から設計しなおしてくれと言いたくなるぐらいグチャグチャになってる…

最新の仕様も含めて深く理解するにはとてつもなく困難な言語なのは間違いない
0651名前は開発中のものです。2014/11/13(木) 11:36:07.43ID:HK6+TuGr
いろいろ盛り込んだからやりたいようにやってくれってことでしょ
やりたいことがはっきりしてれば目的は達成できる
0652名前は開発中のものです。2014/11/13(木) 12:45:39.27ID:UMYfazR7
D言語実装待ったなしですか分かりますん

いろいろあるからこそ汎用性はダントツのトップだし、
掘ろうと思えばどこまででも掘れる拡張性もある
バグの出やすさに目をつぶれば開発者理想の言語じゃないですか
なお初心者には
0653名前は開発中のものです。2014/11/13(木) 16:15:51.23ID:mQixsQeM
初心者はCとして使うから
0654名前は開発中のものです。2014/11/13(木) 23:08:38.36ID:5guIEaf6
パフォーマンス必要な箇所はCぽく書いて
生産性が必要な所はOOPで書く
みたいに分けられて良い…のかな
0655名前は開発中のものです。2014/11/14(金) 13:14:55.84ID:5wiMUdhH
「船頭多くして船山に登る。それがC++」
「水陸両用ですね。最高じゃないですか」
0656名前は開発中のものです。2014/11/14(金) 20:31:26.83ID:yjqeER4j
C++が一番気持ちいい
0657名前は開発中のものです。2014/11/14(金) 20:36:28.88ID:BUwtlw7S
そうでしょ?
0658名前は開発中のものです。2014/11/14(金) 21:31:13.67ID:PGsqEl+k
眠たくなるからやめれ
0659名前は開発中のものです。2014/11/15(土) 00:35:42.62ID:QsaQ9+YO
VC++2015にはgeneratorが入るらしい。
スクリプト使う理由が一つ減った?
0660名前は開発中のものです。2014/11/15(土) 01:07:43.80ID:ocCnTJxq
サイニー?
0661名前は開発中のものです。2014/11/15(土) 01:51:29.18ID:FYIlPqIe
generatorって?ググっても英語ばっかだし……
0662名前は開発中のものです。2014/11/15(土) 02:44:54.65ID:csIS2THd
>>661
C++でyieldが使えるようになる
0663名前は開発中のものです。2014/11/15(土) 06:20:29.97ID:QsaQ9+YO
>>661
http://blogs.msdn.com/b/vcblog/archive/2014/11/12/resumable-functions-in-c.aspx
0664名前は開発中のものです。2014/11/15(土) 07:59:55.58ID:v6LA9C/H
yieldさんpythonでお世話になってます。
0665名前は開発中のものです。2014/11/15(土) 08:21:47.08ID:a7IQ1KUV
これバイナリってどうなってんだろ
generatorの関数内の変数は静的な領域に確保されんのかな
普通にスタック積んでたらこんなん実装出来ないよな
0666名前は開発中のものです。2014/11/15(土) 08:33:02.98ID:v6LA9C/H
>>665
Boost.Coroutine
0667名前は開発中のものです。2014/11/15(土) 09:14:58.45ID:/7FTHmq8
>>663
何が嬉しいのかさっぱり分からん・・・(汗)
コロチン??
0668名前は開発中のものです。2014/11/15(土) 09:51:15.18ID:v6LA9C/H
>>667
例えばオブジェクトを順番に返したいときに楽するならlistとかvectorに入れて返すよね?
でも一つずつ順番に処理していくだけであれば一度に全部作ってメモリに持っておくのはメモリの無駄

parserとか作るとき、なるべく省メモリにしたいけど(XMLのSAXみたいに)使い勝手は落としたくないときとかに便利
06696672014/11/15(土) 10:08:49.83ID:/7FTHmq8
>>668
あ、なるほど、データ作りながら処理かけていけるわけか。
サンキュー!
0670名前は開発中のものです。2014/11/15(土) 11:15:19.49ID:a7IQ1KUV
>>666
よくわからんけどヒープに確保されんのかな
0671名前は開発中のものです。2014/11/15(土) 12:26:57.64ID:VJG7MPsg
ヒープ以外にどこに確保されるってんだ
0672名前は開発中のものです。2014/11/15(土) 12:41:40.07ID:v6LA9C/H
>>670
http://d.hatena.ne.jp/melpon/touch/20091212/1260584012
0673名前は開発中のものです。2014/11/15(土) 17:09:58.52ID:VJG7MPsg
yieldってなんだ
誰か一言で言い表して
0674名前は開発中のものです。2014/11/15(土) 17:13:41.84ID:skgsPBOl
>>673
コルーチン
http://en.wikipedia.org/wiki/Coroutine
0675名前は開発中のものです。2014/11/15(土) 17:23:51.51ID:VJG7MPsg
>>674
関数の途中でデータ返せるってだけか
でもこれ返り値受け取る側はどういう処理になるんだ?
受け取ったらそのまま次の行に行きそうだけど、そうすると次呼び出された時中断したところから再開するのか?
0676名前は開発中のものです。2014/11/15(土) 17:28:35.72ID:IlcXR0Tx
「終わり」って言うまでキャッチボールだな
0677名前は開発中のものです。2014/11/15(土) 21:07:43.80ID:csIS2THd
関数の途中でデータ返せるってだけって、だけっておま・・・・
何のためにLua導入してまでコルーチン使ってると思ってるのかと・・・・
0678名前は開発中のものです。2014/11/15(土) 21:28:20.19ID:nxADb3aY
使わない人にはいらないものだし
0679名前は開発中のものです。2014/11/15(土) 21:49:25.06ID:Cvi6GQeL
コルーチンを使うといっぺんに何十行も減らせる場合があるのですよ
サブルーチンでマルチスレッド制御をするよりもお手軽だし
0680名前は開発中のものです。2014/11/15(土) 23:50:56.76ID:/7FTHmq8
>>679
へぇ〜。
コルーチンを使ったテクニック・トリック集みたいなの欲しいな。
0681名前は開発中のものです。2014/11/16(日) 22:25:19.06ID:BmMQH27T
コルーチンってノンプリエンプティブなスレッド制御のことでしょ?
オレの理解がおかしいのかこれw
0682名前は開発中のものです。2014/11/17(月) 00:42:18.99ID:WLL2OPoM
昔のウィンドウズじゃあるまいし
0683名前は開発中のものです。2014/11/17(月) 10:29:07.85ID:Ld14qEhv
>>677
別にLua導入せずともsetjump longjumpでコルーチンは作れるけどね
非同期処理が同期処理と同じように書けるから滅茶苦茶便利なのは使った人にしか分からんだろうね
■ このスレッドは過去ログ倉庫に格納されています