Home > 日記 > 結局、同じ本ですから

結局、同じ本ですから

  • 2008-01-20 (日) 0:09
  • 日記

どうもミナミです。

数年前のミナミは同人誌を買う意味がわかりませんでした。

薄いし、高いし、本人が書いてないし。

こんなのを買う奴の気がしれないなとか思っていたりしていました。

なのに、どうして、いま現在、

部屋に10冊以上あるのでしょう。

不思議だ・・・・・・・。

とはいえ、3年で10冊なので、少ないとは思いますが、
数年前の自分では考えられない事ですね。

買いに行く機会がないので10冊程度なのですが、
ここ数年行っていないコミケに、いま行ったら、
結構な量を買って帰ってくるのでしょう。

初めて行ったコミケなんて、
商業ブースにしかいなかったのに。

結局のところ、同人誌の中に読んでみたいなと思った本を
発見した時点で、すでに普通の単行本と同じでして、

本屋に行ってみると、
集めている新刊が大量に並べられていたら、
まとめて買うのと気分は一緒ですよ。


「集めている本」という部分が、
「興味があるキャラが載っている本」に変わるだけでして、

あんまり気にせずに買うようになってしまったんですね。

だいたい何でも興味を持っているゲームプログラマーですよ?
興味があったら、あまり何も考えず買ってしまう奴に、

「薄い」とか「高い」とか関係あるわけないじゃないですか。

数年前のミナミは何を言っているんでしょうね。

ああ、まだゲームプログラマーじゃなかったのか。

ゲームプログラマー・・・・いろいろ便利だなあ、

この言葉。

↓記事がおもしろかったらクリックおねがいします。
プログラムランキング [人気blogランキング]  FC2 Blog Ranking  にほんブログ村 IT技術ブログ プログラム・プログラマへ

Comments:13

ナオキ 08-01-21 (月) 7:03

はじめまして、ナオキと言います。自分今23歳でゲームプログラマーを0から目指そうと思っているんですがまだ間に合いますか?なれるかどうかはまあ本人の努力しだいだとは思うのですが、年齢的に気になるのです。23歳(今年24)は遅いでしょうか。とりあえず今コナミスクールに応募して26日に試験がありその試験対策の勉強をしています。数学とプログラムに関するコンピュータの基礎問題です。数学が得意ということなので何かお勧めの参考書ありますか?自分も数学は得意なほうです。
質問ばかりになってしまいましたが、アドバイスなど何でもいいのでよろしくお願いします!

大阪ミナミ 08-01-21 (月) 9:02

>>ナオキさん

年齢に関しては問題ないと思います。
早ければいいとは思いますが、
実力を見てもらえるので気にする程ではないです。
友人も24や26とかから始めまして、
大手のゲーム会社に入りましたから。
自分は二十歳からでしたが、能力0だったので大丈夫ですよ。

数学の本に関しては、お勧めできる参考書というのが実はありません。チャート式の簡単の本と数研出版からの赤本と呼ばれる本だけで勉強しましたので。
ただ、三角関数や線形代数、数列は専用の本を買った方がいいと思います。プログラムで必須な数学の部分なので、まとめられているよりも、使いやすいと思います。

本に関しては、お役に立てず申し訳ありません。

ナオキ 08-01-22 (火) 8:52

現役のプログラマにそう言ってもらえると安心しました。

最近このブログを発見し、勉強しながらで全カテゴリ見ました。めちゃくちゃ面白いですね!
夜中に一人爆笑してしまいました^^

これからも成長期のほうの更新楽しみにしています。
ありがとうございました!

大阪ミナミ 08-01-23 (水) 0:01

>>ナオキさん

あまりお役に立てなかったかもしれませんが、
参考になればと思っています。

こんな奴でもゲームプログラマになれましたので、
ぜんぜん大丈夫ですよ!!

勉強頑張ってください!

ナオキ 08-01-28 (月) 21:00

ミナミさんはどこの専門学校に通っていたんですか?

