トップページ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/
0193名前は開発中のものです。2014/09/14(日) 14:26:42.23ID:wa/wX/Er
異常終了時のメモリダンプ(dmpファイル)を取ってもらって
それをIDEで開けばデバッグ実行してるような状態になるから
そこでどこでエラーが出たか、どの変数に何が入っているかを確認するといい

開発環境を入れるのは>>192と同意見、入れない方が良いと思う。
0194名前は開発中のものです。2014/09/14(日) 21:12:12.71ID:62kRP5LB
スタック破壊か関数のリンケージ間違い
関数ヘッダが実体と違うというウルトラCもありえなくはない
printf でバッファ破壊というオチはよくある罠

>なぜ知人B
俺は詳しくないが DEP の設定がどうのとたまに聞く
自PCで再現できればそれに越したことはないが、そうでなければ気にしても仕方ない
0195名前は開発中のものです。2014/09/15(月) 00:44:13.42ID:IlfRDj6O
>>192
どうせランタイム入れるから、変わらないんじゃないの?
>ネトゲが一部動かなくなった
まじか
0196名前は開発中のものです。2014/09/15(月) 00:44:19.95ID:GS0jslvN
プログラマの前で100%再現できりゃバグ修正は9割終わったようなもんだ、
とか言われるけど、やっぱ事実?w
0197名前は開発中のものです。2014/09/15(月) 01:33:48.17ID:Xt8gwGjX
・そのプログラマがそのアプリケーションの設計を把握している
・コンパイル前のソースコードがある
0198名前は開発中のものです。2014/09/15(月) 01:39:55.70ID:GS0jslvN
>>197
開発者ではない第三者の前で再現してどーすんだw
0199名前は開発中のものです。2014/09/15(月) 03:13:10.79ID:wd8jmKt8
「デバッグの手間が10に対して、再現の手間が90」という意味ではなw
0200名前は開発中のものです。2014/09/15(月) 07:07:16.38ID:wuAS4ub9
>>195
デバッガの例外動作関連に割り込んでるみたいだな
アンインストールしても何か残ってたし
0201名前は開発中のものです。2014/09/15(月) 20:14:31.20ID:+WwuNSKX
DirectX の設定を書き換えるのが好かん
0202名前は開発中のものです。2014/09/16(火) 09:20:44.20ID:4EKEuM8s
フラグメンテーションかもな〜。別名メモリーの虫食い取得状態。
0203名前は開発中のものです。2014/09/17(水) 02:32:28.35ID:lSNjy4CG
環境による問題はアンチウイルスとかサービスパック有無を疑うのも基本
0204名前は開発中のものです。2014/09/17(水) 06:50:46.77ID:2baRZfUF
>>202
アプリが大きいサイズの連続したメモリー空間が確保できないしか影響ないだろ
0205名前は開発中のものです。2014/09/17(水) 19:59:00.60ID:BSiz0TOu
SDL、DxLib、sfml以降でファイル読み込み・描画・音声・キー取得などができるゲームライブラリってあります?
cocos2dみたいに「フレームワーク」ほどいかない自由なのが好きなんだけど
0206名前は開発中のものです。2014/09/17(水) 20:20:12.05ID:2sT7Gz4p
Siv3Dってそういえばどうなったんだろう
0207名前は開発中のものです。2014/09/17(水) 21:26:51.10ID:T7ONrPQz
RPGのダメージ判定で、それぞれのキャラクターにvector型の通知配列用意して、
ダメージが発生した時その配列にpush_backして、キャラクターが更新される時にまとめて処理してるですが
その通知配列に何を入れるかすごい悩んでるんですが、他の人はどうやってやってるんですか?

今は、ダメージとか属性とかデバフ情報とかを伝える手紙のような構造体をvectorにpush_backして
ダメージを受けるキャラクター側の耐性とか加味して処理しようかなと考えてます

・攻撃発生時に構造体の自動変数を生成して、コピーして伝える
・攻撃発生時に構造体をインスタンス化して、ポインタを伝える
・予め攻撃通知用の構造体を静的な値(日本語としての静的)として持っておき、ポインタを伝える
の3つぐらいは思い付くのですが、それぞれ一長一短でどうしたものかなーと・・・
0208名前は開発中のものです。2014/09/17(水) 21:41:21.93ID:Ek0OO0vX
>>207
1つめはコピー量が気になる、2つめは毎度newするのが気になる、
ってことなら、3つめのでいいんじゃないの?
日本語としての静的の意味はよくわかんないけど
0209名前は開発中のものです。2014/09/17(水) 22:18:22.34ID:T7ONrPQz
>>208
武器を装備して殴りあうだけならいいんですが、
魔法とか攻撃手段が増えると、すごい勢いで増えるかなーと
0210名前は開発中のものです。2014/09/17(水) 22:40:21.67ID:Ek0OO0vX
>>209
構造がよくわからないからなんとも言えないけど、
3つのパターンともサイズに関してはあんまり変わらないよね
どうしても気になるなら、通知って方法自体からやり直してみるとか

