2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

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

859 :名前は開発中のものです。:2014/12/13(土) 10:06:03.65 ID:KmIl68fQ.net
読めるコードを書く能力より、
どんなコードでも読める能力の方がいい。

860 :名前は開発中のものです。:2014/12/13(土) 10:33:09.68 ID:GVgS9kEW.net
>>859
読めるコード書けないとチーム開発で役に立たないじゃん
リバースエンジニアリング専門でやんの

861 :名前は開発中のものです。:2014/12/13(土) 11:10:08.60 ID:vJXa5IWH.net
このスレ、プログラマーが複数人開発の環境の人、居るの??

862 :名前は開発中のものです。:2014/12/13(土) 11:19:10.70 ID:KmIl68fQ.net
読める具合が数値化できればいいのだけど。
何書いても読めない人はいるわけで。

863 :名前は開発中のものです。:2014/12/13(土) 11:28:25.00 ID:A651+XDE.net
>>858
すげーな。
実力派だな。

やっぱ自分で書くのが一番気持ちいいな。
基本的には一人で全部組んでるな。
生産性は別にしてw

864 :名前は開発中のものです。:2014/12/13(土) 11:46:26.04 ID:OLxz298b.net
ダーティーなコードを読む能力ついでにクリーンコードに書き直す能力もあった方がいいな

まあlint通してからやれば比較的楽だが

865 :名前は開発中のものです。:2014/12/13(土) 12:02:01.67 ID:cTfiogfq.net
enum(エナム)
struct(ストラクト)
const(コンスト)
yield(イヨールド)
extern(エクスターン)
explicit(エクスプリクト)
sizeof(サイズオフ)

866 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 12:42:15.70 ID:GVgS9kEW.net
enumえにゅうむ
yieldいーるど
exturnいくすたーん
explicitいくすぷりしっと
sizeofさいずおぶ

867 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 12:46:53.80 ID:YQCx+6st.net
×exturn
○extern

868 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 12:47:23.37 ID:GVgS9kEW.net
oh misstake

869 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 12:47:27.98 ID:vmsxYpAR.net
いや読むってのは音読することじゃないから

870 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 13:34:00.06 ID:cTfiogfq.net
「ある画像が透明になりきったら、画面を別の画面に遷移する」という処理をしたいんですけど
その「ある画像」の不透明度に依存して画面遷移を操作してもいいんでしょうか?

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

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

Scene::update(){
if(image->GetOpacity() == 0){
//遷移する
}else{
image->SetOpacity(image->GetOpacity()-15);
}
}

871 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 13:39:12.16 ID:A651+XDE.net
>>870
透明度を直接評価するんじゃなくて、
もう少し抽象的に、遷移準備完了状態、みたいなものを評価したら汎用的じゃない?

872 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 13:54:47.72 ID:cTfiogfq.net
>>871
こんな?感じでしょうか
違和感すっきりしたんでこれでやってみます、ありがとう

Scene::update(){
 if(image->GetOpacity() == 0){
  transitionFlag = true;
 }else{
  image->SetOpacity(image->GetOpacity()-15);
 }
 if(transitionFlag){
  //遷移
 }
}

873 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 15:13:37.37 ID:ZiMlwiS0.net
スレ流し読みしてたらフルスクラッチ云々のせいで乾燥肌が痒くなってきた

