ページ 11

プログラミングには関係ありませんが…

Posted: 2009年3月06日(金) 21:01
by あ~る
初めまして、結構前からこのサイトで勉強させてもらっていた者です。
今回聞きたいのは、ゲーム製作とは関係ないのですが、コミケとかで、東方に似てる(キャラクターが出たり会話があったり)オリジナルの弾幕シューティングを出す事は大丈夫でしょうか?
というのは、つまりパクりだとか言われるもんなんでしょうか?
自分自身も自分の周りにもコミケとかの実情についてわかる人がいないので、ここの皆様ならわかるのではないかと思い聞かせてもらいました。もしわからなくても、少なくとも皆様から見て似てるゲームが売られてた場合どう思うか教えてもらえると嬉しいです。
よろしくお願いします。

Re:プログラミングには関係ありませんが…

Posted: 2009年3月06日(金) 21:39
by 御津凪
似ているか似てないかと思うのは個人差があるので、確定的にはいえません。
「ここがアレと同じじゃないか。パクリだ」と言い切る人もいれば、
「何かアレににてるなー」と思うだけの人もいます。

私は少なくともどこか似ていると思っても、ただ似ているとそう思う方ですが。
(度が過ぎるとさすがに疑いますが)

いわゆる同人の世界では、似ている部分があるのはあるとしても、
気にしないのが普通です。(むしろ愉しむ方向で)
元々は自分の製作した作品を公開・販売して、購入者や他の同人の方と交流を持つ場なのですから。
(例大祭ではそんなマナーを知らない方が多そうですが)

要は自分の好きなものを作って売るのが同人です。
(同人やってる姉を持つ私からの意見です)

# 完全オリジナルでない限り、最低でも元となった作品が何なのかを記しておく必要があります。

Re:プログラミングには関係ありませんが…

Posted: 2009年3月06日(金) 22:11
by あ~る
ありがとうございます
そうですよね、やっぱり大切なのは自分の好きな物を作るって事ですよね。
なんかこんな事質問した自分がバカみたいに思えてきました
的確なアドバイス、ありがとうございました!

Re:プログラミングには関係ありませんが…

Posted: 2009年3月07日(土) 04:10
by BEMANI
>>あ~るさん
例えば、東方の演出を自分なりに考えてそっくり真似しても
自分は「良く真似できたな~」と感心します。

ただ、オリジナルで作った!
といっても、やはり何かのゲームのここに似ていると感じる人はいらっしゃると思います。
これだけゲームが出回っていればどこか似ていても不思議でないです。
御津凪さんも仰ってますが、同じ志を持つ仲間と愉しめばよいかと思います^^


もし、無料配布などではなく、販売する際には致命的なバグを残したままにしないよう
他の方に色々プレイして頂いてゲーム全体を見直してみることをお勧めします。
お金払って固まった、起動すらできない 等ではクレーム対象になってしまうので;


同人活動やってみたいなぁ~

Re:プログラミングには関係ありませんが…

Posted: 2009年3月07日(土) 19:45
by あ~る
ありがとうございます。
テストプレイをしてくれる人ならいっぱい集まるんですけど、一緒に作ってくれる人はいませんねぇ…
まぁ一人でゆっくり頑張ります
あぁ何年後になるやら…
アドバイスありがとうございました

Re:プログラミングには関係ありませんが…

