【Game A Week】I Prey with the Cards You’re Dealt【week3】

Game A Week

【Game A Week】I Prey with the Cards You’re Dealt【week3】

Game A Week チャレンジのweek3では、I Prey with the Cards You’re Dealtというゲームを作りました。

Week1,2では3Dのアクション系のゲームを作ったので、方向性が一辺倒にならないように、今回は意図的にジャンルをガラッと変えました。ボードゲーム系になるんでしょうか。

どういうゲームか

一言でいうと、風刺系投資シミュレーションゲームです。

あなたはエイリアン、敵はニンゲン。あなたに対する敵対心より同情心を稼ぐことによって生き残るゲームです。同情心が十分にあればニンゲンはあなたを殺さずに生かしてくれます。そして、何日殺されずに生き延びられるかを競うゲームです。

作成ゲームのシーン1

プロローグ

作成ゲームのシーン2

カードを奪うニンゲンを選ぶ

作成ゲームのシーン3

ニンゲンの分析情報

作成ゲームのシーン4

カードの価格は日々変動する

項目説明

  • Idea: アイデア。コンセプト。テーマ。元ネタ
  • What went right: やってみて良かったこと。うまくいったところ。成功したところ。次回に活かせそうなこと
  • What went wrong: ダメだったところ。うまく機能しなかったところ。問題点。改善すべき点
  • What I learned: 学んだこと。効果的なゲームデザインの方法やツールの使い方、獲得したテクニックなど