フルスクラッチ派:「あぁ^〜痒いところに手が届くんじゃぁ^〜」(バリバリ

874 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 18:29:40.45 ID:OLxz298b.net
まー確かに自分の都合でどんどん改変できるしなあ

875 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 20:39:35.80 ID:8y/GDHu5.net
何度も言うが、初心者は大抵の場合自作ライブラリが完成する前に力尽きるからな
ある程度ガリガリ書けるようになるまで絶対に真似するんじゃないぞ!

876 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 20:59:49.32 ID:xmg5RhiV.net
ライブラリ作るほうが楽しい

877 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 21:24:26.17 ID:ht1CXKxj.net
車輪の再発明はしないとか言ってるけど、ライブラリ作らないやつの技術力は総じて低いしな

878 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 22:34:29.96 ID:ZiMlwiS0.net
おじさんはいつも即売会で一旦真っ白な灰になって意欲が回復したら
しょぼしょぼとリファクタリングだなぁ…そのサイクルを繰り返す内に
ライブラリやら何やらが自然と充実していったよ

凡人だから知見の獲得は経験の積み重ねによるところが大なんだよねぇ

879 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 22:37:32.08 ID:8y/GDHu5.net
しかしむやみに作るとscanfの二の舞に
あのくらいの代物詰め込んだライブラリを作るなら他人の作った物使って下さい、頼むから

元々多くの人に使われる予定がなかったからなのか、
超がつくくらい初期の関数のせいなのか、あの関数欠陥が多すぎ
一体何に使う予定だったんだろうか?

880 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 23:06:20.95 ID:A651+XDE.net
>>878
ゲーム売ってるんだ。
すごい。
自分の作ったゲームをプレイしてもらうのって、やっぱ即売会がいいの?
ネットでそういう場とかないのかな?
最近だと、ニコニコの自作ゲームコンテストみたいなのかな?

881 :名無しさん@そうだ選挙に行こう:2014/12/13(土) 23:31:59.05 ID:MCAEResE.net
>>880
DLSiteとかDMMとか、いくらでもあるが?まあエロや萌えに偏ってるきらいはあるが

882 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 02:35:05.98 ID:9YbZbvSi.net
scanf詳しく

883 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 09:49:32.25 ID:BC24ajZK.net
呼び出すだけでコマンドラインでインタラクティブ いやっほぅ! の優れものだぜ
元々プロ中のプロしか使わない前提だけどな

前提をひっくり返すなら中級者以下がCを使うこと自体がおかしい

884 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 11:18:28.43 ID:V/uzlPBv.net
scanfは超初学の頃に学んだとき以外触った記憶がないな
コマンドラインでインタラクティブなんてシェルで十分だし

885 :名無しさん@そうだ選挙に行こう:2014/12/14(日) 15:09:32.61 ID:L+QkNmy7.net
>>880
おじさんは古型なので流行りの頒布方法とかよくわからないけど
言いたかった事は、凡人なら頒布(他者に晒すor他者の評価を聞く
過程)を伴う経験のサイクルは大切だということ。PDCA、反復型

身近な友人同士でも即売会でも何でもいいと思うよ

886 :名前は開発中のものです。:2014/12/17(水) 07:39:05.49 ID:AgN/4Z5H.net
UnityってNetworkクラスとかNetworkViewクラスとかあるけど、あれ使うとMMOとか作れるの?

887 :名前は開発中のものです。:2014/12/17(水) 09:32:33.84 ID:4MvBwvFG.net
Muchi Muchi Oppaiか、もちろんだ

888 :名前は開発中のものです。:2014/12/17(水) 10:25:45.45 ID:/fBBXLJf.net
スレチ

889 :名前は開発中のものです。:2014/12/17(水) 12:10:44.24 ID:H3GRnYo+.net
社員乙

890 :名前は開発中のものです。:2014/12/20(土) 19:07:18.57 ID:Chph+5fV.net
スタックを使うメリットとヒープを使うメリットって何?

891 :名前は開発中のものです。:2014/12/20(土) 20:02:00.84 ID:keBzJKTR.net
この処理ではこっちを使う、この処理ではあっちを使う…って、
ほぼ自動的に決まるから、あんまりメリット/デメリットを意識することって無いと思う。

892 :名前は開発中のものです。:2014/12/20(土) 21:32:50.60 ID:hNo8GLbS.net
開放忘れを気にしなくていいかどうかくらいじゃないの?
ただスタックはあくまで一時的なものって意味合いが強くて、
容量制限があるからあんまりでっかいものをガンガン作れないってのと、
あとCPUキャッシュ的に有利ってのがあるけど、
まあ>>891の言うように実際使うときははあんまりメリット・デメリットを意識することも無いと思う

893 :名前は開発中のものです。:2014/12/21(日) 03:38:59.26 ID:tJq5gWK6.net
スタック
 ・レジスタの値を書き換えるだけでメモリ確保されたことになるので比較的速い
 ・変数のスコープが抜けた時に自動的に解放される
ヒープ
 ・スタックには確保できない大きな領域を使える
 ・確保するサイズを実行時に動的に決定できる(スタックでもできなくはないけど)
 ・スコープを跨いだ寿命の長いメモリ領域として使用できる

あとなんかあるかな

894 :名前は開発中のものです。:2014/12/21(日) 11:16:24.87 ID:UoMqn2et.net
スタックとヒープってなんだ?
調べてみたら自動変数がスタックでnew演算子を使うのがヒープって書いてあるけどあってるの?

895 :名前は開発中のものです。:2014/12/21(日) 11:18:03.73 ID:cF9cgol+.net
QtのクラスはRAIIの考え方に基づいていて
メモリ解放が殆ど自動化されているから
ヒープ確保でも単純ミスでメモリリークすると言う事が少ない

896 :名前は開発中のものです。:2014/12/21(日) 11:43:00.73 ID:UoMqn2et.net
Javaみたいに後でまとめてメモリ開放するでもなく、
参照が0になったらその場で開放してくれる言語ってないの?
スマポ利用するとかじゃなくて言語レベルで。VM無いと無理なのか?

897 :名前は開発中のものです。:2014/12/21(日) 12:12:25.01 ID:ImGMMbuW.net
C#

898 :名前は開発中のものです。:2014/12/21(日) 12:18:34.78 ID:cF9cgol+.net
なぜそこまでGCを嫌う?
最近のVMのGCはかなりうまくやってくれていると思うけど

>>897
(゚Д゚)ハァ?.NETはGCするだろ

899 :名前は開発中のものです。:2014/12/21(日) 12:20:14.63 ID:xV1M/iBe.net
>>896
swift
ARC有効にしたObjective-C

参照カウントだけだと弱参照するところをどうやっても意識する事になるから流行らないんだろうよ。中途半端だから。

900 :名前は開発中のものです。:2014/12/21(日) 12:57:51.36 ID:IwHuX+Tw.net
>>899
swiftは今っぽい構文なだけで、その辺りは15年前レベルだよな。

参照カウント + 循環参照用のGCはスクリプト言語ならあるな。 PythonとかSquirrelとか。
クロージャをサポートすると、循環を避けるのは難しい。

901 :名前は開発中のものです。:2014/12/21(日) 14:04:19.84 ID:tJq5gWK6.net
http://seesaawiki.jp/w/author_nari/d/GC
以前どっかで教えてもらったGCの各アルゴリズム(とそれを実装してる主な言語)をまとめてるサイト
結構勉強になった

見ていて、C++上で既存のデータ構造との親和性を保ちながら実装するのは無理そうだなーとも感じた

902 :名前は開発中のものです。:2014/12/21(日) 14:05:13.03 ID:tJq5gWK6.net
あ、ちょっと訂正
× 実装するのは無理そうだなーとも感じた
○ 実装するのは俺には無理そうだなーとも感じた

903 :名前は開発中のものです。:2014/12/21(日) 17:21:30.42 ID:3dyKCo+m.net
ガベコレって使いづらい印象付きすぎちゃったもん

904 :名前は開発中のものです。:2014/12/23(火) 01:05:19.57 ID:UuPEmr1n.net
バカにはそういう印象付いちゃったよね^^;
しかもバカって一度持った印象を絶対に改めないから…

905 :名前は開発中のものです。:2014/12/23(火) 20:19:18.60 ID:y5yR41zs.net
デストラクタで十分

906 :名前は開発中のものです。:2014/12/23(火) 22:15:26.87 ID:I+Smn/JJ.net
デストラクタ(ファイナライザ)はリソースを解放するもので
いつデストラクタを呼ぶかを自動化するのがGCなんだよなぁ

907 :名前は開発中のものです。:2014/12/23(火) 22:25:27.90 ID:IjLiTo3j.net
shared_ptrが標準化され、RAIIが一般的になった昨今、
ガベコレの意義が分からない。

908 :名前は開発中のものです。:2014/12/23(火) 23:15:42.17 ID:PQqq+vmb.net
スレッド使ってたら生のデストラクタは使えないし、
sharedは循環参照に気を使わないといけないのがなぁ

909 :名前は開発中のものです。:2014/12/24(水) 04:46:42.87 ID:INaba3Bc.net
生のデストラクタってなんぞ…

910 :名前は開発中のものです。:2014/12/24(水) 09:59:07.80 ID:+KNBOnw3.net
おそらく「スタック上には確保できない」って言いたいんだろう。
スコープを抜けた後も別のスレッドで使われるから。

911 :名前は開発中のものです。:2014/12/24(水) 19:08:44.28 ID:JqKQyI9r.net
GC「後で掃除しときますんで」
ぼく「これもやっといて」
GC「あ、すいません、今掃除してるんで」
ぼく「今すぐ処理してほしいんだけど」
GC「あと20分ぐらい待ってください」
ぼく「は?処理できない・・・」

こんな印象

912 :名前は開発中のものです。:2014/12/24(水) 23:09:56.90 ID:mC2vVuxE.net
世代別GCなめんな

913 :名前は開発中のものです。:2014/12/25(木) 00:07:59.44 ID:GYUw7kdq.net
>>910
RAIIと関係なくね?流れ的にRAIIでは対応出来ないケースを挙げたように読めるんだけど。

914 :名前は開発中のものです。:2014/12/25(木) 00:11:13.27 ID:MJlq1Aj4.net
「生のデストラクタ」なんて謎の用語を使うようなやつが、「流れ」を読めていると思うのか?

915 :908:2014/12/25(木) 00:51:14.98 ID:0+lNtng/.net
>>910
ちょっと違う
スコープを抜けたときに普通にデストラクタが呼ばれるものを「生」と、
スマートポインタ等で使う工夫したデストラクタと区別するために言ってみた

>>914
生のポインタとスマポがわかるなら適当に空気嫁や

916 :名前は開発中のものです。:2014/12/25(木) 01:24:40.70 ID:C10OwjTO.net
いや、本人以外理解できてないって事は、言葉選びを間違ってるって事なんだから、読み手に責任転嫁すんなって。

917 :名前は開発中のものです。:2014/12/25(木) 01:26:24.11 ID:0+lNtng/.net
正直スマンかった

918 :名前は開発中のものです。:2014/12/25(木) 02:39:55.48 ID:+bLp0IG7.net
結局ちょっと手を加えるだけで簡単にメモリ解放ができるデストラクタ便利

919 :名前は開発中のものです。:2014/12/25(木) 06:37:13.40 ID:GYUw7kdq.net
>>915
その説明でも意味わかんねえんだけど?
スマートポインタ等で使う工夫したデストラクタ?
スマートポインタのデストラクタの事?
それとスレッドがどう関係してくるんだ?

920 :名前は開発中のものです。:2014/12/25(木) 07:27:27.19 ID:lfp6OMz3.net
>>911
GCって掃除して!って言えば掃除してくれるよ?
問題は、掃除してくれと言える人が少ない事とか、
捨てるべきでないものまで捨てちゃう事かと

ヒープ上の参照は無視して掃除するんだよなぁ……

921 :名前は開発中のものです。:2014/12/25(木) 08:08:39.90 ID:MJlq1Aj4.net
>>920
質の悪いGCを使っているか、単に使い方をミスってるだろ

922 :名前は開発中のものです。:2014/12/25(木) 08:15:02.30 ID:MJlq1Aj4.net
>>915
ちょっと違う じゃねーよ
確保する場所がスタック上かヒープ上かの違いだけじゃねーか

923 :名前は開発中のものです。:2014/12/25(木) 08:54:43.93 ID:wubB5pdO.net
>>921
GCって最初は親切だけど、結局面倒臭いものなんだね
メモリ管理をする手間は変わらないじゃん

924 :名前は開発中のものです。:2014/12/25(木) 10:29:27.96 ID:Y3U3uktg.net
GCで最も困るのはメモリ解放時のStop the Worldだが
v8は少ないと思う

925 :名前は開発中のものです。:2014/12/25(木) 12:54:07.39 ID:MhE4palG.net
どっちがいいなんてアプリケーションによるんじゃね?

926 :名前は開発中のものです。:2014/12/25(木) 14:31:05.41 ID:+bLp0IG7.net
速度重視のゲーム開発でGCなんて重い物動かす余裕はないね
結構色々なゲームで使うA*だけでもそれなりに食うってのに

927 :名前は開発中のものです。:2014/12/25(木) 15:29:01.01 ID:ZzsGRtB9.net
使うタイミングと量を間違えなければ、特に問題にならない気がするけどなあ

928 :名前は開発中のものです。:2014/12/25(木) 16:21:19.48 ID:qeWu8Kkf.net
メディエイターパターンでshared_ptr使った場合ってメモリリークするの?

929 :名前は開発中のものです。:2014/12/25(木) 21:11:54.62 ID:ICmaagKn.net
>>928
ん、学校の宿題?違うなら以下の逆質問に答えてみてくれないか?

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

mediator使ってAを招いてメモリリークさせる男の人ってどう思う?

930 :名前は開発中のものです。:2014/12/25(木) 21:30:48.42 ID:0+lNtng/.net
>>922
違うわ
普通はやらんがスタック上でも別にスレッドで使えるわ
確保する場所の話をしてるんじゃねぇ
デストラクタを呼んだ時の振舞の違いを言っとるんだ

931 :名前は開発中のものです。:2014/12/25(木) 21:47:40.02 ID:MJlq1Aj4.net
>>930
「デストラクタが呼ばれ方」の話だったはずが、いつの間にか「呼んだ時の振舞」に摩り替わっている。
具体例まで挙げないと、君の話は他人には理解できないぞ。

932 :名前は開発中のものです。:2014/12/25(木) 22:18:25.00 ID:rdtwM2Em.net
そして呼んだ時の振る舞いって話だったとしてもイミフメー
そもそも配置newしないかぎり自分でデストラクタを呼ばないし。どんどん謎な方向へ。

933 :名前は開発中のものです。:2014/12/25(木) 22:24:10.39 ID:0+lNtng/.net
生のデストラクタを呼ぶってのは俺の中じゃ、単にdelete xのこと
スレッド使ってたら↑みたいなのは管理が面倒なので使えないっしょ。それだけの話

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

そもそも深い話でも続けるような内容でも何でもないだが

934 :名前は開発中のものです。:2014/12/25(木) 22:27:00.95 ID:0+lNtng/.net
ちなみに>>908>>905宛て

935 :名前は開発中のものです。:2014/12/26(金) 11:43:36.55 ID:IXxiiBMK.net
よくわかんないけど「手動でデストラクタを呼ぶ」じゃダメだったん?

936 :名前は開発中のものです。:2014/12/26(金) 16:51:22.54 ID:xlNeQ6wG.net
自動化の権化プログラムを扱う人にとって自動化はロマン
特に多くの人がつまづく面倒くさい処理を自動でやってくれるって素敵やん?
解放処理を描かずに済む分コードも減るし、初心者やうっかりさんにやさしいし
世の中にはそういうできる限り完全自動にこだわる人もいるのです

細かい個別の事案にまで高速に対処できる高い能力を持ったオートデストラクタなんて、
それこそマイクロソフト並の巨大企業が本腰入れてデータ集めないと完成まで何年かかるか分からないレベル
消すには消せるが処理速度に影響を与えて邪魔で使えなかったりすればゴミだし

937 :名前は開発中のものです。:2014/12/26(金) 18:51:58.22 ID:9MuNlFH5.net
演算能力が頭打ちになりそうな昨今、プログラマが殴られるのが規定路線。
自分で何とかしろ、ってこと。
RAIIで十分じゃない。

938 :名前は開発中のものです。:2014/12/28(日) 12:00:32.40 ID:DVHfXhJL.net
クラスのポインタ変数をdeleteした後、
そのポインタ変数にNULLを入れて他の処理でNULLチェックをしてぬるぽ回避してるんですが、
逆に言えばdeleteした後NULLを入れてないとぬるぽ回避できないということで、
一般的に職業プログラマではどういうふうにdeleteした変数を識別してるんでしょうか?

939 :名前は開発中のものです。:2014/12/28(日) 12:24:23.36 ID:5FK2L+6G.net
生ポインタよりもスマートポインタを使うのが一般的じゃねーの

940 :名前は開発中のものです。:2014/12/28(日) 13:58:25.18 ID:dAYPhj1N.net
生ポインタの場合
#define SAFE_RELEASE(p) { delete p; p = NULL; }
みたいなマクロ使ってるのを見たことある

俺の趣味プログラミングだとshared_ptrやunique_ptr使ってる
boolへの型変換が定義されてるから普通のポインタみたいに
 if (p) { /* スマートポインタが有効だった時の処理 */ }
とかできるし

941 :名前は開発中のものです。:2014/12/28(日) 14:54:46.81 ID:DVHfXhJL.net
みんなスマポなんですか
まぁ生ポインタと同じように扱えるならそっちのほうがいい感じですか
代入で参照カウントが増えるのはオペレーターとかいうやつですか

942 :名前は開発中のものです。:2014/12/28(日) 18:56:20.33 ID:uPxHRIHV.net
俺はあんまりスマポは使わないな
ちょっと作ったらテストしてリークしてたらメッセージでるし、
deleteのタイミングが難しい場合ぐらいしかスマポ使わないよ。
ポインタ変数なんか、ほとんどの場合どっかのクラスのメンバーに
なってるからデストラクタでdeleteするようにしてるし

943 :名前は開発中のものです。:2014/12/28(日) 20:49:21.58 ID:KLVWt4ts.net
マウスカーソルを対象の位置に置いてマウスホイールで対象にズームするような機能をつけたいのですが
どのように実装すれば良いでしょうか
Siv3Dを使っています

944 :名前は開発中のものです。:2014/12/28(日) 20:55:05.01 ID:ToxqMv2l.net
素朴な疑問なんだけど、ワープロやグラフィックソフトのオブジェクトと違って
ゲーム中に出現するキャラクタの数は大体決め打ちできるんじゃないの。

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

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

もしかしたら全然違う用途の話かも知れないけど。

945 :名前は開発中のものです。:2014/12/28(日) 20:57:03.11 ID:R8bFfUbq.net
FlyWeightパターンとかもある

946 :名前は開発中のものです。:2014/12/28(日) 21:15:10.93 ID:vMYsGefx.net
>>944
動的メモリ確保はパフォーマンスへの影響が大きいので、
可能な限りは最大出現数分の配列を確保しておく。

947 :名前は開発中のものです。:2014/12/28(日) 22:21:01.45 ID:D5X5qYnm.net
むしろそんなに重要な物なら絶対に常時必要分確保しないといかんと思うけど
他のジャンルならともかく、敵が出るたびになんだかカクつくSTGなんか嫌だぞ

948 :名前は開発中のものです。:2014/12/29(月) 00:30:37.06 ID:gxX17JP7.net
逆に、例えば「格闘ゲームにおけるキャラクタ選択画面」なんかは
その画面にいる間オブジェクトは一定だろうから >>942 方式で十分だと思う。

そう考えるとゲームの場合、シミュレーションとか特殊なルールでオブジェクト数に
上限を設けたくないとかでなければポインタ制御は簡素に纏める方向でいいと思うんだわ。

949 :名前は開発中のものです。:2014/12/29(月) 00:45:24.09 ID:Ue1eh9PX.net
まぁ、無理にスマポ使う必要はないと思うけど、
スマポを知って感動して以降、newするものやopen/close系のものは余程でない限りはRAIIで書くようにしてたら、
deleteを書くことが(ほぼ)なくなった。
当然、メモリリークもゼロ。

RAIIを知った前後でプログラムの規模・品質が雲泥の差になったわ。

950 :名前は開発中のものです。:2014/12/29(月) 01:07:57.04 ID:0UxFRGu4.net
今は、boostにスマポも入っているだろ

951 :名前は開発中のものです。:2014/12/29(月) 01:44:11.15 ID:32D0f9iV.net
memoryとの違いがわからん

952 :名前は開発中のものです。:2014/12/29(月) 07:13:22.67 ID:aw7mXH6p.net
今最新のVSに入ってるC++も当然11だよな?スマポ余裕で使えるじゃん boost不要

953 :名前は開発中のものです。:2014/12/29(月) 11:06:00.25 ID:UPrXKgd4.net
リークするのはてめえの脳みそだけにしておけ

954 :名前は開発中のものです。:2014/12/29(月) 18:43:53.95 ID:aw7mXH6p.net
うん?現行最新のVSなら3種類の型が使えるだろ?実質2種類だけど
VS以外を使っていたりとかVS標準スマポの仕組みや性能が気に入らないってのは知らない

っつーかな、書き落としはリークじゃなくね

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

やっぱ、自力でやるしか無い?

956 :名前は開発中のものです。:2014/12/30(火) 03:46:28.22 ID:W5CPlMBg.net
>>955
zlib

957 :名前は開発中のものです。:2014/12/30(火) 04:01:26.42 ID:bdHUCtIv.net
バイナリ全部繋げてcueファイルにインデックスいれときゃいんじゃね

958 :名前は開発中のものです。:2014/12/30(火) 08:13:45.13 ID:swhFWkgZ.net
今使うならLZ4かな

959 :名前は開発中のものです。:2014/12/30(火) 09:05:37.93 ID:6MynlDel.net
色々な言語のライブラリあるしBSDだし良さそうやね
圧縮率あって高速ってのは魅力的だわ

960 :名前は開発中のものです。:2014/12/30(火) 09:25:49.71 ID:HpQ+h6E5.net
圧縮済みの画像や音声なら無圧縮形式のほうが良いかもね。
mmapして切り出せばメモリ確保も要らない。

961 :名前は開発中のものです。:2014/12/30(火) 18:48:29.71 ID:UWJ4OXBN.net
mmapのほうがreadより速いという迷信について - kazuhoのメモ置き場
http://d.hatena.ne.jp/kazuhooku/touch/20131010/1381403041

962 :名前は開発中のものです。:2014/12/30(火) 23:03:50.59 ID:HpQ+h6E5.net
誰もCPUキャッシュやディスク先読みのレベルでのmmapの速度の話なんかしてねーよ

963 :名前は開発中のものです。:2014/12/31(水) 10:36:13.73 ID:rJyBxJIf.net
メモリ節約って何だよ
ファイルの内容なんてデコードしたらすぐ捨てるだろ

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

サーバーにおいて複数のプロセスから同じファイルの内容を読み込む時なんかは
読み込み用のバッファが要らなくなるからメモリ節約に繋がるらしいが
殆どのケースで速度が遅くなるだけだから使う理由が無い

964 :名前は開発中のものです。:2015/01/01(木) 16:48:21.14 ID:jkRIISMU.net
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]();
}
}
}

