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

Kazukiの同人3DRPG制作【第一話】

■ このスレッドは過去ログ倉庫に格納されています
0001Kazuki2010/09/10(金) 06:35:05ID:8vGP1TSQ
Kazukiの同人3DRPG制作 公式サイト
ttp://www.kazuki-sendo.com/game/


発展途上中の素人Kazukiを中心として、
DirectX9による3DRPG制作に挑戦します。


開発言語は、C++です。
長く苦しい戦いになると思われますが、
同人ゲーム制作の限界への挑戦が、当企画のテーマでもあります。

2ch当スレを本スレとし、
ニコニコ動画、zoome、mixi、の3コミュメンバー合同で同人3DRPG制作に挑戦します。

※本格的にゲーム制作に協力していただけるメインメンバー様へは、
 ゲーム完成後に平等に利益分配されます。
 (詳細は公式サイトのメンバーページ)
0153名前は開発中のものです。2010/09/13(月) 22:55:26ID:uHGV5Rl5
>>150
列挙体と列挙型の説明をもう少しkwsk
0154名前は開発中のものです。2010/09/13(月) 22:56:48ID:mHW+Bk/O
さっきから「共用体」のこと「共同体」って言い続けてる奴
このまま言い続けたら関節極めんぞ
0155名前は開発中のものです。2010/09/13(月) 22:57:33ID:eE7b0Ftc
>>151
そんな奴しらん!w

眼中にないから、
見向きもしていない。

あとで暇な時に間違えを探しておくよ。

どうせ、簡単な間違いを大きく取り上げて騒いでるだけでしょ?
0156名前は開発中のものです。2010/09/13(月) 22:58:25ID:uHGV5Rl5
>>152
難しすぎて理解できないのですが・・・
0157名前は開発中のものです。2010/09/13(月) 22:59:02ID:eE7b0Ftc
>>154
あらw本当だwwwwwwwwww

自分で言ってて吹いたww
0158名前は開発中のものです。2010/09/13(月) 23:00:36ID:0mVb50Li
>>145
いや真剣に聞いてるんでどれだけ説明が難しくなってもいいし、
ぶっちゃけ抽象的でもいいんだけどできればネトゲのFF14あげてるんだからそれで例えてくれw
>列挙体を使って宣言しておいて、
>構造体の中で、共同体を呼び出して使う。
例えば戦闘シーンに入るごとに敵グラフィックを呼び出すとする。
その敵グラフィックのメモリには共用体を使うってこと?
それとも似たような敵でサイズが同じ奴(スライムとスライムベスとか)に適用ってこと?
>>149
それは釣り師のよくやる手だよ
俺も昔はよくやったな
突っ込みどころが多いとスルーしやすいんだよね
>>151
俺からも>>151の質問に答えてあげて欲しい
無いなら無い、というべき
レスがないのは無能の証拠になってしまう
0159名前は開発中のものです。2010/09/13(月) 23:04:16ID:Bp0mHrKP
http://www.kazuki-sendo.com/
0160名前は開発中のものです。2010/09/13(月) 23:07:49ID:Kh1yuN/2
俺も>>142は結構クリティカルな説明ミスだと思うんだが。
0161名前は開発中のものです。2010/09/13(月) 23:08:33ID:uHGV5Rl5
>>158
>>149を見て、なるほどって思わないと共用体そのものを理解していない
0162名前は開発中のものです。2010/09/13(月) 23:12:36ID:eE7b0Ftc
>>158
スライムの図形を列挙体で定義しておき、
もっと具体的な情報を構造体で定義する。

それを共用体を使って統一的に扱い、
例えば色を赤にしてスライムベスを作る。

元の図形は一つで済む。


こんなところか。
0163名前は開発中のものです。2010/09/13(月) 23:15:38ID:rfZsSMdB
今回もよろしくお願いします。

・int型の宣言で確保されるのが1byte

・int a,b; 確保しただけなので、各領域には何も入ってません。
基本的には何が入っているか解らないはず。

・b+10 この時点でbの領域に10が代入
→+は代入演算子じゃ無いのでbには入らない
b+10に演算結果が埋め込まれる感じ
→何が入っているか解らないので10になるとは限らない。
→bを初期化してないのでコンパイルエラーか警告もしくはエラー落ち。

・aの領域もbの領域も存在しないためエラー
ブロックの前で宣言してるから領域はある。
初期化してないからエラーか警告か。

今回クリティカル気になったのはこれくらいです。
コンパイラーやマシンによって違う部分もあるけど
メモリー領域の話をするなら初期化は最重要だと思います。
0164名前は開発中のものです。2010/09/13(月) 23:20:00ID:eE7b0Ftc
>>163
え??

何言ってるの?
0165名前は開発中のものです。2010/09/13(月) 23:20:56ID:rfZsSMdB
ごめんなさい
0166名前は開発中のものです。2010/09/13(月) 23:25:15ID:ThQtFFC1
test
0167名前は開発中のものです。2010/09/13(月) 23:26:16ID:eD2Excdd
>>163
気がつくまで教えないでおこうと思ったが乙。
多分bの初期化エラーでコンパイル通らないと思う。

