tag:crieit.net,2005:https://crieit.net/tags/%E3%82%B2%E3%83%BC%E3%83%A0%E5%88%B6%E4%BD%9C/feed 「ゲーム制作」の記事 - Crieit Crieitでタグ「ゲーム制作」に投稿された最近の記事 2022-12-13T22:54:07+09:00 https://crieit.net/tags/%E3%82%B2%E3%83%BC%E3%83%A0%E5%88%B6%E4%BD%9C/feed tag:crieit.net,2005:PublicArticle/18332 2022-12-13T22:54:07+09:00 2022-12-13T22:54:07+09:00 https://crieit.net/posts/Cocos-Creator-2-x-Cocos-Creator-2-4-10 Cocos Creator 2.xの最新アップデート、Cocos Creator 2.4.10について <p><a href="https://crieit.now.sh/upload_images/d22629a48bdb75ee5057340c0ab588af63987f4ca5cc4.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/d22629a48bdb75ee5057340c0ab588af63987f4ca5cc4.png?mw=700" alt="image" /></a></p> <p><a target="_blank" rel="nofollow noopener" href="https://www.cocos.com/en/creator/download">Cocos Creator 2.4.10をCocos Dashboardからダウンロード</a></p> <p>2.4.10では、2.x関連の問題を修正し、エディターとエンジンの安定性を高め、ネイティブ・モバイル・プラットフォーム関連の問題を解決し、全ての2.xユーザーに推奨されるバージョンとなっています。このバージョンはプロジェクトやプラグインの互換性を損なわないので、2.4.7のアップグレード手順を参照してぜひアップデートしてください。</p> <p>バージョン3.0の正式リリースに向けて、予定通り2022年は重要なバグフィックスを提供し続ける予定です。これらの修正は安定性と使いやすさを中心に最適化されますので、新規ユーザーやプロジェクトについては、3.x で開発することをお勧めします。</p> <p>インストールに関するご質問は、<a target="_blank" rel="nofollow noopener" href="https://discuss.cocos2d-x.org/t/the-newest-update-to-2-x-cocos-creator-2-4-10-is-available/57002">フォーラム内の開発者ログエリア</a>をご覧ください。</p> <p><strong>エディター</strong><br /> - リッチテキストを編集した後、タイムラインエディターを終了するときに発生するエラーを修正。</p> <ul> <li><p>リソースのエクスポート時に、セカンダリフォルダにあるメタファイルの保存場所が正しくないという問題を修正しました。(Finscn氏に感謝)。</p></li> <li><p>フォルダ構成のバンドル優先度プロパティに誤った数値型がある問題を修正(Finscn氏に感謝)。</p></li> <li><p>Mac上のネイティブプラットフォームの構築に必要なPython 2.xのインストールヒントが改善されました。</p></li> <li><p>エディタープロパティパネルのヘルプリンクが機能しない問題を修正しました。</p></li> </ul> <p><strong>エンジン</strong><br /> - 物理エンジンで、ポリゴンコンポーネントが衝突したときに報告されるエラーを修正(https://github.com/cocos/cocos-engine/pull/10888)</p> <ul> <li><p>Tweenの停止後に内部データが解放されない問題を修正(https://github.com/cocos/cocos-engine/pull/11360) Finscn氏に感謝します。</p></li> <li><p>Label と particle ノードを無効にすると、Timeline エディタに入った後、コンポーネント の有効状態がおかしくなる問題を修正(https://github.com/cocos/cocos-engine/pull/12384)</p></li> <li><p>Director.EVENT_BEFORE_UPDATE, Director.EVENT_AFTER_UPDATE, Director.EVENT_AFTER_DRAW イベントで、deltaTime パラメータを追加 (https://github.com/cocos/cocos-engine/pull/11359), Finscn.Bhd に感謝します。</p></li> <li><p>MotionStreak 効果の最適化。初期化時のトレイル位置を修正し、1フレームによるトレイル遅延を回避しました。(https://github.com/cocos/cocos-engine/pull/10982)</p></li> <li><p>creator.d.ts のいくつかのインターフェイスの定義を改善しました (https://github.com/cocos/cocos-engine/pull/11981)</p></li> </ul> <p><strong>ネイティブ</strong><br /> - バックグラウンドに入ったときのオーディオ加速の問題を修正 (https://github.com/cocos/engine-native/pull/4288)</p> <ul> <li><p>Android プラットフォームで広告にジャンプするときのクラッシュ問題を修正 (https://github.com/cocos/engine-native/pull/4289)</p></li> <li><p>Android 7 バージョン以降、間違った言語が表示される問題を修正 (https://github.com/cocos/engine-native/pull/4290)</p></li> <li><p>ネイティブの WebSocket 呼び出しの Close でゲームがクラッシュする問題を修正 (https://github.com/cocos/engine-native/pull/4291)</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.cocos.com/en/creator/download">Cocos Creator 2.4.10をCocos Dashboardからダウンロード</a></p></li> </ul> <p><a target="_blank" rel="nofollow noopener" href="https://www.cocos.com/en/the-newest-update-to-cocos-creator-2-x-cocos-creator-2-4-10-is-available">引用元</a></p> CocosJapan tag:crieit.net,2005:PublicArticle/18316 2022-11-12T20:20:49+09:00 2022-11-12T20:20:49+09:00 https://crieit.net/posts/Cocos-Creator-3-6 Cocos Creator 3.6の主な改善点 <p>Cocos Creator 3.0では2Dと3Dを統合しましたが、その後、6つの重要なリリースを重ねてきました。その中には、世界初のHarmonyOSサポートや中国初のNintendo Switchサポートといったプラットフォームサポートの追加、ライティングモデルの最適化やモバイル向け遅延レンダリングパイプラインのサポート、アニメーションシステムMarionetteなどの3D必須機能の追加、開発体験の向上や3Dおよび2Dプロジェクトのパフォーマンス最適化などが含まれています。この2年間の一連のリリースでの進化を見ていただくと「小さな一歩が千里につながる」ということを実感していただけるのではないかと思います。</p> <p>3.0のマージ以来だと、Cocosチーム内で3.6を最も重要なマイルストーンとして扱ってきました。これまでで最も長いイテレーション・サイクルを設けて、開発効率、ランタイム・パフォーマンス、グラフィカルな表現力において大きく進化しているのがお分かりになるかと思います。</p> <p>昨年の3.3リリース以降、最も重要な開発メンバーのうち何人かは、3.6ブランチに取り組んできました。このような長い開発サイクルは、何らかの根本的なリファクタリングに必要な場合が多いのです。業界全体にサービスを提供する商用エンジンの特殊性から、常にハードウェアの開発に追随して最高のグラフィック性能に挑戦し、プロジェクトとの互換性や異なるハードウェア環境へのスケーラブルな適応を維持するために、制作サイドの生産性を継続的に向上させる必要があるとされています。</p> <p>これらの課題は、エンジンが、2Dエンジンから3Dエンジンへの進化のように、時には破壊的に、基礎となるフレームワークの継続的な反復とリファクタリングを必要とすることを意味します。ほとんどの場合、この反復は、3.6に向けた私たちの当初の進展のように、継続的なものです。この進化には多くの共有すべきものがあり、この最新版Cocos Creatorの壮大なハイライトをいくつか紹介したいと思います。私たちの仕事を見ていただくと、エンジン開発の永遠の命題を垣間見ることができるかと思います。それは、ハードウェアの更新やユーザーニーズの変化に対応するためには、絶え間ない自己変革が必要だ、ということです。</p> <p>注:WindowsプラットフォームはWin32へのパブリッシュをサポートしなくなりました。Win64のみ対応しています。iOSプラットフォームの最小サポートバージョンは、iOS 10.0からiOS 11.0に変更されました(C++ 17を使用するため)。</p> <p>アップデートに関する全リストと変更ログは、フォーラムの<a target="_blank" rel="nofollow noopener" href="https://discuss.cocos2d-x.org/t/cocos-creator-3-6-0-released/56615">developer notes</a>をご覧ください。</p> <div class="iframe-wrapper"><iframe width="560" height="315" src="https://www.youtube.com/embed/Jy0SOq211cA" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div> <h1 id="より多くのネイティブ・モジュールでより高いパフォーマンスを"><a href="#%E3%82%88%E3%82%8A%E5%A4%9A%E3%81%8F%E3%81%AE%E3%83%8D%E3%82%A4%E3%83%86%E3%82%A3%E3%83%96%E3%83%BB%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E3%81%A7%E3%82%88%E3%82%8A%E9%AB%98%E3%81%84%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%82%92">より多くのネイティブ・モジュールでより高いパフォーマンスを</a></h1> <p>Cocosエンジン・チームは、バージョン3.3のリリース以来、より高いパフォーマンス、互換性、スケーラビリティ、そして生産性を実現するために、コアエンジンのフレームワークを継続的にイテレーションとリファクタリングを行なってきました。</p> <p>古いプロジェクトとの互換性を維持しつつ、大幅な全体的な改善を達成するために、エンジンチームは複数のフェーズとモジュールでエンジンをリファクタリングするのに1年以上かかりました。</p> <p>パフォーマンスの大幅な向上とレンダリングの強化をもたらすと同時に、今後のエンジンのさらなる改良のための土台となるものです。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/e60c9689-420a-a652-95bc-e84aba0ec252.gif" alt="1-1024x769.gif" /><br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/c44a6361-7726-ea51-8c88-2e8bbf94569f.png" alt="image-18-1024x706.png" /></p> <p>また、これらのネイティブモジュールは、2.xと同レベルの2Dレンダリング性能を達成するという重要なマイルストーンとなります。これは、2.xユーザーが、3Dの追加や継続的な反復の必要性がある場合に、安心して3.xにアップグレードできることを意味しています。2Dのバッチ処理とレンダリング送信処理は、すべてネイティブで行われ、2.xと同等の性能を実現しています。もちろん、Spineのバッチ処理サポートなどの積み残しはありますが、ネイティブの上に3.xの2Dレンダリング性能の上限があることを意味します。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/e9900359-b9f0-2313-b047-05ea202a5584.png" alt="image-20.png" /><br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/40605ab3-137d-3e5d-046f-3de14c0968d7.png" alt="image-21.png" /><br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/564671aa-f370-4b4f-15c0-bf0589341209.png" alt="image-22.png" /></p> <h1 id="マテリアル、アニメーション、パーティクルのアップグレード"><a href="#%E3%83%9E%E3%83%86%E3%83%AA%E3%82%A2%E3%83%AB%E3%80%81%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%80%81%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%AF%E3%83%AB%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%82%B0%E3%83%AC%E3%83%BC%E3%83%89">マテリアル、アニメーション、パーティクルのアップグレード</a></h1> <p>進化という点では、3.6は新しい外観、新しいマテリアルAPI、新しいインポート体験、そしてアニメーション埋め込みプレイヤーやパーティクルノイズマップなどの新機能を提供します。ユーザー視点から見ると、これらはどのような意味を持つのでしょうか。まず、エディタのUIとインタラクションエクスペリエンスの進化が挙げられます。何百もの細かな変更により、開発者の方は、エディタがより良い体験と快適な外観を与えてくれることを直感的に感じられるでしょう。第二に、ライティングモデルとレンダリングアルゴリズムの一連の新機能により、Cocosは最新のモバイルゲームの品質に匹敵するグラフィックを持つゲームを開発できるようになり、特に以下に記したカスケードシャドウと異方性マテリアルを使うと、ゲームをワンランク上のものにできるかと思います。</p> <h1 id="主なアップデートの詳細"><a href="#%E4%B8%BB%E3%81%AA%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88%E3%81%AE%E8%A9%B3%E7%B4%B0">主なアップデートの詳細</a></h1> <h2 id="サーフェスシェーダー カスタムマテリアル"><a href="#%E3%82%B5%E3%83%BC%E3%83%95%E3%82%A7%E3%82%B9%E3%82%B7%E3%82%A7%E3%83%BC%E3%83%80%E3%83%BC+%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%A0%E3%83%9E%E3%83%86%E3%83%AA%E3%82%A2%E3%83%AB">サーフェスシェーダー カスタムマテリアル</a></h2> <p>サーフェスシェーダは、統一されたレンダリングプロセスと構造を使用しており、ユーザーはクリーンなコードでサーフェスマテリアル情報を作成し、その組み合わせに使用するライティングとシェーディングモデルを指定することができます。旧バージョン(レガシーシェーダー)と比較すると、記述やメンテナンスが簡単で、バージョンの互換性が高く、レンダリングエラーが発生しにくいという利点があります。そして、統一されたフルシーンライティングやDebug Viewのデバッグ機能など、統一された処理で多くの公開機能を得ることができます。</p> <div class="iframe-wrapper"><iframe width="560" height="315" src="https://www.youtube.com/embed/lSw9MADtdEQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div> <p>また、Cocos Creatorは、一般的で複雑な様々なマテリアルをユーザーに簡単に拡張できるようにし、Effectコードを自動生成するShader Graphをサポートする予定で、Shader開発者方の効率は大幅に向上できるかと思います。</p> <h2 id="新しいレンダリングデバッグビュー"><a href="#%E6%96%B0%E3%81%97%E3%81%84%E3%83%AC%E3%83%B3%E3%83%80%E3%83%AA%E3%83%B3%E3%82%B0%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%83%93%E3%83%A5%E3%83%BC">新しいレンダリングデバッグビュー</a></h2> <p>この機能は、マテリアル、ライティング、シャドウの表示に関する問題をより迅速に調査するために、様々なカスタム表示モードを提供します。また、特定のシーン情報をより明確に表示することができ、最適化を決定するための参考資料となります。</p> <div class="iframe-wrapper"><iframe width="560" height="315" src="https://www.youtube.com/embed/gA1IXLRORrI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div> <h2 id="カスケードシャドウマップ"><a href="#%E3%82%AB%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%89%E3%82%B7%E3%83%A3%E3%83%89%E3%82%A6%E3%83%9E%E3%83%83%E3%83%97">カスケードシャドウマップ</a></h2> <p>通常のシャドウマップには重大な欠点があります。投影領域が大きい場合、良好な影効果を得るためには非常に高解像度のシャドウマップテクスチャが必要となり、ハードウェア容量の限界を超えてしまうことがあります。解像度を上げないと、影はギザギザで形のない不鮮明なものになりますが、投影面積を小さくすると、影の距離が非常に短くなり、少し離れたオブジェクトは影が消えてしまいます。影の距離と影の質のバランスを調整するのは大きな頭痛の種で、以前のバージョンでもそうでした。</p> <p>CSM( Cascade Shadow Map ) は、視野錐台を近景から遠景まで複数のブロックに分割し、近景ブロックの投影面積を小さく、遠景ブロックの投影面積を大きくして、適応型シャドウマップと同等にし、シャドウマップテキストの使用量を数倍に増やしました。近いオブジェクトには非常に精密な影を、視点からの距離が長いオブジェクトにはちょうど良い影の効果を持たせることができるので、開発者は影のパラメータ設定に時間を割く必要がなくなりました。</p> <div class="iframe-wrapper"><iframe width="560" height="315" src="https://www.youtube.com/embed/jl63lISQYAE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div> <h2 id="GGX コンボリューション"><a href="#GGX+%E3%82%B3%E3%83%B3%E3%83%9C%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3">GGX コンボリューション</a></h2> <p>直接照明のスペキュラは GGX BRDF モデルを使用しているため、環境照明では、両光源 の照明効果を対応させるために、同じ BRDF を使用して球面コンボリューションを行う必 要があります。また、粗さの異なる反射情報を対応するミップマップレベルに格納することで、コンボリューション計算により、自動生成ミップマップと比較して、以下の問題を解決することができます。</p> <ol> <li>環境照明のスペキュラのフラッディングやトレーリングが大幅に低減</li> <li>Substance標準のPBRマテリアルとは異なる効果</li> <li>直接照明と環境照明のスペキュラの違い</li> </ol> <p>下図をご覧ください<br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/3c7ffcbc-e98e-c414-d5c6-fccd937e4e56.png" alt="image-23.png" />自動生成されたミップマップ</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/54f001e2-240d-e5f1-274d-6373221df88f.png" alt="image-24.png" />GGXコンボリューションミップマップ</p> <div class="iframe-wrapper"><iframe width="560" height="315" src="https://www.youtube.com/embed/SvabukAPuBo" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div> <p>GGXコンボリューションに基づく反射 vs. ダイレクトライティング vs. オートミップマップに基づく反射</p> <h2 id="異方性照明"><a href="#%E7%95%B0%E6%96%B9%E6%80%A7%E7%85%A7%E6%98%8E">異方性照明</a></h2> <p>サーフェスシェーダの恩恵により、PBRライティングモデルを完全に拡張することができます。v3.6では、等方性、異方性マテリアル、ダイレクトライティングと環境ライティングのライティングモデルが完全にサポートされています。Substance PBRマテリアルライブラリを使用して、ブラッシングされた金属、髪、シルクなどを作成することができます。</p> <div class="iframe-wrapper"><iframe width="560" height="315" src="https://www.youtube.com/embed/_MjFIr9Z6Kk" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/e367b87d-87dd-1736-a681-233be480d6ed.png" alt="image-26.png" /><br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/6465fb77-2cc0-9d6a-687a-d43abe21b30f.png" alt="image-25-1024x837.png" /><br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/6e3fcd52-3841-3ce2-0587-02950fb1ec3d.png" alt="image-27-1024x665.png" /></p> <h2 id="エディターUIが全面的にバージョンアップ"><a href="#%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%83%BCUI%E3%81%8C%E5%85%A8%E9%9D%A2%E7%9A%84%E3%81%AB%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%83%E3%83%97">エディターUIが全面的にバージョンアップ</a></h2> <p>V3.6では、エディターUIが一新されました。今回の改訂では、「より協調的な」視覚システム、「より直感的な」視覚フィードバック、「より没入感のある」インタラクション感覚を基本に、UIとインタラクションを全面的に再編成しています。今後も、Cocosのデザイン目標、デザインシステム、デザイン原則に基づいてデザインを標準化し、コアとなるインタラクションやワークフローを最適化するためのアップデートとイテレーションを繰り返していく予定です。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/3f9c66b0-0bcd-4f69-9dff-ea56570e5ade.png" alt="image-41-1024x592.png" /></p> <h2 id="新しいプレビュー・モード"><a href="#%E6%96%B0%E3%81%97%E3%81%84%E3%83%97%E3%83%AC%E3%83%93%E3%83%A5%E3%83%BC%E3%83%BB%E3%83%A2%E3%83%BC%E3%83%89">新しいプレビュー・モード</a></h2> <p>開発効率は、Cocos Creatorが重要視しているコアバリューですが、v3.6ではさらに改善されました。ブラウザでプレビュー "と "シミュレータでプレビュー "に加え、開発者は "エディタでプレビュー "を使ってプロジェクトをプレビューすることができるようになりました。このモードでは、シーンマネージャーが直接コードを実行するため、開発者はリアルタイムでシーンをデバッグすることができます。シームレスなプレビュー体験をもたらす一方で、デバッグの欠点も補うことができます。</p> <p>この機能は現在実験段階です。ぜひ、ご意見をお聞かせください。今後も、開発効率を重視し、スクリプトコンパイル、プロジェクトデバッグ、ビルドリリースにおけるユーザーエクスペリエンスの向上を継続していきます。</p> <div class="iframe-wrapper"><iframe width="560" height="315" src="https://www.youtube.com/embed/Z5AEV30g7iU" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe></div> <h2 id="アニメーションクリップにプレイヤーを埋め込む"><a href="#%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%AF%E3%83%AA%E3%83%83%E3%83%97%E3%81%AB%E3%83%97%E3%83%AC%E3%82%A4%E3%83%A4%E3%83%BC%E3%82%92%E5%9F%8B%E3%82%81%E8%BE%BC%E3%82%80">アニメーションクリップにプレイヤーを埋め込む</a></h2> <p>Animation Editorは、プレイヤーを埋め込む機能を追加しました。開発者は、任意のアニメーションに、他のパーティクルや他のアニメーションを埋め込むことができます。しかも、ビデオ編集ソフトでトラックを編集するような感覚で、持続時間や再生位置などを自由にプログラムすることが可能です。</p> <p>編集後、埋め込まれたプレーヤーのコンテンツは、このAnimationClipと一緒に再生され、AnimationコンポーネントとAnimation Graphの両方でサポートされます。この機能はFBXからのアニメーションにも対応しており、より柔軟なエフェクトコントロールが可能で、インポートしたアニメーションの再編集が難しいという問題を解決しています。</p> <p>パーティクルプレイヤーとアニメーションプレイヤーの両方は現在3.6で利用可能で、ラボの設定で有効にすることができます。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/75651efd-9916-774c-bac5-8bc7018acb40.gif" alt="MTY4ODg1NDc2OTI4MTUyMQ_489891_ZM-es2iL7NkU_JS7_1660121255-1013x1024.gif" /><br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/d1d80e7f-f70b-b016-e0da-0db85faa1752.gif" alt="MTY4ODg1NDc2OTI4MTUyMQ_455769_sCiialNKc0dNfTK6_1660113725.gif" /></p> <h2 id="多言語サポートが統合されたローカライゼーションエディター"><a href="#%E5%A4%9A%E8%A8%80%E8%AA%9E%E3%82%B5%E3%83%9D%E3%83%BC%E3%83%88%E3%81%8C%E7%B5%B1%E5%90%88%E3%81%95%E3%82%8C%E3%81%9F%E3%83%AD%E3%83%BC%E3%82%AB%E3%83%A9%E3%82%A4%E3%82%BC%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF%E3%83%BC">多言語サポートが統合されたローカライゼーションエディター</a></h2> <p>市場の変化に伴い、cocosユーザーのローカライズに対する需要が大幅に増加し、強力なL10nツールが不足しているため、バージョン3.6から公式プラグイン「Localization Editor」が内蔵されました。</p> <p>その中心的な目的は、高度に自動化されたツールによってユーザーの翻訳効率を向上させ、コードレスでユーザー使用の敷居を下げ、ツールをすぐに使える人なら誰でも使えるようにすることです。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/9e582793-a8df-e692-cc47-9d00ea9ecf48.png" alt="image-40.png" /></p> <p>含まれているコア機能は、次のとおりです。</p> <ol> <li>サポート機械翻訳、現在Googleに接続されている、Youdaoの翻訳</li> <li>翻訳されるべき内容のワン・クリックの抽出のためのサポート</li> <li>.xls、.xlsx、.csv、.poファイルのバッチインポートおよびエクスポートをサポートします。</li> <li>サポート多言語の速い切換えおよび下検分</li> </ol> <h2 id="シーンエディタ"><a href="#%E3%82%B7%E3%83%BC%E3%83%B3%E3%82%A8%E3%83%87%E3%82%A3%E3%82%BF">シーンエディタ</a></h2> <p>シーンエディタに新しいサーフェススナップとバーテックスナップの機能を追加</p> <ul> <li>サーフェススナップ (Ctrl/cmd + Shiftを押したまま)</li> </ul> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/316e6f94-1906-f596-7ceb-84237b76722d.gif" alt="image2-1-1024x683.gif" /></p> <ul> <li>頂点スナップ (vを押し続ける)</li> </ul> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/d39a84cf-cdd9-0610-4d73-816746dbf98b.gif" alt="image3-1024x683.gif" /></p> <p>ボックス選択機能をサポートし、複数のオブジェクトを一度に選択することができます。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/3115e56a-ddaf-f8d9-760a-5af6ca22b2bb.gif" alt="image4-1024x519.gif" /></p> <h2 id="Marionette アニメーションシステムのアップデート"><a href="#Marionette+%E3%82%A2%E3%83%8B%E3%83%A1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%87%E3%83%BC%E3%83%88">Marionette アニメーションシステムのアップデート</a></h2> <ul> <li>Animation Graphは編集中のプレビューに対応しました。</li> </ul> <p>アニメーションのステートマシンを編集する際に、リアルタイムにプレビューして遷移やブレンドの結果を確認することができ、修正後にいちいちゲームを起動して結果を確認することなく、素早くデバッグを行うことができます。</p> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/52233dff-65e1-c81f-b2f0-ecc0c30877ce.png" alt="image-34-1024x711.png" /></p> <ul> <li>アニメーション図が変数とレイヤーの名前変更に対応</li> <li>アニメーションマップがトランジションラインの順序付けに対応</li> <li>アニメーション図に「終了開始時間」プロパティが追加され、トランジションの対象アニメーションを指定した位置から再生開始できるようになりました。</li> <li>アニメーション図で、トランジションを割り込み可能に設定し、指定したトランジションが他のトランジションに割り込まれるようにすることができるようになりました。この機能は、ラボの設定で有効にすることができます。</li> </ul> <h2 id="パーティクルシステムの更新"><a href="#%E3%83%91%E3%83%BC%E3%83%86%E3%82%A3%E3%82%AF%E3%83%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%81%AE%E6%9B%B4%E6%96%B0">パーティクルシステムの更新</a></h2> <ul> <li>新しいNoiseモジュールにより、パーティクルに対してより自然で制御可能なランダムモーション効果がもたらされました。</li> </ul> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/89c46d6e-b86f-8530-1448-ca7f882557c5.png" alt="image-36.png" /><br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/b3601830-7d18-03f9-5b9b-73932cff270d.gif" alt="MTY4ODg1NDc2OTI4MTUyMQ_310874_fF4bUvY8hRLa3j-A_1660113909-1024x576.gif" /></p> <ul> <li>パーティクルシステムのモデルがGPU Instancingに対応し、エミッターのパフォーマンスが向上</li> <li>パーティクル編集で「元に戻す」操作に対応し、パーティクルエフェクトの作成効率が向上</li> <li>パーティクルグループのプレビューと制御を階層構造でサポート</li> </ul> <h2 id="デフォルトでモデルを分割しない"><a href="#%E3%83%87%E3%83%95%E3%82%A9%E3%83%AB%E3%83%88%E3%81%A7%E3%83%A2%E3%83%87%E3%83%AB%E3%82%92%E5%88%86%E5%89%B2%E3%81%97%E3%81%AA%E3%81%84">デフォルトでモデルを分割しない</a></h2> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/663ecc8d-6115-923e-11fa-99163ec74924.png" alt="image-37.png" /></p> <p>CPUで計算するスケルトンアニメーションでは、ユニフォームの数の制限により、ある値を超えるとユニフォームによるスケルトンデータを一度に格納できなくなるため、以前のバージョンではメッシュとボーンを分割することがありました。主にここで自動的に分割されるため、キャラクターモデルの1つが複数の描画コールを占有するというフィードバックをよく受けました。さらに、分割は実行時に行うことができず、前処理しかできないため、我々の分割基準は下位のハードウェアデバイスやドライバ(iPhone 6 WebGL)しか参考にできず、スケルトンの数に対して非常に制限があります。</p> <p>そこで、Cocos Creator 3.6では、この問題に対して、以下のように戦略的な最適化を行いました。</p> <ul> <li>デフォルトでは、モデルは分割されなくなり、インポートされたモデル・データは変更されません(モデル設定も変更されないままです)。</li> <li>ボーンの数が実際のランタイムドライバの制限を超えない場合、ユニフォームを使って直接渡されるようになる</li> <li>ボーン数が制限を超える場合、テクスチャを使用して渡されます。</li> </ul> <p>__ 注意 __ テクスチャを使ってスケルトンアニメーションデータを渡すには、バーテックスシェーダでテクスチャにアクセスする機能が必要です。この機能は OpenGL ES 3.0、WebGL 2.0 で最低限サポートされています。しかし、GL 拡張に依存しているため、OpenGL ES 2.0 と WebGL 1.0 しかサポートしていないデバイスではほぼ 100% カバーされており、互換性の問題を気にする必要はありません。</p> <p>このオプションは、現在、古いプロジェクトとの互換性を維持するためにのみ残されており、適切な時期に削除が検討される予定です。</p> <h2 id="メッシュの更新"><a href="#%E3%83%A1%E3%83%83%E3%82%B7%E3%83%A5%E3%81%AE%E6%9B%B4%E6%96%B0">メッシュの更新</a></h2> <ul> <li>動的メッシュをサポートし、開発者はAPIを通じて実行時にメッシュデータを更新できるようになりました。</li> </ul> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/b8d30b5b-b202-64b0-2797-cfae11b5b181.png" alt="image-38.png" /></p> <ul> <li>GeometryRendererに新しい曲線タイプSplineを追加(Linear、Bezier、Catmull-Rom曲線に対応)</li> </ul> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/297ee232-02e2-f374-2121-a5470e576c4b.png" alt="image-39.png" /></p> <ul> <li>地形高さブラシのサポート</li> </ul> <p><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2852397/c02a5a2d-dbe6-a9ef-66f3-600f48b96e69.gif" alt="image-1024x662.gif" /></p> <p><a target="_blank" rel="nofollow noopener" href="https://www.cocos.com/en/creator/download">Cocos Creator 3.6 とCocos Dashboardをいますぐダウンロード</a></p> <p><a target="_blank" rel="nofollow noopener" href="https://www.cocos.com/en/major-improvements-in-development-come-with-cocos-creator-3-6">引用元</a></p> CocosJapan tag:crieit.net,2005:PublicArticle/17803 2021-12-01T07:00:08+09:00 2021-12-01T14:14:41+09:00 https://crieit.net/posts/55b995eb33e0d9eb6d0fddc5cae2c1ca 個人ゲーム開発の壁 <p>個人で初めてゲーム開発をしようとしたときに障壁になりそうなものを個人的メモとしてまとめてみます。</p> <p>障壁になりそうなものについて単に思いついたものを羅列して書いたもので、それぞれの対処法は未調査、または未整理であるため、ここで対処法について詳しくは記述しません。</p> <p>個人ゲーム開発の障壁となりそうなものは、以下のものです。</p> <ul> <li>ゲームアイディア発想の壁とメンタルブロック</li> <li>技術選定の壁</li> <li>プログラミング学習の壁</li> <li>プログラム設計の壁</li> <li>デバッグの壁</li> <li>パフォーマンスチューニングの壁</li> <li>グラフィックデザインの壁</li> <li>作曲の壁</li> <li>物語創作の壁</li> <li>プロジェクトマネジメントの壁</li> <li>ゲームデザインの壁</li> <li>マーケティングの壁</li> </ul> <h1 id="ゲームアイディア発想の壁とメンタルブロック"><a href="#%E3%82%B2%E3%83%BC%E3%83%A0%E3%82%A2%E3%82%A4%E3%83%87%E3%82%A3%E3%82%A2%E7%99%BA%E6%83%B3%E3%81%AE%E5%A3%81%E3%81%A8%E3%83%A1%E3%83%B3%E3%82%BF%E3%83%AB%E3%83%96%E3%83%AD%E3%83%83%E3%82%AF">ゲームアイディア発想の壁とメンタルブロック</a></h1> <p>ゲームを作ろうとしたはいいものの、どのような内容のゲームを作るべきかが思いつかない、という問題です。</p> <p>すでに作りたい内容が明確に構想できている場合は、ここの問題はスキップされます。</p> <p>この問題に対して先人らはよく「作りたいもの作ればいいじゃん」とか言いますが、その作りたいものが何かわからない、というような状況がありそうです。さらに「作りたいものが無いなら、そもそもゲーム開発なんてできない/ゲーム作りは向いてない」などと追い打ちをかけられることもあります。</p> <p>すでに世に出ているゲームの模倣をする、という方法も取れますが、その場合「ゲームアイディアの発想」以外の取り組みの練習にはなりそうですが、肝心の「ゲームアイディア発想」自体はスキップされ、その能力を養う機会を損失しそうです。</p> <p>また、ゲームアイディアを発想してみたものの、自らの冷静で客観的な評価として否定される(”自分の中のもう一人の自分”や"自分の中の他人”が否定的な評価をささやき、そのゲームを作ることをやめさせる)問題があります。このような「自分の行動を制限しようとする思考」は、通称「メンタルブロック」と呼ばれています。(もう一人の自分が「そんなゲーム作ってどうするんだ?」「どのゲームのどこがおもしろいんだ?」などとささやいてくる)</p> <h1 id="技術選定の壁"><a href="#%E6%8A%80%E8%A1%93%E9%81%B8%E5%AE%9A%E3%81%AE%E5%A3%81">技術選定の壁</a></h1> <p>ゲーム開発の技術的な知識がほとんど無い状態だと、何を使ってゲーム開発すべきかがわからない場合があります。</p> <p>この場合、Webで情報を検索してみたり、質問サイトで相談する、という方法がとれます。そして、(下書き執筆開始の)2020年12月執筆時点では、個人ゲーム開発で使用する技術としておそらく一番多くおすすめされるものが Unity というゲームエンジン兼各種エディター、ツールで、次点で Unreal Engine がおすすめされるでしょう。</p> <p>たまに素のプログラミング言語(とその処理系)から、Unity のようなツール群を使わずにゲーム開発をしたい、という(学習者の技術投資の価値観としての)ケースがありますが、その場合は、各種プログラミング言語とその処理系、実行環境との相性などの特徴から選定を行う必要があるため、迷いが発生しやすいです。</p> <p>昨今、ゲーム開発企業の現場から「Unityの表面的な部分しか使えないより、もっと奥深い部分を理解して使いこなせる人材がほしい」という声も聞かれるため、もし個人でゲームを作ろうとする理由が就職のためである場合に、Unity 以外の選択肢を選ぼうとする理由が生まれる可能性はあります。</p> <p>「Unity でも深く学べば、奥深い仕組みの部分も学べるんじゃないか」という意見もありそうですが、Unity が持つ機能の一部はブラックボックス(中身が見えないもの)であり、むしろ、「奥深く中身を見なくてもゲーム開発ができるようにするためのツール」であるため、やはり、Unity についてのみ学習することは、その奥深い、コンピューターに近い部分の仕組みや、レンダリングの仕組みや手法、その特性などを学ぶ機会を失う可能性が否めません。</p> <h1 id="プログラミング学習の壁"><a href="#%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E5%AD%A6%E7%BF%92%E3%81%AE%E5%A3%81">プログラミング学習の壁</a></h1> <p>多くの開発環境では、プログラミング言語を駆使する必要があるため、プログラミング言語についての学習を行う必要があります。しかし、この段階でつまづくケースがあります。(Unity では C# というプログラミング言語を駆使する必要があります)</p> <p>多くの場合、学習の順序、段階をスキップしているがゆえに起こる問題が多いように思います。例えば、プログラミング言語の文法の学習をスキップして、作ろうとしているゲームの機能の実装方法を調べて(「〇〇の作り方」などと検索して)得られたプログラムの断片をコピーして作ろうとすると(いわゆる「コピペプログラミング」と呼ばれる方法)、コンパイルエラーや意図しない動作への自力での対処が難しく、このような状況に陥ると「ゲーム開発は難しい」「わからない」などの感想を強く持ち、ゲーム開発をあきらめる理由が強化されます。</p> <p>かと言って、プログラミング言語の文法をいちからじっくり学ぶ方法をとっても、いつまで経っても動くゲームを作ることができず、学習が飽きてしまうという問題が指摘されることがあります。そのため「プログラミング言語の学習と、ゲームの実装の両方を、ほどほどにバランスよく進める」という助言がされることもありますが、どうやったらほどほどにバランスが良いのかの指標が具体的に提示されることは少ないため、なかなか迷いやすい部分にはなりそうです。</p> <p>「自分は今、どの部分の知識が足りていないがゆえに、今の問題に直面しているのか」が可視化されれば問題に対処しやすいですが、現時点ではそれを可視化するための良い方法が普及しているとは言い難いため、救われない人が多くいるのではないかと想像します。</p> <p>学習のガイド役となるような(いわゆるメンター的な)存在が身近にいて、学習をガイドしてくれるなら救いの道があります。このガイド役は「学習者がいま問題に直面しているのは、どの部分の知識が足りていないからなのか」について分析(広義のカウンセリング)をして、どの部分の知識が足りていないのかを知り、その不足を補うための("処方箋"のような)具体的な対処法を提示する必要があります。</p> <p>この分析をせずに無理に助言をしようとする場合、その多くは「説教」のようになってしまうでしょう。</p> <h1 id="プログラム設計の壁"><a href="#%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E8%A8%AD%E8%A8%88%E3%81%AE%E5%A3%81">プログラム設計の壁</a></h1> <p>小規模のゲーム開発であれば、プログラム設計が雑でも”チカラ技"で完成させることができるかもしれないですが、中規模以上のゲーム開発となると、雑なプログラム設計では、ちょっとした機能追加や修正作業でもプログラムを変更する箇所が多すぎたり、データとロジックの不整合などによってプログラムのうまい変更方法を思いつけなくなったり(この場合は、たいてい作り直すのが早い)、プログラムの変更が意図しない機能に影響を与えて不具合を生んだり、などのような問題が起きます。</p> <p>この分野に関しては「プログラムの一般化/抽象化/モデル化」「高凝集化」「疎結合」「関心の分離」「オブジェクト指向設計」などのキーワードで語られることがあり、高度なものになると「MVC」「MVVM」「双方向データフロー」「単方向データフロー」「クリーンアーキテクチャ」「リアクティブプログラミング」「ドメイン駆動開発」などのソフトウェアアーキテクチャの分野で説明されることがあります。</p> <p>これらの分野は、自主的かつ積極的にプログラミング関連の情報を収集しているか、学習のガイド役の人がガイドをしない限り、学習しようとする機会が生まれないかもしれないです。</p> <h1 id="デバッグの壁"><a href="#%E3%83%87%E3%83%90%E3%83%83%E3%82%B0%E3%81%AE%E5%A3%81">デバッグの壁</a></h1> <p>プログラミング初学者が、コンパイルエラー、実行時エラー、意図しない動作に遭遇したときの対処方法を積極的に学ぶ機会は少ないかもしれません。</p> <p>コンパイルエラー、実行時エラーのエラー文の意味を解読するためにはプログラミング言語の文法を理解している必要があるため、そのエラーの対象となる文法の学習をスキップしている場合は、その解読ができません。(エラー文で検索して出てきた対処法を見よう見まねで組み込んでも、それは付け焼刃的なものになるでしょう)</p> <p>また、実行時エラーや意図しない動作に対処する場合、何らかのデバッグテクニックや、いわゆる「デバッガー」というツールを駆使して、問題の原因を特定する必要があります。しかし、プログラミング初学者は「実行時エラーや意図しない動作の原因を特定するためにはデバッガーを使えば良い」ということ自体を知っていないケースがあり、たまたまデバッグ方法について上手に説明している教材に巡り合えたか、良いガイドがされた場合だけに成長が約束されます。</p> <h1 id="パフォーマンスチューニングの壁"><a href="#%E3%83%91%E3%83%95%E3%82%A9%E3%83%BC%E3%83%9E%E3%83%B3%E3%82%B9%E3%83%81%E3%83%A5%E3%83%BC%E3%83%8B%E3%83%B3%E3%82%B0%E3%81%AE%E5%A3%81">パフォーマンスチューニングの壁</a></h1> <p>ゲームを作ってはみたものの、メモリ使用量が多すぎたり、処理に時間がかかりすぎてフレームレートが低くなったりなどの問題が起こることがあります。</p> <p>このようなとき、いわゆる「プロファイラー」と呼ばれるようなツールを使ってボトルネックを発見し、そのボトルネックを解消させる必要があります。</p> <p>メモリ使用量や実行速度の問題が起きた時に「プロファイラーを使ってボトルネックを見つけて解消する」という方法を自体を知るには、かなりプログラミングについて調査、学習をしているか、良いガイドが必要になります。</p> <h1 id="グラフィックデザインの壁"><a href="#%E3%82%B0%E3%83%A9%E3%83%95%E3%82%A3%E3%83%83%E3%82%AF%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%81%AE%E5%A3%81">グラフィックデザインの壁</a></h1> <p>自作でゲームを作るからには、グラフィック素材についても自作したい、と思うケースがあります。ゲームに近いグラフィックデザインに関する理論が確立されているのかどうかは筆者はわかりません。</p> <p>お金に余裕があれば、上手な人に頼んだり、有償の素材を購入するという対処ができます。</p> <p>フリー素材を使うという方法もあります。</p> <h1 id="作曲の壁"><a href="#%E4%BD%9C%E6%9B%B2%E3%81%AE%E5%A3%81">作曲の壁</a></h1> <p>自作でゲームを作るからには、音楽素材(または効果音)についても自作したい、と思うケースがあります。音楽理論は長い歴史で確立されているので、学習しやすい分野ではあるかもしれないです。</p> <p>お金に余裕があれば、上手な人に頼んだり、有償の素材を購入するという対処ができます。</p> <p>フリー素材を使うという方法もあります。</p> <h1 id="物語創作の壁"><a href="#%E7%89%A9%E8%AA%9E%E5%89%B5%E4%BD%9C%E3%81%AE%E5%A3%81">物語創作の壁</a></h1> <p>物語要素を含めたゲームを作る場合、その物語を作る必要があります。</p> <p>物語要素を含むゲーム作品では、その物語の内容はオリジナルである必要があるため、グラフィック素材や音楽のようにすでに提供されている素材を使う、というような方法はとれません。</p> <p>良い物語を作るため方法論は長い歴史の中で割と確立されているようで、関連した書籍が多く出版されている印象がありますが、その書籍を購入するための資金と、その書籍を用いた学習をするための時間と心的リソースは必要になります。</p> <h1 id="プロジェクトマネジメントの壁"><a href="#%E3%83%97%E3%83%AD%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E3%83%9E%E3%83%8D%E3%82%B8%E3%83%A1%E3%83%B3%E3%83%88%E3%81%AE%E5%A3%81">プロジェクトマネジメントの壁</a></h1> <p>中規模以上のゲームを開発するような場合、プロジェクト管理を上手くやらなければ以下のような問題が起こります。</p> <ul> <li>次に取り組むべき作業が何かわからない</li> <li>どこまで作業をすれば良いのかわからない</li> <li>いつ完成するのか見えない</li> <li>今どのくらい作業が進んでいるのかわからない(残りの作業がどのくらいあるのかわからない)</li> <li>仕様の何を直せばいいのかわからない(目指す品質・優先しない品質が何かわからない)</li> </ul> <p>いわゆる「創作のモチベーション維持」がうまくできていない場合は、ここがうまくできていない可能性があります。</p> <h1 id="ゲームデザインの壁"><a href="#%E3%82%B2%E3%83%BC%E3%83%A0%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3%E3%81%AE%E5%A3%81">ゲームデザインの壁</a></h1> <p>思い描いたゲームの試作してみたものの、「思っていたものと違う」「どうも面白くない」というような場合はゲームの内容を上手く修正して良い内容に変えていく必要がありますが、具体的に何をどう変えたら良くなるのかがわからない場合があります。</p> <p>ゲームの内容の良さに影響する要素は複数ありますが、それぞれで良さを生むようにするための方法はそれぞれで専門性があります。例えば、ゲームの競技ルールが良くないがためにゲーム展開が盛り上がりに欠けるようになってしまったり、視覚効果が貧弱でゲームプレイで高揚感が得られにくい、などあります。競技デザインと視覚効果デザインは専門性が異なります。</p> <h1 id="マーケティングの壁"><a href="#%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%AE%E5%A3%81">マーケティングの壁</a></h1> <p>これはすでにゲームが完成したあとの話になるが、「作ったゲームが知れ渡らない」「作ったゲームが良い評価を受けない」というような場合、マーケティングの視点でゲームの内容を見直す必要が出てくる。</p> mozukichi tag:crieit.net,2005:PublicArticle/15975 2020-06-23T09:37:52+09:00 2020-06-23T09:43:27+09:00 https://crieit.net/posts/game1week 【1週間】Web ゲームを爆速で開発するために実践したこと🐧個人開発向け <p>(内心)<br /> 作ったゲームを沢山の人に触ってもらってリアクションが欲しいなぁ~<br /> そうだ、記事投稿して宣伝しよう!</p> <p>といった<strong>下心で書いた記事です</strong>。すみませんでした 遊んでください😆</p> <blockquote class="twitter-tweet"><p lang="ja" dir="ltr">Web Game 処女作🎉シンプルでストレス発散になるゲームが爆誕!敵さんを吹っ飛ばして 1,000 G 以上を目指してみてね😆<a target="_blank" rel="nofollow noopener" href="https://t.co/h8w574aGGQ">https://t.co/h8w574aGGQ</a>★アドバイス急募★『こうしたらもっと面白くなる』など、ご意見ご感想を頂けると嬉しいっす(〃´∪`〃)ゞ<a target="_blank" rel="nofollow noopener" href="https://twitter.com/hashtag/%E4%BB%8A%E6%97%A5%E3%81%AE%E7%A9%8D%E3%81%BF%E4%B8%8A%E3%81%92?src=hash&ref_src=twsrc%5Etfw">#今日の積み上げ</a> <a target="_blank" rel="nofollow noopener" href="https://twitter.com/hashtag/100DaysOfCode?src=hash&ref_src=twsrc%5Etfw">#100DaysOfCode</a> DAY 21 <a target="_blank" rel="nofollow noopener" href="https://t.co/HJvFj87zTf">pic.twitter.com/HJvFj87zTf</a></p>— hikaru🐧#100DaysOfCode! (@hikaru_firecamp) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/hikaru_firecamp/status/1273289660186292224?ref_src=twsrc%5Etfw">June 17, 2020</a></blockquote> <blockquote> <p>ペンギンがサメさんを倒すゲーム<br /> 敵さんを吹っ飛ばして 1,000 G 以上を目指してみてね😆<br /> <a target="_blank" rel="nofollow noopener" href="https://games.westa.io/">https://games.westa.io/</a></p> </blockquote> <h2 id="0⃣ 結論 / 爆速で開発するために実践したこと"><a href="#0%E2%83%A3+%E7%B5%90%E8%AB%96+%2F+%E7%88%86%E9%80%9F%E3%81%A7%E9%96%8B%E7%99%BA%E3%81%99%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E5%AE%9F%E8%B7%B5%E3%81%97%E3%81%9F%E3%81%93%E3%81%A8">0⃣ 結論 / 爆速で開発するために実践したこと</a></h2> <ul> <li>1週間のカウントダウンタイマーを設置する</li> <li>適当な企画書を作って全体を把握しならが作業する</li> <li>新しいことは1個までに制限して知っているものを使う</li> <li>こだわりたい部分を絞り他を捨てる覚悟を持つ</li> </ul> <h2 id="1️⃣ この記事の対象読者"><a href="#1%EF%B8%8F%E2%83%A3+%E3%81%93%E3%81%AE%E8%A8%98%E4%BA%8B%E3%81%AE%E5%AF%BE%E8%B1%A1%E8%AA%AD%E8%80%85">1️⃣ この記事の対象読者</a></h2> <p>この記事では<strong>1週間で Web ゲームを作る為に何を考え何をしたのか</strong>を書きました。<br /> 以下に当てはまる人達に参考になれば嬉しいです。</p> <ul> <li>好きなことへのこだわりが強く<strong>いつまでも作品が完成しない</strong>人</li> <li>いつも<strong>ダラダラ期限を伸ばしてしまう</strong>人</li> <li>このゲームがどんなライブラリ使っているか知りたい人</li> <li>奇特な人</li> </ul> <h2 id="2️⃣ なぜ1週間なの?"><a href="#2%EF%B8%8F%E2%83%A3+%E3%81%AA%E3%81%9C%EF%BC%91%E9%80%B1%E9%96%93%E3%81%AA%E3%81%AE%EF%BC%9F">2️⃣ なぜ1週間なの?</a></h2> <p>個人開発の一番の敵って<strong>いかにモチベーションを保つか</strong>だと思いませんか?</p> <p>私の場合1ヶ月もたてば他に興味あることが出てきてしまうのでモチベーションが移ってしまいます。<br /> でも、<strong>1週間なら全力で頑張れるちょうどよい長さ</strong>かな~と考えました。</p> <p>(それと、1週間ならクオリティ低くても言い訳になるかな と)</p> <h2 id="3⃣ 1週間という短い期間で終わらせるために意識したこと"><a href="#3%E2%83%A3+%EF%BC%91%E9%80%B1%E9%96%93%E3%81%A8%E3%81%84%E3%81%86%E7%9F%AD%E3%81%84%E6%9C%9F%E9%96%93%E3%81%A7%E7%B5%82%E3%82%8F%E3%82%89%E3%81%9B%E3%82%8B%E3%81%9F%E3%82%81%E3%81%AB%E6%84%8F%E8%AD%98%E3%81%97%E3%81%9F%E3%81%93%E3%81%A8">3⃣ 1週間という短い期間で終わらせるために意識したこと</a></h2> <h3 id="(1) 1週間のカウントダウンタイマーを設置する"><a href="#%281%29+%EF%BC%91%E9%80%B1%E9%96%93%E3%81%AE%E3%82%AB%E3%82%A6%E3%83%B3%E3%83%88%E3%83%80%E3%82%A6%E3%83%B3%E3%82%BF%E3%82%A4%E3%83%9E%E3%83%BC%E3%82%92%E8%A8%AD%E7%BD%AE%E3%81%99%E3%82%8B">(1) 1週間のカウントダウンタイマーを設置する</a></h3> <p>いつもズルズル伸ばしてしまう癖があるので <strong>Twitter で公開日を宣言</strong>しました。<br /> そして公開日までの<strong>カウントダウンタイマーを常に目に入る位置に設置</strong>しておきました。</p> <blockquote class="twitter-tweet"><p lang="ja" dir="ltr">次に出す Web アプリのリリース日を 6/17 12:00 頃に決めました🎉メリハリ付けるために中途半端でもこのタイミングで出します写真はちょうどいいカウントダウンタイマーが無かったので作ってみました▪コードはこちら<a target="_blank" rel="nofollow noopener" href="https://t.co/HiGjiROP4R">https://t.co/HiGjiROP4R</a>(8,9行目を編集すれば自分用に使えるよ!) <a target="_blank" rel="nofollow noopener" href="https://t.co/HnjXxktDLb">pic.twitter.com/HnjXxktDLb</a></p>— hikaru🐧#100DaysOfCode! (@hikaru_firecamp) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/hikaru_firecamp/status/1269807592533979138?ref_src=twsrc%5Etfw">June 8, 2020</a></blockquote> <p>このカウントダウンタイマー、<strong>すっごく効果があった</strong>ように思います。度々目に入るので<strong>程よい緊張感と無機質な圧力</strong>をくれます。<br /> さらにシレっと<strong>周囲の人たちに公開日を宣言</strong>できるのでかなりお勧めです。</p> <blockquote> <p>⚠ 補足 ⚠<br /> さも予定を守ったように言ってますが結局半日ほど遅く公開してしまいました<br /> ほ ん と す み ま せ ん で し た 😗</p> </blockquote> <h3 id="(2) 適当な企画書を作って全体を把握しならが作業する"><a href="#%282%29+%E9%81%A9%E5%BD%93%E3%81%AA%E4%BC%81%E7%94%BB%E6%9B%B8%E3%82%92%E4%BD%9C%E3%81%A3%E3%81%A6%E5%85%A8%E4%BD%93%E3%82%92%E6%8A%8A%E6%8F%A1%E3%81%97%E3%81%AA%E3%82%89%E3%81%8C%E4%BD%9C%E6%A5%AD%E3%81%99%E3%82%8B">(2) 適当な企画書を作って全体を把握しならが作業する</a></h3> <p>企画書などが無い状態でコーディングすると目に付いた場所から手を付けてしまいがちで<strong>視野が局所的になりやすく作業の優先度決めが難しく</strong>なります。</p> <p>簡単なものでも<strong>全体像を把握できるもの</strong>があると、次にどの部分を実装するか考えるときに『最低でもここを実装しないとだから優先度高めで』みたいな<strong>スケジュール管理が容易</strong>になります。</p> <p>今回は以下の様な簡易仕様書をあらかじめ書いておりました。</p> <blockquote class="twitter-tweet"><p lang="ja" dir="ltr">これから作るミニゲームの簡易仕様書!よくあるクリックゲームですが、ちゃんと作りきれるか不安😇1週間がんばります〜(あ、奇しくも一人 web1week みたいになってる)全然関係ないけど最近 iPad でお絵描きの練習始めました!スマブラやったことあればピンとくるはず😎 <a target="_blank" rel="nofollow noopener" href="https://t.co/oVo5xAUeBe">pic.twitter.com/oVo5xAUeBe</a></p>— hikaru🐧#100DaysOfCode! (@hikaru_firecamp) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/hikaru_firecamp/status/1270280818116583425?ref_src=twsrc%5Etfw">June 9, 2020</a></blockquote> <p>これのおかげで実装段階での仕様変更が減り、<strong>一直線にゴールに向かって実装できるので結構大切</strong>なものだと思います。</p> <h3 id="(3) 新しいことは1個までに制限して知っているものを使う"><a href="#%283%29+%E6%96%B0%E3%81%97%E3%81%84%E3%81%93%E3%81%A8%E3%81%AF%EF%BC%91%E5%80%8B%E3%81%BE%E3%81%A7%E3%81%AB%E5%88%B6%E9%99%90%E3%81%97%E3%81%A6%E7%9F%A5%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%82%82%E3%81%AE%E3%82%92%E4%BD%BF%E3%81%86">(3) 新しいことは1個までに制限して知っているものを使う</a></h3> <p>初めて使う道具が多いと勉強することが増えたり些細なことにはまったりして時間を消費しがちなので、<strong>使い慣れた開発環境</strong>と<strong>使った事のあるライブラリ</strong>を中心に選定しました。</p> <h4 id="使い慣れたもの"><a href="#%E4%BD%BF%E3%81%84%E6%85%A3%E3%82%8C%E3%81%9F%E3%82%82%E3%81%AE">使い慣れたもの</a></h4> <ul> <li><strong>VS-Code</strong> ... 開発環境</li> <li><strong>TypeScript</strong> ... 開発言語</li> <li><strong>UIKit</strong> ... UI コンポーネント</li> </ul> <h4 id="以前から実験レベルで遊んでいたもの"><a href="#%E4%BB%A5%E5%89%8D%E3%81%8B%E3%82%89%E5%AE%9F%E9%A8%93%E3%83%AC%E3%83%99%E3%83%AB%E3%81%A7%E9%81%8A%E3%82%93%E3%81%A7%E3%81%84%E3%81%9F%E3%82%82%E3%81%AE">以前から実験レベルで遊んでいたもの</a></h4> <ul> <li><strong>Three.js</strong> ... 3D 描画エンジン</li> <li><strong>Cannon.js</strong> ... 3D 物理エンジン</li> </ul> <h4 id="初めて使うもの"><a href="#%E5%88%9D%E3%82%81%E3%81%A6%E4%BD%BF%E3%81%86%E3%82%82%E3%81%AE">初めて使うもの</a></h4> <ul> <li><strong>Audio API</strong> ... BGM や効果音の再生</li> </ul> <p>今回は遊べる Web ゲームを<strong>短期間で作ることが目的</strong>だったので冒険をしない制約を設けましたが、完成度が低くても<strong>未知なる技術を沢山学びたいならどんどん新しい技術を使ってみたらよい</strong>と思います。</p> <p><strong>目的次第でやり方を臨機応変にする</strong>ことが大事なのかなと😎</p> <h3 id="(4) こだわりたい部分を絞り他を捨てる覚悟を持つ"><a href="#%284%29+%E3%81%93%E3%81%A0%E3%82%8F%E3%82%8A%E3%81%9F%E3%81%84%E9%83%A8%E5%88%86%E3%82%92%E7%B5%9E%E3%82%8A%E4%BB%96%E3%82%92%E6%8D%A8%E3%81%A6%E3%82%8B%E8%A6%9A%E6%82%9F%E3%82%92%E6%8C%81%E3%81%A4">(4) こだわりたい部分を絞り他を捨てる覚悟を持つ</a></h3> <p>こだわりが強いと味のあるイイものができるけど、その代わり<strong>完成が遅くなる</strong>傾向にあると思います。</p> <p>今回は『ローポリキャラ達が<strong>物理演算で予想外の挙動</strong>をする』部分だけこだわりましたが、操作 UI の見た目などはブラウザ標準のプログレスバーを使っていたりと<strong>大部分はかなり適当</strong>です。</p> <p>個人的にはゲームの中に<strong>ブラウザの DOM を混ぜることに違和感</strong>とアレルギーを感じるのですが『<strong>こだわる部分を絞って他は適当</strong>』と大胆に割り切っちゃいました。<br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67192/ef433b3e-8d54-62b9-94b9-83f98f528ade.png" alt="image.png" /></p> <p>他にも、ペンギン/サメ/コイン/木 の当たり判定はすべて立方体(正六面体)で手抜きをしましたが、これは予想に反して『<strong>サメさんやコインが地面に刺さってる</strong>』ように見えたり『木々があらぶってる』感じになったり<strong>ヘンテコな世界観の演出</strong>に一役買ったように思います。<br /> <img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/67192/a1a1764b-8e99-17a7-de03-a410ae195d96.png" alt="2020-06-18_00h32_18.png" /></p> <h2 id="4⃣ おまけ: 実装 Tips"><a href="#4%E2%83%A3+%E3%81%8A%E3%81%BE%E3%81%91%3A+%E5%AE%9F%E8%A3%85+Tips">4⃣ おまけ: 実装 Tips</a></h2> <p>唐突なおまけの実装 Tips です。</p> <h3 id="(1) Cannon.js / サメさんの Z 位置(奥行)を固定"><a href="#%281%29+Cannon.js+%2F+%E3%82%B5%E3%83%A1%E3%81%95%E3%82%93%E3%81%AE+Z+%E4%BD%8D%E7%BD%AE%28%E5%A5%A5%E8%A1%8C%29%E3%82%92%E5%9B%BA%E5%AE%9A">(1) Cannon.js / サメさんの Z 位置(奥行)を固定</a></h3> <p>Cannon.js は 3 次元物理演算なので XYZ 軸分の動きがあるのですが、サメさん(敵)に関しては奥行方向に動かれると攻撃を当てられなくなるので Z 軸を固定しています。</p> <pre><code class="ts">// CannonJs: サメさんの物理演算用の剛体を生成 const sharkBody = new CANNON.Body({ <省略> }); // ThreeJs: アニメーションループを開始 renderer.setAnimationLoop(() => { // CannonJs: 1フレーム分の物理演算を実行 world.step(<省略>); // ★★ サメさんのZ位置を固定する ★★ sharkBody.position.set( sharkBody.position.x, sharkBody.position.y, 0); // Z軸を0に変更 }); </code></pre> <h3 id="(2) Cannon.js / 摩擦設定・反発設定"><a href="#%282%29+Cannon.js+%2F+%E6%91%A9%E6%93%A6%E8%A8%AD%E5%AE%9A%E3%83%BB%E5%8F%8D%E7%99%BA%E8%A8%AD%E5%AE%9A">(2) Cannon.js / 摩擦設定・反発設定</a></h3> <p>初期値だとほとんど滑ることは無く、滑らせた方が面白そうだったので摩擦と反発の設定をいじっています。</p> <p>モデルごとに摩擦係数や反発係数を設定できれば直感的だったのですが、Cannon.js では『モデル1とモデル2に対しての摩擦・反発を設定』といった具合に設定が必要でした。</p> <pre><code class="ts">// // 物理演算ワールドを初期化 // const world = new CANNON.World(); world.gravity.set(0, -9.82, 0); // m/s² const floorBodyMaterial = new CANNON.Material(`FloorModel`); const penguinBodyMaterial = new CANNON.Material(`PenguinModel`); const sharkBodyMaterial = new CANNON.Material(`SharkModel`); // 摩擦反発設定: 床とペンギン world.addContactMaterial(new CANNON.ContactMaterial( floorBodyMaterial, penguinBodyMaterial, { friction: 0.01, // 摩擦設定 (ペンギンが床を滑るように) restitution: 0.8, // 反発設定 } )); // 摩擦反発設定: 床とサメ world.addContactMaterial(new CANNON.ContactMaterial( floorBodyMaterial, sharkBodyMaterial, { friction: 0.05, // 摩擦設定 restitution: 0.3, // 反発設定 contactEquationStiffness: 1e8, contactEquationRelaxation: 3, } )); // 摩擦反発設定: ペンギンとサメ world.addContactMaterial(new CANNON.ContactMaterial( penguinBodyMaterial, sharkBodyMaterial, { friction: 0.01, // 摩擦設定 restitution: 2.0, // 反発設定 (攻撃を受けたサメが吹っ飛びやすいように) } )); </code></pre> <h3 id="(3) Three.js / 同じモデルは使いまわして効率化"><a href="#%283%29+Three.js+%2F+%E5%90%8C%E3%81%98%E3%83%A2%E3%83%87%E3%83%AB%E3%81%AF%E4%BD%BF%E3%81%84%E3%81%BE%E3%82%8F%E3%81%97%E3%81%A6%E5%8A%B9%E7%8E%87%E5%8C%96">(3) Three.js / 同じモデルは使いまわして効率化</a></h3> <p>今回ゲーム内では<strong>同じモデルが大量に出現</strong>します。その際に<strong>毎回モデルをロードしていると実行効率が悪い</strong>ので、モデル管理クラスが必要になります。</p> <p>こういった目的の管理クラス系にはシングルトン実装が最適かと思いますが、TypeScript では <strong><code>module</code> を使うと簡単にシングルトン実装が可能</strong>です。</p> <pre><code class="ts">/** モデル名の型定義 */ export type ModelName = `PENGUIN` | `SHARK` | `TREE` | `COIN`; /** * ゲーム内のモデルを管理するモジュール *  シングルトン実装 *  モデルをあらかじめロードして、ロード済みのモデルを使いまわすことで効率化 */ export module ModelManager { /** ロード済みのモデルを保持 */ const modelMap = new Map<ModelName, THREE.Object3D>(); /** 各種モデルをロードする */ export async function load() { await loadModel(`PENGUIN`, `models/PenguinJumping.glb`); await loadModel(`SHARK`, `models/Shark.glb`); await loadModel(`TREE`, `models/Tree.glb`); await loadModel(`COIN`, `models/Coin.glb`); } /** モデルを複製して取得する */ export function getModel(modelName: ModelName) { return modelMap.get(modelName)!.clone(); } /** ロード済みモデルを開放する */ export function dispose() { // ThreeJs: ロードしたモデルをすべて解放 modelMap.forEach((obj3D, key) => { GameUtils.disposeObject3D(obj3D); }); } async function loadModel(modelName: ModelName, path: string) { // ThreeJs: モデル読み込み const obj3D = await GameUtils.loadGltfModel(path); // リストに追加 modelMap.set(modelName, obj3D); } } </code></pre> <p>使い方</p> <pre><code class="ts">// あらかじめすべてのモデルをロードする await ModelManager.load(); // ペンギンモデルを取得する (内部的にはロード済みのモデルを複製しているので効率的) const penguin1 = ModelManager.getModel(`PENGUIN`); const penguin2 = ModelManager.getModel(`PENGUIN`); const penguin3 = ModelManager.getModel(`PENGUIN`); </code></pre> <h2 id="最後に"><a href="#%E6%9C%80%E5%BE%8C%E3%81%AB">最後に</a></h2> <p>ゲーム開発中に Twitter でいいねやコメントなどでリアクションをくれた方、開発中のゲームを試してヒントをくれた友人方、本当にありがとうございました。<br /> 大変励みになりモチベーションになりました、重ねてお礼申し上げます😆</p> <p>あと、ここまで読んでまだプレイしていない人!!<br /> ↓ やってからリアクションをクレクレ厨😗</p> <blockquote> <p>ペンギンがサメさんを倒すゲーム<br /> 敵さんを吹っ飛ばして 1,000 G 以上を目指してみてね😆<br /> <a target="_blank" rel="nofollow noopener" href="https://games.westa.io/">https://games.westa.io/</a></p> </blockquote> <hr /> <p>P.S. crieit.net で初カノニカル投稿してみました🎉これ書く側としてはイイ仕組みですね</p> hikaru🐧 tag:crieit.net,2005:PublicArticle/15940 2020-06-11T11:24:15+09:00 2020-06-11T14:06:55+09:00 https://crieit.net/posts/3f54445970731fb052a5d15d625d2301 スマホ向けゲームを作る時に何を使うと良いのかを考察 <p>スマホでマルチプラットフォームのゲームを作る際にどういったソフトウェアを使えばいいかを検討したのでその考察のメモ。2020/6時点。</p> <p>ちなみにどの点を考えたかというと下記あたり。</p> <ul> <li>ライトなゲームの作りやすさ</li> <li>AdMob、Analyticsの導入のしやすさ</li> <li>ライセンス料(だいぶ前に調べた知識なので今は違っているかもしれない)</li> </ul> <h2 id="ゲームエンジン"><a href="#%E3%82%B2%E3%83%BC%E3%83%A0%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%B3">ゲームエンジン</a></h2> <p>ゲームを作るためのソフトウェアを使う場合。可能であればこれが良いと思う。</p> <h3 id="Unity"><a href="#Unity">Unity</a></h3> <p>これがなんでも揃っててベストだと思う。</p> <p>ただし一点懸念として、ライセンス料金の高さがある。とくに何もなければ気にする必要はないと思うが、前年の売上が20万ドル、つまり2千万円くらいを超えてくると毎月の高いライセンス料を支払わなければならない。そのため個人開発としてはちょっと厳しい。</p> <p>間違っていたら指摘してほしいが、利益ではなくてあくまでも売上。たとえ手元にお金が一銭も残っていなかったとしてもお金のやり取りの累計がそこに達してしまうとダメ。例えば会社を運営していたり、依頼を受けて他の人に発注、とかやっていると自分のところにお金が残らなくてもライセンス料を払わなければならない。もちろんゲーム自体でそれだけ売り上げていれば問題ないと思うが、これから始めようという人には厳しい。法人の売上はあるけど個人としてやるから良いんじゃない? というのもダメだった気がする。</p> <h3 id="Unreal Engine"><a href="#Unreal+Engine">Unreal Engine</a></h3> <p>これもいい。しかしiOSのAdMobの利用方法が見つからなかった。もし現状なかったり独自に作る必要があるのだとするとさすがにちょっと厳しい。</p> <p>一応有料だがAdMobを使うためのパッケージが販売されていたが試してはいないのでわからない。買い切りだと思うのでいい感じに動くのであればいいと思うが謎。</p> <p>AdMobの調査の時点で疲れてしまったのでAnalyticsは調べていない。</p> <p>Unreal Engineだとガチのゲームを作るというイメージが強いので、多分広告でかせぐというよりはちゃんと課金で稼ぐパターンの方が多いという感じだろうか。あとはモバイル向けというよりはSteam向けなど。何にしろその部分の心もとなさがある。コア部分であるゲームのエンジンとしてはかなりいいとは思うのだが。広告は使わない、という場合はわりとこれ一択になる可能性もありそう。でもリワード広告も使いたいと思うんだけど…。</p> <p>ライセンス料は確かアプリごとで、かつかなり売り上げていないと発生しないので問題なかった気がする。</p> <h3 id="Godot"><a href="#Godot">Godot</a></h3> <p>OSSのゲームエンジン。3Dもいけるし僕もこれでアプリをリリースしたことがある。ライセンス料も無い。</p> <p>AdMobは使える。しかしAnalyticsのiOS用のものが無かった。そこだけがネック。</p> <p>Androidの方は最新バージョンでモジュールを追加しやすくなったが、iOS側は自分でビルドなどしないといけないためそのあたりの理解は必要。</p> <p>iOSのAnalyticsが使えれば最高だと思うんだけど……。まあそこだけ諦めればあとは十分ではある。</p> <p>追記)<br /> redditで聞いたらGDScriptで自分でAPI使ってクライアント作ればいいよ、とのことだった。試してみる。</p> <h2 id="ゲーム以外のフレームワーク"><a href="#%E3%82%B2%E3%83%BC%E3%83%A0%E4%BB%A5%E5%A4%96%E3%81%AE%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF">ゲーム以外のフレームワーク</a></h2> <p>ゲーム以外のフレームワークでもゲームが作れる。ただし専用のエディタなどがないので開発効率に響く場合などがあるのではないかと思う。実際に後述のreact-three-fiberでも、シミュレータはきついから実機で確認したほうがいい、という記述があったりする。Webでも試せればそれでも良いかもしれないが、何にしろ快適に開発を行うためにはちょっと環境構築で色々試行錯誤は必要そうな気がする。</p> <h3 id="React Native"><a href="#React+Native">React Native</a></h3> <p>前述の問題はあるが、AdMobもAnalyticsもあるしゲームエンジン(react-native-game-engine)や3Dエンジン(react-three-fiber)などもあるので、スムーズに開発できればかなり良さそう。</p> <h3 id="Flutter"><a href="#Flutter">Flutter</a></h3> <p>Flutterはまだゲームフレームワークがそれほど発展していなさそう。いちおうflameという2Dゲームのパッケージがあるので2Dゲームについては結構いけたりするんだろうか。</p> <p>AdMobやAnalyticsもある。ただしフレームワークの起動方法によっては普通に使えない可能性もありそう?</p> <h2 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h2> <p>ということで色々調べてみたが、どれも一長一短っぽい。作りやすさ、ゲームの規模、どうやって売上を出すか、によって最適なものは随時変わっていきそうな気がする。</p> だら@Crieit開発者 tag:crieit.net,2005:PublicArticle/15182 2019-07-01T12:38:53+09:00 2019-07-01T12:40:33+09:00 https://crieit.net/posts/by-5d19804d6a8e2 【個人制作者向けすぐ出来る】結局ゲームエフェクトはデカさイズ正義 by 大学生ゲーム制作者 <p>2019/6/2</p> <p>おはようございます。</p> <p>エンジニアのはずがここ1ヶ月何故かデザインばかりしている、<strong>大学生ゲーム制作者の村人U</strong>です。</p> <p> </p> <p>ゲームデザインに関する記事はいくつか投稿してきましたが、今日もゲームデザインのお話です。</p> <p>実験と結果からどんどん内容をアップデートしていきます。</p> <p> </p> <p>昨日は制作中のゲームで、ワザを発動する時の<strong>エフェクト</strong>について数時間友達とあーだこーだやっていました。</p> <p>そして、色々試してみてこれを抑えていればゲームのデザインの<strong>レベルが一つ上がる</strong>んじゃないかなという事を見つけたので共有しておきます。</p> <p> </p> <h1 id="派手なエフェクトはとにかくでかい"><a href="#%E6%B4%BE%E6%89%8B%E3%81%AA%E3%82%A8%E3%83%95%E3%82%A7%E3%82%AF%E3%83%88%E3%81%AF%E3%81%A8%E3%81%AB%E3%81%8B%E3%81%8F%E3%81%A7%E3%81%8B%E3%81%84">派手なエフェクトはとにかくでかい</a></h1> <p>色々試したのですが、もっと派手なエフェクトを作りたい時には、とにかく<strong>デカく</strong>してみるのが効果的でした。</p> <p> </p> <p>見にくいですが、下の動画は元々のエフェクトは同じで<strong>サイズ感を変えたもの</strong>です。<br /> (ワザを使った時にでる円状のエフェクトの話です)</p> <p>小さいバージョン<br /> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190602/20190602190227.gif" alt="" /></p> <p>中くらいバージョン<br /> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190602/20190602190059.gif" alt="" /></p> <p>大きいバージョン<br /> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190602/20190602185312.gif" alt="" /></p> <p>最後はもうカメラ外からエフェクトが出てきちゃってます。</p> <p>キャラクターのサイズと、エフェクトのサイズを冷静になって良く見てください。</p> <p>頭悪いくらいエフェクトがでかいです。</p> <p>そりゃあもう、<strong>キャラクターの8倍デカイ</strong>です。</p> <p> </p> <p>キャラクターのエフェクトを考えているのにこのサイズにするのは流石にバカだと思ったのですが、これが意外にバカではなくて驚きました。</p> <p>どうやら、<strong>ゲームエフェクトはデカさが大事</strong>なようです。</p> <p> </p> <h1 id="フェードインを忘れるな"><a href="#%E3%83%95%E3%82%A7%E3%83%BC%E3%83%89%E3%82%A4%E3%83%B3%E3%82%92%E5%BF%98%E3%82%8C%E3%82%8B%E3%81%AA">フェードインを忘れるな</a></h1> <p>バカでかいエフェクトを作って、派手にはなったものの、どうにも<strong>ダサさが抜けません</strong>でした。</p> <p> </p> <p>大きなエフェクトに目を奪われてそのエフェクトを冷静になってみた時に、どうやらダサく感じるようです。</p> <p> </p> <p>この対策としては、<strong>フェードイン</strong>をいれるというのが一番効果的でした。</p> <p>最初は透明にしておいて、徐々に透明じゃなくしていくあれです。</p> <p>エフェクトがでかいうちは透明にしておく事で、エフェクトに目を奪われる事がなくなります。</p> <p> </p> <p>gifだとめちゃくちゃ分かりにくいですが、↓はフェードインを加えたものの比較です。</p> <p>フェードインなし<br /> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190602/20190602185312.gif" alt="" /></p> <p>フェードインあり<br /> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190602/20190602185735.gif" alt="" /></p> <p>同様に、フェードアウトも加えた方が良さげでしたが、フェードイン程の効果は無さそうでした。</p> <p> </p> <h1 id="まとめ"><a href="#%E3%81%BE%E3%81%A8%E3%82%81">まとめ</a></h1> <p>ゲームエフェクトを派手にする要は次の2つでした。</p> <ol> <li>とにかくデカくする</li> <li>フェードインをいれる</li> </ol> <p>サイズを変えて、透明度を変えるだけなので割と<strong>すぐに試せる</strong>かなぁと思います。</p> <p> </p> <p>もしゲームエフェクトで何か違うと感じたら、まずはこの2つを変えてみるのは効果的だと思います。</p> <p>現場からは以上でーす。</p> <p> </p> QuestGames tag:crieit.net,2005:PublicArticle/15112 2019-06-16T20:49:52+09:00 2019-06-16T20:49:52+09:00 https://crieit.net/posts/by-5d062ce01a2e7 【ブラッシュアップ】今あるものをもっと良くするには違和感に気づけ by 大学生ゲーム制作者 <p>おはようございます。</p> <p>最近なぜかずっと眠くてテンションが上がらないので、外を全力疾走中の<strong>大学生ゲーム制作者の村人U</strong>です。</p> <p> </p> <p>少なくとも今は目が覚めています。</p> <p> </p> <p>さて。</p> <p>僕はゲーム制作をしているのですが、最近ゲームの <strong>"見た目"</strong> に力を入れ始めました。</p> <p>そこで思ったのですが、今ある見た目をもっと良くするためには<strong>違和感に気づく事</strong>が鍵だと感じました。</p> <p> </p> <p>↓は作っているゲームのメニュー画面です。</p> <p> <br /> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190528/20190528234826.png" alt="" /></p> <p> </p> <p>どうですか、素人が作った画面ですよ、凄くないですか。(圧)</p> <p>事実、これを僕の周りの人(別にデザインに詳しいわけではない)に見せると<strong>結構良い反応</strong>が返ってきました。</p> <p> </p> <p>ただ、僕はずっと<strong>違和感</strong>がありました。</p> <p>何かが違う。</p> <p>そこで、数多のスマホゲーム、ドット絵の画像を見まくっているとある事に気が付きました。</p> <p> </p> <h1 id="『ボタンがダサい』"><a href="#%E3%80%8E%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%8C%E3%83%80%E3%82%B5%E3%81%84%E3%80%8F">『ボタンがダサい』</a></h1> <p>正直これは薄々分かっていたので、友達(デザインは素人)にお願いしてすぐに他のパターンを試してみました。</p> <p> <br /> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190528/20190528235616.png" alt="" /><br />  </p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190528/20190528235409.png" alt="" /></p> <p> </p> <p>結果<strong>少し良くなり</strong>、友達的には2番目のやつが良いと言ってたのですが、<strong>でもやっぱり僕はどれも違和感</strong>がありました。</p> <p> </p> <p>そして再び数多のスマホゲーム、ドット絵の画像を300%拡大して見まくっているとある事に気が付きました。</p> <p> </p> <h1 id="『ボタンに立体感がない』"><a href="#%E3%80%8E%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%AB%E7%AB%8B%E4%BD%93%E6%84%9F%E3%81%8C%E3%81%AA%E3%81%84%E3%80%8F">『ボタンに立体感がない』</a></h1> <p>これまた速攻で友達(デザイン素人)にお願いをして、<strong>ボタンに影とハイライト</strong>を入れてもらいました。</p> <p>するとどうでしょう、<strong>めちゃいい感じ</strong>になりました。</p> <p> <br /> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190528/20190528235930.png" alt="" /><br />  </p> <p>ボタンらしくないのは押せそうに無いからだったんです。</p> <p>デザイナーさんが喜んでいる中、<strong>僕はまだ違和感がありました...。</strong></p> <p> </p> <p>そして再び数多のスマホゲーム、ドット絵の画像を<strong>夢に出るまで</strong>見まくっているとある事に気が付きました。</p> <p> </p> <h1 id="『ボタンがでかい』"><a href="#%E3%80%8E%E3%83%9C%E3%82%BF%E3%83%B3%E3%81%8C%E3%81%A7%E3%81%8B%E3%81%84%E3%80%8F">『ボタンがでかい』</a></h1> <p>全体的に見たときに<strong>ボタンのサイズが大きすぎた</strong>んです。</p> <p>そこで、これまた速攻で友達(デザ素人)にお願いして画像を小さくしてもらいました。</p> <p>さらに、ボタンがもっと<strong>画面の端に寄るべき</strong>だという事にも気づいたので配置を変えました。</p> <p> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190529/20190529000302.png" alt="" /></p> <p>どうですか。良くないですか。(圧</p> <p>少なくとも最初よりは良いですよね。</p> <p> </p> <p>これは一例ですが、こんな感じで<strong>今あるものをもっと良くするときには違和感に気づく</strong>のが大切だと思います。</p> <p> </p> <p>そしてこの違和感を感じられるようになるには、<strong>ひたすらに良いものを見て経験を肥やすしか無い</strong>かなぁというのが今の結論です。</p> <p>とにかく良いものを知って、頭に刷り込ませておくとこういう場で違和感に気づけるのだと思います。</p> <p>これは、絵に限らずだと思います。</p> <p> </p> <p>今ちょうど、僕はゲームのプレイ画面に<strong>違和感</strong>を覚えています。</p> <p>この違和感が何かまだ分からないので、色んなものをインプットして違和感の正体を見つけてみようと思います。</p> <p>  <br /> <a target="_blank" rel="nofollow noopener" href="https://twitter.com/werquest/status/1132967464818528261">https://twitter.com/werquest/status/1132967464818528261 </a><br /> `</p> <blockquote class="twitter-tweet" data-lang="ja"><p lang="ja" dir="ltr"><a target="_blank" rel="nofollow noopener" href="https://twitter.com/hashtag/%E3%82%B2%E3%83%BC%E3%83%A0%E5%88%B6%E4%BD%9C?src=hash&ref_src=twsrc%5Etfw">#ゲーム制作</a> <a target="_blank" rel="nofollow noopener" href="https://twitter.com/hashtag/Unity?src=hash&ref_src=twsrc%5Etfw">#Unity</a><br>試しに動画撮ってみた。楽しい。 <a target="_blank" rel="nofollow noopener" href="https://t.co/vRNoLGpRU5">pic.twitter.com/vRNoLGpRU5</a></p>— QuestGames@大学生がゲーム制作に挑戦するようです。 (@werquest) <a target="_blank" rel="nofollow noopener" href="https://twitter.com/werquest/status/1132967464818528261?ref_src=twsrc%5Etfw">2019年5月27日</a></blockquote> <p>`<br />  </p> <p>違和感に気づいた方がいたら、御一報ください。</p> <p>ここのコメント欄でもTwitterでも大歓迎です。</p> <p> </p> <p><a target="_blank" rel="nofollow noopener" href="https://twitter.com/werquest">QuestGames@大学生がゲーム制作に挑戦するようです。 (@werquest) | Twitter</a><br />  </p> <p>現場からは以上でーす。ではでは。</p> QuestGames tag:crieit.net,2005:PublicArticle/15098 2019-06-12T19:42:11+09:00 2019-06-12T19:43:56+09:00 https://crieit.net/posts/Unity-by-5d00d703d1fa9 【Unity】大学生でも出来る全部無料のゲーム開発環境(おすすめアセットなど) by 大学生ゲーム制作者 <p>2019/5/20</p> <p>おはようございます。</p> <p>ゲーム作りも面白いけど、機械学習とか極めてみるのも面白そうだなあと思っている、<strong>大学生ゲーム制作者の村人U</strong>です。</p> <p> </p> <p><strong>VR</strong>とか<strong>MR</strong>もいいですね。</p> <p> </p> <p>さて、今日はゲームの<strong>開発環境(基本的にUnityのアセット)</strong>について書こうと思います。</p> <p><strong>開発環境</strong>といっても、ゲームを作る為に使っているツールの話で、<strong>開発者向けの内容</strong>になってしまいます。</p> <p> </p> <p>実はゲーム開発を開始した段階で、一度こういう記事は書いたのですが、<strong>結構変化があった</strong>のでその辺についても触れながら、今の開発環境を改めて書き直そうと思います。</p> <p><a target="_blank" rel="nofollow noopener" href="https://questgames.hatenablog.com/entry/2019/02/24/012001">無料かつ個人(チーム)でのゲーム開発環境</a></p> <p> </p> <p>ちなみに、紹介するものは<strong>全部無料</strong>で利用出来ます。</p> <p> </p> <h1 id="Unity"><a href="#Unity">Unity</a></h1> <p>ゲーム制作者お馴染みのゲームエンジン。</p> <p><strong>これが無ければ始まらない。</strong></p> <p> </p> <p>これ一つでPCゲームから、スマホゲーム、VRまで作る事が出来てしまいます。</p> <p> <br /> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190520/20190520165515.png" alt="ゲーム機同時にこういうの見た事ないですか?" /></p> <p>↑ゲーム起動時にこういうの見た事ないですか?<br />  </p> <p>使った事はないのですが、対抗馬に<strong>UnrealEngine</strong>というのがあって、イメージとしては<strong>UnrealEngineは3Dゲームや映像制作に強く、プログラミングがそこまでできなくても扱えます。</strong></p> <p><strong>Unityは2Dでも3Dでも幅広く扱えて、頑張れば何でも出来る</strong>というイメージです。</p> <p> </p> <p>また、ネットの情報量はUnityの方が多いような気がします。</p> <p> </p> <p>Unityについては↓の記事が分かりやすいです。</p> <p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/nmxi/items/7950fb12ef925efa276d">今日からはじめるUnity - Qiita</a></p> <p> </p> <h1 id="Photon2"><a href="#Photon2">Photon2</a></h1> <p>Unityのアセットの1つです。</p> <p>Unityに入れて使います。</p> <p>昔は以下の機能が別々に分けられていたのですが、今は1つのPhoton2にまとめられています。</p> <p> </p> <h2 id="Photon Unity Networking (PUN)"><a href="#Photon+Unity+Networking+%28PUN%29">Photon Unity Networking (PUN)</a></h2> <p><strong>オンライン通信</strong>を行う為に使用します。</p> <p>マルチプレイや通信対戦が可能になります。</p> <p> </p> <p>今回はリアルタイム通信で<strong>位置同期やダメージの同期、マッチングなど</strong>に使っています。</p> <p>ラグが大きいかなぁと心配していたのですが、頑張れば白猫プロジェクトくらいのゲームが作れると思います。</p> <p><a target="_blank" rel="nofollow noopener" href="https://www.assetstore.unity3d.com/#!/content/119922?aid=1011l7wAm">PUN2 - FREE AssetStore</a><br />  </p> <h2 id="PhotonChat"><a href="#PhotonChat">PhotonChat</a></h2> <p>PUNは常に様々な通信が必要な場合に使いますが、<strong>文字のやりとりや数回程度の通信であればPhotonChat</strong>が利用できます。</p> <p> </p> <p>PUNでもチャット機能は実装できるのですが、PhotonChatはチャットに特化していてPhoton2より楽に実装出来ます。</p> <p> </p> <p>また、荒野行動のように<strong>フレンドにリアルタイムでチーム招待を送る機能</strong>などは、このPhotonChatで行う事が出来ます。</p> <p> </p> <p>Photon2については↓の記事が分かりやすいです。</p> <p><a target="_blank" rel="nofollow noopener" href="https://connect.unity.com/p/pun2deshi-meruonraingemukai-fa-ru-men-sono1">PUN2で始めるオンラインゲーム開発入門【その1】 - Unity Connect</a></p> <p> </p> <h1 id="PlayFab"><a href="#PlayFab">PlayFab</a></h1> <p><strong>サーバーにデータを置きたい場合</strong>などに利用します。</p> <p>俗にmBaaSと呼ばれるサービスです。</p> <p> </p> <p><strong>所持コイン、魔法石、フレンド、プレイ時間などのユーザーデータをサーバーで管理する事ができます。</strong></p> <p>Unityとの相性も良いです。</p> <p>ただし、ネットにはほぼ英語の情報しかないです。</p> <p> </p> <p>僕の知っている限り、このようなサービスは他にもNifty Cloud Mobile Backend (NCMB)やfirebaseなどがあります。</p> <p>僕も初めはNCMBを使っていたのですが、PlayFabに移行しました。</p> <p>理由は後ほど説明しますが、初心者の方にはNCMBをおすすめします。</p> <p> </p> <p>PlayFabについては、↓の記事が導入を書いてくれています。</p> <p><a target="_blank" rel="nofollow noopener" href="https://qiita.com/ume67026265/items/c89b391e36855f45586f">PlayFabでUnityを動かしてみる -その1下準備編- - Qiita</a></p> <p>↓の記事では実際に使ってみた感想やまとめを書きました。</p> <p><a target="_blank" rel="nofollow noopener" href="https://questgames.hatenablog.com/entry/2019/04/07/122135">無料で使えるmBaaSのPlayFabをプレイヤーデータ管理に使ってみた by 大学生ゲーム制作者</a></p> <p> </p> <h1 id="Social Connector"><a href="#Social+Connector">Social Connector</a></h1> <p>こちらもUnityのアセットです。</p> <p><strong>ツイッターやLineなどのSNSと連携したい時に使います。</strong></p> <p> </p> <p>ゲーム内からSNSのアプリを起動し、用意した定型文やスクリーンショットの投稿をしてもらう事が出来ます。</p> <p> </p> <p>しかし、<strong>SNS連携はURL Schemeを利用する方法もあり、ツイッターかLineであればこのURL Schemeを利用する方が簡単です。</strong></p> <p>このSocialConnectorはその他のSNSにも幅広く対応出来るというのが魅力かなぁと思っています。</p> <p> </p> <p>SocialConnectorについては↓の記事が分かりやすいです。</p> <p><a target="_blank" rel="nofollow noopener" href="http://nn-hokuson.hatenablog.com/entry/2018/05/16/195527">【Unity】Social ConnectorでTwitterにスクショを投稿する</a></p> <p> </p> <p> </p> <h1 id="Nifty Cloud Mobile Backend (NCMB)"><a href="#Nifty+Cloud+Mobile+Backend+%28NCMB%29">Nifty Cloud Mobile Backend (NCMB)</a></h1> <p>↑で説明したPlayFabのように、<strong>サーバーでデータを管理</strong>する時に使います。</p> <p> </p> <p>サーバーにデータを保存、サーバーからデータを取得などの機能があります。</p> <p>また、Unityとの相性も良いです。</p> <p> </p> <p>PlayFabと違うのは、機能の数と無料枠です。</p> <p><strong>PlayFabはフレンド機能、グループ機能、ログイン機能、アイテム機能などが事前に備わっている、要はゲーム特化になっている</strong>のに対し、</p> <p><strong>NCMBは、エクセルのようなマスがあるだけの、シンプルで幅広い用途で利用できる</strong>のが特徴です。</p> <p> </p> <p>また、↓の記事でも書きましたが、NCMBは<strong>無料枠</strong>が少し足りない可能性があります。</p> <p>対してPlayFabはNCMBのような制限は無いので、ユーザーの数が増えたとしても問題ありません。</p> <p> </p> <p><a target="_blank" rel="nofollow noopener" href="https://questgames.hatenablog.com/entry/2019/04/04/220926">Unityでリアルタイムフレンド申請の実装方法を考えた話 by 大学生ゲーム制作者</a></p> <p> </p> <p>ただ、PlayFabは多機能な分複雑な上、<strong>日本語の情報が少ない</strong>ので、扱うのが少し難しいと思います。</p> <p><strong>なので初心者の方であれば、シンプルで日本語の情報が多い、NCMBをおすすめします。</strong></p> <p> </p> <p>NCMBについては↓の記事が分かりやすいです。</p> <p><a target="_blank" rel="nofollow noopener" href="https://tama-lab.net/2018/06/%E3%80%90unity%E3%80%91ncmb%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E4%BF%9D%E5%AD%98%E3%80%81%E5%8F%96%E5%BE%97%E3%81%99%E3%82%8B/">【Unity】NCMBを使ってサーバにデータを保存、取得する方法 | tama-lab</a></p> <p> </p> <p>さて。</p> <p>今回は、Unityで使用しているアセットを中心に今の僕の開発環境について書きました。</p> <p>まだ今後、課金機能、ガチャ機能などを作る予定なのでその時に使ったものについてはまた後日書きたいと思います。</p> <p> </p> <p>こちらからは以上でーす。ではでは。</p> QuestGames tag:crieit.net,2005:PublicArticle/15069 2019-06-06T21:06:07+09:00 2019-06-06T21:06:07+09:00 https://crieit.net/posts/3 大学生がゲームを作り始めて3ヶ月経過、残りやることを整理する <p>2019/5/18</p> <p>おはようございます。</p> <p>1日1記事以上書いているブロガーさんは素直に凄いと思っている、<strong>大学生ゲーム制作者の村人U</strong>です。</p> <p>僕は1記事に3日かかります。</p> <p> </p> <p>さて。</p> <p>ゲーム制作がそろそろ折り返し地点になってきたので、ここら辺で少し<strong>タスクの整理</strong>をしようと思います。</p> <p>開発開始から3ヶ月の時点で、こんな事考えてます。</p> <p> </p> <h1 id="残りのタスク一覧"><a href="#%E6%AE%8B%E3%82%8A%E3%81%AE%E3%82%BF%E3%82%B9%E3%82%AF%E4%B8%80%E8%A6%A7">残りのタスク一覧</a></h1> <h2 id="技術"><a href="#%E6%8A%80%E8%A1%93">技術</a></h2> <ol> <li><strong>Twitter</strong>に<strong>プレイ動画</strong>を投稿する機能(無理なら画像)</li> <li><strong>もう一度</strong>遊ぶ機能(パーティー維持)</li> <li><strong>ランク</strong>機能</li> <li><strong>コイン</strong>機能</li> <li><strong>課金</strong>システム</li> <li><strong>ガチャ</strong></li> <li><strong>カメラ</strong>の制御</li> <li>言語の<strong>ローカライズ</strong>システム</li> <li>あと<strong>2キャラ</strong>実装</li> <li><strong>ゲームシステム</strong>の変更</li> </ol> <p> </p> <h2 id="デザイン"><a href="#%E3%83%87%E3%82%B6%E3%82%A4%E3%83%B3">デザイン</a></h2> <ol> <li><strong>スキル</strong>エフェクト</li> <li><strong>カメラ</strong>エフェクト</li> <li>スキル使用時の<strong>環境エフェクト</strong></li> <li><strong>タイトル画面</strong>の一枚絵</li> <li><strong>メニュートップ</strong>画面のUI</li> <li><strong>フレンド</strong>画面のUI</li> <li><strong>キャラクター選択</strong>画面のUI</li> <li><strong>ゲーム画面</strong>の<strong>UI</strong></li> <li><strong>ガチャ</strong>の演出</li> </ol> <p> </p> <h2 id="音楽"><a href="#%E9%9F%B3%E6%A5%BD">音楽</a></h2> <ol> <li><strong>タイトル画面</strong>の<strong>BGM</strong></li> <li><strong>メニュー画面</strong>の<strong>BGM</strong></li> <li><strong>ゲーム画面</strong>の<strong>BGM</strong></li> <li><strong>UIタップ音</strong></li> <li><strong>スキルのSE</strong></li> <li><strong>リザルト</strong>画面のSE(可能ならBGMも)</li> <li><strong>マッチング完了</strong>時のSE</li> </ol> <p> </p> <h2 id="マーケティング"><a href="#%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0">マーケティング</a></h2> <ol> <li><strong>公式ツイッター</strong>の開設</li> <li><strong>事前登録</strong>キャンペーン</li> <li><strong>公式サイト</strong>の開設</li> <li>宣伝、<strong>広告</strong></li> <li><strong>キャラ購入</strong>とガチャ(おまけ)でマネタイズ</li> <li><strong>PV</strong>の制作</li> </ol> <p> </p> <h2 id="問題"><a href="#%E5%95%8F%E9%A1%8C">問題</a></h2> <ol> <li>メインのゲームシステムがただのデスマッチから<strong>何か面白そうなルールに変えたい</strong>!</li> <li><strong>初期ユーザーがどれくらいいるか分からない</strong>、0の可能性も0じゃない!</li> <li>マルチプレイだから、<strong>人がいないとゲームが成り立たない!</strong>でもソロモードを作る余裕はない!</li> <li><strong>事前登録でキャンペーン</strong>にする<strong>内容が思いつかない!</strong>(初期ユーザーを増やすのが目的なので他のキャンペーンじゃなくても良い)</li> <li><strong>広告を出すお金がない!</strong></li> </ol> <p>さて、こんな感じです。</p> <p>ゲームを遊ぶだけなら、ほぼ完成していてブラッシュアップや周辺機能を作っていく感じです。</p> <p>とはいえ、どれも<strong>爆弾</strong>レベルの問題をたくさん抱えているので、気が気ではないですが、<strong>完成は8月</strong>と言い張っているのでやるしかありません。</p> <p>特に<strong>宣伝は致命的にヤバい</strong>です。</p> <p>どうやったらみんなに知ってもらう事が出来るのかなあ。。</p> <p> </p> <p>今は素直に完成が楽しみです。</p> <p>引き続き頑張ります。</p> <p>こちらからは以上でーす。ではでは。</p> QuestGames tag:crieit.net,2005:PublicArticle/15055 2019-06-03T23:25:19+09:00 2019-06-03T23:25:19+09:00 https://crieit.net/posts/by-5cf52dcfd3f88 京大・名大・同志社大の連合チームでゲームを作る by 大学生ゲーム制作者 <p>2019/5/15</p> <p>おはようございます。</p> <p>このブログの投稿は僕しかやらないので、いい加減本名晒しても良いかなぁと考えている、<strong>大学生ゲーム制作者の村人U</strong>です。</p> <p> </p> <p>そういえば、<strong>僕らの作業の環境</strong>について触れた事がなかったので、今日は少しその話をしたいと思います。</p> <p> </p> <h1 id="3大学の連合軍"><a href="#3%E5%A4%A7%E5%AD%A6%E3%81%AE%E9%80%A3%E5%90%88%E8%BB%8D">3大学の連合軍</a></h1> <p>僕らは<strong>3人で開発</strong>を行っていますが、<strong>全員別の大学</strong>に通っています。</p> <p><strong>名古屋大学、京都大学、同志社大学</strong>です。</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190515/20190515140422.png" alt="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190515/20190515140422.png" /></p> <p>県をまたいでそこそこ遠いです。</p> <p>なので<strong>実際に会って開発をするわけにはいきません。</strong></p> <p> </p> <p>どうしているかというと、僕らは<strong>Discordという通話アプリを繋ぎながら夜な夜な開発</strong>を進めています。</p> <p>大体一回の作業で<strong>3時間</strong>くらいですね。</p> <p> </p> <p>そして、作業の最後には<strong>次回の予定</strong>と<strong>次回までの予定</strong>を決めるようにしています。</p> <p><strong>次にやる日</strong>をその時に決めて、次の作業日までに余裕があったら<strong>やるべき作業も共有</strong>しておく感じです。  </p> <p>これを決めておかないと、なあなあになってしまうので結構大事だと思います。</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190515/20190515094504.png" alt="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190515/20190515094504.png" /><br /> こんな感じでやることを共有</p> <h1 id="僕らの役割分担"><a href="#%E5%83%95%E3%82%89%E3%81%AE%E5%BD%B9%E5%89%B2%E5%88%86%E6%8B%85">僕らの役割分担</a></h1> <p>僕らは<strong>3人チーム</strong>なので、それぞれの役割を決めなくてはいけません。</p> <p>と言ってもたった3人だから簡単で、</p> <p><strong>プログラマー 1人</strong></p> <p><strong>デザイナー 1人</strong></p> <p><strong>サウンドクリエイター 1人</strong> です。</p> <p> </p> <p><strong>プログラマー</strong>と<strong>サウンドクリエイター</strong>は<strong>高校の頃から</strong>それっぽい事をしていましたが、<strong>デザイナーは1ミリもそっち系の人では無かった</strong>のでめちゃくちゃ大変だと思います。</p> <p> </p> <p>僕の周りには誰も絵を描ける人がいなかったので、<strong>0からデザイナーになってもらった</strong>感じです。</p> <p>本当に頑張ってくれていて、毎回渡される絵の<strong>クオリティには驚いています</strong>。</p> <p>めちゃめちゃ助かります。</p> <p> </p> <p>間も無くもう一人、<strong>PV制作、公式サイト制作</strong>をしてくれる人を増やそうと思っています。</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190515/20190515092833.png" alt="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190515/20190515092833.png" /><br /> 作業のようす</p> <h1 id="基本はリモートワーク"><a href="#%E5%9F%BA%E6%9C%AC%E3%81%AF%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF">基本はリモートワーク</a></h1> <p>書いた通り、僕達は基本的に<strong>通話を繋いで開発を進める</strong>のですが、役割がまるで違うので<strong>作業自体はそれぞれ別</strong>のことをしています。</p> <p> <br /> なので大抵の場合、特に話をするわけでもなく<strong>静かにそれぞれの作業</strong>をしています。</p> <p>俗に言う、<strong>もくもく会</strong>というやつです。</p> <p> </p> <p>同じ作業をするわけでもないのに意味があるのかと言われると、<strong>人による</strong>としか言えません。</p> <p> </p> <p>僕も昔は意味が無いと思っていて、それどころか<strong>一人の方が集中できるものだと思っていました。</strong></p> <p>というか、多分僕はそっちの人間です。</p> <p> </p> <p>でもどうやらこの世界には、<strong>他の人と一緒に作業をしていた方が他の事に逃げずに集中できる</strong>という人もいるようで、その人にとって<strong>もくもく会は効果的</strong>です。</p> <p>この辺りは僕の経験でもあります。</p> <p> </p> <p>さて、僕達はこんな感じで開発しております。</p> <p>一応、こんなでも<strong>3ヶ月は続いていて</strong>、ちゃんと完成も近づいてきています。</p> <p> </p> <p>結構<strong>新しいスタイル</strong>かなと思うので、気になる人は参考にしてみてはいかがでしょうか。</p> <p><strong>物理的な制約</strong>はもう無くなりつつあるみたいです。</p> <p> </p> <p>こちらからは以上でーす。</p> <p>ではでは。</p> QuestGames tag:crieit.net,2005:PublicArticle/15052 2019-06-02T01:21:20+09:00 2019-06-02T01:23:27+09:00 https://crieit.net/posts/e-by eスポーツとゲームの違い by 大学生ゲーム制作者 <p>2019/5/12</p> <p>おはようございます。</p> <p>記事に書く事が思いつかなくて、最近作業をサボっている事に気づいた、<strong>大学生ゲーム制作者の村人U</strong>です。</p> <p> </p> <p>意外なところでブログをやってる意味を感じました。</p> <p> </p> <p>さて。</p> <p>書く事が思いつかなかったので、10分くらい悩んで、最近マーケティングの話ばっかりだなぁと思い、ゲーム制作者らしく<strong>ゲームの話</strong>をしてみようと思います。</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190511/20190511113013.png" alt="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190511/20190511113013.png" /><br /> 今はメニュー画面を作り中・・・</p> <h1 id="eスポーツが現れた!"><a href="#e%E3%82%B9%E3%83%9D%E3%83%BC%E3%83%84%E3%81%8C%E7%8F%BE%E3%82%8C%E3%81%9F%EF%BC%81">eスポーツが現れた!</a></h1> <p>今、何かとチヤホヤされている<strong>eスポーツ</strong>という言葉があります。</p> <p>ご存知でしょうか。</p> <p> </p> <p>eスポーツのeは「<strong>electric</strong>」つまり、<strong>電気のスポーツ</strong>という意味です。</p> <p>で、要するにただの<strong>ゲーム</strong>の事なのですが、これが最近は大会とか開いちゃって、その<strong>大会</strong>で生活する<strong>プロ</strong>とか出てきちゃったりして、<strong>まるでスポーツ</strong>じゃないか!という事で、<strong>eスポーツ</strong>という名前が付いたようです。</p> <p> </p> <p>そんなeスポーツですが、<strong>昔と今のゲームの変化</strong>をおさえていないと「ゲームとスポーツを一緒にするな」などと言い出すので、今日は<strong>今のゲームを正確に捉えてみよう</strong>と思います。</p> <p> </p> <h1 id="昔と今ではゲームの目的が違う! "><a href="#%E6%98%94%E3%81%A8%E4%BB%8A%E3%81%A7%E3%81%AF%E3%82%B2%E3%83%BC%E3%83%A0%E3%81%AE%E7%9B%AE%E7%9A%84%E3%81%8C%E9%81%95%E3%81%86%EF%BC%81%C2%A0">昔と今ではゲームの目的が違う! </a></h1> <p>昔のゲームは、<strong>完全に娯楽</strong>でした。</p> <p>ゲームをやる理由は楽しむ為で、それでご飯は食べられず、学業の成績が落ちたりしました。</p> <p>子供は家にこもるようになり、<strong>それを見た母親は、ゲームは悪者だ!</strong>と言います。</p> <p>(これが昔のゲームで、ゲーム=怠惰のイメージの元です。)</p> <p> <br /> <img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190511/20190511112006.jpg" alt="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190511/20190511112006.jpg" /></p> <p>昔のゲーム代表</p> <p>しかし時が経つにつれ、ゲームは<strong>1人プレイだったのが複数人でプレイ出来るようになりました。</strong></p> <p>すると、ゲームを通して<strong>他の人に"勝つ事"に重点が置かれるようになります。</strong></p> <p> </p> <p><strong>勝つ事</strong>に重点が置かれ始めたゲームは、多くの人が1番になりたいと思うようになりました。</p> <p>そして、分かりやすく<strong>1番を決める手段として大会</strong>が開かれるようになります。</p> <p> </p> <p>この大会が徐々に増え始め人の目にとまるようになって来た今、これが<strong>eスポーツという名前になり注目を集めています。</strong></p> <p>(なぜeスポーツという名前になったのかは今回は触れません)</p> <p><img src="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190511/20190511112602.jpg" alt="https://cdn-ak.f.st-hatena.com/images/fotolife/Q/QuestGames/20190511/20190511112602.jpg" /><br /> 今のゲーム代表</p> <p>さて。</p> <p>この話の中で何が変わったのかと言うと、ゲームが<strong>1人プレイから複数人プレイに変わった</strong>のです。</p> <p>もっというと、ゲームの<strong>目的</strong>が<strong>与えられたクリアを目指す(1人で楽しむ)</strong> ところから、<strong>人よりも強くなる</strong>事に変わりました。</p> <p> </p> <p>ゲームが<strong>1人用のオモチャ</strong>から、<strong>人と競うコミュニケーションツール</strong>に変わったという事ですね。</p> <p>前者が(昔の)ゲーム、後者がeスポーツになります。</p> <p>この2つには、<strong>明確な違い</strong>があるわけです。</p> <p> </p> <p>あとは簡単で、<strong>スポーツ</strong>の定義が「<strong>人と競うルールを決める</strong>」事であるならば、<strong>ゲームもその役割を果たしている</strong>ので、eスポーツと言われているのだと思います。</p> <p>(将棋や囲碁がスポーツと呼ばれていないので、スポーツの定義は少し違うのですが、およそで合っています)</p> <p> </p> <h1 id="日本のゲームの今"><a href="#%E6%97%A5%E6%9C%AC%E3%81%AE%E3%82%B2%E3%83%BC%E3%83%A0%E3%81%AE%E4%BB%8A">日本のゲームの今</a></h1> <p>さて。</p> <p><strong>日本</strong>では、この<strong>オモチャとしての昔のゲームのイメージが異常に強く、ゲームのコミュニケーションツールとしての役割が知られていない</strong>為、eスポーツは流行っていません。</p> <p>というか、昔のゲームしか知らなかったらeスポーツは理解が出来ないと思います。</p> <p> </p> <p>ここまで、<strong>昔のゲーム</strong>という言葉を使って来ましたが、<strong>オモチャとしてのゲームは昔に限った話ではありません。</strong></p> <p>未だに、1人プレイのゲームは増え続けていますし、その人気も衰えていません。</p> <p>今は、<strong>オモチャのゲームとスポーツのゲームがごちゃごちゃになっている状態</strong>ですね。</p> <p> </p> <p>別の目的で遊ぶにもかかわらず、全部ゲームという名前になってしまっているんです。</p> <p>そこで間もなく、<strong>eスポーツという言葉はオモチャのゲームとスポーツのゲームを分ける意味でも使われ始める</strong>と思います。</p> <p> </p> <p>時代は<strong>オモチャのゲームの時代</strong>から、<strong>スポーツのゲームの時代</strong>に移ろうとしています。</p> <p>というか、日本以外の主要な国では既にかなりこれが進んでいます。</p> <p>(日本でeスポーツが浸透しないのには理由があります。)</p> <p> </p> <p>今日は、<strong>昔と今ではゲームをやる目的が違うよ</strong>って話でした。</p> <p>ゲーム関係の人や、親御さんは乗り遅れないようにした方が良いと思います。</p> <p>ではでは。</p> QuestGames tag:crieit.net,2005:PublicArticle/15043 2019-05-31T22:45:22+09:00 2019-05-31T22:45:22+09:00 https://crieit.net/posts/by-5cf12ff291a72 ゲームの売り方を世界ベースで考えたら勇気をもらった by 大学生ゲーム制作者 <p>2019/5/7</p> <p>おはようございます。</p> <p>「力は継続なり」ではなく「継続は力なり」が生き残っているのは面白いなぁと感じている、<strong>大学生ゲーム制作者の村人U</strong>です。</p> <p> </p> <p>ゲームの完成が現実味を帯びてきて、いよいよ<strong>マーケティング</strong>に<strong>不安</strong>を感じ始めた今日この頃。</p> <p>そんな中、昨日こんな記事を見つけて少し<strong>やる気が出た</strong>ので共有したいと思います。</p> <p> </p> <p><a target="_blank" rel="nofollow noopener" href="https://appmarketinglabo.net/hypercasual-applovin/">https://appmarketinglabo.net/hypercasual-applovin/</a></p> <p> </p> <p>書いてある内容はおよそ、</p> <ol> <li>最近のスマホゲームの<strong>流行り</strong>は「<strong>ハードコア</strong>」と「<strong>ハイパーカジュアル</strong>」だよ</li> <li><strong>宣伝</strong>の仕方次第で、収益(インストール数)は数百倍変わるよ</li> <li><strong>初期費用は50万</strong>くらいで、上手くいくと<strong>数億</strong>稼げるよ</li> <li>↑の2つは<strong>海外での受けが良いよ</strong></li> </ol> <p>って感じです。</p> <p> </p> <p>それで。</p> <p>今僕の作っているゲームが、<strong>2作</strong>あります。</p> <p>もう分かると思うんですが、それが「<strong>ハイパーカジュアル</strong>」と「<strong>ハードコア</strong>」なんです。</p> <p> </p> <p>ルートは違いますが色々考えて、僕もこの2つを作ろうと思い至っているので、それが既に結果に出ている人達がいるというだけでかなり<strong>勇気をもらえました。</strong></p> <p>いや、本当に経験がないもんですから<strong>不安</strong>でしょうがないんですよね。</p> <p> </p> <p>さらに。</p> <p><strong>海外</strong>では、<strong>ドット絵</strong>の人気があるというでは無いですか。</p> <p>しかも、日本人にとって<strong>ウザい広告も海外ではそうでもない</strong>という。</p> <p> </p> <p>僕らの作っているゲームは<strong>ドット絵</strong>で出来ています。</p> <p><strong>言語対応</strong>の面倒くささから、海外で売る事はあんまり考えてなかったんですが、こんなの見たら<strong>やらずにはいられません</strong>。</p> <p> <br /> <a href="https://crieit.now.sh/upload_images/ea5978265f810e99968c7a1704191fca5cf12ed25a1ec.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/ea5978265f810e99968c7a1704191fca5cf12ed25a1ec.png?mw=700" alt="20190507150100.png" /></a></p> <p>という事で、僕らの作っているゲームは<strong>海外進出を狙います。</strong></p> <p> </p> <p>しかし。</p> <p>ここで大きな<strong>問題</strong>が。</p> <p>結果を見るために、<strong>最低50万</strong>くらいだよって言われました…。</p> <p> </p> <p>どうやら、<strong>感覚が完全に企業</strong>のようです。</p> <p>残念ながら、<strong>個人開発</strong>で<strong>大学生</strong>の僕らにそんな<strong>お金はありません</strong>。</p> <p> </p> <p>なので。</p> <p>僕たちは、<strong>1万円でどれだけの結果が出るかをやってみます。</strong></p> <p><strong>全部で1万円</strong>です。</p> <p> </p> <p><strong>令和元年8月頃にリリース</strong>します。</p> <p>どうなるか、結果が楽しみです。</p> <p> </p> <p>今のビジネスの多くは<strong>ネット</strong>が使われます。</p> <p>そして、<strong>ネットの市場は簡単に世界に移ります。</strong></p> <p>もし<strong>日本</strong>での販売を考えているのなら、一度<strong>日本以外</strong>の国の人が欲しいんじゃないかと考えてみるのはアリだと思います。</p> <p> </p> <p>ではでは。こちらからは以上でーす。</p> QuestGames tag:crieit.net,2005:PublicArticle/15038 2019-05-29T22:27:55+09:00 2019-05-29T22:27:55+09:00 https://crieit.net/posts/8675c9e3cbe1b3a2f23c9dfcbe95f666 大学生ゲーム制作者は、へび、とり、うし、きつねを作り始める <p>※2019/5/3の記事です。</p> <p>平成から令和になる瞬間をネタにしようと思ったものの、普段通り過ぎてネタにすらならないと気づいた、大学生ゲーム制作者の村人Uです。</p> <p> </p> <p>5月になりましたね。</p> <p>僕にとっては<strong>令和</strong>よりも、<strong>5月</strong>になったという方が中々えぐい感覚があります。</p> <p> </p> <p>と、いうのもゲーム制作の当初の予定では<strong>4月中にメニュー画面を完成、5月中にキャラクターを追加する予定</strong>でした。</p> <p>そして、若干(かなり?)遅れているものの、まぁ動くメニュー画面が完成したので、<strong>ついにキャラ追加の期間に突入した</strong>事になります。</p> <p> </p> <p>で、このキャラ追加が実は死ぬほど大変で、やらなきゃいけないのが、</p> <ul> <li> キャラのスキルを考える</li> <li> キャラのスキルを実装する</li> <li> キャラのアニメーション絵を作る</li> <li> キャラのアニメーションを実装する</li> <li> メニュー画面でキャラを追加する</li> <li> キャラのデバッグをする</li> </ul> <p>というのをしなくてはいけません。</p> <p> </p> <p>で、何が大変って、<strong>これを各キャラごとにやらなきゃいけません。</strong></p> <p>5月中には最低でもあと、へび、とり、うし、きつねの<strong>4体</strong>は作らないとまずい。</p> <p>ということは、↑の作業を<strong>1週間に1キャラのペース</strong>でやらなきゃいけない。</p> <p> </p> <p>って言う事です。</p> <p> </p> <p>さて、このキャラ追加に関してちょっとした工夫をお伝えしようと思います。</p> <p> </p> <h1 id="面白いキャラを3体、面白そうなキャラを3体用意する"><a href="#%E9%9D%A2%E7%99%BD%E3%81%84%E3%82%AD%E3%83%A3%E3%83%A9%E3%82%923%E4%BD%93%E3%80%81%E9%9D%A2%E7%99%BD%E3%81%9D%E3%81%86%E3%81%AA%E3%82%AD%E3%83%A3%E3%83%A9%E3%82%923%E4%BD%93%E7%94%A8%E6%84%8F%E3%81%99%E3%82%8B">面白いキャラを3体、面白そうなキャラを3体用意する</a></h1> <p> </p> <p>このゲーム『プレイ・ザ・フォックス』には<strong>十二支、つまり12体のキャラクターが登場</strong>します。</p> <p> </p> <p>で、最初のリリース時にはキャラクターは<strong>6体のみ</strong>の実装にするのですが、この<strong>6体をどの動物にするか決めなくてはなりません。</strong></p> <p> </p> <p>ここで今回重要に考えたのが、<strong>「面白そうな」</strong> キャラクターを選ぶという事です。</p> <p> </p> <p>あえて <strong>「面白い」ではありません。</strong></p> <p> </p> <p>どう言う事かというと、プレイ・ザ・フォックスでは、<strong>いくつかのキャラクターはコインで買う</strong>事を考えています。</p> <p><strong>買うまではそのキャラクターはプレイ出来ません。</strong></p> <p> </p> <p>ここに、<strong>通常のキャラクターとの違い</strong>を感じました。</p> <p>通常のキャラクター(始めからプレイ出来るキャラクター)は絶対にプレイするので、<strong>プレイした時に楽しいかどうか</strong>が問われます。</p> <p>対して、課金キャラの場合プレイした時の面白さの前に、<strong>そのキャラを買うか</strong>を考える時間があります。</p> <p>その時の決定に大きく影響するのが <strong>「面白そうか」</strong> だと思いました。</p> <p> </p> <p>要は、そこに<strong>実際に面白いかどうかが介入する余地は無くて、キャラの紹介文や雰囲気で「面白そうか」がすべて</strong>になるという事です。</p> <p>聞こえ方によっては <strong>「プロモーション次第で中身は適当でも良い」</strong> と受け取られてしまいそうなので、一応書いておくと、</p> <p><strong>実際その通り</strong>だとは思います。</p> <p>が、それは<strong>短期的に見たときだけで長期的に見るとまずい</strong>と思います。</p> <p> </p> <p>また、逆に言うとどれだけ <strong>「面白い」キャラクターがいても「面白そう」じゃなかったらプレイすらしてもらえなくなってしまいます。</strong></p> <p>そんな悲しい事にはしたくないので、「面白そう」はやはり大事だと思います。</p> <p> </p> <p>そういうわけで、「プレイ・ザ・フォックス」では初期キャラクターに <strong>「面白い」キャラクターを3体、「面白そう」なキャラクターを3体</strong>用意してみました。</p> <p>また、<strong>アプデで追加されるキャラクターも「面白そう」を重視すべき</strong>なので<strong>辰</strong>や<strong>猿</strong>は残してあります。</p> <p>長期的に見ると、全部出すよりその方が良いと思います。</p> <p> </p> <p>ものづくりの場面で <strong>「面白い」はもちろん大切ですが、それは「面白そう」かも考えてみる</strong>と良いかもしれません。</p> <p> </p> <p>ではでは。</p> QuestGames tag:crieit.net,2005:PublicArticle/15035 2019-05-28T19:37:44+09:00 2019-05-28T19:37:44+09:00 https://crieit.net/posts/PlayFab-Unity-PlayFab 【PlayFab入門】UnityでPlayFabサーバーとデータの送受信 <p>2019/4/28</p> <p>おはようございます。</p> <p>「1日3食、夜は寝る」は誰が決めたんだろうと思っている、大学生ゲーム制作者の村人Uです。</p> <p> </p> <p>今回は、<strong>Azure</strong>が運営する<strong>PlayFab</strong>というサービスを利用して、<strong>サーバーでデータ管理</strong>をする方法について書きます。</p> <p>説明は<strong>Unity</strong>を使用したものになりますが、使い方はUnity以外でもあまり変わりません。</p> <p> </p> <p><strong>PlayFab</strong>については、別の記事に書きましたので今回は実際の使い方について触れていきます。</p> <p> </p> <p><a target="_blank" rel="nofollow noopener" href="https://questgames.hatenablog.com/entry/2019/04/07/122135" target="_blank" rel="noopener">無料で使えるmBaaSのPlayFabをプレイヤーデータ管理に使ってみた by 大学生ゲーム制作者 - QUEST LAB</a></p> <p> </p> <p> </p> <h1 id="サーバーにログインする"><a href="#%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AB%E3%83%AD%E3%82%B0%E3%82%A4%E3%83%B3%E3%81%99%E3%82%8B">サーバーにログインする</a></h1> <p> <br /> <strong>PlayFab</strong>では、ユーザーがサーバーに必ず<strong>ログイン</strong>する必要があります。</p> <p>といっても、ユーザーにIDとパスワードを決めてもらう必要はなく、<strong>こちらで勝手に決めたIDでログイン</strong>ができます。</p> <pre><code class="cs">//using PlayFab.ClientModels;をスクリプトの最初に記述して下さい public static void LoginPlayFab(Action resultCallback = null) { var request = new LoginWithCustomIDRequest { CustomId = SystemInfo.deviceUniqueIdentifier, CreateAccount = true}; PlayFabClientAPI.LoginWithCustomID(request, result => OnLoginSuccess(result, resultCallback), OnLoginFailure); } </code></pre> <p>上記の例で、<strong>LoginPlayFab</strong>関数を使う事でPlayFabにログインする事ができます。</p> <p>なかなかヘンテコな書き方があって、見慣れないかもしれませんがPlayFabを使う場合は今後もこんな感じで書いていきます。</p> <pre><code class="cs"> var request = new LoginWithCustomIDRequest { CustomId = SystemInfo.deviceUniqueIdentifier, CreateAccount = true}; </code></pre> <p>この部分では、ログインするための<strong>リクエスト文</strong>を作成しています。</p> <p>この中の<strong>CustomId</strong>がユーザーを識別するIDで、<strong>ユーザー毎にユニークな(唯一の)ID</strong>を指定する必要があります。</p> <p>今回の場合は、<strong>SystemInfo.deviceUniqueIdentifier という端末ごとに違うID</strong>を取得して利用しています。</p> <p>このように、<strong>CustomId</strong>や<strong>CreateAccount</strong>のようなPlayFabさんが事前に決めた変数名に値を代入する事でPlayFabのサーバーにどんな指示を送るか決める事が出来ます。</p> <p>注)これらは、<strong>using PlayFab.ClientModels;</strong> がスクリプトの最初に記述されている必要があります。</p> <h1 id="サーバーにデータを送信する"><a href="#%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%AB%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B">サーバーにデータを送信する</a></h1> <p>サーバーへのログインに成功したら、<strong>データを送信</strong>する事が出来るようになります。</p> <pre><code class="cs">public static void SendUserData(){ PlayFabClientAPI.UpdateUserData( new UpdateUserDataRequest(){ Data = new Dictionary<string, string>() { {"Coin", "10"} <span>}</span><span>}</span>, result => Debug.Log("Successfully updated user data"), error => { Debug.Log("Got error setting user data"); Debug.Log(error.GenerateErrorReport()); }); } </code></pre> <p>これまたヘンテコなのですが、↑では<strong>PlayFabClientAPI.UpdateUserData</strong>という一つの関数しか使っていません。</p> <p>このように関数を使う事によって、今回の場合サーバーに、「<strong>キーが"Coin"、値が"10"</strong>」のデータを送信する事が出来ます。</p> <p>ちなみに、この関数は↓のような引数を取っています。</p> <pre><code class="cs">PlayFabClientAPI.UpdateUserData(UpdateUserDataRequest request , Action<UpdateUserDataResult> resultCallback, Action<PlayFabError> errorCallback); </code></pre> <p>今回の場合、この中の<strong>request</strong>の部分が</p> <pre><code class="cs">new UpdateUserDataRequest(){ Data = new Dictionary<string, string>() { {"Coin", "10"} <span>}</span><span>}</span> </code></pre> <p>に当たり、<strong>resultCallback</strong>が</p> <pre><code class="cs"> result => Debug.Log("Successfully updated user data") </code></pre> <p>に当たり、<strong>errorCallback</strong>が</p> <pre><code class="cs">error => { Debug.Log("Got error setting user data"); Debug.Log(error.GenerateErrorReport()); } </code></pre> <p>に当たります。</p> <h1 id="サーバーからデータを受け取る"><a href="#%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E3%81%8B%E3%82%89%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E5%8F%97%E3%81%91%E5%8F%96%E3%82%8B">サーバーからデータを受け取る</a></h1> <p>サーバーへの送信とほぼ同じ感覚で出来ます。 </p> <pre><code class="cs">public static void GetUserData(){ PlayFabClientAPI.GetUserData( new GetUserDataRequest() { PlayFabId = PlayerData.Instance.MyPlayFabID, Keys = null }, OnGetUserData }, (error) => { Debug.Log("Got error retrieving user data:"); Debug.Log(error.GenerateErrorReport()); }); } public static void OnGetUserData(GetUserDataResult result){ if (result.Data == null || !result.Data.ContainsKey("Coin")) Debug.Log("No Coin"); else result => Debug.Log(result.Data["Coin"].Value); } </code></pre> <p>↑の例では、PlayFabサーバーから<strong>ユーザーデータ</strong>を取得し<strong>「Coin」というキーを持つデータの値</strong>を取り出しています。</p> <p>ここでもサーバーにデータを送信する時と似た感じで、次のような関数を使っています。</p> <pre><code class="cs">PlayFabClientAPI.GetUserData(GetUserDataRequest request , Action<GetUserDataResult> resultCallback, Action<PlayFabError> errorCallback </code></pre> <p>送信時と大きく違うのは、この関数の引数の内<strong>resultCallback</strong>に当たる部分が<strong>OnGetUserData</strong>になっているという事です。</p> <p>見てもらえれば分かるように、<strong>resultCallback</strong>の型は <strong>Action</strong> になっています。</p> <p>この <strong>Action</strong> という型は、「<strong>GetUserDataResult</strong>を引数にとる関数」を表します。</p> <p>なので、今回の場合<strong>OnGetUserData</strong>という<strong>GetUserDataResultを引数に持つ関数</strong>を指定する事が出来ます。</p> <p>そしてこの<strong>resultCallback</strong>という引数ですが、これは<strong>PlayFabからデータの取得が成功した時に呼び出される関数</strong>になります。</p> <p>つまり、今回の場合<strong>データの取得が完了したらOnGetUserDataという関数が呼び出される</strong>ことになります。</p> <p>またその時に引数に渡される<strong>GetUserDataResult</strong>に様々な情報が格納されています。</p> <p>実際には、上記のように<strong>result.Data</strong>にデータが<strong>Dictionary</strong>の形で格納されているのでそれを利用する事が多いと思います。</p> <h1 id="もっと知りたい"><a href="#%E3%82%82%E3%81%A3%E3%81%A8%E7%9F%A5%E3%82%8A%E3%81%9F%E3%81%84">もっと知りたい</a></h1> <p>今回書いたのは、正確には<strong>PlayFabの中のごく一部</strong>の機能である<strong>PlayerData</strong>についてです。</p> <p>PlayFabには<strong>データの管理</strong>の方法だけでも</p> <ul> <li>Player Data</li> <li>Read Only Data</li> <li>Internal Data</li> <li>Group Data</li> <li>Shared Group Data</li> </ul> <p>など、様々なデータの扱い方があります。</p> <p>複雑に感じるかもしれませんが、逆に言うとそれだけ<strong>機能が充実</strong>しているという事でもあると思います。</p> <p>詳しい説明は↓の<strong>PlayFabのドキュメント</strong>に載っています。</p> <p>現時点(2019/4/28)で全て<strong>英語</strong>ですが、<strong>グーグル翻訳</strong>を使えば割と読めちゃいます。</p> <p>最近のグーグル翻訳は凄いですね。</p> <p><a target="_blank" rel="nofollow noopener" href="https://docs.microsoft.com/ja-jp/gaming/playfab/?#pivot=documentation&panel=playfab" target="_blank" rel="noopener">Azure PlayFab のドキュメント - PlayFab | Microsoft Learn</a></p> QuestGames tag:crieit.net,2005:PublicArticle/15033 2019-05-27T21:49:46+09:00 2019-05-27T21:49:46+09:00 https://crieit.net/posts/4-by 自分で作ったオンラインゲームを4人で遊んでみた by 大学生ゲーム制作者 <p>2019/4/25</p> <p>おはようございます。</p> <p>期限が2日後に迫った20ページのレポートに追われている、大学生ゲーム制作者の村人Uです。</p> <p> </p> <p>一昨日、<strong>2ヶ月間2人</strong>で作り続けてきたゲームをついに身内に<strong>お披露目</strong>しました。</p> <p> </p> <p>僕らの作っているゲーム「<strong>Play The Fox</strong>」は今だと<strong>最大4人</strong>で遊べるようになっております。</p> <p>しかし、開発陣はたったの<strong>2人</strong>でしてテストプレイすらまともに出来なかったわけです。</p> <p> </p> <p>そこで、<strong>開発者2人含め、ちょうど友達4人</strong>集まる機会があったのでそこでお披露目をしました。</p> <p> </p> <p>で、お披露目をした感想なのですが、<strong>めっちゃ楽しかった!</strong></p> <p>正直、作りの甘さからまともに楽しめないんじゃないかと思っていましたが、全然クッソ楽しかったです。</p> <p> </p> <p>ただ同時に、<strong>バグだったり詰めの甘さだったりの今まで見えていなかったものもたくさん浮き彫り</strong>になりまして、自分の思っていた進み具合よりもこれは随分遅れてしまったいるなぁと感じました。</p> <p> </p> <p>そんなこんなで、集まってくれた友達は何と<strong>仲間</strong>になりまして、1人はゲームの<strong>BGM•SE制作</strong>を、もう1人はゲームの<strong>PV制作</strong>をやってくれるみたいです。</p> <p> </p> <p>ある程度完成したら、<strong>誰かに見せる</strong>というのは想像以上に大事かもしれません。</p> <p><strong>大事な事が何か見えてきますし、モチベーションが上がります。</strong></p> <p> </p> <p>さて、ここまで来たら絶対に失敗するわけにはいきません。</p> <p>これからは今まで以上に頑張ります。</p> <p> </p> <p>とにかく、今は今後が<strong>楽しみ</strong>です!!</p> <p>こちらからは以上でーす。</p> QuestGames tag:crieit.net,2005:PublicArticle/15028 2019-05-26T22:30:45+09:00 2019-05-26T22:30:45+09:00 https://crieit.net/posts/by-5cea9505673e9 マネタイズから見たスマホゲームのガチャの立ち位置 by 大学生ゲーム制作者 <p>2019/4/22</p> <p>おはようございます。</p> <p>人類は睡眠に時間を使い過ぎだと感じている、大学生ゲーム制作者の村人Uです。</p> <p> </p> <p>今日はスマホゲームの<strong>マネタイズ、主にガチャ</strong>について書きます。</p> <p> </p> <h1 id="一般的には…"><a href="#%E4%B8%80%E8%88%AC%E7%9A%84%E3%81%AB%E3%81%AF%E2%80%A6">一般的には…</a></h1> <p><strong>スマホゲーム</strong>の<strong>マネタイズ</strong>の手法は様々あります。</p> <p> </p> <p>まず、スマホゲームの収入源は</p> <p>アプリ自体の購入料金<br /> アプリ内課金<br /> 広告<br /> の<strong>3つ</strong>があります。</p> <p> </p> <p><strong>アプリ自体に価格をもたせる</strong>場合、無料ゲームに比べインストール数が伸びない為、<strong>一人で遊べるゲームが多い</strong>傾向にあります。</p> <p> </p> <p>対して、<strong>アプリ内課金</strong>を利用する場合、</p> <ul> <li>スタミナの回復</li> <li>魔法石の購入</li> <li>ガチャ</li> </ul> <p>などで採算を取ります。</p> <p> </p> <p>広告の場合は、</p> <ol> <li>広告料金</li> <li>広告を非表示にするために課金</li> </ol> <p>のどちらかになります。</p> <p> </p> <h1 id="主流は…"><a href="#%E4%B8%BB%E6%B5%81%E3%81%AF%E2%80%A6">主流は…</a></h1> <p>現在、いわゆるスマホゲーで成り立っている会社の多くは<strong>ガチャ</strong>で採算を取っています。</p> <p> </p> <p>日本には昔から<strong>ガチャガチャ</strong>があります。</p> <p>しかし、ガチャガチャがそこまで採算がとれるほど熱狂的なものだったかというと怪しい所があります。</p> <p> </p> <p>これだけガチャが流行っていれば、現実世界でガチャガチャが増えても良さそうなものですが、</p> <p><strong>ガチャが流行っているのはゲームの中だけで、現実世界からはむしろ消えつつあります。</strong></p> <p> </p> <p>では、現実のガチャとゲームのガチャは何が違うのか。</p> <p> </p> <p>そもそも、<strong>ガチャの本質は運100%のギャンブルと変わりません。</strong></p> <p>日本でギャンブルといえば、パチンコやスロットです。</p> <p>ここで注目すべきなのは、<strong>ガチャは消えてもパチンコやスロットは未だに熱狂的な人気がある</strong>という事です。</p> <p> </p> <p>では、ここの違いは何か。</p> <p>この違いは、<strong>リターンの大きさ</strong>にあります。</p> <p>ガチャで出るのが<strong>おもちゃ</strong>であるのに対して、パチンコで帰ってくるのは<strong>お金</strong>です。</p> <p>それも、場合によっては<strong>何倍にもなる可能性を秘めています</strong>。</p> <p> </p> <p>ここでゲームのガチャに戻ります。</p> <p>ゲームのガチャで得られる物は<strong>ゲーム内のキャラやアイテム</strong>です。</p> <p>そして、このキャラやアイテムの中には<strong>超レアで強いもの</strong>が入っていて、これが<strong>大きなリターンの役割を担っています</strong>。</p> <p> </p> <p><strong>ギャンブルでは大きなリターンとしてお金</strong>を採用しますが、<strong>ゲームではキャラ</strong>を採用出来るという事です。</p> <p>つまり、<strong>ゲームのガチャは現実世界のガチャの皮を被ったギャンブル</strong>が近くて、本質的にはパチンコやスロットと変わりません。</p> <p> </p> <h1 id="自作のゲームに活かすには…"><a href="#%E8%87%AA%E4%BD%9C%E3%81%AE%E3%82%B2%E3%83%BC%E3%83%A0%E3%81%AB%E6%B4%BB%E3%81%8B%E3%81%99%E3%81%AB%E3%81%AF%E2%80%A6">自作のゲームに活かすには…</a></h1> <p>逆に、ここから見えてくる事が1つ。</p> <p>それは、<strong>大きなリターンを用意できなければガチャは失敗する</strong>という事です。</p> <p>たくさんお </p> <p>ただのおもちゃが出てくるだけのガチャは、現実世界のガチャよろしく、熱狂的な人気は望めません。 </p> <p>その為、<strong>今のゲームは異常にキャラのバランスが悪く、圧倒的に強いキャラとたくさんの超雑魚キャラ</strong>がいるわけですね。</p> <p> </p> <p>しかし<strong>個人制作</strong>のゲームの場合、この<strong>超雑魚キャラ</strong>を"<strong>たくさん</strong>"作るのは<strong>厳しかったりします。</strong></p> <p>また、圧倒的に強いキャラというのは<strong>ガチャとしては良くてもゲームとしては作りたくない</strong>場合があります。</p> <p> </p> <p>例えば、オンライン対戦ゲームで人対人の場合、<strong>課金者が強くなってしまうようではただの札束の殴り合い</strong>で無課金者は楽しくないです。</p> <p><strong>企業は利益を目的</strong>としているので、これでも決行する場合がありますが、大して利益を求めていない<strong>個人制作者の場合は面白さを重視</strong>して避けたいと考える場合は多いです。</p> <p> </p> <p>つまり、<strong>個人制作者</strong>が<strong>ガチャ</strong>を成功するためには、</p> <ol> <li>たくさんの<strong>超雑魚キャラの代わり</strong>を用意する</li> <li><strong>ゲームを壊さない程度</strong>の超ハイリターンを用意するかその代わりを用意する</li> </ol> <p>僕たちの場合、1については例えば<strong>Tips</strong>とかキャラの<strong>色違い</strong>とか<strong>ボイス</strong>とかで対応すれば良い。</p> <p>しかし、2についてはどうしても<strong>ゲーム崩壊</strong>を招く上、<strong>顕著にレアだと分かるものが思いついていない</strong>。</p> <p> </p> <p>今後、2に対して良い回答が出来ない場合はガチャの実装を見直した方が良いかもしれない。</p> <p> </p> <p>これは、ゲームだけに言えることではなくて<strong>マネタイズ</strong>の手法の一つとして<strong>ギャンブル</strong>を取り入れてみるのも良いのではないかと思います。</p> <p> </p> <p>こちらからは以上でーす。</p> <p> </p> QuestGames tag:crieit.net,2005:PublicArticle/15023 2019-05-25T10:18:12+09:00 2019-05-25T10:18:12+09:00 https://crieit.net/posts/by-5ce897d47b80b エンタメ分野の”面白い”とは何か by 大学生ゲーム制作者 <p>2019/4/19</p> <p>おはようございます。</p> <p>めちゃ急げば間に合う時間に起きてしまい、絶起よりも絶起した大学生ゲーム制作者の村人Uです。</p> <p> </p> <p>最近ゲーム制作の手が止まっており、予定よりやや遅れ気味になっちゃってます。</p> <p>というのもここ数日は <strong>ゲームの面白さの本質は”お客さん”</strong> にあるという意識を持ち直しまして、</p> <p>そこ基準にした時に<strong>このゲームクソ面白くねぇな</strong>となって、ゲームシステムをアホみたいに<strong>変更</strong>したのが原因です。</p> <p> </p> <p>さて。</p> <p>今日は最重要とも言える、ゲームに限らずエンタメ全般に言える <strong>"面白い"とは何か</strong> を書きます。</p> <p> </p> <p>当然のことですが、<strong>サービスが面白いかどうかを決めるのはお客さん</strong>です。</p> <p>そこには僕たちの介入出来るスペースは1ミリもありません。</p> <p> </p> <p>なので、<strong>お客さんにとって面白い事は何か考える事が全て</strong>になります。</p> <p>多くの人がここに辿り着きます。</p> <p>しかしここで、ごく自然に出て来てしまう答えが</p> <p>「結局、自分が面白いものを作る事が、皆にとっても面白いものが出来るよね。」</p> <p>です。</p> <p> </p> <p>この考えは絶対に<strong>やめてください</strong>。</p> <p>今すぐに<strong>捨ててください</strong>。</p> <p>そんな物は思考を放棄した<strong>ご都合主義</strong>に他なりません。</p> <p>完全に自分が楽しむ事第一で楽な方に逃げています。</p> <p> </p> <p><strong>年齢、性別、職業、収入、家庭...</strong></p> <p>アナタとお客さんは全く違います。</p> <p>もし、エンタメで生きていきたいなら絶対に無視することは出来ません。</p> <p> </p> <p>自分の楽しいもの、身内で盛り上がるだけの「<strong>身内ノリ</strong>」は他人にとっては<strong>クソ寒い</strong>だけです。</p> <p> </p> <p>そこまで考えると、次に僕たちのやるべき事が見えてきます。</p> <p> </p> <p>まず、僕らに必要なのはこの<strong>「身内ノリ」を止める</strong>事です。</p> <p>ではどうするか。</p> <p> </p> <p>「身内ノリ」が発生する原因の1つは、そもそも「身内ノリ」だと<strong>気付いていない</strong>事です。</p> <p>これを解決するには、<strong>お客さんの”求めている”事を徹底的に想像する</strong>しかありません。</p> <p> </p> <p>中高生は友達とワイワイしたい。</p> <p>20代社会人はストレス発散がしたい。</p> <p>40代子持ちの人は、子供と遊べるものが欲しい。</p> <p> </p> <p>こういった事をひたすらに想像します。誰かと議論するのも良いです。</p> <p>ここの<strong>精度</strong>によってプロダクトの<strong>良し悪し</strong>が決まります。</p> <p>場合によっては、<strong>そもそも「面白い」を求められていない可能性すらあります</strong>。</p> <p> </p> <p>そして、もう一つ。</p> <p><strong>身内ノリを指摘する人の存在</strong>が必要です。</p> <p>開発メンバー<strong>全員</strong>がそれを出来るのが望ましいです。</p> <p> </p> <p>「でもそれって身内ノリじゃない?」</p> <p>「それは僕らが楽しんでるだけじゃない?」</p> <p>「お客さんは求めてないよ」</p> <p> </p> <p>これを言えるかどうかで、出来上がるものが大きく変わってきます。</p> <p>厳しいかもですが、<strong>これがなくては完成した後に絶対に後悔します</strong>。</p> <p> </p> <p> </p> <p>...ここまで偉そうなことをつらつらと書いてきましたが、これは僕の<strong>失敗経験</strong>から来ています。</p> <p>実際のところ、まだこの考えを使ったプロダクトをリリースしたことはなく、これが本当に正しいかどうかは<strong>これから</strong>実証することになります。</p> <p> </p> <p>しかしながら1つも間違ったことを言っているつもりもなく、正しいかどうかは今後の僕らを見てれば分かると思います。</p> <p> </p> <p>とにかく言いたいのは、</p> <p><strong>「折角興味を持ってくれたお客さんを全力で喜ばせてあげようよ」</strong> ってことでした。</p> <p> </p> <p>こちらからは以上でーす。</p> QuestGames tag:crieit.net,2005:PublicArticle/15017 2019-05-24T00:24:00+09:00 2019-05-24T00:24:00+09:00 https://crieit.net/posts/228b9fde6628230ced1a8064de8cabee 大学生スマホゲーム制作者がお金をかけないマーケティングを考える <p>おはようございます。</p> <p>外食では選ぶ時間がもったいなくて、メニューの左上か左の人と同じものを注文する大学生ゲーム制作者の村人Uです。</p> <p>最近は、ゲームの<strong>マーケティング</strong>というか集客みたいな事ばかり考えていて、それが決まらないと先に進めないので大変です。</p> <p>僕らの作っているスマホゲーム「<strong>Play The Fox</strong>」は<strong>複数人</strong>で遊ぶオンラインゲームなのですが、そもそも<strong>人がいないと遊ぶことが出来ません</strong>。</p> <p>という事で、プレイをする"<strong>人</strong>"を集めなくてはいけないわけですが、当然そんな事をやった経験はないのでなかなか苦労しております。(コードが書きたい!)</p> <h1 id="マーケティングの王道"><a href="#%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%AE%E7%8E%8B%E9%81%93">マーケティングの王道</a></h1> <p>まずは、一般的な<strong>スマホゲームのマーケティング</strong>を書いておきます。</p> <p>一口にマーケティングと言っても種類があるわけですが、ここでは<strong>初期プレイヤーの獲得</strong>を目的にしたマーケティングに関して考えます。</p> <ul> <li>広告</li> <li>Twitter</li> <li>YouTube</li> <li>TV CM</li> <li>ウェブサイト</li> </ul> <p>1番多いのは<strong>Twitter</strong>です。</p> <p><strong>Twitter</strong>は<strong>拡散力</strong>がずば抜けている為、いわゆる<strong>バズ</strong>を起こしやすいです。</p> <p>基本的な使い方としては、<strong>事前登録</strong>のキャンペーンを実施したり<strong>情報解禁</strong>をしたりします。</p> <p>例えば、3000リツイートでアイテムがもらえるとか、プレゼントキャンペーンみたいなことをします。</p> <p>次が、広告です。</p> <p><strong>Twitter、YouTube、ウェブサイト、アプリ内</strong>などありますが、人の目に付く場所に広告を載せる事で<strong>世間に認知させる</strong>ことが出来ます。</p> <p><strong>YouTube</strong>などもありますが、多くの場合この2つが大きいと思われます。</p> <h1 id="個人開発者のマーケティングの限界"><a href="#%E5%80%8B%E4%BA%BA%E9%96%8B%E7%99%BA%E8%80%85%E3%81%AE%E3%83%9E%E3%83%BC%E3%82%B1%E3%83%86%E3%82%A3%E3%83%B3%E3%82%B0%E3%81%AE%E9%99%90%E7%95%8C">個人開発者のマーケティングの限界</a></h1> <p>個人開発者が上記の方法をそのまま使おうとすると<strong>問題</strong>が起きます。</p> <p>それは、元手となる<strong>お金と名前</strong>が無いという事です。</p> <p><strong>Twitter</strong>の場合、事前登録をしてもらうには<strong>リツイート</strong>をしてもらう必要があります。</p> <p>そして<strong>Twitter</strong>で伝えられる情報は<strong>めちゃくちゃ少ない</strong>です。</p> <p>その中で事前登録をしてもらうには、リツイートしたくなるような<strong>面白そうな動画、企画</strong>などを行う必要が出てきます。</p> <p>この時、既に実績のあるゲーム会社であれば<strong>前作からの期待</strong>で事前登録する人が一定層います。</p> <p>対して個人の場合そのような人はおらず、最初のリツイート者が出ずに終わってしまうパターンがありえます。</p> <p>また、予算の差と人手の差から<strong>企業ほどの企画</strong>も出来ないでしょう。</p> <p><strong>広告</strong>に関してはさらに無理があります。</p> <p><strong>広告</strong>を出すには<strong>お金</strong>がかかります。</p> <p>これは割と馬鹿にならないくらいかかるので、<strong>お金に余裕があるか、回収できる相当の自信作でないと厳しくなります</strong>。</p> <h1 id="僕が仕掛けたい策「Line」"><a href="#%E5%83%95%E3%81%8C%E4%BB%95%E6%8E%9B%E3%81%91%E3%81%9F%E3%81%84%E7%AD%96%E3%80%8CLine%E3%80%8D">僕が仕掛けたい策「Line」</a></h1> <p>まだ詰め切れていないのですが、今考えている策があります。</p> <p>それが<strong>Line連携</strong>です。</p> <p><strong>ゲーム内からLineで招待を送る機能</strong>を作ります。</p> <p>本来、<strong>Line</strong>はそこまで<strong>拡散力は高くない</strong>ですが今回はあえてLineを使おうと思います。</p> <p>そもそも、僕ら個人開発者が作ったゲームがストレスなく他のプレイヤーとマッチング出来るほどの人を集める事は<strong>ほぼ不可能</strong>です。(相当Twitterでバズった場合はあり得ます)</p> <p>結果、「<strong>面白そうだけど人がいないからつまらない(プレイできない)</strong>」現象が発生してこのゲームは一生報われません。</p> <p>それではお客さんにもゲームにも申し訳ないので、せめてインストールしてくれた人だけは良い思いをさせてあげたいです。</p> <p>ではどうするか。</p> <p>そもそも、ゲームをプレイするだけならプレイできる<strong>最小人数さえ集まれば良い</strong>はずです。</p> <p>その人数は大抵の場合、<strong>「身内」</strong>だけで事足ります。</p> <p>そして今、<strong>身内</strong>に声をかける最強のツールが「<strong>Line</strong>」です。</p> <p><strong>Line</strong>で連絡が来たら皆見ますよね。</p> <p>ただし、<strong>Line</strong>の懸念点は「<strong>誘いづらい</strong>」と「<strong>面倒くさい</strong>」です。</p> <p><strong>Twitter</strong>などの<strong>不特定多数</strong>に向けての発信と違って、<strong>Line</strong>の場合<strong>相手の顔が分かっています</strong>。</p> <p>その人と一緒にゲームをする事への抵抗だったり、申し訳なさから<strong>連絡しづらい</strong>可能性があります。</p> <p>また、<strong>Line</strong>の場合、</p> <p>ゲーム内からログイン→誘う相手を選択→送信ボタンを押す</p> <p>の3ステップが必要になり単純に<strong>面倒くさい</strong>ので、避ける可能性があります。</p> <h1 id="ひとこと"><a href="#%E3%81%B2%E3%81%A8%E3%81%93%E3%81%A8">ひとこと</a></h1> <p><strong>一般的なマーケティング</strong>についてはあまり詳しく触れられなかったので、また別の記事にまとめようかと思います。</p> <p><strong>個人制作者</strong>がどうしても<strong>マルチプレイ</strong>のゲームに手を出しづらい現状をどうにかしたいです。</p> <p>ひとまず、僕らの「<strong>Play The Fox</strong>」は「<strong>身内で遊べる最強のゲーム</strong>」を目指してみようと思います。</p> <p>こちらからは以上でーす。</p> QuestGames tag:crieit.net,2005:PublicArticle/15010 2019-05-22T19:51:09+09:00 2019-05-22T19:51:53+09:00 https://crieit.net/posts/by-5ce5299d9b49f スマホゲームを協力対戦にする利点と欠点 by 大学生ゲーム制作者 <p>2019/4/13</p> <p>おはようございます。</p> <p><strong>英語</strong>が話せる国に生まれただけで、多すぎる<strong>アドバンテージ</strong>を得られる世界をどうにかならないかと思っている、大学生ゲーム制作者の村人Uです。</p> <p> </p> <p>今日の電車の中で1記事チャレンジです。</p> <p> </p> <p>さて、僕らの作っているゲーム「<strong>Play The Fox</strong>」ですが、これは<strong>2vs2</strong>を可能にする<strong>スマホゲーム</strong>です。</p> <p>実は始めの頃は<strong>1vs1</strong>の対戦ゲームだっのですが、ある理由から<strong>2vs2</strong>にする事にしました。</p> <p> </p> <p>その理由が、結構単純で、<strong>人気のあるスマホゲームが協力対戦型が多い</strong>から。なんです。</p> <p>ここでいう、人気のあるゲームは荒野行動やモンスト、白猫プロジェクトのような物を指します。</p> <p> </p> <p>人気ゲームに協力対戦が多いという事は、それらのゲームを受け入れる人達が多いという事になります。</p> <p><strong>Play The Fox</strong> でも、<strong>まずは先人から学べ</strong>という事でこのシステムを取り入れようと考えたわけです。</p> <p> </p> <p>しかし、先人の敷いたレールの上を歩くだけではいつまでたっても先人の<strong>背中</strong>しか見えません。</p> <p>間も無く、僕らはこのレールを外れていこうと思うのですが、それがあさっての方向に向かわないようにはしなきゃいけません。</p> <p> </p> <p>さて、少し話が脱線しましたが、この理論でいくと<strong>2vs2どころか4vs4でも良い事</strong>になります。</p> <p>当然その通りで、<strong>4vs4</strong>も作るか非常に悩んでいます。</p> <p> </p> <p>しかし、一つ<strong>懸念</strong>しなくてはいけない事があります。</p> <p>それは、僕らは企業と違って<strong>名前とお金が無い</strong>という事です。</p> <p>何が言いたいかというと、<strong>初動で人を集めることが出来ない</strong>んです。</p> <p> </p> <p>オンラインの対戦ゲームをするには、<strong>マッチング出来る人数プレイする人</strong>がいないといけません。</p> <p>プレイする人が多ければ多いほど、マッチングにかかる時間は減り、ゲームの質を高めます。</p> <p> </p> <p>そして、人を集める常套手段は<strong>広告</strong>です。</p> <p>しかし<strong>広告</strong>を出すには<strong>お金</strong>がかかります。</p> <p>元手のある企業ならそれが出来ますが僕らには出来ません。</p> <p> </p> <p><strong>1vs1</strong>なら、最<strong>低2人</strong>。</p> <p><strong>2vs2</strong>なら、最低<strong>4人</strong>。</p> <p><strong>4vs4</strong>なら、最低<strong>8人</strong>。</p> <p> </p> <p>さらに全てのモードを実装した場合、各モードに人が分散するのでより多くの人数が必要になります。</p> <p>下手をすれば、<strong>マッチングしなくてそもそもゲームで遊べない</strong>なんて事になりかねません。</p> <p> </p> <p>結論を言うと、ゲームを多人数にすると言うことは、</p> <p><strong>プレイする上では面白くなる</strong>ものの、</p> <p><strong>そもそもプレイする人がいなければ遊ぶ事すら出来なくなるリスク</strong>を負うと言うことです。</p> <p> </p> <p>この辺りの<strong>ジレンマ</strong>と戦わなくてはなりません。</p> <p>対策としては、モードを絞る、コンピュータを用意する、マッチング待機時間を楽しくする、などありますがまだ明確な答えは出ていません。</p> <p>面白い回答を用意出来るようもっともっと考えようと思います。</p> <p> </p> <p>こちらからは以上でーす。</p> QuestGames tag:crieit.net,2005:PublicArticle/15009 2019-05-21T22:37:54+09:00 2019-05-21T22:38:24+09:00 https://crieit.net/posts/by 【近況報告】大学が始まりました。 by 大学生ゲーム制作者 <p>2019/4/12</p> <p>おはようございます。</p> <p>いつまでも<strong>Google</strong>の天下はつまらないなぁと感じている、大学生ゲーム制作者の村人Uです。</p> <p> </p> <p>今朝は<strong>7時</strong>過ぎに母親の声で起きまして、<strong>7時30分</strong>に家を出ました。</p> <p>この時間ならギリ間に合います。母親は偉大です。</p> <p> </p> <p>この記事は大学行きの電車の中で、唐突に大学行くまでに1記事チャレンジをしたものの<strong>6割</strong>くらいしか書けず結局今書き上げたものです。</p> <p>このチャレンジ難しい。</p> <p>さらっと記事を書いてしまう人は凄いですね。</p> <p> <br /> <a href="https://crieit.now.sh/upload_images/6818e335c3a40baef4ce5ce882aa1b3d5ce3eedce8686.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/6818e335c3a40baef4ce5ce882aa1b3d5ce3eedce8686.png?mw=700" alt="20190412184351.png" title="背景が残念すぎるトップ画面" /></a><br />  背景が残念すぎるトップ画面</p> <p>さて、<strong>2月</strong>から始まったゲーム制作ですが、今は<strong>メニュー画面</strong>を作っております。</p> <p>これがなかなかに大変で、<strong>フレンド申請の機能を作るために1週間</strong>使いました。</p> <p>1週間は早いと感じるかもしれませんが、メニューには.、</p> <p><strong>トップ画面、キャラクター選択画面、フレンド申請画面、ガチャ画面の4つ</strong></p> <p>があって僕はこれを<strong>1ヶ月</strong>でやらなきゃいけないので<strong>1機能1週間では間に合わない</strong>わけです。</p> <p> <a href="https://crieit.now.sh/upload_images/2788ab8769046ac68f1a4ac2ad1bca3f5ce3ef97c1532.jpg" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/2788ab8769046ac68f1a4ac2ad1bca3f5ce3ef97c1532.jpg?mw=700" alt="image0.jpg" /></a><br /> (画像でかすぎ問題)</p> <p>にも関わらず。なんと大学の授業が始まりました。</p> <p>昨日なんか、<strong>3〜5限</strong>が同じ授業で長いなーと思っていたら<strong>20時まで</strong>かかる始末。</p> <p>(大学の5限終了時刻は本来<strong>18:00</strong>)</p> <p>しかも、課題レポート<strong>20ページ</strong>だと。</p> <p>この授業を考えた人は、脅されていたか、酔っ払っていたとしか思えません。</p> <p> </p> <p>兎にも角にも、時間がありません。</p> <p>ここから先は馬車馬です。</p> <p>寝てる暇などない。</p> <p> </p> <p>今後の予定的には、</p> <p>4月 メニュー完成</p> <p>5月 キャラクター増量</p> <p>6月 見た目ブラッシュアップ</p> <p>7月 リリース</p> <p>となっています。</p> <p> <a href="https://crieit.now.sh/upload_images/274bfe0a265852252eb71e62f12a0c775ce3f14fa93c7.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/274bfe0a265852252eb71e62f12a0c775ce3f14fa93c7.png?mw=700" alt="20190412184716.png" /></a></p> <p><a href="https://crieit.now.sh/upload_images/cda66fefc50b5fbac212016f42dbce1d5ce3febd0413a.png" target="_blank" rel="nofollow noopener"><img src="https://crieit.now.sh/upload_images/cda66fefc50b5fbac212016f42dbce1d5ce3febd0413a.png?mw=700" alt="20190412184720.png" /></a></p> <p>現状ですが、<strong>メニュー画面が半分くらい</strong>出来てきました。</p> <p> </p> <p>絶対無理だろうと思っていた<strong>フレンド機能も、完成の兆し</strong>が見えています。</p> <p>デバッグの段階で軽く機能しているのを見て感動しております。</p> <p>やってみるものですね。</p> <p>絵は全然ありませんが、まぁそれは<strong>6月</strong>にがっつり。</p> <p> </p> <p>さて、どうなることやら。</p> <p>今後は完全に<strong>メニュー画面作成</strong>に手をかけるので<strong>若干地味</strong>になります。</p> <p>そろそろ宣伝とか、マネタイズとか考え始めないと。</p> <p> </p> <p>えっ、シューカツ?</p> <p>なんか、急に電波が悪くなったみたい。</p> <p> </p> <p>こちらからは以上でーす。</p> <p> </p> QuestGames