こんな感じでクラスにメンバ関数ポインタの配列を作って実行したいのですが
メンバ関数ポインタの配列の型をどう宣言すれば良いでしょうか

965 :名前は開発中のものです。:2015/01/01(木) 18:08:05.65 ID:cWuPuXeC.net
言語仕様的にどこまで正しいかわからんけど

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;
};

};

966 :名前は開発中のものです。:2015/01/01(木) 18:10:47.53 ID:cWuPuXeC.net
呼び出しはこうな
void Exec( int i ) {
(this->*(m_pFunc[i])) ();
}

967 :名前は開発中のものです。:2015/01/01(木) 18:29:15.58 ID:jkRIISMU.net
>>965-966
ありがとうございます
なるほど*はその位置につけるんですか

968 :名前は開発中のものです。:2015/01/02(金) 17:10:32.59 ID:dGIIjPDH.net
enum class Signals {
RED,
GREEN,
BLUE
}

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

enum classを使って引数を識別したかったのですが次のようなエラーが出ました
error C4430: 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません
どうすればいいのでしょうか

969 :名前は開発中のものです。:2015/01/02(金) 17:16:07.35 ID:nBM88kHl.net
void main を int main に変更

970 :名前は開発中のものです。:2015/01/02(金) 17:47:26.94 ID:dGIIjPDH.net
関係ない所のエラーでしたすみません

