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

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

新規登録して質問してみよう
ただいま回答率
85.35%

Q&A

解決済

1回答

44697閲覧

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

massu2357

総合スコア17

2グッド

5クリップ

投稿2017/02/26 05:25

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

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

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

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

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

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

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

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

DrqYuto, BluOxy👍を押しています

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

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

masaya_ohashi

総合スコア9210

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

massu2357

2019/05/08 02:43 編集

masaya_ohashi様 ご回答ありがとうございます。 また、ご返信が遅くなってしまい、大変申し訳ありません。 今回、自分が作りたいと思っていた目標がどれほど高い壁であるか、 masaya_ohashi様に認識させていただきました。 自分にとっては、これほど貴重なアドバイスをいただけたのはとても嬉しいことです。 同時に自分の認識が現実とあまりにも乖離していることも痛感しました。 まずは自分のできることから着実に達成していきたいと思います。 おそらく今の自分では、挙げて頂いた「ソリティア」さえ苦戦します。 まずはそこから達成していきます。 加えて、プロフェッショナルの方に「Unity」が良いと言って頂けたのは、 自分にとって確信を持ってこれにとりかかろうと思える意欲が生まれました。 また「ソケット通信」「Http通信」「通信フォーマット」など、 具体的なキーワードをご教授いただきありがとうございます。 目の前の取りかかるべき課題が明確になりました。 まずは「Unity」を使って簡単なゲームを作ったり、ソリティアを実装してみたりと、 基礎を固めていきたいと思います。 本当にありがとうございます。
masaya_ohashi

2017/03/08 02:18

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

2017/03/08 05:13

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問