Posted: 2009年3月07日(土) 20:01
by 桃印
 はじめまして。

 ネタかぶりだとかは気にする必要ないと思いますよ~。
 もうこのご時世、殆どのことはやられちゃってますから。何かと「○○は□□のパクリ」といちゃもんつける人はいると思いますが、気にする必要はありません。突き詰めてしまえば、STGなんてインベーダーゲームのパクリになっちゃうわけですし(笑
 そういう部分を気にするぐらいなら、ゲーム自体の完成度を上げて「文句を言わせない面白さにしてやる!」ぐらいの勢いで製作したほうがいいかもしれません。やっぱりオリジナリティそのものより、面白さの方が大事だと思いますよ~。

 余談ですが、私なんかは「面白いゲームをやる」→「こんなゲームが作りたい!」で実際に作っちゃうパターンなので、いつまでたってもオリジナルゲームが作れなかったり。でも、それはそれで楽しいものです。

Re:プログラミングには関係ありませんが…

Posted: 2009年3月08日(日) 11:53
by あ~る
アドバイスありがとうございます
じゃあ逆に東方に似てるって言われたら褒め言葉として受け取るようにします(^-^)
気にせず面白いゲームを目指して頑張ります

>いつまでたってもオリジナルゲームが作れない
その気持ちすごくわかる気がします
僕もほんとは最初東方の二次創作してからオリジナルのゲーム作ろうと思ったんですけど大学受験までの時間を考えるとちょっときつかったんです…

Re:プログラミングには関係ありませんが…

Posted: 2009年3月08日(日) 20:19
by Dixq (管理人)
やめといた方がいいんじゃ無いかと思います。
過去の悲惨な例・・・、詳しくはメールを送ってくだされば回答します。
東方関係が好きな人ってすごく色んな人がいます。
少しでも設定が違ったり、気に入らない要素があると鬼の首取ったみたいに責める人がいます。
そうでなくても・・。

私も詳しいわけではないので、偉そうな事はいえませんが、
東方のことを完全に理解し、応用する場合もどのように応用すれば受けられるかよくよく考えた上で制作出来るというわけではないのなら
東方のキャラを使ったシューティングという類は安易に手を出さない方がいい気がします。
例えば東方の事をよく知らないのに二次創作なんかしたら救えないほどトラブルになる気がします・・。
(特定の人物が行う行為について言っているだけであって、私自身東方は好きですし、誤解の無いようお願いします)

後、これとは別ですが、

>>パクリだと言われるのでしょうか

について一般的なコメントをします。
批判はどんなものにも付き物ですし、
意見、批判や、もっいっても中傷に属するコメントでも非常に重要なものです。
企業なんかは苦情データというものはお金を出しても買っています。
「褒め言葉」からはほとんど吸収出来る事はありません。批判や苦情にこそ自分が成長出来る要素が含まれています。

この件での回答はなかなか難しいですが、(東方キャラを使わないという条件で)
批判を受けたくない、オリジナルとして認められたい、という場合なら完全に独自の方法で独自の路線で作った方がいいでしょう。
そうではなく、お手軽に制作を楽しみたいとか、批判があってもいいから一回作ってみたいとか、経験して改善すればいいと思っている場合は元々あるものを利用する、何かを真似るというのもありだと思います。

しかし「販売」となると金銭的なトラブルが付きますので、素材利用などの利害関係などは充分注意して下さい。

Re:プログラミングには関係ありませんが…

Posted: 2009年3月09日(月) 01:04
by あ~る
アドバイスありがとうございます。
やっぱり東方の二次創作で弾幕シューティングを作るのはやめた方がいいんですね…
でも僕は東方をやって弾幕シューティングに惚れて、弾幕シューティングでゲームを作りたくなってプログラミングを勉強し始めましたし、もうストーリーの方は出来上がって、形にするのが今凄く楽しみなんです。
だから一回作るだけ作ってみようと思います
アドバイス本当にありがとうございました。そしてきっと作っていく上でこのサイトのお世話に何度もなると思いますので、これからもよろしくお願いします

Re:プログラミングには関係ありませんが…

Posted: 2009年3月09日(月) 09:11
by 桃印
 すいません、どうしても突っ込みたくなったんで書き込まさせていただきます。

 確かに今の東方界隈は色々な事情でピリピリしている感はあります。普通に公開するよりも、厳しい意見が多く出てくることあるでしょう。ただそれは規模の問題で、結局は「面白いか」「面白くないか」に集約されてしまうと思います。そこに東方であるかそうでないか、なとは一切関係ありません。
 一部の心無い発言もあるかもしれませんが、そんなんはたいていにわかの戯言なので鼻で笑っておけばいいと思います(批判を批判しているのではなく、あくまで「本質を理解しようとしない程度の低い批判」のことです)。

 あと、東方の事をよく知らないのに二次創作なんかしたら批判されるのは当たり前だと思います(笑
 というか東方じゃなくても批判されることでしょう。二次創作はファンが行うものですから。ファンでもないのに名前を借りるというのは「とりあえず東方ってつけときゃホイホイできるだろ」って言ってるようなものですから。幸いあ~るさんはきちんと東方をプレイされてるようで、よほどのことがない限り問題ないと思います。
 まーここら辺は同人活動をやっていてるから言えることなのかもしれませんが。外から見るだけでは相当混沌とした魔窟に見えることでしょう(笑

 ここまで書いたことから分かる通り、私も東方の熱心なファンの一人なので、あ~るさんの作品を心待ちにしています。でわ。

Re:プログラミングには関係ありませんが…

Posted: 2009年3月09日(月) 12:00
by 一見
>そんなんはたいていにわかの戯言なので鼻で笑っておけばいいと思います

それはどうかね。
HP閉鎖にまで追い込まれたり、HP攻撃されたり、笑ってられないような状態になるほど追い詰められた事例はありますよ。
気持ち悪いほど粘着する厨もいますし、「そういう輩はほっとけ」ですまない状況になることもあります。
東方関連はそれが特に多いと。
それが「過去の悲惨な例」とかじゃないのかな。

>そこに東方であるかそうでないか、なとは一切関係ありません。

というのも違うかと。
東方がこれだけ人気でて、しかも偏った知識や偏った見方の人間も増えているなかで、
東方の二次創作が特定の人物によって批判される可能性は他の二次創作よりはるかに高いかと。
東方厨って言葉がある位だからね。

っと、これ以上東方の話題をここで出すのもあれなんで、一言コメントとさせてもらいます。

Re:プログラミングには関係ありませんが…

Posted: 2009年3月09日(月) 22:06
by あ~る
みなさんアドバイスありがとうございます。
なんとなく、みなさん考え方の違いはあれど、東方の二次創作をコミケとかに出品するのが危険そうなのはわかりました。
作るにしても個人で楽しむ程度にしときます。

それとは別に、(オリジナルストーリーの)弾幕シューティング自体を作って出品するのは大丈夫でしょうか?
要するに東方以外の弾幕シューティングをコミケに出品するのは何か暗黙の了解みたいな感じでタブーになってるみたいな事はないでしょうか?

Re:プログラミングには関係ありませんが…

Posted: 2009年3月09日(月) 22:20
by Dixq (管理人)
誤解をさせたり、二次創作への懸念を増大させてしまったりしたらすみません。
ZUNさんも「重要なのはオリジナルを尊重する事」と仰っていますし、
しっかりと原作を理解し、尊重し、敬う姿勢を持って制作すれば問題はおきにくいかとは思います。
私は販売の経験はありませんので、実際の詳しい事は他の方に回答を受けていただければと思います。

オリジナルのSTGを出すだけなら全く問題ないと思いますよ。
後、ここのコードを引用される場合も、コピーでなければ使っていただいて構いませんし。
ただもし商品化するなら、全て配列として用意している部分をベクターにするとか、リストにするとか、
他にも色々と効率化を図ったほうがいいかもしれません。

Re:プログラミングには関係ありませんが…

Posted: 2009年3月09日(月) 22:33
by あ~る
ありがとうございます。
オリジナルなら問題ないですよね、やっぱり
度々アドバイスありがとうございます。ほんと迷惑かけます…

ここのコードはありがたく使わせてもらってます。
勉強しつつ関数名とか自分にわかりやすいようにいじらせたりもさせてもらってます(^^)
というか僕が使ってるのがVisualC++じゃなくて BorlandC++だから微妙に違くて大変なんですよね(-.-;)
しかも↑に書いたように勝手に関数とか変数の名前変えてどれがどれかわからなくなったりするという…(←⑨

Re:プログラミングには関係ありませんが…

Posted: 2009年3月10日(火) 16:25
by 夢の旅人
周囲から東方厨といわれている、元とある高校の新聞部のモノです。w

大分結論が出ているようのなので、個人的な感想だけなのですが・・・

1.何をしたところで、マナーを知らない(熱狂的な)人のクレームは(程度の差こそあれ)ある。
2.あとは気の持ちよう(作者の姿勢等々)

確かに、1ジャンルとして「東方」というのができあがって、いろいろとおかしな雰囲気とか流れみたいなモノはありますが、大概の作品は受け入れられると思います。

あとはどれだけ作品に情熱とかを詰めこめられるかですよ。
廊下や教室に捨てられていたり、「だからどうしたんだよ…」とか言われて、その度に挫けては前に進めないのです!!w
むしろ、アドバイスだと思って次の作品を良くしましょう!!!!

あ、原作があるならそれに対するリスペクトとか、そういった作者の姿勢が見れるほうがいいと思います。

要するに、作品の体験版があるならまってますw

趣味に留めるにしても、実行するにしても、頑張ってください!

Re:プログラミングには関係ありませんが…

Posted: 2009年3月10日(火) 16:39
by あ~る
ありがとうございます。
やっぱり何かしらの批判があるのは不可抗力だと思って割り切る事にしました。
で、今考えてるのは批判を緩和する方法。
何かオリジナルティがあれば批判も減るんじゃないかと(スペルカードシステムに変わるシステムは思い付きそうにないですが…(^^;))
何はともあれ頑張ってみます!体験版が出来るのはいつになるかわかりませんが…(笑)
アドバイスありがとうございました

STGプログラミングについて

Posted: 2009年3月16日(月) 14:48
by エデリュス
ゲームプログラミングを全部読んだのですが
・1面以上増やす場合どうすればよいか?
・多くのボスを描写するにはどうすればいいのか?
・敵が極太レーザーを撃つにはどうすればよいか?
の三つがよくわかりません。
どなたか教えていだたけませんか?
お願いします。

Re:STGプログラミングについて

Posted: 2009年3月16日(月) 15:24
by 朽木
とりあえず、自分で「こうなんじゃないかな~」て考えている事はありますか?

Re:STGプログラミングについて

Posted: 2009年3月16日(月) 15:47
by エデリュス
レーザーと面については考えたことがあります。
ただ単純に太いレーザーを表示したことはありますが「放たれた」って感じがあまりなかったです。

面についてはできている1面をベースにコピーして増やしたことはありますがボスを倒す→スコア画面→二面が始まるができず・・・

ボス描写はまるっきりわかりません。
やはり自分で試行錯誤しながらやるべきなんでしょうか?

Re:STGプログラミングについて

Posted: 2009年3月16日(月) 16:32
by 朽木
とってもシンプルなのが、通常の敵と同じように扱ってしまうことでしょうか。
struct 敵情報 {
    /* HPなどの敵情報 */
    struct 特殊フラグ {
        bool ViewLife; /* HPゲージを表示するかしないか */
        void ( *DiedFunc)(適当な引数の型); /* 死んだ時に実行する関数(進行管理に終了を設定するなど) */
    }
}
あと、基本ですが、フローチャートを書いてみる、というのも良いかもしれません。

Re:STGプログラミングについて

Posted: 2009年3月16日(月) 16:41
by Dixq (管理人)
お読みになったのは龍神録プログラミングの館でしょうか?
レーザーの作り方についてはそちらに書いてあるのでよければ参考にして下さい。
太くする方法もすぐわかります。
また、ボスについても、わざと増やしやすいように

boss_t boss;

のように宣言してあり、増やした時に計算もしやすくしてありますので

boss_t boss[2];

みたいに用意すれば2体出現させることが出来ます。
for文などちょこちょこ変えないといけないところはありますが。

とりあえず土台が何かを教えてもらった方が回答し易いと思います。龍神録の館でしょうか?

Re:STGプログラミングについて

Posted: 2009年3月16日(月) 16:47
by hss12
ステージに関してはswitch文を使うのが一般的です。
ゲームプログラミングの館の34節ですね。
ステージ1、ボス1、スコア、などと分ければできます。
数字だと分かりにくいので、defineやenumで宣言すると良いです。
enum{TITLE,STAGE1,BOSS1,SCORE,STAGE2,BOSS2};
などと。

レーザーはパターン画像を順番に表示してって感じでしょうか。
昔のシューティングに良くあったので研究してみると良いと思います。
敵が撃つのなら予兆があると良いですね。

ボスの描写は質問の意味が分かりません。

Re:STGプログラミングについて

Posted: 2009年3月17日(火) 14:17
by エデリュス
返信遅れてすみません。

>朽木様
なるほど・・・普通の敵として表示するというのは気づきませんでした。早速やってみたいと思います。
>Dixq (管理人)様
龍神録プログラミングの館の方を読みました。レーザーというよりは魔理沙のマスタースパークのようなもので
すのでhss12様の方法でやってみたいと思います。
>hss12様
ステージ、レーザーに関しての説明ありがとうございます。ボスの描写は説明不足でした。要するにボスを途中で変化させたり2対1のようにしたいということです。

PS
プログラミングの館を読み返してみましたがやっぱりできません。34節をどこに入れるべきですか?

Re:STGプログラミングについて

Posted: 2009年3月17日(火) 18:53
by hss12
どこといわれてもそのままだと思いますが。
#define TITLE 0
#define STAGE1 1
#define SCORE1 2
#define STAGE2 3
#define SCORE2 4

とでもしておいて
whileの中に
switch(state){
  case TITLE:
    //タイトル画面の処理
    state=STAGE1;
    break;
  case STAGE1:
    //ステージ1の処理
    if(クリア)state=SCORE1;
    break;
  case SCORE1:
    //スコア表示
    state=STAGE2;
    break;
  case STAGE2:
    //ステージ2の処理
    if(クリア)state=SCORE2;
    break;
  case SCORE2:
    //スコア表示
    state=TITLE;
    break;
  default:
    DxLib_End() ;  
    return 0;
    break;
}
のような感じでいけませんか。工夫すればスコアは1つですみそうですが。
ボスを途中で変化させるなら、同じようにswitchでいけそうですね。

Re:STGプログラミングについて

Posted: 2009年3月17日(火) 19:09
by conio
caseが増えると列挙体の方が便利かもしれませんね。
こういう風にしても良いと思います。

enum StateID{
  TITLE,
  STAGE1,
  SCORE1,
  STAGE2,
  SCORE2
};

StateID state = TITLE;

switch(state){
 case TITLE:
//以下略
}

Re:STGプログラミングについて

Posted: 2009年3月17日(火) 19:53
by エデリュス
hss12様、conio様
ありがとうございます
一応mainに入れてみましたが「定義されていない識別子」と言われ実行できません。

Re:STGプログラミングについて

Posted: 2009年3月17日(火) 20:04
by hss12
定義されていないのだと思いますが、それではわかりません。
何行目とか、何が定義されていないとか書いていないですか?

Re:STGプログラミングについて

Posted: 2009年3月17日(火) 20:14
by conio
hss12さんの方はstateの変数を省略してあるので、それが原因でしょうか。

int state = TITLE;
みたいな。

あとはスペルミスなどの可能性もあるかもしれません。

Re:STGプログラミングについて

Posted: 2009年3月17日(火) 20:27
by エデリュス
出てきたのは

「1>c:\users\rpg\desktop\project\AA\mydat\source\main.cpp(24) : error C2065: 'state' : 定義されていない識別子です。」



「1>c:\users\rpg\desktop\project\AA\mydat\source\main.cpp(28) : 'state' の宣言を確認してください。」

です。

Re:STGプログラミングについて

Posted: 2009年3月17日(火) 20:36
by conio
原因はstateでしたか。
"state"という変数を定義すれば解決すると思います。

Re:STGプログラミングについて

Posted: 2009年3月17日(火) 20:46
by エデリュス
定義ですか・・・
宣言とは違うんですよね?

Re:STGプログラミングについて

Posted: 2009年3月17日(火) 21:18
by hss12
宣言と定義の違いは他の方にまかせるとして
int state = TITLE;

と書けば宣言と定義、両方やっていることになるのかなと思います。

Re:STGプログラミングについて

Posted: 2009年3月17日(火) 21:46
by はね
レーザーについてですが、解決済みかもしれませんが
マスタースパークなら

if(敵x座標<自機X座標+レーザー幅の半分 && 敵x座標>自機X座標-レーザー幅の半分){}
みたいな簡単な処理でできそうですね。

数式でやるならば
if( (敵X-自機X)^2 <レーザー幅の半分^2 ){}
でできますね。

紅魔卿しかやったことないですがマスタースパークってこんなだったような。

Re:STGプログラミングについて

Posted: 2009年3月17日(火) 21:49
by conio
宣言と定義は違いますよ。関数の場合はこんな感じです。

int Sum( int a, int b);  //宣言

int Sum( int a, int b)  //定義
{
 return ( a + b );
}

で、変数の場合は 定義=宣言も兼ねている なので、定義すれば上記のエラーや警告は消えると思います。
宣言だけを行いたい場合は"extern"を使います。

int x;  //宣言&定義
extern int x; //定義ではない宣言

【定義】名前(識別子)が宣言されて,実際にメモリ領域を割り当てる.
【宣言】名前(識別子)が宣言されるだけで,メモリ領域は割り当てない.

Re:STGプログラミングについて

Posted: 2009年3月17日(火) 22:00
by yu
>>はね様
>if(敵x座標<自機X座標+レーザー幅の半分 && 敵x座標>自機X座標-レーザー幅の半分){} 

言わなくていいことかもしれませんが・・・すみませんm(_ _;)m
これだと自機の後ろでもレーザーが当たってしまうような
自分も紅魔卿イメージです。

if(敵x座標<自機X座標+レーザー幅の半分 && 敵x座標>自機X座標-レーザー幅の半分&&敵y座標<自機y座標){}  

マスタースパークの場合です。
マスタースパークは前方全ての範囲ですが、レーザーの長さも考慮したほうが良いかもしれません。

Re:STGプログラミングについて

Posted: 2009年3月18日(水) 00:17
by はね
yu様
補足ありがとうございます。
確かにこれだと下でも当たりますね。
恥ずかしい話、y座標を忘れていました。

>レーザーの長さも考慮したほうが良いかもしれません。
そうですね。敵が画面に入っている時だけ当たるようにするとか、
レーザーのy範囲を自機からy=0までの長方形で考えるとかですかね。
まぁ、ここら辺はゲームの仕様というか好みの問題な気もしますが。


↓↓編集追記↓↓
読み返して気付いたのですが、当たり判定ではなく表示のさせ方の質問みたいでしたね。
勝手に当たり判定の質問かと解釈して先走ってしまいました。スミマセン。
それと、自機ではなく、敵の攻撃でしたね。重ね重ね申し訳ないです。

Re:STGプログラミングについて

Posted: 2009年3月18日(水) 20:27
by エデリュス
hss12様
conio様
おかげさまでだいぶエラーを抑えられました。
表示もできました。
ありがとうございました。

yu様
はね様
マスタースパークについてとても参考になりました。
あとはレーザーを描ければ・・・

質問にかかわってくださった皆様
本当にありがとうございました。