メモリは必要なら潤沢に使ってもいいと思うけどね
自分なら5M、10Mくらいならそれが必要なら気にせず使うかな
0211名前は開発中のものです。2014/09/17(水) 22:49:18.55ID:T7ONrPQz
構造はFFみたいにゲージが貯まったら行動できるってやつで、システムはそのままです
同時攻撃されることも考えて・・・

そういえばこの通知をスタックしてって
自分の更新タイミングで一括処理する以外にどんな方法があるんですか?

アクションゲーム作った時と同じ構造で作ったんですが、逐次処理の方がいいんですかね
0212名前は開発中のものです。2014/09/17(水) 23:14:42.49ID:GQlJBbYl
3つ目でいいと思うなー
物理ダメ、魔法ダメ、属性、デバフ系とかをまとめた攻撃情報構造体みたいなものを用意
攻撃時に構造体へ情報を詰め込む
Character.Attacked(AttackInfo*)みたいな関数へ構造体を渡す
関数内で最終的なダメージを算出って感じ

FFみたいなゲージ戦闘なら審判みたいなものを用意して、攻撃側と防御側のステータスを渡して
審判が最終的なダメを計算、敵へダメージを与えるってのもありかも?
やるかはわからないけど、防御側のカウンターダメージとかもできそう
0213名前は開発中のものです。2014/09/17(水) 23:32:10.49ID:Ek0OO0vX
>>211
スタックせずに同時のタイミングを処理する別の方法としてなら、
ステータスを更新前と更新後用に分けといて、
同じタイミング中は更新前を参照して更新後を書き換えるとか?
0214名前は開発中のものです。2014/09/17(水) 23:34:50.13ID:T7ONrPQz
3つめが強そうなので3つめで一度実装してみることにします
ありがとうございました
0215名前は開発中のものです。2014/09/18(木) 00:24:30.25ID:64bH7faF
>>207
一時的なオブジェクトのインスタンス化と削除は、
コンパイラによって最適化される場合があるらしいね
ソースはgems
0216名前は開発中のものです。2014/09/18(木) 02:30:55.45ID:E/1zPl06
>>211
>構造はFFみたいにゲージが貯まったら、
>行動できるってやつで、システムはそのままです

ATB(Active Time Battle)は、FFの特許じゃないの?
もう、特許が切れているの?
0217名前は開発中のものです。2014/09/18(木) 05:08:15.17ID:djmncf26
http://www.ekouhou.net/ビデオ・ゲーム装置,その制御方法および制御ディバイス/disp-B,2794230.html
これか?
出願1991年だから切れてるんじゃない?
しかしこういう特許ってゲームのルールは特許にならないからって回りくどくてめんどくさい書き方してるな。でもこれに書いてある通りに実装しなくても似てるだけで訴えるんだろ?
あほくさ
0218名前は開発中のものです。2014/09/18(木) 11:19:02.99ID:l5OvmxOh
ただでさえかったるいのに
余計な待ち時間を増やすとか
あほくさ
0219名前は開発中のものです。2014/09/18(木) 19:22:54.91ID:5nIXhLpZ
>>206
ありがとう!参考になります
当たり判定が直感的で良さそうですね
0220名前は開発中のものです。2014/09/18(木) 19:34:17.61ID:UPAtERIr
個人的な利用なら特許侵害にならないんじゃなかったっけ
0221名前は開発中のものです。2014/09/18(木) 20:12:10.67ID:djmncf26
うっかり良いものが出来たとしても自分と家族ぐらいにしか配布出来ないけどな。
0222名前は開発中のものです。2014/09/18(木) 23:10:54.55ID:5nIXhLpZ
ATBの話って製作側だとよく聞く話だけど、
実際にスクエニに連絡して確認したことあるよっていう人がいないも案外おかしいよな
0223名前は開発中のものです。2014/09/19(金) 03:27:56.19ID:HwK1MKsP
ATBは一定時間経たないと、ユーザが入力できないため、
ユーザが待つ必要があり、時間のムダ

一般的には、ユーザが待たずに、入力し終わってから、
技を発動するまで、プログラム側で待つ

