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

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

レス数が1000を超えています。これ以上書き込みはできません。
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/
0002名前は開発中のものです。2014/07/08(火) 20:06:44.54ID:5wDx0zvv
忘れてた

DXライブラリ 総合スレッド その18
http://peace.2ch.net/test/read.cgi/gamedev/1399459468/
0003名前は開発中のものです。2014/07/08(火) 22:28:56.27ID:HDpYeZ9B
こういったRPGツクール(を再生するソフト)のオープンソース版を作りたい。これはフラッシュへコンバートしてるがオープンじゃない。エクセルはオープンオフィスでも動作する。
ドラゴンファンタジー2ってソフトが良い出来で、オープンソフトで動作させて改良もしたい。



ゲームをブラウザで!RPGツクール2000、WOLF RPGエディタ、NScripterが動くサイト - NAVER まとめ
RPGツクールやWOLF RPGエディター、NScripterをご存じだろうか。
どれも有名なゲームのエンジンであるが、これらがブラウザ上で動作するウェブサイトを発見したのでここで紹介したい。
http://matome.naver.jp/odai/2137760829980740001



カテゴリ:ロールプレイング | Plicy [プリシー]
http://plicy.net/GameSearch?Genre_Mode=1&;Genre_Select=0
0004名前は開発中のものです。2014/07/09(水) 00:33:05.16ID:/9oaau4B
秘密の話

超一流大の超一流サークルに味噌っかすとして在籍したけど
「戻り値」という奴は漏れなく糞だった
一流の先輩と同期の一流の素質持ちは「返り値」と呼んでいた

それ以来、相手の実力を測る一指標になった
0005名前は開発中のものです。2014/07/09(水) 00:42:18.61ID:gH6YrqIg
ウケる
0006名前は開発中のものです。2014/07/10(木) 23:08:04.49ID:BdedQXe0
じゃあnullの入ったポインタはなんて言うの
0007名前は開発中のものです。2014/07/10(木) 23:56:25.48ID:2LHVKMhd
ぬるぽ〜
0008名前は開発中のものです。2014/07/12(土) 11:17:35.85ID:ncc3HdV6
VisualStudio漬けの奴は一度Eclipseでゲーム作ってみた方がいい
ポインタとか配列少し組み合わせただけでインテリセンス全く効かなくてIDEが考えるのやめるから
素のプログラミング能力が鍛えられるぞ
0009名前は開発中のものです。2014/07/12(土) 11:44:15.86ID:7m2fpbr8
VS使うと脳が衰退する的ななにか
0010名前は開発中のものです。2014/07/12(土) 14:26:52.71ID:vQ3bn+KM
vi使えよ
0011名前は開発中のものです。2014/07/12(土) 15:31:31.54ID:dx44IWET
そんな無駄なことしてないで
VS使って削減した時間で技術書読んだ方が良い
0012名前は開発中のものです。2014/07/12(土) 19:27:51.35ID:YFwp2REv
コンピュータに出来ることは全部やらせてしまえってのがPGの本質だな
0013名前は開発中のものです。2014/07/13(日) 23:54:43.48ID:6xdbF51m
STLとか普通に使ってる?自分の上司(Win95時代が彼の黄金期だった)はひたすら
std::string, map, vectorとか避けてたけど自分はフツーに使っちゃってるんだよね。
0014名前は開発中のものです。2014/07/13(日) 23:56:16.44ID:2b5ueZ89
C++でSTL使わないって何の罰ゲームなのん
0015名前は開発中のものです。2014/07/14(月) 00:05:45.54ID:ghns6Q0L
俺は使ってないが、それは単に使い方がわからんだけだし、
使い方知ってりゃ使うかもしれん。
0016名前は開発中のものです。2014/07/14(月) 00:06:33.81ID:ghns6Q0L
あ、まったく使ってないわけじゃないか。一部は使ってるな。
0017名前は開発中のものです。2014/07/14(月) 00:21:08.41ID:RkncYO6G
STLの書き方なんとかならないのかな
0018名前は開発中のものです。2014/07/14(月) 06:38:37.12ID:4dgjpkas
なら自分で書けば良いじゃん
0019名前は開発中のものです。2014/07/14(月) 06:54:19.85ID:rCKkTZCt
STLは詳細知らずに使うと面倒なバグの原因になるし、よくわからんものは使わないっていうのは判断として間違ってないな
0020名前は開発中のものです。2014/07/14(月) 10:44:14.50ID:89yPaujn
>>13
そういうのってご本人から理由を聞くのが一番早いと思うんですよねぇ

例えば組込では、不具合が事故に繋がるような制御部とか、かなりカッチリ
とした規約を設ける場合とかありますし。ターゲットハードウェアの仕様上
の都合で使える選択肢に各種の制限が加わる場合も今でもありますし

それと人材流動性が低い場合、社内で整備された資産が「標準」ですから。
それが「要求される機能を満足してます」「みんなが既に習得してます」
「既に安定しており、信頼されてます」などなど、諸々の理由で使われます

一方で人材流動性が高いとか、社内の資産が乏しいとか、様々な理由で
プログラマの裁量権が大きい(臨機応変にやってください状態)の場合は
承認プロセス無しにどんどん新しいライブラリやツールを導入しますね
0021名前は開発中のものです。2014/07/14(月) 15:04:44.76ID:Ic3STpJM
ゲーム作るときってPhysXって使う?
それともオクツリーとの判定で済ませる?
0022名前は開発中のものです。2014/07/14(月) 15:33:33.84ID:zcJRIfiP
>>21
PhysXは個人使用ならライセンス的に......
0023名前は開発中のものです。2014/07/14(月) 20:28:44.19ID:89yPaujn
少なくともPC用のバイナリ版SDKについては商用・非商用を問わず
ライセンスフィーとかロイヤリティの類は発生しませんよ。お金の面
では心配無用かと

http://www.nvidia.co.jp/object/physx_downloads.html
> The NVIDIA binary PhysX SDK is 100% free for both commercial and
>non-commercial use

数年前、地方の即売会でジャケット詐欺の物理18禁ゲーを200円で配布
した際、事前に海外の開発者向けのコミュニティで、その手の話題の中で
便乗質問しまして、ライセンス的にはノープロブレムって言われました
0024名前は開発中のものです。2014/07/15(火) 00:01:33.50ID:qX1m7C3+
物理エンジンってどうやってプログラム上で使うの?
自分が定義した座標情報とかを他所に任せて移動方向とかフィードバックがくるのか?

全然想像つかない
0025名前は開発中のものです。2014/07/15(火) 09:29:57.46ID:fXHr03lw
キャラクターの位置とか障害物の位置とかがうまくゲーム内の状況と一致するように、物理エンジン内に箱を作る
勝手に物理エンジン内でモノが動く(ゲームキャラクター側には何の影響もない)
必要なタイミングで、物理エンジン内の箱の位置や角度情報を取り出す
その位置や角度をし、自分のゲーム内のキャラクタに適用する
0026名前は開発中のものです。2014/07/15(火) 10:30:27.70ID:bF6wBS74
すげぇな。そんなシステムなのか。
0027名前は開発中のものです。2014/07/15(火) 12:49:35.84ID:YEdbM4Lm
MMDがいい例だよ
腕と髪に剛体が仕組まれてて、腕の動きに剛体がついていく
腕の剛体が髪の剛体にあたると髪の剛体が動いて、髪の動きとなる
0028名前は開発中のものです。2014/07/18(金) 00:32:45.27ID:RFAJhKUJ
キャラの動きとか物理エンジンに丸なげしたらすごく楽でなー。。。
0029名前は開発中のものです。2014/07/18(金) 18:24:17.00ID:HNYPZCeU
「不安定な足場」を物理エンジンに任せようとするとどうなるの?
例えば飛行船の上で戦うとか

キャラクターだから自立はできる、けど飛行船の揺れは影響させたいし、>>25の解説だけ聞くと物理エンジン内の空間ではキャラクターを表すオブジェクトが倒れそう

まぁ倒れないんだろうけど
0030名前は開発中のものです。2014/07/18(金) 20:22:38.58ID:RFAJhKUJ
>>29
お前は物理シミュレータを作りたいのか?
それともゲームが作りたいのか?
0031名前は開発中のものです。2014/07/18(金) 21:31:31.69ID:wz9t21HD
> キャラクターだから自立はできる、
この認識が間違い

キャラクターは空間に固定されてアニメーションさせてるだけだから倒れたりバランスを失ったりすることはない
0032名前は開発中のものです。2014/07/19(土) 09:04:53.45ID:MwsgZEhX
>>31
んー・・・
例えば飛行船が急降下したとき、
乗ってるキャラクターは浮いたり偏ってる方に滑ったりする
この時、物理エンジン内で倒れていたら無理矢理起こす(固定?)という感じになるのか
0033名前は開発中のものです。2014/07/19(土) 09:28:41.17ID:aecMKE4f
>>32
普通、物理エンジンはキャラクターそのものには使わず
キャラクターの髪の毛とかスカートとかにしか使わない

> 「不安定な足場」を物理エンジンに任せようとする
っていうのが無理

http://www.gravitysensation.com/sumotori/index.php
極端な例だが、キャラクターの動きを物理エンジンに任せてしまうと、このゲームみたいに無茶苦茶になる
0034名前は開発中のものです。2014/07/19(土) 11:45:17.81ID:ZZT3dE9z
>>32
物理エンジンに丸投げと言っても、物理エンジンが自作コードから独立して動くわけじゃないし、
ゲームである以上、100%物理エンジン任せにすることはない。ガンガンプログラマが修正していく。

実際、メタッルギアソリッドのプログラマはその昔、
物理エンジンに任せることは多いが、そのままでは全くゲームにならないので「嘘」を入れていると言っていた。
例えば、人間キャラが自分より大きな物体(岩など)を押して動かす…などのギミックが使えないのだとか。


>>33
「キャラ自体に物理エンジンは反映させない」と言い切るのは、ちょっと乱暴じゃないかな?
実際それが楽なのは間違いないんだけどさ。

例えば、物理演算空間では単純な形状の剛体(直方体など)で登録しておいて、
位置情報だけキャラクターに反映させるとかさ。
0035名前は開発中のものです。2014/07/25(金) 07:42:06.20ID:0cPiHr0B
物理エンジンには衝突判定を丸投げするのが一番楽なんじゃない?
0036名前は開発中のものです。2014/07/27(日) 14:09:28.81ID:S7CCeGik
もう疲れました。探さないでください。
物理エンジン
0037名前は開発中のものです。2014/07/27(日) 16:35:38.39ID:hDFrb6h9
MMOとかのスキルってそれぞれ個別にクラス作ってるの?
それとも1つのクラスにスクリプトか何かで頑張ってるの?

範囲攻撃だとか回復だとか防御だとかバフだとか色々あるけど、
今作ってるゲームで、スキルクラスを継承してプログラムで記述するか、
予めできるだけ多くのパターンを予想してパラメータを盛り込みまくるか
0038名前は開発中のものです。2014/07/27(日) 16:39:07.72ID:hDFrb6h9
おおまかにクラス分けしてそれぞれに必要なパラメータを付け加えたほうが効率いいのかな
近接攻撃クラスと魔法攻撃クラスとか
0039名前は開発中のものです。2014/07/29(火) 04:04:42.63ID:AylXEMId
スキルの数にもよるけど、個別クラス化すると細かいクラスが大量生成されて収拾つかなくなる。
基本的にはスクリプト。どんなスキルでも格納できる万能構造体を作れるならテーブル化するか、
SQLite なんかのデータベースを利用するって方法もある。
0040名前は開発中のものです。2014/08/01(金) 19:58:25.02ID:HHwlbQuz
ついに3DSでもソーシャルゲーム出たけど、契約とかどうしてるの?
0041名前は開発中のものです。2014/08/02(土) 05:01:01.75ID:eOu4XZLT
クラスの概念にハマりこんだ奴は何も作れない。
大人になってもSEとして奴隷労働確定。

目的のための手段なのか、手段のための目的なのか。
目的を達成することを第一義に置かないといけない。
0042名前は開発中のものです。2014/08/02(土) 08:07:18.21ID:xbgScl0r
思考停止した奴はまともなものは作れない
大人になってもPGとして奴隷労働確定

どうすれば良くなるのか、良くする為にはどうすればいいのか
自己を成長させる事を第一義に置かなければならない
0043名前は開発中のものです。2014/08/02(土) 12:00:37.08ID:lHwJwlEc
作れることは、目的を達成できるのは大前提だろ
0044名前は開発中のものです。2014/08/02(土) 18:15:56.09ID:8HdFTJm8
フリーズするプログラムがあるんだけど、どうしたらいいのかさっぱりわからない

キャラクターが削除された直後に衝突リストを探索するときに特定の関数を呼び出すとフリーズする

ヌルチェックしてるし、キャラクターをdeleteしたポインタに次の行でNULL代入してるし、
そもそもフリーズする直前にそのインスタンスの別の関数は呼び出しても問題ない
フリーズする関数を呼び出す直前と、関数の最初にログを吐くと関数に入ってないようにみえる

意味がわからん
0045名前は開発中のものです。2014/08/02(土) 19:25:04.15ID:TmM60CSL
その衝突リストとやらを使わなければ動くんじゃねーの?(鼻くそホジホジESPレス)

というか、錯誤により不具合を作り出してる張本人の、曖昧で、主観的な
供述のみからエスパーレスを引き出そうとしても解決にならないんじゃね

真剣な相談なら不具合を再現できる最小構成のソースコードを晒す
(これ用意する人はその過程で不具合の原因を突き止める確率高い。
つまり質問に至らない場合が多い)
0046名前は開発中のものです。2014/08/02(土) 19:26:38.81ID:xbgScl0r
エラーじゃなくてフリーズって、無限ループしてんじゃないの
大体の箇所わかってんならブレークポイントでぽちぽちしながら臭い所探せば
0047名前は開発中のものです。2014/08/02(土) 19:59:07.91ID:bumse5jz
ソースコードの左側をちょこんとクリックして、●をつけたくなるね
0048名前は開発中のものです。2014/08/02(土) 20:05:22.19ID:/jwwYoCr
>>44
そのログ書き出しはちゃんとfflushしてるか?
強制終了させたらバッファに残ってるログは捨てられるよ
0049名前は開発中のものです。2014/08/02(土) 20:50:36.25ID:dX02eCqq
>>44

フリーズすることなんてしょっちゅうだ。
フリーズの原因なんて46の言うように無限ループに入ってることがほとんど。
しかも自分の思い込みで「ここで無限ループになんてなるはずがない」と思ってる部分だったりする。

だから逆に「ループの全ては無限ループできる」と探せば割りと早く見つかったりする。

まぁひとつひとつ調べていくのが結局は早い。
0050名前は開発中のものです。2014/08/02(土) 22:07:42.24ID:juDjvEHG
Visual Studio使ってるなら、デバッグ実行してフリーズした状態で
「全て中断」ボタンを押すかCtrl + Alt + Breakで無限ループの中に一時停止させて
F10押してループ判定を追っていけばいいんじゃね?

マルチスレッドでなければブレークポイント使って探るのは効率悪いと思うの
0051442014/08/03(日) 05:08:34.12ID:jLtHhqBC
主観続報なんですが、衝突リストの直前で行われるdelete文をコメントアウトするとフリーズしないんですよ

別スレッドでアニメーション動かしてるからメインスレッド止まってもアニメーションは動くはずだし

でもAndroidNDKだからブレイクポイント使えない
0052名前は開発中のものです。2014/08/03(日) 10:47:06.01ID:LcYcpDyV
deleteした場所を、他から参照してしまっていると仮定してみる。

リストってことは、該当のポインタを削除するだけじゃなく
その前の要素にあるnextポインタも修正しなきゃならないわけだよな?

deleteだけじゃなく、その修正もしてるか?
してるなら、deleteと修正の間に、別スレッド(描画?)が参照してたりシないか?
0053名前は開発中のものです。2014/08/03(日) 11:28:48.20ID:ygJOSsne
>>51
>でもAndroidNDKだからブレイクポイント使えない

使えます。是非使ってください。本当にお願いします。
それと、既に指摘されてる問題部分の切り分けをして下さい。
最小構成でテストして下さい。出来ないならコードをうp
0054名前は開発中のものです。2014/08/03(日) 11:31:35.11ID:DGgM8UM0
別スレッドから参照してるなら、
操作前後でロックが必要だけどしてないんじゃね?
0055442014/08/03(日) 13:03:28.60ID:Q2PG92ND
>>52
ごめんなさいstd::listではなくstd::vectorでダブルバッファリングしてます
更新ごとに入れ替わって、push_backされないオブジェクトはdeleteされてそのポインタにNULLが入ります
0056名前は開発中のものです。2014/08/03(日) 13:39:34.89ID:pnMbsHQK
いい加減こういう小出し後出しはやめなよ
レスしてる暇があるなら単体テストしなよ
0057名前は開発中のものです。2014/08/03(日) 15:21:07.80ID:CNCHN1HK
こういう事になるから自前のdeleteなんて使わなきゃいいのに
0058名前は開発中のものです。2014/08/03(日) 23:21:55.40ID:X5LmADYN
メンバ関数を含むクラス(のインスタンス)を、まるごとデータファイルとして記録したりしてるんですけど
こういうメンバ関数ってどんな扱いになってるんですかね?
関数はデータじゃないので扱われないとすると都合いいんだけど、
ポインタだけで扱われてるのか、それともプログラムコードまで含まれるのか。

こんな説明じゃ分かりにくいですかね……。えーと。

以前から、「オブジェクトを生成するたびに、関数(のプログラムコード)も作られ、
オブジェクトごとにコードをそれぞれ持っている」なのか、それとも「関数のプログラムコードは
別のどこかに作られるだけで、オブジェクト内にはそこを示すポインタだけが作られてる」のか疑問だったんですが、
メンバ関数を修正してから修正前のデータを読み込んでみたところ、不正落ちするようになったもので
ひょっとして、前者なのかな? と思った次第でして。
0059名前は開発中のものです。2014/08/03(日) 23:49:05.25ID:LcYcpDyV
実用上の話だけでいいなら、シリアライズでググろう
https://sites.google.com/site/boostjp/tips/serialize
0060名前は開発中のものです。2014/08/03(日) 23:54:41.45ID:NYhfIPC5
>>58
仮想関数使ってたらvtableのアドレスが格納されるから、それまで一緒にリストアすると落ちるんじゃないか?
0061名前は開発中のものです。2014/08/04(月) 00:15:41.74ID:3huMrwYj
後者だと思うしアドレス復元するのは無理ゲーじゃね
0062名前は開発中のものです。2014/08/04(月) 00:35:39.14ID:S6rlQ+o7
C++: 水面下の仕組み
http://www.microsoft.com/japan/msdn/vs_previous/visualc/techmat/feature/jangrayhood/
0063名前は開発中のものです。2014/08/07(木) 12:24:04.59ID:t1Sego2o
アクションゲームの敵キャラの行動選択の事なんだけど。
例えば一部の種類の敵は近くの自分と同じ種類の敵の数で動きが変わるとか、敵Bと敵Cが合体攻撃するとか、
ステージ内の他の敵の状態を参照する必要に駆られた時ってどうやってアクセスするべき?

敵のリストを持った敵管理クラスが敵の行動選択時に毎回敵のリストのポインタを投げるのか、
敵Bクラスがstaticで自身のクラスのリストを作っておいて、敵Bの情報が欲しいクラスがこれにアクセスするのか。

他にも地形によって移動が変わる(落ちないようにとか)場合の地形データのアクセス方法ってどうするべきなの?
0064名前は開発中のものです。2014/08/07(木) 13:00:48.69ID:GofjvCIT
自分の場合、敵オブジェクトは自分を管理するクラスへのポインタを持っているので、
必要に応じて管理クラスに問い合わせるという感じ

というか、何パターンか方法を考えているなら、適当にどれか試してみればいいと思うよ
動けばそれでいいし、問題があるなら直せばいいだけだし
0065442014/08/07(木) 17:44:22.62ID:62RjpHCx
現実的に考えた時
敵が地形情報にアクセスできても不自然じゃないのでは
0066名前は開発中のものです。2014/08/14(木) 01:20:33.31ID:McYBYG45
Macでc++を用いたゲーム作成だと
SDLかcocos2dあたりになるのかな?
0067名前は開発中のものです。2014/08/14(木) 14:25:37.69ID:KaQreIxk
良い選択肢だと思うよ
0068名前は開発中のものです。2014/08/14(木) 19:21:35.91ID:tnMEEuh8
一緒にSFML2やらね?DxLibやってるときにスレで単語出て、年始の頃から気になってた
日本語少なくて諦めてたけど、少しずつ揃ってきてるし、なによりDxLibで自作するようなクラスが
揃ってるのがありがたい
0069名前は開発中のものです。2014/08/14(木) 23:14:33.68ID:hKNZ3m31
そのクラスだけでしか使わない数十行のコードって何回出てきたら関数化する?
プライベート関数を作るのって妙に抵抗があるんだよな
パブリックは明確に必要だなってわかるんだけど
0070名前は開発中のものです。2014/08/15(金) 00:31:11.83ID:oe50SlNL
>>69
無名名前空間使えばいいんじゃね?
0071名前は開発中のものです。2014/08/15(金) 04:08:25.52ID:rUjRhF5g
名前空間とかそもそも使ってない
ディレクトリでなんかやってるけど
不都合とかあるかな
0072名前は開発中のものです。2014/08/15(金) 05:19:42.53ID:c/9kGC5u
メモリをファイルのように扱うクラスを完成させたら
ファイルをメモリのように扱う機能が既に存在していたでござる
0073名前は開発中のものです。2014/08/15(金) 07:01:48.62ID:ohMMiKIE
>>69
数十行もあるのなら、2回以上で関数にする
しないと、修正・テストを常にダブルでしないといけない

>>72
そもそもメモリの基本が、mmap(memory map)で、
確保したメモリを、どんなオブジェクトで使おうが自由

まあ一般的なもので、自分が思いつくようなものは、
たいてい誰かが作っているだろう
0074名前は開発中のものです。2014/08/15(金) 09:58:24.44ID:c/9kGC5u
メモリ上にファイルシステムを構築して、ツリー情報を制御したいのだが、どんなのがあるの?
0075名前は開発中のものです。2014/08/15(金) 10:41:13.57ID:j6cgjhWq
他のアプリでも見える仮想ファイルシステムとしてならFUSE/Dokan
アクセス方法含めてファイルAPI使わない木構造コンテナならググれば色々ある
APIフックして自分しか見えないRAMドライブを作ったことあるけど行儀悪いから他でもみかけないな
0076名前は開発中のものです。2014/08/16(土) 06:39:10.61ID:L92YcU8p
他人の作ったコードって色々あるものなんだな
0077名前は開発中のものです。2014/08/16(土) 17:19:05.66ID:8Fs/dbnc
Templateって使ったこと無いんですが何に使うんですか?
std::vectorとかコンテナみたいなのに使うんですか?
ライブラリ作るときぐらいですか?
0078名前は開発中のものです。2014/08/16(土) 17:29:23.54ID:FVHp6E5m
よく知らないんですが、
大文字のTemplateって何か特別な意味がある言葉なの?
0079名前は開発中のものです。2014/08/16(土) 18:04:48.11ID:8Fs/dbnc
Google日本語入力が大文字にしただけです
0080名前は開発中のものです。2014/08/16(土) 19:19:43.39ID:KpuwMNAx
templateは使えるのにテンプレートエンジンすら知らなかったり
0081名前は開発中のものです。2014/08/17(日) 00:29:52.38ID:DxB78rur
コンテナやライブラリ作りでお世話になることが多いのは確かだな。
実際それくらいしか使ってないやってヒトも結構いると思う。
0082名前は開発中のものです。2014/08/17(日) 01:22:39.68ID:ecqmGiuW
よくわかんないですけど、templateってtemplateを使った処理を持ってる側は中身を予測できない(何らかの処理ができない)ですよね?
その中身も用途も知らずに誰かに使われるだけですよね?
でなければポリモーフィズムとかで代用出来そうだし
0083名前は開発中のものです。2014/08/17(日) 01:37:28.43ID:rcRtUElV
templateのやってる事はdefineの高度化で、
基本的にはただの置き換えだが?
0084名前は開発中のものです。2014/08/17(日) 02:35:54.03ID:DxB78rur
予測できないってどういうことだろう
0085名前は開発中のものです。2014/08/17(日) 03:14:42.38ID:lY+LSruT
templateは、コンテナ(容れ物)によく使う

コンテナ <int>
コンテナ <ユーザ定義クラス>

コンテナが、様々な型に対応できる
0086名前は開発中のものです。2014/08/17(日) 10:03:56.33ID:ecqmGiuW
>>84
要はtemplateの処理って誰かから値を貰って処理するのではなく
値を右から左に受け渡すだけで・・・
0087名前は開発中のものです。2014/08/17(日) 10:13:42.02ID:rcRtUElV
templateの中で勝手に値が変更されるからどんな挙動をしているかが分かりにくいって事?
それはソースを追えとしか言えんな。templateはその性質上、クローズド化が出来ないから。
0088名前は開発中のものです。2014/08/17(日) 10:52:23.87ID:eh8TRovF
MPLとかエラー出ても追いきれないよ
STLですらちょっとした記述漏れで出るエラーメッセージが適切じゃないんだよな
記述した行じゃなくてテンプレートソースの位置のエラーメッセージだし
0089名前は開発中のものです。2014/08/17(日) 16:34:24.06ID:2LOHSTCb
sfmlはライセンスがGPLだったような
0090名前は開発中のものです。2014/08/18(月) 12:06:43.86ID:/xfKqDtl
え?templateの中で値が変更されることなんてあるの?
0091名前は開発中のものです。2014/08/18(月) 12:20:19.06ID:Amfk7YXr
operatorとか使わないの?
0092名前は開発中のものです。2014/08/18(月) 17:33:11.61ID:/xfKqDtl
俺は使わん!
0093名前は開発中のものです。2014/08/18(月) 18:04:50.85ID:xxNYX8Uv
C++のラムダ、拡張for、タプルあたりは見た目が悪くて全然嬉しくないな
0094名前は開発中のものです。2014/08/19(火) 10:38:31.24ID:g/Td6fwv
拡張forの見た目を悪いと取る人がいるのか
コロンがダメなのかい?
0095名前は開発中のものです。2014/08/20(水) 12:24:47.31ID:vpc/8MHV
関数名ってどうしたらいいですか?
std見るとスネークケースだけどライブラリ見るとローワーキャメルケースだし
主流なオブジェクト指向で揃えたいのならJavaやC#みたいにアッパーキャメルケースだし
"ID"は両方大文字でもよかったり、HINSTANCEみたいにどこから意味のある単語なのかわかりづらいし
0096名前は開発中のものです。2014/08/20(水) 17:29:53.86ID:zC8dBj+K
kansu
0097名前は開発中のものです。2014/08/20(水) 18:27:48.79ID:8ddmLszJ
最近の環境だと漢字が使える場合があるな
0098名前は開発中のものです。2014/08/21(木) 12:39:31.06ID:cVduPEKK
C++もDとかScalaみたいに、クラスに対して手続きだけの後付け静的関数作った場合に、
第一引数省略できたら最強なんだけどなぁ
MPLのgetはめんどくさすぎる
0099名前は開発中のものです。2014/08/22(金) 08:08:31.76ID:np7Y3ytG
http://jobinjapan.jp/job-listing/keyword-game-programmer.html
0100名前は開発中のものです。2014/08/22(金) 08:24:17.61ID:+/wZ7jnK
まあ、まともそうな所もあるけれど、時給800円って何だよwww
いくら何でも世間をナメすぎwww
0101名前は開発中のものです。2014/08/22(金) 13:04:18.40ID:GdbuT6p8
>>97
知らなかったこんなのが普通にコンパイル出来た