なんだかなぁ。

C++とかの解説って本当に出来るのかよって思うよ。
生半可な知識で初心者に教えてもこんがらがって初心者が可愛そうだわ。
0168名前は開発中のものです。2010/09/13(月) 23:26:43ID:ThQtFFC1
うひょ、規制あけたぜえ
期待してるぜえ
0169名前は開発中のものです。2010/09/13(月) 23:27:01ID:xFsIn/+a
>>164
え??

わからないの?
0170名前は開発中のものです。2010/09/13(月) 23:28:21ID:uHGV5Rl5
空っぽってなんだよwww
0171名前は開発中のものです。2010/09/13(月) 23:28:42ID:0mVb50Li
>>161
いや、理屈では理解してるよ。同じメモリ領域を色んな変数で使うんでしょ
やさしいC++のunionnの項目でも読んだ。あんまり使わないからピンと来ないのかな
>>162
なるほど!特に3Dで動的に作成するならとても有効だろう。特にグラボのチップセット内部ではかなり使ってそうな感じは伝わてきた
ところでスライムの画像って3Dで事前に用意してメモリに格納しておくとおもってたんだけど、ゲームでは動的に作成するの?

・予め作成してある3Dデータを格納するメモリ
と、
・3Dデータを動的に作成グラボの値段
を天秤にかけると、前者のほうが圧倒的に安い、つまり商業的に敷居が低いと思うんだけど
そこはどうなの。もちろんメモリの扱いもうまく、グラボにも負担をかけないのが理想だけど
開発の経費が決まってるとして、ね
0172名前は開発中のものです。2010/09/13(月) 23:29:59ID:vw14tCDd
絵描きに色が違うと言っても、色調が合っていれば良いと言い張る。

プログラムコードは違う、
1bit違っていてもコードは停止する、bugを探し出すのに数ヶ月を要することもある。
0173名前は開発中のものです。2010/09/13(月) 23:31:25ID:eD2Excdd
>>171
を読んでて、ふとコンストラクタの初期化リストでリソース読み込んでるバカが居たのを思い出した。
0174名前は開発中のものです。2010/09/13(月) 23:31:55ID:eE7b0Ftc
>>169
あ・・・・。


しまった。
0175名前は開発中のものです。2010/09/13(月) 23:33:01ID:eD2Excdd
>>1ってさ、デザインパターンとか大好き?
0176名前は開発中のものです。2010/09/13(月) 23:33:11ID:eE7b0Ftc
初期化を忘れてた・・w

うわwwどうしよう・・。
0177名前は開発中のものです。2010/09/13(月) 23:35:49ID:eE7b0Ftc
いや!

でもちょっと待て。

問題はそこじゃないよね?

あの解説のメインは、
C言語の計算の考え方についての解説なので、
これでいいじゃない。


って言い訳になるか・・ww

あとで修正しておこう。
0178名前は開発中のものです。2010/09/13(月) 23:36:40ID:aVfTnKWR
>>176
気づいたついでに>>142も修正してきたら
0179名前は開発中のものです。2010/09/13(月) 23:38:23ID:Kh1yuN/2
間違いは初期化だけじゃねーからw
0180名前は開発中のものです。2010/09/13(月) 23:38:36ID:0mVb50Li
>>173
ごめんなさい無学なので本気でわかりません
殺す気で教えて頂けないでしょうか
0181名前は開発中のものです。2010/09/13(月) 23:41:27ID:ThQtFFC1
Kazuki先生の解説だとこうなる

int a,b;
a=50*(b+10);

printf("%d",b);

結果----------------------------------------------------------
10
0182名前は開発中のものです。2010/09/13(月) 23:41:59ID:uHGV5Rl5
>>176
> この時点では、領域を確保しただけなので、各領域には何も入っていません。
忘れてたとか言ってる割には意図的に初期化してないじゃんw
つか何も入ってないってどういうことだよw
0183名前は開発中のものです。2010/09/13(月) 23:42:18ID:nTSsO+Fi
笑いながら読ませてもらっていたが、プリプロセッサで定義する定数と、
enumで定義する定数を一緒にすんな馬鹿たれ

気づいてしまったが教えるんじゃなくて、
赤ペンで教えてもらおうとする巧妙なワナだろw
0184名前は開発中のものです。2010/09/13(月) 23:43:27ID:eE7b0Ftc
面倒だから記事を非公開にして、
明日にでも修正しておくよ。

ご指摘ありがとう。
マジで見落としてた・・。

>>178
うん。
>>142の方が致命的ですw
0185名前は開発中のものです。2010/09/13(月) 23:43:42ID:vw14tCDd
>巧妙なワナだろw

