[過去ログ]
C/C++ゲーム製作総合スレッド Part1 (1001レス)
C/C++ゲーム製作総合スレッド Part1 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索
歴削→次スレ
栞削→次スレ
過去ログメニュー
952: 名前は開発中のものです。 [sage] 2012/10/21(日) 11:05:03.38 ID:2HisPjSj マシン性能におんぶにだっこで、できる改善をやらないのは、プログラマの行動じゃないと思う。 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/952
953: 名前は開発中のものです。 [sage] 2012/10/21(日) 11:12:14.23 ID:VgVyyYQT じゃあ全部ハードウェアで実装しろ http://echo.5ch.net/test/read.cgi/gamedev/1337516528/953
954: 名前は開発中のものです。 [sage] 2012/10/21(日) 11:26:14.12 ID:utAVkLK4 改善というのは、できうる限りマシン性能におんぶにだっこさせることなんだが、 それがプログラマの行動じゃ無いというのは、いったいどれだけ愚か者なんだろう? http://echo.5ch.net/test/read.cgi/gamedev/1337516528/954
955: 名前は開発中のものです。 [sage] 2012/10/21(日) 11:29:52.39 ID:uEOq6DXM ハードに頼れない馬鹿なプログラマはクビだ http://echo.5ch.net/test/read.cgi/gamedev/1337516528/955
956: 名前は開発中のものです。 [sage] 2012/10/21(日) 11:40:08.93 ID:fWFEJkHx こいつらってハッカソンとか勉強会に参加してない低能なんだろ? http://echo.5ch.net/test/read.cgi/gamedev/1337516528/956
957: 名前は開発中のものです。 [sage] 2012/10/21(日) 12:06:12.30 ID:un2TMSqt できる改善というやつも 結局コーディングの手間と実行速度やリソース消費とのバランスだよな。 一概に言えるもんじゃない。 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/957
958: 名前は開発中のものです。 [sage] 2012/10/21(日) 12:15:36.14 ID:/1IdSLkb あーよくいるよね、知識だけ溜めこんで実装できない奴 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/958
959: 名前は開発中のものです。 [sage] 2012/10/21(日) 12:15:54.46 ID:uEOq6DXM わかる 俺も中二の頃はハッカソンとか勉強会に参加するだけでカッコいいと思ってたよ http://echo.5ch.net/test/read.cgi/gamedev/1337516528/959
960: 名前は開発中のものです。 [sage] 2012/10/21(日) 12:29:22.29 ID:PTum4Ngu C++を知らないゲームプログラマ達 http://d.hatena.ne.jp/alwei/20111008/1318090538 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/960
961: 名前は開発中のものです。 [sage] 2012/10/21(日) 13:13:31.85 ID:smvmEgiA だれこいつ http://echo.5ch.net/test/read.cgi/gamedev/1337516528/961
962: 名前は開発中のものです。 [sage] 2012/10/21(日) 14:29:14.20 ID:2HisPjSj 例えば「この処理はハードがやってくれるからそっちに投げよう」というのはアリだろう。 けど「最近のPC処理能力ならできるだろうからやる必要はない」は相手の状況次第だろう。 相手が対象としてるPCが「最近の」だとは限らないし、作るゲームの規模も不明。 少なくともプログラム技術について語るスレで言うようなことじゃない。 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/962
963: 名前は開発中のものです。 [sage] 2012/10/21(日) 15:22:10.49 ID:8o2Qx0nE 950からの流れでプログラム技術とか言っちゃう人って…… http://echo.5ch.net/test/read.cgi/gamedev/1337516528/963
964: 名前は開発中のものです。 [sage] 2012/10/21(日) 15:36:19.33 ID:VBPhaVkU 手を抜くための理由以上のモノではないしな http://echo.5ch.net/test/read.cgi/gamedev/1337516528/964
965: 名前は開発中のものです。 [sage] 2012/10/21(日) 18:48:08.69 ID:fR9B1EWl >>925が救われたのかが気になる スレチだろうけどな http://echo.5ch.net/test/read.cgi/gamedev/1337516528/965
966: 名前は開発中のものです。 [sage] 2012/10/21(日) 19:16:33.45 ID:9rCgavl9 >>950は素直にC使った方がいいんじゃないだろうか そんなところに拘っても可読性落ちるだけで プレイヤーには誤差にも感じない程度の差しかでないでしょ http://echo.5ch.net/test/read.cgi/gamedev/1337516528/966
967: 956 [sage] 2012/10/21(日) 21:43:51.38 ID:fWFEJkHx >>959 かっこいいって何? ハッカソンとかGame Jamにも足運んでるし CEDECとかにも毎年参加してるし いろいろな勉強会開いたりしてるよ? バンナム社員の人と会話とかしてTwitterでも話してるし ちなみに愛機はMBP(MacBook Pro)使ってるかな UDKで作ったゲームは東方風のシューティング あとはUnityとかもやってるしね あとこう見えてゲームは全くやらないかな(笑) 「ゲーム好き、ゲームヲタク」っていうのはゲーム開発に不要って言われてるからね 普段全くゲームをしない、所詮人が作ったゲーム、自分で作ってやるほうがおもしろいかな 好きなゲームは地球防衛軍、ストリートファイター4 ネトゲは韓国の利益になるからやらないかな http://echo.5ch.net/test/read.cgi/gamedev/1337516528/967
968: 956 [sage] 2012/10/21(日) 21:52:32.03 ID:fWFEJkHx 一応できる言語書くね C,C#,C++,Javascrip(Node.js),Coffeescript,Haskell,Eralng,Go,Scala,Python,Objective-C,OCaml,Scheme,LISP とか使えるね あとUnityの本とか全部そろえてるし 今はアンドロイドアプリ作ってるかな じゃんけんゲームみたいなやつ http://echo.5ch.net/test/read.cgi/gamedev/1337516528/968
969: 名前は開発中のものです。 [] 2012/10/21(日) 21:58:35.68 ID:70260In1 ここってプロフェッショナルレベルの人たちが集っていたのか http://echo.5ch.net/test/read.cgi/gamedev/1337516528/969
970: 名前は開発中のものです。 [sage] 2012/10/21(日) 22:02:03.60 ID:EmtRs25+ >>968 「使える」のレベルが低いことが用意に窺い知れる書き込みだな http://echo.5ch.net/test/read.cgi/gamedev/1337516528/970
971: 名前は開発中のものです。 [sage] 2012/10/21(日) 22:07:31.63 ID:9rCgavl9 >>968 はじめて見るのがいくつかあるな 俺もgimpのスクリプト書くのにschemeちょっとやったけど lisp系の言語ってどういう場面で必要になんの? やっぱりスクリプト? http://echo.5ch.net/test/read.cgi/gamedev/1337516528/971
972: 名前は開発中のものです。 [sage] 2012/10/21(日) 22:22:53.59 ID:koRq+7Oz lispはemacsの設定で使う場面しか思いつかないな http://echo.5ch.net/test/read.cgi/gamedev/1337516528/972
973: 名前は開発中のものです。 [sage] 2012/10/21(日) 22:42:29.46 ID:63szXM1n >>966 可読性が落ちるのは間違いないが、効果は誤差どころじゃないな・・・。 俺が950で挙げた前者は、みんなもやってるよね。 今時のコンパイラなら後者もOKなら、そろそろ観念してVS2012Pro買うかなぁと思ってさ。 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/973
974: 名前は開発中のものです。 [sage] 2012/10/21(日) 23:43:39.06 ID:un2TMSqt プログラミングのスキルは手段であって目的じゃないからな。 自分の作りたいゲームが作れなければ全ては無意味だ。 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/974
975: 名前は開発中のものです。 [sage] 2012/10/21(日) 23:51:38.77 ID:9rCgavl9 >>973 すいません、やってないっす… 関数細かく作るから同じメンバに何度もアクセスする箇所があんまりない ループする箇所はSTLにまとめてイテレーターでやっちゃってるな… もしかして、俺のコード超遅い? http://echo.5ch.net/test/read.cgi/gamedev/1337516528/975
976: 名前は開発中のものです。 [sage] 2012/10/22(月) 00:56:42.06 ID:z1W7+ZfO >>975 いやフレーム毎に収まれば正義ですし、可読性重視でいんでないですかね。 考えてみればExpressならすぐ使えたなと言うわけで、VS2012で試してみました。 うちの環境だと、基底から仮想関数で呼び出した場合に比べ、直で呼び出した場合は、 大体23%くらいの速度で行けるみたい。 最適化オプション色々変えてもあまり変わらず。 最新のコンパイラでも、やっぱり遅いみたいね・・・。 どうでもいいけど2012のUIかっこいいな。メトロというよりレトロだけど。 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/976
977: 名前は開発中のものです。 [sage] 2012/10/22(月) 02:16:07.30 ID:bfhvnErC クラスインスタンスのdelete時に、Pure virtual function callのエラーが出て悩まされた。 純粋仮想関数持ってる親クラスのデストラクタに入ってから、その仮想関数を呼んでいることが原因だった。 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/977
978: 名前は開発中のものです。 [sage] 2012/10/22(月) 02:24:37.14 ID:GibO9cqH deleteなんて自分で書くものじゃないし デストラクタもなるべく書かないほうが良い http://echo.5ch.net/test/read.cgi/gamedev/1337516528/978
979: 名前は開発中のものです。 [sage] 2012/10/22(月) 02:27:36.24 ID:F1nyTPCI 2012ってXPには未対応なんね http://echo.5ch.net/test/read.cgi/gamedev/1337516528/979
980: 名前は開発中のものです。 [sage] 2012/10/22(月) 04:33:45.61 ID:bfhvnErC >>978 そうなのか? 俺はdeleteもデストラクタも使い放題だぜ。 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/980
981: 名前は開発中のものです。 [sage] 2012/10/22(月) 06:01:48.56 ID:87TUN/xt >>978 気になる。理由は? http://echo.5ch.net/test/read.cgi/gamedev/1337516528/981
982: 名前は開発中のものです。 [sage] 2012/10/22(月) 08:33:50.88 ID:19qPn/dP boostの参照カウンタ使えばdelete書かなくてもなんとかなる…かも? http://echo.5ch.net/test/read.cgi/gamedev/1337516528/982
983: 名前は開発中のものです。 [sage] 2012/10/22(月) 09:11:31.91 ID:wKQ4qRL6 >>982 移植の際にコンパイルエラー出たときの対応コストがboostは大きくつく。 ジャンルによってはカウンタ同期のコストが馬鹿にできないこともあるだろうし。 minmalなオレオレsmartptrを作っておくのが一番苦労しない気がする。 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/983
984: 名前は開発中のものです。 [sage] 2012/10/22(月) 15:22:28.62 ID:buj+NpWL #include <iostream> #include <vector> #include <string> int main(){ std::vector<std::string> Strings; std::vector<int> Vector; Strings.push_back("1-2-3-4-5"); Strings.push_back("9-7-8"); Strings.push_back("6"); for(unsigned int i = 0; i<Strings.size(); i++){ //VectorにStringsの文字列を正規表現等で格納したい } return 0; } Stringsに格納した文字列を正規表現で数字だけ取り出してVectorに格納したいのですが 正規表現はどうかけばいいのでしょうか? Vectorを[1,2,3,4,5,9,7,8,6]といった具合です。 よろしくお願いします。 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/984
985: 名前は開発中のものです。 [sage] 2012/10/22(月) 18:04:08.05 ID:bfhvnErC 誰が調べてあげてたもれ http://echo.5ch.net/test/read.cgi/gamedev/1337516528/985
986: 名前は開発中のものです。 [sage] 2012/10/22(月) 18:38:31.04 ID:yaXLi6zV 試してないけどboost::regex_grepに\\d+を突っ込むんじゃダメかな http://echo.5ch.net/test/read.cgi/gamedev/1337516528/986
987: 名前は開発中のものです。 [sage] 2012/10/22(月) 19:30:48.30 ID:GibO9cqH deleteを自分で書くな std::unique_ptrを使え ノーコストのスマートポインタだ スコープから抜けるときに自動的にdeleterを実行してくれる std::unique_ptrが使えない場面では仕方ないのでstd::shared_ptrを使え 多態が必要なときはstd::shared_ptrじゃないとダメだった気がする デストラクタを書くのはスマートポインタで自動的に解放できないリソースを扱うクラスのときだけだ 例えば、OpenGLのテクスチャオブジェクトとかな だがFILEオブジェクトなんかはdeleterにfcloseを指定すればスマートポインタで自動解放可能だ メンバ変数の解放はメンバ変数のデストラクタに任せて自分で解放しようとするな 抱合した子オブジェクトは親が死んだときに勝手に死ぬし newしたオブジェクトはスマートポインタに入れとけば勝手に死ぬ 自分でdeleteする必要がある場面なんてまずないだろう http://echo.5ch.net/test/read.cgi/gamedev/1337516528/987
988: 名前は開発中のものです。 [sage] 2012/10/22(月) 20:05:28.33 ID:YuwwqXlf >>984 strtokでググれ http://echo.5ch.net/test/read.cgi/gamedev/1337516528/988
989: 名前は開発中のものです。 [sage] 2012/10/22(月) 20:11:20.29 ID:bfhvnErC でもさ、 あるクラスをアプリ実行期間中、存続させつつづけて、 ゲーム・ステージの切り替わりのタイミングで、 それが持つ配列型メンバをリサイズする場合なんかには deleteを使わざるを得ないんじゃないか? こういうケースは頻繁にあるんだが。 全ステージ配列のサイズは固定とか縛り持たせるわけでもあるまい。 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/989
990: 名前は開発中のものです。 [sage] 2012/10/22(月) 20:20:24.89 ID:GibO9cqH スマートポインタのvectorを使いなさい あと、いまどき生配列はないな 固定長配列ならstd::array、可変長ならstd::vectorを使いなさい Visual C++でデバッグモードでコンパイルすれば、範囲外アクセスしたときに例外投げてくれるはずだ http://echo.5ch.net/test/read.cgi/gamedev/1337516528/990
991: 名前は開発中のものです。 [sage] 2012/10/22(月) 20:56:00.85 ID:bfhvnErC 相互に関連していて、deleteでトリガーされるデストラクタの実行順を気にしなきゃいけない時もあるよ。 またブラックボックスな配列ってのは、リサイズ後のメモリアクセス効率性への影響が不安じゃない。 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/991
992: 名前は開発中のものです。 [sage] 2012/10/22(月) 21:12:58.91 ID:yaXLi6zV それなりに寿命が短くて、確実に管理できるなら new/deleteの方が楽よね http://echo.5ch.net/test/read.cgi/gamedev/1337516528/992
993: 名前は開発中のものです。 [sage] 2012/10/22(月) 21:21:39.03 ID:oFyoxOqU >>991 例えばこういう循環参照を持つやつだよね。 struct B; struct A{ B* b;}; struct B{ A* a;}; こういうときは、生存期間の管理用に一つ使い捨てのクラスを用意して、 struct C{ A a; B b; C():a(),b(){ a.b = &b; b.a = &a; }; // 循環してるポインタをセット ~C(){} // デストラクタで a と b が 同時に破棄されるようにする。 }; // struct C自体はスタックか std::unique_ptr<C> にまかす。 デストラクタが走るときはコンストラクタと逆の順番だから、循環参照してて デストラクタの実行順番を気にしないといけないような状態の場合はそれ自体を struct Cのデストラクタに封じ込めるのはどうだろう。 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/993
994: 名前は開発中のものです。 [sage] 2012/10/22(月) 23:30:02.44 ID:GibO9cqH オブジェクトへの参照を保持していることとオブジェクトを所有していることは別だと思うんだ 例えば木構造でなるべくメモリを局所化したい場合だとこういう感じになると思う class Node { Node* firstChild; Node* sibling; Node* parent; }; std::vector<Node> vNode; この場合、Nodeは他のNodeへの参照を持ってるけど、所有しているわけじゃない 所有しているのはvNodeを持つオブジェクトだ あれこれって>993と同じことじゃね http://echo.5ch.net/test/read.cgi/gamedev/1337516528/994
995: 名前は開発中のものです。 [sage] 2012/10/23(火) 00:04:00.65 ID:jziPb4Rf weak_ptrを使うのだてめえら http://echo.5ch.net/test/read.cgi/gamedev/1337516528/995
996: 名前は開発中のものです。 [sage] 2012/10/23(火) 01:15:06.83 ID:lf4QviES class Task { Task* m_pNext; Task* m_pPrev; bool m_Head; //デク先頭フラッグ bool m_ToBeDeleted; //削除フラッグ virtual void Exec()=0; // }; class Filament : public Task { //m_EntryPointにTaskクラスをつなげる。 Task m_EntryPoint; //デク先頭 ~Filament() { //親delete時に、連鎖的にdeleteする子の削除フラッグを立てる。 Task* child = m_EntryPoint.m_pNext; while (!child->m_Head) { child->m_ToBeDeleted=true; child = child->m_pNext; } }; }; class Fiber : public Filament {...}; //m_EntryPointにFilamentクラスをつなげる。 class Synthesis { Fiber* fibers_active[4]; }; //1次元配列。参照のみ。 class Repository { //シーンの切り替わりで動的に生成・破棄し、インスタンスを必要分だけ保持する。 Task* tasks[1024]; //1次元配列。インスタンスを注入。 Filament* filaments[256]; //1次元配列。インスタンスを注入。 Fiber* fibers[64]; //1次元配列。インスタンスを注入。 }; http://echo.5ch.net/test/read.cgi/gamedev/1337516528/996
997: 名前は開発中のものです。 [sage] 2012/10/23(火) 01:16:10.47 ID:lf4QviES ↑極端な例だが、 Repositoryクラス内で、シーン中、必要なインスタンスしか確保しないという条件の場合、 まずSynthesisクラス内の要らないfibers_active要素だけ削除フラッグを立てて、 次にRepositoryクラス内のフラッグが立ったfibers要素をdeleteして、 次にRepositoryクラス内のフラッグが立ったfilaments要素をdeleteして、 最後にRepositoryクラス内のフラッグが立ったtasks要素をdeleteする、 っていうのが効率的なんじゃないか? 要は、麗しのタスクシステムなんだが(笑) http://echo.5ch.net/test/read.cgi/gamedev/1337516528/997
998: 名前は開発中のものです。 [sage] 2012/10/23(火) 02:02:33.12 ID:7yJptL6x >>992 「確実に管理しなければならない」ポイントを減らすためにライブラリ使うんでしょ http://echo.5ch.net/test/read.cgi/gamedev/1337516528/998
999: 名前は開発中のものです。 [sage] 2012/10/23(火) 10:35:59.82 ID:8kXxMAJY お疲れ http://echo.5ch.net/test/read.cgi/gamedev/1337516528/999
1000: 名前は開発中のものです。 [age] 2012/10/23(火) 10:41:49.45 ID:5T7QFGuf そしてさようなら(#゚Д゚)/~~ http://echo.5ch.net/test/read.cgi/gamedev/1337516528/1000
1001: 1001 [] Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。 http://echo.5ch.net/test/read.cgi/gamedev/1337516528/1001
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.018s