int 関数(int ほげ, int はげ)
{
return ほげ + はげ;
}
0102名前は開発中のものです。2014/08/22(金) 17:22:04.27ID:kNYnH0VP
ナメられてるのはゲームプログラマーなんだよなぁ・・・
0103名前は開発中のものです。2014/08/22(金) 18:16:28.30ID:tnjQY6BU
最近も何もVisualStudioなら10年以上前から関数や変数名に
漢字を使えるが
0104名前は開発中のものです。2014/08/22(金) 20:27:56.63ID:knEiP0zp
typedef void 虚無
typedef int 整数
みたいな感じで型を日本語化して頑張ってた友達を思い出した
0105名前は開発中のものです。2014/08/22(金) 21:01:32.45ID:+rbtpV8x
>>102
さすがにこの条件で行く奴は居ないだろうと思うが……
と思ってよく見たらプランナーだった、紛らわしいな
0106名前は開発中のものです。2014/08/23(土) 11:34:38.27ID:VlCYIhca
時給800円ってコンビニのバイトより安いけど
プランナーってそんな楽なお仕事なん?
0107名前は開発中のものです。2014/08/24(日) 19:03:04.47ID:+YyUmjGH
人気のある仕事ではあるかもしれんな、プランナーは
だから値段が安くても人は来ると
0108名前は開発中のものです。2014/08/25(月) 12:46:11.86ID:13Ou/jq/
プランナーは好きにゲームを作れる(かもしれない)仕事だからな、一応
0109名前は開発中のものです。2014/08/25(月) 21:12:10.93ID:fIeVmxmz
絵も音楽も無理でプログラム始めたけど難しいから
プランナーになってぼくのかんがえたさいきょうのげーむ作るんだ!
って人が多いイメージだわ
0110名前は開発中のものです。2014/08/26(火) 02:42:29.32ID:zRu6Y76+
最近は、Unity製サンプルを提示してくるプランナーも多い印象
0111名前は開発中のものです。2014/08/26(火) 03:02:43.23ID:9nJGtRzs
そういうプロトタイプをさくっと作れるのは、ああいうフレームワークの強みだよね
非エンジニアの人でも、ある程度形を作り上げられるっていう
0112名前は開発中のものです。2014/08/28(木) 03:18:53.81ID:X8+LqzAg
C言語でゲームを作るならDXライブラリ
使った方が言われたのですが
MinGWのgccで使う方法はあるのでしょうか?
0113名前は開発中のものです。2014/08/28(木) 12:27:05.34ID:IogRuqxm
"DXライブラリ MinGW"でググったら公式配布ページも含めてゾロゾロ出てくるわけだが・・・。
0114名前は開発中のものです。2014/08/28(木) 14:45:11.67ID:fyv86xWh
こんな事聞くレベルの人間がなぜMinGWなんて使うのだろうと
思った
0115名前は開発中のものです。2014/08/28(木) 16:18:23.85ID:bFGeiPpW
while(true){printf("a");}
とコンソールで実行した時ループが遅くなるのはなんでですか?
目で追える速度でしか文字列を描画できないなら
計算だらけのゲームなんてまず作れませんよね?
0116名前は開発中のものです。2014/08/28(木) 18:13:14.40ID:c3zFvuJr
文字表示系の処理は重いんです
0117名前は開発中のものです。2014/08/28(木) 18:25:00.80ID:kFtDpON/
処理が重いというよりも、OSやコンパイラがConsoleで高速描写されないよう規制してるんだろ。
ファイル出力する記号 >でやったら画面表示より速いし、ゲームなんかで使う描写を、使えば速いし。
0118名前は開発中のものです。2014/08/28(木) 18:34:21.79ID:p3a/rk2R
コンソールはそもそも文字描画速度を速くしようなんて考え方で作られてないでしょ
windowsのコンソールの文字出力はCUIベースの補助的な表示がメインで、
コンソールの文字出力が遅いから早くしてほしいなんて誰も望まない
0119名前は開発中のものです。2014/08/28(木) 18:35:31.68ID:cOy/jyai
今は文字を一つ画面に出力するよりもファイルに書き込む方が早い時代です
と言うか、文字一つ出力するのに何バイトのデーターを画面に書き込む必要があるか考えてみ?
0120名前は開発中のものです。2014/08/28(木) 18:45:56.07ID:cOy/jyai
>コンソールの文字出力が遅いから早くしてほしいなんて誰も望まない
あ、そう言えば昔、PC-98がdos/vよりも優位な点として文字出力速度が早い事を売りにしていたな
0121名前は開発中のものです。2014/08/28(木) 19:17:50.59ID:izIKodD2
ああいうのは、VRAMにテキストエリアがあるから速いんじゃないの。
DOS/Vにあるのかないのかは知らんけど。
0122名前は開発中のものです。2014/08/28(木) 19:22:18.05ID:cOy/jyai
PC-98は漢字ROMにフォントデータが入ってるから早いんだよ
0123名前は開発中のものです。2014/08/28(木) 19:39:22.02ID:p3a/rk2R
>>120
昔はコンソールは補助的なものじゃなかったし
今よりずっと遅い時代があったからでしょ
0124名前は開発中のものです。2014/08/28(木) 20:10:27.78ID:lAEGR6jw
>>123
いや、話のネタに思い出したからついでに書いただけだよ
昔はテキスト表示で画面をマスクしたりと、遅いマシンの
様々な機能をフル活用して使っていたみたいだね
0125名前は開発中のものです。2014/08/29(金) 13:24:27.28ID:7LwoDteC
>>115
目で追える速度に遅くしてるんじゃね
つ Ctrl+S
0126名前は開発中のものです。2014/08/29(金) 17:27:19.27ID:PQKddMMr
struct Aiu{
int hoge;
};

Aiu* aiu = new Aiu();
ってした時
Aiu aiu2 = *aiu;
ってした場合、aiuの寿命が切れた後もaiu2に保持されるんでしょうか?
コピーコンストラクタは定義してないです
0127名前は開発中のものです。2014/08/29(金) 17:35:13.67ID:I0DNX3OS
自分で試したほうが早いだろ
0128名前は開発中のものです。2014/08/29(金) 18:05:40.44ID:B+gnwrXf
>>126
その Aiu aiu2 = *aiu; はメンバの値が複製されるだけだから、その後にaiu->hogeを書き換えてもaiu2->hogeは変わらない
だからaiuの指す先がdeleteされようがaiu2に影響はない
0129名前は開発中のものです。2014/08/29(金) 19:30:47.56ID:+jt7R30F
class Stack
{
 int a;
}

class Heap
{
 Stack stack;
}

void main()
{
 Heap* heap = new Heap();
}

っていうプログラムの場合、int aはメモリ内のどこにあるのでしょうか?
そもそもヒープ領域のオブジェクトの中のスタック領域の場合ってメモリ的にはどうなるのでしょうか?
0130名前は開発中のものです。2014/08/29(金) 19:53:53.39ID:B+gnwrXf
普通にヒープ
0131名前は開発中のものです。2014/08/30(土) 18:37:32.98ID:5AIFhixX
picojsonというjsonパーサー使ってるんですが、
Eclipseの言ってるエラーが意味不明で困っています
どうしたら結果が得られますか?
エラー内容:expected primary-expression before ')' token

あとテンプレートにポインタやらちょっと組み合わせると全く入力補完してくれないんですがなんなんですか

void hoge::hoge1(picojson::object* jsonObject){
picojson::array& jsonArray = jsonObject->get<picojson::array>();

for (picojson::array::iterator it = jsonArray.begin(); it != jsonArray.end(); it++){
picojson::object& o = it->get<picojson::object>();

int unit_num = atoi(o["unit_num"].get<std::string>().c_str());
int unit_id = atoi(o["unit_id"].get<std::string>().c_str());
}

}
0132名前は開発中のものです。2014/09/01(月) 11:52:34.58ID:NxW8u5cB
BlenderとかMayaで作ったモデルファイルとかモーションファイルって
C++erならやっぱり自分でパーサー作って読み込むの?
0133名前は開発中のものです。2014/09/01(月) 17:34:00.00ID:7vpWhfmF
>>132
Assimp
0134名前は開発中のものです。2014/09/02(火) 14:27:36.03ID:PUVCbn2i
DirectXも使えるの?
0135名前は開発中のものです。2014/09/02(火) 17:26:57.05ID:tdHhEDHk
>>133
これ良さげやね
BSDライセンスだし色々出来そう
スレッドセーフなのもポイント高い
0136名前は開発中のものです。2014/09/06(土) 11:58:19.59ID:khJXlvEe
>>131
これ誰かわかりませんか?
0137名前は開発中のものです。2014/09/06(土) 18:09:59.56ID:AxxHSbmN
expected primary-expression before ')' token 意味
で検索してみた?
0138名前は開発中のものです。2014/09/07(日) 11:10:43.48ID:s9vhQEyf
>>137
()内に値があるとかなんとかとか・・・
でも引数のエラーは別にあるし、全く同じ文(変数名は違うけど)をコピペしてきたものだし・・・
0139名前は開発中のものです。2014/09/08(月) 21:02:33.10ID:tesqRk+d
ずっとDXライブラリのwhileの中でやってきたせいで(ビジーウェイトっていうのかな?ポーリング?)
GUIライブラリとかのイベントドリブンでゲーム作る方法が全くわかんないぜ

DXライブラリでは1フレームごとの処理をupdateメソッドの中でやってたから、
アクションゲーム上のキャラクタなどがゲーム内時間での同期が簡単だったんだけど

イベントドリブンだと、そういう「メイン時間軸」による制御がないから
ゲーム内時間で厳密に同期が取れないとこが気持ち悪い

例えば、前者では1フレームごとにキャラクターの速度ずつ動いて、衝突判定も一斉にできるけど、
後者だとライブラリ側が(おそらく裏で_秒単位でポーリングしてて)『ボタン押されたよ!』って判断するから、
用いる時間の粒度が、自分が定めたいゲーム内時間じゃなくなってしまうという・・

イベントドリブンを用いる手前、1フレごとにupdateイベント起こすなんて二度手間はやりたくないし・・
(Unity3Dはupdateとイベント併用型らしいけど、どうやってるんだろ)
0140名前は開発中のものです。2014/09/08(月) 21:18:20.61ID:tYyDmrPQ
別に必要ならUpdate相当のイベント起こしたっていいじゃない
Windowsとか普通のアプリでアニメーションしたいならWM_TIMERとか別スレッドのタイマーで処理してから
描画のWM_PAINTを間接的に呼び出してるわけだし
描画のイベントを約16msで起こして内部で状態更新すれば60フレームのゲームだ
0141名前は開発中のものです。2014/09/09(火) 01:28:32.21ID:iF9Myub/
俺もDXライブラリしか使ったことないからわかんないんだけど描画ループとゲーム内処理のループって分けてマルチスレッドにするもんなの?
ダブルバッファってのもなんか、全ての描画リソースを2倍持つって結構勿体無いなとか思うんだけど

ネトゲでよく200fpsとか表示されててなんじゃこりゃとか思ったことあるけどゲーム内処理ループの事だよね?
0142名前は開発中のものです。2014/09/09(火) 03:36:37.22ID:C1Zjzm8i
無限ループの中で定期的にPeekMessage関数を呼んで
受信しているウィンドウメッセージを処理するようにするようにする方法が一つある
(DxLibで言えばProcessMessage関数みたいなもんだと思いねぇ)
0143名前は開発中のものです。2014/09/09(火) 14:01:53.66ID:3oFzTnHF
UnityのUpdateは自分が定めたゲーム内時間(単位時間)じゃなくて描画の単位で呼び出されるから
結局のところ、Δ(←前回Updateから今回Updateが呼ばれるまでにかかったリアル時間)を使って

移動距離[ゲーム内距離] = Δ[リアル時間] ÷ 単位時間[リアル時間/ゲーム内時間] × 速度[ゲーム内距離/ゲーム内時間]

で、処理することになる。

ちなみに、Updateの中でもキー操作拾えるから慣れてるほうでいい
ただGUI部品はイベントでやるのがラク
0144名前は開発中のものです。2014/09/09(火) 20:43:35.21ID:8XdiQ/JL
線形動作しか出来ないね。まあ西洋人は加減速にはこだわらないみたいだから大丈夫なんだろうけど。
0145名前は開発中のものです。2014/09/09(火) 23:05:52.44ID:iF9Myub/
ん?線形動作以外に何かあるの?
0146名前は開発中のものです。2014/09/10(水) 07:18:00.15ID:CE6mrTSg
非線形な動作なんていくらでもあるだろ
円運動とか放物線とかバネの伸縮とか
最近の物理の教科書には載ってないのかね?
0147名前は開発中のものです。2014/09/10(水) 08:04:28.67ID:+NofARIs
円運動だろうが放射線運動だろうが
前フレームの座標と今フレームの座標は線形動作じゃないのか
それが積み重なって円や放射状になるわけで
0148名前は開発中のものです。2014/09/10(水) 08:16:26.68ID:qlf1nlfh
自然界の動作は殆ど非線形だろう。
人間が扱いやすいから、近似的に線形代数で計算するだけだろ。
0149名前は開発中のものです。2014/09/10(水) 08:52:17.08ID:pn1h5JmM
線形動作は単位時間毎に同じ速度で動く動作を指す言葉だよ。
これに対して非線形動作は単位時間毎に別の速度で動く。
前者は直線的な、後者は曲線的な動作になる傾向がある。
0150名前は開発中のものです。2014/09/10(水) 09:37:06.65ID:qlf1nlfh
非線形はこういうやつだろ。


カオス理論 - Wikipedia
カオス理論は、力学系の一部に見られる、予測できない複雑な様子を示す現象を扱う理論である。ここで言う予測できないとは、決してランダムということではない。
その振る舞いは決定論的法則に従うものの、積分法による解が得られないため、その未来の振る舞いを知るには数値解析を用いざるを得ない。


複雑系 - Wikipedia
複雑系とは、相互に関連する複数の要因が合わさって全体としてなんらかの性質を見せる系であって、
しかしその全体としての挙動は個々の要因や部分からは明らかでないようなものをいう。
複雑系は決して珍しいシステムというわけではなく、実際に人間にとって興味深く有用な多くの系が複雑系である。
系の複雑性を研究するモデルとしての複雑系には、蟻の巣、人間経済・社会、気象現象、神経系、細胞、人間を含む生物などや現代的なエネルギーインフラや通信インフラなどが挙げられる。
複雑系は、単純な要素に分解して法則や原理に落とし込む還元主義の方法論では理解できない。
生物を分解してしまうと死んでしまい「生物(生きている物)」として理解できないように、複雑系は分解してしまうと本質が抜け落ちてしまうものだからである。
したがって、複雑系の分野を貫く基本スタンスとして「複雑な現象を複雑なまま理解しようとする姿勢」を挙げることができる。
複雑な現象を複雑なまま理解しようとする学問、手法は「複雑系の科学」などと呼ばれることが多いが、その源流に眼を向けると、
アリストテレスの「全体とは、部分の総和以上のなにかである」といった言い回しにまで遡ることができる。
0151名前は開発中のものです。2014/09/10(水) 09:50:08.57ID:+NofARIs
座標を見た時に直線的になるものかと思ってた
0152名前は開発中のものです。2014/09/10(水) 09:55:53.07ID:pn1h5JmM
円運動や等加速度運動は非線形動作だが積分で解けるぞ?
0153名前は開発中のものです。2014/09/10(水) 10:04:39.49ID:bDY0fB3w
求まるのは前回からの時間の差分であって
移動量とかは加速度とか考慮したらいいじゃない
物理エンジンに投げちゃうとそんなに気にしなくて済むし
0154名前は開発中のものです。2014/09/10(水) 10:24:30.94ID:qlf1nlfh
非線形常微分方程式
線形の常微分方程式の解は、変数の数がいくら多くても、
あるところをグルグル回る(振動解)   あるところに収束する   無限大に発散する   のどれかになります。

ところが、非線形方程式になると、たった変数3つでも、予測不可能な複雑な解になる場合があります。
Lorenz 方程式
1963年、E.N.Lorenz は大気の運動のシミュレーションを試みました。次のようなLorenz方程式を導いたのです。

http://www.gaia.h.kyoto-u.ac.jp/~sakai/visual/2/Lorentz.gif
この方程式は、xz、xy といった2次の項(非線形項)を含みます。これが、非線形常微分方程式 と言われるゆえんです。

彼は、この方程式の解が、定常解でも周期解でもなく、不規則に振動を続けることを発見しましたのです。たとえば、
a=10、b=28、c=8/3
の時の解を、Euler法で積分すると、このようになります。
http://www.gaia.h.kyoto-u.ac.jp/~sakai/visual/2/lorenz1.jpg

「簡単な方程式からは、簡単な答えしか出てこない」または「真理は単純である」と信じられていた当時としては、この事実は衝撃的でした。
カオス状態では、初期値の違いが指数関数的に増大するという特徴があります。
http://www.gaia.h.kyoto-u.ac.jp/~sakai/visual/2/lorenz2.jpg
このことから Lorenz は、「長期の天気予報は不可能である」と結論づけました。
Lorenz の表現を借りれば、「アリゾナの砂漠に飛んでいる一匹の蝶が、ニューヨークに嵐がくるかどうかを決める」ということになります。これをバタフライ効果と呼びます。
http://www.gaia.h.kyoto-u.ac.jp/~sakai/visual/2/index25.htm
0155名前は開発中のものです。2014/09/10(水) 10:37:15.67ID:pn1h5JmM
質量の概念が考慮に入ってて質量物がもっさり粘りのある動作をするような
物理エンジンがあれば考えるわ
0156名前は開発中のものです。2014/09/10(水) 11:01:26.76ID:qlf1nlfh
非線形とか非可換は人間の限界を超えてるので扱わないことにしてただけ。
最近の物理ではそういう方を扱ってるようだが。




ゲージ・重力対応(AdS/CFT対応)
このような、超弦理論の「統一理論的な」性質を最大限に応用したアイディアの一つがゲージ・重力対応です。
この対応を用いると、ゲージ場の量子論における困難な計算や解析を、一般相対性理論における容易な計算に「変換」することが可能となる場合があり、場の量子論の新たな計算手法として注目されています。
http://www.phys.chuo-u.ac.jp/labs/nakamura/overview/index.html



AdS/CFT対応で探る非平衡相転移
概 要:我々の身の回りは非平衡現象であふれている。例えば物質に外部電場を加えて電流を流すという物理過程は、物質中で熱やエントロピーが生成される非平衡過程である。
このような非平衡過程を、電場や電流が大きく両者の関係が非線形となる領域で記述することは現代物理学の難問の一つとなっている。
この難問に向けての新たなアプローチとして最近注目されているのがAdS/CFT対応である。
この対応は、ある種の強結合ゲージ理論を一般相対性理論の言語に書き換える理論的 な枠組みであるが、これを用いると、ゲージ粒子の多体系の非平衡過程を一般相対性理論を用いて解析できる可能性がある。
講演者は最近、このAdS/CFT対応を用いて、強く相関する荷電粒子系の非線形電気伝導を重力理論を用いて解析し、非線形領域において、従来知られていなかったタイプの非平衡相転移が存在することを理論的に見出した。
この非平衡相転移では電気伝導度、あるいは微分伝導度が電流密度の関数として不連続に変化する。
2次相転移点も存在し、そこではいくつかの臨界現象を確認することもできる。
本講演では、発見された新奇な非平衡相転移について報告するとともに、AdS/CFT対応が非平衡物理学に新たな切り口をとなる可能性について述べたい。
http://asuka.phys.nara-wu.ac.jp/2013/07/13-03.html
0157名前は開発中のものです。2014/09/10(水) 12:31:50.45ID:O1JsX9o2
数学の、というか物理学の歴史問題になっちゃった
0158名前は開発中のものです。2014/09/10(水) 13:47:47.01ID:TOw/PRIW
ゲームプログラミングで非線形な運動を積分で求める必要性ってないと思うんだが
物理シミュレーションでも作ってんの?
0159名前は開発中のものです。2014/09/10(水) 13:53:07.44ID:V+psMTaV
ミサイルの誘導に使う
0160名前は開発中のものです。2014/09/10(水) 14:00:04.34ID:TOw/PRIW
>>159
そんな精密に計算する必要なくない?
位置、速度、加速度をフレーム間で線形に計算すればそれっぽく動くと思うんだけど
0161名前は開発中のものです。2014/09/10(水) 15:59:28.51ID:OJbZlwnu
>>143 のやりかただと動作環境によって挙動が少しずつ変わるから
内部計算の間隔は一定のものとして扱うのが一般的だと思うよ。
0162名前は開発中のものです。2014/09/10(水) 17:49:57.40ID:piOg7Z3/
>>141
ダブルバッファは描画の基本

バッファが1つだと、描画の途中経過が、画面に映されてしまうので、
見えない裏の画面にすべてを描いてから、表裏の画面を入れ替える
0163名前は開発中のものです。2014/09/10(水) 20:26:02.06ID:0Gu5fApf
>>162
多分>>141が言ってるのはそういうことじゃなくて、
マルチスレッドやらで描画リソースを2つ、例えばAとBを持って
Aを描画中にBを更新→Bを描画中にAを更新 っていう意味じゃないのかな
全ての描画リソースを2倍って言ってるし

DXライブラリが勝手にそうしてるって>>141が勘違いしてるかもだけど
0164名前は開発中のものです。2014/09/10(水) 21:02:15.93ID:+NofARIs
シーンをクラスで管理して、シーン遷移する時
メインループの中のUpdate関数の中で
delete this;
return new NextScene();
ってやりたいんですが、ぬるぽエラーにならないでしょうか?
関数はインスタンスに関係無くstaticな存在だと聞いたことがあるんですが、イマイチよくわからないです

受け取り側では
while(true){
if((scene=scene->Update())==NULL)break;
}
こんな感じで、NULLが帰ってきたらゲーム終了です
0165名前は開発中のものです。2014/09/10(水) 21:14:44.14ID:yJISCIw+
>>164
「C++ delete this」でぐぐると吉
0166名前は開発中のものです。2014/09/10(水) 21:17:37.71ID:yJISCIw+
追記だけども

> while(true){
> if((scene=scene->Update())==NULL)break;
> }
この方式なら、変数sceneをshared_ptrとかunique_ptrとかのスマートポインタにしておけば
代入のタイミングで元々入っているインスタンスをdeleteしてくれるから
そっちの方がシンプルで安全かも知れない
0167名前は開発中のものです。2014/09/10(水) 21:24:41.93ID:+NofARIs
基本的にはokみたいな感じですか
ポインタでしか使わず、配置もしない
0168名前は開発中のものです。2014/09/10(水) 22:26:12.02ID:+NofARIs
座標クラスを作ってoperatorを定義したいのですが、cppファイルに定義しようとするとエラーが出てコンパイル出来ません。
ネット上のサンプルではクラス定義と一緒に書いてるみたいで実装と分かれていません
operatorもtemplate同様ヘッダーでしか定義出来ないんでしょうか?
0169名前は開発中のものです。2014/09/11(木) 00:03:08.79ID:asVl9LWg
std::mapにキャッシュしておいたリソースをdeleteしたく全探索したいんですが、
beginで得たイテレータにインクリメント重ねると必ずendで得たイテレータになるのでしょうか?
0170名前は開発中のものです。2014/09/11(木) 00:08:52.32ID:dW8hm7Dr
デストラクタ(スマートポインタ)つかえよ。
そしたら自ら開放しにいかなくても、参照が消えたら開放されるはずだろ。
0171名前は開発中のものです。2014/09/11(木) 00:32:27.41ID:U19JA4G4
物体Aと物体Bを衝突しないようにLayer Collision Matrixでオフにしたんだけど
その状態でAとBが重なったかだけ取得することってできる?
onTriggerEnterとかもコリジョンオフにしたから動作しないし、
自前で衝突判定プログラム作るしかない?
01721712014/09/11(木) 00:33:42.60ID:U19JA4G4
>171
書くスレ間違えました
0173名前は開発中のものです。2014/09/11(木) 22:01:08.21ID:asVl9LWg
http://gyazo.com/7fe61ebdff02df42518433e7792bb7bc.png
これなんでerrorが出るのかよくわからないんですが、どういうことなんでしょうか?
ポインタが0にNULLとして反応してるってことですか?
0174名前は開発中のものです。2014/09/11(木) 22:06:54.07ID:3lU2at1b
ホニャララImageの型はなんなのさ?
0175名前は開発中のものです。2014/09/11(木) 22:24:22.87ID:VO9tt5QZ
>>173
引数間違ってるんじゃないの
0176名前は開発中のものです。2014/09/11(木) 22:30:38.71ID:Vk9/avmu
>>173
ポインタがNULLとかはコンパイル時には関係ないよ
コンパイルしたらエラーが出るんだよね?
インテリセンス的なやつはソース修正してもすぐに反映されないから、
IDE上ではエラーになっててもコンパイルしたら行けるとかあるよ

その下に出てる定義が本当にその上のDrawの定義なら行けそうに思うんだけどなあ
なんかインクルードのファイルが実は別のやつになってたとかそんな問題くらいしか思いつかないな
0177名前は開発中のものです。2014/09/11(木) 23:17:52.95ID:PusxPgQr
全然関係ないけどbackgroundで一語だよ
0178名前は開発中のものです。2014/09/12(金) 01:29:52.01ID:55HmiNZ2
>>174
imageresource型で、下のウィンドウがDraw関数です
0179名前は開発中のものです。2014/09/12(金) 01:35:12.60ID:MvhPALDv
.じゃないの
0180名前は開発中のものです。2014/09/12(金) 09:19:01.28ID:M+TP6FjV
Draw(float, float)の実装がImageResourceの親クラスに存在していて
なおかつImageResourceがその型をpublic継承してないとか?
試してないから全く見当違いかも知れないけど
0181名前は開発中のものです。2014/09/12(金) 11:29:01.17ID:L2eUAZ9Y
constでした
0182名前は開発中のものです。2014/09/12(金) 16:54:40.75ID:M+TP6FjV
あーbackgroundImageとtitleImageがconst宣言されてたって事か
解決おめ
0183名前は開発中のものです。2014/09/13(土) 12:46:42.97ID:qOD9bpYo
ちょっと行き詰まってるので相談させて下さい。
自分のPC2台(両方XP)で動かすと問題なく動き、知人AのPC(Windows7)でも問題なく動くのですが
知人BのPC2台(両方Windows7)だと必ず「プログラムを停止します」とでて終了するという
謎の現象に悩まされています。

