告知
読者がいるところ悪いんだが、連載の続きは 別ブログに移した。
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#)
- クラスにコメント
- メソッドにコメント
- 定数にコメント(ゲームバランスに関係のある値は全て定数化)
これの報告が必要。
これだけで ゲームが作れるんだろうか? 他に漏れはないか?
シーケンス図って何だ?
@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
シーケンス図を使う段階は プログラムも 具体的な段階だ。
クラス図って何だ?
@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を要望されるだろうか?)
- アスペクト比、画面サイズ
[要件にはない] 状態遷移図 (画面)
要件にはないものの プログラムするときには使う。
参照記事: 「ステートマシン図 & 状態遷移表 チュートリアル」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種類ある
- そのステージ内で達成するもの
- 累積で達成するもの
[要件にはない] 状態遷移図 (ステージ)
要件にはないものの プログラムするときには使う。
書き方が よく分からないんだが、読む方も 読み方が よく分からないんじゃないだろうか?
仕様を読むと「待機」と「スペシャル」もあるんだが、ここに書いとかないと忘れる。書いた。
[要件にはない] 状態遷移図 (体力ゲージ)
要件にはないものの プログラムするときには使う。
[要件にはない] 状態遷移図 (スペシャルゲージ)
要件にはないものの プログラムするときには使う。
データ構造
ステージ / 画面構成 / レイヤー
空(そら)とか キャラクターとか。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( ) ではないだろうか。
シーン
まだ全然足りないんだが、そのうち埋めていくことにしよう。
PluntUML は、400KB を超えると 画像が切れてしまうようだ。 設定で 800KB まで増やせるようだが、Windows 出のやり方が分からなかった。
「PlantUMLのpng画像が切れてしまう」pospomeのプログラミング日記
http://pospome.hatenablog.com/entry/20160422/1461322513
シーケンス設計
シーケンス図も要件なんだが、多者間で交互に同期するものでもないと 書くことがないぜ。
ファイルをロードするとか。
提出場所
決まってないが、指示書があったとこに 放り込んどくか。
以降の記事は 再構成中だ。
http://qiita.com/muzudho1/items/86fedc87b4b9e5731bfb