Idea

  • title
    • “I Prey with the Cards You’re Dealt”
      • you play with the cards you’re dealt(「配られたカードで勝負するしかない」というスヌーピー?の名言)のもじり
  • genre
    • 風刺系投資シミュレーションゲーム
  • エイリアンが生き残るためカードあれこれし同情ポイントを稼ぐ
    • カードは時場所によって価値が変わる
      • ニンゲン社会の価値基準が時場所で変わるから
      • ニンゲン社会で価値のないと思われているカードほど価値が高くなる
        • 同情ポイントが稼ぎやすいから
      • つまり、資産の時価総額も日々変動
      • あるいみ投資ゲーム
    • 必要な資産(同情ポイント)は日付ごとに上昇
      • 達せないとゲームオーバー
    • ニンゲンを捕食する=カードをもらう
      • 人は自分の生まれ(環境、資質)をカードとして持っている
      • そのカードを奪う
    • 同情を稼げないと人に危機意識が芽生える
      • そして攻撃される
      • あなたは戦闘能力に乏しい
    • カードは使用して生命エネルギーと同情を得るか、アノマ界で売るか
      • 生命エネルギーはポイント化される
        • 一定値でプレイヤーレベルを上昇させる
      • アノマ界での売買は貨幣(マター)で取引される
    • 同情ポイントを稼ぐ
      • ニンゲン界基準でネガティブな能力ほどポイントを稼げる
      • わかりやすい欠点
      • わかりにくい欠点
      • PC度合
  • 価値基準を変動させるニンゲン界の団体
    • pewtuber連盟
      • negative/positiveのクラウンフィエスタ
      • volatilityの上昇
      • つまり、任意のカードの値動きを激しくする
      • Pewtuber League Held Crown Fiesta Now Even Shits are Admirable
    • constagram協会
      • negativeの価値を上昇
      • つまり、positiveなカードのプラス価値を膨らませる
      • 流行を定義?
      • Constagram Association Praised Superficial Thingy Like Shit
    • Today会議
      • establishmentの既得権益を強化
      • つまり、positiveなカードのプラスsympathyを膨らませる
      • Today Conference Goes Along With the Establishment Giving a Fuck to the Losers
  • カード例、よくある罵倒表現
    • 嫌悪感(初期カード) 清潔感
      • dirty clean
    • グロい(初期カード) 神々しい
      • grotesque graceful
    • チビ 高身長
      • short tall
    • あほ 天才
      • idiot genius
      • 天変地異確率が高い
        • ニンゲン社会で称賛される=同情ポイントが負になる
    • 神経症 サイコパス
      • psychoneurosis psychopath
    • 底辺生まれ 金持ち生まれ
      • born-poor born-rich
    • はげ ふさふさ
      • bold hairly
    • 不細工 美形
      • ugly beautiful
    • アスペ 空気読める
      • autistic communicative
    • 陰キャ 陽キャ
      • nerdy merry
    • 奴隷根性 支配者
      • slave dominator
    • のろま 要領がいい
      • clumsy quick
  • シーン
    • プロローグシーン
    • 毎日のループ
      • 捕食シーン
        • ニンゲンを生成
        • イベント登録
      • 取引シーン
        • ニンゲン界イベント
          • SocietyManager
          • Society
        • EconomyManager
          • 経済変動
          • イベントの影響
          • 価格決定
        • イベント登録
        • 売買
        • 消費
          • 生命エネルギー変換
          • レベル上昇
      • 一日の終わりシーン
        • 処刑されるかどうか
  • プレイヤーレベル
    • カードを消費して得た生命エネルギーを変換してあげていく
    • 上がるとニンゲン選定能力上昇
  • カード
    • ニンゲンが生まれ持った能力や機会
    • 属性
      • 生命エネルギー
        • 固定値
      • 獲得経路
        • 遺伝、能力
        • 機会、環境
      • 価格(同情ポイント)
        • 基底価格
        • 現在価格
          • 通貨換算=同情ポイント
      • 価格の変動しやすさ
        • どれだけ現在価格が動きやすいか
      • 天変地異確率
      • レア度
        • コレクターに高く売れる
    • 配られた選択肢と言うパロディー
    • 選択肢は公平ではない
  • プロローグ
    • あなたは餌を求めてどこか宇宙の遠いところ(アノマ)から地球にやってきたエイリアン(コズモ)です。地球基準で言うと、あなたは凶悪な見た目のわりに戦闘能力がとても低いです。ニンゲンの子供にすら勝てません。
    • ところで、率直に申し上げてあなたは”グロい”です。だから、ニンゲンはあなたのことを良く思っていません。”グロい”し”汚らしい”あなたに対して敵対心(Hostility)を持っています。このままでは成すすべなく駆除されてしまうでしょう。
    • でも、そんな”グロい”あなただからこそ同情(Sympathy)もされているのです。そこであなたは考えました。生き残るためには、敵対心を上回る同情を稼げばよいのだと。そうすればニンゲンはあなたを生かしてくれるでしょう。
    • でもどうやって同情を稼げばよいのでしょう。あなたは一日に一度だけ、ニンゲンを捕食(Siphon)することができます。捕食といっても肉体を食べてしまうわけではありません。ニンゲンが持つ生命エネルギーをカードとして奪うのです。
    • ニンゲンは一人一人が、良いとされるカードや悪いとされるカード、色々なカードを持っています。ニンゲン界ではこういう神話があります。「人はみな配られたカードを持っている。そのカードでどうやりくりして生きるかを考えなさい」
    • ニンゲンからの同情を稼ぐにはこのカードを利用するのです。特に、ニンゲン界で「悪い」とされているカードはあなたにとっては価値があります。もしあなたが「金持ち生まれ」ではなく「底辺生まれ」であれば、同情を稼げるからです。
    • カードは消費(Consume)するか売買することができます。消費すればそのカードが持つ”グロい”といった特性(Trait)はあなたのものになります。消費した時点でのその特性に対する同情ポイントが手に入り、ゲーム中蓄積されていきます。
    • まとめると、ニンゲンからカードを奪って、カードをアノマ界で取引することによって、同情という資産を築いていく、投資シミュレーションゲームみたいなものですね! ちなみに今あなたが持っている”グロい”というカードは結構レアものなので、喜んでください!
  • パラメータ
    • 経過日数(Day)
      • 30日が目標日数
      • それ以上いけることは行けます
    • レベル(Level)
      • あなたのレベル
      • 最大で5
      • 生命エネルギーを蓄積していくと上昇する
      • 上がると捕食対象を選ぶ際
        • より正確に人間を分析できるようになる
        • よりカード所持量の多い人間が出やすくなる
    • 生命エネルギー(Life Energy)
      • カードを消費することで得られるエネルギー
      • 一定値に達するとレベルが上がる
      • 全てのカードは固定値で正の生命エネルギーを持つ
    • マター(Matter)
      • アノマ界でのカード取引に使う通貨
      • 単位は₥
      • 初期所持は1000₥
    • 同情ポイント(Sympathy)
      • ニンゲンどものあなたに対する同情心を表す数値
      • ニンゲン界基準で悪い特性を手に入れると上がり、良い特性を手に入れると下がる
      • カードを所持するだけでは変化しない
      • カードを消費すると得られる
      • このポイントをできるだけ多く蓄積することがこのゲームの目標
    • 敵対ポイント(Hostility)
      • ニンゲンどものあなたに対する敵対感情を表す数値
      • 日ごとに20%複利で上昇していく
      • 日ごとに判定があり、この値を同情ポイントが下回るとゲームオーバー

What went right

  • eventを定義して実際に使うことができた
  • 2Dのゲーム開発に触れられた
    • といっても、使わせてもらったAssetとか3Dですが
    • ドット絵とか使おうと思っていました
  • SceneManagerとデリゲートを使ってのロード手順の実装は想定通りにできた
  • lineRendererコンポーネントを使えた
  • マウスオーバーscriptを使えた
  • EngineをはじめとするManager系の役割分担やそれぞれの結びつきが作り始めた当初はこんがらがっていたが、最終的にはなんとかまとめられた