落ちる場所は毎回同じようなので、プログラムの要所要所に、テキストファイルに
メッセージを吐き出す命令を加えてみたところ、ある if文 のところで落ちてると判りました。

そこで今度はその if文 で使ってる変数6つをテキストに吐き出すようにしたところ、
その4つめの変数吐き出す部分で終わるようになってしまいました。
(つまり落ちる場所がずれた)
この if文 はループになっており、特定のループ時にのみ落ちる事が判明していますが
この変数自体はループにおいて全く変更されておらず、この変数が原因とは考えにくいです。

次に、このif文は無くてもこの場合たいした支障のでない部分だったので
まるごと消去してみたのですが、それでもやっぱり落ちました。

ここにきて行き詰まってしまって、どう調べていいのかわからなくなりました。

・実はこの部分以外に原因があってそれを見逃してる?
・この関数のこの部分が何らかの影響で破壊されているのか?
・なぜ知人BのPCでだけ発生する?(しかも2台とも)

何か考えられる原因とかありますでしょうか?
0184名前は開発中のものです。2014/09/13(土) 13:29:31.89ID:N7NNCB+K
なぜデバッガを使わないのか
0185名前は開発中のものです。2014/09/13(土) 13:31:47.88ID:p7BFEjLV
もっと前にメモリ関連のバグを起こしてて、プログラム領域に書き込み処理してる可能性が高いな
昔のデバッガだとアセンブラで見れて実際に命令がおかしくなってる部分を確認できたわけだが、今は無理だな
0186名前は開発中のものです。2014/09/13(土) 13:54:57.42ID:p7BFEjLV
友人BのPCで共通して動かしてるアプリケーションとか無い?
もしくはメモリに余裕がないとか
0187名前は開発中のものです。2014/09/13(土) 13:58:59.50ID:FxWLsqJE
なんか変数初期化していないんじゃね
0188名前は開発中のものです。2014/09/13(土) 14:40:43.79ID:ktDMwsVO
プリミティブ型のクラスメンバだと勝手に初期化してくれるとかなかったっけ
配列とかJavaと勘違いしてたかもしれないけど
0189名前は開発中のものです。2014/09/13(土) 15:06:29.64ID:Zs9/uEmo
>>188
C++では、自動的に初期化されるのは静的変数の時だけ(全変数が0に初期化される)
それ以外のスタックやヒープの変数は何らかの初期化をどこかで行う必要があるね
0190名前は開発中のものです。2014/09/13(土) 16:41:17.80ID:6DC3rx39
> そこで今度はその if文 で使ってる変数6つをテキストに吐き出すようにしたところ、
> その4つめの変数吐き出す部分で終わるようになってしまいました。
そのテキストを吐き出す処理も立派な処理なので、落ちる場所がずれる可能性はあるよ。
デバッグ用に処理を追加してもずれるので原因究明が難しい。

とにかくメモリーを壊してる処理が無いかどうかチェックして
修正したらテストしてもらうとか…
0191名前は開発中のものです。2014/09/14(日) 11:36:56.77ID:0Se26vk6
>>183
問題のあるPCを使わせてもらって、IDE入れて直接確認するのが一番早い
もしくは強制終了が出なくなるまで、プログラムをどんどんコメントアウトしていって、原因箇所を突き止めるとか

思いつく原因は、ZeroMemoryで初期化サイズを間違えて、余計な領域まで0にしているとか?
0192名前は開発中のものです。2014/09/14(日) 12:01:02.08ID:kfEvYRg/
一度開発環境入れると環境が変わっちゃうよ?
自分の場合はネトゲが一部動かなくなったし
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面)自分で作るのが一番
0293名前は開発中のものです。2014/09/26(金) 10:16:07.11ID:rbkJ86iO
つーかDXライブラリ使ってから直接叩きに行けばいいと思うの
0294名前は開発中のものです。2014/09/26(金) 12:18:19.00ID:+75O60pj
とりあえずブラインドタッチの習得から始めようか
0295名前は開発中のものです。2014/09/26(金) 15:10:36.26ID:m0bZOMy5
>>289
C++で行きたい
>>290
それはどう言う物?
>>291
DirectXに関してはそのProfessional Game Developerとか言うの買ってみる
Win32apiってのでお勧めの本はあったりする?
>>294
出来る
0296名前は開発中のものです。2014/09/26(金) 15:43:11.22ID:KjwlBlc2
Win32APIなんて最初のwindow作る時ぐらいしか触らなくね?
0297名前は開発中のものです。2014/09/26(金) 16:17:40.31ID:JcYHmNqs
>>295
DXライブラリはDirectXのラッパー
初心者でも簡単にゲームを作れるように製作された
0298名前は開発中のものです。2014/09/26(金) 17:48:05.16ID:rO+kEazw
そーいやDxLibって、いわゆるBetter Cで使えるように設計されてるらしいね
0299名前は開発中のものです。2014/09/26(金) 18:04:39.11ID:9JMnzgXV
effective C++
game engine architecture
game programming gems

取り敢えず俺が読んだ本でよかったもの
最近やってないから内容ほとんど忘れたけど
0300名前は開発中のものです。2014/09/26(金) 19:01:22.83ID:bysjYWQH
ウィンドウプロシージャがけっこう曲者だった気がする
0301名前は開発中のものです。2014/09/27(土) 17:06:21.54ID:4H/ikRQa
ゲームってリリースでビルドすると、exeとリソースに分かれると思うんだけど、ゲームを公開するときに、リソースファイルを非公開にすることって出来る?
0302名前は開発中のものです。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:SGVF4lSG
フレームワークが後出しで出てくる予感
0305名前は開発中のものです。2014/10/02(木) 00:06:30.72ID:fnVH62pX
とりあえず、フラグメンテーションやそれに伴って発生するバグが予測しづらい事は何となく解りましたが、
これってグラフィックVRAMでも起きますよね?しかもメーカーによって発生頻度が変わるという。
0306名前は開発中のものです。2014/10/02(木) 12:09:22.18ID:zEULmnAZ
要素のサイズのばらつきがなければ同じ領域を使いまわせるはず
0307名前は開発中のものです。2014/10/02(木) 12:58:09.55ID:iGYHLveA
アプリからAPI通して見えるのとGPUの物理配置はCPUのと同じで違う空間にマッピングされてるから気にしなくていい
複数のアプリでVRAMを取り合った結果GPU上に実際にあるかは保証できないし
0308名前は開発中のものです。2014/10/04(土) 22:09:19.67ID:fjoq6jVy
自己解凍のインストーラってどうやって作るんだ?
0309名前は開発中のものです。2014/10/05(日) 02:33:34.79ID:V/yeiJ3y
うわ、バカが北!
0310名前は開発中のものです。2014/10/05(日) 03:23:02.94ID:ofmLJ6L4
インストーラを作るのか?
メリットを感じない。
C/C++で書くとしてもゲームじゃないから板違い。

自己解凍したいだけならググれ。
0311名前は開発中のものです。2014/10/05(日) 09:24:05.22ID:Xq3Ljg/V
>>303
これ結局どうやるの?
0312名前は開発中のものです。2014/10/05(日) 09:32:21.92ID:644ev0/v
VC++ リソース 実行ファイルに組み込む
とかでググればわかるだろ
プログラミングの前にグーグル先生の使い方覚えろよ
0313名前は開発中のものです。2014/10/05(日) 09:46:06.79ID:aV15d1fG
インストーラはVisualStudioのセットアッププロジェクトてのが使える
http://code.msdn.microsoft.com/windowsdesktop/10-4ca748ce
0314名前は開発中のものです。2014/10/05(日) 10:35:25.80ID:Y65zx5bA
好きなの使え
http://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/
>>315
その攻撃にリスト持たせて相手の参照保持するとか
0317名前は開発中のものです。2014/10/11(土) 15:52:45.46ID:VK47TOFi
・何らかの方法で攻撃されたことを覚えておく(>315>316の手法)
・無敵時間を作る
・触れてる間ずっと減るという前提で威力を調節する

このへんか?
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:EhXtC2jR
クッソ無料な Express です。
0321名前は開発中のものです。2014/10/12(日) 07:49:44.05ID:J+1JVnSp
インテルParallel Studio XE 2015が欲しいな……
いや、使ってるのはVisual Studio Professional 2012だ
数年おきに買い換えてるけどね
0322名前は開発中のものです。2014/10/12(日) 07:55:19.92ID:/BVTES1n
professionalってフリーのと比べて何が違うの
0323名前は開発中のものです。2014/10/12(日) 08:01:53.97ID:J+1JVnSp
・MFCが使える
・Windows8アプリを作れる
後、何があったかな?まあ、買う意味はあまり無かったが
0324名前は開発中のものです。2014/10/12(日) 08:05:24.48ID:J+1JVnSp
・個人情報の入力が不要
というのがあったか
0325名前は開発中のものです。2014/10/12(日) 08:23:20.45ID:lmLFkKE0
アドイン使えるのが最大の違い棚、無償のアドインですら便利なの多い
Intel コンパイラもアドインとして実装だし

アプリ作るのにMFCよりATLがついてるのとリソースエディタがあるのが楽

ゲーム向けといえばシェーダデバッガが使える。Pixは使えない環境が増えたから
0326名前は開発中のものです。2014/10/12(日) 08:29:03.38ID:5ggxpAbS
商業利用
0327名前は開発中のものです。2014/10/12(日) 08:38:04.82ID:J+1JVnSp
Visual Studioのアドインってどんなのがあるの?
検索しても概念しか出てこないんだが
0328名前は開発中のものです。2014/10/12(日) 08:47:31.90ID:M/9KBN8Z
ttp://www.visualstudio.com/ja-jp/products/visual-studio-express-vs.aspx

商業利用は可能らしい
0329名前は開発中のものです。2014/10/12(日) 10:27:41.59ID:SHzxfoNm
2010proと2013expressだったらどっちの方が良い?
0330名前は開発中のものです。2014/10/12(日) 11:20:36.06ID:xlzIAwTn
個人的には、グラフィックス診断機能があるという一点だけでも
VisualStudioのProfessionalを使う意味があると感じている
DirectXを直接叩かない人には恩恵は殆どないかもしれないが
0331名前は開発中のものです。2014/10/12(日) 12:00:27.61ID:dKaNtW9R
個人的にはEclipse CDTのほうが使いやすい
比べてるのVS2010だけどnamespaceのごとにフォルダ作るのとかめんどくさくない?
0332名前は開発中のものです。2014/10/12(日) 21:20:23.78ID:Xey/qQ/1
俺が使ってるアドインはQtとNSightかな
0333名前は開発中のものです。2014/10/12(日) 23:04:27.97ID:H/GXxxmg
質問ばっかで悪いが
Express2013で実行ファイルのアイコンって変えられないのか?
0334名前は開発中のものです。2014/10/12(日) 23:06:08.28ID:fyt7rxnY
アイコンって変えら
0335名前は開発中のものです。2014/10/12(日) 23:17:56.44ID:V7vL1J09
2010は変えられたけど2013は知らない
0336名前は開発中のものです。2014/10/13(月) 00:33:49.65ID:hzHBieoQ
Express はしらんが Professional だと
表示→その他のウィンドウ→リソースビュー→該当アイコン
0337名前は開発中のものです。2014/10/13(月) 01:34:31.59ID:uF6f/HdY
VS使ってない俺でも >>333 んなわけねーだろと答えるわ
0338名前は開発中のものです。2014/10/13(月) 12:10:48.20ID:OHHj8O/3
if文でNULLチェックと同時にメンバ関数呼び出すのってぬるぽされる?
if(hoge != NULL && hoge->a == 1)
0339名前は開発中のものです。2014/10/13(月) 12:30:34.27ID:rKI73evO
マルチならマルチってきちんと言いなさい
0340名前は開発中のものです。2014/10/13(月) 13:18:53.44ID:X0f4tC8k
左から判定してfalseがあった時点で後の判定はしないし大丈夫だと思うけど
ってかそれぐらい自分で適当にテストすればいいんじゃ
0341名前は開発中のものです。2014/10/13(月) 14:58:01.00ID:Qf2MnFbB
その行以外にメンバ関数呼び出さないなら良いけど
不具合の原因になるよ
0342名前は開発中のものです。2014/10/13(月) 15:12:08.33ID:rsHrWC8o
他人が書いた無頓着なコード、神経質なコード

どちらを読んでも目眩がする。
0343名前は開発中のものです。2014/10/13(月) 15:49:22.33ID:Fnhb7LNv
自分以外のコードなんて読めないからどれも同じ。
0344名前は開発中のものです。2014/10/13(月) 16:36:57.29ID:hzHBieoQ
>>338
知り合いの言語仕様にやたら詳しい人がこういうコード書いてたから、今は大丈夫なんだろうと思うが
昔は、式の中がどういう順で評価されるかはコンパイラ依存だったはずなので、こういうコードは NG だった
自分は不安なので2段階に分けてる
0345名前は開発中のものです。2014/10/13(月) 16:48:29.25ID:rsHrWC8o
まだ初期化されてないかも知れないコードを呼び出すコンテキストってどんなの?
0346名前は開発中のものです。2014/10/13(月) 17:11:00.07ID:kMnfNib9
論理演算子の評価順は決まっててかつ真偽が確定した時点で評価をやめる
だから、>>338の文は言語仕様的には問題ないよ
0347名前は開発中のものです。2014/10/13(月) 17:16:52.97ID:obVPXN/U
いわゆる短絡評価
0348名前は開発中のものです。2014/10/14(火) 03:20:21.89ID:EcN5Ngh+
>>345
ちょくちょく出てこない?
安全に使いたいとか。
03493482014/10/14(火) 03:33:56.66ID:EcN5Ngh+
ちょっと自分のレスが不親切だと感じたので、具体例を挙げてみる。
あんまり的確な例とは言えないかも。申し訳ない。

例えば単純なゲームプログラムで、Enemyクラスを用意し、これとプレイヤーキャラの当たり判定をしたいとする。
当たり判定を行って、接触してないと判定されたらミス処理はスルー。
また当然ながら、敵データがまだ生成されてない(nullptr)なら、当たり判定を行うまでもなくミス処理はスルー。

こんな感じのときに>338は使えると思う。
もちろん、最初に全部生成してからフラグで管理しろよとか、リストで管理しろよとか、他にも方法はあるだろうけど。
0350名前は開発中のものです。2014/10/15(水) 11:58:17.17ID:KHlvqLu2
3DゲームでNPCに話しかけるプログラムを組みたいんだけど、話しかける側か話しかけられる側かどっちでどういうプログラムを組めばいいんだろう?
こういうの参考サイトに載ってなくて…
0351名前は開発中のものです。2014/10/15(水) 14:43:08.97ID:/0utetRg
シンプルなものなら、npc->getText() で個々のNPCのテキストを拾えるようにして
チャットウィンドウに投げるなり、吹き出しクラスを生成するなり…かなあ?

それとも、2Dゲームだと出来るけど、3Dゲームだと出来ない問題ってこと?
0352名前は開発中のものです。2014/10/16(木) 00:04:46.56ID:6yN2mL4I
最終的なパフォーマンスは描画fpsで評価するんだけど、
改善したい場合、どこがボトルネックになってるかを知る必要があるじゃない?
これを視覚的に確認する方法ってないのかな?
GPUViewってのがあったみたいだけど、今は入手できない?
0353名前は開発中のものです。2014/10/16(木) 01:44:49.63ID:RD+zBY34
>>352
GPUのオーバーヘッドを調べるならVisualStudio2012以降のグラフィックステバッグか、
VisualStudioアドオンのnVidiaNSight
あとDirectXSDKについてくるPIXとか
0354名前は開発中のものです。2014/10/16(木) 14:07:15.58ID:QS36hJY2
同じレンダリングステートで描画できる物は1つにまとめて描画した方が速い
まとめられるのは2D描画だけだと思うけど
0355名前は開発中のものです。2014/10/16(木) 14:11:40.09ID:iU5kylbT
は?意味わからない
0356名前は開発中のものです。2014/10/16(木) 15:57:05.99ID:XA7dLBCP
UnityVSはProじゃないと使えないのか(´・ω・`)
03573522014/10/16(木) 23:15:25.79ID:6yN2mL4I
>>353
やはり、そのあたりですかね。

http://game.watch.impress.co.jp/img/gmw/docs/586/729/html/gra_53.jpg.html
http://game.watch.impress.co.jp/img/gmw/docs/586/729/html/gra_54.jpg.html
http://game.watch.impress.co.jp/img/gmw/docs/586/729/html/gra_55.jpg.html
http://game.watch.impress.co.jp/img/gmw/docs/586/729/html/gra_56.jpg.html
これ、PSVitaのゲーム開発環境の解析画面なんだけど、こういう感じで見たいなぁ。

>>354
DirectXTKのPrimitiveBatchで、異なるトポロジ(三角ポリと線)を頻繁に切り替えながら描画
(切り替わる度にDrawコールされる)してしまっていたのをできるだけまとめて描画するようにしたら、
Debugモード時に4倍くらいfpsが上がってマジ感動した。
Releaseモードは、わずかに向上するか、ほとんど変わらないときもあった。

>まとめられるのは2D描画だけだと思うけど
3Dモデルならジオメトリインスタンシングが使えるケースがあるね。
0358名前は開発中のものです。2014/10/16(木) 23:59:18.32ID:mNWrvpmf
一応、VS2013Proのグラフィックス診断だと
DrawCall単位で何マイクロ秒かかってるかってのを測定して
CSVかXMLでエクスポートすることはできるみたい
03593522014/10/17(金) 02:07:27.36ID:1FCA9thd
>>358
おお、それはなかなか良い機能!
それを活用かなぁ。
0360名前は開発中のものです。2014/10/17(金) 10:58:36.38ID:i0zyuJTB
>>356
おう、諦めな
0361名前は開発中のものです。2014/10/17(金) 22:20:59.73ID:t1QiiFRy
>>356
cocos2d-xやろうぜ(´・ω・`)
0362名前は開発中のものです。2014/10/19(日) 21:58:12.45ID:A4TBNuX7
ちょうど今cocos2d-xでなんかスマホゲーム作ろうと思ってる
プログラミングよりストア登録とか素材作りでつみそう
03633522014/10/19(日) 22:56:32.89ID:Me3iytM1
http://adruab.net/wp-images/GDC14_infamous_second_son_engine_postmortem.pdf

このスライドの33枚目にあるようなタスク所要時間の視覚化機能を実装したいなぁ。
GPUの処理時間とか、どうやって計測するんだよ!w
0364名前は開発中のものです。2014/10/20(月) 06:37:43.13ID:Vt4+cJIA
なんか最近、スレ違いのレスが多いな
0365名前は開発中のものです。2014/10/20(月) 11:09:09.21ID:YjayBuJo
素材作りで積むのはゲーム制作しようとプログラミング学んできた人間にはよくある話
3Dモデルや絵かける方がよっぽどゲーム作れるぞ
0366名前は開発中のものです。2014/10/20(月) 11:29:32.25ID:jwhsqWX+
ツクール系やフレームワークがあるからだいぶ敷居は下がったよね
絵や話つくりは何とかなりそうなんだけど音関係がなあ・・・
0367名前は開発中のものです。2014/10/20(月) 11:53:52.64ID:DtF3+BwM
音がきついのすごく分かる
絵なんてそれなりのツール使って作品にあった書き方練習すれば半年でなんとかなる
初心者用サイトも多いし
音は何からどうすればいいかわからなくて詰む
0368名前は開発中のものです。2014/10/20(月) 12:00:13.49ID:wIxNXk0C
音はフリーの素材でなんとかならんか
絵の方がアニメーションとかサイズとか考えると難しいよ
0369名前は開発中のものです。2014/10/20(月) 12:37:30.84ID:mkykchgR
効果音ってどうしてる?
0370名前は開発中のものです。2014/10/20(月) 13:17:49.07ID:b7HsFQvV
大半をフリーで補いつつ、ピンポイントで有料素材
0371名前は開発中のものです。2014/10/20(月) 14:07:32.34ID:GwxwpQhh
>なんか最近、スレ違いのレスが多いな
って言われた端からこれだもんな
0372名前は開発中のものです。2014/10/20(月) 14:15:39.93ID:jwhsqWX+
だがガチガチにコードの話だけって限定するのもあれだな
0373名前は開発中のものです。2014/10/20(月) 14:34:05.88ID:RcYiFGCh
CとC++の話だけに限定するならスレ自体要らんしな
0374名前は開発中のものです。2014/10/20(月) 14:35:40.06ID:xrex0yYU
ま話題もあんま無いしな
0375名前は開発中のものです。2014/10/20(月) 18:54:24.39ID:+9Jsm3nb
Unityとかの全く無関係な話が出なけりゃ、それでいい
0376名前は開発中のものです。2014/10/20(月) 19:20:29.41ID:+9Jsm3nb
>>331
namespaceごとにファイルを作っても全く問題はないが?
0377名前は開発中のものです。2014/10/20(月) 20:05:13.07ID:k9NKmLW6
>>375
昔Unityの話題だしてごめんな
0378名前は開発中のものです。2014/10/20(月) 20:59:37.69ID:mkykchgR
スレ違いのレスどころかレス自体ほとんどないじゃん
100レス消費するのに1ヶ月て
0379名前は開発中のものです。2014/10/20(月) 21:26:24.20ID:GwxwpQhh
ゲ製の技術系スレなんて大抵がそんなもんだろ
流れが遅けりゃ何を話題に出してもいいのか?
勢い至上主義の人は別の板に行ったほうがいいぞ
0380名前は開発中のものです。2014/10/20(月) 21:44:59.67ID:mkykchgR
ゲーム製作に関連した話題だろ
話の広がりを全て排除するオキテでもあんの?
0381名前は開発中のものです。2014/10/20(月) 22:03:31.71ID:crBxYzk6
なんとなくム板住人っぽい
0382名前は開発中のものです。2014/10/20(月) 22:07:06.42ID:5MyCaHfJ
服や髪の毛を風でヒラヒラさせるくらいなら、
物理エンジン使うの大げさかな?
C++でスクラッチで実装してる人いる?
0383名前は開発中のものです。2014/10/20(月) 22:49:22.88ID:T47b68DN
11月号の日経ソフトウェアに
「効果音」「BGM」「歌」はこう作る(Cubase/VOCALOIDで)
音だってプログラミング!
ってな記事があるよ
12月号が10/24発売だからチェックするなら早めにな
0384名前は開発中のものです。2014/10/21(火) 00:05:57.07ID:rqDahQkS
>>382
モーションとかで設定すんのきついからエンジンでいいんじゃ
03853822014/10/21(火) 00:10:52.73ID:CEedc/zF
>>384
たしかに。
パフォーマンスもエンジンのほうが良さそうだし、
簡単なことでも、下手に自分で組むよりイイかも。
コリジョン全般もやらせられるし。
ありがとう、エンジン使う方向でいくわ。
0386名前は開発中のものです。2014/10/21(火) 00:35:00.20ID:DPj+H0co
初めてOOPしてるライブラリ使ったけど楽しいな
0387名前は開発中のものです。2014/10/21(火) 22:05:55.64ID:zLum7v8j
>>386
OGREかな?
0388名前は開発中のものです。2014/10/22(水) 19:05:01.43ID:mUYRFHNV
アクションゲームのバフというか、状態異常ってどうやって処理してる?
バフがつくキャラクタークラスに「〜のバフがあったら〜」という処理を記述するのが簡単なんだろうけど、
バフの数だけキャラクタークラスの処理が増えるのってなんか変だし、
キャラクタークラスが行動しようとするたびにバフ一つ一つにチェックかけるのか・・・
0389名前は開発中のものです。2014/10/22(水) 19:22:28.97ID:1itouT9H
>>388
武器毎にキャラクタークラスの処理増えてるわけじゃないだろ?
それと同じだよ
0390名前は開発中のものです。2014/10/22(水) 20:23:54.50ID:WiWK8TWz
バフってどこで流行ってる言葉なん初めて聞いたんだが
0391名前は開発中のものです。2014/10/22(水) 20:26:43.81ID:eqXGTzBz
もう十年以上前から、MMORPGで使ってたよ。
ステータスを一時的にパワーアップするのをバフ、
逆にパワーダウンするのをデバフって。
0392名前は開発中のものです。2014/10/22(水) 20:36:40.39ID:T1nolpti
最近はMMO流行ってないからなあ
0393名前は開発中のものです。2014/10/22(水) 21:44:48.22ID:hFcfDOrV
MMOからの輸入だと思うけど、ここ数年はMMO以外でも結構聞くなあ
0394名前は開発中のものです。2014/10/22(水) 22:31:22.09ID:U9EexPEj
>>389
モンハンとか武器ごとに増えてない?

最近は10秒以内に他のデバフを食らわないと即死するデバフとか、特定の属性の敵に攻撃力2倍とか、3秒に一回キャラクターの行動を中断する麻痺デバフみたいな、
単純なステータス操作じゃないものが多くて、そういうの視野に入れて作ろうかなと

そういや構造って、
ゲーム起動時にstatic変数としてバフのインスタンスを持っておいて、キャラクターのポインタとバフの残り時間を与えれば結果を返してくれるようにするのか、
キャラクターにバフがついた瞬間インスタンス化して、バフが消えた瞬間deleteするようなクラスを作るか
どっちがいいんですか?
0395名前は開発中のものです。2014/10/23(木) 08:02:34.39ID:I+oJL2c7
そりゃステートパターンよ
0396名前は開発中のものです。2014/10/23(木) 08:15:05.80ID:s5Cm5p+v
【毒】と【放心】と【催淫】が同じキャラにかかった場合とか考えると
クラスに自殺機能的なものを持たせつつ、キャラごとにリストで持っておきたいなあ。

あー、でもフィールド自体にスリップダメージ効果、みたいなパターンもあるか。
0397名前は開発中のものです。2014/10/23(木) 09:46:02.30ID:VAxuJujr
それはバフの自殺条件に「指定範囲から外れた時に消滅する」って条件が出来ればおkなはず
そうするとバフが欲しい情報はマップ上にあるオブジェクトのリストと、キャラクターのポインタと、時間かな
ゲームの仕様にもよるけど大体この3つ安定
0398名前は開発中のものです。2014/10/23(木) 09:46:44.49ID:VAxuJujr
>>395
ステートパターンだと一つしか状態異常かからなくない?
ポケモンなら一つだけど
0399名前は開発中のものです。2014/10/23(木) 10:02:49.79ID:s+t98wQk
フィールドのスリップダメージは状態異常じゃなくて衝突イベントで処理すれば
0400名前は開発中のものです。2014/10/23(木) 13:23:41.02ID:noQ9gUlZ
>>394
そういうの作るほうは大変だけどユーザにウケるか、手間に見合うかというと、う〜ん
かえってわかりにくいと敬遠されかねない

