Memoプログラミングについてのメモ。第2回「テーマ:転がる」に参加しました。こんな作品↓マウスでティーポットを操作してマイカップにぶつけて坂道を転がして、積んであるティーカップのタワーにぶつけて崩します。ゴルフとボーリングをくっつけたようなゲームです。さんの参加を促すための先鋒となるためゲームプログラミングとか教えているのに、ゲーム作りから遠ざかってしまったので、リハビリのためとにかく、完成させて参加する!ということでした。専門学校の講義で紹介した、「フリーライティングによるキーワード列挙」と「ランダム選択」で一人ブレストでネタを出しました。5分で思いついたまま書きまくったキーワード(フリーライティング)から、4つのキーワードをランダムで選択して、そこに今回のテーマである「転がる」を加えた5つのキーワードを企画のスタートにしました。キーワードは以下の5つ。動作環境はWebGL縛りなので、画面サイズや操作系はそれを前提にしました。画面サイズは、1回目のゲームジャムの作品を見た感じで一先ず標準っぽかった960x540ピクセルにしました。小さくてもよかったように感じています。以下のようなアイディアから始まりました。台風の目に入れて上昇させる熊本城の地形を舞台にする?(お堀)自分の作品は、操作の影響が狭くてダイナミックさに欠けることが多いので、ちょっとの操作で大きく動かしたい、ということを最初に考えていたのを思い出しました。この時点では台風と、転がすと、ギリギリお堀しかテーマに入っておらず、マグカップをどう消化するかを考えてました。強引にマグカップを加えてみる。[台風]で[お城]に閉じ込められたお城の窓から[マグカップ]を何らかの方法で転がして操作[お堀]に落ちた[鍵]をマグカップで回収して脱出する要素は入ったけど、今度は操作が小さくなった。[台風]の中、[お堀]を探索[マグカップ]に溜まった空気を吸って補給[鍵]を見つけて宝物をゲット転がるがない・・・主人公が転がる生き物ならマグカップがどうして出てくるのかが分からず、カリメロみたいにキャラクターが被ってたらどうだろうという案。マグカップアクションをするようなイメージ。普通のジャンプアクションになりそうで、規模的に無理がありそう。台風だ!川沿いに住むカヤミちゃんが家に閉じ込められた。助けに行かなきゃ![マグカップ]を[転がして]、その上にカヤネズミが乗って移動クリアには[鍵]が必要。正解は不明なので全部取る雨や風を線で表現。風は時々強く吹いて障害になる地形は固定の自動生成。[箱堀]や[薬研堀][片薬研堀][水堀]など線画に近いラフな画像(黒背景に白い線)マグカップは1回転に一回跳ねる操作は試して見ながら検討ぼつ:マグカップを伏せると水に浮く。[お堀]を渡る(お堀は2,3キャラ分)ぼつ:マグカップは、主人公のトレードマーク(カリメロの卵の帽子みたいなもの)これが動き出した時の企画になりました。昔作成したハシルサルに近いもので、雰囲気がよさそう(特にカヤネズミ)に思いました。出だしのキーワードは破棄して、マグカップを転がすところに集約させて、ほぼ今回の企画になりました。企画を振り返ってみて当初考えていたダイナミックな操作も、お気に入りのカヤネズミも残せず、最終的にティーカップを転がすという完成させやすそうな企画に落ち着かせてしまいました。キーワード5つを全部盛り込もうとしたことも迷走の原因でした。キーワードのうちで一番強いやつでまとめた方がよさそうです。次回こそ、大きく動かして、シンプルな画面で、インパクトのある作品にしたい。企画をティーカップを転がすということに集約Unityのプロジェクトを作成シーン遷移の開発コンパクトさを重視するために、余計なものを削除した結果、ゴールはティーカップタワーにして、それをティーカップを転がして倒す今の企画になりました。この時点で台風のことはすっかり忘れました。シーンの共有をやったことがなかったので、ほほ~と試しているうちにこの日は終わりました。最初はマップチップで作ろうとしていましたが、適したマップタイルの素材を見つけることができませんでした。しちゃおうということになりました。Terrainエディターで面を作るのは厳しそうだったので、高さの配列データから滑らかな地面を生成するコードを作って、この日は終了。お金払えばUnityストアにアセットがあったのですが、勉強ということで自作しました。PostProcessingStackを組み込んで、この頃は画面が光ってました。専門学校の出講日で、午前は一年生向けの講義なので開発できず。午後の2年生の時間に、Unity1週間ゲームジャムに参加しようよと言っていたので、作業時間にしました。何かしらみなさん作り始めておりましたが、結果ははてさて。この頃は、転がす強さをパワーゲージ上でクリックして、好きな強さで確実に転がせる操作を検討していました。英国紳士がクリケットのラケットみたいなのを振り回して、カップを転がすイメージ。転がす操作を、パワーゲージからティーポットで弾くことに変更カップのタワーを作成して画面に配置WebGLにビルドようやくこの日にカップタワーが入って、カップを転がして倒すことができました。崩すのが面白いことが確認できて一安心した一方、WebGLでの動作がえらく遅くなり困ったことに。ポリゴン数を確認したところ、16M三角ポリゴンとか恐ろしい数字が出ていました。これは減らさねばと思いつつ、ツールがないのでこの日は終了。吹き出しや、ティーカップのタワーをステージデータから自動生成するように午後に1年生向けの講義をして、放課後は居残って作業です。ポリゴンをいじるチャンスはこの日しかなかったので、3dsMaxの操作を調べながら、プロオプティマイザーとやらで減らせるのか、というレベルからなんとかローポリデータの作成をしました。最終的に、ティーポットは5万ポリゴン、ティーカップは2万ポリゴンほどに。多い気がしますが、これ以上減らすと形が崩れ、手元の環境では処理落ちは改善していたので、これでいくことにしました。maxで見ると法線が今一つであれこれ試していたのですが、Unityに読み込んでみたら大して目立ちませんでした。調整しながらUnityで見ないと。残りカップ数やスコアなどのインターフェース追加WebGLの処理速度対策ステージ作成にはこの日も入れず。ポリゴンの削減、空のカメラの廃止、PostProcessingStackの無効化で、WebGLでの動きが滑らかにできて、時間はギリギリながら光明は見えました。最終日にして、ようやくステージデータに取り掛かりました。この段階ではツールはなし。やりたいことはシンプルだったので、データを作成して、あとはデータの読み込み。使えば簡単に読み込めました。あれこれやってステージデータをゲームに組み込めるようになったのは15時すぎ。2面ほど作って遊びながら、目立った不具合を潰し終えたのが17時過ぎ。軽食を食べながら効果音を探してみたところ、必要そうなものが一通り揃ったので効果音を入れることに。あっという間に入りました。凄み!あとはステージを作っては遊び、作っては遊びで、19時すぎに7面までできました。30分ほど、残っている作業を優先順位に従って潰していって、残り30分で一度アップロードして公開設定。残り時間でパーティクルを入れて、微調整して、リビルドしている間にタイムアップ!お疲れ様でした。・・・と思ったのですが、締め切り後も更新できるとのことでしたので、もう少し細かい調整を加えてアップし直しました。怒涛の一週間が終わりました。開発中に感じたこと正直、1週間で時間が足りなくなるとは思っていませんでした。ブランクの影響は大きかったです。他の方の開発日誌を見ていると、2,3日で形にしている方が多い印象だったので、やはり時間がかかりすぎでした。必要なものがいくつか見えたので、それを整理しておいて、初日からプロトタイプに取り掛かれるようにするのが次回までの宿題です。他の方がやっているみたいに、開発の進捗をツイートしたいものです。手書きのイメージが全く作れなかった。Captureというプラグインがあったけど、うちのPCでは能力不足か、フレームレートが出ずフレームレートが遅くていいなら、Screenpressoが楽Screenpressoのキャプチャが遅いのも、うちのPCのせいかも・・・ツイートとランキングは最初から組み込んでおく技術的なこと今回、以下のようなことをやりました。大昔、Unity3の時代に知ったチュートリアルの手法でやりました。公式のチュートリアルに丁度この内容が出たようですTerrainの自動生成Terrainエディターでステージを作るのはしんどそうだったので、16個の高さデータを渡して、スプラインで補間した高さをTerrainに組み込みましたこれのおかげで、残り時間が少ない中で、複数のステージをバランス調整しながら用意できました補間につかったスプラインのアルゴリズムが今回の用途には適しておらず、余分なうねりが出てしまいました。他の方法を検討したいところTiledの読み込みフリーのマップエディターのTiledのtmxファイルから必要な箇所だけ読み込む処理を作りましたXMLなので、C#のXMLDocumentを利用すれば技術的には楽勝でした(しかし調べるのに時間がかかった)WebGLだとファイルの読み込みができないようで、Inspectorにstringフィールドを表示して、無理やり突っ込みました手作業が少し必要で、容量に制約があるようなので要改善3dsMaxでのポリゴン数の削減インターネットからダウンロードしたティーカップやティーポットのテクスチャー数が膨大だったので,3dsMaxのプロオプティマイザーでポリゴン数を減らしましたオブジェクトを選択して、モデファイヤからプロオプティマイザーを選択して、[計算]ボタンを押したあと、ポリゴン数かポリゴンのパーセントを入力して、他の項目に移動すると摘要されます利用したアセットやツールこの作品の開発でお世話になったアセットやツールのご紹介。これは美しい!と思ったのを覚えていて、Terrainのテクスチャや草、木に利用しました。これ、ポストエフェクトで綺麗にしてるんですね。WebGLでもそこそこ動くとはいえ、今回はフレームレートを高くしたかったので、ポストエフェクト切ってしまいました・・・。結果的に、PS1というか、昔の3Dゲームっぽい画面に・・・スカイボックスの空を調整しきれなかったので、2Dだし、2Dっぽい空をということで選びました。綺麗なのですが、良く見ると雲が切れてたり、カメラを動かすとおかしくなったり、少々癖があります。有料版もあるので、そっちならうまく動くのかな?空専用のカメラを用意して、それを背景に重ねていい具合で動くようになったのですが、フレームレートが落ちてしまいました。いうことで、静止画として背景に貼り付ける利用方法となりました。Modelarchive3d.netティーカップのモデルとして利用しました。ティーカップだけだと思っていたらティーポットもついていて、これで弾けばいいやとなって、英国紳士がラケットでカップを転がす案は消えました。インテリアデザインなどのレンダリング用で、いわゆるハイポリ。100万ポリゴンを軽く越えていたので、3dsMaxのプロオプティマイザーでポリゴンを減らしたものを使いました。音素材は、エンディング曲以外は魔王魂さんのフリー効果音素材で探しました。時間が少ない中で、一通りのものが見つけられたので大助かりでした。あちこちのゲーム制作ブログでお名前を拝見していたので、真っ先に探しに行きました。GALLARYさんのジングル「祝福された大地」がエンディングにぴったりだったので使わせていただきました。クリアしなくても聞けますが、クリアして聴く一曲はお風呂上りのビールのように一味違う気がします。データに補間するためのアルゴリズムはこのサイトで勉強しました。利用したツールUnity5.6これがないと今回のゲームジャムは始まりません。CommunityUnity5.6にバンドルされているバージョンです。2015は起動が遅く、MonoDevelopを使っていましたが、2017はどうだろうと思って使ってみました。補完機能が秀逸で、起動も以前のような遅さは感じません。個人利用はこっちに乗り換えようと思いますTiledフリーのマップエディターです。使いやすく、保存形式もXML形式で分かり易いです。ダウンロード時に$9必要な雰囲気ですが、その上のリンクで無料で入手できます。CS2ロゴ作成や、インターフェース作りに使いました。古いのを未だに使ってますが、ウィンドウの優先順位が崩れたりして、そろそろ限界な感じです・・・Screenpressoスクリーンキャプチャソフトです。動画を撮影したり、スクリーンショットの撮影に利用しました。これも無料で使えますが、制限がない方が楽なのでライセンス購入しています3dsMaxティーセットのポリゴンを減らすのに使いました最後にとにかく、完成して、公開できてよかった!リハビリの目的は強烈に達せました。頭の筋肉痛が出ております。思った通りの注目や評価を得られず、がっかりした人もいるかも知れません。発表直後は疲れていて、落ち込んでしまいがちです。ご飯食べ得て、良く寝て、回復させてください。コンテストではないし、仕事でやっている訳でもありませんし、自分が考えたものが完成して、発表できただけでも大成功だと思います。ネットでは発見されるまでに時間がかかります。半年後に突然注目されるとかもあるので、焦らず、コツコツ継続するのが吉です。残念ながら未完成に終わったとしても、次回また挑戦したら今度は出来るかも知れません。鋭気を養い、その後、ああしたい、こうした方がよかった、と気付いたことがあれば、次回はそれを実現できるように調査すればいいのだと思います。・・・と、自分にも言い聞かせてます。最初の目的であった、学生さん達は発表できたのか。水曜日のお楽しみです。さん、ありがとうございました。できま...2017-07-31Unity1週間ゲームジャム「夏」に参加しました!(ちょっと追記)3回目の参加でした。遊んで、星な...2017-07-04Unity1週間ゲームジャム「積む」に参加しました(学生さん作品追記!)2回目の参加でした。»プロフィールid:am1tanakaプログラミングについてのメモ。Page月別アーカイブはてなブログをはじめよう!am1tanakaさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。