質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.52%

対戦型カードゲームを作りたいです【ゲーム開発】

解決済

回答 1

投稿

  • 評価
  • クリップ 1
  • VIEW 14K+

massu1221

score 7

こんにちは。ゲームプログラミングに興味があるmassu1221と申します。
この度、以下のことをお伺いしたく質問させて頂きました。

わからないこと・解決したいこと

「ハースストーン」や「シャドウバース」のような
対戦型カードゲームを作ってみたいと考えております。
そうしたゲームを作る場合、言語や環境は何を使えば宜しいでしょうか。

もちろん、1人の開発でできることには限界があると思いますので、
カードゲームのコアの部分だけでもプログラミングで作れないかと考えています。
コアの部分とは以下の内容を想定しています。

  • 山札や手札といった概念の構築
  • プレイヤーごとのターン制御
  • 呪文を唱える、モンスターで攻撃するなどのフェイズの概念

自分で調査したところ、やはり「Unity」や「cocos2d-x」を使い、
C、C#、C++当たりの勉強が必要かという印象を受けております。

この認識は間違っていないでしょうか。
もし他にこういった選択肢があるといった場合などありましたら、
ご教授頂けますと幸いです。

どうぞ宜しくお願い致します。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+13

いきなり苦言ですが、既存の大規模なゲームを真似るのは相応の技術が必要です。いまのあなたはひのきの棒を持って「どうやったら魔王を倒せますか?」と聞いている状態です。こちらとしてはそこまで実力と目標がかけ離れていると「レベルを上げて、正しい道のりを歩いてこい」と言うしかありません。
私は元ゲームプログラマであり、かつシャドウバースプレイヤーなので、ある程度シャドウバースがどのような仕組みで動作しているかは想像がつきます。その上で、「これから言語を勉強します!」という人が作れるものとは到底思えません。あなたの指す「コア部分だけでも」という目標すら超えるのに年単位がかかるでしょう。私としてはまずは自力で(Windowsの)ソリティアが作れるところくらいまで成長してから上記目標を掲げるべきだと思います。

それでも作るのをやめない!そのための努力は惜しまない!というのであれば、アドバイスをしましょう。

Unity、Cocos2d-xに目をつけたのは正解です。まったくの素人が触ってもある程度動くものが作れるUnityは初級者が触るのにふさわしいでしょう。私はCocos2dのほうは詳しくないのでUnityのほうで説明します。UnityではC#が使えるので言語選択はC#ということになるでしょう。一応他にもUnityで使える言語はありますが、C#一本でいいでしょう。

もしあなたが「オンライン」対戦カードゲームを目指しているなら、サーバ側も自力で組む必要があります。サーバ側はPHPでもPythonでもJavaServletでもRubyでもなんでもいいですが、とにかくUnityとは全く違うものを勉強する必要があります。シャドウバースやハースストーンは「サーバ側で山札、手札、攻撃、結果などを処理」して、「操作や演出をスマホやPCで処理」しています。そうしないとスマホやPCが山札や手札の処理を改造して不正し放題だからです。いきなり1ターン目から相手がPPを無視して場に5枚フォロワーを出してきたらキレますよね?だから、サーバ側でルールに則った管理をすることで改造による不正プレイを回避し、不正ユーザができることを限定しているのです。

サーバができたら今度はUnityと通信してやりとりするので「ソケット通信」や「Http通信」を学ぶ必要があります。これを学ぶだけでも1冊の本になるような量です。ある程度Unityがやってくれるでしょうが、サーバとやり取りするデータの形や受け取ったデータの処理などは自分で組む必要があります。通信フォーマットはREST形式が最近の主流なのでこれも勉強しましょう。

キリがないのでここらへんでまとめておきましょう。

  • Unityを勉強するのがよい
  • Unityの中のロジックはC#で書けるのでC#を勉強するとよい
  • オンライン対戦にするならサーバ側の勉強も必要
  • サーバ側のプログラミングはPHP、Python、JavaServlet、Ruby等
  • カードゲームのルールの根幹部分はサーバ側で制御し、表示や操作だけスマホやPCが受け持つ
  • サーバとスマホ・PC間の通信手法にもいろいろあるので勉強する必要がある
  • ここまで説明してまだ「コア部分」の説明に入れない

壁の高さを感じていただけたでしょうか。挑戦するのは止めませんが、まずはUnityで簡単なゲームを作ることで「ゲーム作りの練習」をすることをおすすめします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/03/08 10:51 編集

    masaya_ohashi様

    ご回答ありがとうございます。
    また、ご返信が遅くなってしまい、大変申し訳ありません。
    投稿者のmassu1221です。

    今回、自分が作りたいと思っていた目標がどれほど高い壁であるか、
    masaya_ohashi様に認識させていただきました。
    自分にとっては、これほど貴重なアドバイスをいただけたのはとても嬉しいことです。
    同時に自分の認識が現実とあまりにも乖離していることも痛感しました。

    まずは自分のできることから着実に達成していきたいと思います。
    おそらく今の自分では、挙げて頂いた「ソリティア」さえ苦戦します。
    まずはそこから達成していきます。

    加えて、プロフェッショナルの方に「Unity」が良いと言って頂けたのは、
    自分にとって確信を持ってこれにとりかかろうと思える意欲が生まれました。
    また「ソケット通信」「Http通信」「通信フォーマット」など、
    具体的なキーワードをご教授いただきありがとうございます。

    目の前の取りかかるべき課題が明確になりました。
    まずは「Unity」を使って簡単なゲームを作ったり、ソリティアを実装してみたりと、
    基礎を固めていきたいと思います。

    本当にありがとうございます。

    キャンセル

  • 2017/03/08 11:18

    非常に真摯に受け取ってくれて、アドバイスした甲斐があります。私はゲーム系専門学校卒ですが、生徒の大半は「やりたいことの巨大さ」に気付かずにスタートを切って挫折する人が大半でした。まずは極力シンプルな物、例えばじゃんけんゲームくらいから始めるほうがよいです。「ゲーム」に関する部分と、「ソフトを動かすため」の部分、いっぺんに覚えるのは難しいです。なので、最初は「ゲーム」の部分が小さいものから始めることをおすすめします。

    キャンセル

  • 2017/03/08 14:13

    わかりました!
    まずはやってみます。
    ありがとうございます。

    キャンセル

同じタグがついた質問を見る