その点討鬼伝のミタマはうまくやったなと思う いろいろな意味でw
0401名前は開発中のものです。2014/10/23(木) 17:30:00.96ID:I+oJL2c7
>>398
ステートパターン+配列でいいじゃん?
ゲームの仕様側を単純化しないと実装の複雑化はさけられないぞ

std::vector<State*> state_list;
state_list += new Poison();
0402名前は開発中のものです。2014/10/23(木) 19:43:01.60ID:I0e3Ds/C
仕様はカッチリ決めといた方が設計はしやすいな
なんでもありを想定して作って結局あんまり使わないなんてムダだし
0403名前は開発中のものです。2014/10/23(木) 21:28:12.43ID:qInVWJ1L
【毒】を放置しておくと【猛毒】になるとか、
そういうのが無くてもStateパターンって便利?
0404名前は開発中のものです。2014/10/24(金) 00:54:44.36ID:jy1RY2Vz
ステートはしぬほど楽
0405名前は開発中のものです。2014/10/24(金) 20:11:21.11ID:ddPt2zGi
イベントで処理出来ないかな
スリップダメージならイベント処理時にダメージ&継続判定して再度イベント投げるみたいな
オーバーヘッドでかそうだけど汎用性はある気がする
0406名前は開発中のものです。2014/10/24(金) 22:30:58.39ID:LvhDFXW3
>>405
オーバーヘッドとかそう言うのはプロファイラで測ってから言いなさいな

普通、負荷がかかるのはもっと重い処理の部分でしょ
0407名前は開発中のものです。2014/10/25(土) 03:42:15.96ID:fVKGIfTf
オーバーヘッドは本来の処理とは関係ない所で発生する計算コストの事で相対的な話でしょ
0408名前は開発中のものです。2014/10/25(土) 07:52:10.14ID:NLLH5JYR
オーバーヘッドキックなら知ってるぞ
0409名前は開発中のものです。2014/10/26(日) 16:26:16.62ID:RQv84B/3
>>407
だからそのオーバーヘッドが大きいかどうかはそこがネックになってるかどうかで判断しろって言ってるんでしょ
0410名前は開発中のものです。2014/10/26(日) 17:41:30.80ID:dULlRr0t
>>408
だからそれがオーバーヘッドキックかどうかはそれがキックになってるかどうかで判断しろって言ってるんでしょ
0411名前は開発中のものです。2014/10/26(日) 18:19:06.69ID:Z5NRlQnX
せやな
0412名前は開発中のものです。2014/10/26(日) 19:50:32.98ID:YANUPprV
知ったような口を利くんじゃない
0413名前は開発中のものです。2014/10/26(日) 19:56:46.37ID:eW7jlsGh
微妙に会話が噛み合ってない感じするな
0414名前は開発中のものです。2014/10/26(日) 22:10:45.35ID:PTfFlHbF
相対的なコストの話だって言ってるのに全体で判断しろっておかしいでしょ
0415名前は開発中のものです。2014/10/26(日) 22:20:48.23ID:Wgbd5x3C
ボトルネックって言うけどさ、瓶はドボドボ出ない様にわざと狭く作ってあるんだよな?
0416名前は開発中のものです。2014/10/26(日) 22:37:50.70ID:RQv84B/3
オーバーヘッドの影響が大きいかどうかはって言えばよかったかね
0417名前は開発中のものです。2014/10/27(月) 22:07:07.84ID:sM1yBz6U
俺だってオーパーツヘッドくらい知ってるよ!
0418名前は開発中のものです。2014/10/28(火) 00:30:16.35ID:/GKC+OVC
俺もオーバーライドとオーバーロードの違いぐらいわかるよ!
0419名前は開発中のものです。2014/10/28(火) 21:29:09.92ID:ysAm8J5x
俺なんてどっちかというと見た目がオーバーサーンだよ!
0420名前は開発中のものです。2014/10/29(水) 19:22:23.08ID:nDYTAhVm
俺はsum41のオーバーヘッドなんちゃらっていう曲好き
0421名前は開発中のものです。2014/10/29(水) 23:42:07.72ID:4ZmDH5l4
俺なんてゲームオーバーヘッドですよ
0422名前は開発中のものです。2014/10/31(金) 00:17:00.08ID:nSbgcPzE
みんな状態異常がなんたらとかC++で記述してる?
自分は限界を感じてC++はゲームライブラリをラップするエンジン部分だけに使って
ゲームロジック部分はLuaでできるように勉強してる

C++(エンジン) // C++(エンジン上で動作するパーツ) // Lua(パーツを利用するロジック) // Lua(モデルやイベント用スクリプト)
0423名前は開発中のものです。2014/10/31(金) 07:04:00.65ID:m5w778wA
Lua で書けるなら同じことを C++ で書けばいいだけだと思うけど
何で書くかというより設計の問題でしょ
0424名前は開発中のものです。2014/10/31(金) 10:05:54.22ID:6bcSF0zB
>>422
自分もLua使ってて今作ってるけど、ロジックはC++で組んでる(組む予定)
Luaでやるのはキャラの初期値などのパラメータ値の設定やイベントの記述、
画面背景に表示するものをLuaで記述、くらいの予定かな

>>423の人も言ってるけど、Luaで書けるならC++でも書けるから、何をLuaに求めるかだと思うけど、
自分の場合はLuaでやるメリットはリコンパイルせずにレベルデザインの動作確認を行えるようになること
ロジック部分はLuaに追い出すと速度的なデメリットが大きそうなのと、
Luaで書けるようにすること自体の工数も大きそうなのでやめた
0425名前は開発中のものです。2014/10/31(金) 12:53:25.76ID:CfUZyuSt
スクリプトの利点はコンパイルしなくても修正出来るところ
0426名前は開発中のものです。2014/10/31(金) 17:49:19.79ID:wudHshK9
作り方によってはゲーム中にリアルタイムに変更できたりするよね
0427名前は開発中のものです。2014/10/31(金) 17:59:48.36ID:881Z1hau
コンパイルは必要だけど動的変更ならC++でも出来るけどね
0428名前は開発中のものです。2014/10/31(金) 18:15:11.72ID:jL8HxUOw
デバッガでぽちぽち変数の値いじるの?
0429名前は開発中のものです。2014/10/31(金) 18:24:36.01ID:6bcSF0zB
ゲーム中にスクリプト書き換えてリアルタイムに反映?
いらねーよw
0430名前は開発中のものです。2014/10/31(金) 19:02:05.50ID:LbK2+I6l
今の所スクリプトは、用途に応じて別のスクリプトを作って使ってるな
3種類ほど
一つはシナリオとかのイベント管理用
一つはレコード単位のデータ管理用
一つはツリー構造のデータ管理用
0431名前は開発中のものです。2014/10/31(金) 19:18:37.90ID:oJQR+l+C
・高速なコンパイル
・クラスとヘッダーに分けなくていい
・importはC/C++のincludeより使いやすいと思う
C/C++だとどれをインクルードすべきか調べないと分からない事もあるし
・ネイティブの部分だけ予めコンパイルしておけば、変更したコードを複数のデバイスですぐにデバッグ可能
・GCでメモリ管理が自動に
・リフレクションでクラスの情報に実行時アクセス
・実行時の式評価(デバッグに使う)

実行時コード編集は確かにあまり役立ってないかも
デリゲート・・・はC++11なら使えるのか
0432名前は開発中のものです。2014/10/31(金) 19:23:51.37ID:GqyQ4J03
>>429
実行中に変更出来ないと一回落として変更して同じところまで進めないといけないから
レベルの調整とかしてるとめちゃくちゃめんどい
0433名前は開発中のものです。2014/10/31(金) 19:24:16.18ID:LbK2+I6l
VB.netのスレはここじゃないんだが?
0434名前は開発中のものです。2014/10/31(金) 19:32:27.85ID:6bcSF0zB
>>432
まあ半分わかるけど、相当規模が大きなものじゃないといらないし、
代替としてその環境を作るスクリプトも組めるし、
途中で変えちゃったら、ユーザーがほんとにその条件に辿り着けるのかテストにならないから
やっぱりいらないな
0435名前は開発中のものです。2014/10/31(金) 20:11:52.54ID:GqyQ4J03
>>422
ロジックをスクリプトで記述するなら汎用ゲームエンジンでいい気がするな
Unityとかめっちゃお手軽よ
0436名前は開発中のものです。2014/10/31(金) 20:42:19.68ID:3MYWoAmv
スクリプト言語はやっぱ、コルーチンが使える点が良いよね?
0437名前は開発中のものです。2014/10/31(金) 20:58:16.81ID:qWph+yLX
yieldってなんて読むの
0438名前は開発中のものです。2014/10/31(金) 22:36:22.81ID:ARi4wFqk
ヨィールドって脳内再生してうr
0439名前は開発中のものです。2014/10/31(金) 22:57:08.23ID:oJQR+l+C
>>437
いーるどぅ
0440名前は開発中のものです。2014/10/31(金) 22:59:35.82ID:r+epGFzI
インバースキネマティクスについて書かれている書籍知りませんか?
0441名前は開発中のものです。2014/10/31(金) 23:09:11.23ID:BXR79UmA
>>440
シューティングゲームアルゴリズムマニアクスにあったように記憶してる。
手元にないから確かじゃないけど。
04424402014/10/31(金) 23:15:42.18ID:r+epGFzI
>>441
ありがとうございます!
その本は持っているのですが、IKについて書かれていることに気付きませんでしたw
コードも書いているので参考になりそうです。

他の本も、ご存知の方がおられたら是非教えてください。
0443名前は開発中のものです。2014/11/01(土) 01:19:56.78ID:/W7J7qqw
>>442
最近読んだのだとこれ
XNAのソースがサンプルであるけど今はXNA自体が使えない
http://www.borndigital.co.jp/book/94.html
04444402014/11/01(土) 01:22:56.00ID:THgSKMXt
>>443
ありがとうございます!
XNAでも参考にはなると思うので買ってみます。
0445名前は開発中のものです。2014/11/01(土) 10:44:08.91ID:oqeDiPeW
AがtrueならB、falseならC
BがtrueならD、falseならE
DがtrueならF、falseなら・・・
という感じで
if (A) {
if (B) {
if (D) {
F();
} else {
G();
}
} else {
E();
}
} else {
C();
}
というようなことになってしまいます
例えばAがゲーム開始フラグ、Bがプレイヤー出現フラグ、Dが敵出現フラグという時
最初にC()でカウントを回してAをtrueにしゲーム開始
E()でカウントを回してプレイヤーを出現
G()でカウントを回して敵を出現
F()でバトル開始
のような感じになるのですが、どうすればいいのでしょう
あまり良くないですがswitch caseなどでもいいのかなと考えてます
0446名前は開発中のものです。2014/11/01(土) 11:05:49.01ID:/W7J7qqw
>>445
ステートパターン使うといいよ
IStateを実装した開始ステート、敵出現ステートなどをつくって、
unique_ptr<IState> state = make_unique<InitialState>();
while ...
state->update();
if (state->next)
state = state->next;
0447名前は開発中のものです。2014/11/01(土) 16:11:10.84ID:XJ9qlDD+
普通のクラスだったらプレフィックスにCってつける?
04484402014/11/01(土) 17:17:01.83ID:THgSKMXt
>>443
買ってきました!
とても詳しく書かれていて大満足です。
ありがとうございました!
0449名前は開発中のものです。2014/11/02(日) 01:02:23.40ID:p7Beypyf
>>446
やっぱりStateパターンが良いですよね
ありがとうございます
0450名前は開発中のものです。2014/11/02(日) 10:54:46.91ID:F1N1A3wT
Stateパターンと
Strategyパターンって
コードの書き方はまったくと言っていいほど同じじゃないですか?
Stateは状態的な切り替え、
Strategyは機能的な切り替え、
というふうに、どういう使い方をするかで名称が別れてるということですか?
0451名前は開発中のものです。2014/11/02(日) 12:52:42.92ID:2+iLF1K9
ストラテジーはアルゴリズムの切り替え
状態遷移はストラテジーっぽい
0452名前は開発中のものです。2014/11/02(日) 13:07:10.08ID:nNeu0fIH
どういう意図で組んでるか?という情報は
後から見た時に結構重要だったりするよね
0453名前は開発中のものです。2014/11/02(日) 13:26:08.13ID:bYY9FFGo
だよなぁ
例えば遷移だと>>446のやり方はそれぞれのStateの中で自分に関係する遷移条件と遷移先だけ指定するから
ソースを見ただけじゃ全体の遷移一覧がぱっと見えてこないんだよなぁ
0454名前は開発中のものです。2014/11/02(日) 20:23:50.79ID:rvNm7bLn
ソースに依存関係が少ないて部分では良い事だろ
偏移状態はUMLなりその他の手段で伝わればいい
0455名前は開発中のものです。2014/11/02(日) 20:58:59.62ID:F1N1A3wT
状態遷移を記述するのに優れた外部ソースを読み込ませれば
その通りに動くっていう仕組みはスマートで憧れるなぁw
動かす側(エンジン側)のC++コードは一切変更しないでいい。
0456名前は開発中のものです。2014/11/02(日) 21:39:22.79ID:2+iLF1K9
何を言ってるのかわからない
0457名前は開発中のものです。2014/11/02(日) 23:03:44.43ID:nU5X7LHx
Lua使えってことだろ
0458名前は開発中のものです。2014/11/02(日) 23:46:34.29ID:bYY9FFGo
WebアプリのフレームワークみたいにXMLでできたら良いなってところか
0459名前は開発中のものです。2014/11/03(月) 11:18:44.11ID:awPRm7Lk
>>445の例みたいに順番に実行するだけの処理でstateパターンはちょっと大袈裟な気がする
各処理に番号付けてswitchで振り分けながら順番に処理した方がまだ見通しよくなりそう
0460名前は開発中のものです。2014/11/03(月) 12:22:49.27ID:h2Nq+Bdg
内容と関連の無い連番の関数名て最悪のパターンじゃないか
0461名前は開発中のものです。2014/11/03(月) 12:27:51.68ID:DUvfBBxq
まぁ、単純なステートで、かつ、再利用も考えないなら、ハードコーディングしちゃってもいいと思うけどね。
0462名前は開発中のものです。2014/11/03(月) 13:23:55.34ID:EKtPAmoI
関数ポインタの配列とかステートパターンとか
1行ですっきり書けてかっこいいと思ってやってるんだろうけど
結局デバッグするときにどの関数が実際に呼ばれてるのか
分かりにくくなったりするだけなんだよなあ
状態変数使ってifelseとかswitchの方が分かりやすいし
そもそも状態遷移の処理なんかそんなに頻繁に書き換えないし
状態遷移の処理で致命的なバグになって開発が頓挫なんてしないし
結局プログラマーのオナニーでしかないんだよなあ
ファミコンなんかクラスどころか関数すらないのに神ゲーいっぱいあったわけで
オナニーに精力を出すくらいならもっと内容に力入れてよ
0463名前は開発中のものです。2014/11/03(月) 13:31:20.68ID:DUvfBBxq
デザインパターンとか、スマートさと複雑さのトレードオフなところあるし、バランスが難しいよね。
ベタな書き方で十分なら、それでいいところは多いね。
0464名前は開発中のものです。2014/11/03(月) 13:33:27.09ID:Haa+1SS6
まあ気分よく作業できるってことも重要だよ
他人と共同で作業してたりコードレビューしたりしないなら好きにすればいいさ
多少のわかりにくさはコメントでカバーすることもできるし
それが原因で時間かかっていつまで経っても完成しないとかだと目も当てられないが
0465名前は開発中のものです。2014/11/03(月) 13:33:31.87ID:TMDXQf53
でもOOP楽しいじゃん?
0466名前は開発中のものです。2014/11/03(月) 13:36:09.35ID:DUvfBBxq
>>465
楽しいねw
ポリモーフィズムで、ほとんどコードをいじることなくなった基幹クラスがあることが嬉しいw
場合によってはベタ書きのほうが総合的にイイなぁ、と思うところも多々あり。
0467名前は開発中のものです。2014/11/03(月) 15:20:17.50ID:awPRm7Lk
>>460
関数名じゃなくて数値と対応付けてswitchで処理するって事
複数のboolで分岐してるのをintひとつでやる感じ
列挙型でやればコードも見やすいかも
そもそも関数名でswitchなんて出来ないしね
0468名前は開発中のものです。2014/11/03(月) 15:42:10.04ID:LRPNDOfH
簡単なトランスレータ(プリプロセッサ)を挟む事で、列挙型と感数名を
自動的に対応付けてCのソースコード生成とか、昔からよくあるサボりテク

STGの敵キャラや弾みたいな、簡易なシーケンシャル制御では重宝するかと
0469名前は開発中のものです。2014/11/03(月) 15:42:40.12ID:LRPNDOfH
感数名→関数名
0470名前は開発中のものです。2014/11/03(月) 16:29:35.49ID:almwUFeG
関数ポインタじゃなくて関数オブジェクトにしてメンバに名前を持たせればいいだけの話だと思うがなぁ
0471名前は開発中のものです。2014/11/03(月) 16:38:51.58ID:w8rbKk4K
C++の話だよね
Cならまだしも、C++で関数ポインタって使いにくいと思うんだけど
非staticなメンバ関数使おうとしたらめんどくさいし(function<...>とかあるけど)

あと一口に状態遷移っていっても
アクションゲームの敵とか、個々のゲーム内オブジェクトの動作みたいな規模と
RPGでのフィールド/メニュー/先頭シーンの切り替えみたいな規模のものがあるけど
それによっても求められる要件は結構違ってくるんじゃないか
0472名前は開発中のものです。2014/11/03(月) 16:47:13.78ID:6bdXEtlk
関数ポインタの配列とenumで分岐するくらいならC++やめて純粋なCでやったら?
関数付き構造体としてしかC++使えていないだろうし
0473名前は開発中のものです。2014/11/03(月) 17:15:54.38ID:awPRm7Lk
c++はマルチパラダイムだしむしろOOPしか認めないならJAVAでやったら?
少なくとも>>445の例でstateパターンが最適とは思えない
0474名前は開発中のものです。2014/11/03(月) 17:30:10.15ID:s5EHYVPL
例えば
http://boost.cppll.jp/HEAD/libs/mpl/doc/paper/mpl_paper.html
の、「5. 例: コンパイル時 FSM ジェネレータ」の辺りを読んでみると
>>445が抱いた疑問に対して、わりと明瞭に答えているような気が
しないでもない

「ネストしたif(またはswitch-case)を使ってFSMの構造を実装する
ことは特に間違いではないが」というように、状況によって最適な
実装は変わるんだよね
0475名前は開発中のものです。2014/11/03(月) 17:38:52.31ID:EKtPAmoI
馬鹿の一つ覚えでステートパターン覚えたら
ステートパターン使ってない奴を見下し軽蔑し
ステートパターンを使うことを強要してくる
こういうやつがいるからソースコードをgithubに公開とかする気が失せるんだよなあ
日本人てほんと頭悪い民族なんだなと思う
0476名前は開発中のものです。2014/11/03(月) 17:40:45.30ID:DUvfBBxq
何で日本人はそうなんだろうか?
0477名前は開発中のものです。2014/11/03(月) 17:43:52.24ID:71HprTRF
公開されてるコードにステートパターンを強要されたことがあるのか
すごいなその日本人ってやつは
0478名前は開発中のものです。2014/11/03(月) 17:49:10.69ID:s5EHYVPL
そういうの余所でやってくれませんかね(お願い)
0479名前は開発中のものです。2014/11/03(月) 17:56:31.99ID:Z17rldcf
正解なんてないんだし綺麗に整ってればなんでもええわ
商業ならそうもいかないだろうけど
0480名前は開発中のものです。2014/11/03(月) 18:00:07.61ID:eKZugS4h
我流でゲーム作ってたら、確かに作れるからいいんだけど「私はC++が使えます」ってスキルアピールできないんだよな。

他人のソース全く意味わからないし。
0481名前は開発中のものです。2014/11/03(月) 18:26:59.05ID:EKtPAmoI
メッセンジャーとかでも外人は普通に顔写真フルネーム公開だが
日本人は絶対写真出さないしニックネームだからな
ネットゲームでも外人は気さくに話しかけてくるが日本人は基本無口だからな
晒しとか陰湿な行為を行うのは日本人という民族が劣ってるからなんだろう
0482名前は開発中のものです。2014/11/03(月) 18:34:22.56ID:Z2NKRK1e
で、ID:EKtPAmoI はもちろん日本人だよね?
もっと自分に自信を持ったら?
0483名前は開発中のものです。2014/11/03(月) 19:12:02.78ID:LRPNDOfH
お引き取りください
0484名前は開発中のものです。2014/11/03(月) 21:02:33.52ID:6bdXEtlk
C++入門書に書いてある程度のことが分からなくて逆切れなん?w
頭悪いし才能ないから諦めたほうがいいよ
0485名前は開発中のものです。2014/11/03(月) 21:22:08.07ID:/5RkG39n
よしなよ
0486名前は開発中のものです。2014/11/03(月) 21:41:28.69ID:DUvfBBxq
やめなよー
0487名前は開発中のものです。2014/11/03(月) 21:47:10.70ID:awPRm7Lk
>>484
だからJAVAやってればいいじゃん
君にネイティブ言語はちょっと難しいんじゃないかな
0488名前は開発中のものです。2014/11/03(月) 23:31:40.14ID:6bdXEtlk
ネイティブ言語わろた
継承ひとつ理解できないおつむじゃ諦めたほうがいい
もしくは独自のヘンテコなやり方をしたければ、ここで披露せずに一人でやっていなさい
0489名前は開発中のものです。2014/11/03(月) 23:48:43.67ID:kGGiNKfp
stateパターンって、クラスつくるよりenumのメンバ追加の方が楽でいい。
でもstateパターン作るなら、状態遷移図は別にドキュメントを作る必要があると思う。
テーブルでやる場合はソースだけでもいいが、抜けがないかの確認がしにくい。

階層型の状態遷移はどうやるといいのだろうか。nestが2階層とか決まってたらまだいいけど、
自由に階層作りたいとか。
0490名前は開発中のものです。2014/11/03(月) 23:51:38.06ID:kGGiNKfp
状態遷移はluaのコルーチンとかでやった方がいいのだろうか?
コードも見やすく、変更も動的にできるし。
0491名前は開発中のものです。2014/11/04(火) 00:05:07.98ID:zm0bWhhE
なんで大手が採用してるか考えたら自明の理
0492名前は開発中のものです。2014/11/04(火) 00:09:15.45ID:8wIs/lt8
独り言が激しいな とりあえず階層型の状態遷移に話の焦点を絞ると、
親階層を子階層から遷移させる手法が考えどころになるだろうね

自分は独自のやり方でやってるけど、一般的にはどういうやりかたが
推奨されて普及しているのかよく分からない
0493名前は開発中のものです。2014/11/04(火) 00:40:17.63ID:ROF6NvON
コンパイルが待てないほど大きいの作るの?
0494名前は開発中のものです。2014/11/04(火) 01:00:57.23ID:gmdSbkqZ
自分のコードは大した量じゃなくても、ライブラリいっぱい使ってるとリビルド数分とか普通にかかる
0495名前は開発中のものです。2014/11/04(火) 01:25:54.32ID:eIlBUMlD
boostのcoroutineとかcontextとかをゲーム製作で使ってる人いる?
興味があるので、できれば試用感を教えてほしいんだけど
0496名前は開発中のものです。2014/11/04(火) 02:14:53.36ID:zm0bWhhE
コンパイルが待てないからスクリプト組み込むとか、
ライブラリいっぱい使うと時間がかかるとか、
なんでアホな話になるかね。

外部データとして扱えることが最大の利点だろうに。
移植のこととか考えてないんかねこの人たちは。
0497名前は開発中のものです。2014/11/04(火) 02:17:27.43ID:ROF6NvON
趣味だもの
0498名前は開発中のものです。2014/11/04(火) 02:33:18.69ID:zm0bWhhE
ついでに、Luaじゃなくても別にかまわないがスクリプトでコルーチンを実装すると、
シーケンシャルな書き方で >>445 を書けて

GameStart();
ShowPlayer();
ShowEnemy();
BattleStart();

てことで、定型の処理は隠ぺいして保守しやすくスッキリ見通せる。
さらにスクリプトからスクリプトを生成して動的に実行するということも可能になるんで
非常にフレキシブル。

boostのコルーチンは使ったことない。
0499名前は開発中のものです。2014/11/04(火) 06:57:09.55ID:64bWIxQw
>>496
逆にC++だと移植大変だったりする?
OSのAPI以外でもコードに差って出たりするの
0500名前は開発中のものです。2014/11/04(火) 13:13:42.12ID:8wIs/lt8
コルーチンとかコマンドパターンのベースクラス作れば同じことだし
コンパイル時間云々もDLLにすれば解決するよ

俺的には、Luaはユーザーに自作マップとかMODを作らせるものだと思ってる
洋ゲーだとMODツールキットにLuaがよく使われているしな
0501名前は開発中のものです。2014/11/04(火) 20:36:39.38ID:zm0bWhhE
>>499
C++の中にハードコーディングしたイベントだらけだったら、
コードを把握するのも大変で移植するのに萎えないか?

その点実行部分とスクリプトで明確に分けれるのが大きい。
実行部分は作る人が仕様に沿ってつくるだけだし、どのプラットホームでも共通のスクリプトにできる。