971 :名前は開発中のものです。:2015/01/04(日) 15:42:29.73 ID:8cIsCjgM.net
ifstream::read(buff,filesize)で読み込んだ文字列を表示すると
末尾にEOFらしき文字化けした文字があってXML等のパースに失敗するんですが
filesizeを-1してreadしたり、読み込んだchar*の末尾のEOFと思われる要素に\0をいれて回避しているんですが
根本的な解決方法がわかりません

どうしたらいいですか

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

バイナリモードで読めば、たぶんファイルサイズと文字数が一致するはず。
その後の処理が \r\n に対応してないといけないけど。
テキストモードで読みたいなら、istream_iterator を使うのが定番かな。

973 :名前は開発中のものです。:2015/01/05(月) 13:29:36.70 ID:61MXvLfY.net
終端文字の文字数って2文字じゃなかったっけ?

974 :名前は開発中のものです。:2015/01/05(月) 13:52:13.89 ID:+omNtWXl.net
buff全体を0クリアしてreadすればいいだけ
他の方法はgetで一文字づつ読みつつeofチェック
ファイルが全てメモリに置いても問題ないサイズならstd::stringとoperator>>で全部一度に取得
好きなの選べ

975 :名前は開発中のものです。:2015/01/06(火) 11:25:41.33 ID:BevxLkoj.net
http://murakan.cocolog-nifty.com/blog/2009/12/cstreameof-7401.html
なんかeofまで読み込むのはifstreamの仕様らしいですね