FFがなぜ、ATBのような非効率なシステムを発明したのか、疑問に思う
0224名前は開発中のものです。2014/09/19(金) 06:39:00.50ID:SD9Sg4bw
ARPGを作りたい人とコマンド式RPGを作りたい人との妥協の産物かと
0225名前は開発中のものです。2014/09/19(金) 07:39:46.20ID:kDTQDM8B
変わったことやりたかったんでしょ。
0226名前は開発中のものです。2014/09/19(金) 18:20:13.98ID:PqYwrc40
リアルタイム重視といいつつアイテムリストとか魔法が異常に増えてて洗練されて無かったよね
サガみたいにスロット少なくするのとかアクションゲームみたいに1ボタンごとに割り当てにしないと
ユーザーに不利にしかならない
0227名前は開発中のものです。2014/09/19(金) 21:54:17.52ID:GkCFCk/k
ボタンごとにアクションを割り当ててるゲームっていうと
スタオとかテイルズオブシリーズとかか
あれも魔法とかをリストから選択する機会は無くはないけど
さすがに選択中はゲーム進行止まってたな
0228名前は開発中のものです。2014/09/21(日) 20:54:11.89ID:+/5x6E0N
親クラスのprivate関数を子クラスでオーバーライドって出来る?
親クラスのルーチンワーク上で呼び出せれば
その関数を子クラスから呼ばせたくないけど、定義はさせたいっていうのが可能なのかなーって

例えばアクションゲームでキャラクターが攻撃を受けた時に、
その親クラスがコリジョン処理する時にノックバックするのかとか、状態異常をキャラクターに追加するとか
0229名前は開発中のものです。2014/09/21(日) 21:19:32.29ID:yu1YxmSd
そもそもゲームロジック部分をC++で書くのは疲れそう
0230名前は開発中のものです。2014/09/21(日) 23:30:37.12ID:+/5x6E0N
>>229
HSPとか?
Javaは論外としてC#とか向いてるのかな
0231名前は開発中のものです。2014/09/22(月) 07:38:18.22ID:NiqYAxp5
スクリプト使ってるんじゃね?
ただ、スクリプト使う状況って、意外とリファクタリングで何とかなる状況が多いけどな
0232名前は開発中のものです。2014/09/22(月) 07:49:16.65ID:7IVENz3s
一番書き慣れていて使いこなせるのがC++だから疲れないけどな
DLLで組めば状態の変数をDLL側で持たないかぎり本体起動しっぱなしで入れ替えもできるし
組み込みスクリプトも何度か使ったが、外部データに関連する計算式程度しか有効的に活用出来なかったわ
0233名前は開発中のものです。2014/09/22(月) 08:56:45.93ID:NiqYAxp5
スクリプトはシナリオとかの文章をゲーム途中に挿入する場合に使うけどな
あと、個別の動作を順序だてて使いたい場合には使った方が楽
0234名前は開発中のものです。2014/09/22(月) 09:08:18.28ID:NiqYAxp5
>>228
protectedやfriendじゃ駄目なの?
0235名前は開発中のものです。2014/09/22(月) 09:11:46.10ID:eY0HQZ22
>>234
protectedじゃ子クラスから何度も呼び出されてもわからないじゃん
呼び出せるのは親クラスだけ、ただし親クラスが呼び出す関数を子クラスは定義できる
みたいなのがあったらいい感じに縛れそう
0236名前は開発中のものです。2014/09/22(月) 09:23:12.77ID:NiqYAxp5
呼び出し専用関数作って、その中でカウントしとけば良くね?
0237名前は開発中のものです。2014/09/22(月) 11:02:48.99ID:bWbweNXI
試してみたけど子クラスで関数を定義する以上, 子クラスからはその関数を制限なく呼び出せちゃうね
どうしてもやりたいときは関数ポインタ使うか, 236 のようにカウンタとかフラグで親クラスが管理するしかないんじゃね?
0238名前は開発中のものです。2014/09/22(月) 12:34:08.13ID:pzX41AB7
>>228
private virtualって出来なかったっけ?
0239名前は開発中のものです。2014/09/22(月) 12:35:34.50ID:pzX41AB7
あ、子クラスからは呼べないようにしたいのか、
じゃあ無理だ。ごめん。
0240名前は開発中のものです。2014/09/22(月) 19:40:03.48ID:BR22T/mE
>>235
@親のクラスで関数オブジェクトを返り値とする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/mE
あーいやprivate virtualで行けるのか、これMSの独自仕様じゃあないよね?
0243名前は開発中のものです。2014/09/24(水) 17:43:40.72ID:mcOEvjH/
なあ、フラグメンテーション対策ってどうやればいいの?
0244名前は開発中のものです。2014/09/24(水) 17:49:53.05ID:cFhvO8dH
ゲーム中に使うメモリを全部最初に確保してしまう
0245名前は開発中のものです。2014/09/24(水) 17:53:27.57ID:u5gVrNuz
1.気にしない(お勧め)
2.メモリ管理を完ぺきに把握し、完璧にスケジューリングする
3.スマートポインタ等を使ってガベージコレクションを実装する
0246名前は開発中のものです。2014/09/24(水) 17:57:31.66ID:1Xr/Cbhv
>>244
規模の小さいものならそれでも構わないけど、例えばskyrimみたいなオープンワールドのゲームだと無理だよね。
0247名前は開発中のものです。2014/09/24(水) 18:10:10.66ID:1Xr/Cbhv
>>245
GC実装しただけでメモリの断片化が無くなったら苦労しないよ。
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
>>243
・サイズの増減がないデータは起動時に確保・終了時に解放
・増減があるなら最大数を決めて固定領域を使いまわす
 この時個々の要素を同じサイズに揃えることが大事
 サイズが違うならまた別の領域にまとめる