ちなみにLuaはANSI C準拠なんで、C++がダメな環境でもOK。
0502名前は開発中のものです。2014/11/04(火) 21:00:59.89ID:xgvPL05X
それ移植どうこうとまた別問題じゃね
コード把握するの大変だけど移植するわけじゃないからおkとはならないでしょ
0503名前は開発中のものです。2014/11/04(火) 21:03:11.80ID:IS/2iQRa
結論先にありきのデタラメばかり
移植以前に完成したことないだろ
0504名前は開発中のものです。2014/11/04(火) 21:09:55.86ID:zm0bWhhE
普通にandroidとPCで出してるが、
とりあえず、>>503はどういう方法でゲーム作っているのか書いてから
どこら辺がデタラメか指摘してもらえるかな?
0505名前は開発中のものです。2014/11/04(火) 22:19:13.99ID:8wIs/lt8
ハードコーディングと移植性に何の関係もないことくらい移植したら分かるだろ
見栄を張って嘘をついてもすぐにばれてしまうというこったw
0506名前は開発中のものです。2014/11/04(火) 22:42:12.25ID:Jn/miYsu
ステートパターンだけど、
AIの行動パターンを制御する時みたいに、それぞれのステートが
共通の値(現在HPとか)を参照できる状態(ステート固有の値は持たない)で、
実行される処理だけ切り替えたい場合と、
シーンの切り替えみたいに、ステート固有の値を保管してシーンをスタックに詰んで戻ってきたい場合と、
実装方法は>>446で同じだけど、明確に意味が違うとして別クラス(インターフェース)にすべきだよね?
0507名前は開発中のものです。2014/11/04(火) 22:46:48.54ID:zm0bWhhE
何言ってんだ?
外部にスクリプトで記述していたら、本体は機種依存や特殊な部分だけ移植すればいいだろうが。
ハードコーディングなんぞしてたら移植するたびに作り直しじゃないか。
0508名前は開発中のものです。2014/11/04(火) 22:48:00.93ID:2N3psa7J
>>506
するべきだと思う
じゃないとシーンの制御にAIのオブジェクト渡せるみたいなわけわからん事になる
0509名前は開発中のものです。2014/11/04(火) 23:07:53.61ID:K2k2Os5b
イベントなんかをハードコーディングすると機種依存が発生するって言ってる?
0510名前は開発中のものです。2014/11/04(火) 23:17:05.61ID:zm0bWhhE
極端なたとえ話をすると、エミュを作成する場合で
ゲーム固有のイベントをその汎用的なエミュに組み込むのか?組み込まないだろ?というのとあまり変わらない。
0511名前は開発中のものです。2014/11/04(火) 23:18:46.07ID:2N3psa7J
もうUnity使えばいいんじゃないかな
0512名前は開発中のものです。2014/11/04(火) 23:36:33.23ID:rDud6J5G
移植するつもりがあるなら移植を考えたコードにすりゃいいし
別に移植考えないなら考えてないコードでもいいんじゃない?
まぁどっちでも好きな様にすりゃいいんだけど
0513名前は開発中のものです。2014/11/04(火) 23:41:58.41ID:K2k2Os5b
やっとわかったけど
多分大抵の人はスクリプトの用途をもっと限定的なものとして話してると思うわ
0514名前は開発中のものです。2014/11/04(火) 23:48:24.99ID:zm0bWhhE
分かりにくくてスマンかった。ついでに移植で話がそれたのもスマンかった。
要はstateパターンやswitch振り分けのほかにDSLという選択肢を示したかっただけ。
0515名前は開発中のものです。2014/11/04(火) 23:50:26.53ID:GMRH/mFP
もうエンジン部分以外はほとんどスクリプトでいいと思うけどね
処理速度が必要な部分が判明したときだけコードをC++に移すかんじで
FFCCはソース見当たらなかったがほとんどがスクリプトだったと見た記憶がある

http://www.inside-games.jp/article/2009/09/07/37504.html
http://game.watch.impress.co.jp/docs/20080224/ffcc.htm
0516名前は開発中のものです。2014/11/04(火) 23:52:06.45ID:8wIs/lt8
>>507
スクリプトを使うかどうかと何の関係もないのだがw
ボロがでるばかりwww
0517名前は開発中のものです。2014/11/05(水) 00:01:59.05ID:23olDi5X
>>515
まさにそう。使ってるライブラリが開発停止になっても、エンジン部のすげ替えもできるし。

>>516
キミは分からないならもういいよ、独自の路線を走ってくれw
たぶん一人だけで開発してるだろうから、いまのままでも特段不便はないだろ。
0518名前は開発中のものです。2014/11/05(水) 00:12:09.01ID:mDgxc5Qo
まず、OSやOpenGLのAPIをアプリロジック内にハードコーディングしちゃうアホとか君だけだからね
それと組み込みスクリプト言語を使用することに何の関連性も無いのよ
0519名前は開発中のものです。2014/11/05(水) 00:21:14.06ID:23olDi5X
薄いラッパー書いて使ってるが何か?w
で、俺の主張は>>514だが、キミの主張はなんなの?過去発言から意図が見えないのだが?
単に俺に突っかかって来るだけなら、相手しても無駄なので遠慮したいんだが。
0520名前は開発中のものです。2014/11/05(水) 00:27:01.07ID:mDgxc5Qo
嘘デタラメを書き散らすウザイやつを笑ってるだけだよ
あまり背伸びをするなよw
0521名前は開発中のものです。2014/11/05(水) 00:28:29.32ID:23olDi5X
ああ、そうw
0522名前は開発中のものです。2014/11/05(水) 00:36:27.94ID:mDgxc5Qo
かくしてスクリプト言語を使わないと移植が困難になるとかいう根拠なきトンデモ説が論破され
しったか君が大恥をかいたのであった♪
0523名前は開発中のものです。2014/11/05(水) 00:45:38.59ID:/iQIEZEB
ゲーム自体をスクリプトでつくれば移植するときエンジンを交換するだけで済むって話でしょ
前提が共有できてないのに知ったか吹いてると大恥かくよ
0524名前は開発中のものです。2014/11/05(水) 00:50:14.08ID:IdGIx4uz
ってか、スクリプト使ってる人って多いのかな?
個人で作る小規模ゲームでもよく使われるの?
オールC++の人も多いのかな?
0525名前は開発中のものです。2014/11/05(水) 00:55:37.53ID:x4hCla17
交換だけったって結構C++で書き換えるコードもアリそうだけどな

移植先がC++ならOSのAPI叩く部分とエンジン駆動部分を綺麗に分離しとけば、
移植性に関しては大して変わらないようにも思うし、
スクリプトの最大のメリットが移植性とか言われるとやっぱすごい違和感在るわ

つうかゲーム自体をスクリプトで書くならもうすでにこのスレで話す内容じゃないな
0526名前は開発中のものです。2014/11/05(水) 00:56:41.89ID:mDgxc5Qo
マルチプラットフォームのエンジンなりラッパーを挟めば何も交換する必要もない
遂にその程度のことも分からなかったID:23olDi5Xが大恥かいたということだね
0527名前は開発中のものです。2014/11/05(水) 01:16:22.19ID:IsY3AQRw
winのしか作る気ないしな
c++だけで何の問題もない
0528名前は開発中のものです。2014/11/05(水) 01:19:11.85ID:IdGIx4uz
自分もC++/Win/DirectXオンリー派。
移植とか気にせんでえーし楽だ。
0529名前は開発中のものです。2014/11/05(水) 01:33:14.61ID:1mW5bpIr
スクリプトは覚えるのめんどくさいかもしれんけど便利だよ
データの分離は常識だけど、それをさらに進めて制御も分離できる
データとそれを使うコードは密接なことも多いから
まるごと分離できると何も考えなくて済むし
0530名前は開発中のものです。2014/11/05(水) 02:09:12.31ID:23olDi5X
>>525
いや、>>496 で言ってるように最大の利点はデータとして分離できること。
移植が注目されてるが、質問から思わず伸びたに過ぎない。利点の一つではあるが。
ちなみに>>422は俺ではないが、ほぼ同じ経緯をたどっているね。

特に複数人で開発するときスクリプトはかなり便利。
割と簡単に使えるようにしてから、デザイナーが演出とかいろいろ直接いじったりできる。
※あいつら、結構シビアなんでいちいち要求に応じて、こっちで作業してたらめんどくっさい。

また、前は書き換え専用の実行ファイル持ってたが、
データとしてゲーム部分を持っているのでリリース後、ゲーム中にアップデートすることもできる。
某プロテクトの関係で実行ファイルを書き換えられないので、これ地味に結構良い。
0531名前は開発中のものです。2014/11/05(水) 02:22:26.32ID:23olDi5X
>>529
ほんとこれだね
0532名前は開発中のものです。2014/11/05(水) 02:24:59.33ID:IdGIx4uz
なるほど。
覚えとこ。
0533名前は開発中のものです。2014/11/05(水) 03:13:21.00ID:H18oW5WU
スクリプトってよくわからない。素人で申し訳ないが。

例えばキャラクターの行動を外部データ(テキスト形式)で設定するとして、俺がどうやろうかと考えると
テキストを読み込む→書かれてた文字を判定→それに従ってキャラを設定する
という単なる外部データ読み込み処理になるわけだけど、
これだと特に意識しない限り独自形式でやることになるから、スクリプト言語とか関係なくなる。

んじゃよく聞くスクリプト言語ってのはなんなんだと考えると
誰かが考えたスクリプト言語にしたがって自分で実行プログラムを組んでいる?
しか思いつかないんだが、これだとあまりにも非効率で、一般に広まるとは考えにくい。

んじゃライブラリみたいな形で配布されてるの? とも思うんだが、それを自分のプログラムに組み込むのって
最初に挙げた、自分の独自形式でテキスト読み込むほうが楽でしかも早くね? と思ってしまう。 
0534名前は開発中のものです。2014/11/05(水) 04:02:31.79ID:23olDi5X
テキスト読んで設定するだけでも立派なスクリプト。
独自だろうが何だろうが、スクリプトを見て処理の流れが一発でわかるとベスト。
ノベルゲーのテキスト処理のスクリプトは想像しやすいんじゃないかな?
これはいくらなんでもハードコーディングはしないでしょ。

ただ、自分で四則演算や変数・関数を実装しようとすると、
テキストの構文解析、意味解析、スタックマシン等を勉強して
yaccやbisonでコンパイラを作る大変な羽目になる。

んで、そんなことせずとも簡単にそういう機能を組み込めるように
LuaやSquirrelがある。それにこの二つはメジャーで、かなり広まってる。
0535名前は開発中のものです。2014/11/05(水) 04:45:23.73ID:vpLYRihW
BulletMLとか、こういう説明には向いてそうな感じがする
0536名前は開発中のものです。2014/11/05(水) 07:24:36.56ID:gZJGpYil
テキスト形式のデータ構造とスクリプト言語を同一視するのは、なんだかな
xmlとかをデータ構造と言われると納得できるがスクリプト言語と言われるとなんかモニョる
いや、スクリプト言語をデータ構造として使える事は理解しているし、
データ構造をスクリプト言語の代わりとしては使えない事も理解しているが……
0537名前は開発中のものです。2014/11/05(水) 08:24:52.84ID:JAMPZGh3
ノベルゲームの場合はプログラミング言語としてのスクリプトって言うかまんま台本だな
0538名前は開発中のものです。2014/11/05(水) 08:58:45.06ID:Tq/w+cMa
ノベルゲーごときにこんな議論してたのか
通りでスレの流れが理解できんわけだ…
0539名前は開発中のものです。2014/11/05(水) 19:54:47.73ID:LE8Hhxvh
>>533
キャラクターの行動を記述できるような表現力のある
実質的にスクリプト言語と呼んで良いようなものを簡単に書けるなら
他の人が作ったものを学習して使う方が面倒に思うのでは
他の人が作ったスクリプト言語を使うにしてもブラックボックスで使うのと
中身を検査して使うのとでは手間が大幅に違う
まだお互いに無意識な認識の違いがかなりあるのではないか
0540名前は開発中のものです。2014/11/06(木) 01:14:24.74ID:u3pLa7VG
外部データの代わりとしてのスクリプト(初期化の時に呼び出すとか)はわかるんだけど
処理としてのスクリプトってのはどういう風に使うかわかんねぇや

例えばDXLibとLuaを使うとする。
DXLibは基本的にシングルスレッドで、ゲームループ中にupdateとdrawを交互に呼び出すっていうのが主流だけど、
そのupdate中にLuaスクリプトを呼ぶとすると、その処理中、ループはそこで止まってることになる。

AIのルーチンとか、ウェイト無しでひたすら処理すればいいやつはそれで良いけど。
コルーチンを駆使するような挙動(※)を記述する場合って、意図したように動かすの難しいよね?
(※四角形を右に3秒かけて30ドット移動させた後に、上に2秒かけて50ドット動かす、など)

コルーチンを2段重ねにして、
obj.move(30, 0, 3000) //xに30ドット、1000ミリ秒
obj.move(0, -50, 2000)

//moveの実装
void move(int x, int y, int time) {
 int frame = time * FPS / 1000;
 float dx = (float)x / frame
 float dy //略
 for(i = 0; i < frame; ++i) {
  time / FPS
  this.x += dx;
  this.y //略
  yield();
 }
}

こんな感じ?(これじゃズレるけど)
0541名前は開発中のものです。2014/11/06(木) 02:25:22.77ID:PKFZPuVA
最後合わせればそれでもいいんだけど、時間で考えたらいい。
float delta = (now_time - begin_time) / (float)time で 0〜1まで変化するので、
x(y) * deltaでその時点での移動量が出るから初期位置に足してやる。
終了条件は1以上になったときで、強制的に初期位置にx(y)を足して処理を抜ける。
0542名前は開発中のものです。2014/11/06(木) 03:09:54.65ID:EqcVgNy3
LuaとC++のデータ橋渡しとか、C++書く側が結構面倒くさそうだな
0543名前は開発中のものです。2014/11/06(木) 14:42:03.47ID:/931C6S2
おい、姿勢制御にクォータニオンを使う方法が特許取られてたぞ

特開2011−220825

でググって一番最初のリンク
今更こんなんで特許申請するとか頭おかしいし、なぜ取れるんだろうか…
0544名前は開発中のものです。2014/11/06(木) 15:30:14.91ID:58LXPdcW
周知の技術って特許にならないんじゃなかったっけ。
ホントにそうなら取り消されるんじゃない?
0545名前は開発中のものです。2014/11/06(木) 15:41:51.54ID:SeWxbthZ
訴えれば取り消せる
訴えなければ取り消されない
ちなみに低額訴訟なら簡単に訴えれる
0546名前は開発中のものです。2014/11/06(木) 15:46:35.49ID:SeWxbthZ
間違えた。低額訴訟じゃなくて少額訴訟だった。
ちなみに3Dゲームに興味の無い俺は訴えないけどな
まあ訴えるなら頑張れ
0547名前は開発中のものです。2014/11/06(木) 15:53:35.47ID:/931C6S2
申請者はトヨタ自動車になってて、最初は工業用ロボット制御の事で始まってるが
最終的には一般的なプログラム上での話しになってる
これは酷過ぎるな…

何の価値もないこの申請がトヨタの誰かの業績になってると思うと腹立つな
0548名前は開発中のものです。2014/11/06(木) 15:56:19.75ID:WRpf6OH0
特定の特許申請に対して異議申し立てとか再審請求とか出来るんだろうか?
0549名前は開発中のものです。2014/11/06(木) 16:08:27.82ID:/931C6S2
実際は、相手から訴えられない限り特許無効申請なんて誰もしないだろうね

そしてこういう下らない特許は山ほどあって
ゲーム 特許 訴訟
でググると結構色々あるな
0550名前は開発中のものです。2014/11/06(木) 16:13:48.30ID:es6ThdJv
訴訟起こされるほど拡散力の強いゲームを作ってみたいもんだね
0551名前は開発中のものです。2014/11/06(木) 18:44:11.46ID:F7RERGXP
よくわからんがゲ製には関係ないじゃろ
0552名前は開発中のものです。2014/11/06(木) 19:53:55.97ID:rZJzoyGT
特許で思い出したけどコナミだかどっかの
ロード中にミニゲームが遊べる
って特許が12月で切れるんやな
0553名前は開発中のものです。2014/11/06(木) 20:31:37.28ID:KMTyqLtj
実際に訴訟を起こされたら>>550みたいな考えは吹き飛ぶだろう
それも、どこから出てきたのか見当もつかないサブマリン特許みたいな物ならなおさら
0554名前は開発中のものです。2014/11/06(木) 21:01:35.08ID:/931C6S2
>>552
ミニゲームだったらナムコだろ
リッジ7のロード中にゼビウスが遊べた時はびびったw
0555名前は開発中のものです。2014/11/06(木) 21:11:28.90ID:Zp1CF6nb
なぁ、特許って本当に社会の発展に貢献してるんだろうか・・・?
>>543みたいなゴミ特許が効力あるとか、唖然とするわ・・・。
0556名前は開発中のものです。2014/11/06(木) 21:19:10.59ID:MoMQBjON
特許を審査するメンバーってちゃんと仕事してるのか考えさせるよな。

審査過程をチェックする機構もあるのか怪しい。
0557名前は開発中のものです。2014/11/06(木) 21:25:50.58ID:OmSV/1Vy
永久機関そのままは駄目だけどちょっと表現変えるだけで通るみたいだしな
0558名前は開発中のものです。2014/11/06(木) 21:40:44.92ID:58LXPdcW
特許の審査ってなにやってるんだろうと考えると、
まず考えられるのは今までに同じ特許がなかった事を調べる、くらいだろう。

次に既知の技術として存在してないかを調べるんだろうけど、
これいちいち調べてられないよな。漏れがでるのはしょうがない。

ネットが発展した現代では、調べるのもかなり容易になってきたのではないかと思うが、
審査官が来る日も来る日もググってると考えるとなにか悲しいものがあるな……。
0559名前は開発中のものです。2014/11/06(木) 21:53:29.21ID:mXBMs4Fv
その特許を調べるためのシステムをつくるような話があった気がしたけど頓挫したんだっけ
0560名前は開発中のものです。2014/11/06(木) 22:55:27.98ID:T/qTIcHW
この特許はフィードバック制御が必要だから、
新規性の判断はそこでされたんじゃないの?
0561名前は開発中のものです。2014/11/06(木) 23:20:16.77ID:MoMQBjON
よし、車輪でも申請してみるか
0562名前は開発中のものです。2014/11/06(木) 23:37:08.84ID:u3pLa7VG
>>541
あーいや、そういう話じゃなくて、
DXLibだとメインループ回ってるから、いくらLuaでコルーチンがあっても
1ループ間の時間に合わせて処理返さないといけないよなって話
0563名前は開発中のものです。2014/11/07(金) 00:36:18.17ID:YN7LVK2N
c++側とlua側ともにもう少し詳しく書いてみ
0564名前は開発中のものです。2014/11/07(金) 00:41:45.93ID:WL/Bhc4K
わからんって言ってるのに書いてみとはアスペしかいないのかよ
0565名前は開発中のものです。2014/11/07(金) 01:43:20.36ID:OPX5vmff
プログラマはアスペ気味の糞が多いからねw
そいつらを上手く奴隷として扱えるようになるのが社会の勝ち組。
0566名前は開発中のものです。2014/11/07(金) 01:53:01.03ID:cHXJDjI4
ていうかマルチスレッドで描画てどうやんの?
座標はupdateスレッドでロックしてるし描画するにしてもdrawスレッドでロックしないといけないだろ
メモリを2倍使ってダブルバッファリングで交互にリソースを入れ替えてもいいけど1フレーム遅れるし
要素ごとにロックとアンロックしてたらそっちのほうが処理重いでしょ
モーションブラーとかドロップシャドウみたいな、書き足すようなシェーダとかなら分かるんだけど、ゲームの要素そのものを描画するのにマルチスレッド?ってすごい疑問なんだけど
どんな風にやってるの?
0567名前は開発中のものです。2014/11/07(金) 02:53:09.53ID:BtR0AX8u
俺、マルチスレッドってさっぱりわからんけど
マルチスレッドで描画するのに「1フレーム遅れる」って関係あんの?
0568名前は開発中のものです。2014/11/07(金) 03:13:07.36ID:QezXslKR
片方はとにかく更新する
片方はとにかく描画する
ロックアンロックで同期させるならマルチスレッドをやめる
0569名前は開発中のものです。2014/11/07(金) 06:56:56.78ID:cuSqlZ5a
マルチスレッドを理解してない奴が多いな、まあ自分もあんまり理解はしてないが
というか、マルチスレッドだけでも本がいっぱい出てるからそれを参考にしたらいいかと
0570名前は開発中のものです。2014/11/07(金) 07:32:03.69ID:9A2ZZlGV
マルチスレッドの場合、普通は描画と更新を別々にするわけじゃない
それぞれのスレッドに別々の役割を与えて異なる処理を分担させる事になる
あと、マシンに対する負荷を減らすには同期処理しまくらないと意味がないし
ロックアンロックが重くなると言ってる奴はマルチスレッドを根本から誤解してる
というかとにかく本を読め
0571名前は開発中のものです。2014/11/07(金) 07:53:25.81ID:7gbV2cfz
とにかく1フレームの中に時間は8msぐらいはあるんだ
その中ですべての作業を終わらせる事を考えろ
重い処理は役割分担して複数のスレッドで終わらせばいいし、
軽い処理はわざわざ役割分担する必然性は無いからな
0572名前は開発中のものです。2014/11/07(金) 08:07:38.45ID:0E5IqK7U
120fpsがデフォなのか
0573名前は開発中のものです。2014/11/07(金) 08:58:33.47ID:cHXJDjI4
じゃあ描画要素ごとにロックアンロックして、
もし描画スレッドで更新スレッドがロックしてる描画要素を描画しようとしたらアンロックされるまで待つのか?
0574名前は開発中のものです。2014/11/07(金) 09:08:00.46ID:4PyQVSc6
描画スレッド分けるのは描画中にメインループ止まるの防ぐ為だと思ってたけど
そんな事しなくても並列処理してくれるもんなの?
0575名前は開発中のものです。2014/11/07(金) 09:22:31.34ID:xV0IZ5SC
>>570

javaとかだと排他ロックするのすごい重い気がするんだけど
C++だとそんなことないの?
0576名前は開発中のものです。2014/11/07(金) 11:15:34.21ID:+qZS8i0Y
ロックすると重くなるんじゃなくてロックの割り当てというかスレッドの割り当てを間違えてるから重くなる
ロックしている間に別のスレッドをフルに動かすのがデフォ
0577名前は開発中のものです。2014/11/07(金) 11:42:28.34ID:KHDaX/cL
描画をマルチスレッドにするには自前の描画コマンド(のようなもの)を作らないと駄目だね
で、コマンドの作成を出来る限りマルチスレッドで行なう
最後にメインスレッドが自前の描画コマンドを解析しつつ各種API(DirectXやOpenGL)を呼び出していく
0578名前は開発中のものです。2014/11/07(金) 11:53:44.31ID:CL7k1iDn
そこでluabindですよ
0579名前は開発中のものです。2014/11/07(金) 12:23:40.03ID:mfboXhbt
そういや、描画範囲が違う場合は別々のスレッドで別個に書き込み出来るけれども、
描画範囲が重なる場合はこの手段が使えないね

あとスレッドって、何度も起動させて使うよりも、
一度起動させたらロックさせながら使い回す方が処理が早いね
0580名前は開発中のものです。2014/11/07(金) 15:24:47.03ID:Frm/uGA7
ごめん、いまいち分かってないんだけど
今の話ってどのプラットフォームを想定して進行してるの?
DirectX? OpenGL? ソフトウェア描画? それとも特に規定しない全般?
0581名前は開発中のものです。2014/11/07(金) 23:07:57.05ID:JstQIuBK
特にしてないはずだけど、DirectXはユーザが多いだけに暗黙な前提にしてる人が多そうなイメージ
0582名前は開発中のものです。2014/11/08(土) 10:52:03.60ID:CsoGcbNX
最近はマルチコアなCPUも珍しくないからなぁ
ウチのタブレットは4コアだ
PCはシングルコアだが
PCはわりと長持ちだらなぁ
0583名前は開発中のものです。2014/11/08(土) 11:16:44.54ID:kQCHHHLC
よく考えたら背景だろうがエフェクトだろうがキャラクターだろうが
カメラの射影行列使いまわすんだからカメラのインスタンスロックしないと危ないよね
で、カメラのアップデートは更新処理するスレッドで回すんだから結局更新スレッドと描画スレッドで占有権を撮り合う形になるから
アンロック待ちが当たり前なのか
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でコルーチンは作れるけどね
非同期処理が同期処理と同じように書けるから滅茶苦茶便利なのは使った人にしか分からんだろうね
0684名前は開発中のものです。2014/11/17(月) 11:54:49.69ID:J8hAdEWA
>>681
その理解であっているとおもうよ。
状態を(コード上は)ヒープに持たなくても、ローカル変数を引き継いだり、
ループを途中から再開できる、構文糖みたいなもの。
0685名前は開発中のものです。2014/11/17(月) 20:35:59.87ID:KwtC8N0w
ぶっちゃけコルーチン使わない
原理的にはシーンをStateパターンで切り替えるのと変わらないし
0686名前は開発中のものです。2014/11/18(火) 18:34:34.98ID:tX1o0EDZ
改造できる武器を作ったとして、そのデータを保持するにはどうすればいいんだろう?
無改造の物をオリジナルとして、
そのデータ配列を丸ごとコピーして改造(変数に変更を加える)して、
それをあらかじめ確保しておいた保存用の配列にぶっ込めばいいのだろうか
0687名前は開発中のものです。2014/11/18(火) 18:45:45.72ID:MnekbNE0
改造したら別の武器にする
0688名前は開発中のものです。2014/11/18(火) 18:58:45.41ID:VF38SoXr
改造の定義にもよるが687と同じく別の武器にしてる

ステータスを上げるだけの改造なら
修正値を保持するor改造回数を保持するって感じじゃない?
0689名前は開発中のものです。2014/11/18(火) 21:07:47.07ID:Lfan6beG
改造前提で、かつそれがゲーム内で重要な位置にあるなら、
最初からアイテム欄にある全ての武器について、名前・ステータス・種別などのデータを個々に持たせてしまったほうが良さそう。

要は、「どうのつるぎ」が「2本」という管理じゃなくて
「どうのつるぎ(武器ID:001)/攻:12/防:0/価格:100G」 「どうのつるぎ(武器ID:002)/攻:12/防:0/価格:100G」 みたいにするっていう。
0690名前は開発中のものです。2014/11/18(火) 21:48:09.63ID:qY3UPxZd
好きなようにパラメータいじれるなら所持アイテム個々にパラメータ持たせる必要あるし
アイテム名+1みたいに変動が決まってるなら最初から別のアイテムとしてデータ作ればいい
0691名前は開発中のものです。2014/11/18(火) 22:44:11.50ID:QzZupUBq
やったことあるのは
------------------------------
装備マスタ(装備ID, 名前, 基礎攻撃力, 基礎○○力, ...)
生成装備(生成装備No, 装備ID, 攻撃力補正値, ○○力補正値, ...)
プレイヤー所持装備(生成装備No, 装備中キャラNo)  //ここに持たせる[装備中キャラNo]は冗長だけど、ここで持たせておくと便利

キャラクターマスタ(キャラID, 名前, 属性, 攻撃力成長率, ○○力成長率, ...)
生成キャラクター(生成キャラNo, Lv, 生成装備No, ...)
------------------------------
(かなり端折ってるけど)こんな風で、起動時にロードされてプレイ中ずっと不変なマスタと、
動的生成したり変化する部分に分けて、武器の能力を可変にして自動生成できるようにしたり、
敵モンスターのレベルを変動させて自動生成できるように頑張ったな

作っていく上で失敗したと思ったのが、キャラの属性がマスタ側で固定なせいで、
敵の色違いキャラ作るごとにマスタ1行作るハメになったり、主人公をキャラメイクさせたいときに、
キャラメイクパターン分の主人公マスタを作らないといけなくなって、スマートじゃなかったので諦めた

ただ、これはこれで設計としては正しかったんじゃないかな、とも思ってる。
というのも、バランス調整する時に、マスタを変更すればセーブデータ上の「生成装備」の能力も修正されたから。

今作ってるのは、↑でいうマスタの部分を「テンプレート」と称して、
 装備テンプレート(テンプレID, 連番, 名前, 基礎攻撃力) //アップデートで能力を修正したら新規行で連番を振る
 生成装備(生成装備No, テンプレID, 現在適用連番, 名前, 攻撃力)