東京ゲームデザイン専門学校が気になっていて、コナミスクールが落ちたらそこに通おうと思っているんですが、
どう思いますか?専門に通うと卒業まで2年かかるんで
年齢が25になってしまいます。
専門学校に通うよりゲーム会社などのアルバイトで就職先探して現場で2年学んだほうがいいですか?

ミナミさんはどう思いますか?

大阪ミナミ 08-01-29 (火) 0:44

>>ナオキさん

専門学校については内緒です(笑)
まあ、成長期でも書いてませんしね。

2年かかるというより、2年で卒業できると考えた方がいいかもしれませんよ。4年は長いと思いますし、4年制の学校の話を聞いたら、ミナミが2ヶ月で終わらせていた部分を1年かけてやっていたみたいらしいですし。

ゲーム会社のアルバイトはお勧めしますが、ある程度はプログラミングを覚えてからの方がいいかもしれません。0からでも大丈夫ですが、やはり知っている方が吸収率は違いますから。

いまならアルバイトがいいなと思いますが、
学校で基本をガンガンやって、途中アルバイトもありだと思います。

匿名 08-01-30 (水) 2:43

お金の問題で新聞奨学生制度を利用するつもりなので、アルバイトはできないんです。思い切って飛びこんじゃってもいいのかな・・大事なのはその学校で何をするかですよね。

評判悪くても気にせず利用しつくすつもりでがんばろうと思います。

大阪ミナミ 08-01-31 (木) 0:10

学校で何をするかは大事ですよ。

先生の話は大事な事だけきいて、
しっかり自分でやっていれば問題ないと思います。

とにかく頑張ってください。

ミナミはプログラマは頑張ればなんとかなる職種だと、
今でも思っていますので。

デザインとかはミナミには才能が無いので、
頑張っても無理だと思っていますが(笑)

ナオキ 08-05-16 (金) 23:09

お久しぶりです!
お元気ですか?
毎日ブログを楽しく読ませていただいています。

あれからスクール受かりまして
今2Dゲームのアクションを作っているところです。
周りのみんなや先生のお陰で何とかついていっている感じです。ゲームのプログラムをわかるようになってくるとこのブログの面白さも倍増ですね(笑)

そこで、ミナミさんにたくさん質問したいのですが、自キャラと上に乗ることができる壊れない右にも左にも下にも上にも当り判定のあるブロックの当り判定をどうやればうまくいくのでしょうか。教えていただけないでしょうか。

今、直線と直線の当り判定を使ってやっているのですが
なんかうまくいきません。。。

当り判定はこんな感じなんです、

bool CheckHitBlock(TASK* task0, GROUP group)
{
// task0の当たり判定の座標を求める
float
l0 = task0->x + task0->hit.left,
r0 = task0->x + task0->hit.right,
t0 = task0->y + task0->hit.top,
b0 = task0->y + task0->hit.bottom;

// すべてのタスクとの間で判定を行う
for (TASK *task1 = ActiveTask->Next, *next;
next = task1->Next, task1 != ActiveTask; task1 = next)
{
// task1が指定のグループではない場合には判定しない
if (task1->Group != group)
continue;

// task1の当たり判定の座標を求める
float
l1 = task1->x + task1->hit.left,
r1 = task1->x + task1->hit.right,
t1 = task1->y + task1->hit.top,
b1 = task1->y + task1->hit.bottom;
// ブロックの着地判定、キャラの右の辺とブロックの上辺とキャラの左の辺と上辺の判定
if (CollisionLineAndLine(r0, t0, r0, b0, l1, t1, r1, t1)
|| CollisionLineAndLine(l0, t0, l0, b0, l1, t1, r1, t1) )
{
// 当たるとプレイヤーのy座標をブロックのy座標にプレイヤーの高さを足した位置にする
g_player->y = task1->y - task0->hit.bottom;
return true; // 一応trueを返す
}

// ブロックの下衝突判定
if (CollisionLineAndLine(r0, t0, r0, b0, l1, b1, r1, b1)
|| CollisionLineAndLine(l0, t0, l0, b0, l1, b1, r1, b1))
{
g_player->VY = -g_player->VY;
return true;
}

// ブロックの左横衝突判定
if (CollisionLineAndLine(l0, t0, r0, t0, l1, t1, l1, b1)
|| CollisionLineAndLine(l0, b0, r0, b0, l1, t1, l1, b1))
{
// キャラをブロックにめり込ませないようにする
g_player->x = task1->x + task0->hit.right;
return true;
}

// ブロックの右横衝突判定
if (CollisionLineAndLine(l0, t0, r0, t0, r1, t1, r1, b1)
|| CollisionLineAndLine(l0, b0, r0, b0, r1, t1, r1, b1))
{
g_player->VX = -g_player->VX;
return true;
}
}
return false;
}