・あるいは処理順一定で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
>>253
さあ?自分のリスト構造は自作で、基本は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
>>256
解ってないな。さすが使わないだけある。
0258名前は開発中のものです。2014/09/24(水) 21:57:16.58ID:LrfGaICk
複数のスレッドから同じ領域に同時に書き込みしなけりゃ良いんだろ?
別々にメモリ取得して別々のコンパクションで監理すれば良いじゃん。
そりゃ、スレッド間通信をどう解決するかという問題は残るが。
0259名前は開発中のものです。2014/09/25(木) 02:06:25.63ID:zb4pUBj7
スレッド間通信をするためにコンパクションを追加しよう
0260名前は開発中のものです。2014/09/25(木) 06:27:40.78ID:KZOA8+6u
せやな。スレッド間通信回数×2のコンパクションが余分に必要やな。
0261名前は開発中のものです。2014/09/25(木) 09:20:46.75ID:SiUQKnDu
個人制作ならリソース使いまくりでいいよな
よっぽどじゃなけりゃ断片化の弊害なんて目立たないし
商業のデカいタイトルだとGC独自実装してるらしいが
0262名前は開発中のものです。2014/09/25(木) 10:09:34.46ID:Wwt/1FNM
そもそも普通は動的メモリなんてそうそう使わんだろ
0263名前は開発中のものです。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
>>261
数時間のプレイの成果が謎のエラーでパーになったぞ どうしてくれる
0266名前は開発中のものです。2014/09/25(木) 10:57:38.17ID:Q3KR10H7
>>265
謎のエラーならメモリの断片化関係無いだろ何言ってんだ。
そもそも断片化しようが無尽蔵に増えていくわけでも無いのにそこ勘違いしてないか?
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:NZ65e36X
>>263
32bitマシンは切り捨てですか?
0270名前は開発中のものです。2014/09/25(木) 12:22:47.53ID:NZ65e36X
>>268
フラグメンテの問題は使用メモリが少ないにもかかわらずメモリ取得出来なくなるんだが?
数バイトのゴミのような大量のメモリ取得が大きなメモリの再取得を失敗させるから問題なわけで
0271名前は開発中のものです。2014/09/25(木) 12:27:57.77ID:0U2Nzxja
>>270
ヒープに展開したメモリが断片化してんだからOS読みの使用量は肥大するだろ
0272名前は開発中のものです。2014/09/25(木) 12:36:56.59ID:NZ65e36X
ああ、ヒープサイズを見れば良いか
ただな、vectorしか使ってない、mallocやnewを使ってない状況では、メモリリークは起きない
0273名前は開発中のものです。2014/09/25(木) 12:51:35.78ID:Wwt/1FNM
ふっふっふっ、数バイト程度の1024個の動的メモリーと10Mバイト程度の動的メモリーがあれば、
32Bit環境でフラグメンテーションを発生させる事などたやすいわ〜!!
0274名前は開発中のものです。2014/09/25(木) 13:11:46.20ID:Wwt/1FNM
>>273の例だと最大10Gバイトのメモリーの浪費が出来るけどなwww
ちなみに32Bit環境の最大メモリー容量は4Gバイト
0275名前は開発中のものです。2014/09/25(木) 13:57:33.94ID:7St3vxLx
OpenGL使ってると、PCによっては突然カクカクすることがあるんだけど、何が原因なんだろう
PCによってなる場合とならない場合があるし、突然そうなったり直ったりする
誰か分かる人いる?
0276名前は開発中のものです。2014/09/25(木) 14:05:40.51ID:0U2Nzxja
>>273
これwindowsで試しにやってみたら、断片化起きないのな
なんでだと思って調べてみたら、小さいサイズと大きいサイズのアロケートが
ぜんぜん遠くの場所に確保されて、断片化しないように勝手に配置してた