生成装備側に値を複写(基礎攻撃力→攻撃力)して、その後は自由に変更できるようにする。
アップデート時は、連番が一番大きいテンプレートとの差分で修正できるようにするつもり
0692名前は開発中のものです。2014/11/19(水) 00:34:02.86ID:OX7d9Gn4
>>687-688
実は真っ先に考えたのはそれなんだけど、
アイテムや改造の数を増やせば増やすほどモコモコとアイテムの全体数が増えて、
管理を考えるとおしっこもっちゃいそうな量になって困った
自由度も低かったし

>>689-691
やっぱりそういう風にやるしかないか、再利用性も高そうだし

いろいろな意見をありがとう 参考になった
0693名前は開発中のものです。2014/11/19(水) 07:21:33.65ID:/n+zepvC
単純に Clone + シリアライズ ではいかんのか?
実態ではなくアイテムIDで保持しようとするから難しくなるんじゃ?
0694名前は開発中のものです。2014/11/19(水) 07:53:10.12ID:VDiSqvaf
>>693
要するに、データを丸々コピーするのじゃいかんのか?って事だろ?
俺は逆に最近レコード管理に切り替えた
っつーかソースコードを一カ所に纏める方が楽だし、メモリ消費も減るから、俺はこの方がいいと思ってる
って言うか、存在しない名前のアイテムが発生するバグに対応するのが面倒で
0695名前は開発中のものです。2014/11/19(水) 08:04:49.35ID:VDiSqvaf
あと、実体処理だとセーブデータに記録した後にデータを変更するのが面倒だと思う
0696名前は開発中のものです。2014/11/19(水) 16:05:10.60ID:MSY6gmXE
一旦データ管理という場面に踏み込むと、こうやって多くの手間や技術を要求される
これだからRPGは初心者にはおすすめできないんだが、何故初心者に限ってRPGを作りたがるんだ
0697名前は開発中のものです。2014/11/19(水) 19:21:08.31ID:HWXJ3kGs
RPG・・・データ管理・データ作成が面倒
SIM・・・バランス調整や、AIやナビゲーションマップ等が面倒
ADV・・・フラグ管理やテキスト作成が面倒
ACT・・・地面や壁との接触判定、マップを作るのが面倒
RCE・・・車を操作するAIが面倒、サーキットのウェイポイントの調整が大変
STG・・・当たり判定を飛ばすだけ、壁なんて要らん、AIも適当でいい、テキストもいらん、敵がいつ出てくるかだけ考えろ、伸ばしたい分野だけ拘れる登竜門的存在
0698名前は開発中のものです。2014/11/19(水) 20:59:46.83ID:OX7d9Gn4
ブロック崩し…パズル…
まあ、パズルはそれこそAIがな
将棋で超AI作ってプロ棋士と戦わせるだけでお祭りになるくらい
0699名前は開発中のものです。2014/11/19(水) 23:18:55.69ID:7ML/+Uac
テトリス!
0700名前は開発中のものです。2014/11/20(木) 00:30:04.14ID:vWl5cX6m
趣味プログラミングは鼻くそホジホジしたり屁をこいたりしながら
土日の内に作っちゃう人間なので、RPGとかデカブツは無理だなぁ
元々好きじゃないから作る気も起きないわけだが
0701名前は開発中のものです。2014/11/20(木) 04:07:38.08ID:h+JiqRdV
俺も学生の頃はそうだったな。
集中力自慢で4日間睡眠時間2時間で仕上げきる、それを自慢にしてた。

だが社会人になって悟った。
ある程度以上のものを作ろうと思ったら、それじゃ駄目なんだと。
プロマネとしてチームを率いることができなければ、いつまでも
徹夜自慢のバカのままで終わるんだと。
0702名前は開発中のものです。2014/11/20(木) 05:21:30.14ID:vSwwwYEe
そっか、すごいね
0703名前は開発中のものです。2014/11/20(木) 16:13:36.88ID:ASkU6c/s
やりたい事がすり替わっちゃったんだな、可哀相に
0704名前は開発中のものです。2014/11/20(木) 17:24:27.51ID:5jfsrVJn
人海戦術でしか作れない程度の能力の低いプログラマーには社会人が凄く見えるんだろうな
0705名前は開発中のものです。2014/11/20(木) 17:50:24.81ID:6dfcdxQ7
人海戦術が程度が低い制作形態かどうかは知らないが、
絵とか音楽とかにこだわりだしたら誰かの手も借りたくなる事はある
だが、素材探しをしているうちに結局完璧に自分の構想を実行できるのは自分だけだと悟る
俺が何人か欲しい
0706名前は開発中のものです。2014/11/20(木) 18:06:31.42ID:5jfsrVJn
10人プログラマーが集まれば作れるようなゲームを作りたいなら、
そもそもC/C++にこだわる必要もなくね?人海戦術に向いた言語なら色々とあるんだし
0707名前は開発中のものです。2014/11/20(木) 18:38:32.43ID:5jfsrVJn
>>705
まあ、少数精鋭で作られたゲームの方が良いゲームは多くね?
人数が増えれば増えるほど、どうしても軸はプレまくるからな
0708名前は開発中のものです。2014/11/20(木) 19:31:14.46ID:iI+OSFLH
少数精鋭もやり過ぎるとこうなる

Appleのソフトウェアの品質が次第に低下している理由は? - GIGAZINE
http://gigazine.net/news/20141016-apple-software-quality/

Appleは世界的な巨大企業ですが、同レベルの企業に比べるとはるかに小さなソフトウェアチームを意図的に構成しています。
これは「たくさんのB級プレイヤーを雇用するより、少しのA級プレイヤーを雇用する方が好ましい」というスティーブ・ジョブズの方針によるもの。
ジョブズが亡くなった後もこの方針は続いていますが、「最上級の人材」だけでチームを構成するため、人手が足りないチームへ別チームの人材がヘルプに入ることがあります。
最高の人材獲得に挑戦するのは間違ったことではないのですが、キーパーソンのエンジニアがiPhoneチームのヘルプに入っていたために、OS X Leopardのリリースが遅れた、という事態も起こっています。
0709名前は開発中のものです。2014/11/20(木) 19:36:39.53ID:36zbpl++
ゲームと一緒にされても
0710名前は開発中のものです。2014/11/20(木) 19:37:10.26ID:36zbpl++
IDがperl++
0711名前は開発中のものです。2014/11/20(木) 22:05:42.89ID:93aHVuNb
そもそも小規模開発なら汎用のゲームエンジン使えばいいしプログラマそんな要らないよな
人が必要になるのは基本的に素材作りだろうし
0712名前は開発中のものです。2014/11/20(木) 22:16:36.81ID:xrUP7PKr
そういえば、おソロだとテストがまずいことになりそう
なにしろ、自分はメタデータが頭の中に叩き込まれている少なくとも中級者だ
そこからバランス調整に入ったら初心者がうんざりするゲームになりそう
バグ取りも自分の発想だけだと限界があるし

ま、制作自体には直接関わりない事だけどね
0713名前は開発中のものです。2014/11/20(木) 23:09:21.65ID:94t7DNRt
マだけの人海戦術製作やってみたい気もする
でも標準ライブラリが貧弱なC++だと、まずstl, boost, pocoとか
どれを使うかで決裂しそうだな
0714名前は開発中のものです。2014/11/20(木) 23:47:01.70ID:XIRb6nJJ
なんか、ただの知ったかぽい
0715名前は開発中のものです。2014/11/21(金) 00:06:46.12ID:1pvURVep
boostってまだあったのか。
今だと何の用途につかってるの?
0716名前は開発中のものです。2014/11/21(金) 00:13:35.21ID:eEbWn5CX
標準ライブラリに入れる機能の実験場みたいなものだから標準ライブラリがある限り存在し続けるのでは
0717名前は開発中のものです。2014/11/21(金) 00:21:11.37ID:7CnZSeAT
>>715
人それぞれ

C++11対応してくれない環境での同等ライブラリとしてとか、

uBLAS
Geometry
Graph

など標準入りしてないけど有用なライブラリもあるし、
coroutineとかC++11以降にBoost入りしたのもある。

Boost.GeometryはMySQLに使われてたりするよ。
0718名前は開発中のものです。2014/11/21(金) 03:19:55.68ID:K9GeSQKw
C++が一番楽しい。
C++11最高だ。
0719名前は開発中のものです。2014/11/21(金) 07:08:46.35ID:qV4oLsfC
ゲームプログラマーの求人ってどこで探せば良いの?
0720名前は開発中のものです。2014/11/21(金) 07:19:13.80ID:pFBl4fEs
住んでる地域が東京圏か大阪圏内で無い限りほとんど無い
自分から売り込め、もしくは起業しろ、あるいは同人から始めろ
0721名前は開発中のものです。2014/11/21(金) 08:02:03.86ID:KX4IO8pf
ゲーム業界はやりたい人が多い割りに雇用創出効果が薄いから
競争率激しくて経営者もやりたいことやらせてもらえて感謝しろみたいな態度でくるから
激務薄給で使い捨てだよ
0722名前は開発中のものです。2014/11/21(金) 08:51:37.88ID:LfVWOyzt
おじいさんたち、板違いの話題は適切な板に誘導して差し上げて
http://wc2014.2ch.net/recruit/
http://kanae.2ch.net/job/
http://kanae.2ch.net/prog/

質問者共々、行ってらっしゃい
0723名前は開発中のものです。2014/11/22(土) 00:33:56.72ID:GjARED3K
>>713
>マだけの人海戦術製作
それ楽しそうだね。
テクスチャ、モデリング、効果音も含めて、すべてProcedualに生成するってやつでしょ。
音楽だけは無理か。
0724名前は開発中のものです。2014/11/22(土) 11:11:14.41ID:2kOY5/sq
個人でも最初はそんな感じだけどなー
0725名前は開発中のものです。2014/11/22(土) 11:27:35.29ID:UXfM8O3M
>>723
音楽でもMMLのライブラリがあればプログラミングするように作曲が可能
0726名前は開発中のものです。2014/11/22(土) 12:04:53.88ID:2kOY5/sq
MMLって聞いてマビノギかよと思ったらMusic Markup Languageだったんだな
Mabinogi Music Languageかと思ってた
0727名前は開発中のものです。2014/11/22(土) 12:51:58.39ID:z05T//p3
>>693-695
アイテムを実体処理するとセーブデータ改造が容易になるけどな
昔、ソーサリアンてゲームでアイテム魔法の空を飛ぶ魔法の消費MPを0にした事がある
0728名前は開発中のものです。2014/11/22(土) 15:25:07.79ID:2kOY5/sq
チート防止方法って
・リソースファイルを暗号化する
・リソースファイルが改竄されていないかハッシュ値を照合する
・メモリ上の値が書き換えられていないかチェックする
の3つでいい?他にするべきことってある?

スタンドアロンなゲームを想定してる
0729名前は開発中のものです。2014/11/22(土) 15:28:45.59ID:4gvnFUCF
深く考えずにユーザーには改造の自由を与える
0730名前は開発中のものです。2014/11/22(土) 15:50:11.91ID:2kOY5/sq
>>729
そのスタンスいいな
githubへのリンクでも添付するか
0731名前は開発中のものです。2014/11/22(土) 16:53:28.19ID:5ZWxKn8M
海外のゲームはそれが普通だね。
オンラインの場合は別だけど
0732名前は開発中のものです。2014/11/22(土) 17:01:09.64ID:GtITkLZ+
データを全てXMLやCSVで記述しておいて数値変え放題にする
0733名前は開発中のものです。2014/11/22(土) 17:02:59.01ID:ycIYhRSf
時代はオープンデータ
0734名前は開発中のものです。2014/11/22(土) 17:31:14.63ID:2kOY5/sq
それでもハッシュ値は欲しいな
実績「一度もデータを変更せずにクリア」とか
0735名前は開発中のものです。2014/11/22(土) 18:43:56.35ID:rQjhf0Yu
海外はMOD作り放題なゲームも多いな
0736名前は開発中のものです。2014/11/23(日) 01:04:58.19ID:4ZBc6dKC
チートを使わないでクリアすると実績だなんて、
なんでそんな当たり前のことを?と変な話にしか見えない俺
っつーか、ハッシュならまずあり得ないだろうが実績ごと改造されそうだよ
0737名前は開発中のものです。2014/11/23(日) 01:18:05.75ID:mI42wc3z
そこまでされるようなゲームを作れるのかが問題
0738名前は開発中のものです。2014/11/23(日) 01:22:28.60ID:SnMKy+pN
商業タイトルならともかく個人制作でチート対策なんてかんがえないよな
0739名前は開発中のものです。2014/11/23(日) 11:11:41.84ID:+dJYaAUV
でもセーブデータがテキストファイルにcsvで直書きとかだったらプレイする方も萎えるじゃん
0740名前は開発中のものです。2014/11/23(日) 12:27:51.29ID:EqABDKyO
個人制作はチートされてなんぼのレベルだからな。
チートされる規模まで広がるようになってから対策を考えても遅くない。

それ以前にチート対策なんて、
「桃尻にて落ちなんは、心憂かるべしと思ひけり」ってやつだ。
0741名前は開発中のものです。2014/11/23(日) 12:30:53.64ID:kaKHHfmS
一般ユーザーはバックアップ目的でのセーブデータの位置やファイル名は気にするが中身までは気にしない
チート目的ならバイナリかテキストの違いしかない
オンラインでランキングや対戦等他人との接点がある場合には対策したほうが良いけどオフラインは自由にしてやりたい
0742名前は開発中のものです。2014/11/23(日) 13:56:57.65ID:82D+n2IC
中身がテキストでも拡張子を*.savとかにしてあれば普通は開かないよね
まぁチート防止法なら>>728の3つで十分な気がする
メモリ上の数値チェックはしなくてもいいと思うけどww
0743名前は開発中のものです。2014/11/23(日) 14:02:44.82ID:+dJYaAUV
ていうか>>728以外に何かある?
リソース抜き出しとか通信盗聴は別にして
0744名前は開発中のものです。2014/11/23(日) 16:18:46.75ID:n5OStoXo
ブラウザやランチャーからの起動に限定...とか
0745名前は開発中のものです。2014/11/23(日) 16:49:33.89ID:cJk/+EVe
>>741
ほんとこれ。
この意見とまったく同意見だわ。
0746名前は開発中のものです。2014/11/23(日) 20:40:57.35ID:4ZBc6dKC
MODはともかく、コンテンツ食い荒らさせても開発者には全くメリットないし
そこまでして公開するくらいなら、むしろ公開せずに自分で楽しむよ

タダで公開している時点でメリットなんてないだって?
この俺が、金やちやほやされるためにゲームを作っていると思っているのかーッ!
(目を泳がせながら)
0747名前は開発中のものです。2014/11/24(月) 00:38:32.67ID:8cacGq0B
サーバーにセーブデータ保管
0748名前は開発中のものです。2014/11/24(月) 10:03:38.23ID:dzDmH2rP
データ改竄は許しまへんで
0749名前は開発中のものです。2014/11/24(月) 17:33:44.16ID:Z/FunYTK
>>740
クソゲー杉てタルいんで、さっさと改造してCGだけ回収してる
改造できない同人ゲーなんてやってられっかよ
0750名前は開発中のものです。2014/11/24(月) 17:55:20.84ID:2xrZiHXU
そだね
0751名前は開発中のものです。2014/11/24(月) 18:39:45.23ID:zdvI3CUV
そこまでしてcg回収なんかしたいとなると、修羅の国のゲームかな?
修羅の国のゲームは同人であるなしに関わらず基本的にクソゲー
クソゲーでない修羅の国のゲームは希少
0752名前は開発中のものです。2014/11/26(水) 17:10:13.93ID:uKd9Te04
中央のスプライトに隣接しているスプライトを、
中央のスプライトの大きさによって位置を変えられるようにするには、
どのような方法が考えられるでしょうか?
あらかじめ中央のスプライトにフラグを設定しておいて、
その数値によって周りの位置を制御するという方法は思いついたのですが、
どうもマジックナンバーだらけで気持ちが悪いし汎用性が低いのです
0753名前は開発中のものです。2014/11/26(水) 17:20:11.22ID:Y1/yNkyi
emun
0754名前は開発中のものです。2014/11/26(水) 19:59:12.17ID:AChn1R5P
enum
0755名前は開発中のものです。2014/11/26(水) 20:02:16.64ID:/W/8yg6H
nullpo
0756名前は開発中のものです。2014/11/26(水) 20:23:02.74ID:utK4NJ2p
ga!
0757名前は開発中のものです。2014/11/26(水) 20:49:02.86ID:gy/4zLs8
隣接の概念があるなら、それぞれのスプライトはパラメータとして「半径」を持っているのでは?
中央のスプライトだけ特別扱いする必要はないんじゃないの?
0758名前は開発中のものです。2014/11/29(土) 12:17:43.47ID:RkdSMohZ
http://brbranch.jp/blog/201312/cocos2d-x/cocos2dx_ccscale9sprite/
これかな?
0759名前は開発中のものです。2014/11/29(土) 12:18:18.60ID:RkdSMohZ
あやべ、cocos2dxのスレじゃなかった
0760名前は開発中のものです。2014/11/30(日) 12:30:11.20ID:2LtupVMk
std::vectorのfrontとsizeとbeginとendとdataの使い分けの見分け方を教えて下さい
0761名前は開発中のものです。2014/11/30(日) 15:32:55.05ID:wowBQ4xC
http://www.cppll.jp/cppreference/cppvector.html
https://sites.google.com/site/cpprefjp/reference/vector/data

sizeは要素数取得
beginとendはイテレータ始端と終端取得
frontは先頭要素の参照取得でv[0]と一緒
dataはvectorのデータをただの配列として使いたい時用で&(v[0])と一緒

イテレーターは全部の要素に処理する時とかに使う時が多いけどsizeの数だけ繰り返しとかでも出来るし
使い分けとか考えなくても好きに使ったらいいんじゃない
0762名前は開発中のものです。2014/11/30(日) 16:30:02.97ID:9UMHtIHE
イテレータいわゆる反復子を使うと
for_each(ary.begin(), ary.end(), func());
このような感じで書ける、ary がvector<int> であってもいいし、list<int>であってもいい、
最初にlist<int> で、あとでvector<int>に書き直してもfor_eachはそのままで使えるので書きなおす必要はない。
typedef list<int> IntArray;
このようにtypedefしておけば IntArrayを使ってあとでvectorに変えるのも
typedef vector<int> IntArry;
にすればいいだけになるので変更が楽になる。
ただ、ゲームのプログラムだと速度的に最初からvectorに決まってたりする。

dataはstringのc_str()のように、受け取る側が配列ポインタになってる時に使うものだと思う。
C言語のライブラリとかはそのようなのが多いしな。
0763名前は開発中のものです。2014/11/30(日) 18:07:42.80ID:2LtupVMk
>>761-762
ありがとう
0764名前は開発中のものです。2014/11/30(日) 18:49:40.41ID:09iyr5dN
最適化で変数が削られる憂き目に遭った・・・。

DirectXMathのXMMatrixPerspectiveFovLHの第2引数に与える、画面のアスペクト比なんだけど、
直前で

float fAspect = VP.Width / VP.Height;

ってな感じで書いてたら、Debugモードだと正常に動作するのに、
Releaseモードだとクラッシュする。

とりあえず、コメントアウトしながら原因箇所を追跡したら、上記のアスペクト比算出箇所に行き着いたわけ。
試しにvolatile修飾子を付けてみたら正常に動作することになったから、
最適化で削られたことが判明したんだけど、これ、どういうときに発生するか知ってる?

今までコンパイラ(VC++)に裏切られたことが一切なくて、信頼しきってただけに、ちょっとショック・・・。
今回は小規模なテストプログラムだから大した影響はなかったんだけど、
大規模で複雑なの組んでるときにこういうのが出ると話がややこしくなって厄介だ。
0765名前は開発中のものです。2014/11/30(日) 19:08:33.40ID:6mhBW/fH
再現手順も説明できずにコンパイラのバグとか言い出す奴の
99%以上は本人のミスだ
0766名前は開発中のものです。2014/11/30(日) 19:19:20.08ID:wowBQ4xC
VCのデバッグとリリースで最適化って変わんの?
デバッグビルドってデバッグコード埋め込むだけだと思ってたわ

http://msdn.microsoft.com/ja-jp/library/dykf6bx9.aspx
0767名前は開発中のものです。2014/11/30(日) 19:28:29.73ID:3sYJoklf
デフォルトではデバッグビルドのオプション設定は最適化無効になってるみたいね
0768名前は開発中のものです。2014/11/30(日) 19:28:51.51ID:6mhBW/fH
デバッグが困難になるからデフォルトでは最適化は無効になる
0769名前は開発中のものです。2014/11/30(日) 19:37:40.53ID:mq2znQaR
>>764
その変数が引数としてしか使われてないなら、変数を経由しないで
計算結果を直接スタックに乗せるようになってる、とかかなぁ。消えた原因は。

あんまり関係ない話だけど
つい最近(というか今日)、DirectXMathで躓いたのが
newで確保したXMVECTORの配列が16バイトアラインメントに乗って無くて
SSEのmovapsでアクセス違反が起きるって奴だった。
アクセス違反が報告されたメモリアドレスが「0xFFFFFFFF」ってなってて
どういうこっちゃとしばらく悩んだよ・・・。
07707642014/11/30(日) 19:54:39.02ID:09iyr5dN
>>769
ちょ・・・、今回クラッシュするところの逆アセンブリ結果が、同じくmovapsっす・・・。
floatの引数削られるのと、どう関係あるか分からないけど。
DirectXMathのSSE絡み、ちょっと怖いっすね。

>その変数が引数としてしか使われてないなら、変数を経由しないで
>計算結果を直接スタックに乗せるようになってる、とかかなぁ。消えた原因は。

そうそう、引数にしか使われてないから、ダイレクトにスタックに乗せるのは納得する。
けど、なぜクラッシュw
0771名前は開発中のものです。2014/11/30(日) 20:14:02.81ID:mq2znQaR
>>770
movapsはXMMレジスタへ128ビット分のデータを一括転送するSSE命令だけども
メモリ⇔レジスタの転送の場合、メモリ側が16バイト境界に沿っている必要があるのよ。
(movapsのaはalignedのa)
XMMatrixPerspectiveFovLHの戻り値を格納しようとしている変数(XMMATRIX)の
メモリアドレスが怪しい気がする。
XMMATRIXはXMVECTOR4個の塊だし
0772名前は開発中のものです。2014/11/30(日) 20:25:50.60ID:mq2znQaR
追記。
多分、リリースビルドでだけ発生する原因は、速度優先の最適化によって
movups命令(16バイト境界に沿っていなくてもOK、ただし低速)からmovaps(高速)に
使用する命令が置き換えられたからだと思う。

で、多分fAspectにvolatileを付けたら動くってのは
fAspectの分だけスタック使用量が増えるから、格納先変数のアドレスが
16バイト境界に合うようになって、それでエラー落ちしなくなるんじゃないかな・・・
でも「_m128 型の変数は、16 バイト境界に自動的にアラインされます。」ってMSDNには書いてあるから
違う原因かも。
07737642014/11/30(日) 21:00:10.04ID:09iyr5dN
>>771-772
サンクス。
fAspectが増えたことで16Byteアラインしたから通ったとしたら、たまたまで怖い気もw
いずれにせよ、たしかに_m128型使ってる以上、アラインされることは期待できそうだよね。
0774名前は開発中のものです。2014/11/30(日) 21:49:21.14ID:3sYJoklf
いつになく勉強になる流れだなw
0775名前は開発中のものです。2014/11/30(日) 22:42:52.60ID:wowBQ4xC
アライメントでクラッシュとかデバッグ大変そう
ヒープに確保すんのはやめた方がいいらしいけど
http://msdn.microsoft.com/ja-jp/library/ee418725%28v=vs.85%29.aspx
0776名前は開発中のものです。2014/12/03(水) 13:17:19.43ID:Z1yRDwuo
Unityにナビメッシュっていう機能あるけど、内部ではダイクストラ法使ってるの?
0777名前は開発中のものです。2014/12/03(水) 13:18:24.64ID:iziS6ZnM
3回に1回は使ってる
0778名前は開発中のものです。2014/12/03(水) 21:11:51.59ID:OgMzERcn
ファイルの読み書きのやり方って、

・C標準のfopen系
・C++標準のfstream系
・WinAPIのCreateFile、ReadFile、WriteFile

みたいに、たくさんあるけど、使い分けってどうしてる?
0779名前は開発中のものです。2014/12/03(水) 22:44:11.09ID:TXwtBb38
WinAPI系に近いライブラリを作る場合はCreateFile、ReadFile、WriteFile、
普段使いのC++で機種依存しないライブラリはstream系
C系のライブラリで開発汁ときはfopen系

いずれにせよメインプログラムから直接ファイル操作関数は使わなーい
0780名前は開発中のものです。2014/12/04(木) 01:02:24.18ID:YkojZjJM
Windows環境と仮定して。

C標準を使うとランタイムライブラリが必要になるので却下。
今どき使うのはオッサンとバカだけ。

C++も結局はWinAPIの薄いラッパに過ぎないので、
基本的にはWinAPIを呼ぶのが正解。
0781名前は開発中のものです。2014/12/04(木) 03:01:38.93ID:ClGYe+T3
CRT使わないなんて、よほど節制しないとつらくないか?
try-catchを使っただけでもCRTが要るだろ?

あと、Windowsなら、よく使うのはAPIの関係でIStream系が多いなぁ。
0782名前は開発中のものです。2014/12/04(木) 03:07:11.75ID:iZaOw4vq
C++だってランタイム必要なのに変わりないような
0783名前は開発中のものです。2014/12/04(木) 08:11:19.48ID:L+71L5pW
ランタイム必要な記述ってどういうのがある?
例外、IO、メモリ関係とかはランタイム必要そうだけど
その辺全部OSのAPIで済ますの?
0784名前は開発中のものです。2014/12/04(木) 08:35:11.34ID:y13HpW+M
>>780の常識は世界の非常識
0785名前は開発中のものです。2014/12/04(木) 09:42:58.76ID:ClGYe+T3
>>783
昔のATLコンポーネントで、実行ファイルを小さくするためにランタイム無しってのはたまに見かけた。
IOやメモリ関係は、Win APIで代替が利く。 例外は使わないか、SEHやRAIIで代用。
ただ、浮動小数やstd::*を使えないし、かなりの制限を受けるよ。
0786名前は開発中のものです。2014/12/04(木) 10:01:50.12ID:Eg8ibX6r
要件も確認しない実行ファイルサイズ至上バカが、生産性もクロスプラットフォームも捨ててWin32APIを直接使うって主張してるだけだな。
そっちの方がオッサンくさい。
0787名前は開発中のものです。2014/12/04(木) 19:29:15.66ID:tgdEpz3N
自分はRAIIなfstream系が好みだな。

WinAPIでも、
shared_ptr<void> pFile( CreateFile( ... ), CloseHandle );
でRAIIできるし、WinAPIならメモリマップドファイルが使えるから、Seekすることが多い用途で使う。

