--/--/--.--

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサー広告
2014/12/16.Tue

伏線論

はぁ……なんか書きたいけどなー。何書こう。

じゃ、偉そうに私の思うシナリオにおける伏線論を書いていいですか?あ、いい?ありがとう(?!)

いいか、伏線はな、「引いた瞬間」が命だ。回収した瞬間じゃねぇ。

え?!これどういうことだろう……?!

読者にこう思わせられる瞬間、つまり面白いのは引いた瞬間なんだ。

回収ももちろん見所ではある。だがミスりやすい。

というのも伏線は読者を期待させるからだ。

読者は知らず知らずのうちにその伏線に対し、期待をする。

あれはどういう事だったんだろう……?!すごい気になるなぁ……!!

こう読者は思っている。言い換えれば、こう思っている読者に対し、大したことない回収を見せてしまっては幻滅させてしまうということだ。そして、期待をしているのでちょっとやそっとでは驚いてくれないし、面白いと思ってくれない。

その伏線を引っ張れば引っ張る程、思わせぶりに描けば描く程、読者の求める回収のハードルは高くなるので、読者に面白いと思わせる難易度は高くなる。

相当な腕がない限り、伏線の回収は基本的に「つまらない」。

よくこの副作用を知らずに伏線を使用したが故に残念な事になる作品がある。

それは開始早々、一気に盛り上がり、面白さが爆発するが、中盤から失速し、エンディングを迎える頃には当初の勢いが完全に死んでいるタイプだ。

これは開始早々、伏線を張りまくった副作用である。

伏線は張った瞬間が面白い。伏線は回収は面白くない。

よって、序盤は伏線の効能により盛り上がるが、後半、その伏線の回収に迫られ、面白さが失速するのだ。

ガン○や進○の巨人がこのタイプに当たる。

伏線は見える伏線、見えない伏線、納得感(ご都合主義感の緩和)、引き、色々な種類、使い方、効力がある。

それらをちゃんと把握し、バランスよく使うのだ。とにかくこれだけは覚えておけ。

伏線の回収はつまらない。

あぁ、ちなみにこれは見える伏線についての話だぞ?見えない伏線についてはこれに当てはまらない。

見える伏線を使う意味は、回収で楽しませる事ではない(よほど腕があるならこれを狙ってもいいけど)読者の気を引き、そこで読むのをやめさせない事だ。

さて、そんな伏線の使用方法のお手本となるのがこちらの「REVIVAL RESET」(ダウンロード)です^^
是非勉強してくださいね^^
スポンサーサイト
製作技術 | Comments(0) | Trackback(0)
2013/01/17.Thu

当たり判定プログラム

DTMの情報無くて困った話をしたので、今回はプログラムの情報なくて困った話。


今回は「傾いた長方形(四角形)と自機(正方形)の当たり判定」のプログラムです。これも当時なかなか情報なくて困った……。


double Myatan2(double y,double x){
if(-0.001 < y && y < 0.001 && -0.001 < x && x < 0.001)
return(0.0);
else
return(atan2(y,x));
}

