TOP > フォーラム > カードヒーロー勝手に開発計画

カードヒーロー勝手に開発計画

トピック一覧に戻る

[130] カードヒーロー勝手に開発計画 (gitti)[2009年04月12日 18:01]
お久しぶりです。gittiです。知らない方は初めまして。

カードヒーローを自作しようと思っています。
そこで、開発のヒントなどを頂きたくこのようなトピックを作成させていただきました。
ある程度形になればお見せしたいと思っていますが、主に自己満足でやってることなので、要望があっても応えるとは限りません。

カードヒーローOnLineの存在は一応知っていますが、この開発の目的はコンピュータの思考パターンを洗練することです。その議論をする段階にはまだ至っていませんが・・
ちなみに、ここはバグ&修正報告所としたいので、戦術論はこちらに書き込んでください。
→http://www.cardhero-bu.com/forum/topic.php?id=136

こちらのURLから自作カードヒーローをダウンロードできます→http://www13.atpages.jp/gitti/

開発OS:Windows XP
開発環境:Visual C++ .NET
使用言語:C++

↓DS版オリジナルからの変更点
続きを読む
続きを読む
ここに挙げた要素に対して「それは変えすぎor意味ない」というツッコミは入れてくれてOKです。
進捗によって随時この内容を書き換えていきます。

記号について
◎←ほぼ実装が完了しているもの。変更可能かどうかは物によります
○←ある程度実装済みのもの
・←現在未実装のもの(無くす要素は実装しないので全てこの印にしてます)

<無くすカード、要素>
・Pro以外のルール(ただしJr用のマスターは存在しています。メイクカードできるけど)
・ヤミー
・ロストーン
・モーガン
・シャムーラ
・ノワール(ただし、ルージュの消費Sは0にする)
・誘惑
・墓荒らし
・シフトチェンジ

<追加するカード、要素>
◎バーサクン 性格「気力」を持つ。ダメージを受けるたび気合だめする
◎セイバー 性格「魔法剣」を持つ。[M]の効果を受けていないと特技を使えない
◎ウェイカー 性格「還元」を持つ。魔法効果によって登場したとき、味方マスターのS+2

<変更するカード、要素>
◎見た目的なもの、操作系
 操作感はDSと似せましたが、画像がないのでショボいです。
◎挑発されているモンスターは「逃げる」ことができない
◎レベルアップによってストーンが減った場合も挑発の判定が更新される(というか、どんな状態でも全ての行動を指示できるようになっており、入力のたびに判定しています)
・先攻有利の軽減について
 先攻1ターン目のみ、山札からのドローなし+終了時にストーン消滅
◎T3-00とエルスピナーへのLVUP
 行動し終えたときレベルアップしても、追加で行動できる。
◎バイストーン(消費×2ではなく+2に変更。カード名も「ロストストーン」に変更。まぎらわしいですが・・・)
◎アドラ(LV1でも特技使えるようにする)
◎ルージュ(特技の消費ストーンを0にする)
◎ゲイラ(アタックを0Pに、特技の消費ストーンを0にする)
◎水晶の壁(消費Sを増やして行動済みでも対象に取れるようにする)
◎ゾンビ(復活してもパワーが下がらない)
◎グリフォン(特技の攻撃範囲をフーヨウと同じものに変更)
◎グングニエル(前衛からも特技使用可能)
◎マッドファイア(必ず拡散する)
◎再生(ストーン消費を4個に変更)
・カードサーチ(デッキにあるカードを1枚1枚見て、確実に欲しい物を選べる)

以降、プログラミングの都合による変更。すみませんm(_ _)m
◎どこでもの効果
 アタック以外にも、アタックと同じ攻撃範囲の技全てに効果が適用される。 例:ドノマンティス、ケントゥリアスの特技とか
◎相手ターン中のレベルアップ
 相手ターン中にレベルアップの権利を得た場合、スーパーにレベルアップすることは出来ない

コメント

このトピックにコメントを投稿する

[130-1] (gitti) [2009年04月12日 18:09]
早速質問です。

現在、魔法効果の扱いについてちょっと悩んでいます。

1つの変数内でbitのon/off によって各効果の有無を判断しているのですが、挑発やデスチェーンなどの、「誰から受けているか」の情報が必要な効果について、実装方法を決めかねています。

対象情報を1つしか設けないのでは挑発とデスチェーンを同時にかける事ができなくなりますが、挑発用の対象情報、デスチェーン用の対象情報、というように全て用意するのはかっこ悪い気がしています。
[130-2] (管理人イノセンス) [2009年04月13日 11:18]
面白そうですね。応援しますよ。

挑発やデスチェーンの対象情報については、一つひとつ個別に持った方がいいと思います。
一つの変数に複数の意味を持たせるのはバグの元です。

挑発はさらに、「誰が」と「誰に」を別々に持つ必要があるんじゃないかな?

無駄な情報を持つのはかっこ悪いですが、今回の場合は必要な情報なので問題ないです。
[130-3] (gitti) [2009年04月13日 14:31]
イノセンスさん、回答ありがとうございます。

