LoginSignup
5
10

More than 5 years have passed since last update.

ゲーム開発を受注しようぜ<その1> 開発環境の準備

Last updated at Posted at 2017-06-05

告知

読者がいるところ悪いんだが、連載の続きは 別ブログに移した。

Qiita にも画像アップロード容量の上限があるようで、全記事のまとめ直しを進めている。

ゲーム開発を受注しようぜ

実践が 何よりもの技術解説になるだろう。

早見表

見どころ 内容
開始 2017-04-10(月) 打ち合わせ時
規模 5人以下
もの スマホ、アンドロイド
内容 ただ走るだけのアクションゲーム
自分がやること 指示を出される側
プログラム
ワイヤーフレーム作り、初期の設計・開発
サイクル 設計: 先に固める
開発: 週次、金曜 成果物提出
縛り プログラムのコードをQiitaに載せない

流れ

時期 わたし視点
これ以前 イベントでの知り合いとともに、1か月かからず将棋対局サーバーを立てた。家賃を払えた。
2017-04-02(日) 家賃を払いたい。その知り合いづてに仕事くれくれ!とTwitterでDMを送る。
紹介してもらう。次は4/10。
2017-04-10(月) 対面して打ち合わせ。コンテンツ制作を事業としている人と、
家賃が払いたい人との間で成立。
2017-04-13(木) 説明、環境等が準備される。

一元管理

「出した指示を 見逃されている」ということを防ぐためのもの。どちらかと言うと 指示を出す側の技術。

べつに ゲーム開発だから、というテクニックでもないが、ホワイトボードの代わりになるものタイムマシンのようなもの は よく使うようだ。

ホワイトボードのようなもの

例えば

  • グーグル・ドキュメント
  • スラック
  • サイボウズ

などなど。
やりたいことは、 TODO:Done に させること。

タイムマシンのようなもの

例えば

  • ビットバケツ
  • ギットハブ
  • サブバージョン
  • 手動コピー・バックアップ

などなど。
やりたいことは、 開発の方針が うまくいかなくなったときに、ある時点まで戻って 復帰させる こと。

[必要] こんなゲームを作りたい、という見本を遊ぶ

スマホの このゲーム、あのゲーム を作りたい、と言った感じで URL を紹介される。

  • Webサイトに行く
  • 自分の スマホのメールアドレス を入力する
  • スマホにメールで ゲームをインストールするページへのリンクが送られてくる。[Play ストア]でアクセス
  • [インストール] ボタンを押す
  • [開く] で遊べる

とりあえず 当てもなく 30分ぐらい遊ぶ。

[オプション] 「どうやる」を こうやると思っている、という参考記事リンク

  • 背景を奥に置いて、近景があって、キャラクターを手前に置いて……といった 記事
  • 伸びるソシャゲの育て方のような(分析系の) 記事

などなど。 ソシャゲの(分析系の)専門用語がキツい。

「参考」をどこまで利用するのかも悩みどころだが 多分これが「普通」だと思っているはずなので、その 普通の感覚 を合わせる。

  • たぶん、岩とか オブジェクトを 1枚画像で置けると思っているのだろう。(タイル方式にしたらヤバいかもしれない)
  • ソシャゲ運用に出てくる(分析系の)専門用語を知っておく(多分、自分にはほとんど関係ない)

などなど。

後回しにしよう。

