1日1時間からの作業時間駆動ゲーム開発

その他

以下のUnityゲーム開発者ギルド Advent Calendar 2023の12/24分です!

Unityゲーム開発者ギルド Advent Calendar 2023 - Adventar
( はいいぞ 📝自己紹介/製作物紹介/技術記事/企画アイデア/1年の振り返り/ギルドの思い出/退廃など 📅過去の UGDG Advent Calendar ( / ( / ( / ( / ( / (

締切駆動開発の課題

突然ですが、ゲームを開発する上で展示イベントのような締切に向かって頑張る、締切駆動開発は有効です。

ただ、育児や長時間勤務などで時間が限られる中でゲーム開発をしていると締切に間に合わずに心にダメージを受けたりすることがあります。また、締切に無理に間に合わせようと睡眠時間を削ると体調を崩して開発の生産性が落ちることもあります。
日常レベルでも、「今日はここまでやったら終わりにしよう」と思っていた作業が完了せずに「自分はダメだ。。。」と思ってしまうことがあると思います

そのような状況でも心を平穏に保ちながらゲーム開発を続けるために、自分は作業時間駆動開発という方法を導入しています。

本記事は締切駆動開発を否定する意図はありません。

作業時間駆動開発とは

作業時間駆動開発とは、「ここまでやったら今日の開発は終わり」ではなく「一定時間作業したので今日の開発は終わり」のように一定の時間開発できたという日々の満足を糧に開発を続けることです。
また、開発時間が一定の時間に限られることで集中力が増す気がします。

自分の場合はリモートワークで平日昼休みが比較的時間が取りやすく、仕事以外の時間や土日は育児・家事にフルで時間使うので、平日1時間開発できたらよしという風に決めています。土日の子どもの昼寝中なども、可能であれば1時間程度作業するようにしています。
もちろん体調不良で開発できないときもあるので、そこはムリしません。

作業時間駆動開発の目的でもあり前提になるのが、睡眠時間の確保です。

睡眠の重要性

自分の場合、日中に開発時間を確保できなかったのでその分睡眠時間を削って開発をしてしまうということがありました。報復性夜更かしというやつです。
その結果、あまり開発は思ったより進まないし翌日の育児やゲーム開発、仕事の生産性が落ちたように感じます。また、私の場合寝る前にゲーム開発すると感情が昂ぶってしまって中々寝られないというのもあり、寝る前は避けるようにします。

そこから夜更かし開発をやめて子どもの寝かしつけと同時に寝るようになってから、育児中のイライラが減り、同じ作業でも以前より短時間で終わるようになりました。

個人ゲーム開発についても開発時間は減りましたが、睡眠時間が足りてない3時間の開発と、十分眠れた状態での1時間の開発では後者の方が進捗が生まれているというのが自分の仮説です。

とはいえ、開発時間が減ると展示会イベントに参加できなかったり、いつまでもリリースできないのではというところで次の話題です。

展示イベントへの参加

作業時間駆動開発をすると、展示イベントなどに間に合わないのではないかという疑問が湧きます。これについては、日々開発を続けて展示イベントで最低限試遊できるようになったタイミングでイベントに申し込むというやり方に変えます。

また、ゲームのリリースタイミングについても「今年中にゲームをリリースする!」という考えから「1日1時間なので数年はかかりそうだなー」と考えるようにします。

また、私の場合は以下のベビーシッター補助金を活用して土日に開発時間を確保したりもくもく会に参加しています。

ベビーシッター利用支援事業(一時預かり利用支援) 東京都福祉局

とはいえ、数年単位の開発と考えるとモチベーションの維持が難しくなってくるので次の話に繋がります。

ゲームジャムへの参加

Unity1Weekに参加する際は、あまり良くはないのかもしれないですが1週間だと私の場合5時間しか開発時間が取れないので、最初から3週間かけて開発するつもりで臨みます。

3週間で5時間ずつとして15時間は最低取れる計算で、企画を考えてからまず必要なタスクを洗い出します。その際に、これくらい時間がかかるだろうなという作業時間を1.5~2倍にした作業時間を併記します。これは、トラブルで想定より時間がかかった場合でも時間内に収められるようにです。

自分が取れる時間を作業時間が超えている場合は、企画に立ち返って要素を削減します。
また、後半のタスクについては間に合わなかった場合にどうするかを一緒に書いておきます。

開発粒度を細かく切る

リリースタイミングを細かく区切り、それぞれに盛り込む仕様をできるだけミニマムにすることで、こまめなリリースよるモチベ維持を図ります。
具体的には、イベント試遊版なら最低限ゲームループだけ回れば良い、Steamデモ版ならステージ1だけあれば良いなど細かく区切ります。

タスクも細かく区切ることで、開発を始めるときに次何やるんだっけという風になることを防ぎます。
私はGitHubのイシュー機能でタスク管理を行っており、デモリリースや製品版リリースなどのマイルストーンでイシューを区切っています。

以下はSteamでのデモリリースと製品版リリースでマイルストーンを区切っている様子です。

他の方の工夫

ギルド内で、こんな工夫しているよというのを募集したところ以下のようなコメントを頂きました。

mathkenさんとおなじ父エンジニアです!
育休中なため時間はとれているので状況は違うのですが私は夜開発時間を確保しています。
我が家では夜20時消灯にしています。
で、子が寝付くまでは寝室(子と同じ部屋)にいて完全に寝ついた後 21時ごろから開発を始めています。
そんで23時まで開発して翌日 6時 ~ 7時くらいに起きてます。
このルーティーンで睡眠7時間、開発2時間以上稼ぐことができています。
子供依存ではありますが、消灯時間を20時と早い時間にするというのはおすすめの方法です。

終わりに

以上のような方法で、私は使える時間が少なくてもゲーム開発へのモチベーションを失わないように気をつけています。11月~12月は子どもの風邪をもらったのが長引いて、開発が長らくできていなかったのですがおかげであまりダメージを受けずに作業を再開できています。

この方法が最善ということはないと思うので、中々時間を取れない方は自分なりのモチベの維持方法を検討してみてください。

コメント

タイトルとURLをコピーしました