976 :名前は開発中のものです。:2015/01/06(火) 18:08:33.09 ID:+D28bBOU.net
そりゃeofまで読まないとどこが終端なのか分からないし…

977 :名前は開発中のものです。:2015/01/07(水) 13:02:30.14 ID:NiXFoaGk.net
横からすいません、質問です。
http://www1.axfc.net/u/3387806
ソフトウェア3DCGライブラリを作っているのですが、
80万ポリゴン/秒(C2D E8400 OC 3.6GHz上&フラットシェーディング&テクスチャマッピングなし)
しか出ません。ソフトウェアレンダリングってこんなものなんですか?

978 :名前は開発中のものです。:2015/01/07(水) 18:26:06.67 ID:PQ5kLSMd.net
何で今時ソフトウェアレンダラー

979 :名前は開発中のものです。:2015/01/07(水) 18:57:47.13 ID:vA0pKoe4.net
>>977
DirectXのリファレンスドライバでメッシュを表示する適当なもの作ってそれと比較してみたら?

980 :名前は開発中のものです。:2015/01/07(水) 20:29:35.89 ID:PQ5kLSMd.net
ソフトウェアレンダラーにしたってMesaとかIrrlichtのソフトウェアレンダラーとかが既にあるのに
車輪の再開発じゃない?