俺も、そう思う
0186名前は開発中のものです。2010/09/13(月) 23:44:04ID:0mVb50Li
初期化とか岩せんなよ恥ずかしい・・って言ってVBA厨乙って流れなら笑いとれたのに
0187名前は開発中のものです。2010/09/13(月) 23:46:35ID:xFsIn/+a
>>177
そうだな
問題はそこじゃないな
プログラム的にはあの式でbの中味は変わらないもんな

規約の緩いコンパイラならそのまま通るだろうし
暗黙的に0に初期化されてるなら、問題無く実行されるだろうな

んで、どこを修正するかわかったかい?
0188名前は開発中のものです。2010/09/13(月) 23:47:16ID:eE7b0Ftc
>>183
いやいや。
その時点は別にいいだろう。

領域を確保しただけだから、
領域の中身は空っぽだよ。

その後に初期化するわけだろ?

1.領域確保
2.初期化
3.計算

これが基本じゃないのか?
0189名前は開発中のものです。2010/09/13(月) 23:47:43ID:ZKZVi0D6
>>167
>C++とかの解説って本当に出来るのかよって思うよ。
>生半可な知識で初心者に教えてもこんがらがって初心者が可愛そうだわ。
はなっから教えてあげようなんてつもりは無いだろうよ
専門知識を並べて解説して、プログラム初心者を騙して、自分が如何に優秀で才能持った人間であるかを示そうとしてるんだよ
この人根っからの嘘つきだから、嘘やデタラメでもいいから周りからの信頼を得たい訳なのです
何しろ、お金の話もしているし本格的に商売も計画している、目標1万本以上という事で
だから自分は能力不足だってはっきり言えないんだよ
本当の事言ったら協力者得られないし、どうやってお金を稼げるのか
0190名前は開発中のものです。2010/09/13(月) 23:47:53ID:mHW+Bk/O
明らかに人に教えるレベルにないだろ
もう2〜3年してから公開したほうがいいんじゃね?
いまの注意力と理解力で何かを作るってのが無謀じゃね?
一旦使えないって印象与えるとみんな寄り付かなくなるよ

とりあえず一通りやってんだよ!って気合はわかるけど
経験やら時間やらが圧倒的に足りてないだろ
0191名前は開発中のものです。2010/09/13(月) 23:48:58ID:eE7b0Ftc
訂正:
>>188は、>>182への返信
0192名前は開発中のものです。2010/09/13(月) 23:49:00ID:eD2Excdd
>>180
いや、あんまり関係無かったりする

小規模〜中規模のゲームならば、ローディングシーンとかで一括で読み込んでしまっても問題無い。
場合によってはローディングは分けたりする(初回のロードが長すぎたりする時)
↑ここらへん人による。

で、俺が言ったのは
例えばスライムクラスでスライムのテクスチャだったりモデルを使う時に
コンストラクタでテクスチャ(モデル)の読み込みを行ってたアホが居た事を思い出したって話。

当たり前だけどスライムを生成する時(要するにnew suraimu();とかした時)
に、初期化リスト内でリソースが読み込まれる。(小規模なロードが挟まるって事)

スライムとかのオブジェクトは沢山生成してナンボ(ゲームによるが)なので
100体生成すると、同じリソースをオブジェクト毎に読み込んでいる減少が起こるからマズイってこと。(めちゃ重くなる)
0193名前は開発中のものです。2010/09/13(月) 23:50:02ID:uHGV5Rl5
よくこんな知識でDXライブラリは認めないとか言えるねw
0194名前は開発中のものです。2010/09/13(月) 23:57:16ID:ThQtFFC1
確保したのに領域が空っぽとか何もないとかどういうことなんだぜ
0195名前は開発中のものです。2010/09/13(月) 23:57:20ID:eE7b0Ftc
修正面倒だな・・。

あれ画像で作ってるから、
全部作り直さないといけない。

b=0を入れるだけなんだけど・・。
0196名前は開発中のものです。2010/09/13(月) 23:58:05ID:0mVb50Li
>>192
なるほど。ロードは動画・複数の音楽とか挟んだら大変でしょうね

ちなみにそれはnewじゃなければどう解決するべきでしょうか?
一度弾幕ゲームを作ったことがあるのですが、その時、まず弾の構造体を1000-10000ぐらい用意しておき、
loopで 出現/非出現 判定から軌道計算、接触判定全てを行っていました

やはりC++では関数ポインタ、C#でデリゲートですか?
一度も使えたことがありません・・・
0197名前は開発中のものです。2010/09/13(月) 23:58:07ID:uHGV5Rl5
>>188
なるほど、未初期化の変数は空っぽになるんですね

空っぽってなんですか?www
0198名前は開発中のものです。2010/09/14(火) 00:06:47ID:pI9OYyYQ
>>197
うっせーなw
0199名前は開発中のものです。2010/09/14(火) 00:08:22ID:YCDdRPmA
>>196
そこらへん俺のやり方ではC++にあるSTLのlistを使って管理している。
敵のコンテナと味方(玉とか)のコンテナに分けて
そいつらをイテレーターでブン回して全判定かな。