fopen系でも、上記要領でRAIIできるけど、
fopenだと、VC++でfopen_s使えって警告がウザいし、1行でスマートに書けないから嫌い。
でも、fprintf、fscanfは便利なんだよなぁ・・・。
0788名前は開発中のものです。2014/12/04(木) 21:52:37.38ID:BSnl4VWG
状況によって使い分けてるな。なので>>778に近い気がする

ファイル入出力に近いモジュールは一度組んだらほぼ手を加えないので
環境依存のAPIを使ってても、次に使う時は細かいこと忘れちまってるな

オッサンだな
0789名前は開発中のものです。2014/12/04(木) 21:53:54.27ID:BSnl4VWG
×>>778>>779
0790名前は開発中のものです。2014/12/06(土) 04:00:55.39ID:X/U/zDqc
まとめブログが世論誘導加速中 閲覧数と影響力が大きいのでまとめブログにもコメント宜しくお願いします。
http://jbbs.shitaraba.net/bbs/read.cgi/news/5097/1275245794/96 ←
0791名前は開発中のものです。2014/12/07(日) 13:13:24.02ID:mFsIvomy
クラスのメンバのvector変数にpush_backをしたのに、push_backしたメンバ関数が終了すると
他のメンバ関数でsizeが0になるんですが、vectorにそういう感じの仕様ってあるんですか?
http://codepad.org/QE4clISm

vector変数の中身を消す処理はしてません
0792名前は開発中のものです。2014/12/07(日) 13:40:07.34ID:9LyEQ/ju
http://melpon.org/wandbox/permlink/PGTC7VqZBylSFl9m
0793名前は開発中のものです。2014/12/07(日) 14:36:04.47ID:5KYRoGrU
デストラクタが走ってからsize()を呼んでるとかそんなオチだろうな
0794名前は開発中のものです。2014/12/07(日) 14:39:37.63ID:hyValMsU
どうでもいい質問で悪いけど、範囲for文とstd::for_eachってどっち使ってる?
0795名前は開発中のものです。2014/12/07(日) 15:34:57.43ID:EqvPSafZ
範囲for
0796名前は開発中のものです。2014/12/07(日) 16:06:32.38ID:6S6vavTT
範囲for
0797名前は開発中のものです。2014/12/07(日) 16:43:30.16ID:dMVqqTm9
範囲for
C#やVB使う場合はfor each使うけどね
C++では扱いづらい
0798名前は開発中のものです。2014/12/07(日) 16:52:24.55ID:dMVqqTm9
わざわざ関数名考えないといけないから面倒なんだよな
0799名前は開発中のものです。2014/12/07(日) 16:56:54.79ID:9LyEQ/ju
ラムダのことも忘れないであげてください
0800名前は開発中のものです。2014/12/07(日) 17:45:42.30ID:e6dpx8ym
範囲for!そういうのもあるのか
イテレーター使えればなんでもいけるのこれ
0801名前は開発中のものです。2014/12/07(日) 17:57:50.11ID:fL0IRO+A
範囲for、途中でインデクスが欲しくなって、
結局普通のforになることが多い。
0802名前は開発中のものです。2014/12/07(日) 18:19:55.91ID:6S6vavTT
>>801
あるあるw

でもそうでもない限りは記述が美しいから、できる限り使うようにしてるな。
0803名前は開発中のものです。2014/12/07(日) 20:32:17.28ID:heuc+ktl
ランダムアクセスイテレータならdistanceで取ればいいだけ
0804名前は開発中のものです。2014/12/07(日) 20:40:01.29ID:6S6vavTT
>>803
知らんかったw
すげーw
さんきゅー。
0805名前は開発中のものです。2014/12/07(日) 21:00:39.07ID:KCbAkKfJ
std::for_each で being() end() を書かずに済む方法ってあったっけ
範囲forのほうがむしろタイプ数が少ないような
0806名前は開発中のものです。2014/12/07(日) 21:44:37.07ID:0+t1yYxF
BOOST_FOREACHを使うのが一番良いのでは
0807名前は開発中のものです。2014/12/08(月) 00:26:35.24ID:Tkb5ImKO
boost使っていいんなら
boost::for_eachというのもある
0808名前は開発中のものです。2014/12/08(月) 01:42:50.74ID:/dWjo4ra
distanceはrandomの時はO(1)それ以外はO(n)か
考えてみれば当たり前だけどこれvector以外のコンテナで全ての要素でやったら計算量O(n2)になるな
こういうのちゃんと覚えておかないと使い所間違えそう
0809名前は開発中のものです。2014/12/10(水) 15:07:51.95ID:fIQTJgum
市販の3DアクションゲームってC++で作られてるの?
それともUnityとかアンリアルエンジンとか?
0810名前は開発中のものです。2014/12/10(水) 19:05:50.57ID:UFn2Nat6
ほとんどC++やJAVA等でプログラミングしてると思うが、
最近は一部エディタでもコンシューマ開発用キットを出してる
エディタ系はアクション系特化が多いので、
もしかしたらエディタ製もあるかもしれない
0811名前は開発中のものです。2014/12/10(水) 20:57:58.95ID:WqzdIXuz
それともUnityって何だよ
Unityだってコア部分はC++で作られているだろ
0812名前は開発中のものです。2014/12/10(水) 21:08:38.95ID:OgtEYajR
そういう意味じゃねえだろ
0813名前は開発中のものです。2014/12/10(水) 21:17:30.67ID:Z1DuKoHt
エディタは内部で独自に言語を作っているところも多いし ほとんど使わないのもある
そもそもプログラミング言語使わずにゲームが作れるのが一番の売りだし
0814名前は開発中のものです。2014/12/10(水) 21:19:34.07ID:WqzdIXuz
Unityじゃない所は
そう言うミドルウェアにライセンス料払いたくないか
全部自分でコントロールしたいから非オープンソースが嫌な人達だろう
0815名前は開発中のものです。2014/12/10(水) 21:21:37.53ID:TxBmxmRH
>>809は言語とゲームエンジンの区別がついてないのだろうな、とは俺も思う
0816名前は開発中のものです。2014/12/10(水) 21:26:51.59ID:PG4tDcoQ
フルスクラッチか否かって話じゃね
0817名前は開発中のものです。2014/12/10(水) 21:27:36.02ID:Z1DuKoHt
言語使って自分で組んでるのかエディタ使って作ってるのか聞きたかったんだろ?
で、商業でやってるところはだいたい自分で書いてるとすでに答えられてる
0818名前は開発中のものです。2014/12/10(水) 21:34:16.87ID:FC5BkzvK
バイナリデータとかバージョン管理が出来ないから嫌すぐるw
0819名前は開発中のものです。2014/12/10(水) 21:35:32.23ID:X2qHCJlA
難しかったり面倒な部分をエンジンやライブラリに押し込むのは良くあること。
それを簡単なC++から使うか、適当なスクリプト言語から使うかの差しかない。
0820名前は開発中のものです。2014/12/10(水) 21:48:54.83ID:Z1DuKoHt
バイナリデータなんか直接扱うことはほぼないぞ…
それをしないためのプログラミング言語なんだし
バージョン管理は商業で作るところならまず間違いなく専用のソフトを入れているし、
個人でやるなら中〜大規模な作品でもなければ多分なくても管理できる
何人か集まって作るならその時導入を検討すればいい
0821名前は開発中のものです。2014/12/10(水) 22:03:07.95ID:FC5BkzvK
エディタってのが専用のバイナリを直接変更するものだと思って書いた

バージョン管理って個人的なのでも結構使うなあ・・・
ソースに変なコメントとか残したくないんだよねw
0822名前は開発中のものです。2014/12/10(水) 22:21:09.59ID:6ysuSswG
男なら全部C++
0823名前は開発中のものです。2014/12/10(水) 22:22:55.40ID:WqzdIXuz
Unityはバージョン管理システムが組み込まれてるし
svn等の外部のバージョン管理システムも使いたければ使える
0824名前は開発中のものです。2014/12/10(水) 23:18:34.81ID:SWjWjl7/
コードにコメントでいつ追記とか書くの鬱陶しいよな
場合によっては編集前のコードをコメントで残すとかいうルールしいてることもある
もうアホかと
0825名前は開発中のものです。2014/12/10(水) 23:36:58.77ID:FC5BkzvK
うん
Gitだとサーバーとか立てなくても気軽にローカルでリポジトリ
作れたりとかできちゃうから楽だわ
作業内容はソースにコメントで残すんじゃなくコミットログに
押し込めるし時系列で追えるしね
0826名前は開発中のものです。2014/12/11(木) 00:13:34.16ID:RhkXQVIG
UnrealEngine4はC++でプログラミングするんだぞ
0827名前は開発中のものです。2014/12/11(木) 00:16:26.40ID:6Drf6QBa
bitbucketにリモートリポジトリ取っておけば優秀なバックアップに。
ちょっと思い付いたらブランチ切って気が済むまで弄り倒して
上手く行ったらそのままマージ、
ダメだったら元のブランチをチェックアウトすれば元通り。
今はGUI付きのクライアントもあるし有り難い時代だ
0828名前は開発中のものです。2014/12/11(木) 02:04:41.77ID:vflPKXfm
ゲーム会社の求人見てたら普通に
Unityやcocos2dの経験者歓迎とか書いてあるぞ
商用で普通に使われてるんだと思うんだが
0829名前は開発中のものです。2014/12/11(木) 08:52:12.08ID:6p4P8aMh
大手ならC/C++で独自ツール作るけど
弱小は既存ツール使うしか選択肢がない
0830名前は開発中のものです。2014/12/11(木) 09:22:11.45ID:HPqpSaB4
1つでも使いこなせれば応用が利くから教育の手間が省けるってことじゃないの?
0831名前は開発中のものです。2014/12/11(木) 13:18:32.61ID:2JpT6opC
>>817はどこの世界の話か知らないが
Unity使った商業作品なんて山ほどあるだろ

>>829
いやだからどこの世界の話だよ。
0832名前は開発中のものです。2014/12/11(木) 19:04:56.48ID:aRGwjS4y
「大手は既存ツールやエンジンを使わない」とは言ってないと思うぞ
0833名前は開発中のものです。2014/12/11(木) 19:10:00.11ID:b4/DV/vl
結局潰しがきかないのよね、開発エンジンって
それでも大抵の人は困ることはないだろうけど
0834名前は開発中のものです。2014/12/11(木) 21:50:30.14ID:jqIw6zJe
日本で汎用のゲームエンジンってソシャゲくらいしか思いつかんな
海外だとアンリアルエンジンで作った大型タイトルあるぽいんだが

http://ja.m.wikipedia.org/wiki/Unreal_Engineを採用したゲームソフト一覧
0835名前は開発中のものです。2014/12/11(木) 22:59:37.83ID:aRGwjS4y
汎用ってゲームジャンルに対しての汎用じゃなくて、
いろんなユーザ(団体)が利用できるという意味での汎用?

エロゲやアマチュアまで含めれば、テキストゲーム系エンジンやツクール等も結構多そうだが。
0836名前は開発中のものです。2014/12/11(木) 23:14:39.27ID:jqIw6zJe
ライセンス販売してるようなゲームエンジン
UnityとUE位しか知らんけど
2Dもこういうエンジンってなんかあるんかな
0837名前は開発中のものです。2014/12/11(木) 23:22:19.61ID:FC/EOQl8
>>836
・・・

cocos2d-x
http://peace.2ch.net/test/read.cgi/gamedev/1390136237/
0838名前は開発中のものです。2014/12/11(木) 23:43:01.37ID:jqIw6zJe
cocosはエンジンじゃなくてフレームワークだし
ソシャゲではよく使われてるみたいだけど
0839名前は開発中のものです。2014/12/12(金) 00:23:08.10ID:QnblLndC
開発エンジン単体では潰しがきかなくても
いろんな開発エンジンを次々使いこなせるだけの柔軟さと適応力は充分潰しが利くと言えると思う。
0840名前は開発中のものです。2014/12/12(金) 02:25:38.84ID:bDxMroSG
それだけの適応力があるならそれ使って言語習得した方が早そうだ
独自仕様のゲーム作るなら特に
0841名前は開発中のものです。2014/12/12(金) 07:21:28.86ID:o+Ocs+h7
エンジン使うのと作るのとじゃ大違いでしょ
エンジン使いこなせるって言ってもエディタ使って効率的に作れるだけでプログラマとしてはスクリプタレベルよ
0842名前は開発中のものです。2014/12/12(金) 12:34:20.78ID:wXPiKRYS
潰しが効くって何について言ってるんだ?

何でも自前で作るのが良いとは限らないだろ
0843名前は開発中のものです。2014/12/12(金) 13:11:01.77ID:so0Qz3P5
そもそもゲームエンジン使ったからといって中のコードに触れない訳じゃないし。
何でもかんでも自分で書いて糞のようなコード量産するより、広く使われているゲームエンジンの良い設計のコードに触れる方が為になる。
0844名前は開発中のものです。2014/12/12(金) 13:27:08.97ID:evwzVpBf
まぁ、デキは別にして、自分でスクラッチで書いたところが多いほど達成感も大きいw
0845名前は開発中のものです。2014/12/12(金) 16:01:25.41ID:v/KVbnR1
Unityって物理演算とかナビメッシュとかあるけど、あれってC++でも出来るの?
0846名前は開発中のものです。2014/12/12(金) 17:38:37.97ID:cemAAiyO
>>845
できますん
0847名前は開発中のものです。2014/12/12(金) 18:39:21.32ID:ntY+D6GU
他人のコードに任せっぱだと、複雑なデータ構造とか作れなくね?
0848名前は開発中のものです。2014/12/12(金) 19:46:05.18ID:KvfRzLEl
俺は作る必要ないんで
0849名前は開発中のものです。2014/12/12(金) 20:17:56.66ID:6Y7Yxnc1
凡百の人間で終わりたくないな、俺は
0850名前は開発中のものです。2014/12/12(金) 20:19:28.11ID:evwzVpBf
俺も。
0851名前は開発中のものです。2014/12/12(金) 20:48:58.45ID:s0rRP3Zy
他人に読めるコードは書いてねw
0852名前は開発中のものです。2014/12/12(金) 21:30:09.86ID:EW3P8d8T
可読性が低すぎて自分にすら読めないコードには、
そこらのサイトに書いてある簡単なテンプレコードほどの価値もないからな…
0853名前は開発中のものです。2014/12/12(金) 21:41:45.52ID:KfzBrrjx
まあ他人に読ませる必要がなければ好きにすればいいでしょ
自分で読めないのは論外だけど
0854名前は開発中のものです。2014/12/12(金) 22:33:35.88ID:evwzVpBf
一ヶ月後の自分は他人と同じ
0855名前は開発中のものです。2014/12/12(金) 23:05:56.51ID:KfzBrrjx
ならその一ヶ月後の自分用に読めるコーディングにするべきだな
いずれにしても自分で読む気も起きないようなコードはただのゴミ
0856名前は開発中のものです。2014/12/12(金) 23:44:33.51ID:b4Xh27MQ
良い設計のライブラリに触れる事は自分がライブラリ書くときの糧になるだろ?それと同じ事だよ。

そのライブラリを深く理解する事がないとか、ライブラリになるようなものを書くことがないというのであれば、それだけの資質だったということ
0857名前は開発中のものです。2014/12/12(金) 23:59:52.22ID:EW3P8d8T
C++使ってる人でライブラリを使わない人なんてこの世にいるのか?
よほど天才的なプログラミングの素質でもなければソフト作りのはるか手前で地面に転がるぞ

っつーか、ライブラリ製作自体がソフト製作に近いし
0858名前は開発中のものです。2014/12/13(土) 06:34:13.77ID:/sKItXqV
フルスクラッチ派と流用派の言い争いか
まあ、適材適所じゃね?

今更ゲーム製作でデータ圧縮や暗号化、組み込みスクリプトのコードを書く奴は滅多にいないだろ
書いたけどな、俺は、スクリプトを

けど、ゲーム製作での一番のキモは独創性だろ
そんな所は自分で書くしか方法が無いんだよ!

独創性の無い、ありふれたゲームを作りたいなら、好きに流用すればいいさ
0859名前は開発中のものです。2014/12/13(土) 10:06:03.65ID:KmIl68fQ
読めるコードを書く能力より、
どんなコードでも読める能力の方がいい。
0860名前は開発中のものです。2014/12/13(土) 10:33:09.68ID:GVgS9kEW
>>859
読めるコード書けないとチーム開発で役に立たないじゃん
リバースエンジニアリング専門でやんの
0861名前は開発中のものです。2014/12/13(土) 11:10:08.60ID:vJXa5IWH
このスレ、プログラマーが複数人開発の環境の人、居るの??
0862名前は開発中のものです。2014/12/13(土) 11:19:10.70ID:KmIl68fQ
読める具合が数値化できればいいのだけど。
何書いても読めない人はいるわけで。
0863名前は開発中のものです。2014/12/13(土) 11:28:25.00ID:A651+XDE
>>858
すげーな。
実力派だな。

やっぱ自分で書くのが一番気持ちいいな。
基本的には一人で全部組んでるな。
生産性は別にしてw
0864名前は開発中のものです。2014/12/13(土) 11:46:26.04ID:OLxz298b
ダーティーなコードを読む能力ついでにクリーンコードに書き直す能力もあった方がいいな

まあlint通してからやれば比較的楽だが
0865名前は開発中のものです。2014/12/13(土) 12:02:01.67ID:cTfiogfq
enum(エナム)
struct(ストラクト)
const(コンスト)
yield(イヨールド)
extern(エクスターン)
explicit(エクスプリクト)
sizeof(サイズオフ)
0866名無しさん@そうだ選挙に行こう2014/12/13(土) 12:42:15.70ID:GVgS9kEW
enumえにゅうむ
yieldいーるど
exturnいくすたーん
explicitいくすぷりしっと
sizeofさいずおぶ
0867名無しさん@そうだ選挙に行こう2014/12/13(土) 12:46:53.80ID:YQCx+6st
×exturn
○extern
0868名無しさん@そうだ選挙に行こう2014/12/13(土) 12:47:23.37ID:GVgS9kEW
oh misstake
0869名無しさん@そうだ選挙に行こう2014/12/13(土) 12:47:27.98ID:vmsxYpAR
いや読むってのは音読することじゃないから
0870名無しさん@そうだ選挙に行こう2014/12/13(土) 13:34:00.06ID:cTfiogfq
「ある画像が透明になりきったら、画面を別の画面に遷移する」という処理をしたいんですけど
その「ある画像」の不透明度に依存して画面遷移を操作してもいいんでしょうか?

・その画像の不透明度は他で操作されない
・SetOpacityの内部で0以下255以上の数値はそれぞれ最小値最大値に正規化される
という環境であるものの、減少し続ける値を等価演算子で比較したりするのは、ゲームを作り慣れてる人から見るとどうなのかなと

それに、画面に複数ある内の1つのパーツでしかない画像に画面が依存するのはオブジェクト指向?的にはどうなんでしょうか?

Scene::update(){
if(image->GetOpacity() == 0){
//遷移する
}else{
image->SetOpacity(image->GetOpacity()-15);
}
}
0871名無しさん@そうだ選挙に行こう2014/12/13(土) 13:39:12.16ID:A651+XDE
>>870
透明度を直接評価するんじゃなくて、
もう少し抽象的に、遷移準備完了状態、みたいなものを評価したら汎用的じゃない?
0872名無しさん@そうだ選挙に行こう2014/12/13(土) 13:54:47.72ID:cTfiogfq
>>871
こんな?感じでしょうか
違和感すっきりしたんでこれでやってみます、ありがとう

Scene::update(){
 if(image->GetOpacity() == 0){
  transitionFlag = true;
 }else{
  image->SetOpacity(image->GetOpacity()-15);
 }
 if(transitionFlag){
  //遷移
 }
}
0873名無しさん@そうだ選挙に行こう2014/12/13(土) 15:13:37.37ID:ZiMlwiS0
スレ流し読みしてたらフルスクラッチ云々のせいで乾燥肌が痒くなってきた