ぜひアドバイスお願いします!

大阪ミナミ 08-05-17 (土) 3:29

>>ナオキさん

変数と関数が何を意味しているかわからないので、
きちんと答える事ができませんが、
左側の衝突判定後の結果と右側の衝突判定結果は違うんですね。

右は跳ね返って左は場所を維持?
その場合、左側は
g_player->x = task1->x + task1->hit.left + task0->hit.right;
じゃないでしょうか?
現状のままだと物体の座標点に自機の左の当り判定分しか足されていないので、めり込むんじゃないでしょうか?

同様にブロック上辺判定後も同じなように思いますが、
ただ当りをどれぐらいの大きさでとっているかわからないので、
正解しているかどうかはわかりません。

あと、跳ね返る処理をする時は、
めり込まない処理(つまり座標を固定)も同時にしないと、
当り判定処理内に入っている場合に、
何度もその処理が行われる事になるので、
ブロック内で跳ね返る前に違う処理が行われる可能性があります。
その場合はタイマーをつけるか、上記の座標を固定した方が
いいと思われます。

こんな感じなのですが、自分のソースじゃないと、
その後の処理やテーブルなどもわかりませんので、
きちんと答える事ができませんが、
ソースを見た感じではこのような感じでした。

ナオキ 08-05-17 (土) 23:08

すみません、ここだけじゃわかりにくいですよね。
ソース丸ごと渡したいんですけど。。。
task0->hit.left = 0.0f
task0->hit,right = 32.0f // プレイヤーの横幅
task0->hit,top = 0.0f
task0->hit.bottom = 64.0f // プレイヤーの縦幅

task1->hit.left = 0.0f
task1->hit.right = 32.0f // ブロックの幅
task1->hit.top = 0.0f
task1->hit.bottom = 32.0f // ブロックの高さ

が当たり矩形の大きさを表しています。

CollisionLineAndLine(線1の始点と終点、線2の始点と終点)

は線と線の当たり判定をしています。
平行線または交わっていない、だとfalse, 交わっているとtrueを返します。

その後の処理というのは特にないんですけど・・・

この判定でやると、ブロックにジャンプしながら左から当たったらプレイヤーのx座標位置はちゃんと固定されるんですけどそのまま上がっていくとなんかくっついたままブロックの上に立ってしまいます。ワープするような感じで。

本当はブロックよりも飛んでいるはずなのに。

で、下がっている時に左から当たるとめり込みながらでゆっくり下に下がって行きます。

もっと簡単なブロックの当たり判定ってないんでしょうか・・・

大阪ミナミ 08-05-18 (日) 23:12

>>ナオキさん

返信が遅れました。すみません。

結果を聞いた感じでは、当り判定が何度も行われているのではないかと。つまり加速度の反転が何度も行われているので、
上の加速度がなくなっていない状態で上がって行っているんだと思います。
その場合は当った瞬間、当りの範囲外にするのと同時に横方向の加速度を反転させるか、0にするかにしないといけません。

ブロックの当り判定はバウンディングボックスが一番簡単ですから、
何度も作っていけば要領はわかりますので、頑張ってください。
ループ内でリターンを返すのは、ちょっと使いにくいかもしれませんよ。
それぞれの処理でわけた方がわかりやすいと思います。

匿名 08-05-19 (月) 21:21

ありがとうございます。
とりあえずバウンディングボックスに挑戦してみます。

Comment Form
Remember personal info

Home > 日記 > 結局、同じ本ですから

Search
Feeds
Meta

Return to page top