[必要] 環境

  • 設計図
    • シーケンス図
    • クラス図
  • 使用ソフトウェア/技術
    • Unity
    • C#
    • Visual Studio 2017
    • Plant UML (ローカルPC版)
    • Plant UML (Web版; 大きな画像は切れてしまう欠点がある)
    • Dropbox (JSONを置くのに使う)
    • JSON
    • Git Hub
    • Libre Office (JSONをスプレッドシートに吸い取れないだろうか? 実際使うかどうかは不明)
    • グーグル・ドライブ
  • コード規約(C#)
    • クラスにコメント
    • メソッドにコメント
    • 定数にコメント(ゲームバランスに関係のある値は全て定数化)

これの報告が必要。
これだけで ゲームが作れるんだろうか? 他に漏れはないか?

シーケンス図って何だ?

20170413a1.png

@startuml
きふわらべ -> お父ん : 起きろ☆!
きふわらべ <- お父ん : 起きてるぜ☆!
@enduml

リファレンス
「シーケンス図」PlantUML in a nutshell
http://plantuml.com/sequence-diagram

上のコードを、下のWeb版のテキストボックスにコピペして [Submit]ボタンを押せば 画像が生成される。

Web版 (画像が大きくなると ちょん切れてしまうという欠点がある)
http://www.plantuml.com/plantuml/uml/SoWkIImgAStDuNhSsFkuSUlZflx7JPsF6tSgwDefF6xiUjwnxN7JP0KhXHTRjuDKDFK-cj7sVayZXd8RNMpA6vSzRkf-t3W7giaXDIy5Q1S0

「plantUML(Web版)」Qiita
http://qiita.com/borerere/items/99d73d7295840a28c473

Web版が早いが、ローカルPC版の PlantUML も以前にインストールした。

「PlantUMLをインストールしようぜ」Qiita
http://qiita.com/muzudho1/items/25c229a60559b0aa2bc4

シーケンス図を使う段階は プログラムも 具体的な段階だ。

クラス図って何だ?

20170413a2.png

@startuml
interface 二足歩行{
  + 前進()
}
interface USI将棋エンジン{
  + ベストムーブ()
}
class お父ん{
  + お金
}
class きふわらべ{
  + 電力
}
二足歩行 <|-- お父ん
二足歩行 <|--きふわらべ
USI将棋エンジン <|-- きふわらべ
@enduml

リファレンス
「クラス図」plantuml
http://plantuml.com/class-diagram

クラス図を使う段階は プログラムも 具体的な段階だ。

PlantUML って何だ?

UML という種類の図面を書くソフト。

「PlantUML Cheat Sheet」Qiita
http://qiita.com/ogomr/items/0b5c4de7f38fd1482a48

ドロップボックスって何だ?

Dropbox
https://www.dropbox.com/

ファイルを置いておけるところ。

JSON って何だ?

JSON
http://www.json.org/

{
  "きふわらべ":"起きろ、お父ん!",
  "お父ん":"起きてるぜ"
}

テキストで送受信できる、データの書き方。PHP とか これに対応している。
保存しておくもの。

  • ゲームのプレイデータ
  • 各プレイのトータルしたデータ

Unity って何だ?

Unity
https://unity3d.com/jp/

ゲーム開発環境。スマホ/アンドロイド のゲームも作れる。

C# って何だ?

Unity でプログラムを書くときに使える言語の1つ。

「C# Programming Guide」MSDN
https://msdn.microsoft.com/en-us/library/67ef8sbd.aspx

Visual Studio 2017 って何だ?

Visual Studio
https://www.visualstudio.com/ja/vs/whatsnew/?rr=https%3A%2F%2Fwww.google.co.jp%2F

Windows で C# を書くのに使いやすい。開発環境。

「UnityでVisualStudioをデフォルトのエディタに設定する」Qiita
http://qiita.com/nishiken1112/items/94634a07551fc8d54c0e

Git Hub って何だ?

Git Hub
https://github.com/

ソースコードを 置いておくところ。古いバージョンも残しておいてくれる。

Libre Office って何だ?

無料のスプレッドシート。
データ入力するなら基本装備なんだが、大量のデータを扱わない人は 使ったことがないこともあり、これの導入が採用されるかどうかは チームの経験による。

「LibreOfficeをインストールしよう」Qiita
http://qiita.com/muzudho1/items/dcd876a26a223045535c

グーグル・ドライブ

共同作業ができるオフィス・スイート。企業が使う場合は、有料のバージョンを使うことになるか。

実装目標

まだ コーディングしない。先に シーケンス図、クラス図 が必要。

ハードウェア面

  • アンドロイドOS (スマホ)
  • Unity 2D (横に走るゲームで3Dを要望されるだろうか?)
  • アスペクト比、画面サイズ

[要件にはない] 状態遷移図 (画面)

要件にはないものの プログラムするときには使う。

20170413a5b2.png

参照記事: 「ステートマシン図 & 状態遷移表 チュートリアル」ChangeVision http://www.changevision.co/tutorial-statemachine-japanese.html
参照記事: 「誤解しがちなモデリングの技 第3回:ステートマシン図(I)」豆蔵ソフト工学ラボ http://labo.mamezou.com/special/sp_002/sp_002_003.html

PlantUML で 気づきにくい書き方を抜粋。

改行 \n ヨコ線の引き方 --

note "用語\n--\nスター : ステージ中で拾うもの" as n2

ボックスを縦に並べる方法 -up->-down-> の両方を書くこと。PlantUMLによると、指定は多用せず自動描画に頼るのがよいとのこと。

ステージ詳細 -down-> ステージ : スタートボタン タップ
リザルト -up-> ステージ詳細 : OKボタン タップ

その他詳細

  • ステージは最初 1つで、ミッション規定数クリアー時に 次のステージが開放されていく
  • ミッションは もらっている説明書に書いてあるのを用意していく。2種類ある
    • そのステージ内で達成するもの
    • 累積で達成するもの

[要件にはない] 状態遷移図 (ステージ)

要件にはないものの プログラムするときには使う。

20170413a6b3.png

書き方が よく分からないんだが、読む方も 読み方が よく分からないんじゃないだろうか?
仕様を読むと「待機」と「スペシャル」もあるんだが、ここに書いとかないと忘れる。書いた。

[要件にはない] 状態遷移図 (体力ゲージ)

要件にはないものの プログラムするときには使う。

20170413a7.png

[要件にはない] 状態遷移図 (スペシャルゲージ)

要件にはないものの プログラムするときには使う。

20170413a8.png

データ構造

ステージ / 画面構成 / レイヤー

空(そら)とか キャラクターとか。Unityに初期装備の機能。

奥が0 用途 備考
0 空(そら)
1 背景
2 足場
3 キャラクター
4 エフェクト 爆発とか
以下、システム表示系
5 コントローラー ボタンとか
6 ポップアップ メニューとか

キャラクター・データ、ステージ構成

データを どう入力するか、どう格納するか、なんだが しばらく JSON だけでいけるか。

Unity でファイルの保存ができたかどうか? 開発中はローカルに保存しておくとして、
そのうち C# で Webサイトに向かって JSON を POST送信 することになるかもしれない。

例えば データをソートしたくなったときは C# で対応できるのか? LINQ を覚える必要があるか?

シーケンス図と クラス図

要件に入ってるんで、コーディングはまだだが 設計図レベルで プログラミングを始めろということだろう。
じゃあ 設計を考えるか。

2D格闘用のライブラリを自前で持っているんだが、メンテナンスしてくれ、と言われるのも面倒なので、 一から書き直してコードの責任は丸投げすることにする。

Assets/Scripts/Scenes (スクリプトの内、特定シーンの中だけで使うもの)

  • TitleScene/
    • Common (同名のクラスが多いが、ネームスペースで分ける)
    • Camera
  • StageSelectScene/
    • Common
    • Camera
  • StagePreviewScene/
    • Common
    • Camera
  • StageDetailScene/
    • Common
    • Camera
  • StageScene/
    • Common
    • Camera
    • Player
    • Enemy
    • StageItem
  • ResultScene/
    • Common
    • Camera

Assets/Scripts (スクリプトの内、シーンを跨って使うもの)

  • CampMenu
    • Cursors (スマホゲーにカーソルとかあっただろうか?)
    • - PauseMenuCursor
    • Buttons
    • - GameStart
    • - Stage1Start (ここらへん どう用意するのか)
    • - JumpButton
    • - TackleButton
    • - MenuButton
    • Menus
    • - PauseWindow
    • - ContinueMenu (ここらへん どう用意するのか)
    • - QuitMenu
    • QuestItems

Assets/Resources/AnimationClips (いわゆるドットアニメ)

Assets/Resources/AnimatorControllers (いわゆるモーションの状態遷移)

Assets/Resources/Prefabs (爆発の粒など、量産品)

Assets/Resources/SoundEffects (効果音)

Assets/Resources/Sprites (いわゆる画像)

  • Ui
    • Bars (ゲージとか)
    • - LifeBar
    • - SpecialBar
    • Figures (数字)
    • - ScoreNum
    • Buttons
  • Stages
    • Backgrounds (背景)
    • - TitleBack
    • - CampBack
    • Grounds (地面)
  • Characters
    • Player (ここらへん どう用意するのか)
    • - Wait (ダメージもここに含む)
    • - Dash
    • - Jump
    • - Tackle
    • - Special
    • - Other (ダウンなどはここに含む)
    • Enemy (敵といっても、ブロックみたいな障害物だろう)
    • - Wait
  • Particles
  • StageItems (ステージ中に落ちているもの)
    • Magnet
    • Invincible
    • CoinFever (コイン2倍)
    • LifeS (ライフ小)
    • LifeL (ライフ大)
    • Coin
  • CampItems (クエストで購入するもの。今回は対象外か)

現状 何の話題にも上ってないが、台詞ウィンドウとか ランキング・ボードとか 出てくるかもしれない。

クラス設計

シーンの初期化とか Unity で どんなメソッドだったろうか。調べ直さないと。

初期化が Start( ) で、不定期のフレーム実行が Update( ) ではないだろうか。

シーン

20170419a1.png

まだ全然足りないんだが、そのうち埋めていくことにしよう。

PluntUML は、400KB を超えると 画像が切れてしまうようだ。 設定で 800KB まで増やせるようだが、Windows 出のやり方が分からなかった。

「PlantUMLのpng画像が切れてしまう」pospomeのプログラミング日記
http://pospome.hatenablog.com/entry/20160422/1461322513

シーケンス設計

シーケンス図も要件なんだが、多者間で交互に同期するものでもないと 書くことがないぜ。
ファイルをロードするとか。

提出場所

決まってないが、指示書があったとこに 放り込んどくか。

以降の記事は 再構成中だ。
http://qiita.com/muzudho1/items/86fedc87b4b9e5731bfb

5
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
10