トップページ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制作に挑戦します。

※本格的にゲーム制作に協力していただけるメインメンバー様へは、
 ゲーム完成後に平等に利益分配されます。
 (詳細は公式サイトのメンバーページ)
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言語もマトモに出来ないのにねぇ…
嘘吐くならもっとマシな事書けよ。
0253名前は開発中のものです。2010/09/14(火) 17:37:00ID:pI9OYyYQ
>>234
できるわけないじゃんw

例えばif文の解説もしてないのに、
当たり前にif文を使ったプログラムの解説で、
C++の別の解説をしていたら、

素人は「if」って何?ってなるでしょ?

じゃあ、そのつど止まって解説してたら、
全然、解説したいことが解説できない。

だから、まずは基本となるC言語を解説しておかないと、
ゲームプログラミングの解説は出来ない。

とりあえず、次の解説は構造体です。
その次に列挙体を解説して、
共用体を解説します。
0254名前は開発中のものです。2010/09/14(火) 17:38:32ID:kwiSf8mq
お願いだから嘘を教えるのだけはホントに勘弁してくれよ。
0255名前は開発中のものです。2010/09/14(火) 17:40:14ID:M21maGLG
>>253
あんたの間違いまみれの解説よりしっかりした解説がネットに何個も有るっつうの
0256名前は開発中のものです。2010/09/14(火) 17:44:18ID:xtJ1rdKJ
>>253
素人はお前だろ
0257名前は開発中のものです。2010/09/14(火) 17:45:44ID:FW6HEKO5
>>253
解説を行う必要性は何か?
素人解説なんざ誰も望んじゃいないだろ
0258名前は開発中のものです。2010/09/14(火) 17:57:00ID:3A/BaR1z
頭の悪い人を祭るスレはここですか?
0259名前は開発中のものです。2010/09/14(火) 18:07:57ID:XpWGSie1
このスレッドは天才チンパンジー「Kazukiちゃん」が
言語訓練のために立てたものです。

Kazukiと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所
0260名前は開発中のものです。2010/09/14(火) 18:11:53ID:3A/BaR1z
C言語を理解するためというよりもKazukiを理解できるかどうかという限界にチャレンジしているんですね
0261名前は開発中のものです。2010/09/14(火) 18:13:29ID:pI9OYyYQ
まあいいや。

色々言おうと思ったけど、
とりあえず、飲み込んでおく。

とりあえず、俺の好きなようにやらせていただこう。


C言語の解説はもう少しで終わるし、
それまで解説メインで公式サイトは更新していく。

そのあと、C++の解説に移るんだけど、
その時にニコニコ動画で面白い企画を考えているw

その時に初めて、
同人ゲームサークルっぽいことをやるよ。
0262名前は開発中のものです。2010/09/14(火) 18:37:37ID:pI9OYyYQ
>>227
ちょっと待て。

え?本当に、実行結果が、500 500になったのか?


試したことなかったけど、
ちょっと自分で確かめてみるよ。

しばしお待ちを。


これで500500で表示されていたら、
確かに大嘘だな・・。
0263名前は開発中のものです。2010/09/14(火) 18:39:30ID:NJhMEymm
っていうかそんなに知識ないのに何故にC言語解説なんてする気になったのか?
そういうサイトって言語仕様が大好きな知識自慢の変態がたてるもんで
大して興味なさそうな、しかも、凡人にも軽く負けちゃう人間が立てるもんじゃないだろ
0264名前は開発中のものです。2010/09/14(火) 18:40:19ID:kwiSf8mq
試す前に500500になるのわかるだろ。
int a,b;
が{}の外にあるんだから。
0265名前は開発中のものです。2010/09/14(火) 18:51:49ID:pI9OYyYQ
あ。本当だ・・。

500500って表示されてる・・。

あれ?どうして?

スコープ内だけで使えるはずが、
スコープ外でも使えてる。

なぜだ???

そんなはずないのに・・。
0266名前は開発中のものです。2010/09/14(火) 18:54:17ID:FW6HEKO5
>>262
ちなみに>>228の2行目の出力は500 0になるからな?
それも一緒に確認して来い
0267名前は開発中のものです。2010/09/14(火) 18:54:48ID:pI9OYyYQ
これには参った・・。

とりあえず記事は非表示にしておこう。

その後、じっくり考える・・・。
0268名前は開発中のものです。2010/09/14(火) 18:56:19ID:mhVo5udq
二年前プログラムに触れたことすらなかった俺はここで勉強したぜ。おまじない大事
ttp://www.geocities.jp/ky_webid/index_old.html
あとは龍神録のとこのソースいじって実際にどうなるか試したりググりまくって自分なりに理解したりでクラスうめぇwwテンプレートうめぇwwwマルチスレッド超うめぇwwくらいには習得できた


つまりもう十分解説サイトはあるからそんなもん作らずにさっさとゲーム作れ
0269名前は開発中のものです。2010/09/14(火) 18:58:13ID:pI9OYyYQ
俺が悪かった・・。

確かにこんな嘘を教えちゃいけないな!!

これはケシカラン!


もう一度、C言語の基礎から学び直してくる・・。