http://en.wikipedia.org/wiki/Mesa_(computer_graphics)#Software_renderer
http://irrlicht.sourceforge.net/features/

981 :名前は開発中のものです。:2015/01/07(水) 22:42:06.11 ID:Wqt7oMn8.net
GT3D_drawpoly_fill_sub()を流し読みしたけど、多角形描画は普通っぽかったし
このプログラム自体は特に速度をどうこうしているものではないようですね。
ちょっと見ただけだけどソースは一部ですよね
SSEとかも使ってないし、マルチスレッドでもないですよね
描画対象はメモリ? に一旦描画している感じなのかな
描画範囲を分割してマルチスレッドにしてはどうですか?

982 :名前は開発中のものです。:2015/01/08(木) 20:42:14.85 ID:Mw182kRW.net
メモリ速いやつに差し替えようぜ

983 :名前は開発中のものです。:2015/01/08(木) 22:06:01.19 ID:7iBzssXL.net
MSの最新技術の粋を集めたWARPに敵うはずがない

984 :名前は開発中のものです。:2015/01/08(木) 22:18:13.29 ID:5+CLNQq0.net
WARPはSIMDも使ってるはずだよね。

985 :名前は開発中のものです。:2015/01/09(金) 13:53:51.10 ID:VWlQDlh6.net
SSE2必須で使える場合SSE4.1まで使ってるとかなんとか