フルスクラッチ派:「あぁ^〜痒いところに手が届くんじゃぁ^〜」(バリバリ
0874名無しさん@そうだ選挙に行こう2014/12/13(土) 18:29:40.45ID:OLxz298b
まー確かに自分の都合でどんどん改変できるしなあ
0875名無しさん@そうだ選挙に行こう2014/12/13(土) 20:39:35.80ID:8y/GDHu5
何度も言うが、初心者は大抵の場合自作ライブラリが完成する前に力尽きるからな
ある程度ガリガリ書けるようになるまで絶対に真似するんじゃないぞ!
0876名無しさん@そうだ選挙に行こう2014/12/13(土) 20:59:49.32ID:xmg5RhiV
ライブラリ作るほうが楽しい
0877名無しさん@そうだ選挙に行こう2014/12/13(土) 21:24:26.17ID:ht1CXKxj
車輪の再発明はしないとか言ってるけど、ライブラリ作らないやつの技術力は総じて低いしな
0878名無しさん@そうだ選挙に行こう2014/12/13(土) 22:34:29.96ID:ZiMlwiS0
おじさんはいつも即売会で一旦真っ白な灰になって意欲が回復したら
しょぼしょぼとリファクタリングだなぁ…そのサイクルを繰り返す内に
ライブラリやら何やらが自然と充実していったよ

凡人だから知見の獲得は経験の積み重ねによるところが大なんだよねぇ
0879名無しさん@そうだ選挙に行こう2014/12/13(土) 22:37:32.08ID:8y/GDHu5
しかしむやみに作るとscanfの二の舞に
あのくらいの代物詰め込んだライブラリを作るなら他人の作った物使って下さい、頼むから

元々多くの人に使われる予定がなかったからなのか、
超がつくくらい初期の関数のせいなのか、あの関数欠陥が多すぎ
一体何に使う予定だったんだろうか?
0880名無しさん@そうだ選挙に行こう2014/12/13(土) 23:06:20.95ID:A651+XDE
>>878
ゲーム売ってるんだ。
すごい。
自分の作ったゲームをプレイしてもらうのって、やっぱ即売会がいいの?
ネットでそういう場とかないのかな?
最近だと、ニコニコの自作ゲームコンテストみたいなのかな?
0881名無しさん@そうだ選挙に行こう2014/12/13(土) 23:31:59.05ID:MCAEResE
>>880
DLSiteとかDMMとか、いくらでもあるが?まあエロや萌えに偏ってるきらいはあるが
0882名無しさん@そうだ選挙に行こう2014/12/14(日) 02:35:05.98ID:9YbZbvSi
scanf詳しく
0883名無しさん@そうだ選挙に行こう2014/12/14(日) 09:49:32.25ID:BC24ajZK
呼び出すだけでコマンドラインでインタラクティブ いやっほぅ! の優れものだぜ
元々プロ中のプロしか使わない前提だけどな

前提をひっくり返すなら中級者以下がCを使うこと自体がおかしい
0884名無しさん@そうだ選挙に行こう2014/12/14(日) 11:18:28.43ID:V/uzlPBv
scanfは超初学の頃に学んだとき以外触った記憶がないな
コマンドラインでインタラクティブなんてシェルで十分だし
0885名無しさん@そうだ選挙に行こう2014/12/14(日) 15:09:32.61ID:L+QkNmy7
>>880
おじさんは古型なので流行りの頒布方法とかよくわからないけど
言いたかった事は、凡人なら頒布(他者に晒すor他者の評価を聞く
過程)を伴う経験のサイクルは大切だということ。PDCA、反復型

身近な友人同士でも即売会でも何でもいいと思うよ
0886名前は開発中のものです。2014/12/17(水) 07:39:05.49ID:AgN/4Z5H
UnityってNetworkクラスとかNetworkViewクラスとかあるけど、あれ使うとMMOとか作れるの?
0887名前は開発中のものです。2014/12/17(水) 09:32:33.84ID:4MvBwvFG
Muchi Muchi Oppaiか、もちろんだ
0888名前は開発中のものです。2014/12/17(水) 10:25:45.45ID:/fBBXLJf
スレチ
0889名前は開発中のものです。2014/12/17(水) 12:10:44.24ID:H3GRnYo+
社員乙
0890名前は開発中のものです。2014/12/20(土) 19:07:18.57ID:Chph+5fV
スタックを使うメリットとヒープを使うメリットって何?
0891名前は開発中のものです。2014/12/20(土) 20:02:00.84ID:keBzJKTR
この処理ではこっちを使う、この処理ではあっちを使う…って、
ほぼ自動的に決まるから、あんまりメリット/デメリットを意識することって無いと思う。
0892名前は開発中のものです。2014/12/20(土) 21:32:50.60ID:hNo8GLbS
開放忘れを気にしなくていいかどうかくらいじゃないの?
ただスタックはあくまで一時的なものって意味合いが強くて、
容量制限があるからあんまりでっかいものをガンガン作れないってのと、
あとCPUキャッシュ的に有利ってのがあるけど、
まあ>>891の言うように実際使うときははあんまりメリット・デメリットを意識することも無いと思う
0893名前は開発中のものです。2014/12/21(日) 03:38:59.26ID:tJq5gWK6
スタック
 ・レジスタの値を書き換えるだけでメモリ確保されたことになるので比較的速い
 ・変数のスコープが抜けた時に自動的に解放される
ヒープ
 ・スタックには確保できない大きな領域を使える
 ・確保するサイズを実行時に動的に決定できる(スタックでもできなくはないけど)
 ・スコープを跨いだ寿命の長いメモリ領域として使用できる

あとなんかあるかな
0894名前は開発中のものです。2014/12/21(日) 11:16:24.87ID:UoMqn2et
スタックとヒープってなんだ?
調べてみたら自動変数がスタックでnew演算子を使うのがヒープって書いてあるけどあってるの?
0895名前は開発中のものです。2014/12/21(日) 11:18:03.73ID:cF9cgol+
QtのクラスはRAIIの考え方に基づいていて
メモリ解放が殆ど自動化されているから
ヒープ確保でも単純ミスでメモリリークすると言う事が少ない
0896名前は開発中のものです。2014/12/21(日) 11:43:00.73ID:UoMqn2et
Javaみたいに後でまとめてメモリ開放するでもなく、
参照が0になったらその場で開放してくれる言語ってないの?
スマポ利用するとかじゃなくて言語レベルで。VM無いと無理なのか?
0897名前は開発中のものです。2014/12/21(日) 12:12:25.01ID:ImGMMbuW
C#
0898名前は開発中のものです。2014/12/21(日) 12:18:34.78ID:cF9cgol+
なぜそこまでGCを嫌う?
最近のVMのGCはかなりうまくやってくれていると思うけど

>>897
(゚Д゚)ハァ?.NETはGCするだろ
0899名前は開発中のものです。2014/12/21(日) 12:20:14.63ID:xV1M/iBe
>>896
swift
ARC有効にしたObjective-C

参照カウントだけだと弱参照するところをどうやっても意識する事になるから流行らないんだろうよ。中途半端だから。
0900名前は開発中のものです。2014/12/21(日) 12:57:51.36ID:IwHuX+Tw
>>899
swiftは今っぽい構文なだけで、その辺りは15年前レベルだよな。

参照カウント + 循環参照用のGCはスクリプト言語ならあるな。 PythonとかSquirrelとか。
クロージャをサポートすると、循環を避けるのは難しい。
0901名前は開発中のものです。2014/12/21(日) 14:04:19.84ID:tJq5gWK6
http://seesaawiki.jp/w/author_nari/d/GC
以前どっかで教えてもらったGCの各アルゴリズム(とそれを実装してる主な言語)をまとめてるサイト
結構勉強になった

見ていて、C++上で既存のデータ構造との親和性を保ちながら実装するのは無理そうだなーとも感じた
0902名前は開発中のものです。2014/12/21(日) 14:05:13.03ID:tJq5gWK6
あ、ちょっと訂正
× 実装するのは無理そうだなーとも感じた
○ 実装するのは俺には無理そうだなーとも感じた
0903名前は開発中のものです。2014/12/21(日) 17:21:30.42ID:3dyKCo+m
ガベコレって使いづらい印象付きすぎちゃったもん
0904名前は開発中のものです。2014/12/23(火) 01:05:19.57ID:UuPEmr1n
バカにはそういう印象付いちゃったよね^^;
しかもバカって一度持った印象を絶対に改めないから…
0905名前は開発中のものです。2014/12/23(火) 20:19:18.60ID:y5yR41zs
デストラクタで十分
0906名前は開発中のものです。2014/12/23(火) 22:15:26.87ID:I+Smn/JJ
デストラクタ(ファイナライザ)はリソースを解放するもので
いつデストラクタを呼ぶかを自動化するのがGCなんだよなぁ
0907名前は開発中のものです。2014/12/23(火) 22:25:27.90ID:IjLiTo3j
shared_ptrが標準化され、RAIIが一般的になった昨今、
ガベコレの意義が分からない。
0908名前は開発中のものです。2014/12/23(火) 23:15:42.17ID:PQqq+vmb
スレッド使ってたら生のデストラクタは使えないし、
sharedは循環参照に気を使わないといけないのがなぁ
0909名前は開発中のものです。2014/12/24(水) 04:46:42.87ID:INaba3Bc
生のデストラクタってなんぞ…
0910名前は開発中のものです。2014/12/24(水) 09:59:07.80ID:+KNBOnw3
おそらく「スタック上には確保できない」って言いたいんだろう。
スコープを抜けた後も別のスレッドで使われるから。
0911名前は開発中のものです。2014/12/24(水) 19:08:44.28ID:JqKQyI9r
GC「後で掃除しときますんで」
ぼく「これもやっといて」
GC「あ、すいません、今掃除してるんで」
ぼく「今すぐ処理してほしいんだけど」
GC「あと20分ぐらい待ってください」
ぼく「は?処理できない・・・」

こんな印象
0912名前は開発中のものです。2014/12/24(水) 23:09:56.90ID:mC2vVuxE
世代別GCなめんな
0913名前は開発中のものです。2014/12/25(木) 00:07:59.44ID:GYUw7kdq
>>910
RAIIと関係なくね?流れ的にRAIIでは対応出来ないケースを挙げたように読めるんだけど。
0914名前は開発中のものです。2014/12/25(木) 00:11:13.27ID:MJlq1Aj4
「生のデストラクタ」なんて謎の用語を使うようなやつが、「流れ」を読めていると思うのか?
09159082014/12/25(木) 00:51:14.98ID:0+lNtng/
>>910
ちょっと違う
スコープを抜けたときに普通にデストラクタが呼ばれるものを「生」と、
スマートポインタ等で使う工夫したデストラクタと区別するために言ってみた

>>914
生のポインタとスマポがわかるなら適当に空気嫁や
0916名前は開発中のものです。2014/12/25(木) 01:24:40.70ID:C10OwjTO
いや、本人以外理解できてないって事は、言葉選びを間違ってるって事なんだから、読み手に責任転嫁すんなって。
0917名前は開発中のものです。2014/12/25(木) 01:26:24.11ID:0+lNtng/
正直スマンかった
0918名前は開発中のものです。2014/12/25(木) 02:39:55.48ID:+bLp0IG7
結局ちょっと手を加えるだけで簡単にメモリ解放ができるデストラクタ便利
0919名前は開発中のものです。2014/12/25(木) 06:37:13.40ID:GYUw7kdq
>>915
その説明でも意味わかんねえんだけど?
スマートポインタ等で使う工夫したデストラクタ?
スマートポインタのデストラクタの事?
それとスレッドがどう関係してくるんだ?
0920名前は開発中のものです。2014/12/25(木) 07:27:27.19ID:lfp6OMz3
>>911
GCって掃除して!って言えば掃除してくれるよ?
問題は、掃除してくれと言える人が少ない事とか、
捨てるべきでないものまで捨てちゃう事かと

ヒープ上の参照は無視して掃除するんだよなぁ……
0921名前は開発中のものです。2014/12/25(木) 08:08:39.90ID:MJlq1Aj4
>>920
質の悪いGCを使っているか、単に使い方をミスってるだろ
0922名前は開発中のものです。2014/12/25(木) 08:15:02.30ID:MJlq1Aj4
>>915
ちょっと違う じゃねーよ
確保する場所がスタック上かヒープ上かの違いだけじゃねーか
0923名前は開発中のものです。2014/12/25(木) 08:54:43.93ID:wubB5pdO
>>921
GCって最初は親切だけど、結局面倒臭いものなんだね
メモリ管理をする手間は変わらないじゃん
0924名前は開発中のものです。2014/12/25(木) 10:29:27.96ID:Y3U3uktg
GCで最も困るのはメモリ解放時のStop the Worldだが
v8は少ないと思う
0925名前は開発中のものです。2014/12/25(木) 12:54:07.39ID:MhE4palG
どっちがいいなんてアプリケーションによるんじゃね?
0926名前は開発中のものです。2014/12/25(木) 14:31:05.41ID:+bLp0IG7
速度重視のゲーム開発でGCなんて重い物動かす余裕はないね
結構色々なゲームで使うA*だけでもそれなりに食うってのに
0927名前は開発中のものです。2014/12/25(木) 15:29:01.01ID:ZzsGRtB9
使うタイミングと量を間違えなければ、特に問題にならない気がするけどなあ
0928名前は開発中のものです。2014/12/25(木) 16:21:19.48ID:qeWu8Kkf
メディエイターパターンでshared_ptr使った場合ってメモリリークするの?
0929名前は開発中のものです。2014/12/25(木) 21:11:54.62ID:ICmaagKn
>>928
ん、学校の宿題?違うなら以下の逆質問に答えてみてくれないか?

@ shared_ptrの典型的実装は何
A @でメモリリークする場合の典型的原因は何
B mediatorの目的は何
C BはAを誘発する方向に作用するか

mediator使ってAを招いてメモリリークさせる男の人ってどう思う?
0930名前は開発中のものです。2014/12/25(木) 21:30:48.42ID:0+lNtng/
>>922
違うわ
普通はやらんがスタック上でも別にスレッドで使えるわ
確保する場所の話をしてるんじゃねぇ
デストラクタを呼んだ時の振舞の違いを言っとるんだ
0931名前は開発中のものです。2014/12/25(木) 21:47:40.02ID:MJlq1Aj4
>>930
「デストラクタが呼ばれ方」の話だったはずが、いつの間にか「呼んだ時の振舞」に摩り替わっている。
具体例まで挙げないと、君の話は他人には理解できないぞ。
0932名前は開発中のものです。2014/12/25(木) 22:18:25.00ID:rdtwM2Em
そして呼んだ時の振る舞いって話だったとしてもイミフメー
そもそも配置newしないかぎり自分でデストラクタを呼ばないし。どんどん謎な方向へ。
0933名前は開発中のものです。2014/12/25(木) 22:24:10.39ID:0+lNtng/
生のデストラクタを呼ぶってのは俺の中じゃ、単にdelete xのこと
スレッド使ってたら↑みたいなのは管理が面倒なので使えないっしょ。それだけの話

で、参照カウンタを使ってデストラクタ呼ぶか、マーク&スイープみたいな仕組みでデストラクタを呼ぶか
その振る舞いが違うけど、俺は循環参照に気を使って設計しないといけないのは、やだなぁと言っただけ

そもそも深い話でも続けるような内容でも何でもないだが
0934名前は開発中のものです。2014/12/25(木) 22:27:00.95ID:0+lNtng/
ちなみに>>908>>905宛て
0935名前は開発中のものです。2014/12/26(金) 11:43:36.55ID:IXxiiBMK
よくわかんないけど「手動でデストラクタを呼ぶ」じゃダメだったん?
0936名前は開発中のものです。2014/12/26(金) 16:51:22.54ID:xlNeQ6wG
自動化の権化プログラムを扱う人にとって自動化はロマン
特に多くの人がつまづく面倒くさい処理を自動でやってくれるって素敵やん?
解放処理を描かずに済む分コードも減るし、初心者やうっかりさんにやさしいし
世の中にはそういうできる限り完全自動にこだわる人もいるのです

細かい個別の事案にまで高速に対処できる高い能力を持ったオートデストラクタなんて、
それこそマイクロソフト並の巨大企業が本腰入れてデータ集めないと完成まで何年かかるか分からないレベル
消すには消せるが処理速度に影響を与えて邪魔で使えなかったりすればゴミだし
0937名前は開発中のものです。2014/12/26(金) 18:51:58.22ID:9MuNlFH5
演算能力が頭打ちになりそうな昨今、プログラマが殴られるのが規定路線。
自分で何とかしろ、ってこと。
RAIIで十分じゃない。
0938名前は開発中のものです。2014/12/28(日) 12:00:32.40ID:DVHfXhJL
クラスのポインタ変数をdeleteした後、
そのポインタ変数にNULLを入れて他の処理でNULLチェックをしてぬるぽ回避してるんですが、
逆に言えばdeleteした後NULLを入れてないとぬるぽ回避できないということで、
一般的に職業プログラマではどういうふうにdeleteした変数を識別してるんでしょうか?
0939名前は開発中のものです。2014/12/28(日) 12:24:23.36ID:5FK2L+6G
生ポインタよりもスマートポインタを使うのが一般的じゃねーの
0940名前は開発中のものです。2014/12/28(日) 13:58:25.18ID:dAYPhj1N
生ポインタの場合
#define SAFE_RELEASE(p) { delete p; p = NULL; }
みたいなマクロ使ってるのを見たことある

俺の趣味プログラミングだとshared_ptrやunique_ptr使ってる
boolへの型変換が定義されてるから普通のポインタみたいに
 if (p) { /* スマートポインタが有効だった時の処理 */ }
とかできるし
0941名前は開発中のものです。2014/12/28(日) 14:54:46.81ID:DVHfXhJL
みんなスマポなんですか
まぁ生ポインタと同じように扱えるならそっちのほうがいい感じですか
代入で参照カウントが増えるのはオペレーターとかいうやつですか
0942名前は開発中のものです。2014/12/28(日) 18:56:20.33ID:uPxHRIHV
俺はあんまりスマポは使わないな
ちょっと作ったらテストしてリークしてたらメッセージでるし、
deleteのタイミングが難しい場合ぐらいしかスマポ使わないよ。
ポインタ変数なんか、ほとんどの場合どっかのクラスのメンバーに
なってるからデストラクタでdeleteするようにしてるし
0943名前は開発中のものです。2014/12/28(日) 20:49:21.58ID:KLVWt4ts
マウスカーソルを対象の位置に置いてマウスホイールで対象にズームするような機能をつけたいのですが
どのように実装すれば良いでしょうか
Siv3Dを使っています
0944名前は開発中のものです。2014/12/28(日) 20:55:05.01ID:ToxqMv2l
素朴な疑問なんだけど、ワープロやグラフィックソフトのオブジェクトと違って
ゲーム中に出現するキャラクタの数は大体決め打ちできるんじゃないの。

Cの作法に則って毎回newして確保するんじゃなくて、例えば1オブジェクト最大256バイト、
80体まで出現するならchar slot[256*80]のような形で生メモリ領域をあらかじめ確保しておいて、
ふだんはp = (Actor*)&slot[256*n]; if (p->Exists) { p->Act(); }でいい気がするんだけど。

もちろんActorは基底クラスで、必要でない時はp->Exists = falseにする。
作成時はnewでなくスタック上でコンストラクタ呼び出して、領域に内容丸ごとコピー。

もしかしたら全然違う用途の話かも知れないけど。
0945名前は開発中のものです。2014/12/28(日) 20:57:03.11ID:R8bFfUbq
FlyWeightパターンとかもある
0946名前は開発中のものです。2014/12/28(日) 21:15:10.93ID:vMYsGefx
>>944
動的メモリ確保はパフォーマンスへの影響が大きいので、
可能な限りは最大出現数分の配列を確保しておく。
0947名前は開発中のものです。2014/12/28(日) 22:21:01.45ID:D5X5qYnm
むしろそんなに重要な物なら絶対に常時必要分確保しないといかんと思うけど
他のジャンルならともかく、敵が出るたびになんだかカクつくSTGなんか嫌だぞ
0948名前は開発中のものです。2014/12/29(月) 00:30:37.06ID:gxX17JP7
逆に、例えば「格闘ゲームにおけるキャラクタ選択画面」なんかは
その画面にいる間オブジェクトは一定だろうから >>942 方式で十分だと思う。

そう考えるとゲームの場合、シミュレーションとか特殊なルールでオブジェクト数に
上限を設けたくないとかでなければポインタ制御は簡素に纏める方向でいいと思うんだわ。
0949名前は開発中のものです。2014/12/29(月) 00:45:24.09ID:Ue1eh9PX
まぁ、無理にスマポ使う必要はないと思うけど、
スマポを知って感動して以降、newするものやopen/close系のものは余程でない限りはRAIIで書くようにしてたら、
deleteを書くことが(ほぼ)なくなった。
当然、メモリリークもゼロ。

RAIIを知った前後でプログラムの規模・品質が雲泥の差になったわ。
0950名前は開発中のものです。2014/12/29(月) 01:07:57.04ID:0UxFRGu4
今は、boostにスマポも入っているだろ
0951名前は開発中のものです。2014/12/29(月) 01:44:11.15ID:32D0f9iV
memoryとの違いがわからん
0952名前は開発中のものです。2014/12/29(月) 07:13:22.67ID:aw7mXH6p
今最新のVSに入ってるC++も当然11だよな?スマポ余裕で使えるじゃん boost不要
0953名前は開発中のものです。2014/12/29(月) 11:06:00.25ID:UPrXKgd4
リークするのはてめえの脳みそだけにしておけ
0954名前は開発中のものです。2014/12/29(月) 18:43:53.95ID:aw7mXH6p
うん?現行最新のVSなら3種類の型が使えるだろ?実質2種類だけど
VS以外を使っていたりとかVS標準スマポの仕組みや性能が気に入らないってのは知らない

っつーかな、書き落としはリークじゃなくね
0955名前は開発中のものです。2014/12/30(火) 03:36:36.79ID:vvze8R+p
データの圧縮や解凍ってどうやってる?
簡単な圧縮かけた方がファイルからデータに展開するのも早いし、
(ファイルの読み書きの速度と展開速度を天秤にかけた)
解析する人にとっても多少は面倒になるかな?と思って
GPLとかに感染しないのがあると良いな

やっぱ、自力でやるしか無い?
0956名前は開発中のものです。2014/12/30(火) 03:46:28.22ID:W5CPlMBg
>>955
zlib
0957名前は開発中のものです。2014/12/30(火) 04:01:26.42ID:bdHUCtIv
バイナリ全部繋げてcueファイルにインデックスいれときゃいんじゃね
0958名前は開発中のものです。2014/12/30(火) 08:13:45.13ID:swhFWkgZ
今使うならLZ4かな
0959名前は開発中のものです。2014/12/30(火) 09:05:37.93ID:6MynlDel
色々な言語のライブラリあるしBSDだし良さそうやね
圧縮率あって高速ってのは魅力的だわ
0960名前は開発中のものです。2014/12/30(火) 09:25:49.71ID:HpQ+h6E5
圧縮済みの画像や音声なら無圧縮形式のほうが良いかもね。
mmapして切り出せばメモリ確保も要らない。
0961名前は開発中のものです。2014/12/30(火) 18:48:29.71ID:UWJ4OXBN
mmapのほうがreadより速いという迷信について - kazuhoのメモ置き場
http://d.hatena.ne.jp/kazuhooku/touch/20131010/1381403041
0962名前は開発中のものです。2014/12/30(火) 23:03:50.59ID:HpQ+h6E5
誰もCPUキャッシュやディスク先読みのレベルでのmmapの速度の話なんかしてねーよ
0963名前は開発中のものです。2014/12/31(水) 10:36:13.73ID:rJyBxJIf
メモリ節約って何だよ
ファイルの内容なんてデコードしたらすぐ捨てるだろ

そんな回りくどいことしないで普通に読み込めばいい

サーバーにおいて複数のプロセスから同じファイルの内容を読み込む時なんかは
読み込み用のバッファが要らなくなるからメモリ節約に繋がるらしいが
殆どのケースで速度が遅くなるだけだから使う理由が無い
0964名前は開発中のものです。2015/01/01(木) 16:48:21.14ID:jkRIISMU
class TestClass {
private:
// 型 m_funcArray;
void FuncA();
void FuncB();
void FuncC();
public:
void CreateFuncArray() {
m_funcArray[0] = &FuncA;
m_funcArray[1] = &FuncB;
m_funcArray[2] = &FuncC;
}
void ExecuteFuncArray() {
for (int i = 0; i < m_funcArray.Length; i++) {
m_funcArray[i]();
}
}
}

こんな感じでクラスにメンバ関数ポインタの配列を作って実行したいのですが
メンバ関数ポインタの配列の型をどう宣言すれば良いでしょうか
0965名前は開発中のものです。2015/01/01(木) 18:08:05.65ID:cWuPuXeC
言語仕様的にどこまで正しいかわからんけど

class CTestClass {
private:
void (CTestClass::*m_pFunc[3]) ();

void FuncA();
void FuncB();
void FuncC();

void SetTable() {
m_pFunc[0] = &CTestClass::FuncA;
m_pFunc[1] = &CTestClass::FuncB;
m_pFunc[2] = &CTestClass::FuncC;
};

};
0966名前は開発中のものです。2015/01/01(木) 18:10:47.53ID:cWuPuXeC
呼び出しはこうな
void Exec( int i ) {
(this->*(m_pFunc[i])) ();
}
0967名前は開発中のものです。2015/01/01(木) 18:29:15.58ID:jkRIISMU
>>965-966
ありがとうございます
なるほど*はその位置につけるんですか
0968名前は開発中のものです。2015/01/02(金) 17:10:32.59ID:dGIIjPDH
enum class Signals {
RED,
GREEN,
BLUE
}

void func(Signals signal) {
if (signal == Signals::RED) {
// 処理
}
}

enum classを使って引数を識別したかったのですが次のようなエラーが出ました
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
どうすればいいのでしょうか
0969名前は開発中のものです。2015/01/02(金) 17:16:07.35ID:nBM88kHl
void main を int main に変更
0970名前は開発中のものです。2015/01/02(金) 17:47:26.94ID:dGIIjPDH
関係ない所のエラーでしたすみません
0971名前は開発中のものです。2015/01/04(日) 15:42:29.73ID:8cIsCjgM
ifstream::read(buff,filesize)で読み込んだ文字列を表示すると
末尾にEOFらしき文字化けした文字があってXML等のパースに失敗するんですが
filesizeを-1してreadしたり、読み込んだchar*の末尾のEOFと思われる要素に\0をいれて回避しているんですが
根本的な解決方法がわかりません

どうしたらいいですか
0972名前は開発中のものです。2015/01/04(日) 16:06:48.29ID:Ep14vw0N
>>971
filesize 数ぶんの文字が無かったんだろう。
入力バッファ末尾の未初期化の領域が見えているだけ。
改行コードの変換 \r\n --> \n とかでちょうど1文字減ってるんじゃないの?

バイナリモードで読めば、たぶんファイルサイズと文字数が一致するはず。
その後の処理が \r\n に対応してないといけないけど。
テキストモードで読みたいなら、istream_iterator を使うのが定番かな。
0973名前は開発中のものです。2015/01/05(月) 13:29:36.70ID:61MXvLfY
終端文字の文字数って2文字じゃなかったっけ?
0974名前は開発中のものです。2015/01/05(月) 13:52:13.89ID:+omNtWXl
buff全体を0クリアしてreadすればいいだけ
他の方法はgetで一文字づつ読みつつeofチェック
ファイルが全てメモリに置いても問題ないサイズならstd::stringとoperator>>で全部一度に取得
好きなの選べ
0975名前は開発中のものです。2015/01/06(火) 11:25:41.33ID:BevxLkoj
http://murakan.cocolog-nifty.com/blog/2009/12/cstreameof-7401.html
なんかeofまで読み込むのはifstreamの仕様らしいですね
0976名前は開発中のものです。2015/01/06(火) 18:08:33.09ID:+D28bBOU
そりゃeofまで読まないとどこが終端なのか分からないし…
0977名前は開発中のものです。2015/01/07(水) 13:02:30.14ID:NiXFoaGk
横からすいません、質問です。
http://www1.axfc.net/u/3387806
ソフトウェア3DCGライブラリを作っているのですが、
80万ポリゴン/秒(C2D E8400 OC 3.6GHz上&フラットシェーディング&テクスチャマッピングなし)
しか出ません。ソフトウェアレンダリングってこんなものなんですか?
0978名前は開発中のものです。2015/01/07(水) 18:26:06.67ID:PQ5kLSMd
何で今時ソフトウェアレンダラー
0979名前は開発中のものです。2015/01/07(水) 18:57:47.13ID:vA0pKoe4
>>977
DirectXのリファレンスドライバでメッシュを表示する適当なもの作ってそれと比較してみたら?
0980名前は開発中のものです。2015/01/07(水) 20:29:35.89ID:PQ5kLSMd
ソフトウェアレンダラーにしたってMesaとかIrrlichtのソフトウェアレンダラーとかが既にあるのに
車輪の再開発じゃない?

http://en.wikipedia.org/wiki/Mesa_(computer_graphics)#Software_renderer
http://irrlicht.sourceforge.net/features/
0981名前は開発中のものです。2015/01/07(水) 22:42:06.11ID:Wqt7oMn8
GT3D_drawpoly_fill_sub()を流し読みしたけど、多角形描画は普通っぽかったし
このプログラム自体は特に速度をどうこうしているものではないようですね。
ちょっと見ただけだけどソースは一部ですよね
SSEとかも使ってないし、マルチスレッドでもないですよね
描画対象はメモリ? に一旦描画している感じなのかな
描画範囲を分割してマルチスレッドにしてはどうですか?
0982名前は開発中のものです。2015/01/08(木) 20:42:14.85ID:Mw182kRW
メモリ速いやつに差し替えようぜ
0983名前は開発中のものです。2015/01/08(木) 22:06:01.19ID:7iBzssXL
MSの最新技術の粋を集めたWARPに敵うはずがない
0984名前は開発中のものです。2015/01/08(木) 22:18:13.29ID:5+CLNQq0
WARPはSIMDも使ってるはずだよね。
0985名前は開発中のものです。2015/01/09(金) 13:53:51.10ID:VWlQDlh6
SSE2必須で使える場合SSE4.1まで使ってるとかなんとか
0986名前は開発中のものです。2015/01/09(金) 17:34:34.87ID:Iw10L3cl
>>977 です。
ちょっとSSE勉強してみます。
今更ソフトウェアレンダラなのは
自分で作れば最小限の機能になって使いやすいと思ったからです。
自作OSへの転用も簡単ですし。
SSE版は別プロジェクトでやってみます。
0987名前は開発中のものです。2015/01/09(金) 17:49:58.46ID:6dSDlYuJ
SSEより完成目指せ。
効率よく使ったとして数%の成績アップだ。体感では違いがないとかなりうる。
0988名前は開発中のものです。2015/01/09(金) 18:21:14.91ID:YwByCpOo
>>986
何その理由
普通にOpenGLかDirect3Dで良いじゃん
自作OSってふざけてんの?
0989名前は開発中のものです。2015/01/10(土) 06:38:12.95ID:FMkme2Bg
>>986
面白い物好きが来たな
OS作るのがメインでゲーム作りがサブなのか
目指すは究極のマルチプラットフォーム?
あるいは新しい3D環境でも作り出したいのかな?
レイトレーシングという概念を勉強すると、また新しい世界が見えるかも?
0990名前は開発中のものです。2015/01/10(土) 10:07:13.00ID:JC3btUBL
自前でできるといいと思うよ。
その後、FPGAに実装したらさらに楽しいと思う。
0991名前は開発中のものです。2015/01/10(土) 10:28:58.93ID:XEF52+tX
中身自作するにしてもAPIはOpenGLにあわせたものも作った方が良いと思うけどね。
自作物のパフォーマンスがどれだけ酷いか解るし。

まぁ趣味なんだろうから好きにしたら良いと思うけど。
0992名前は開発中のものです。2015/01/11(日) 00:41:53.86ID:EFs4nj8K
き、きっと将来のビル・ゲイツを目指しているんだよ!

オペレーション・システムそのものの開発ときたか
夢がデカすぎて全体像が見えない
0993名前は開発中のものです。2015/01/11(日) 00:44:24.46ID:IZj/cFBq
実用性はさておき、自分で一通り作れたら最高に感動できるだろうな。
がんばってくれ。
0994名前は開発中のものです。2015/01/11(日) 00:50:41.76ID:2AMxCLe9
お前ら東大の名物科目CPU実験くらいは知っといたほうがいいぞ
986がそうとは思わないがな
0995名前は開発中のものです。2015/01/11(日) 06:09:25.57ID:vPB1OoJW
WARPって必要な部分だけソフトウェアで補うとかじゃなくって
全部ソフトウェアになるのか
0996名前は開発中のものです。2015/01/11(日) 09:26:23.44ID:DORzARTJ
>>992-993
実はOSの方は既にある程度出来てまして・・・w
「三十日でできる!OS自作入門」のはりぼてOSをもとに作ってます。
ちなみにソフトウェアレンダラに至った経緯は

OS作った

それでゲーム作りたい

でも3dCG使えない

じゃあレンダラ作ろう

ある程度出来た←いまここ

自作OSの方はSSE未対応なのでlinux/OSX/Windows版のみの特権になるっぽいですね
今日中には移植しようと思ってます!
0997名前は開発中のものです。2015/01/11(日) 10:21:27.64ID:RDQlUyF+
次スレ立てたよ

C/C++ゲーム製作総合スレッド Part7 [転載禁止]2ch.net
http://peace.2ch.net/test/read.cgi/gamedev/1420939171/
0998名前は開発中のものです。2015/01/11(日) 10:39:34.22ID:IZj/cFBq
>>997
乙〜!

やっぱゲームプログラミングは一番楽しいぜ。
0999名前は開発中のものです。2015/01/11(日) 18:55:24.63ID:9XLW+JE+
自作OSとか本人は楽しいんだろうけど
1000名前は開発中のものです。2015/01/11(日) 19:08:48.17ID:+gxvr94o
本人が楽しいなら十分だろ
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。