hayatedonda
@hayatedonda

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

音楽ゲームはC++とC#どちらが良いのか?

太鼓の達人を造るとしたらC++とC#どちらが良いのか?

自分は太鼓の達人のシミュレーターを造りたいと思っているのですが、
人もそろっておらず、開発に困っています。
(もちろん造ったもののファイルは世に配信させません。)

自分含め2名で現在活動しているのですが、元々C++で作ってあるプロジェクトで
進めようかと思ったのですが、C#の方が良いと言われC#に置き換えるため、移行している
最中なのですが、どうなのでしょうか?

開発者も募集中

良いのかわかりませんが、開発者も募集しています。

皆さんと一緒に作りたいです!

人数問いません。
よろしくお願いいたします。

0

4Answer

まず、これが回答でないことをお詫びします。

ゲームを作るにあたって、プログラミング言語(「C++」と「C#」)による差違よりも、「(C++を使う) Unreal Engine」と「(C#を使う) Unity」のような、ゲームエンジンによる相違の方が顕著ではないでしょうか。

3Like

他の回答者も述べられていますがこの規模のものでしたらゲームエンジンの選択が重要ではないでしょうか?
開発者のスキルやレベルによりますが、UnrealEngine、Unityどちらも商業で使用されています。

ピュアなC++(+DirectX)や.NET環境で実装したいなどでしたら、自分ならまだC#のほうがマシだなぁとは思いますが、ゲームの完成を目指すのでしたら正直今の時代おすすめはしません。
(すでに知識がある、もしくは低レイヤーなことを勉強したいなどの目的があるのでしたら別ですが)

すでにC++で開発しているコードが有って、特に具体的な移行理由が思いつかないのでしたら、書き直すメリットは少ないと思います。

ゲーム制作の場合はコーディング能力他、GUI周りの知識、2D、3D、サウンド等のマルチメディア処理の理解が必要になってきますが、各言語での記述レベル、その他知識等はどのくらいなのでしょうか?
それによって助言できる内容も異なってくると思います。

2Like

Comments

  1. @hayatedonda

    Questioner

    各言語は知識はまだ浅い状態となっております。
  2. C++で書かれているという今のプロジェクトはどの程度実装されているものなのでしょうか?
    それほど進んでなく、両者ともそれほど理解に差が内容でしたら、たしかにC#で実装するのもありだとは思います。

    きちんとしたプロダクトを作るのは、フェーズをきちんと考えないとまとまらないと思いますがどこまで分解して考えることができてますでしょうか?
    特に既存のゲームと同じような動きを考えると、まずその動きを仕様として落とし込めるかが一番重要となります。
    (例えば「右から左にノーツが流れてくる」、「ノーツには種類がある」、「タイミングによって点数が変わる」等)

    次にその仕様を実装しやすい環境を、ライブラリや個々のスキル等から考えて検討していく必要があります。
    先に述べたとおり下記のような構成が考えられます。(Windows上での実行を前提としています)

    * C++ネイティブ + DirectX
    * C# + DirectX
    * Unity (C#)
    * Unreal Engine 4/5 (C++)
    * Godot (GDScript)
    * etc

    前提がわからないのでどれがいいとは一概には言えませんが、特に得意な言語がないようでしたらUnityで実装するのが情報も多く自分としてはおすすめかなと考えています。
    (人によって答えが違うので正解はありませんが)
    勧めるポイントは、開発者人口が多いこと、情報が多く初心者向けの書籍も充実していること、開発言語がC#なのでC++よりは簡便に記述できること、ゲームエンジン自体も優れていて下回り等をあまり考えなくて良いこと、マルチプラットフォーム対応が容易な事等です。

    C++とC#の言語比較を自身で詳細に検討できない段階でしたらこのように使える環境は存分に使って、足りなくなったときにより詳細な下回りについて検討する方向で進めるほうが結果的に楽だと思います。

    もし逆にゲームシステム的な下回り含めてより詳細に学びたいのでしたら、少し古いですが下記の本をおすすめします。
    10年以上前の書籍で、C++、DirectXで実装されており、現在のゲーム開発のトレンドとは少し離れてしまうためそのまますぐに使える知識にはなりませんし、最低限C++でそれなりに実装できる能力がないと読むのは大変ですが、ゲームシステムについてより深い理解を得られると思います。
    セガでゲーム開発をされている方が書いた本ですので内容も実践的で、ゲーム開発を志すのでしたら持っていて損のない一冊だと考えます。
    https://amzn.to/3vYTBJ2

    (残念ながらUnity関連は詳しくないのであまりおすすめの本などは紹介できないです。)

太鼓の達人のクローンは、既にいくつか存在しているようですが、敢えて自分で作ってみたいということでしょうか?
C#で作られたものもあるようですので、参考にしてみると良いかも知れません。
https://github.com/twopointzero/TJAPlayer3


上記は質問の回答にはなっていなかったため、補足いたします。
「どちらが良いか?」は、基準を明確に示さないと回答が難しいです。

また「C++」と言っても、ご存知かも知れませんが、Windowsには主に3種類(C++、C++/CLI、C++/WinRT(C++/CX))が混在していて、それぞれメリット/デメリットも違います。

各項目をマトリクスにすると、以下のようになります。

項目 C++ C++/CLI C++/WinRT(C++/CX) C#
ネイティブアプリ × × ×
.NETアプリ × ×
Microsoft Storeアプリ × ×
実行速度
コーディングしやすさ ×
デバッグしやすさ × ×
技術情報の調べやすさ ×
開発者の集めやすさ × ×

※私個人の主観です。
※技術的に情報が誤っている可能性もあります。

私は、ゲーム開発の経験はありません。
しかし、C++でDirectXを使用した経験からしますと、低レベルの技術を学びたいのでなければ、おすすめいたしかねます。

ゲームエンジンの基本を作るだけでも、相当な技術と時間が掛かると思われます。
ゲームエンジンアーキテクチャ 第3版

他の方もおっしゃっていますが、言語選択の前に、プラットフォームの決定と、何かしらのゲームエンジンの使用をご検討された方が良いのではないでしょうか。

0Like

Comments

  1. @hayatedonda

    Questioner

    最初の質問の答えは、クローンを自分で変えた感じです。
    C#で作られたTJAのリンクありがとうございます。

音ゲーのようなものを作る場合

  • イベントを可能な限り遅延なく処理できる
  • そのために重い処理になる表示関係とイベント処理をマルチスレッド化などによって切り離せる

あたりが重要になります。
これらを自力で実現しようとするとなかなか大変なので、上記の目的を重視しているゲーム用エンジンを使うのが現実的でしょうね

0Like

Your answer might help someone💌