Mulesブログ

不動産業界に特化した業務効率化アプリ開発チームMulesのアカウントです。

自由研究:pygame対応の自作ゲーム機開発プロジェクトの進捗報告

f:id:k_mawa:20190502225229p:plain

現在の状況

完了したこと

  • BBM(ブレッドボードモデル)によるサンプルゲーム動作確認済み
  • ハードウェアのパーツ等選定済
  • コントローラー基板の設計・発注完了
  • 筐体のサイズチェック完了

1か月以内に完了予定

  • プラスチック筐体の3Dモデル生成
  • pygameのデータを読み込み管理するネイティブアプリ 実装
  • 展示用プロトタイプの組み立て最終チェック

これまでの作業の流れ

開発の意義など

ソフトウェアとハードウェアの開発チームMulesとして、これまでなかった開発する喜びを実感できる、学ぶ機会を拡充するようなカスタムしやすいゲーム機の製作にチャレンジした記録です。

既存のゲーム機では、製作技術の秘匿の必要性からハッキングが難しい構造になっています、これはビジネス上やむを得ない措置と理解しています。

一方昨今のOSSの進展、電子工作ノウハウの民主化の進展の流れを汲み、OSSなどMITライセンスなどの自由度が高い技術を中心にゲーム機をつくることによって、コードによるカスタム、電子工作による拡張がやりやすい等、
プログラミング~電子工作について工学全般の教育上有意義なメリットがある、技術者が開発の楽しみを実感できるゲーム機があると面白いのではと考えオープンな開発を進めました。

BBM(ブレッドボードモデル)は動作確認完了・プロトタイプ1号の最終パーツの手配発注組み立てテスト完了予定であり、現在Maker Fair Tokyo への出展を申請中です。

構造図概略

下記のような構造で製作を進めています。 f:id:k_mawa:20190503150651p:plain

OS選定 とフレームワーク選定

中核ハードウェアについて

中核ハードウェアはラズベリーパイ3を採用しました。これはコマンドもコードも実行できるLinux環境であり、価格面なども含めカスタムのしやすさから迷わず採用しました。

OS選定について

ラズパイだと画面が切れて、動きもなにかおかしい・・・ラズパイのアーキテクチャが想定されてないのかもしれない、UbuntuMateのようにラズパイアーキテクチャがターゲットとして開発されたOSのほうがより良いかもということで採用見送りました。

Ubuntuのように画面が切れたりしない、ラズパイ向けにセッティングされている感じで良い。しかし、1点だけ、自前のゲームの起動ソフトウェアがElectron製で実装中だが、UbuntuMateでは動かない可能性があり、見送りました。

Windows IoT Core は、Unityやpygameなどのフレームワークをラズパイ上で実行という目的は想定されていないようで、インストールには成功してデモをいじってみたものの、今回の目的は達成できない仕様なので見送りました。

Raspbianを採用

→結局、Electornプロジェクトの動作確認ができるかつ、pygameの動作確認ができるRaspbian を採用することになりました。

ゲームのビルド形式・対応フレームワークの検討について

AWS S3にjsファイル群をアップロードして静的ホスティング配信を試しましたが、HTTP通信だとラズパイでは遅すぎるので採用を見送りました。(スマホすごいと実感。)

これだと専用ソフトがいるなど設定がマニアックになりすぎる

RaspbianOSでLinuxBuildが動作確認とれず。検証中。

結論

pygameを採用

python製ゲームフレームワークの実装カスタマイズの手軽さが際立っていました。サンプルゲームの主要コードもpythonファイル1つだけ計400行程度という理解しやすいボリュームであること。ラズパイなどのPythonフレンドリーな基板もあるためコントローラー開発もUSBにつなげば即実行可能であること、また、pythonフレームワークの多い機械学習フレームワーク(ex. tensorflow, chainer等)があることを背景に、ゲームAI開発もpythonコードに直接組み込めるので教育用に向いていると判断。サンプルゲームの動作確認もとれたので採用しました。

3:BBM(ブレッドボードモデル)製作

コントローラーの回路実装 →キーボードのキーを指定した回路により 過去のゲームも遊びやすくできるようにする

秋月電子で購入何度も通いました^^

キーボード回路の実装部品・キット専門のお店にも訪問しました^^

ハード開発は自宅のこちらで行ってます。

ピンヘッダの並びが互換基板だと同じではない模様。

ArduinoUNOが見た目多機能そうで自宅に在庫があったので、実装ためしたところ、キーボード化のモジュール非対応でした・・・ ArduinoLeonard、ArduinoMicroなどが対応機種だったようです。もういちど秋月に行ってトライ!

ArduinoMicroで再チャレンジ。まずは1キーのキーボードを製作。

左右、スペースキーを割り当てた3キーをブレッドボードにセット。無事BMMが動きました^^

なお、ディスプレイは3.5インチのものを採用。これはラズパイのGPIOピンの拡張モジュールつきQumanというメーカーのものを採用しました。そのため、GPIOピンは引き続き実装できます。電源ON・OFFボタンを実装予定です。

4:コントローラー部分の基板製作

Kicadを利用しました。KicadとEagleを知ってましたが、Eagleはたしか基板情報の利用可能範囲がKicadより狭いという情報を聞いたのと、以前Kicadの基礎を指南いただく機会があったため慣れ親しんでいるKicadで開発しています。
f:id:k_mawa:20190502233031p:plain

まずはBBMで最初に作った1キーキーボードを回路設計。デバッグも行えることを確認。

Lチカの簡単な回路発注まではしたことがありましたが、複雑な回路設計は初めてで、ここで2層以上で配線の必要に迫られました。

と、いうことで、貫通ビアのノウハウを仕入れました。楽々2層配線。

2層でもなかなか整理しながら配線しないと絡まってしまいうまく行きません。

整理整頓しながら、ようやく8キーコントローラーを配線無事できました。

記念クレジットを記入。

3Dビューアーで確認した状態の基板のデータです。

Elecrowにて発注しましたので、到着を待っています。 到着後に実装テストです。

5:プロトタイプの筐体部分の制作

段ボールにて長さを計測。モデル生成に活かす。

ディスプレイ付属のケースを元に全面部デザインを考えます。

バッテリーは外付けで色々なものを利用できるような設計にしています。汎用性と安全性が高い分分厚くなってしまったがご愛敬・・・スマホすごいなと改めて再認識。

切り出しました。

セロテープで組み立て、長さを各辺計測してモデリング担当チームに引き継ぎました。

今後の作業予定

プラスチック筐体の生成

段ボールの仮筐体での計測結果をもとにBlenderモデリングを行い、3Dプリントサービス発注手配で完成予定です。

7:プロトタイプのソフトウェア制御部分の実装

デスクトップアプリとして、モダンなフレームワークのひとつ、Electronで行う予定です。 動作確認済み、スタイリッシュなゲーム管理ができるように実装中です。

プロトタイプ組み立て

コントローラー基板とプラスチック筐体が届き次第組み立てテストを行う予定です。