double SlantSquareAtari(double x1,double y1,double x2,double y2,int a,double wide,double high,double katamuki){
double s = sqrt( (x1 - x2)*(x1 - x2) + (y1 - y2)*(y1 - y2));
int m = katamuki / (2*PI);
double r = Myatan2(y2 - y1,x2 - x1) - (katamuki - PI*2 * m);

double tcx2 = cos(r) * s + x1;
double tcy2 = sin(r) * s + y1;
double tx2 = tcx2 - a;
double ty2 = tcy2 - a;
double tx1 = x1 - wide / 2.0;
double ty1 = y1 - high / 2.0;
/*
double kyori = sqrt(wide*wide + high*high)/2.0;
double hidariuex = cos(Myatan2(-high/2,-wide/2)+katamuki) * kyori + x1;
double hidariuey = sin(Myatan2(-high/2,-wide/2)+katamuki) * kyori + y1;
double migiuex = cos(Myatan2(-high/2, wide/2)+katamuki) * kyori + x1;
double migiuey = sin(Myatan2(-high/2, wide/2)+katamuki) * kyori + y1;
double hidarisitax= cos(Myatan2( high/2,-wide/2)+katamuki) * kyori + x1;
double hidarisitay= sin(Myatan2( high/2,-wide/2)+katamuki) * kyori + y1;
double migisitax = cos(Myatan2( high/2, wide/2)+katamuki) * kyori + x1;
double migisitay = sin(Myatan2( high/2, wide/2)+katamuki) * kyori + y1;
DrawModiGraph(hidariuex,hidariuey,migiuex,migiuey,migisitax,migisitay,hidarisitax,hidarisitay,graph,TRUE);
hidariuex = cos(Myatan2(-a,-a)+katamuki) * sqrt(2)*a + x2;
hidariuey = sin(Myatan2(-a,-a)+katamuki) * sqrt(2)*a + y2;
migiuex = cos(Myatan2(-a, a)+katamuki) * sqrt(2)*a + x2;
migiuey = sin(Myatan2(-a, a)+katamuki) * sqrt(2)*a + y2;
hidarisitax= cos(Myatan2( a,-a)+katamuki) * sqrt(2)*a + x2;
hidarisitay= sin(Myatan2( a,-a)+katamuki) * sqrt(2)*a + y2;
migisitax = cos(Myatan2( a, a)+katamuki) * sqrt(2)*a + x2;
migisitay = sin(Myatan2( a, a)+katamuki) * sqrt(2)*a + y2;
DrawModiGraph(hidariuex,hidariuey,migiuex,migiuey,migisitax,migisitay,hidarisitax,hidarisitay,graph,TRUE);
*/
if(tx1 <= (tx2+a*2) && tx2 <= (tx1+wide) && ty1 <= (ty2+a*2) && ty2 <= (ty1+high)){
double px1,px2,py1,py2,px,py;
px1 = (tx2+a*2) - tx1;
px2 = tx1+wide - tx2;
py1 = (ty2+a*2) - ty1;
py2 = ty1+high - ty2;
px = px1 <= px2 ? px1 : px2;
py = py1 <= py2 ? py1 : py2;
return(px < py ? px : py);
}
return(-1);
}


(ブログだと半角スペースは強制的になくなってしまうようですね……本当はインデントして見やすくしたいのですが……)


レーザーの当たり判定とかに使えます。


例えば自機の当たり判定がxとyそれぞれ32(正方形)で、レーザーの当たり判定が「――→」こういうレーザー画像で、x=100のy=12だとしたら、引数は……


a=32とwide=100とhigh=12になります。x2,y2は自機の中心座標、x1,y1はレーザー(とか)の中心座標です。katamukiってのはレーザー(とか)の傾いてる角度です。


角度についてはレーザーの向きが「→」だったら0度。「↓」だったら90度とか450度とか-270度。「↑」だったら-90度とか270度。とします。


で、katamukiに代入するときには「90」とかじゃなくてラジアンで入れてください。


ラジアンってぇのは「角度(90とか)÷180×円周率(3.14)」で得られる値のこと。


つまり90度ならラジアンはだいたい1.57だね。


という具合で引数をそれぞれ指定すると、「当たっている」場合は「0以上」を返して、「当たっていない」場合は「-1」を返します。


原理?


なるもんはなる。


……まぁ、気になるなら掲示板で突っ込んで下さい^^;


いや、でも、あんまり突っ込まないで。今はもう説明出来ない可能性があるから。これ結構前に書いたプログラムだからね……。大体の原理は覚えてるけど……。


どんな感じで当たり判定が行われているか知りたい場合は中盤のコメント化してあるのを外してみてね。


ちなみにコメント化の部分にはDXライブラリの命令が使われてるから、気をつけて~(何か投げやりだな…ごめん!)


その際は「graph = LoadGraph("image/square.bmp");」ってカンジの命令をどっか丁度いいとこに書いといてねっ!(これもDXライブラリの命令)


square.bmpってのは32×32ドットぐらいの赤い正方形とかでOK。


……というかNONA MAGICの全プログラムにおいて、もっとも複雑な部分がこれかもしれん笑


『ホームページ:物凄いシューティングゲーム公開してます。楽想目
製作技術 | Comments(0) | Trackback(0)
2013/01/17.Thu

DTM音圧、音のクリアさについて

ちょっと、音楽作製の話……特にミックスにについてです。コードとか作曲技法のお話じゃないよっ!


さて、この記事のきっかけはテストプレイもしてくれたとある方。楽曲作ってます。けど、ちょっと問題意識を持たれているよう……。


そのお方が言うには、全体的に音がクリアーで音同士の相殺が起こり、こもった感じになってしまう……と。


これ、原因あります。が、どういう訳かネット上でその原因の対処法を見つけづらいです。自分も困った時ありました。私の場合偶然近くにプロの方がいたので教えてもらえた訳です。


私が教えられるのはごく一部かもしれませんが、それだけで大分変わるので、その方法を書いていきます。


まず、音がこもる原因、しいては音圧の上がらない原因は音がぶつかっている事にあります。まさに音同士で相殺しているのです。