試す気にもならなかったし、
試したこともなかったから、
ちょっとマジで驚いています。
0270名前は開発中のものです。2010/09/14(火) 18:59:15ID:PKl+w47o
一歩一歩成長していけばいいよ
もうちょっとだけ、自分は知らないことが多いってことを自覚しなくちゃいけないかもだけどさ
0271名前は開発中のものです。2010/09/14(火) 19:01:09ID:eunaM5m4
もう帰って来なくていいよ
0272名前は開発中のものです。2010/09/14(火) 19:11:38ID:2Gj11L/r
崇めてもらいたいだけなんだろ
ゲームが作りたいとかコード書けるようになりたいって動機じゃない
とにかくひたすら崇め奉られたくてしょうがない、だから「解説」を始める
こういうの肥大した自我っていうのかね
0273名前は開発中のものです。2010/09/14(火) 19:21:50ID:pI9OYyYQ
b=0;
a=50*(b+10);
printf("%d %d",a,b);

この結果が「500 0」になるのかが解らん・・。

「(b+10)」←この時点で、bに10が足されているはずなんだよ。

なのに、どうして初期値に戻るんだ?


頭がパニくってきた・・。

いろいろググってくる。
0274名前は開発中のものです。2010/09/14(火) 19:24:09ID:XWdrVcFF
>>269
ブロックの中から外へはアクセスできるんだよ。
でもスコープとブロックは割と別物だよ

関数同士は
大きなグローバルブロックのなかに
関数ブロックが乱立してる構造をイメージすると
関数の中から別の関数の中はアクセスできないし
関数の中からグローバルへのアクセスができるのがイメージしやすかった
正しいかは別として
0275名前は開発中のものです。2010/09/14(火) 19:24:20ID:pI9OYyYQ
なんか悔しいなー・・。

ずっと間違えて理解していたのか・・。

ちくしょう。
0276名前は開発中のものです。2010/09/14(火) 19:31:15ID:WJ31r0pz
>>273
>b=0;
>a=50*(b+10);
>printf("%d %d",a,b);
>「(b+10)」←この時点で、bに10が足されているはずなんだよ。
最低だぞこんな理屈は、プログラミングの無能さも限度を超えている
2,3ヶ月間何を勉強していたの?って言われてもおかしく無い
0277名前は開発中のものです。2010/09/14(火) 19:34:10ID:zG5K9tzO
ソースを晒すなら実行テストしてからって事だな
0278名前は開発中のものです。2010/09/14(火) 19:35:52ID:XWdrVcFF
>>273
(b+10)の( )内には+演算の結果である10が埋め込まれる感じ
b=10でないとbには代入されないんだよ
この場合は
事前にb+=10;しとくか
試してないけどb+10をb+=10に置換するともしかしたらうごくかもね。動かないかな。わかんないや。

面白いのはオペレータに挑戦したとき
演算子も確かに結果を返す関数みたいなもんだなって気づいた

比較演算子はbool型の関数みたいなもんだし
+は演算した型と同じ型を返す関数みたいなもんだ
=はint型なら(int*,int)見たいな感じか?
=の部分はなにを返すんだろう。ためしたことないけど
演算子が値を返すってことを念頭に置くとそういうミスはなくなると思うよ

演算子はぱねぇ奥が深かった。
0279名前は開発中のものです。2010/09/14(火) 19:38:18ID:WJ31r0pz
いくらなんでも>>273の状況理解できないのは恥ずかしすぎる
VBやHSPユーザーでも当たり前のようにわかることだ
実際VB・HSPでも同じ実行結果になるわけだし
0280名前は開発中のものです。2010/09/14(火) 19:38:33ID:xtJ1rdKJ
>>273
"+"は代入じゃない。
お前が小学校で習ったのと同じ足し算だ。
まさか小学校に行ってなかったのか?

まず、
>b=0;
で、bには0という数値が入っている。
つまり
a=50*(b+10);
    ~

a=50*(0+10);
    ~
と同じだ。bの中身は書き換えられてない。
…って書こうと思ったら>>278がもっときちんと書いてた。まあいいや
0281名前は開発中のものです。2010/09/14(火) 19:42:08ID:Q0DkF3yj
>b=0;
>a=50*(b+10);
>printf("%d %d",a,b);
>「(b+10)」←この時点で、bに10が足されているはずなんだよ。

これが理解できないって事は、中学校算数の代数学が理解できていない事になる。
プログラムでなく、教養算数のレベルですよ

ハッタリが多いから。 もしかして、Kazukiは まだ中学校を卒業してないのでは?
0282名前は開発中のものです。2010/09/14(火) 19:47:50ID:NJhMEymm
C言語解説は2〜3年後にとっとけってw
いま、恥を晒すこともねーよ
0283名前は開発中のものです。2010/09/14(火) 19:48:06ID:pI9OYyYQ
>>280
なるほどwwww

そういうことか!!


その説明でやっと解ったww


うわーーwwww

なんて馬鹿な考え方をしていたんだ。俺はwww

足し算をしているんだから、
bが0で当たり前じゃないかww
こんなの常識じゃないかw

うはははwww

って俺の内心は笑いごとじゃない・・。

こんな常識すぎることに気づけなかった自分が情けない・・。

本当にありがとう。
■ このスレッドは過去ログ倉庫に格納されています