Unityゲームジャム「そろえる」に参加しました
おひさ
お久しぶりの投稿です。
メーーーーちゃんです。
最近ゲーム作りから離れて30周年のロボット大戦とかエルデの王を目指したりしてましたがunity1weekの開催を見つけちまったので久しぶりに参加を決めました。
この記事を投稿するのはu1wの評価期間を終え、共有会を終えたタイミングです。(書くのが遅い)
今回作成、投降した作品はこちら
はばたけ野菜少女 | フリーゲーム投稿サイト unityroom
ソースコード公開しようの流れがあったので私も公開してみました。
野菜少女とは
えっ野菜少女ってなんですか?
いや、知りません。
今回のお題が「そろえる」でした。
なんかないかなーと考えたところコンプガチャを思い出しました。
ありましたよね。
それなりに排出率低いのを何体か引くとさらにもう1体もらえます!
みたいなの。怖いですね。
今は「特定のカード複数枚で効果が得られる」ということ自体が違法のようで、
2体集めると合体攻撃だーってのもNGで各社頑張って回避してたようです。
2012年の話だったんですね。
今は廃絶されたコンプガチャですが、unity1weekでこの邪悪な違法システム作ってもいいんだ!?やったーのテンションです。
私自身クライアント者なのでガチャ排出システムを作ったこともなく、作りたいと思っていたのも背中を押しました。
そして背景としては野菜。野菜がこの世界の食物連鎖の頂点にあります。野菜>動物(人類以外)>人類の構図です。野菜こそが世界の覇者!
そうして生まれたのがはばたけ!野菜少女です。
制作について
目標とかスタンスとか
- ガチャシステムを作ってみる
- ガチャ演出を作ってみる
- ゲーム要素はなくていい、評価1でもOK
ガチャシステムを作ってみる
要件はこれ
- レアリティごとの抽選率がある SSRは3%でSRは10%、Rは87%
- キャラ単位で抽選率を変えられる。いわゆるピックアップ
- データはjsonファイルからロードする。
- 特定の複数キャラを集めたら特別なキャラが付与される
- 抽選漏れが発生しない。少数誤差が存在しないようにする
普通のコンプガチャですね。
注意したのは最後の抽選漏れで、例えば抽選対象が3体いると各抽選率は33.333333~%になり抽選率の合計が100%になりません。そうなると極まれに抽選されないことが起きるため生の抽選率合計で計算するのは避けました。
実際に書いたコードでは各キャラに抽選倍率を持たせて、その合計値から乱数を生成し抽選ごとに足していくようにしました。
イメージ的にはこんな感じ
倍率 | |
キャラ1 | 2 |
キャラ2 | 1 |
キャラ3 | 1 |
合計 | 4 |
乱数(0~4未満) | 抽選したキャラ |
0 | キャラ1 |
1 | キャラ1 |
2 | キャラ2 |
3 | キャラ3 |
問題点
動作的には問題ありませんでした。
ただキャラごとに全体から見た2倍、3倍などの倍率で指定できますが、
「このキャラは5%で抽選させたい!」と言われると総数から計算した細かい指定が必要になります。
確率的な正しさを求めてやってみましたが、そもそも端数が出たら低レア当たったことにしとけばいいのでは説を唱えられると「それもいいよね」と思います。
また、jsonというフォーマットのデータからガチャ情報を読み込んでいます。jsonの読み込みに慣れておくとデータ系の実装が楽になるのでいいかもしれません。
私はExcel→jsonの変換マクロを作っていてjsonの作成自体はとても楽な環境です。あとで変換マクロは公開するかもしれません。
ガチャ演出を作ってみる
はい、苦手分野です。
でも、「いいもの作らなきゃ!!評価が!!うわああああ」的な怖いメーーーちゃんは今回いなかったので笑いながら作ってました。
演出の流れ
- 畑から引いた数だけ光が生まれる
- 光がSR以上なら確定演出、すべてSR未満なら飛ばす。
- 光は空へとはばたきます
- 宇宙空間まで羽ばたいた光はなんと野菜でした!
一大スペクタクル~!感動的ですよね。泣いちゃいます。
演出のほとんどはDOTweenで動作しています。性質上10連をひたすら連打することになり(拷問になる)演出スキップを付けてみましたが、DOTweenの理解が浅くスキップしてるのにSE鳴ってたりします。。あと1連で連打してると光が10個生まれることがありますね。大豊作!3分調べて分からなかったので放置しました。
また、コンプ演出も後になってから必要に感じ作ることにしました。ここまで苦行に耐えてくれたユーザーのためにもここはがんばらねば...の精神です。あれがご褒美になったのかはわかりません。
そもそもコンプガチャって世界観的になんなのか?と考えたところ素体たちが悪魔合体してあらたな生命が誕生するってことなんですよね。この真実を元にコンプ演出が生まれました。あれも気合いDOTweenベースでやってた気がします。
ゲーム要素はなくていい、評価1でもOK
今回のコンセプトはガチャを作ろうということだけです。でもガチャはゲームじゃない!どうしよう!じゃあゲーム要素なしでオッケ~。目的があってそれ以外を無限に許し続ける。それは自分なりの「自分を苦しませない駆動開発」なのだろうと昨日の共有会で思いました。めっちゃいい言葉です。akamiさん言語化してくれてありがとうございます。
やりたいことやろう。練習、実験、検証、ランキング狙い、チーム開発、わからんけど参加してみる、実績作り、、、参加条件満たして悪させずプラスになればいいんじゃい!
ソースコード公開してみた
共有会情報ですが#u1w_scriptsのタグでGithubのソースコード公開しているようです。さいさん情報ありがとうございます。
ということで私も借り物はすべて削除したうえで公開しました。(リンク2度目)
見どころはこのへん、と定義します。
- ガチャシステム
- ガチャ演出(DOTween処理は怪しい)
- App以下のなんか管理してるアレ
ガチャシステムは前述したとおりです。まともなものを作ろうとしていましたが、すごいものが作れたわけではないです。
ガチャ演出はDOTween処理終わったら次のステート、終わったら次のステート、、、を繰り返してる感じです。もっときれいに書きたいですね。
App以下は毎回地味に成長しているテンプレート的な部分です。シーン遷移とか音鳴らしたりとか。テンプレートにするならちゃんとgithubでテンプレートとして管理してほしいですね。いつやるんですか?早くしてください。
表立って公開するのは初めてですが、メリットはあるんですかーと言うとあると思っています。
- 公開している人が1人増える→じゃあワイもって人がでてくるかも
- バグやこうしたらいいかもみたいなことを教えてくれるかも
- 何らかのノウハウ、技術を与えられるかも
- 公開することで得られる謎の爽快感(?)
「かも」ばかりですが#u1w_scriptsの公開リポジトリを拝見させていただいたところ、「えっこんな記法あるんだ?」「これが噂のユニアールエックス...」などどれも発見があり感謝しかないです。
おしまい
前ーーに参加を試みて無理だと感じてトンズラしてから数年たってからの参加でしたが終始気持ちよく居られました。
- やりたいことやれてたのしい
- 完成してさらに嬉しい
- 遊んでもらって嬉しい
- 評価/コメント貰ってさらに嬉しい
- 他の投稿作品遊んで楽しい&学び&気づき
- 共有会で学びまくれて楽しい
- 公開リポジトリみて完全に理解できて楽しい
えっこんなに楽し嬉しでいいんですか!?
いいんです。
やったー!
u1w終わってから年始に作っていたゲームの開発を再開できるようになりました。時期的に都合がよかったのとu1wの参加で燃えたのが今でも維持できてるからです🔥。難しい所にぶつかるとくたばる癖があるのでなんかいい感じに「自分を苦しめない駆動開発」を意識しながら続けられたらいいですね。
また半年くらいしたらu1w開催して私はこじらせてる頃だと思うので参加したいですね。共有会で聞いたことを実践したりやりたいことが無限にあるんだ!