mokuダーツ01アレンジ計算機ダーツ01ゲームの上がり目を計算するアプリです。3ダーツ以内であがることができる残りスコアを入力すると、可能なアレンジの一覧を表示します。一般的なあがり目表ではなく、指定されたオプションに従って可能なアレンジを計算し表示します。ベストなアレンジが上位に表示されるとは限りませんが、新しいアレンジを発見する助けになれば幸いです。おまけとしてアレンジの練習ができるミニゲームも収録しております。いつも役に立つ情報に感謝しております。ブログ3周年記念!お題にチャレンジの参加作品です。unityroomSameGame(さめがめ)の3D版です。同じ種類のブロックが2種類以上くっついているところを探して消していきましょう。v2):Tweeningブロックの動き、フェードイン/アウト、スコアのカウント処理、処理の遅延実行など、これ一つで色々できちゃいますね。mokuボクセルロジックボクセルロジックは3D版のイラストロジックです。複数のイラストロジックを解くことにより立体が現れます。0.2Unityが提供している機械学習の仕組みに関するお話です。(Beta)に含まれるBasicデモが、学習させても期待通りの結果が得られなかったので、学習に使用するstateを増やしたところ概ね期待する結果が得られるようになりました。・デモの内容エージェントが1マスずつ左右に動き、ゴールに到達したらリワードを獲得。ゴールは2種類あり、片方は近いがリワードは小さい、もう片方は遠いがリワードは大きい。・変更内容Brainが判断をするために与えられている情報(state)がエージェントの左右の位置しか無かったので、各ゴールの位置も渡すように変更。1.BrainのStateSpaceTypeをDiscrete→Continuousに変更し、StateSizeを元々の1→3に増やす。2.BasicAgent.cs内のCollectState()にて収集する情報を追加する。state;}・補足かなり単純なデモでありながら、8エージェント×10,000ステップの学習でもまだ無駄な動きがあるように見えるので、もっとパラメータや処理の調整が必要なのかもしれません。・追記-改善案(未検証)1.位置情報に関するstateはエージェントとの相対座標でコード化した方が良い。Practices2.エージェントのObservationsにカメラを設定することで、視覚情報を与え学習の効率化ができるかもしれない。mokuSafariでWebGL内のファイルが保存ができない・症状Safari上で実行しているWebGLアプリで設定データなどが保存されず、再訪問もしくは再読み込みの度に設定データが初期状態に戻ってしまう問題が発生しました。saved.”というログが出ていました。セキュリティ上の問題があるかもしれませんので、ご自身の判断で行ってください。Safariの「開発」メニューから「クロスオリジンの制限を無効にする」設定をすると設定データを保持できるようになります。JavaScriptコンソールに以下の警告ログが出るようになります。work・原因WebGLではファイルのIOにindexedDBを使用しています。これがSafariのデフォルト設定ではセキュリティにより使用できないようになっているようです。[参考]:(Appleに開発者登録している方しかご覧になれないかもしれません。Privacy・補足Unityから書き出したWebGLでファイルIOが上手くいかない問題がもともとあったようです。WebGLただUnity2017.2では対応がされているようです。(実際にはだいぶ前のバージョンで対応されているようです。)前記の警告ログはUnityのWebGLがindexedDBを同期する時に出ているものと思われます。moku[Unity]:Unity1週間ゲームジャムに参加しましたunityroom主催のUnity1週間ゲームジャムに参加しました。お題は「space」。投稿作品:スペースクリッカーお題を文字通りに宇宙と捉えて、以前から作ってみたかった惑星を巡って交易や採取を行うようなゲームを当初は考えたのですが、短期間で作り上げないといけないということで、得意のクリッカー系ゲームを作ることにしました。隕石をクリックで壊してポイント稼ぐ→稼いだポイントでより隕石を壊しやすいようパワーアップ。けのアプリを作る時などは拡張性などを考慮するのですが、今回は一週間で完成することを目標に「後々の拡張などは考えない」とバッサリと切り捨てて考えました。悩んだポイントはゲームの進行に伴って難易度をどう変化させていくか。・全種類の隕石が出揃ったら隕石の耐久度を2倍、3倍...としていくまたパワーアップの内容・コストも同様の理由で線形で増えていくようになっています。本来なら外部ファイルにしないまでも配列データかもう少し複雑な計算式にしたと思います。最初はもちろんキューブやスフィアでプロトタイプを作ったのですが、そこからどのように肉付け・修正していったのか、導入した順で使用したアセットを紹介します。Makeまず最初に、本ゲームのメインとなる隕石をスフィアから置き換えました。隕石アセットは無料でも色々ありますが、リアルよりの表現と隕石の種類の多さから選定しました。S〜XXLの5種類の隕石+配布者のロゴ入り隕石がオマケに付いてきますwこのアセットの導入により隕石の種類は大きさにより5種類と決定しました。モデルの導入に伴い、隕石の大きさによりコライダの大きさを調整したり、HUD(耐久度表示のバーとテキスト)の位置を調整しました。スフィアからモデルに置き換えたことで隕石を回転させた方が見た目が良い事に気付きました。Spaceで隕石に追随させていたHUDが一緒に回転する問題が発生し、常にカメラの方を向くようスクリプトを追加して調整が必要でした。Free次にゲーム画面の手前側に置いてある基地をキューブから置き換えました。隕石・基地と見栄えの部分が変わるとゲームが出来てきた!って感じになりますからね^^;このアセットは細かいパーツを組み合わせて使うのですが、今回の基地はデモシーンにあるものをそのまま流用させてもらいました。FX音が付くとゲームらしさがぐっと上がるので、早い段階で音を鳴らす仕組みを実装して、音源は仮でも良いので入れておくと良いと思います。このアセットは効果音を探す時に一番最初に見るアセットです。まめに音源追加のアップデートがされており、現在は$40で5,000以上の音源を収録しています。これだけあればという訳にはいかないのですが、かなり良心的で良いサウンド集だと思います。見た目と音が出来たところで、演出・効果を追加していきます。FX隕石破壊時のパーティクルエフェクトに使用。パーティクルには苦手意識があって、普段アプリ開発でもあまり使わないのですが、このパーティクル集はデモもしっかりしててプレファブをインスタンス化するだけで使えたので楽でした。・iTween隕石が基地に激突した時に画面が揺れる演出を追加。やって見たら非常に簡単でiTweenのShakeRotation()でカメラを揺らしただけです。最近はDOTweenが主流になりつつありますが、まだしっかり使いこなせていなくて...iTweenは使い慣れているため、サクッと作りたい今回は助かりました^^;・SmartPool一通りゲームが完成したところで、初のwebGLビルド、unityroomへの投稿はすんなりいったのですが、ゲームがたまに止まる!本来なら早い段階から実機・実際に稼働させる環境で試すべきでしたが、今回は製作期間も短いので油断していました。止まるタイミング的に、隕石や爆発パーティクルを都度生成しているのがいけないと思い込んで、プーリングの仕組みを導入。プーリングの仕組みをちゃんと使ったのは初めてだったのですが、このアセットはシンプルでREADMEとデモシーンを見て5分ほどですぐ使えました。プーリングを導入した結果、ゲームの停止は大幅に改善したものの依然として少し止まります^^;本来ならちゃんとプロファイリングなどして原因を特定してから対処すべきでした。今回は見込みは外れてなかったものの、他にも原因がありそうということで。テラシュールブログ「ちなみに、こっちは余り知られていないかもしれないが、マテリアルに値を突っ込んだ際にインスタンス化したマテリアルは、親オブジェクトをDestroyしても破棄されない。warやらオーシャン&エンパイアとか色々なものに時間を費やしてしまいまして。今回の一週間ゲームジャムが現実復帰の第一号になりました^^;できればエターナったゲームもunityroomに上げて、さらにできることであれば、手を入れて完成まで持っていきたいと思っています。5.5.1p3直接編集はファイルの破損などの危険があるため、各自で判断の上、バックアップをちゃんととってお試しください。追記:—ヒエラルキービュー上でプレファブの子を削除するとプレファブとの関連付けが解かれたように見えますが、実はその状態でApplyをすることができます。Twitterでご教示いただきました。階層構造を持つオブジェクト群をプレファブ化した場合、その子の一部を消すことってできませんよね?プロジェクトビューからは子の一部を削除することはできないし、ヒエラルキービューで子を削除しようとするとプレファブとの関連が解けてしまいます。子を追加してApplyはできるけど、削除はできないんです。Unityの通常の操作でプレファブの一部の子だけを消すことができるのでしたら教えてください。なんとかならないかと思い、まずはプレファブのインスタンスが置かれているシーンファイルをのぞいてみました。0どうやらプレファブとの関連付けが記述されているだけで、プレファブファイルの方を直接編集してやれば上手くいきそうです。以下の場合は関連付け以外の情報がシーンファイルに含まれるので注意が必要です。・プレファブをインスタンス化したものにコンポーネントや子オブジェクトを追加した場合。それではプレファブのファイルを編集してみます。&100100000」のような記述から始まるひとかたまりが一つのオブジェクトやコンポーネントを表しているのがわかります。前半がオブジェクトに関する記述、後半がコンポーネント。親子関係はTransformコンポーネントの部分に記述されています。「m_Name:」にオブジェクト名が書かれているので、今回消したい子オブジェクト’Cube’を探します。&1271471559630830」の「1271471559630830」がこのオブジェクトの固有のIDです。このIDでファイル内を検索すると4つのコンポーネントが付いていることがわかります。そのうちの一つTransformコンポーネントに関する記述をみてみます。0}今度はこのTransformコンポーネントのID「4955832607490314」で検索すると、親のTransformの記述が見つかります。0}ここの「m_Children:」というところに子のTransformのIDが書かれているので、この行を削除してしまいます。0}あとは、先ほど見つけたオブジェクトに関する記述と4箇所のコンポーネントに関する記述を消すだけです。0}これでプレファブファイルがUnityで読み込まれたタイミングでプレファブと全てのインスタンス化されたオブジェクトから子オブジェクト’Cube’が消えます。インスタンス化してシーンに置かれたオブジェクトに個別に編集を行なっている場合にはシーンファイルにゴミが残る可能性があるので、くれぐれもご注意ください。以前にUnityのYAMLを読んでみようみたいな記事を見かけたことがあったのですが、まさか本当に自分が読むことになるとは思ってもいませんでした^^;しかし実際にのぞいてみるとかなりシンプルで分かりやすいですね。ちなみにプレファブをインスタンス化したものに施した変更はシーンファイルの中の「Prefab:」のところに追記される形で記述されます。警告はしましたが実際はコンポーネントのパラメータを変更したり、コンポーネントを削除してる場合は今回の編集では影響受けないみたいです。削除するオブジェクトにコンポーネントを追加していたり、配下にさらに子を追加したりしているとシーンファイルにゴミが残るみたいです。以下は削除したCubeオブジェクトに適当なスクリプトを追加、また配下にSphereを追加していた場合のシーンファイルです。1314774805}Unityのヒエラルキービュー上では問題なさそうに見えますが、シーンファイルにはしっかりゴミが残っているようです。キャンセル投稿を送信できませんでした。メールアドレスを確認してください。メール送信チェックに失敗しました。このブログではメールでの投稿共有はできません。