オブジェクトの削除とかはdeleteとかよりも準標準ライブラリのboostのスマートポインタをオススメする。

弾幕ゲーだったら玉一つ一つをオブジェクトとして考えて、一つ一つに動きを付けると良い。
玉の生成時にスピードとか角度とかをコンストラクタから渡して、それを元に動くみたいな。

玉が生成されてから、玉が消えたり、敵に当たったりするまでを玉クラスで完結するのが一番ベスト。


まぁ作り方が楽でも面倒でも、C++だろうとCだろうと動けばいいんだよ。
細かい事気にしたらキリが無いから、個人製作ならばあんまり設計とかコードに凝らないほうが良い。
0200名前は開発中のものです。2010/09/14(火) 00:12:12ID:4HJgK4wQ
マジレスするだけ無駄だぞお前ら
今まで見てきたから分かる
完全に無駄
0201名前は開発中のものです。2010/09/14(火) 00:19:51ID:79ii0GBv
>>199
ありがとうございます
僕も>ならばあんまり設計とかコードに凝らないほうが良い。
派だったのですが、弾幕ゲームって、一つ要素を入れただけでものすごく重くなってしまって、
これは基本を大事にしないと大変なものができるなと思ったんです
>>200
まぁいいんじゃないでしょうか
無駄でも回答することにより自分の記憶がより強固になり、
また、間違った知識なら誰かに突っ込まれる
常に本気で回答するのもいいことだと思いますよ(自分の分野で常にそうしてるので)
0202名前は開発中のものです。2010/09/14(火) 00:33:36ID:pI9OYyYQ
これまでフォトショで解説画像を作っていたけど、
これからは、Visual C++ 2010のエディタ画面をキャプチャーして作ることにしよう。

その方が確実だし楽だ。。

ついでに実行結果もキャプチャーして載せれば
完璧だろう。


ああ・・。今日はもう疲れた。

少しネトゲで狩りにでも行って
憂さ晴らししてくるw
0203名前は開発中のものです。2010/09/14(火) 00:35:56ID:pI9OYyYQ
今回のミスはマジで凹んだ・・・。

穴があったら入りたいぜ・・・。
0204名前は開発中のものです。2010/09/14(火) 00:36:07ID:hroAEm3n
Kazukiって無職なの?
0205名前は開発中のものです。2010/09/14(火) 00:37:35ID:NJhMEymm
>>201
全力でやるのはいいけど
そこにお前の見栄やら嘘やら、相手の見栄やら嘘やら入ってくるから
おかしくなっちゃうと思うけどね
こうやってやりとりするだけで結構時間とっちゃうし

上げ足とるのに精を出す人間も出てくるし
また、くだらない虚栄心を取り繕うためにお前も妙なレスするし
やっぱり突っ込まれる部分は最小になるようにしろよ
せめて自分で5回は見直してから上げたらどうなの?
回数が無理なら1週間置いてからもう一度読んでみるとか・・・
0206名前は開発中のものです。2010/09/14(火) 00:40:33ID:79ii0GBv
>>205
ちょ、ちょっと待って!俺は自分の専攻してる学問のスレでレスしてるだけだよ
ちなみに理系一般板
ここでは質問してるだけだよ
0207名前は開発中のものです。2010/09/14(火) 00:47:48ID:NJhMEymm
>>206
おお、人違いすまんかった
0208名前は開発中のものです。2010/09/14(火) 00:53:41ID:pI9OYyYQ
>>204
いいや。
無職じゃないよ。

これでもSOHO個人WEBデザイン事務所を一人で経営している。

肩書きはフリーWEBデザイナー。

本来はこっちがメイン。

そもそも、プログラミングを勉強しようとしたキッカケは、
これまで外注に任せていたWEBシステムを自分で作って、
コストを抑えようと思ったのがキッカケ。

だが、ただ単にプログラミングを勉強するだけではつまらないので、
ゲームでも作りながらプログラムを学ぼうと思っていたら、
こっちの方が面白かったので、
ゲームプログラミングがメインになってしまったw

掲示板かブログとか、
そういうWEBシステムを作るのに
DirectXとか、扱わないと思うしw
0209名前は開発中のものです。2010/09/14(火) 05:44:35ID:4HJgK4wQ
要約すると無職です
0210名前は開発中のものです。2010/09/14(火) 09:47:26ID:m5PuDjuc
とりあえず int って 4byte じゃねえの
0211名前は開発中のものです。2010/09/14(火) 09:48:23ID:dA9hCkod
そういやそうだw
0212名前は開発中のものです。2010/09/14(火) 09:51:53ID:QB7AcnS4
指摘はもうやめよう
思う壺だよ
0213名前は開発中のものです。2010/09/14(火) 09:55:45ID:m5PuDjuc
なんだかんだで期待はしている。
俺は3DSTG作ってたけど1ヶ月くらいで飽きてやめちゃったからな・・・。
グラフィックデータが作れないのが痛いわ。
0214名前は開発中のものです。2010/09/14(火) 11:07:23ID:JMWUq/2Y
発展途上中の素人ならこんなもんだろう。
0215名前は開発中のものです。2010/09/14(火) 11:29:19ID:pI9OYyYQ
>>210
そうだったのか。
int型って4バイトだったのか。