ググるとLow Fragmentation Heap(vista以降でデフォルトで有効)って機能が在るらしく、
これのせいで断片化が起きにくくなってるらしい
これはwin(vista以降)限定にはなるけど、こんな機能があるなら断片化はそんなに気にしなくてもいいのかも
0277名前は開発中のものです。2014/09/25(木) 14:56:31.50ID:Q3KR10H7
>>274
どうやるんだよ。具体的に言って見ろよ
0278名前は開発中のものです。2014/09/25(木) 15:51:45.34ID:Wwt/1FNM
>>276
あれ!?て事はうちで今起きてるフラグメンテーションは……メモリの機能を解析しないと解らないか

>>277
悪い、古いOSで5Gまでしか無理だった
奇数番目の数バイトのメモリと10Mのメモリを配置が動くようにサイズを交互に変更して……
って事を考えてたんだが……
0279名前は開発中のものです。2014/09/25(木) 15:51:52.00ID:eZ0WvKEX
>>274
10Mバイト程度と数バイトが連続して並べられるような実装のmallocが前提でもいいぞ。例よろしく。
0280名前は開発中のものです。2014/09/25(木) 15:58:51.73ID:eZ0WvKEX
>>278
数バイトと10Mバイトを交互に変更したらなんで5Gもいくんだよ。
古いOSってなんだよfreeした領域を再利用しないような糞実装の環境か?どんな環境だよ。少なくとも64BitのOSなんだよな?
0281名前は開発中のものです。2014/09/25(木) 16:42:29.27ID:Wwt/1FNM
1 数バイトのメモリの容量を増やす
10Mバイトのメモリの後ろに数バイトのメモリが動く
2 10Mバイトのメモリの容量を増やす
最初に動かした数バイトのメモリの後ろに10Mバイトのメモリが動き
10Mの空き領域が出来る
3 今の前から2番目の数バイトのメモリを増やす10Mバイトのメモリの後ろに……あれ!?
0282名前は開発中のものです。2014/09/25(木) 16:54:07.84ID:mt5vjM8o
>>281
普通に考えて2で出来た10MBの空き領域に3で増やした数バイトが配置されるだろ。
0283名前は開発中のものです。2014/09/25(木) 17:28:22.48ID:Wwt/1FNM
むうっ、10Mバイトの空き領域おきに数バイトのメモリ取得をすればフラグメンテーションの完成!
と簡単に考えていたが、難しい
0284名前は開発中のものです。2014/09/25(木) 17:47:48.32ID:GasQ7lmc
OSから見えるメモリとアプリがみえるメモリ空間は別物、最悪OS側では非連続でも良いんだよ
VirtuaAllocで予約だけして埋めてけばアプリから見たらメモリ確保に失敗できるだろうよ
0285名前は開発中のものです。2014/09/25(木) 17:49:24.77ID:aYvhPGQT
メモリのフラグメンテーションなんて気にしても意味ない。
圧倒的にページデフォルトのほうがロスが大きいし。
フラグメンテーション解消もOS依存だし。
そこにこだわるくらいならメモリプールして再使用したほうがマシ。
0286名前は開発中のものです。2014/09/25(木) 18:33:30.97ID:Wwt/1FNM
ページデフォルトって?ぐぐっても出ないんだが
0287名前は開発中のものです。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:A4xH7Wvc
HSPで手応て掴んでから
0290名前は開発中のものです。2014/09/26(金) 07:13:47.30ID:zpPM/1OB
DXライブラリ使うと楽だよ

DXライブラリ 総合スレッド その18
http://peace.2ch.net/test/read.cgi/gamedev/1399459468/
0291名前は開発中のものです。2014/09/26(金) 09:00:00.52ID:FT0pZNED
DirectX直で使うなら
入門ゲームプログラミング (Professional Game Developerシリーズ) 大型本 ? 2014/1/30
がいいみたいだぞ
WindowsゲームプログラミングでWin32apiについても勉強しておくといいかも

DXライブラリ使った方が楽だけど
0292名前は開発中のものです。2014/09/26(金) 10:12:15.38ID:gU5F+WDx
DXライブラリのいいとこどりして、自由にしたい部分(特に3D面)自分で作るのが一番
■ このスレッドは過去ログ倉庫に格納されています