よく考えたら、カードの効果をdefine定義で区別しているので汎用性は高められないですよね。
なので、イノセンスさんの案を取り入れることにしました。
ちなみに個人的に不満たらたらなカード(デスシープとかヤミーとか)は採用せず、逆に面白いものがあればオリジナルで追加しようと思っています。
[130-4] (ドラゴン) [2009年04月14日 00:07]
よぉしおぢさんはプログラミングに関しては初心者だし口出せないから(気が早いけど)CPUの思考ルーチンに対して口出しちゃうぞ~
いやまだそういう段階じゃ・・・とか言われても気にしないッ


●本当に強いCPUを作るのならば、デッキ毎に思考ルーチンを作成する必要がある
●デッキ毎に作るのが手間過ぎるのならば、代表的なデッキタイプで思考ルーチンを構築するのならば、白殲滅・白半速攻・黒殲滅・黒速攻の4タイプに分ける必要がある
●よって、まずは既存カードのみでデッキを構築する必要があると思われる(個人的に嫌いなカードは排除の部分は実行しても問題無いと思います)
●数ターンにも及ぶ読み等は度外視するのが現実的か
●石を貯める(できるだけ消費しない)プレイングを基本とする
●前衛伏せカードに対する行動基準(主にウェイクで起こすかどうか)は、HP6の場合とHP5以下の場合の二通りを乱数で決定させると人の読みのそれに近くなりそう
(HP6と予想させる7割:HP5以下と予想させる2割:HP3と予想させる1割みたいな)
●プレイヤー側のモンスターの種類によって、CPUに「プレイヤーは殲滅系デッキだ」と認識(予想)させれればより対人のそれに近くなる
(例:プレイヤー側の場に白・ヤンバル認識→白殲滅とCPU判断or予想→CPU側の前衛位置は基本集中砲火で6Pが飛んでくる→前衛にモンスターを伏せるのは危険と判断させる、等)


ぱっと思いつくのでこんな感じですかね。
とりあえず基本的な白殲滅・黒速攻の思考ルーチンはある程度わしの頭の中にできたっぽいけどイレギュラーな状況に全く対応でき無さそうw

蛇足だけどどんだけ口出してもvistaなわしはプレイできそうに無い現実・・・orz
[130-5] (ロミオ) [2009年04月14日 22:45]
僕も昨年トライしましたが、転勤による労働時間の大幅な増加にともない、アプリの開発からは 現在手を引いています。

CPU思考以前の段階、つまり、カーヒーオンラインを手動から「全自動処理」にしたようなもの、それを完成させるのが先ですよね。

その詳細な企画書を纏め上げるのも大変だろうし、それと照合しながらGUI部分を組むのも大変骨が折れることと思います。

小さなものから少しずつ形にしていったほうがよいかもしれません。
カードヒーローオンラインDS版を 半手動処理(操作一部を自動処理)で作って手ならしするのがいいと思いますよ。

僕のホムペにキャプチャした素材(イノセンスさんも使ってくれてます)があるので、良かったら落としてご活用ください。
http://aqua.sub.jp/ch/index.htm

CPU思考ルーチンに関しては色々とアイデアあるのですが・・・それはまた後日ということで。
[130-6] (もんなか) [2009年04月15日 07:07]
しかし、全自動かつ画像をそのまま転用となると・・・
著作権的に大丈夫なのかが心配。
応援はしています。
[130-7] (gitti) [2009年04月15日 09:44]
>ドラゴンさん、ロミオさん、もんなかさん
コメントありがとうございます。励みになります。
ドラゴンさん、vistaでも多分いけると思いますよ。開発環境に書いた「Visual C++」と「ランタイム」でググってみて下さい。それで駄目なら自分は力になれないと思いますが・・

何はともあれ、形にすることが先決ですね。
現在、フィールドに配置されるモンスターについて実装中です。アタックや1つとび攻撃などの基本部分はだいたい完了しました。後はオヤコダケやオーパス、フーヨウムータン、レオラオ、ナッツロックル、などなどの特殊効果の実装を進めていくつもりです。・・・まだまだ先は長いなぁ
[130-8] (削除されました) [2009年04月15日 22:19]
[130-9] (くり) [2009年04月15日 22:24]
初めまして。
私も自分で作ろうと思っていたので応援させていただきます。
(まだ言語の入門書を読み始めたばかりなので製作はだいぶ先になりそうですが・・・)

状態異常に関してですが、パワー系やシールド系のように重複することがない状態異常は一つの変数で管理してはどうでしょうか?

例
0=無し
1=パワー2
2=バーサク
3=パワーアップ
 ・
 ・
 ・

あと、期限が1ターンの状態異常は自分のターンにかかった場合と相手のターンにかかった場合で解除されるタイミングが違うので変数で持たせる必要があると思います。
[130-10] (gitti) [2009年04月17日 09:52]
>くりさん
応援ありがとうございます。

状態については抜かりありません。
パワー系効果、シールド系効果は1つの変数とし、受けたターンかどうかを判定すフラグを設けています。効果を受けたターン終了時は解除せず、それ以外のターン終了時にはとりあえず効果を消すという処理をします。
スパ覚醒などの例外はそこで判定してます。
それ以外の効果については、1ターン効果は全て2つの値をdefine定義しており、例えばデスチェーン1ターン目、デスチェーン2ターン目という具合に区別して扱っています。そしてそれぞれの値は1bitのみ1となるように定義しているため、1つの変数でまとめて管理しています。

このトピックにコメントを投稿する