“CookieClicker”とは
記事概要
記事を書くのがかなり遅くなってしまい申し訳ありませんでした…
直近の他の記事を読んでくれたらわかる通り, 電算では第三回gamejam(春季)が開催されています。そこで私はCookieClicker(クッキークリッカー)というゲームを再現したものを作りました。
この記事ではCookieClickerがどういったゲームかを説明してから自分が作ったゲームを解説していきます。
また, 作ったゲームは誰でも遊べるようにunityroom(フリーゲーム公開サイト)に公開するつもりですが, この記事を書いている時点ではまだ公開してません。この記事が読まれている時には投稿しているかもしれないので,
あがっていたらプレイしてみてください。クリアまで10分ほどです。
↓私のunityroomのユーザーページです。
https://unityroom.com/users/sc5241im6knefo89apwz
CookieClickerとは
https://orteil.dashnet.org/cookieclicker/
CookieClickerは, 2013年に公開されたブラウザ上で遊べるフリーゲームであり, 目的はクッキーの数を”増やす”ことです。
画面左に表示されたクッキーをクリックすると所持クッキーの数が1枚増えるので, まずはクリックしまくってクッキーを増やし, その後は増やしたクッキーを元手にあらゆる設備(buildings)を購入することとなります。
設備はクッキーを消費して購入するのですが, 購入後は永続的に, 一定の効率でクッキーを生み出し続けてくれます。
具体的に言うと, Grandma(おばあちゃん)という設備はクッキー100枚で買えるのですが, 購入後は1秒ごとに1枚のクッキーを生産してくれます。
要するにこのゲームの本質を一言で表すと, 「クッキーを増やすためにクッキーを増やすゲーム」ということになります。
ちなみに1秒間の間放置して得られるクッキーの量を, このゲームの用語でCpS(Cookie per
Second)と呼びます。つまり前述のGrandmaを1人購入すると(基本的には)CpSが1増えることになります。CpSという用語はこの記事内で何度か使うので覚えておいてください。
CookieClickerとの出会い
このゲームは公開された2013年の9月ごろから日本国内でTwitterを通して爆発的に流行していました。(艦これが流行っていた時期だったように記憶しています。)
当時私は中学生でしたが, 例にもれずTwitterでこのゲームのことを知り, ドはまりしていました。ブームそのものは数か月ほどで消え去ってしまったのですが, その後も若干続けていました。その後は全くやっていませんでしたが,
大学の受験期にふと思い出してしまい, 勉強しながらやってました。(ゲームの性質上画面を見ずに放置でできるので…)
4年間ほどやっていなかったらアップデートで非常に多くの要素が追加されていて驚きました。
CookieClickerの魅力
先ほどの説明のみではこのゲームの魅力が十分に伝わらないことは理解しています。個人的にはこのゲームの魅力は値がインフレしていくところだと思います。
プレイするとわかるのですが, 所持クッキーは指数関数的にインフレしていきます。CpSがやっと100万枚(1million枚)に到達したと思ったら1日後には10億枚(1billion枚)となっているなんてことも起こり,
そういった点が楽しいのだと感じます。また, 入手できるクッキーの枚数だけでなく購入費用もインフレします。2つ目以降の施設を購入するのには前回の購入で必要だった費用の1.15倍の費用が必要となるので,
まさに指数関数と同じようにインフレしていきます。先ほどGrandmaという施設の初期購入費用がクッキー100枚だと書きましたが, 200人目の購入価格は100 × (1.15の199乗)となり, 以下のようになります。
199.914trillionと表示されています。1trillionは1兆なので,
199兆914億枚のクッキーが必要となります。1.15の199乗は1,199,140,939,561.4076605184360649542らしいです。
これがさらに増え, 801人目のGrandmaを購入しようとすると,
と表示されます。1quindecillionは日本語表記だと1極であり, 10の48乗を表します。先ほどのtrillionは10の12乗ですが, そちらがしょぼくみえるほど異常な数値ですね。
参考までに
短縮表記 | 10のn乗 |
---|---|
million | 10の6乗 |
billion | 10の9乗 |
trillion | 10の12乗 |
quadrillion | 10の15乗 |
quintillion | 10の18乗 |
sextillion | 10の21乗 |
septillion | 10の24乗 |
octillion | 10の27乗 |
nonillion | 10の30乗 |
decillion | 10の33乗 |
undecillion | 10の36乗 |
duodecillion | 10の39乗 |
tredecillion | 10の42乗 |
quattuordecillion | 10の45乗 |
quindecillion | 10の48乗 |
また, 個人的にはゲーム全体の独特な雰囲気が好きです。具体的なところでは, 購入できる施設はそれぞれ説明が見れるのですが, 例えばFarm(農場)だと
“Grows cookie plants from cookie seed.” (クッキーの種からクッキーを育てる)
Time machineという施設だと,
“Brings cookies from the past, before they were even eaten.” (食べられる前のクッキーを過去から取り寄せる)
といったように, 意味不明なことが書いてあります。他にもクッキー界に繋がる扉を開けたり, 宇宙の反物質(antimatter)を圧縮してクッキーに変換したり,
クッキーが生まれる可能性を作ったり(これが一番謎)するらしいです。この世界では何よりもクッキーが優先されるという, 異質な価値観が素敵ですね。
CookieClickerから見えるゲームの本質
CookieClickerにはまって数時間か数日プレイすると, あるいくつかの疑問が生まれます。
- “このゲームはいつまで続くのだろうか?”
- “既に焼いた数兆枚のクッキーにはなんの意味があるのだろうか?”
- “私たちはどこから来てどこへ向かうのだろうか?”
これらの問いへの答えは今でもわかりません。
ただ, この問いは他のゲーム, ひいては人生そのものにも当てはまるように思います。
私は現在あるソシャゲを続けているのですが, そのゲームのしくみを簡単に説明すると, クエストをクリアするとキャラがドロップし,
それを99体集めると”運極”という状態になります。そして運極のキャラをクエストに連れて行くとドロップ量が増えます。つまり, (CookieClickerのように増加量のインフレは起こらないものの,
)「運極を作るために運極をつくる」というサイクルが生まれます。
また, 私は一時期MHWにはまっていました。これはMHシリーズをやったことがない方でもイメージがつくかもしれませんが, MHはモンスターを狩ったら得られた素材から武器や防具を作ります。つまりこのゲームもまた,
「モンスターを狩るためにモンスターを狩る」こととなります。そうして全ての種類のモンスターを狩りつくしても, より楽に狩るためにエンドコンテンツにのめり込むこととなります。
ひたすら歴戦2を回して増えた攻撃珠(ややレア)や, マムタロトに対して作業のようにライトボウガンを担ぎ続け, やっと手に入れた日立(めっちゃ強い武器)も, いまでは使うことはありません。
時間をかけて運極にしてきた異形のモンスターたち, モンスターを狩るためにモンスターを狩って得られた装備と装飾品, これらはすべてクッキーなんだと思います。
もちろん今後も様々なゲームでクッキーを焼き続けると思います。
しかし, それらが無駄だとはありません。CookieClickerというゲームから, プレイヤーはただ数字が増えるだけで楽しく感じ, 楽しかった経験はずっと記憶の中に残るのだということを学べたので…..
gamejamで作ったもの
ということで(?), 私が作ったゲームの紹介です。
私は今回のgamejamでお題である「増やす」が発表されたとき, 真っ先にCookieClickerのことがおもい浮かびました。しょうじき何かしらのゲームを作ったら何かしらのパラメータは増えていると思うので,
いくらでもこじつけができてgamejamとしては適切なお題だったと思っています。
(unityroomが開催しているgamejamイベント, unity1weekでお題が「あつめる」だった時は, ひらがなの”あ”を詰めるゲームが複数投稿されていました。)
↓プレイ画面
いらすとや様にはいつもお世話になっています。上に貼ったssでは右の施設にばってんがついていますが, 1つ前の施設を購入すると外れるようになっています。そのままゲームを再現してもおもしろくないと思ったので,
何かアレンジをしようと思っていたのですが, 面白い案が浮かんでこなかったのでほぼそのまま作りました。ただ, 本家では終わりがなく無限にクッキーを焼き続けるのに対し,
こちらは1,000万枚のクッキーを集めたらクリアとしています。一応ストーリーも組み込みました。時間がなかったので綿密なテストプレイなんかはしてないですが, 前述の通り10分ほどでクリアできるはずです。
作成にあたっては, まず何を使って作るか考えました。作りたいゲームには物理演算は必要なかったのでUnityを使わずに, 電算の元部長である, 考えるリンゴさんがすすめていたOpenSiv3Dを使ってみたかったですが,
1週間でゲームを作るのに新たなものを勉強するのはつらいと思ったので使い慣れたUnityで作ってしまいました。Unityはいろんなことを勝手に計算してくれるのですが, 逆にそれで動作が重くなってしまうらしいので,
いずれ似たゲームを作るときにはOpenSiv3Dにも挑戦してみたいです。
Unityでパラメータを表す文字やボタンといったUIは, Canvasと呼ばれるプレイヤーや敵などとは違った場所に配置するのですが,
今回つくったゲームはほとんどのものをCanvas上に配置して作りました。(この方法が適切なのか, それともこの方法はやらない方がいいのかはわかりません。)また, Unityではmainのゲーム画面, タイトル画面,
ゲームオーバー画面などでsceneを分け, 適切にscene遷移をしてゲームを作っていくのですが, 今回は1つだけのSceneで完結させてしまいました。(これも適切な方法かはわかりませんが。)
ゲームを始めた時にはタイトル画面が表示され, 画面をクリックするとストーリー説明, 操作説明とすすんでいくのですが, これは画面全体を覆う大きなButtonを配置し,
それがクリックされたらButtonのObjectを非アクティブにするように書いています。ゲームが始まった後にヘルプボタンを押すと再びすべてアクティブになり, また見れるようになっています。この方法は自然と思いつき,
(深夜に作業をしていたのもあって)こんな方法を思いつくなんて自分は天才なんじゃないかと舞い上がっていましたが, 恐らく誰でも思いつくやつだとおもいます。
あと細かいところですが, 本家では所持クッキー量が毎フレーム増えていくのに対し, 自分のものはtimerというfloat型変数を作り,
1秒が経過する度に所持クッキー量にCpSの値を足してしまっています。これはどちらでもプレイ感はそこまで変わらないと思ってそういう実装にしてしまったのですが,
実際にはかなり違和感がありました。毎フレームごとに(CpSの値*フレームの経過時間)を足すように書き変えればいいだけなので, もしかしたらunityroomには公開する前に改善するかもしれません。
振り返って
今回はCookieClickerを再現して, UnityのUI部分(特にButton)の理解がちょっとだけ深まったと思っています。実際に作ってみると思わぬところで詰まったりして想定より時間を食ったりしますが,
逆に言うとその分だけ知らなかったことへの知見が深まっていると言えるので, 小さいプロジェクトでも(それこそ1週間で作れるものでも)作って完成させてみることが大事なんだと再確認できました。
自分はしっかりとしたものを作ろうとして完成させずに途中でやめてしまうことが非常に多いので, 完成させることが大事だということは自分で書いていて耳が痛いですが, 自戒を込めて肝に銘じておきたいです。
おわり
全く関係のない話なのですが, バレンタインデーにfgoには清少納言というサーヴァントが追加されました。私はおととしにfgoはやめてしまったのですが,
このキャラのデザインがかわいすぎるので再びやろうかと思いました。(結局やっていないが)
イラストは輝夜月のデザインをしたMika Pikazoさんが描いているらしいのですが, やはりキャラデザインも同じ方がやっているのでしょうか? 詳しいことはわかりませんが, デザインが奇抜で個人的には非常にツボだったので,
初めて見た時びっくりしました。もともとこの方の絵は好きだったのですが, 一気にファンになってしまいそうです。
今月中に(29日までなのであと3日しかないが)自分の毎月掲載するつもりだったPine’s Diaryという記事も書くつもりなのであがったら読んでください。
↓pine’s Diary1月号
コメント入力