986 :名前は開発中のものです。:2015/01/09(金) 17:34:34.87 ID:Iw10L3cl.net
>>977 です。
ちょっとSSE勉強してみます。
今更ソフトウェアレンダラなのは
自分で作れば最小限の機能になって使いやすいと思ったからです。
自作OSへの転用も簡単ですし。
SSE版は別プロジェクトでやってみます。

987 :名前は開発中のものです。:2015/01/09(金) 17:49:58.46 ID:6dSDlYuJ.net
SSEより完成目指せ。
効率よく使ったとして数%の成績アップだ。体感では違いがないとかなりうる。

988 :名前は開発中のものです。:2015/01/09(金) 18:21:14.91 ID:YwByCpOo.net
>>986
何その理由
普通にOpenGLかDirect3Dで良いじゃん
自作OSってふざけてんの?

989 :名前は開発中のものです。:2015/01/10(土) 06:38:12.95 ID:FMkme2Bg.net
>>986
面白い物好きが来たな
OS作るのがメインでゲーム作りがサブなのか
目指すは究極のマルチプラットフォーム?
あるいは新しい3D環境でも作り出したいのかな?
レイトレーシングという概念を勉強すると、また新しい世界が見えるかも?

990 :名前は開発中のものです。:2015/01/10(土) 10:07:13.00 ID:JC3btUBL.net
自前でできるといいと思うよ。
その後、FPGAに実装したらさらに楽しいと思う。

