C/C++ゲーム製作総合スレッド Part6
■ このスレッドは過去ログ倉庫に格納されています
0001名前は開発中のものです。
2014/07/08(火) 19:30:19.51ID:J+zVqUil元スレ
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/
0229名前は開発中のものです。
2014/09/21(日) 21:19:32.29ID:yu1YxmSd0230名前は開発中のものです。
2014/09/21(日) 23:30:37.12ID:+/5x6E0NHSPとか?
Javaは論外としてC#とか向いてるのかな
0231名前は開発中のものです。
2014/09/22(月) 07:38:18.22ID:NiqYAxp5ただ、スクリプト使う状況って、意外とリファクタリングで何とかなる状況が多いけどな
0232名前は開発中のものです。
2014/09/22(月) 07:49:16.65ID:7IVENz3sDLLで組めば状態の変数をDLL側で持たないかぎり本体起動しっぱなしで入れ替えもできるし
組み込みスクリプトも何度か使ったが、外部データに関連する計算式程度しか有効的に活用出来なかったわ
0233名前は開発中のものです。
2014/09/22(月) 08:56:45.93ID:NiqYAxp5あと、個別の動作を順序だてて使いたい場合には使った方が楽
0234名前は開発中のものです。
2014/09/22(月) 09:08:18.28ID:NiqYAxp5protectedやfriendじゃ駄目なの?
0235名前は開発中のものです。
2014/09/22(月) 09:11:46.10ID:eY0HQZ22protectedじゃ子クラスから何度も呼び出されてもわからないじゃん
呼び出せるのは親クラスだけ、ただし親クラスが呼び出す関数を子クラスは定義できる
みたいなのがあったらいい感じに縛れそう
0236名前は開発中のものです。
2014/09/22(月) 09:23:12.77ID:NiqYAxp50237名前は開発中のものです。
2014/09/22(月) 11:02:48.99ID:bWbweNXIどうしてもやりたいときは関数ポインタ使うか, 236 のようにカウンタとかフラグで親クラスが管理するしかないんじゃね?
0238名前は開発中のものです。
2014/09/22(月) 12:34:08.13ID:pzX41AB7private virtualって出来なかったっけ?
0239名前は開発中のものです。
2014/09/22(月) 12:35:34.50ID:pzX41AB7じゃあ無理だ。ごめん。
0240名前は開発中のものです。
2014/09/22(月) 19:40:03.48ID:BR22T/mE@親のクラスで関数オブジェクトを返り値とするprotected関数を定義しといて、
子側でオーバーライドし、実行したい処理(関数オブジェクト)を定義し、返すようにする。
A親のクラスのprivate関数で、↑のprotected関数を呼び出し、さらに返り値である
関数オブジェクトを実行するようにしておく。
こうすれば、protected関数を複数回呼び出しても、処理自体が実行されないので
チーム間での疎通ミスは減らせるはず。
ちなみに、関数を子クラス内に定義して関数オブジェクトとして渡すのではなく、
protected関数をオーバーライドするブロック内でラムダ式で記述すれば、
子クラス内で処理を複数呼び出してしまうミスも防ぐことができる
こういう内部処理を外出しするの、D言語とかJavaだと簡単なんだけど、
C++だとラムダ式で返そうと思ったら参照をキャプチャしないといけないんだっけ?
0241名前は開発中のものです。
2014/09/22(月) 19:48:34.84ID:BR22T/mE子クラス側で定義する関数内で、その関数をなんの脈絡もなく再起呼び出しして
無限ループに陥らせることは誰にも防ぐことも縛ることもできないっていうやつよwww
おそらくだけど>>235が縛りたいと言ってるのはその類の話になると思う。
複数回呼ばれて困る処理を子クラスで定義可能な以上、防ぐことはできない。
変更可能な状態を子クラスに公開し、かつ、その処理を子クラスに委ねてるからね・・・。
0242名前は開発中のものです。
2014/09/22(月) 22:25:57.61ID:BR22T/mE0243名前は開発中のものです。
2014/09/24(水) 17:43:40.72ID:mcOEvjH/0244名前は開発中のものです。
2014/09/24(水) 17:49:53.05ID:cFhvO8dH0245名前は開発中のものです。
2014/09/24(水) 17:53:27.57ID:u5gVrNuz2.メモリ管理を完ぺきに把握し、完璧にスケジューリングする
3.スマートポインタ等を使ってガベージコレクションを実装する
0246名前は開発中のものです。
2014/09/24(水) 17:57:31.66ID:1Xr/Cbhv規模の小さいものならそれでも構わないけど、例えばskyrimみたいなオープンワールドのゲームだと無理だよね。
0247名前は開発中のものです。
2014/09/24(水) 18:10:10.66ID:1Xr/CbhvGC実装しただけでメモリの断片化が無くなったら苦労しないよ。
Androidで使われてるVMのdalvikは最後までコンパクションの実装出来なかったし。
0248名前は開発中のものです。
2014/09/24(水) 18:30:05.75ID:FbXuVkZ2基本的にはメモリハンドルでメモリを管理して、
必要なときだけポインタを返すやり方
メモリー配置が変わるとポインタの配置が変わるんでね
ちなみにメモリの再配置はメモリ取得のたびに行ってるから、
メモリ取得の多い場合は処理が重くなる欠点がある
0249名前は開発中のものです。
2014/09/24(水) 18:34:03.41ID:FbXuVkZ2基本的には一度取得したメモリを再利用するやり方
0250名前は開発中のものです。
2014/09/24(水) 18:53:43.12ID:FbXuVkZ2もう片方には取得するメモリサイズを入れておく、なんて事もした
0251名前は開発中のものです。
2014/09/24(水) 18:59:44.67ID:Xjyy1rtc・サイズの増減がないデータは起動時に確保・終了時に解放
・増減があるなら最大数を決めて固定領域を使いまわす
この時個々の要素を同じサイズに揃えることが大事
サイズが違うならまた別の領域にまとめる
・あるいは処理順一定でLIFOにできるならスタックを真似てぶち込むのも一考
0252名前は開発中のものです。
2014/09/24(水) 19:46:03.82ID:LrfGaICk例えば、使わなくなったメモリはリストから外して、
使う場合には使わなくなった領域をリストに再登録するとか
0253名前は開発中のものです。
2014/09/24(水) 19:48:26.36ID:RqPQCow/0254名前は開発中のものです。
2014/09/24(水) 20:02:12.50ID:LrfGaICkさあ?自分のリスト構造は自作で、基本はvector使って作ってる。
STLのリスト構造は使わなくなったらdeleteしてるらしいから、
あまり信用してないんだよな。まあ、増減量が一定量を越えると
自分のやり方でもフラグメンテーションの危険は高まるわけだが。
0255名前は開発中のものです。
2014/09/24(水) 20:07:55.87ID:BMl/3hMSそのメモリを触る可能性のあるスレッドを全て止めなきゃいけなかったり、メモリをメンバーに持つクラスを(標準ライブラリ含む)を使用できなかったりデメリット多すぎる
0256名前は開発中のものです。
2014/09/24(水) 20:18:47.07ID:LrfGaICkスレッドはあんまし使わないから関係ないかもしれないけど
0257名前は開発中のものです。
2014/09/24(水) 21:46:52.60ID:2qY3dsir解ってないな。さすが使わないだけある。
0258名前は開発中のものです。
2014/09/24(水) 21:57:16.58ID:LrfGaICk別々にメモリ取得して別々のコンパクションで監理すれば良いじゃん。
そりゃ、スレッド間通信をどう解決するかという問題は残るが。
0259名前は開発中のものです。
2014/09/25(木) 02:06:25.63ID:zb4pUBj70260名前は開発中のものです。
2014/09/25(木) 06:27:40.78ID:KZOA8+6u0261名前は開発中のものです。
2014/09/25(木) 09:20:46.75ID:SiUQKnDuよっぽどじゃなけりゃ断片化の弊害なんて目立たないし
商業のデカいタイトルだとGC独自実装してるらしいが
0262名前は開発中のものです。
2014/09/25(木) 10:09:34.46ID:Wwt/1FNM0263名前は開発中のものです。
2014/09/25(木) 10:16:44.99ID:GasQ7lmcコンパクションなんて画面の切り替えみたいな暗転で良いシーンで
シリアライズしてオブジェクト作り直しで
64bitならメモリ空間が広くなったから気にせず標準実装でいくけどな
0264名前は開発中のものです。
2014/09/25(木) 10:21:10.03ID:BS6aeyL9固定メモリ配置(って言い方で通じるかな、名前が分からん)にして
どっからどこのアドレスまで何のデータ、って設計までやりそうな印象がある
0265名前は開発中のものです。
2014/09/25(木) 10:22:30.69ID:4YQaZ6ET数時間のプレイの成果が謎のエラーでパーになったぞ どうしてくれる
0266名前は開発中のものです。
2014/09/25(木) 10:57:38.17ID:Q3KR10H7謎のエラーならメモリの断片化関係無いだろ何言ってんだ。
そもそも断片化しようが無尽蔵に増えていくわけでも無いのにそこ勘違いしてないか?
0267名前は開発中のものです。
2014/09/25(木) 11:46:44.21ID:Wwt/1FNMそもそもメモリのフラグメンテーションは見かけ以上にメモリを浪費するから問題になるわけで
0268名前は開発中のものです。
2014/09/25(木) 12:15:21.37ID:0U2Nzxja普通はフラグメントじゃなくてメモリリークを疑うわな
0269名前は開発中のものです。
2014/09/25(木) 12:16:23.34ID:NZ65e36X32bitマシンは切り捨てですか?
0270名前は開発中のものです。
2014/09/25(木) 12:22:47.53ID:NZ65e36Xフラグメンテの問題は使用メモリが少ないにもかかわらずメモリ取得出来なくなるんだが?
数バイトのゴミのような大量のメモリ取得が大きなメモリの再取得を失敗させるから問題なわけで
0271名前は開発中のものです。
2014/09/25(木) 12:27:57.77ID:0U2Nzxjaヒープに展開したメモリが断片化してんだからOS読みの使用量は肥大するだろ
0272名前は開発中のものです。
2014/09/25(木) 12:36:56.59ID:NZ65e36Xただな、vectorしか使ってない、mallocやnewを使ってない状況では、メモリリークは起きない
0273名前は開発中のものです。
2014/09/25(木) 12:51:35.78ID:Wwt/1FNM32Bit環境でフラグメンテーションを発生させる事などたやすいわ〜!!
0274名前は開発中のものです。
2014/09/25(木) 13:11:46.20ID:Wwt/1FNMちなみに32Bit環境の最大メモリー容量は4Gバイト
0275名前は開発中のものです。
2014/09/25(木) 13:57:33.94ID:7St3vxLxPCによってなる場合とならない場合があるし、突然そうなったり直ったりする
誰か分かる人いる?
0276名前は開発中のものです。
2014/09/25(木) 14:05:40.51ID:0U2Nzxjaこれwindowsで試しにやってみたら、断片化起きないのな
なんでだと思って調べてみたら、小さいサイズと大きいサイズのアロケートが
ぜんぜん遠くの場所に確保されて、断片化しないように勝手に配置してた
ググるとLow Fragmentation Heap(vista以降でデフォルトで有効)って機能が在るらしく、
これのせいで断片化が起きにくくなってるらしい
これはwin(vista以降)限定にはなるけど、こんな機能があるなら断片化はそんなに気にしなくてもいいのかも
0277名前は開発中のものです。
2014/09/25(木) 14:56:31.50ID:Q3KR10H7どうやるんだよ。具体的に言って見ろよ
0278名前は開発中のものです。
2014/09/25(木) 15:51:45.34ID:Wwt/1FNMあれ!?て事はうちで今起きてるフラグメンテーションは……メモリの機能を解析しないと解らないか
>>277
悪い、古いOSで5Gまでしか無理だった
奇数番目の数バイトのメモリと10Mのメモリを配置が動くようにサイズを交互に変更して……
って事を考えてたんだが……
0279名前は開発中のものです。
2014/09/25(木) 15:51:52.00ID:eZ0WvKEX10Mバイト程度と数バイトが連続して並べられるような実装のmallocが前提でもいいぞ。例よろしく。
0280名前は開発中のものです。
2014/09/25(木) 15:58:51.73ID:eZ0WvKEX数バイトと10Mバイトを交互に変更したらなんで5Gもいくんだよ。
古いOSってなんだよfreeした領域を再利用しないような糞実装の環境か?どんな環境だよ。少なくとも64BitのOSなんだよな?
0281名前は開発中のものです。
2014/09/25(木) 16:42:29.27ID:Wwt/1FNM10Mバイトのメモリの後ろに数バイトのメモリが動く
2 10Mバイトのメモリの容量を増やす
最初に動かした数バイトのメモリの後ろに10Mバイトのメモリが動き
10Mの空き領域が出来る
3 今の前から2番目の数バイトのメモリを増やす10Mバイトのメモリの後ろに……あれ!?
0282名前は開発中のものです。
2014/09/25(木) 16:54:07.84ID:mt5vjM8o普通に考えて2で出来た10MBの空き領域に3で増やした数バイトが配置されるだろ。
0283名前は開発中のものです。
2014/09/25(木) 17:28:22.48ID:Wwt/1FNMと簡単に考えていたが、難しい
0284名前は開発中のものです。
2014/09/25(木) 17:47:48.32ID:GasQ7lmcVirtuaAllocで予約だけして埋めてけばアプリから見たらメモリ確保に失敗できるだろうよ
0285名前は開発中のものです。
2014/09/25(木) 17:49:24.77ID:aYvhPGQT圧倒的にページデフォルトのほうがロスが大きいし。
フラグメンテーション解消もOS依存だし。
そこにこだわるくらいならメモリプールして再使用したほうがマシ。
0286名前は開発中のものです。
2014/09/25(木) 18:33:30.97ID:Wwt/1FNM0287名前は開発中のものです。
2014/09/25(木) 18:39:35.35ID:aYvhPGQTページフォールト - Wikipedia
ページフォールト (page fault) とは、プログラムが物理メモリがマップされていない仮想アドレス空間上のページにアクセスしたときにハードウェアが発生する割り込み(または例外)である。
ページフォールトを処理するソフトウェアは一般にオペレーティングシステム (OS) の一部であり、ページフォールトを発生させるハードウェアを一般にメモリ管理ユニットと呼ぶ。
OSのメモリ管理がページフォールトを処理し、その仮想アドレスにアクセスできるようにするか、無効なアクセスであるとしてページフォールトを発生させたプログラムを強制終了させることができる。
名前にフォールト(障害)とあるものの、ページフォールトは必ずしも致命的なエラーではない。
Windows、Unix系OS(Mac OS X、Linux。*BSD、Solaris、AIX、HP-UXなど)、z/OSといった仮想記憶方式を採用するOSでは、
ページフォールトは普通に発生するし、必須な機能でもある。
マイクロソフトは(Windows Vistaなどの)リソースモニタの最近のバージョンで、ページフォールトの意味で「ハードフォールト」(hard fault) という呼称を使っている[1]。
0288名前は開発中のものです。
2014/09/26(金) 02:25:48.99ID:m0bZOMy5ゲーム開発を勉強したいんだけどどういう本を買えばいいかわからない
言語はC++で描画はDirectXを使いたい
とりあえず明快C言語の入門編は買った
0289名前は開発中のものです。
2014/09/26(金) 03:16:50.45ID:A4xH7Wvc0290名前は開発中のものです。
2014/09/26(金) 07:13:47.30ID:zpPM/1OBDXライブラリ 総合スレッド その18
http://peace.2ch.net/test/read.cgi/gamedev/1399459468/
0291名前は開発中のものです。
2014/09/26(金) 09:00:00.52ID:FT0pZNED入門ゲームプログラミング (Professional Game Developerシリーズ) 大型本 ? 2014/1/30
がいいみたいだぞ
WindowsゲームプログラミングでWin32apiについても勉強しておくといいかも
DXライブラリ使った方が楽だけど
0292名前は開発中のものです。
2014/09/26(金) 10:12:15.38ID:gU5F+WDx0293名前は開発中のものです。
2014/09/26(金) 10:16:07.11ID:rbkJ86iO0294名前は開発中のものです。
2014/09/26(金) 12:18:19.00ID:+75O60pj0295名前は開発中のものです。
2014/09/26(金) 15:10:36.26ID:m0bZOMy5C++で行きたい
>>290
それはどう言う物?
>>291
DirectXに関してはそのProfessional Game Developerとか言うの買ってみる
Win32apiってのでお勧めの本はあったりする?
>>294
出来る
0296名前は開発中のものです。
2014/09/26(金) 15:43:11.22ID:KjwlBlc20297名前は開発中のものです。
2014/09/26(金) 16:17:40.31ID:JcYHmNqsDXライブラリはDirectXのラッパー
初心者でも簡単にゲームを作れるように製作された
0298名前は開発中のものです。
2014/09/26(金) 17:48:05.16ID:rO+kEazw0299名前は開発中のものです。
2014/09/26(金) 18:04:39.11ID:9JMnzgXVgame engine architecture
game programming gems
取り敢えず俺が読んだ本でよかったもの
最近やってないから内容ほとんど忘れたけど
0300名前は開発中のものです。
2014/09/26(金) 19:01:22.83ID:bysjYWQH0301名前は開発中のものです。
2014/09/27(土) 17:06:21.54ID:4H/ikRQa0302名前は開発中のものです。
2014/09/27(土) 17:09:38.13ID:yBneoUhB一つのファイルにアーカイブして暗号化したものを読み込む
0303名前は開発中のものです。
2014/09/27(土) 22:59:20.87ID:wImin9kVソリューションエクスプローラーにリソースフォルダあるけど、なんかexeのアイコンぐらいしかわからん
0304名前は開発中のものです。
2014/09/27(土) 23:08:35.84ID:SGVF4lSG0305名前は開発中のものです。
2014/10/02(木) 00:06:30.72ID:fnVH62pXこれってグラフィックVRAMでも起きますよね?しかもメーカーによって発生頻度が変わるという。
0306名前は開発中のものです。
2014/10/02(木) 12:09:22.18ID:zEULmnAZ0307名前は開発中のものです。
2014/10/02(木) 12:58:09.55ID:iGYHLveA複数のアプリでVRAMを取り合った結果GPU上に実際にあるかは保証できないし
0308名前は開発中のものです。
2014/10/04(土) 22:09:19.67ID:fjoq6jVy0309名前は開発中のものです。
2014/10/05(日) 02:33:34.79ID:V/yeiJ3y0310名前は開発中のものです。
2014/10/05(日) 03:23:02.94ID:ofmLJ6L4メリットを感じない。
C/C++で書くとしてもゲームじゃないから板違い。
自己解凍したいだけならググれ。
0311名前は開発中のものです。
2014/10/05(日) 09:24:05.22ID:Xq3Ljg/Vこれ結局どうやるの?
0312名前は開発中のものです。
2014/10/05(日) 09:32:21.92ID:644ev0/vとかでググればわかるだろ
プログラミングの前にグーグル先生の使い方覚えろよ
0313名前は開発中のものです。
2014/10/05(日) 09:46:06.79ID:aV15d1fGhttp://code.msdn.microsoft.com/windowsdesktop/10-4ca748ce
0314名前は開発中のものです。
2014/10/05(日) 10:35:25.80ID:Y65zx5bAhttp://en.wikipedia.org/wiki/List_of_installation_software
0315名前は開発中のものです。
2014/10/11(土) 14:23:54.11ID:W7Sb4d1k触れている間、すごい勢いでHPが減ってしまいます
その攻撃は一回だけダメージを受けてあとは無視したいんですが、どういうふうに実装すればいいのかわかりません
キャラクターが直前の受けた攻撃を覚えるというのでもいいんですが、「連続攻撃」などがあるため、兼ね合い上無理です
0316名前は開発中のものです。
2014/10/11(土) 14:31:25.31ID:yKOIaJY/その攻撃にリスト持たせて相手の参照保持するとか
0317名前は開発中のものです。
2014/10/11(土) 15:52:45.46ID:VK47TOFi・無敵時間を作る
・触れてる間ずっと減るという前提で威力を調節する
このへんか?
0318名前は開発中のものです。
2014/10/11(土) 19:19:54.03ID:ftnQTcbt一回ダメージを主人公に与えた敵キャラは主人公に再ダメージ与えるには一定時間かかるようにするとか
連続攻撃の時だけインターバル無効にして
0319名前は開発中のものです。
2014/10/12(日) 05:36:54.90ID:H/GXxxmgあのクッソ高いVisualStudioProfessional2013とか使ってんの?
0320名前は開発中のものです。
2014/10/12(日) 05:45:57.20ID:EhXtC2jR0321名前は開発中のものです。
2014/10/12(日) 07:49:44.05ID:J+1JVnSpいや、使ってるのはVisual Studio Professional 2012だ
数年おきに買い換えてるけどね
0322名前は開発中のものです。
2014/10/12(日) 07:55:19.92ID:/BVTES1n0323名前は開発中のものです。
2014/10/12(日) 08:01:53.97ID:J+1JVnSp・Windows8アプリを作れる
後、何があったかな?まあ、買う意味はあまり無かったが
0324名前は開発中のものです。
2014/10/12(日) 08:05:24.48ID:J+1JVnSpというのがあったか
0325名前は開発中のものです。
2014/10/12(日) 08:23:20.45ID:lmLFkKE0Intel コンパイラもアドインとして実装だし
アプリ作るのにMFCよりATLがついてるのとリソースエディタがあるのが楽
ゲーム向けといえばシェーダデバッガが使える。Pixは使えない環境が増えたから
0326名前は開発中のものです。
2014/10/12(日) 08:29:03.38ID:5ggxpAbS0327名前は開発中のものです。
2014/10/12(日) 08:38:04.82ID:J+1JVnSp検索しても概念しか出てこないんだが
0328名前は開発中のものです。
2014/10/12(日) 08:47:31.90ID:M/9KBN8Z商業利用は可能らしい
■ このスレッドは過去ログ倉庫に格納されています