ページ 1 / 1
sin波ショットや円運動ショットレーザーを作りたいのですが…
Posted: 2009年11月13日(金) 18:56
by トリ
過去ログの
http://www.play21.jp/board/formz.cgi?ac ... &rln=38530
で、ノードというものを使用してレーザー弾をチルチルさんが作成されておられますが、
これはどういう風に導入すればいいのでしょうか?
shotH.cppの中のvoid shot_bullet_H014(int n)などに直接書いても、エラーがでてしまうので教えて頂けないでしょうか?
あと、これを通常弾で再現したいと思い、通常弾用のsin波ショットのコードを作成したのですが
角度がPI/2の時だけしか再現できませんでした。bossatan2()を使用すると敵の横に移動すると弾が固まってしまいます。
//弾発射関数
void boss_bullet_on(int way,int knd,int col,double x,double y,double b_angle,double d_angle,double spd,int state,int till,int eff=0,int sflag=1){
int i,k;
for(i=0;i<way;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].knd = knd;//弾の種類
if(knd==7) boss_shot.bullet[k].kaiten=1;
else boss_shot.bullet[k].kaiten=0;
boss_shot.bullet[k].col = col;//弾の色
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].x = x;//座標
boss_shot.bullet[k].y = y;
boss_shot.bullet[k].angle = b_angle+d_angle*(i - way/2);//角度:bが基準、dが間隔
boss_shot.bullet[k].spd = spd;//スピード
boss_shot.bullet[k].state = state;//弾の状態
boss_shot.bullet[k].till = till;//弾が画面外に出ても消えない時間
boss_shot.bullet[k].eff = eff;//加算ブレンドするか否か
boss_shot.bullet[k].size = 3;
if(sflag==1)se_flag[0]=1;
}
}
}
void boss_shot_bulletH012(){
int i,t=boss_shot.cnt%100;
static double x = boss.x;
//double x,y,ang;
if(t==0){
//boss_shot.base_angle[0]=rang(PI2);
}
if(t<45 && t%4==0){
//ang=boss_shot.base_angle[0]+t*PI2/45;
boss_bullet_on(1,8,6,boss.x,boss.y,PI/2,0,4,0,0);
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet.flag==1){
boss_shot.bullet.x = cos(PI2/360*boss_shot.bullet.y)*30 + x;
}
}
}
何か手掛かりを教えて頂けないでしょうか・・・?
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月13日(金) 20:43
by チルチル
>これはどういう風に導入すればいいのでしょうか?
う~ん、これは自分で作ったコードに導入する為に作ったので
龍神録に直接書くとエラーが出るのは仕方ないですね・・
導入するとなると双方向循環リストを理解する必要がありますね
これは解説サイトに詳しく書いてあると思います
と言うかレーザーが消えるとアイテムに変わりますけど
線形リストなので弾の最大数が決まっておらず
アイテムが配列で用意されている龍神録に導入すると
何か補正をしない限りオーバーフローを起こす危険性がありますね
まあ消えた時にアイテムに変えなければ問題ないですけど・・
龍神録のコードが理解できていないので明確な回答はできませんが
過去ログの時は悪ノリしていた上にクラスや分割コンパイルが使えなかったので
導入するとしたらソースとヘッダに分けてメインループや初期化部分で関数を呼ぶ感じになると思います
あと期待を裏切るようで言いにくいのですが、完成したレーザーを実装した直後に
ゲームの基礎部分の初期に作った手抜き部分が補いきれないと言う結論に達したのでコードを1から作り直しました
なので頑張って作ったレーザーは使用する前にボツになると言う結末を迎えましたね・・
>あと、これを通常弾で再現したいと思い、通常弾用のsin波ショットのコードを作成したのですが
龍神録のコードが理解できていないのでパッと原因はわかりませんが
>角度がPI/2の時だけしか再現できませんでした。bossatan2()を使用すると敵の横に移動すると弾が固まってしまいます。
p->x=P->x+cos(P->Angle+PI/2*P->Exception[0])*(sin((float)P->Count/10)*40);//波移動
p->y=P->y+sin(P->Angle+PI/2*P->Exception[0])*(sin((float)P->Count/10)*40);//波移動
PI/2って過去ログのこれの事でしょうか?
これは進行方向に対して右を表しているので変更してはいけません
もしくはsin波ショット全体が下に進んでいる時しか正常に動かないと言う事でしょうか?
それだったらおそらく上のコードの
boss_shot.bullet.x = cos(PI2/360*boss_shot.bullet.y)*30 + x;
が原因だと思います
過去ログの波移動している部分に相当すると思われますが
進行方向に対して左右なのでY座標も変更しないといけません
と言うよりX座標の計算でY座標が出てくるのはなぜでしょうか?
円移動ショットに関しては毎フレーム座標を代入するのでみょん弾幕に近いです
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月13日(金) 22:53
by チルチル
と言っても言葉ではわかりにくいので
見よう見まねで円移動ショットを作ってみました
void boss_shot_bulletH002(){
int i,k,t=boss_shot.cnt;
if(t==0){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].col = 0;
boss_shot.bullet[k].x = 0;
boss_shot.bullet[k].y = 0;
boss_shot.bullet[k].knd = 8;
boss_shot.bullet[k].angle = 0;
boss_shot.bullet[k].base_angle[0] = PI/2;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 0;
boss_shot.bullet[k].state = 0;
boss_shot.bullet[k].kaiten= 0;
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet.flag>0){
boss_shot.bullet.x = boss.x + cos( boss_shot.bullet.base_angle[0] + boss_shot.bullet.cnt * 0.03 ) * 100 ;
boss_shot.bullet.y = boss.y + sin( boss_shot.bullet.base_angle[0] + boss_shot.bullet.cnt * 0.03 ) * 100 ;
boss_shot.bullet.angle = boss_shot.bullet.base_angle[0] + boss_shot.bullet.cnt * 0.03 + PI/2 ;
}
}
}
一応円移動しますがコードの意味を推測しながら作ったので構文が汚いと思います
計算式の導入方法を理解するサンプルになれば嬉しいので
これで理解できたら自分のコードに応用してみてください
次はsin波ショットを作ってみます・・
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月13日(金) 23:39
by チルチル
sin波ショットを作ってみました
void boss_shot_bulletH002(){
int i,k,t=boss_shot.cnt;
if( t==0 )boss_shot.base_angle[0] = bossatan2();
if( t<600 && t%4==0 ){
for(i=0;i<2;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].col = i;
boss_shot.bullet[k].x = 0;
boss_shot.bullet[k].y = 0;
boss_shot.bullet[k].knd = 8;
boss_shot.bullet[k].angle = 0;
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 0;
boss_shot.bullet[k].state = i?1:-1;
boss_shot.bullet[k].kaiten= 0;
}
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet.flag>0){
double x=boss_shot.bullet.x;
double y=boss_shot.bullet.y;
boss_shot.bullet.x = boss.x + cos( boss_shot.base_angle[0] ) * ( boss_shot.bullet.cnt * 2.5 ) + cos( boss_shot.base_angle[0] + PI/2 * boss_shot.bullet.state ) * sin( boss_shot.bullet.cnt * 0.1 ) * 35 ;
boss_shot.bullet.y = boss.y + sin( boss_shot.base_angle[0] ) * ( boss_shot.bullet.cnt * 2.5 ) + sin( boss_shot.base_angle[0] + PI/2 * boss_shot.bullet.state ) * sin( boss_shot.bullet[i].cnt * 0.1 ) * 35 ;
boss_shot.bullet[i].angle = atan2( boss_shot.bullet[i].y-y , boss_shot.bullet[i].x-x );
}
}
}
あくまで計算式のサンプルなので汚いです・・
ちなみに円移動ショットとかsin波ショットの計算式は何種類かあって
これらはその中の1つなので慣れてきたら自分でも考えてみてください
それで問題のレーザーなんですが
これはパッと導入できる規模ではないので
トリさんの目的を聞きたいです
単に龍神録に実装してみたいのであれば
できるかどうかわかりませんが実装を試みます
もしくはアルゴリズムを参考にしたいのであればできる限り説明します
余談ですが静止画だと綺麗に見えますが動いてると結構気持ち悪いですよ・・
2Dポリゴンで描画しているので表示がガタガタしないように
毎フレーム弾を登録する事にしたのでグレイズがガンガン上がります・・
まあボツにした理由はこの辺も大きいかもしれませんね・・
あとレーザーのコードなんですがリンク切れで見れなかったりしませんでしたか?
それはそれで怖いので一応コードを添付しておきます・・
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月14日(土) 01:43
by トリ
チルチルさん、詳しい回答本当にありがとうございます。
それにわざわざ、sin波などのコードも紹介して頂いて本当にすみません…。
>何か補正をしない限りオーバーフローを起こす危険性がありますね
その場合は、個々の弾を隙間なく発射させて加算ブレンドという方法にした方がいいんですかね…
早速、チルチルさんのコードを自分のプログラムに移植して
一応、教えてくださったsin波ショットでレーザーっぽく見えるショットを作成してみました。
画像の通りなのですが、作成と言っても加算ブレンドしただけで、それに先端と末尾が透けてないので
本家っぽくはないので、けっこう変です…あとは試行錯誤の問題ですね…
この方法だと
自機が当たるとレーザーが途切れるという現象くらいかなと考えているのですが
他に問題ありますかね…?
>PI/2って過去ログのこれの事でしょうか?
これは自分のコードで使っていた
boss_bullet_on(1,8,6,boss.x,boss.y,bossatan2(),0,4,0,0);
の部分のことです。bossatan2()のところでPI/2つまり、真下に自機がいた場合のみに正常に動作するということです。
なんだか、本当にわかりづらくてすみません…。
>と言うよりX座標の計算でY座標が出てくるのはなぜでしょうか?
これは恥ずかしすぎて、なぜこんなことをしているのか言いにくいのですが
最初真下にsin波をうたせることだけを考えていたために、yの変化を代入していたということです。
やはりチルチルさんのおっしゃる通り、これが原因ですね…。
それに自分のコードはy座標の分も書いていないので本当に何やってんだかわからないですね…
>トリさんの目的を聞きたいです
画像を参照して頂けるとお分かりだと思いますが、目的は今ちょっと作ってるゲームで、
さまざまなショットを作成したいと考えています。ゲームの流れとかはほとんどできているのですが
なにぶん、弾幕やショットを作るのが苦手で、簡単なものしか自力でつくれない状態です。
なかなか複雑な通常弾幕やレーザー系の弾幕が思い浮かばないのでノードを勉強して使った方がいいのかなと
思い、今回質問をさせて頂きました。
とはいっても相循環リストを理解していないのでまずそこが課題なのですが…
レーザーの導入は
http://dixq.net/rp/34.htmlで曲がったレーザーや円形のレーザーなどが作成できるのであれば、34章と真剣に向き合って勉強しようと考えていますが、このレーザーは直線メインでしょうか?
またまた、質問になってしまいすみません…。
それにしてもチルチルさんはあっさりコードを作成なされて頭があがりません…。
本当に感無量です…。
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月14日(土) 10:28
by トリ
再びすみません。
チルチルさんのsin波コードをいじっていて
int i,k,t=boss_shot.cntをint i,k,t=boss_shot.cnt%100;に変更して
if( t<600 && t%4==0 )をif( t<60 && t%3==0 )に変更して
100カウント周期で何度も発射させるようにしたのですが
画像のようにsin波ショットが瞬間移動してしまいます。
チルチルさんのコードはt==0のとき
boss_shot.base_angle[0] = bossatan2();
を代入しているので、
http://dixq.net/rp/14.htmlの
自機に向かって直線発射(角度記憶)のしくみと同じだと思うのですが、
なぜ瞬間移動してしまうのでしょうか…?
boss_shot.bullet
.x = boss.x + cos( boss_shot.base_angle[0] ) * ( boss_shot.bullet.cnt * 2.5 ) + cos( boss_shot.base_angle[0] + PI/2 * boss_shot.bullet.state ) * sin( boss_shot.bullet.cnt * 0.1 ) * 35 ;
boss_shot.bullet.y = boss.y + sin( boss_shot.base_angle[0] ) * ( boss_shot.bullet.cnt * 2.5 ) + sin( boss_shot.base_angle[0] + PI/2 * boss_shot.bullet.state ) * sin( boss_shot.bullet.cnt * 0.1 ) * 35 ;
この2行が軌道計算の核だと思うのでここをいじればなんとかなりますかね…
それと、スピードを速くしようとしてxとyの部分の( boss_shot.bullet.cnt * 2.5 )を
( boss_shot.bullet.cnt * 3.5 )に変更してみましたが、
確かに速くはなるのですが、周期が大きくかわってしまい、sin波が伸びた状態になってしまいます。
何度も本当にすみません…。
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月14日(土) 17:18
by チルチル
>その場合は、個々の弾を隙間なく発射させて加算ブレンドという方法にした方がいいんですかね…
え~とオーバーフローは弾数の問題なので描画方法は関係ないです
アイテムが2000個用意されている時にレーザーの弾が5000個あったらオーバーしてしまうって事ですね
と言うより敵やアイテムが配列で用意されている所に線形リストを持ち込むと
他も線形リストにしないと噛み合わなくなってしまいますからね・・
普通に弾数を少なくする工夫をして、必要ならアイテムの最大数を増やすと言う方法もありますが・・
>画像の通りなのですが、作成と言っても加算ブレンドしただけで、それに先端と末尾が透けてないので
両端を薄くしたり細くしたりするのが簡単なのが2Dポリゴンのメリットなんですが
並べる場合は全体に対しての位置を求めてブレンドするとかでしょうかね・・
>他に問題ありますかね…?
配列の場合は重ねた時に同化しない画像だと
添え字が順番に並んでいないと汚くなるとかでしょうかね・・
>の部分のことです。bossatan2()のところでPI/2つまり、真下に自機がいた場合のみに正常に動作するということです
>それに自分のコードはy座標の分も書いていないので本当に何やってんだかわからないですね…
進行方向に対して左右に揺らしますが
X座標にしか反映されていないので進行方向が下でないと表示に出ないんでしょうね
だとすると上方向でも動作するはずですが・・
>画像を参照して頂けるとお分かりだと思いますが、目的は今ちょっと作ってるゲームで、
>さまざまなショットを作成したいと考えています。ゲームの流れとかはほとんどできているのですが
これはクオリティが凄いですね
素材の完成度が高いですが自作したのでしょうか?
完成したらやってみたいので良かったら掲示板で公開してください
>なにぶん、弾幕やショットを作るのが苦手で、簡単なものしか自力でつくれない状態です。
>なかなか複雑な通常弾幕やレーザー系の弾幕が思い浮かばないのでノードを勉強して使った方がいいのかなと
まあ確かにアレは本家を超えるレーザーを作るために開発したんですが
星蓮船に先を越されたので今はエフェクトとアシストの融合を検討しています・・
>とはいっても相循環リストを理解していないのでまずそこが課題なのですが…
線形リストを導入する前はscanf関数ぐらいしかポインタを使っていなかったんですが
サイトを見てみると結構簡単に理解できましたよ
サンプルコードを理解するより、アルゴリズムを理解して自分で作る覚え方が私のオススメです
双方向循環リストは使ってみると凄く便利で、それ以降は配列を使う事がほとんど無くなりましたね・・
参考になるかもしれないので私が練習に作ったコードを添付してみます
>このレーザーは直線メインでしょうか?
曲がるレーザーだと個々の位置の記録が必要なので
このレーザーを複数並べると言う通常弾と同じ方法になるでしょうかね・・
http://www.play21.jp/board/formz.cgi?ac ... &rln=26591
http://www.play21.jp/board/formz.cgi?ac ... &rln=17587
龍神録で言うとこの辺が参考になるかもしれません
>それにしてもチルチルさんはあっさりコードを作成なされて頭があがりません…
龍神録も良いんですが、自分で1から作るのもアリですね
複雑な弾幕を作るにはコードを自分でしっかり理解している事も重要になってきますから・・
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月14日(土) 17:18
by チルチル
>何度も本当にすみません…
これはトリさんのミスではなくて私の手抜きです・・
作る時も出たのですが途中で向きを変えない限りは問題ないのでスルーしました・・
なんでこうなるかと言うと
弾は毎フレーム前回の座標を破棄してboss_shot.base_angle[0]から再計算するので
boss_shot.base_angle[0]が変化すると全部の弾に影響します・・
他にはボスが途中で動いた場合も同じような事になりますね・・
前に角度を変化させる方法を思い付いたのですが、忘れてしまったんですよね・・
ここはboss_shot.bullet[k].base_angle[0]を使った方が良いですね、わかりやすく書き直すと
void boss_shot_bulletH002(){
int i,k,t=boss_shot.cnt;
if( t%90==0 )boss_shot.base_angle[0] = bossatan2();
if( t<1800 && t%4==0 ){
for(i=0;i<2;i++){
if((k=search_boss_shot())!=-1){
boss_shot.bullet[k].col = i;
boss_shot.bullet[k].x = 0;
boss_shot.bullet[k].y = 0;
boss_shot.bullet[k].knd = 8;
boss_shot.bullet[k].angle = 0;
boss_shot.bullet[k].base_angle[0] = boss_shot.base_angle[0];
boss_shot.bullet[k].flag = 1;
boss_shot.bullet[k].cnt = 0;
boss_shot.bullet[k].spd = 0;
boss_shot.bullet[k].state = i?1:-1;
boss_shot.bullet[k].kaiten= 0;
}
}
}
for(i=0;i<BOSS_BULLET_MAX;i++){
if(boss_shot.bullet.flag>0){
#define Speed 2.5 //スピード
#define Width 35 //半径
#define Cycle PI/(Width*2/Speed)*boss_shot.bullet.cnt //周期
double x=boss_shot.bullet.x;//座標を記録
double y=boss_shot.bullet.y;//座標を記録
boss_shot.bullet.x = boss.x;//発射点に戻す
boss_shot.bullet.y = boss.y;//発射点に戻す
boss_shot.bullet.x += cos( boss_shot.bullet.base_angle[0] ) * ( boss_shot.bullet.cnt * Speed );//進行方向に進む
boss_shot.bullet.y += sin( boss_shot.bullet[i].base_angle[0] ) * ( boss_shot.bullet[i].cnt * Speed );//進行方向に進む
boss_shot.bullet[i].x += cos( boss_shot.bullet[i].base_angle[0] + PI/2 * boss_shot.bullet[i].state ) * sin( Cycle ) * Width ;//進行方向に対して左右に揺らす
boss_shot.bullet[i].y += sin( boss_shot.bullet[i].base_angle[0] + PI/2 * boss_shot.bullet[i].state ) * sin( Cycle ) * Width ;//進行方向に対して左右に揺らす
boss_shot.bullet[i].angle = atan2( boss_shot.bullet[i].y-y , boss_shot.bullet[i].x-x );//変化前と変化後の位置から描画角度を求める
}
}
}
一応周期を一定にする計算をしています
綺麗な円を描く計算式を考えようとも思いましたが、待たせると悪いので省略しました
しかし角度を変化させる方法に比べて無駄が多すぎますね・・
何とか思い出せないかな・・
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月16日(月) 18:04
by トリ
せっかく回答していただいたのにレスがしばらくできなくてすみません…
>アイテムが2000個用意されている時にレーザーの弾が5000個あったらオーバーしてしまうって事ですね
あ、なるほど…なんか変な勘違いをしてしまっていました。
アイテムの最大とレーザーの弾の最大を一緒にしないと確かに上限越えてだめになってしまいますね…
>両端を薄くしたり細くしたりするのが簡単なのが2Dポリゴンのメリットなんですが
加算ブレンドだけではやっぱり難しいですか~
う~ん、やはり避けて通れないようですね…2Dポリゴンの勉強することにします
>これはクオリティが凄いですね
ありがとうございます
まさかこんなお言葉が頂けるとは…
素材はほとんど自作ですが、自機画像とボス画像は拝借しました。できれば公開してみたいです。
エフェクトとアシストの融合でレーザーができるんですか~
アシストを使いこなせてない自分は技術的に難しいですね…
でも、アシストが使えればいろんな弾幕作れそうなので頑張ってみます。
>自分で作る覚え方が私のオススメです
チルチルさんがそうおっしゃるなら自分で作ってみることにします
使いこなせたら便利だろうな…
>このレーザーを複数並べると言う通常弾
わざわざ過去ログのURLを教えていただいて本当にすみません、
ありがとうございます…
>自分で1から作るのもアリですね
そうですね…理解度がいまいちなんで自作も試してみます
>なんでこうなるかと言うと
破棄されていたんですか…
それでワープしていたんですね
コードまで本当にありがとうございます
なんだか頼ってばかりで本当にすみません
ところで、チルチルさんは自分でここまでコードを
すらすら作れるようになるまでどれくらい年月が
かかりましたか?
お聞かせいただければありがたいです。
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月16日(月) 19:46
by チルチル
>せっかく回答していただいたのにレスがしばらくできなくてすみません…
ページを開く前に回答が来ている予感がしたんですよね
今日の私はカンが良いようです
>アイテムの最大とレーザーの弾の最大を一緒にしないと確かに上限越えてだめになってしまいますね…
龍神録のアイテムを線形リストに置き換えるのは大変だし
アレは線形リストである事が重要なので
オーバーフローするたびにアイテムの最大数を増やすのが簡単でしょうかね・・
ちなみにアレの場合は線形リストにする事で弾数制限が無くなる事より
先頭から最後までの弾が順番に並んでいる事が重要なんですよね
>う~ん、やはり避けて通れないようですね…2Dポリゴンの勉強することにします
私が経験済みなのでわかるんですが
弾を毎フレーム登録しないと表示がガタガタするんですよね
画像の収縮率が数フレーム間隔でいきなり変わるからそうなります
まあ次の弾が登録されるまで今の弾を止めるとかいう方法もありますが・・
2Dポリゴンはsitumonさんの仰るとおり
画像が均一じゃないレーザーの場合には便利ですが
普通のレーザーなら弾を並べても作れると思いますよ
御津凪さんのレーザーのように全体でどの部分を担当しているかで濃さを調節する方法もあります
その場合は途中で消された場合の処理も必要ですが・・
あと曲がるレーザーは丸い弾を並べないとデコボコするかもしれませんが
直線のレーザーなら楕円形の弾でも大丈夫じゃないでしょうか?
あんまり長いと消す場合に不便ですが
楕円形の弾の両端を薄く細くしておけば重ねた時に先頭と最後だけ残って綺麗に表示されると思います
実際に星蓮船でも曲がるレーザーはクッキリしていて
直線的なレーザーは薄かったりしてるようにも見えますからね
2Dポリゴンは長く変形させると極端に細くなったりしますしね・・
>素材はほとんど自作ですが、自機画像とボス画像は拝借しました。できれば公開してみたいです。
素材が自分で作れるのは羨ましいですね~
>エフェクトとアシストの融合でレーザーができるんですか~
まあアレはエフェクトとアシストの融合みたいな物ですが
今回はレーザーじゃなくてアシスト兼エフェクトですね
最近の東方だとボスの後ろが歪んでいますが
永夜抄の使い魔の表示があんな感じになった物を作ろうと思っています
>チルチルさんがそうおっしゃるなら自分で作ってみることにします
まあサンプルコードが理解できないから自分で作るという理由もありますけどね・・
>それでワープしていたんですね
やはり角度を変化させる方が便利そうですね・・
そのうち自分も使うと思うので思い出せるか試みています
>ところで、チルチルさんは自分でここまでコードを
>すらすら作れるようになるまでどれくらい年月が
>かかりましたか?
この辺りは初歩的な事なので、慣れて来れば誰でも作れると思いますよ
私はプログラムを知ってから1年半ほどですが
最初の3ヶ月ぐらいは先輩にwhile文ぐらいまで教えてもらいましたが
後はこの掲示板で教えてもらったりしながらダラダラと構造体や自作関数まで理解しましたね
1年ぐらい経過した所で先輩のゲームのプログラムを依頼されてからはもう少しマジメに勉強しましたが
まだ実力不足で無茶苦茶なコードになり
先輩が就職活動で製作が凍結している間に1から作り直そうと思ったので
今度はかなり真剣に勉強して1ヶ月ほどでクラスとかテンプレートの基礎を理解して現在にいたります
なので実質的な学習期間は半年強でしょうかね・・?
まあダラダラと作ったコードも練習にはなったかもしれませんが・・
ちなみに作ったゲームは文化祭用に作ってボツになった偽ぷよぷよと
作り直しのせいで途中で放棄された弾幕STGぐらいですから
本格的なゲーム製作は今回が初めてだったりしますね・・
まあプログラム以外にやる事が無いので
最近は1日に平日は6時間、休日は12時間ぐらいプログラムしてますから
その辺は実力の向上に一役買っているかもしれませんね・・
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月19日(木) 23:51
by トリ
レスが空いてしまってすみません。
学校が忙しくてなかなかサイトに来れない状態で…。
>レーザー
2Dにもメリットとデメリットがあるんですか~
なるほど…
とりあえず、では、レーザー作成慣れするためにも
チルチルさんのおっしゃったような少し長めの弾を使ってレーザーを作るという方法で
試行錯誤をしてみたいと思います。
星蓮船のレーザーはけっこうくっきりしていますね~
寅丸とかぬえとかのレーザーもくっきりしていましたし…。
そういえば、チルチルさんは聖蓮船どこまでクリアしましたか?
自分はEXをクリアしてハードに挑んでいるところですが苦しめられている状態です。
>半年強
すごいですね…
半年ほどでこんなにスラスラとゲームプログラムが作れるようになったんですか…
やっぱり基礎が重要そうですね…
一応自分は学校で習っているので、その知識も使用したりしてゲーム作っているのですが
弾幕作成って学校の知識とあんまりつながっていないので、やっぱり別途基礎から勉強する必要がありますね…
それに今まで2個もゲームを作っていたんですか…
新作というのはSTGでしょうか?
もしよろしければどんな感じのゲームか教えて頂けませんか?
>最近は1日に平日は6時間、休日は12時間ぐらいプログラムしてます
おお…やはりこれくらいはやらないとスラスラまでいけないんですね~
さすがです
自分も努力をしないといけませんね…
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月20日(金) 00:38
by チルチル
>そういえば、チルチルさんは聖蓮船どこまでクリアしましたか?
う~ん弾幕STGは苦手なのでイージーをクリアするので精一杯です
EXとかはリプレイで確認しました
やはり自分が下手だと作る時にも影響するようで
私の作った弾幕は各方面から理不尽と言う意見を頂いています
>一応自分は学校で習っているので、その知識も使用したりしてゲーム作っているのですが
ちなみに私の場合はプログラムの授業が始まる前に
部活の先輩達に3年間の授業でやる内容を2ヵ月ほどで叩き込まれましたね
おかげでプログラムの授業は毎回すごく楽でした
学校にもよりますが授業の内容では足らないでしょうね・・
>弾幕作成って学校の知識とあんまりつながっていないので、やっぱり別途基礎から勉強する必要がありますね…
弾幕STGを作り始める前は本家の弾幕も純粋に楽しむために見ていたのですが
始めてからは弾幕に使われている計算式を想像しながら見るようになりましたね
最近では弾幕を見ると計算式が何となくわかるようになったんですが
そのぐらいでやっとスタートラインに立った気がします
>新作というのはSTGでしょうか?
過去ログの時に作っていた弾幕STGのコードを1から作り直したものですね
旧バージョンは基礎部分を作った時の実力が低すぎて足手まといになって来たので
プロジェクトが凍結中の今を利用して再構築しているところです
内容としては完全な東方の2次創作ですね
まあ企画者である先輩の構成と私のプログラムが
おかしな不協和音を作り出して妙な世界観が展開されていますが・・
>自分も努力をしないといけませんね…
私がそうだったんですが
やはり1人で作っているとダラダラ作っても周りに迷惑が掛からないので
何となくいい加減になってしまって成長しない事があるんですよね
やはり上達するにはある程度のプレッシャーが必要だと思うんですよ
私も共同制作を始めてからはダラダラ作っていると先輩に怒られるので真剣に製作するようになりました
手っ取り早いのは誰かと合作する事なんですが、そう簡単には行かないですよね
それで物は相談なんですが、解決するついでに
この場を借りて「あと〇ヶ月でゲームを作って公開します」と宣言してみてはどうですか?
そうすればそれなりに緊張感が得られて上達が速くなるかもしれません
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月21日(土) 00:32
by トリ
会話の途中なのに解決マークをチェックして
戸惑わせてすみません…
毎度レスありがとうございます。
>EXとかはリプレイで確認しました
自分もイージーでも確かに難しいです、ノーマルはイージーにほんの少し毛が生えたような感じで、EX出してクリアしたのも奇跡みたいなもんなんで…東方は全体的に難易度が高いと思います
>3年間の授業でやる内容を2ヵ月
なんというか…密度が高すぎて真似できないですね…
自分がどれだけだらだらとC言語の勉強をしているか痛感させられました…(笑)
>弾幕を見ると計算式が
なんと…
そんな世界を自分も味わってみたいです…それにしてもその感覚は研ぎ澄まされているというか
悟りを開いているというような…
>完全な東方の2次創作
東方のキャラクターもでてくるのでしょうか?それともオールオリキャラでしょうか?
>物は相談なんですが
なるほど…制限時間を設けるのですね~!
いついつまでに完成させるということを全然意識していませんでした…(笑)
では、ここで公言しておきます。
今年中には完成させます。
ホームページにサンプル画像をupしているので、一応URLをはっておきます。
http://tourutarou.web.fc2.com/index.html
HNがトゥル太郎になっていますが、トリと同一人物です。
すみません、ややこしいですね…次回からはここでもトゥル太郎と名乗るよう統一します…。
タイトルは「東方桃源郷」で、ストーリーは、秋なのに、一日中夜みたいに暗く、雪が降るという異変を
霊夢が解決するというそんなストーリーです。
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月21日(土) 02:11
by チルチル
>会話の途中なのに解決マークをチェックして
本題は一区切りついたようなので解決にしても大丈夫だと思いますよ
解決にした後も話が続く事は良くありますしね
>東方は全体的に難易度が高いと思います
やりなれている人にはちょうど良いんでしょうかね・・
以前Meを使っていた頃は処理落ちさせて足掻いたりもしましたが
Vistaになってからは完全に諦めムードです・・
>なんというか…密度が高すぎて真似できないですね…
まあ3年分と言ってもwhile文ぐらいまでですから
むしろ授業の方が薄い事になりますね・・
>それにしてもその感覚は研ぎ澄まされているというか
計算式を考えていると、何故か最近の作品はわかりやすいんですが
初期の作品はむしろ計算式が浮かばないんですよね・・
特に永夜抄の後半はわからない物が多いです
>東方のキャラクターもでてくるのでしょうか?それともオールオリキャラでしょうか?
先輩いわく「オリキャラはクレームが来る」らしいので本家のキャラだけで作るそうです
本家と違う所と言えば主人公が「てゐ」で、物語が異変で始まらない事ですね
>今年中には完成させます。
今年中ですか~それは楽しみですね
私も凍結が続く今年中に龍神録で言う60章ぐらいまで作らなくてはいけないので励みになります
>ホームページにサンプル画像をupしているので、一応URLをはっておきます。
ホームページを見てみたんですが、トリさん絵うまいですね!!
スナップショットを添付していただいた時からただ者じゃないと思っていたのですが
やっぱり絵がうまかったんですね、あの画力は羨ましい限りですよ
>タイトルは「東方桃源郷」で
あ~そういえば関係無いですけど
私の1作目のパズルゲームの最初の名前は「東方闘源郷」だったんですよね
まあ先輩から「東方〇〇〇はNG」と言われたので最終的に「Ragnarok」になりましたけど
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月22日(日) 14:23
by トゥル太郎(=トリ)
>まあ3年分と言ってもwhile文ぐらいまでですから
そうなんですか~
他のC言語の知識を自分で補完するのが大変そうですね…
でも2カ月で終わるのはやっぱりすごいと思います
>計算式を考えていると
永夜抄の後半の輝夜とかはもう何が何だか状態です。
最近の方が思いつきやすいんですか~
ちょっと自分も星蓮船や地霊殿で研究してみようと思います
>主人公が「てゐ」
てゐですか~どんなゲームになるのか楽しみです
永夜抄軍団がけっこう絡んできそうですね
>私も凍結が続く今年中
60章と言うと3D背景ですね~
3D背景はやはりクオリティを上げるには結構重要なポイントですね
そういえば無料公開でしょうか?コミケとかで販売なんでしょうか?
>ホームページを見てみたんですが
絵うまいなんて褒めて頂けるとは…ありがとうございます…
チルチルさんの方が明らかにただ者じゃないですよ~!
レーザーの過去ログで高校生と書かれていましたが、
過去ログ見るまでは大学生か理科系の社会人かと思っていました。
>「東方闘源郷」
一文字違いですね~
と思ったら読みが同じで吹きました(笑)
>「東方〇〇〇はNG」と言われたので最終的に「Ragnarok」
コミケとかで売る場合だったら東方○○○はやばそうですね…
そういえばRagnarokは本家と同様に6ステージですか?
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月22日(日) 17:07
by チルチル
>トゥル太郎(=トリ)
まあ次のスレッドからは「トゥル太郎」で良いと思いますよ
>他のC言語の知識を自分で補完するのが大変そうですね…
最初の方は調べ方がわからなくて苦労しましたね・・
"C++"の"C"の部分を理解するのは大変でしたが
"++"の方の基礎は1ヶ月で理解したので少しは成長したようです
>そういえば無料公開でしょうか?コミケとかで販売なんでしょうか?
先輩いわく「20枚ぐらい売る」らしいです
まあ売った後はここで公開させていただく事になると思いますけどね・・
そもそも売るだけのクオリティがあるか怪しいんですよね・・
過去ログの最後でsitumonさんにテストプレイしてもらった時は意外に好評だったんですが
先輩には「どう見ても弾幕風が上だろ」って言われましたからね
まあ再構築した理由はそこなんですが・・
と言うか製作開始の時点から完成予定日がどんどん伸びて行ってるので完成するかも怪しいですね・・
>チルチルさんの方が明らかにただ者じゃないですよ~!
いやいやそんな事は無いです
私のコードは簡単な処理を沢山集めて性能を上げているので実力はそれほど高くないですよ
俗に言う「時間さえあれば誰でもある程度の物は作れる」って言う事ですね
私は時間だけは結構ありますから・・
>そういえばRagnarokは本家と同様に6ステージですか?
先輩から文化祭の1ヶ月前に作れと言われたので
ステージを作る時間が無くて対戦モードだけですね・・
アレは本当にボツになって良かったですよ
当時は悪ノリしていたので東方なのにサブタイトルが「暴力的幻想パズル」ですから・・
内容も無茶苦茶なスペルの応酬ですしね
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月24日(火) 22:03
by icon
私もチルチルさんに質問なんですが。
過去ログの
http://www.play21.jp/board/formz.cgi?ac ... &rln=38530
No:38492、No:38496、の画像はどういったものを使っていますか?
どういう感じにああいった画像の演出をやっているのか気になります。
先端のほうは尖っていて透明度も変えてるみたいです。
僕も同じようなのを作りたいので教えてください。
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月24日(火) 23:00
by チルチル
>No:38492、No:38496、の画像はどういったものを使っていますか?
何か期待を裏切るようですが龍神録素材に手を加えたものですね
原型はこれです
>どういう感じにああいった画像の演出をやっているのか気になります。
普通に2Dポリゴンで引き伸ばしているだけなので
演出は何もやっていませんね、元画像が良いと楽ですよ
>先端のほうは尖っていて透明度も変えてるみたいです。
元画像の段階で尖っていて透明度があるので
引き伸ばすだけであんな感じになります
>僕も同じようなのを作りたいので教えてください。
変形させる場合は変形前と変形後の形が違う方がうまく行く事もあるようです
レーザーは楕円形ですが元画像はカプセル型ですね
ちなみに過去ログのアレはなかなかベストショットで
動いているとチカチカして結構気持ち悪いですよ
あと画像を引き伸ばす構造上
長くしすぎると先端が薄くなりすぎたりもします
まあ表示はそこそこ綺麗ですが結局アレは失敗作なんですよね・・
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月24日(火) 23:12
by チルチル
あと参考になるかもしれないので他の使用例も添付します
直線と曲線は上の画像を拡大した物を
環状は太さをそろえた物を
それから2Dポリゴンに使う画像は分割読み込みできないので色ごとに切り離しました
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月24日(火) 23:13
by チルチル
重いので分けました
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月24日(火) 23:14
by チルチル
さらに分けました
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月24日(火) 23:14
by チルチル
なおも分けました
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月24日(火) 23:16
by チルチル
何か無駄に多くなってしまいましたね
すいません、血迷いました・・
また気になる事があったらお気軽に質問してください
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月24日(火) 23:28
by icon
チルチルさんありがとうがざいます。
あれは弾を重ねてるのかな、と思っていたのですがやはりそうでしたか。素材も重要でしたね。
添付ファイルゆっくりみてみます。また何かありましたらお願いします。
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月24日(火) 23:36
by icon
弾は重ねてませんね・・勘違いorz お恥ずかしい・・
またお願いします。
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月27日(金) 08:47
by トゥル太郎
>"++"の方の基礎は1ヶ月で理解したので
自分も++を勉強しないと…
短くコードがかけるらしいですし…
>先輩いわく「20枚ぐらい売る」
ゲームの画像をアップされているようなので見てみましたが
クオリティ十分高いと思います
陰陽玉とかかなりカッコいいですね
>簡単な処理を沢山集めて性能を上げているので
これって結構重要なことではないのでしょうか
難しいものを使うと、修正とか変更をするときに、大変だと思うのです。
>対戦モードだけですね
対戦というと2人でですか?花映塚のような感じでしょうか?
処理が多そうで大変そうですね
ここでどうでもいい話ですが1面ルーミアの拡散レーザー完成記念に画像をアップしてみます。
名前が秋静葉になってたりスペカ名が表示されてなかったりとおかしいですが(笑)
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月27日(金) 16:29
by チルチル
>短くコードがかけるらしいですし…
まあカプセル化を守る為にメゾットが増えて長くなったりもしますけどね・・
>陰陽玉とかかなりカッコいいですね
何か陰陽玉って冷静に考えると切れ目が無いから普通の大玉と同じなんですよね
永夜抄の霊夢が出してくる陰陽玉と変わりなかったりして・・
そもそもアレは新バージョンに引き継ぐか微妙な所なんですよね
先輩に言っていないので私の構想の域を出ませんが
新バージョンではエフェクト付きアシストで代用しようと思っています
と言うか星蓮船でレーザーが強化されたので
他がやっていない事をしないと勝負にならないんですよね・・
>難しいものを使うと、修正とか変更をするときに、大変だと思うのです。
難しいと言うよりは短く書けないんですよね
同じ処理だったら短く書いた方が修正が容易な気がするんですよ・・
>対戦というと2人でですか?花映塚のような感じでしょうか?
まあキーボードを2人で使うので狭いですよ~
フィールドが2つ並んでいて、お互いにブロックを送り込みます
>処理が多そうで大変そうですね
内容が少ないので処理は少ないですが
当時は関数化を知らなかったので全部ループでやりました・・
>ここでどうでもいい話ですが1面ルーミアの拡散レーザー完成記念に画像をアップしてみます。
何かもうパッと見ただけで私の完敗ですね
プログラム以前に素材作成能力で完全に負けました・・
背景とか魔法陣とか、もう私にはどうやったら
あんな綺麗なのが作れるのか見当も付きません
ドット絵は拝借しているそうですが
あれだけの画力があるなら十分自作できるのではないでしょうか?
それから弾幕デザインでも私は負けている気がしますね
本家をやりこんでいないので添付画像のようなレーザーも思い付かないです・・
しかし添付画像1枚でこれだけクオリティが伝わってくるとなると
完成したらどれだけ凄いものになるか今からとても楽しみです
私の方は先行きが怪しいですが、これだけ凄いものを見せられたら私も負けていられませんね
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月27日(金) 16:43
by softya
蛇足ですが。
>>"++"の方の基礎は1ヶ月で理解したので
>自分も++を勉強しないと…
>短くコードがかけるらしいですし…
最近良く、C++だと簡単になる or 楽が出来る or 作りやすい って話を初心者から聞くんですが都市伝説として流行っているんでしょうか?
少なくとも大量のコードを書かない限りC++のメリットって見えてこないと思うんですが。逆にコードが増えることの方が多いですよね。うまく書けばメンテナンス性やソースコードの可読性などメリットも多いですが初心者がうまく使えるはずも無く・・・。
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月27日(金) 17:40
by チルチル
>softyaさん
私の周りでもそういう話を聞く事があります
できる事が増えるので選択肢は増えますが
やる事も増えるのでコードはむしろ長くなる傾向がありそうですね
>トゥル太郎さん
また平安カフェオーレを見てみたんですが新しく加わったムラサの絵も上手すぎますよ!!
これはサイトの将来が楽しみなのでお気に入りに追加させていただきました
Re:sin波ショットや円運動ショットについて
Posted: 2009年11月29日(日) 14:33
by トゥル太郎
>エフェクト付きアシストで代用
おぉ…かなり期待です。
陰陽玉にエフェクトで後ろに炎をゆらゆらさせるとかっこよさそうですね~
アシストが使えるのは羨ましい限りです
>お互いにブロックを送り込みます
花映塚っぽいですね~あんな対戦が再現できるとは…
ブロック送り込みというのもかなり面白そうですね。
>内容が少ないので処理は少ないですが
そうなんですか、キャラの情報や弾の情報が二人分用意したりしなきゃならない気がしたので
多そうに思いましたが
処理が少なく済むんですね
>何かもうパッと見ただけで
いえいえ、実際プレイして見るとかなりしょぼいですよ…
ドット絵はちんぷんかんぷんです
>添付画像のようなレーザー
5面ナズーリンのグレイテストトレジャーのような感じです。
>今からとても楽しみです
そう言って頂けるとすごく励みになります!
>チルチルさん
わざわざお気に入りして頂いて本当にありがとうございます!
これからもどうかよろしくお願いいたします!
>softyaさん
そうなんですか~
では、Cを極めていくだけでも十分かもしれないですね