C#とUnityでオンラインポーカー対戦ゲームを作るステップ

ぼくはプログラミングのガチ初心者で、プログラミング歴はTechAcademyのUnity講座を受けた程度だ。TechAcademyでの受講の感想については以下の記事を参考にしてほしい。

結局やる気が大切!TechAcademyの3か月Unityコースを受講しての感想

そもそもなんでプログラミングをやろうと思ったか。それはオンラインのポーカー対戦ゲームを作りたかったからだ。

オンライン対戦のポーカーを作るのに、はじめはどんなことをやればいいのか、どんな風に手を付けていったらいいかがさっぱりわからなかった。でも今になって少しずつ分かってきた手順がある。

今回はプログラミングやゲーム制作のガチの初心者であるぼくが、オンラインポーカー対戦ゲームを作るまでをブログにまとめていければいいなと思っている。

C#とUnityでオンライン対戦ポーカーを作る手順

  • ステップ1:Unityの勉強をする
  • ステップ2:C#の勉強をする
  • ステップ3:オフラインで動くポーカーゲームを作る
  • ステップ4:サーバー側のプログラミングであるPHPを勉強する
  • ステップ5:サーバーとスマホ・PCの通信について勉強する
  • ステップ6:実際に動くかどうかのテストをおこなう
  • ステップ7:リリース

ステップ1:Unityの勉強をする

今はゲーム開発と言ったらUnityを使うのが一般的になっている。Unity開発のメリットはたくさんあるが主なものは以下の通り。

  • MacやWindowsの変更もすぐにできる。アンドロイドやiOSへの変化も。普通だとアンドロイドとiOSは別々のプログラムで組まなくてはいけなくなるが、そういったことがなくてすむ。
  • ゲーム作成に必要な素材などがアセットストアと呼ばれるところから手軽に入手することができる。
  • ゲーム作成に必要な物理演算など手軽に使える。Unityを使わないプログラムで書くと100行近くなるものも、Unityなら1行でかけてしまうものもある。

ゲーム制作をするならUnityを使いこなせるようになることが必要になる。Unityの機能や使い方については、ゲーム作成をしていく中で「どうしたらいいんだろう」という疑問が絶対に出てくるので、その時に必要だと思うことを探しながらやるというのでいいと思う。

ただUnityの基本的な使い方はマスターしておくに越したことはない。

オンライン対戦ポーカーゲームをつくるためにやること

ぼくの場合はオンライン対戦ポーカーを作っていこうと思っている。一応Unityの勉強はしてきたけど、今回のオンラインポーカー対戦ゲームを作成するために、3つの別の教科書をこなしていきたいと思っている。

やっていくのはひよこ本Unity5の教科書、TechAcademyでもらったカリキュラムだ。

じつはTechAcademyのカリキュラムは、受講終了後も使うことが可能だ。しかし当時のぼくはC#の知識がほとんどなく、最後の方はかなり雑な進め方になってしまっていた。そういった部分を再度復習して自分のものにしたいと思う。

ステップ2:C#の勉強をする

ゲーム開発ができるUnityで使用する主な言語はC#。Unityでのゲーム開発はC#以外の別の言語でもできるけど、C#はC++などとも汎用性が高いらしいので、C#を学ぶことにした。

一度ポーカーの役判定のプログラムを作ろうとしたのだが、ぼくのC#の知識ではできなかった。というよりも知識はあるのだが、うまくそれを駆使して、応用することができなかった。

オンライン対戦ポーカーを作るためのC#の勉強について

なのでC#の勉強もしっかりやっていかないといけない。こちらも書籍を3冊ほどやっていきたいと思っている。いろいろなサイトでおすすめのC#の学習書籍を調べた。

すでにC#超入門は購入済みで一度やり切っている。あとは独習C#に手を出してみようと思う。加えてあと一冊ほどやっていきたい。

ステップ3:オフラインで動くポーカーゲームを作る