What went wrong

  • カードをUIとして作ればよかった可能性
    • 単なるオブジェクトだとスクリーンとのサイズ合わせが難しくなる
      • カメラのサイズをスクリーンに合わせて調節するしかない?
    • 全てがUIならsorting layerによる管理が楽?
  • 同じ内容の変数を複数個所に作る必要はある?
    • インベントリーとカードにそれぞれカードの保有枚数を格納する変数がある
  • canvas scaler
    • constant pixel size
    • scale with screen sizeにするのまた忘れた
  • prologueのハードコーディング
    • csファイルに文字を直書きしています
    • scriptable objectにして独立させることは考えた
  • ドラッグ&ドロップの実装はしなかった
    • カードを対象に使うというカードゲーム的な要素がなかったので代替しました

What I learned

  • onenabledはsceneloadの前
  • SceneManager.sceneLoadedでEngineの挙動制御
  • System.Randomは乱数発生のフレームが大分遅い?長い?
    • システムが古いとかなんとか
  • undefinedになる可能性があると警告が来るがとりあえずnullにしとけばコンパイルが通る
  • StartとAwakeの使い分けがいまいちわかってない。
    • とりあえずエラーが出たらごり押しでやってる
    • 自分自身の初期化はAwake
    • ただ、初期化に他のクラスを必要とする場合はどうすればよい?
      • 特に循環的に初期化している場合
      • そもそも循環的な初期化をやめた方がいい?
  • enumのstringを取得したければtoStringでよい
    • 他にもあり
  • enumはintしか値に取れない
    • 定かではない。doubleとかならできるとの情報アリ
    • get的な関数でswitchを使ってやる
      • 例えばアイテムの出現確率
  • delegate
    • 実行される順番は登録順とは関係なく、未定義である。
  • クリックするごとに速攻で実行されると処理的になりすぎて味気ない
    • プレイヤーが何かを予期しわくわくする時間が存在しない
  • text mesh pro だと日本語使うのさらにだるい
  • チャートを作る
    • textureの方で解像度を指定
    • 2Dでも光源の影響あり
    • materialで線の色を変えらえる
    • SetPositionsを使う前にpositionCountを設定する必要がある
  • UI scale
    • buildした後でUIが崩れることに気づいた
      • あわてて修正した
      • rect transformの仕組みが結構わかってきた
    • 縦に広いのか横に広いのか、あらゆるスクリーンに適応させるのは難しい

作成記録

実装手順

  • カード
    • 所持カードを管理するシステム CardManager
    • scriptable objectからカード生成 Card
    • 売買システム
  • TopPanel UI
  • ニンゲンの実装 Human HumanManager
  • 経済システム EconomyManager
  • ニンゲン界で起こるSociety SocietyManager
  • 生命エネルギーシステム
  • カードを取引シーンロードごとに取得する
    • 初期化をどうするか
    • <Trait, 枚数>にすればEconomyManagerで枚数だけを保存できる
  • Engine(EconomyManager, CardManager)は生き残り続ける

問題点

  • マイナスの価値のカードを買ってconsumeし続けるチートが可能
    • consumeはsiphonしたときにだけできるようにする?
    • マイナスのカードを買うということはsympathyを担保にして売りから入る信用取引をしているようなもの
      • つまり、絶対に買わなくちゃいけない?
      • ゴミを買い取って、それをプラスに変換できるのがやばい
        • 生命エネルギーは入手できるが同情は下がるというトレードオフにすればよい
    • マイナスを買って、プラスを買うという無限ループが可能
      • 最大所持数を決めておく?
      • マイナスが膨れ上がるというリスク
    • マイナスを買う、つまりお金を手に入れつつカードも手に入れる、のは一日にレベル数までとする?
  • 改善案
    • consumeの使用タイミングの制限をして、かつ
      • マイナスカードの買いを禁ずる
      • マイナスカードの買いを回数制限する
      • マイナスカードの買いは無制限
    • consumeの使用タイミングの制限をせず、かつ
      • マイナスカードの買いを禁ずる
      • マイナスカードの買いを回数制限する
      • マイナスカードの買いは無制限
    • そもそもsympathyの仕様を変える
      • sympathyはconsumeしたときに蓄積される仕様にする
        • マイナスカードをconsumeするのはsympahtyとenergyのトレードオフ
        • consumeすることによってプレイヤーがそのtraitを体得するという設定
        • マイナスカードは金を払って売るか、デメリット混みでconsumeするか
        • 蓄積されたsympathyは変動するか?
          • 固定にすれば「いつ」consumeするのかというのも意思決定になる
          • ただ変動する方が自然か。そのtraitを持っているという意味では
        • カードは市場に出回っている以上は買えない
          • 買いまくると価格が上昇してmomentumの反動で急激に変化する?

実装案

  • UIの強化
    • click-intensiveすぎる
    • カードの値上がり値下がりを色で表す
  • 獲得したTrait一覧

使用素材

  • Meshtint Free Polygonal Metalon
    • https://assetstore.unity.com/packages/3d/characters/creatures/meshtint-free-polygonal-metalon-151383
  • Easy Primitive People
    • https://assetstore.unity.com/packages/3d/characters/easy-primitive-people-161846

コメント

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