例えば、バスドラとベース。


これらは低域を担当する楽器ですね。つまり、担当区域がぶつかっています。意識して調整してやらないとここで相殺が起こり、全体がこもるし音圧も上がらない訳です。


なので、同じ低域でも、バスドラ:超低域(85hz以下)、ベース:低域(85~250hz)、のように分ける必要があります。これなら同じ低域担当でも担当区域がぶつからず、全体はこもりませんし、音圧も上がります。


このように各楽器、担当区域はどこか?と意識して組み立てていく必要があるんですね~。今は低域に話を絞りましたが、中域、高域、全て同じ原理です。


となると、音色選びの段階でその音色のおいしいところはどこか?と意識しておく必要も出てきます。


バスドラを超低域担当にしたいと思っているのに、125~250hzがおいしい音色のバスドラを選んではいけない訳だね。同じく、ベースを低域担当にしたいと思っているのに85hz以下の超低域がおいしいベースを選んではダメなのだ。


ここで言う、「おいしい」ってのは、その音のメインとなる音域はどこか?ということです。シンバルは高域担当楽器です。低域は全くおいしくありませんwメイン部分ではありませんからね^^


なので、そのおいしい部分を聞き分ける耳は必要でーす。でも慣れれば大分わかるようになってきますので、ご安心を^^


私の場合、基本いつも、超低域はバスドラに、低域はベースに、任せるので、ちょっと高い域がおいしいバスドラは選びませんし、すごく低ーい域がおいしいベースも選びません。


このように全体的に見て、誰が何処に行くか?を意識すれば、全体はこもりませんし、音圧も上がります。結果、すごく整理されたキレーな曲に聞こえるのです!(と言いつつ自分のが綺麗に聞こえてなかったらごめんw)


こっからEQ(イコライザ)エフェクトの話。


と、上記のように誰が何処へ行くか?を意識して楽曲を組み立てていきます。そして、ちゃんと超低域には超低域のおいしいバスドラを、低域には低域のおいしいベースを割り当てたとします。もちろん逆もOKです。


そうすれば完成!!終了!!……ではありません。EQ掛けるとよりよくなる事が多いです。


というのは超低域がおいしいバスドラだったとしても、低域や中域に音の成分を持っている事が多いのです。低域に成分があるという事は当然、ベースと被り、邪魔をし、全体がこもり、音圧も上がらなくなってしまいます……。


そこで登場するのがEQです。


話は簡単、バスドラの低域を抑えてやればいいのです。単純!


何処まで抑えるか?は、全体のバランスと相談です。


抑えすぎるとベースの邪魔はしないかもしれないけれど、バスドラとしての音は貧弱になってしまうかもしれません。一方抑え方が弱いとやはりベースの邪魔をしてしまいます。丁度いいところを聞き分けましょう!


また、場合によってはバスドラのおいしい部分である超低域をより強調してもいいかもしれませんね。でもこれも全体で聞いてみて、バスドラだけ目立ちすぎている!という事であれば問題ですw全てはバランスなのです!


と、バスドラを例にEQの話をしましたが、もちろんこれはベースも同じ。低域がおいしいとは言え、超低域も含んでいる事は非常に多いです。その際はバスドラ君の邪魔をしない程度に抑えましょ~。


皆が皆の邪魔をしない!!


これです。


さて……ではこうなったらどうしましょう?


1khzのとこにマリンバ君がいる。同じく1khzのとこにオルガン君がいる。被ってしまったから、どっちか消そう。もしくは音色を変えよう。


という場合です。


どっちかを消して解決、もしくは音色を変えて解決。……となればいいですが、時にはどっちも消したくないし、音色も変えたくない!という時もあるでしょう。


この場合対処法が一つあります。


それはパンを分ける事です。


マリンバは左へ、オルガンは右へ、とするのです。こうすれば被る事にはなりません。私も何度もこの手で助かってますw右と左じゃなくても、右と真ん中でもいい場合もあると思います。それは自身の耳で判断しましょう。


…………。


ざざーーっと、書きましたが、いかがでしょうか……DTMをやっている人々……役に立ちましたか?役に立ったら私の作ったゲームをやって感想を書きなさい。それで許す。


本当に勢いに乗って書いたのでわかりにくいとこもあるかな(汗)


あったらごめんねwあったらホムペの掲示板に書き込んで聞いてもいいよw答えられたら答えます~^^


『ホームページ:物凄いシューティングゲーム公開してます。楽想目
製作技術 | Comments(0) | Trackback(0)
 | HOME | 

    上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。