さすが2chのゲー製作技術板ですね。

口先だけの馬鹿と違ってよくご存知ですね。
適当なことを言うとすぐに叩かれそうだな。

というか即答で指摘しているところに驚いた。


ちょっと調べてみたけど、
正確にはint型は32ビットです。

値は-2147483648〜2147483647までです。

int a = 2147483647;
int b = a +1;

つまり、こんな感じにaを2147483647で初期化して、
aに1を足すと、-2147483648になって、
オーバフローになる。
0216名前は開発中のものです。2010/09/14(火) 11:36:59ID:pI9OYyYQ
>>209
そうだったのか、
個人業って無職だったのか。
それは知らなかった。。

前から気になっていたんだけど、
教えてくれてありがとう。

てか、ちょっと知識を知ってるからって偉そうにすんなよw

まあ、教えてくれたことには感謝するけどな。
0217名前は開発中のものです。2010/09/14(火) 11:40:19ID:hgp+4eCV
素人を装ってるな。
ワシの目はごまかされない!
0218名前は開発中のものです。2010/09/14(火) 11:44:15ID:QB7AcnS4
intのサイズは環境依存
ほとんどが4byteだけど
H8で組んでた時は2byteだったな
つか、解説するんならこれくらい知っとけw
0219名前は開発中のものです。2010/09/14(火) 11:48:01ID:pI9OYyYQ
ちなみに俺が個人業をやろうと思ったキッカケは、
サラリーマン時代に、
アフェリエイトをしたのがキッカケです。

それまで個人業を難しく考えていたけど、
わりと簡単に稼ぐことができたから。

だったら、WEBデザイナーとして
本格的に個人事業を開業してみようと思い、
知り合いの社長に教えてもらって事務所を立ち上げました。


まあ、最初はほとんど仕事がなくて苦労したけど、
人脈をうまく使って
「仕事回してください。」とか言いまくっていたら、
少し仕事が入って、
また、そこから仕事が入る。

仕事をやればやるほど仕事が入ってきて、
実績がついて、口コミでまた仕事が入ってくる。


しかも、一人でやってるから全部自分の報酬なので
やればやるほど稼げる。
給料なんてサラリーマン時代では、考えられない金額です。

