MIS.W新歓ブログリレーにお越しのみなさん、どうも初めまして52代(2年生)プログラミング研究会のtakowasabiというものです。今回は新歓ブログリレー0日目ということで、新歓ブログリレーのご案内とちょっとだけゲームプログラミングの話をしたいと思っています。ゲームプログラミングとかバリバリやってるよ!って方やプログラミング研究会とか興味ないんだけど何なの?って方は前半だけ読んで1日目の記事に進んじゃってね!
ちなみにtakowasabiという謎の肩書きは、MIS.Wで登録しているハンドルネームです。MIS.Wでは基本的にひとりひとりがハンドルネームを登録することとなっており、お互いハンドルネームで呼び合うことも多いです。ですのでMIS.W入っちゃおうと思ってるみなさんは、今のうちから考えておくといいかも。じゃないと登録の時に追い詰められてこんなハンドルネームになっちゃうからね。
新歓ブログリレーとは?
新歓ブログリレーは毎年やっているMIS.Wの新歓期の恒例行事です!今年から大学生活を始める新入生のみなさんのためにMIS.Wのサークル員たちがパソコンでの創作や大学生活のテクニックを毎日ブログに書いてお教えします!MIS.Wに入りたいという方はもちろん、何か自分でものをつくってみたいという方は是非最後までご覧ください。具体的な内容としては「微積のお勉強法」から、「機械学習・ディープラーニング」まで様々で、プログラミングはもちろん、パソコンでの絵の描き方や曲作りのテクニックもあり、貴方のやりたいことがきっと見つかります!
ブログリレーの期間は3/27~4/16までとなっています。ちなみに、最終日の4/16はMIS.Wの創立記念日となっておりまして、MIS.Wの公式キャラクター「みすちゃん」の誕生日です!そして、4/16の記事は我らがサークルの幹事長であるむさしんさんが、MIS.Wという創作の場についてと、彼が所属するとある研究会についてを書いていただけるそうです。皆さんお楽しみに!
このブログリレーを読み、MIS.Wに興味を持っていただけた方は、新歓ブースや説明会にぜひいらして下さい。百聞は一見に如かずです!また、何かご質問等ありましたらご遠慮なく公式twitter(@misw_info)までDMなどでご連絡ください!
初心者から始めるゲームプログラミング
お待たせいたしました、ここからはプログラミング研究会のtakowasabi個人の記事になります。初心者だけど、プログラミング研究会でゲーム作ってみたいなって方や、プログラミングはやったことあるけど、どうやってゲームを作ればいいんだろうという方は是非ご覧ください。
前置きで"ちょっとだけ"と言ったな。あれは嘘だ。
どんな言語を勉強すればいいの?
ひとくくりにゲームプログラミングといっても、ゲームは様々な言語のプログラムで書かれています。ゲームを作るならば、まずは作りたいゲームの条件から、必要になる言語を知り、そして学ばなくてはなりません。ここでは、ゲームプログラミングによく使われる2つの言語をご紹介します。
C++
プログラミング言語の代表的なものにC言語があります。MIS.Wのサークル員の多くが所属する早稲田大学基幹理工学部では、はじめにC言語を学ぶことになっています。C言語はコンピューターに理解する言語に近い書き方(つまり人間向きじゃないってことだね!)となっており、古い言語ですが、非常に処理速度が早く高性能な言語となっています。
C++はそのC言語の拡張版のような言語で、C言語よりも書きやすく、かつ安全な言語となっています。加えて、C言語のように高速な処理が可能であることから、ゲーム開発に広く用いられている言語になります。中でも、コンシューマーゲームの開発ではC++の性能が求められることは多いです。また、C言語の構文や機能はそのまま使うことが可能(そのまま使うとは言っていない)なので、既にC言語を学んでいる方は少し馴染みやすいかもしれません。
C#
C#はかの有名なMicroSoftさんが開発したプログラミング言語で、C、C++と比較すると、難しい概念は必要とされず書きやすい言語となっています。名前の印象とは異なり、文法はCというよりもJavaに近いものとなっています。
C#の大きな特徴の一つとして、後述するゲームエンジン「Unity」で用いられている言語であるという点が挙げられます。そのため、C#を学ぶことが出来ればいろんな機器で遊べるゲームを簡単に作ることが出来ます。しかも無料で!
ゲームプログラミングによく使われる言語ということでこれらの言語をご紹介させていただきましたが、これら以外の言語でも、ゲームを作ることは大体できると思います。学びたい言語がほかにあるならば、その勉強を兼ねてゲームを作るというのは、楽しいですし、とてもいいと思います。しかし、ゲーム業界で働こうとまで考えている方々には、業界で実際に使われているであろう、上記の言語を学ぶのが良いと思いご紹介させていただきました。みんなもオブジェクト指向しよう!
ゲームライブラリ&ゲームエンジンについて
プログラミングを学び始めると、まずはコマンドプロンプト上で動くプログラムを作ることになると思います。それは言語の仕組みを勉強するために必要なことだと思うのですが、みなさんが作りたいと思うゲームとは大きくかけ離れたものですよね。そこで、実際に画面上で画像が動いたり音楽が流れるようなゲームを作るのに必要なのがライブラリやゲームエンジンになります。
一般的に、ライブラリは言語の機能を拡張して画面への描画や音楽の出力を容易にしたものを指すのに対して、ゲームエンジンはゲームを効率よく開発するために一般化してつくられた開発環境そのもののことを指すことが多いです。
まあ、とりあえずゲームを作る作業を楽にしてくれるものとだけ思ってもらえれば大丈夫です!使ってるうちに違いは分かってくると思いますので。
ということで、ここではMIS.Wにも使い手のいる有名なライブラリやエンジンの一部をご紹介したいと思います。
DXライブラリ
はい、私が使ってるやつです。名前の通りゲームライブラリの一つで画像や音楽を整数と同じ扱いで管理できます。
使用言語はC++で、言語自体の機能はほとんど拡張されていないので、C++の熟練度がとても求められますが、その分C++の勉強にはなります。
Windows版だけでなくAndroid版もあり、なんとPS4やPSVitaにも対応しています。しかし、Macには対応していませんのでご注意ください...。
サンプルコードはそれなりに充実しており、後でご紹介しますがゲーム作りの指南サイトも日本語のものがいくつかあります。書籍もわずかながら出ていて、MIS.Wにも使い手は多いのでその点では安心です。
Siv3D
ゲームライブラリの一つで、私の学科(早稲田大学基幹理工学部表現工学科)の偉大なる先輩がお作りになられたものになります。カメラやマイクに加えてKinectなど多くのデバイスに対応しており、短いコードでいろんなことが出来ちゃいます。
使用言語はC++ですが言語を拡張する部分も多く、面倒な部分は書かなくても済む場合は多いです。しかし、その分得られる知識の互換性があまりない部分も多く、開発環境が変わった場合に苦労をする可能性もあります。
リファレンス(辞書のようなもの)はまだ完成していないですが、公式サイトからリンクしているWikiには多くの情報が載っています。また、サンプルコードはあまり多いとは言えないのが現状です。
Unity
世界的に有名なゲームエンジンで、身近なところではポケモンGOや白猫プロジェクトなどで使われているものになります。大企業が使うほどですので、その実用性や信頼性は非常に高いものとなっています。その一方で、商業目的でなければ無料で使うことが出来るのも魅力の一つです。
使用言語はC#となっています。すべてをコードで書くわけではないのですが、完全に機能を使いこなすためにはC#の勉強は必要不可欠となります。
使用者が非常に多いため、書籍や指南サイトも非常に多く、加えて公式チュートリアルも充実しており、教材に困ることはあまりないでしょう。MIS.W内に使い手も多いです(Unity班なる組織があるとか)。
また他の開発環境と比較して非常に多くのプラットフォームに対応しています詳しくはこちら。多すぎて「ふへぇw」って声が出ました。
Unreal Engine 4
こちらの名前で検索してロゴを見ていただきますと、ほとんどのゲーム好きならば、見たことがあるぞ!と思うはずです。というのも、Unreal Engine 4はドラゴンクエストXIやストリートファイターVなど、コンシューマーゲームのビッグタイトルでも使われているゲームエンジンの一つなのです。最大の売りは描画の綺麗さで、正に最先端のグラフィックを実現できます。
使用言語はC++ですが、なんとコードを書かずにゲームを作ることができるBluePrintなるものが搭載されています。よってC++は補助的なものとなっており、C++の難解な部分への理解はそこまで必要としません。
公式の日本語チュートリアルはありますが、日本語の教材はあまり多くなく、英語が読めないと苦労する可能性もあります。
こちらも多くのプラットフォームに対応しています。具体的にはWindows PC、PlayStation 4、Xbox One、Nintendo Switch、Mac OS X、iOS、Android、VRに対応しています。
このように、世の中にはゲームを作るためのライブラリやゲームエンジンが溢れています。ゲームを作るためにライブラリから作るという人もいるのですが、初心者がそれを行ってもいい結果が得られることはほとんどないので、ある程度慣れるまでは素直にこれらのツールを使うべきであるように思われます。是非使ってみてはいかがでしょうか?
DXライブラリとUnityの比較インタビュー
開発環境による違いを分かりやすく表すため、DXライブラリを普段使っている私と、Unityを普段使っているMIS.Wサークル員のかのうくんとuetaくんにそれぞれインタビューをして、結果を比較してみました!ご協力ありがとうございます!
DXライブラリ/Unityは難しい?
takowasabi「DXライブラリ自体は難しくないけど、C++は簡単じゃないかも」
ueta「頑張れば難しくはないよ」
かのう「最初は簡単だけど、ちゃんとした機能を使おうと思うと難しいかな」
DXライブラリ/Unityの教材は十分にある?
takowasabi「DXライブラリの公式サイトとか、いくつか詳しく書いてあるサイトがあるよ」
・C言語何でも質問サイト
・PonkSoft|DxLib入門
ueta「全部検索すれば出てくる、大体誰かがやってるから」
かのう「Unity公式のチュートリアルがあるよ」
DXライブラリ/Unityはプログラミングの勉強になる?
takowasabi「C++の勉強になるはず、ライブラリ色薄いのも特徴ですから」
ueta「C#使ってるからなるかな」
かのう「C#自体の勉強にはあんまりならないかも」
DXライブラリ/Unityは楽しい?
takowasabi「苦s...楽しいよ!」
ueta「楽しいです!」
かのう「Unityは楽しいよ!」
どうやって学べばいいの?
プログラムを学ぶ方法は非常に多くあります。自分に合った方法を見つけることで、モチベーション管理や上達速度が大きく変わってきますので、はじめはいろいろな方法を試してみるといいのではないでしょうか?
以下に私が実践した学び方を並べていきますので、ご参考にして頂けると嬉しいです。
とりあえずGoogle先生
インターネット上にも様々な初心者用のゲーム作りの講座などは多くあり、言語の辞書としても利用できます。また、オープンソースで中身が公開されているゲームもありますので、有効活用できると多くの知識が得られます。上記したライブラリやゲームエンジンは公式にチュートリアルがあるので、ライブラリ及びゲームエンジンの仕様の勉強には(言語がしっかり分かっていれば)インターネットで十分だと思います。
本屋さん&図書館のご利用
何だかんだ本があると目標が目に見えて分かり、1冊単位で読み切った達成感があります。また、一度買えば辞書のように分からないところをすぐに探して見ることが出来ます。インターネットよりも高度で確実な内容が学べますので、中級者にステップアップしていきたいと感じたときにも、本を買ってみることをお勧めします。ただし、本を買う際は内容が自分のレベルに合ったものであることをしっかり確認しましょう。
MIS.W専用の講義資料もあるよ
インターネットや書籍だけでなく、MIS.Wでは独自の講義資料を毎年新歓のために作成しています。DXライブラリやUnityの資料もあり、私はここで初めてDXライブラリに触れました。丁寧に解説していますし、書いた本人に質問することが出来るものも多いですので、みなさんもどうでしょう、MIS.Wに足を伸ばしてみませんか?
人と学ぶ
プログラミングを学ぶとき、どうしても一人ではモチベーションが保てないことがあるかもしれません。また、一般的でない書き方をする癖がついてしまうかもしれません。特に人と一緒にコードを書くと、お互いの知識を共有することができ、手を動かしながら新しいことを学ぶことが出来るのでおすすめです。楽しく雑談の出来る仲なら最高ですね。
以上は私が実際に体験した学び方になります。私は通ったことがないのですが、セミナーなんかに通ってみると、お金がかかる分確実に目標を達成できるという意味では非常に良いのではないでしょうか。みなさんも自分に合った方法を模索してみてください。
最後に
ここまで読んでいただきありがとうございます。私はMIS.Wに入るまでは、ほとんどプログラミング初心者で、今扱っている言語(C++)の名前も知りませんでした。しかし、MIS.Wで活動をしていく中で、自力でゲームを作れるまでになりました。ゲームを作るのは難しいことではありません、MIS.Wプログラミング研究会は初心者でも、初心者詐欺してる人でも大歓迎です!この記事を読んで、少しでもプログラミング研究会面白そうだなって思っていただければ幸いです。