UnityとC#の勉強が一通り終わったら、オフラインで動くポーカーゲームを作成する。一度やってみたことがあるが、ポーカーを作成するにはそのC#でのプログラミングの方が重要だ。

テキサスホールデムポーカーの見た目の部分は非常にシンプルなので、たとえば使用するトランプやチップなどはアセットストアで購入。あとはトランプの配置などを決めるだけだった。

しかしポーカーのルールやベットなどの仕組みなどをC#で書き上げるのができなかった。そもそもC#でデッキ構築して、52枚のトランプをシャッフルして、それを5人のプレイヤーに2枚ずつ配ってというところから・・・かなーり、つまずいた。

わからないことに対しての対処

まじでわからないことがアホみたいにたくさん出てきて、どこがわからないのかもわからなくなる。なので本当に行き詰ったときはTechAcademyのチャットサポートを使おうと思っている。

チャットサポートはひと月6万円だが、本当にレベルが高い講師がついてくれるし、毎日作業できるし、ひと月6万円なら払う価値があると思っている。

行き詰った時のもう一つの方法は、Unityのことを質問できるサイトはいくつかあるので、そのサイトで質問をしてみようと思う。

他にもUnityで開発されたトランプゲームをリリースしている人がいるので、そういった人に連絡してプログラムを見てもらうというのも一つの方法だと思う。

ステップ4:サーバー側のプログラミングであるPHPを勉強する

オンラインでの対戦を考えるならサーバーの構築も必要になる。サーバーを設けずに、PCやスマホだけにしてしまうと、PCやスマホの中からデータをかえることができるようになってしまう。

たとえばテキサスホールデムでいえば手札がAAとかKKとかに操作出来たり、麻雀なら天和を出しまくれる。

そういったチートが行えないようにするため、ポーカーのルールの根幹的な部分はサーバー側で制御して、表示や操作だけはPCやスマホ側で受け持つということにする。

そういったサーバーを構築する言語はいくつもあるが、今回はPHPを勉強してみようと思っている。

MEMO

UnityにはUnity専用のオンラインネットワークを組めるサービスがあるらしい・・・。それを使えばオンライン接続も可能になるとのこと。その機能を使えばPHPの勉強などを省くことができるのかもしれない。

参考書籍はUnityネットワークゲーム開発入門などに記載があるようだ。詳しい人誰か教えてください。( ;∀;)

ステップ5:サーバーとスマホ・PCの通信について勉強する

サーバーも構築出来て、ゲームも完成したら、そこからサーバーとPC・スマホの通信について勉強する必要がある。

通信技術にもいくつかあってソケット通信やHttp通信などがあるらしい。これらについて勉強し、そのゲームにどの通信方法が適しているのか試行錯誤する必要がある。

ポーカーの場合はどうなんだろう。リアルタイムとか非同期とかあるけどよくわかりません。

ステップ6:実際に動くかどうかのテストをおこなう

リリースの前に動作を確認するためのテストを行う。もちろん複数のPCがあればすぐに試すことができるのかもしれないが、一台でも仮想PCをつくって、そこで信号の送受信を確認することは出来るらしい。

ここでたくさんのバグが発生するのは珍しくない。

ここまで作り上げたことがないのでどのような方法になるのか知らないが、ここまで来たらまた調べてみたいと思う。

ステップ7:リリース

ストアやネット上で公開する。アンドロイドはリリースが比較的簡単だが、iOSは審査が厳しい部分がある。アプリができてもすぐにリリースできないこともあるようなので、計画的に進めたい。

まとめ

以上がオンライン対戦ポーカーの大まかな作成の流れかと思う。細かい部分を突き詰めていけばもっともっと細かいことが出てくるんだと思うが、今はまだそこに到達できていないので、到達してから考えたいと思う。

あまりに先が長いことをよく理解したうえで進めている。この計画が最後まで達成できて、同じような思いを持っている人の役にたてたらうれしい。