もうサラリーマンには戻れません(^^;

ちなみに俺、FXとかもやってたりする。
0220名前は開発中のものです。2010/09/14(火) 11:59:33ID:pI9OYyYQ
前は個人業でバリバリ稼いでいたけど、
もう、いっぱい稼いでしまったら、
何かやる気がなくなってしまってね。

今では、月に1、2件やる程度です。

個人業な生活ってすごく退屈。。

そりゃ、バリバリ仕事をやっている頃は、
すごく忙しくて、
一ヶ月でどこまで稼げるか挑戦してみたこともあるけど、
たくさん稼いでしまったら、
これ以上稼ぐ気になれなくてね。

サラリーマンと違って、
自宅が職場です。

お茶を出してくれる可愛いOLさんもいなければ、
同僚も上司もいない・・。

俺はいつも独り・・。

まあ、そんなわけだから、
こんな真昼間から2chやったりネトゲ三昧の生活を送っております。

同人ゲームが完成して、
そこそこ売れたら、
別会社を作ってゲーム制作事業をやってみたいとか真剣に考えてるよ。
0221名前は開発中のものです。2010/09/14(火) 12:06:40ID:pI9OYyYQ
俺の銀行通帳みせてやろうか?

今度オフ会でも開いて見せてあげるよ。

多分、その金額に誰もが驚くと思う。
0222名前は開発中のものです。2010/09/14(火) 12:07:50ID:FW6HEKO5
>正確にはint型は32ビットです。
正確にも4Byteだろw
4[Byte]*8[Bit]=32[Bit]だぜ?
こんな計算も出来んのか

まぁ>>218が正解なんだけどな

何でこう知ったかぶろうとするかなー
0223名前は開発中のものです。2010/09/14(火) 12:16:35ID:BvU3tXWR
64bit環境なら8バイトだぜ
ちなみに昔作った奴移植するのどうするか途方にくれてるぜ
0224名前は開発中のものです。2010/09/14(火) 12:29:22ID:XpWGSie1
気になったのでちょっとだけ補足。

C言語の規格としてはint型のサイズは処理系依存ってことになっていますが、最低限保証されているのは2byteです。
32bitの処理系はほぼ4byteになるようですが、組み込み系ではまだまだ2byteでまかり通っているところもあるようです。

intで宣言した実体が1byteになるとしたら、それは少なくともC99の仕様に則っているC言語ではありませんね。
0225名前は開発中のものです。2010/09/14(火) 13:55:46ID:WJ31r0pz
>>215
こんなことで関心するとは、kazukiは本当にコンピュータやプログラミングに関して無能なんだな
1byteなら0〜255のような256通りの数値しか格納できない、1000や10000などの値を使用できない
1byte,1bitの意味が理解できないとかC言語プログラミング学んでて恥ずかしいレベルだ
0226名前は開発中のものです。2010/09/14(火) 14:38:45ID:DvriFlDD
昔はアセンブラを使わなきゃゲームを作れなかったから
C言語のそのへんはすぐに理解できたのに。

戻り値とかポインタとか、アセンブラでスタックやインデックスレジスタを知ってたから
一発で理解できた。
0227名前は開発中のものです。2010/09/14(火) 15:38:18ID:XWdrVcFF
修正したの初期化だけじゃんか
普段なら適当なこと言っても困るのは本人だし、突っ込んでる人も遊び半分だからいいけど
言語解説とかは困るのは参考にした初心者の人だからマジで
int main(void){
  int a,b;
  {
    b=0;
    a=50*(b+10);
    printf("%d,",a);
  }
  printf("%d,\n",a);

  return 0;
}
> このようなコードを書いた場合、ローカル変数は関数を抜けた時に解放されるため、
> aとbの領域は空っぽの状態にリセットされます。
実行結果が「500,500」になりました。値生きてます。
話の流れ的にここは「関数」というよか「ブロック」じゃないの?

a=50*(b+10);
> 10の変数(数値)をbの領域に代入します。
> この時点では、aの領域は空っぽです。
10は変数なの?+は代入の機能持ってんの?変数bのメモリ領域に10が入ってるけどどうしてくれんのこれ?

あと初期化についてだけど
僕の環境では初期化しないとコンパイルの時に警告 演算に使用とすると強制終了。
でもリリースではコンパイル警告後 演算は通った。
初期化しない状態では2015115236が入ってた。
偶然でた値なのか決まってる値なのかは別として、これを値として扱える以上は空っぽではないんじゃないの?

初心者なめすぎじゃね?初心者でもこの程度は気になるほどには賢い人は賢いよ
0228名前は開発中のものです。2010/09/14(火) 16:07:16ID:FW6HEKO5
>>227検証乙

さて、>>1>>142に指摘された点がどこかようやくわかったかな?
あんたの間違いはスコープの理解と変数の寿命だよ
初期化とかよりよっぽど致命的だよね

とりあえずこのソース実行結果どうなると思う?
答えてみなよ

#include <stdio.h>
int main(){
int a,b;
printf("%d %d",a,b);
{
b=0;
a=50*(b+10);
printf("%d %d",a,b);
}
printf("%d %d",a,b);
return 0;
}

あのページの解説の通りに動くとしたら
1行目: 空っぽ 空っぽ
2行目: 500 10
3行目: 空っぽ 空っぽ
になるね
そもそもコンパイルエラーになるっていってるが、
警告は出るかも知らんがエラー無しで通るよな?
0229名前は開発中のものです。2010/09/14(火) 16:26:25ID:6IA8IO5N
>>226

俺は逆に混乱したw

なんでポインタに1加算すると1バイト次のアドレスじゃなくて数バイト先を指すんだよ! とかw
0230名前は開発中のものです。2010/09/14(火) 16:30:05ID:pI9OYyYQ
>>228
いや。それはもういい。

とりあえず、先に進もう。

こんなところでマゴマゴしてたら、
C++の解説がいつになるかわからんw

俺は早く、ゲームプログラミングを解説したいのだ。

なので、現在、構造体の解説を作ってる。
0231名前は開発中のものです。2010/09/14(火) 16:34:02ID:pI9OYyYQ
>>227
コンパイラによって違うんだって。

とりあえず、間違ったソースを組まなければいいだけの話でしょ。


そんな、コンパイラ別に解説してたら日が暮れるってのww
0232名前は開発中のものです。2010/09/14(火) 16:42:01ID:kwiSf8mq
コンパイラごとに違うならなおさら「どのコンパイラでも同じように動作する」ように
説明しないとまずいだろ。

>>230
それはもういいとか言っちゃう自信はどこから来てるんだろうか。

正直説明サイトを作ってくれるのはありがたい。
ただ、致命的な嘘をさも正常なように言い放っちゃってるサイトが
google検索に引っかかるようになったりするとそれはもうテロ行為だよw
0233名前は開発中のものです。2010/09/14(火) 16:42:29ID:XWdrVcFF
>>231
解説なんてやめちまえよwww
0234名前は開発中のものです。2010/09/14(火) 16:47:27ID:FW6HEKO5
>>230
じゃーCの解説せずにゲーム解説からやれば?
てか製作はどうしたの?
ここって解説スレだっけ?

てかなんでゲーム製作に解説が必要なの?
それを2chに晒して何が目的なの?
ゲーム製作しつつ質問あったら解説とかその辺は良いと思うが
今のところゲーム製作の過程がまったくないんだが?
プログラムの勉強からするなら解説する必要なくね?

ぶっちゃけ、今どこまで製作進んでるのか、からの報告で良いよ

ただし、かまってちゃんは簡便な
0235名前は開発中のものです。2010/09/14(火) 16:51:04ID:xtJ1rdKJ
これぐらいのレベルからやり直した方がいい。
http://9cguide.appspot.com/
間違って覚えると後が大変。
0236名前は開発中のものです。2010/09/14(火) 16:53:43ID:RsxN/3Kk
>PS版のドラクエWクラスのRPGぐらいなら作れるようになってるよ。
↑9月7日の発言
>もうミニゲームをいくつか完成させました。
↑9月12日の発言
0237名前は開発中のものです。2010/09/14(火) 16:55:45ID:LRy0+Jlt
ゲームまだぁ?
0238名前は開発中のものです。2010/09/14(火) 16:59:12ID:WJ31r0pz
>>232
嘘でもデタラメでもどうでもいいんだよ
彼の本音は、教えたり解説したりじゃなくてゲーム作って商売することだから
現にゲーム会社設立して本格的に事業やりたいと言っている訳だし
当然、資金や協力者を集めないといけない
それなのに、正直に間違いを認めてたら信頼無くすし誰も協力してくれなくなる
嘘でも自分が優秀な人材であると主張し信頼を得ないとお金儲け出来なくなるでしょ
0239名前は開発中のものです。2010/09/14(火) 16:59:22ID:pI9OYyYQ
>>227
いや。だからね?

誰が初期化しないで使うのよって話です。(ここにいたがw)

初期化しないでソースを組む用途があったら逆に教えてもらいたい。


だから、余計なことは言わないで「空っぽ」と表現しておき、
とにかく、「初期化しないで使ってはいけないんだね」と理解しておけばいい。


あんたの場合だと、
int型を初期化しないで表示したら、
2015115236が表示されました。

じゃあ、2015115236という数値は、
どうして表示されたの?
という解説をしないといけない。

2015115236になった理由と根拠を説明できなければ、
解説できないのか?
0240名前は開発中のものです。2010/09/14(火) 17:03:29ID:pI9OYyYQ
>>237
あんたに作ってもらうよ。

気づいた頃には、
プログラムを知らなかった素人の自分が、
ゲームを作れるようになってる。

そのための解説です。

ゲーム作れるようになりたいんでしょ?


でも、ゲームの内容については自分の創造力で作らないといけない。
これは、プログラミング知識とは別の次元のお話です。
0241名前は開発中のものです。2010/09/14(火) 17:10:41ID:pI9OYyYQ
>>238
俺はゲームが作れる程度の能力者ですw


でも、内容がないからゲームが作れない。

ちょっと矛盾した発言だけど、
つまり、ゲームプログラミングは知ってるけど、
まだゲームは作れません。ということ。


俺が作ったミニゲームとりあえずこういうもの。

EXEファイルを実行させたら、
まず、ウィンドウが表示される。
タイトル画面表示と共に音楽が流れる。

割り当ててある「スタートキー(例えばR)」を押せば、
ゲーム開始!
効果音と共に、タイトル画面が消えて、
ゲームメイン画面が表示。

ここまでは、どのゲームも同じ。

シューティングゲームの場合は、
画面の上から敵がいくつも迫ってきて、
主人公キャラに向かってくる。
主人公キャラは十字キーで動かせる。
主人公キャラに接触すると爆発してGAME OVERが画面に表示され、
スタート画面に戻る。
0242名前は開発中のものです。2010/09/14(火) 17:18:21ID:6IA8IO5N
よちよち歩きの幼児が
「理論上、日本縦断もできますよ。する理由がないのでしませんが」
と言ってるみたいなもんだな。
0243名前は開発中のものです。2010/09/14(火) 17:19:12ID:pI9OYyYQ
RPGの場合は、
スタート画面までは同じで、
そのあと、3Dの街中に3Dポリゴンが登場。

十字キーで移動可能。
マウスでカメラ視点を変えることが出来る。

町人に当たり判定をつけておき、
主人公接触時に「Rキー」を押すと会話が開始。

画面下部にメッセージウィンドウが透明で表示され、
そこに文字(会話内容)が表示される。
会話に続きがあれば、Rキーを押せば、
会話の続きが表示される(ドラクエみたいに)

そして、町の外に出れば、
3Dフィールド画面に切り替わる。

ここで俺はドラクエ風のRPGと、
ゼルダ風のアクションRPGを作った。

ドラクエ風のRPGの場合は、
フィールドには何も表示されていないで、
エンカウントで3D戦闘フィールド表示。

魔法を使ったら、
炎が出たり、雷(サンダー)が使える。
通常攻撃なら、棒(剣)を振るだけ、
画面下部のウインドウには、
「Aは1000ポイントのダメージを受けた!」とかのメッセージが表示。

とりあえず、そんなゲームを作ったよ。
0244名前は開発中のものです。2010/09/14(火) 17:23:07ID:FW6HEKO5
>>227の疑問に答えとこうか
知ってたらごめんね

初期化しなかったときの中身については、C言語の仕様では規定されてなかったはず(うろ覚え
親切なコンパイラなら0リセットしてくれるかもしれないし
普通のコンパイラなら特別な処理はしないんだろう

んで普通のコンパイラの場合で説明すると、
変数を宣言すると、メモリ上に変数に必要な容量の領域が確保されます。
この時点でその領域に入っているのは、確保される前にメモリ上にあった値です。
つまり、他のプログラム等で使った後だと、前のデータが残っていることがあります。
よって、初期化せずに読み出そうとすると、その前のデータを読み出してしまうことがあります。
だから、初期化する必要があります。

逆に言うと、宣言した時点で0になっていると言語仕様に規定されている場合は、
いちいち初期化せずとも、正しく(0として)使うことが出来ます。
0245名前は開発中のものです。2010/09/14(火) 17:25:09ID:NJhMEymm
誰か止めてやれレベルだな
人に解説なんてできるレベルじゃないじゃん
経験がまったくないのはもう聞かなくてもわかるけど
書籍を読んだ数ですら2桁いってなさそうだよ
0246名前は開発中のものです。2010/09/14(火) 17:27:14ID:xtJ1rdKJ
>>245
まず識字できてるかも不安になってくるレベル
0247名前は開発中のものです。2010/09/14(火) 17:27:15ID:pI9OYyYQ
正確には、これはゲームを作ったとは言わない。

「ゲームの枠組み」を作れるようになっただけ。


ゲームを作るとは、
その世界に色んな法則や歴史を作り、
物語を作り、それをクリアしていく。というものだ。

だからゲームプログラミングが解っただけでは、
ゲームは作れないのよ。

内容を決めないと、
プログラムを使って、どんなシステムを作っていいのかも解らない。

とりあえず、今は、Direct3Dを勉強して、
市販のゲームにあるような、
「あんな表現はどうすればできるのか?」という映像技術的(エフェクト)を勉強しています。

とりあえず、そこまで解説していくから、
もう少し長い目で見ててちょうだい。
0248名前は開発中のものです。2010/09/14(火) 17:28:10ID:M21maGLG
文章ではいくらでも作れるって言えるよな
一度で良いから成果物をあげて見ろよ
0249名前は開発中のものです。2010/09/14(火) 17:28:24ID:XWdrVcFF
>>239
空っぽの表現に関しては別段間違ってるとは言い切れないからあんまり気にはしてないんだけど

空っぽじゃなくて何が入っているのか保障されないって言えばそれですむんじゃないの?
メモリは増えたり消えたりしないから確保したら確保した分のメモリ量で何かしらの値を持ってるはずなのに
空っぽっていう表現がメモリの領域まで話しておいて不自然。
空っぽって言う意味の値があって、確保した段階でそれが入るんなら別だよ。
値が保障されないから結果がどうなるかわからない。
空っぽだと結果が無いといわざるを得ないけど実際結果出ちゃってるよね。
個人的には確保したメモリにたまたま入っている値だと思うけど、
それは本当か嘘わかんないから僕なら調べる。それでわかんないなら触れないか、初期化しないと結果がどうなるかわかりませんって言うな

そもそも僕程度の知識じゃ言語の解説なんてやらないけど
個人的には割りとどうでもいいんだ。いや、よくはないんだけど、どうせ警告出るし。デバッグなら落ちるし。
「数字としての意味」が空っぽって曲解すれば納得できるし。

それよりも
b+10;の演算したらbが10になっちゃう事になってる方がクリティカルなんだけど
これはなんだダメなのか
0250名前は開発中のものです。2010/09/14(火) 17:30:03ID:FW6HEKO5
>>239
おまじないを否定したあんたが
>だから、余計なことは言わないで「空っぽ」と表現しておき、
>とにかく、「初期化しないで使ってはいけないんだね」と理解しておけばいい。
とか言うんだね

そんな嘘教えてる解説HPは消したほうが良いよ
って>>104が言ってた
0251名前は開発中のものです。2010/09/14(火) 17:32:24ID:M21maGLG
C/C++は環境依存のトコが多いから
解説をうたうなら、出来るだけどの環境でもうごく様な、無理なら環境を指定した物を書くべきだよな
0252名前は開発中のものです。2010/09/14(火) 17:32:29ID:xtJ1rdKJ
>>247
C言語もマトモに出来ないのにねぇ…
嘘吐くならもっとマシな事書けよ。
■ このスレッドは過去ログ倉庫に格納されています