991 :名前は開発中のものです。:2015/01/10(土) 10:28:58.93 ID:XEF52+tX.net
中身自作するにしてもAPIはOpenGLにあわせたものも作った方が良いと思うけどね。
自作物のパフォーマンスがどれだけ酷いか解るし。

まぁ趣味なんだろうから好きにしたら良いと思うけど。

992 :名前は開発中のものです。:2015/01/11(日) 00:41:53.86 ID:EFs4nj8K.net
き、きっと将来のビル・ゲイツを目指しているんだよ!

オペレーション・システムそのものの開発ときたか
夢がデカすぎて全体像が見えない

993 :名前は開発中のものです。:2015/01/11(日) 00:44:24.46 ID:IZj/cFBq.net
実用性はさておき、自分で一通り作れたら最高に感動できるだろうな。
がんばってくれ。

994 :名前は開発中のものです。:2015/01/11(日) 00:50:41.76 ID:2AMxCLe9.net
お前ら東大の名物科目CPU実験くらいは知っといたほうがいいぞ
986がそうとは思わないがな

995 :名前は開発中のものです。:2015/01/11(日) 06:09:25.57 ID:vPB1OoJW.net
WARPって必要な部分だけソフトウェアで補うとかじゃなくって
全部ソフトウェアになるのか

996 :名前は開発中のものです。:2015/01/11(日) 09:26:23.44 ID:DORzARTJ.net
>>992-993
実はOSの方は既にある程度出来てまして・・・w
「三十日でできる!OS自作入門」のはりぼてOSをもとに作ってます。
ちなみにソフトウェアレンダラに至った経緯は

OS作った

それでゲーム作りたい

でも3dCG使えない

じゃあレンダラ作ろう

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

自作OSの方はSSE未対応なのでlinux/OSX/Windows版のみの特権になるっぽいですね
今日中には移植しようと思ってます!

997 :名前は開発中のものです。:2015/01/11(日) 10:21:27.64 ID:RDQlUyF+.net
次スレ立てたよ

C/C++ゲーム製作総合スレッド Part7 [転載禁止]2ch.net
http://peace.2ch.net/test/read.cgi/gamedev/1420939171/

998 :名前は開発中のものです。:2015/01/11(日) 10:39:34.22 ID:IZj/cFBq.net
>>997
乙〜!

やっぱゲームプログラミングは一番楽しいぜ。

999 :名前は開発中のものです。:2015/01/11(日) 18:55:24.63 ID:9XLW+JE+.net
自作OSとか本人は楽しいんだろうけど

1000 :名前は開発中のものです。:2015/01/11(日) 19:08:48.17 ID:+gxvr94o.net
本人が楽しいなら十分だろ

1001 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1001
246 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200