Unityでインディゲームを作る!

Unityでのゲーム制作を目指し、それに関わる話題についてのブログ

ソリティアという化け物ゲームをやって、いろいろ想ったこと。ルールやランダム性、技術介入度など [ クロンダイク スパイダー ]

Solitaire

 今、どんなゲームを一番やり込んでいるかと聞かれたら、間違いなくソリティアと答えます。きっかけは何だったか・・・Windowsに入っているMicroSoft Solitaire Collectionをなんとなくやってみた・・・という始まりだったはずです・・・

 ※今回の記事はかなり長くて、全部で9000文字(!)を超える長文です。ご了承ください。

 

なんともないゲーム

 ソリティアというのは自分にとっては、たまに思い出したようにやって直ぐ飽きては辞めて・・・というものに過ぎませんでした。特に十代の自分にとっては正直、何が面白いのか分からないゲームの一つで、Windowsのゲームをやるなら、マインスイーパーっしょ、ぐらいの感じでした。

 一番代表的な?ルールである、クロンダイクについては、正直今でもそこまで面白いゲームとは思っていません。(その理由についての考察は後述します)

 

 しかし、今の自分はたぶん人生で一番ソリティアをやっています。それはなぜか?と聞かれれば、たぶんソリティアの中に今の自分が一番考えるべきゲームデザインとは何か?』という問いへのヒントの源泉があるからです。

 特にランダム要素とプレイヤーのゲームへの介入性、あるいは技術介入度に対するバランスについて、ソリティアから学べるモノはかなり大きいと感じています。

 

 後は単純に自分の知らない面白いソリティア(のルール)を見つけたから、というのもあります。ソリティアおもしれー!と素直に楽しんでいるのです。

 世界中のあるゆる人に遊ばれて、そして古典的でシンプルなゲーム、というのも大きいのかもしれません。長い年月、多くの人に遊ばれているゲームは『強い』。

 

 今のWindowsにはMicroSoft Solitaire Collectionなるソフトがインストールされており、ここからでも数種類のソリティアもしくはカジュアルゲームを(広告付きで)遊ぶことが出来ますが、Soritia.jpという様々なソリティアを無料で遊べ、ルールも解説してくれるサイトを見つけました!(といっても検索結果のトップに出てくるサイトですが)

 とにかく、ここがめちゃくちゃ素晴らしいサイトで、ここをきっかけに知ることが出来たソリティアのルールがたくさんあり、そういう意味で今回、ソリティアに対する視野がとても広がったことが大きな収穫です。

 

 そんなわけで、最近はソリテイア漬けの自分ですが、いろんなソリティアをやってみて思ったこと、考えたことをまとめてみたいと思います。

 

ソリティアとは

 ソリティアとは、原義的には『一人向けの遊び』ですが、現在では特に一人用のトランプゲームを指します。Windowsに古くから内蔵されてきたことでお馴染みです。(Windows)パソコン・ゲームと言えば、ソリティアマインスイーパーか、と言ってしまっても良いくらいの存在ではないでしょうか。

 いわゆる、多くの人が思い浮かべるソリティアは厳密にはクロンダイクという名前のルール、及び遊び方です。最近まで自分もその認識でした。

 

 ソリティアのゲーム性は、主に(クロンダイクやスパイダーなど)ランダムに並び替えられたカードを正しい順番に並べ直す、というモノなのですが、その手順であったりとか、様々な機構、制約などがルールによって違うということになります。

 

 ソリティアはいくつかのジャンルに大別出来て、クロンダイク、スパイダー、ピラミッド、トライ・ピークス(ゴルフ)、フリーセルなどのゲーム性の異なる遊び方があります。

 自分もまだまだニワカなので、様々なルールについて詳しくはSoritia.jpで見て頂くとして、いくつかのルールで遊んでみた結果、それらの評価についてかなり分かれるものとなりました。つまり、面白いルールもあれば、つまらないルールもある、という感じです。

 様々なソリティアを遊んでみて、各々どういう構造になっているのかを考え、なぜ、自分はそれを面白く感じたのか、また別のモノはそうではなかったのかを考えてみるのは、ゲームデザインについての勉強になりそうだったので挑戦してみます。

 まずは個人的に特に面白かったルールについて、取り上げてみたいと思います。

 

個人的に面白かったルール

 ソリティアといえば、クロンダイクのようにカードを順列に並び替えるのが主な遊びだと思うので、そういうゲーム性で自分が一番面白いと思うのは、スパイダーソリティアです。

スパイダー

Solitaire_Spider

 スパイダー・ソリティアは、運要素と技術介入度のバランスがかなり良い感じです。後程、クロンダイクとの比較をやります。

 スパイダーにも、もちろん運要素があるのですが、クロンダイクよりもカードを動かす機会が多いし、挽回もしやすい、あるいは挽回できるかも?と思わせてくれる、ルールなので面白いです。

 

 ゲームにおいて、プレイヤーが気持ちよくなる瞬間がどれくらいあるかが、特に大事だと思います。その点、スパイダーはゲーム途中にエースからキングまでが縦に揃うと、(演出が入って)場から取り除かれるのですが、これが単純に気持ちいいです。

 これは最終的にゲームクリアできなかったとしても、ゲーム中にいくらかの小さな目標を達成できていることになるので、次は勝ちたい!もう一回やれば行けるかも!?というモチベーションにも繋がっているのでしょう。

 場からカードが減ることでプレイもしやすくなる、というのも良いシステムだと思います。上手くプレイした見返りがちゃんとプレイヤーのためになっているシステムです。

 

 スパイダーの中でも難易度別のルールがあり、使う絵柄が一つ、二つ、四つの場合があるのですが、特に絵柄を赤黒の二種類使うSpider Solitaire(Two Suits)はかなり深いゲームだと思いました。

 ソリティアの中でもトップクラスに完成度の高いルールなのではないでしょうか、実際、世界で一番遊ばれているルールらしいです。もし、それが本当なら納得の面白さです!!

 

 個人的には、やはりスパイダーのようにカードが動かしやすいルールの方が面白いと思いますし、かといって、作業感を感じにくい程度にほどよい運要素があるものが良いと考えているので、以下のルールもそういう傾向があります。

スパイデレット

 スパイデレットは、そんなスパイダーの簡略版でサクッと遊べるソリティアになっています。ある程度スパイダーをやり込むと物足りなくなるルールかもしれませんが、しかし、気軽に遊べて難易度も決して低くはないのでけっこう好きです。

 

ユーコンソリティア

 ソリティアクロンダイク)と言えば、カードの山があり、それをめくっていって適合するカードを探していく、というのがお馴染みのルールだと思っていたのですが、ユーコン・ソリティアはそんな思い込みを打破してくれる、面白いルールでした。

 

 カードの山がなく、全てのカードが並べられています。縦に並べられているカードに関しては何枚でも!持ち上げることが出来る自由度の高いルールです。赤と黒が交互に、数字が連続して並べば、自由な枚数カードを動かすことが出来ます。

 その反面、きちんと盤面にあるカードを見て考える必要がありますが、だからこそゲームとしてのやりがいがあるルールだと思います。最近知ったルールですが、とても面白いです。

 

エイトオフ

 いわゆるフリーセルというのは、個人的にはかなり嫌いなルールなのですが、その中の一種である、エイトオフはかなり面白かったです。フリーセルには、一時的にカードを場から避難して置いておけるCell(セル)があるのですが、それが8個あり、フリーセルと異なり、同じ絵柄で数字順に並べるのがエイトオフです。

 これがフリーセルと同タイプのゲームとは思えないほどに面白かったので、これは今回のソリティア漬けにおける一つの大きな収穫です。

 

 完全に主観ですが、フリーセルはどうしても作業ゲー感を強く感じてしまいます。ソリティアの運要素については、特にクロンダイクは結構くだらないです。しかし、クラシックなフリーセルのように全てのカードがオープンにされ、クリアまでの手順が決定論的なゲームはそれはそれで息苦しく、つまらなく感じてしまうのはゲームデザインにおいて、考慮すべき点だと思いました。

 それに対し、エイトオフは従来のフリーセルの持つ作業感を軽減し、戦略に柔軟性があるゲームになっていると思います。

 

 セルが8個になっているという点では、エイトオフはフリーセルよりも簡単になっているはずです。しかし、同じ絵柄でないと並べられない、という制約も追加されているので、総合的に見れば、難しさとしてはそこまで変わらないか、あるいはエイトオフの方が少し難しいくらいになっているのではないかと思われます。

 それなのにプレイ・フィールとしては、エイトオフの方がはるかに面白く感じるのは、難しくはなっているけど、その分自由度が増えて、盤面を眺める時間が減り、カードを動かす機会が多いからだと考察できます。

 

その他のいくつかのゲームについて

 いろいろなソリティアで遊んでいるので、その他のゲームについても少しだけ触れたいと思います。

トライ・ピークス

 手元にあるカードの山から一枚引き、そのカードの数字の一つ上か下のカードを手元に引っ張ってくるゲームです。コンボが気持ちいいゲームですが、高難易度だとなかなかストレスが溜まるゲームになります。

 このゲームも運と言えば、運なのですが、かなり気軽に遊べるゲームですので、たぶんこっちの方が、好きという人は多いかもしれません。

ピラミッド

 これは正直、どうなんだってゲームですが、足すと13になる二枚のカードをピラミッド状に並べられたカードを下から取り除いていくゲーム。それなりに遊んではみましたが、たぶん一番なんにもならないゲームですね(笑)

 

なぜクロンダイクはそんなに面白くないのか

 面白くも無いけど、つまらなくもない。だから、別にこれで遊ぶ必要もない。それが自分にとってのクロンダイクソリティア

 

 前述したように、自分がソリティアで面白いとは思えないルールがクロンダイクで、このルールは自分が『ソリティアとかつまんねー』という思うに至った原因の一つであります。

 現在、かなりソリティアを遊んでいて、クロンダイクもそれなりに遊んでいるのですが、まぁ遊べなくはないゲームだけど面白くはないな、と昔に比べて多少印象が良くはなった程度の感触です。

 自分の見解としては、クロンダイクはいろいろと大雑把というか、ルールが足りてない感が強いです。他のルール同様、ちゃんと盤面を見て判断し、カードを動かす、という要素はもちろんあるのですが、しかし介入性はそんなに高くなく、運要素の在り方が少し大味すぎると自分は考えています。

 

 この記事を書いていて思い出したのですが、そういえば昔にも普通のソリティアはつまんないけど、たまたま遊んでみたスパイダーが思いのほか面白くて驚いたことを思い出しました。こっちは面白いじゃん!という驚きです。

 

 今回のメインテーマとして、なぜクロンダイクはそんなに面白くないけど、スパイダーは面白いのか、ということについて比較研究してみたいと思います。

 共通点も多い、この二つのルールで何故こんなにも面白さが違うのか、ゲームルールが生み出す面白さとは一体何なのかについて考えてみたいです。

ルールの比較

Solitaire_Klondike

 まずは各々のルールについて、簡単に確認していきます。クロンダイクは階段状にカードを並べ、一番下のカードを表にそれ以外は裏にされています。残りのカードは山となって置かれ、これをめくりながら、赤黒交互に数字が大小順に並ぶようにして、最終的に全てのカードが絵柄ごとにエースからキングまで外側にある置き場に揃えばクリアです。

 

Solitaire_Two_Suits_Spider

写真は二組版のスパイダー

 スパイダーは10列分カードを並べ、同じく一番下にあるカードを表にします。残りのカードは山となって伏せられ、プレイヤーの好きなタイミングで、各列に一枚ずつランダムに配布します。一組ルールだと一つの絵柄だけで、大小順に並べていきますが、二組ルールは赤黒混合でカードが並びます。この時、色が違うカードでも数字が連続すれば並べることが出来ますが、まとめてカードが動かせるのは同じ色のカードの身になります。

 

自由度

 多分ここが、そのプレイフィールの差に一番大きい影響を与えている部分だと思うのですが、自由度についてです。

 これは圧倒的にスパイダーの方が大きいです。特にTwo Suits(二組)スパイダーは出来ることが多く、いろいろ考えるべきことも多いし、カードを動かす機会も多いです。ただただ面白いゲームになっています。

 クロンダイクの窮屈な所ですが、空になった列に対して、キングからしか置けないというルールがあります。なんでも置けるようになると、それはそれでゲームが破綻してしまうのかもしれませんが、出来ることが少ない原因の一つでもあると思います。

 

ゲーム展開

 ゲーム展開の動き方もやはりスパイダーの方が大きいです。各列に対して、ランダムに一枚ずつ配布することを数回、プレイヤー自身が好きなタイミング(これ重要!)で行うことが出来ます。

 これにより、大きく盤面の状況が変化し、それに対してプレイヤーはきちんと対応し、上手くカードを動かしていくことになります。

 

 それに対して、クロンダイクは一枚一枚カードの山をめくっていき、一つ一つ確認していきながら、何か場におけるカードがないかを判断することになります。

 何かのカードを場に加えたことで、既に場に存在していたカードも連鎖的に動く、という面白味はもちろんあるのですが、スパイダーと比較すると、その頻度は決して多くはなく、連続性も低いです。

 

 なんというかクロンダイクのゲーム展開が直線的なのに対して、スパイダーは8列分のカード並べられているだけあって、広がりがある展開で運要素も程よく弱まって感じるように出来ていると思います。

 

ゲームの形成判断

 ゲームにおいて、自分が良いことをしたのか悪いことをしたのか、という評価のフィードバックは速く正確であることが大事です。

 スパイダーは小目標として、エースからキングまでを揃える、というものがあり、それを全ての組でやる、というのが大目標となっています。

 カード一組Verだと全部で四回分の小目標があるのですが、つまり、今どのくらいのゲームの進行なのかが非常に分かりやすいですし、ダメになった時もわかりやすい。

 

 それに対して、クロンダイクは上手くいっているようでも、運要素がかなり強いので、どのくらいの達成度なのか、チャンスはあるのか無いのか、とにかく色々と分かりにくいのではないかな、と思います。つまり、プレイヤー自身がゲームの状況を把握しにくい、ということです。もちろん、その不透明さがスリリングさを出す、という解釈も出来るかとは思います。

 クロンダイクは最後の最後まで、上手くいっているかどうかが分からず、最後になって、あの時の二択に失敗したから、上手くいかなかったのだなぁ、と答え合わせすることになり、そうしたプレイへの評価の機会が後ろにずれ込むのが良くないのかもしれません。

 

リターン(報酬)の強さ

 前述したように、スパイダーはゲームの途中経過として、キングからエースまで一列順に揃うと、その場から消えます。

 単純にそれは気持ちいいですし、小さな達成感があります。と同時にゲーム展開も空きスペースが増える可能性があり、そうならば良いゲーム状況になり、遊びやすくなります。

 つまり、評価、報酬とゲームシステムがかなり強く結びついています。ゲームを進める上で分かりやすい目標であり、評価であり、ゲームを有利に進めるためのシステムなのです。

 

 その反面、クロンダイクは地道にカードを重ねていくだけであり、それはそれで楽しいのですが、まぁ地道です。

 最後の最後で伏せてあるカードに重要なカードが残されていて、ゲーム続行が不可能になり、ガッカリしてしまうケースがあります。もちろん、上手くいった時は嬉しいのですが、『でも、たまたま上手い選択肢を選べただけだよな・・・』という感想も含まれてしまう、という想いもあります。

 

 クロンダイクは、それなりに盤面を集中して見ないとダメなゲームではあり、実際にはやりがいのあるゲームです。しかし、その労力に対して、ゲーム側のリターンがあまり伴っていないように思います。

 なので、『暇つぶしにはいいけどさ』というぐらいの評価が適正な気がします。実際、暇つぶし界の覇権ではあるのですが。

 

スパイダーは落ちモノパズル?

 スパイダーにおける、定期的に場にランダムにカードが加わること、そして、上手く揃えるとカードが場から消え去る、というシステムが落ち物パズルに似ているのではないか、と思いました。

 もちろん、テトリスを始めとした落ち物パズルは人並みに好きですので、これに気付いた時、そりゃスパイダーの方が面白いとなーと。

 

 テトリスはランダムに数種類の内のひとつのブロック(テトリミノ)が落ちてきて、それらを上手く一列に揃えると消える!という落ち物パズルを代表するゲームですが、確かに共通する部分があるし、そういう何かを揃えて消し去るという行為に永続性を与えたゲームとしてのテトリスというゲームは改めてスゴイ存在だなと思います。

 

難易度の違い

 これは判断が難しいのですが、どちらのゲームも運次第な部分があって、どっちの方が難しい、という差はほとんどないと思います。

 これまで書いてきたことに基づいて考えると、やはりスパイダーの方がゲーム性に幅があったり、カードを動かす機会が多いので、難しくても楽しみやすい、というのがあると思います。

 

運要素(ランダム要素)と技術介入度

 それでは、ゲームおけるにランダム要素、運要素と技術介入度の関係性について、ソリティアの視点からいろいろ考えてみたいと思います。

 

 多くのゲームにおいて、その影響度の大小あるにせよ、ランダム要素、運要素というものが存在します。まずはそもそもランダム要素とは何か、運要素とは何なのかについて考えてみたいと思います。

運要素とは

 プレイヤー自身がどうすることも出来ない部分、意思決定できない要素。いくつかの選択肢、あるいは可能性の中から、不規則に選ばれた発生する何か、が運要素だとここでは定義してみます。

 難しいのは、運要素といっても様々で、完全にランダムかもしれないし、あるいは少数の中から偏りの有る確率で何かが選ばれるという場合も考えられます。規模感であるとか、ランダム性に偏りがあったり、ということです。

 また、プレイヤーの意志にそれが関連付けられているのか、というのも大事だと思います。つまり、本当にランダムなタイミングでランダムなイベントが起きるのか、それとも、プレイヤーが自分の意志で、自分の好きなタイミングで、ランダムな事を起こせるのかという問題です。

 

 前述したように、スパイダーソリティアでは、プレイヤーが自分の好きなタイミングで、各列に一枚ずつランダムにカードを配るという行動を数回行うことが出来ます。

 結局はカードがどのように積まれているかはプレイヤーは分からないのですが、この操作によって、プレイヤーはある程度ランダムイベントに介入できることになっています。これがクロンダイクとのゲーム性の大きな違いを生んでるのではないか、というのが自分の説でした。

明示的に

 つまり、ここは運が絡むよ!やる度に結果が異なるよ!ということが、プレイヤーにとって明確で、分かりやすいことが、プレイヤーに運要素を受け入れさせるために大事なことなのではないかと思います。

 分かりやすいのがサイコロで、サイコロを自分で振ってもその目をコントロールできる人は少なくとも素人にはいません。

 ただし、自分の好きなタイミング、自分の手でサイコロを振ることが出来る、という点がサイコロの良い所なのかもしれません。

 

 今回、運要素について考えて思ったのが、良い運要素については、それを起こす前に神頼みをするのではないのか、ということです。

 つまり、プレイヤーが楽しんでいる運要素については、例えばサイコロを振る前に『お願い!たのむ!』などと願うのに対して、詰まらないと思う運要素については、ただただ上手くいかなかった場合にため息をついたり、舌打ちしたり、『これ、俺が悪いの?』となってしまうのではないか、という体験主義的に思ったのです。

 またクロンダイクとスパイダーの比較になるのですが、クロンダイクの運要素については、ため息をつくばかりなのですが、スパイダーに関してはカードの配布において、ちゃんと神頼みしてるんですよね、なのでこれは体験談ということになるのですが、同じ運ゲーでもこんなにも違うのか、と我ながら興味深いです。

 

 ビデオゲームで言えば、ドラクエ6は『せいけんづき』ゲーですが、ハッサンが腰を深く落とす度に多くのプレイヤーは『ハッサン!たのむ!当ててくれ~!』と強く願ったはずです。

 それはやっぱりゲームを楽しんでいるし、そして、せいけんづきを撃つ判断をしているのはプレイヤー自身に他ならないからです。

 プレイヤー自身にきちんと納得した形でサイコロを振らせる、ということが大事なのかもしれません。

 

まとめ

 というわけで、最近熱中しているソリティアを題材にゲームデザインについて、色々考えたことを書いてみました。

 クロンダイクは何故面白くないのか、というテーマに文量をかなり費やしたのですが、書いた後で、そんなに面白くないのがクロンダイクの良さなのかも、と思いました。

 暇つぶしでやるものだから、直ぐにやめられないといけない、勝つことが目的なのではなく、適度に頭と手を動かして時間が潰れればいい、というのがクロンダイクというゲームのコンセプトだと思うと、ゲームというのは奥深いものですね!

 

 最近流行っているゲームは運要素が強いものが多いと思うので、運要素のバランスだったり、技術介入度だったりについて考えるのに良いきっかけになりました。

 

 運要素が強すぎても、プレイヤーが自分でゲームを動かしてる感が薄れるし、弱すぎても決定論的なゲームになりすぎて、『遊び』が少なくなり、下手すると作業ゲーになってしまう、という危険性があるので、結局はバランスなのですが、それを決定するのは難しい判断です。 

 

 世に出ているゲームはいろんな創意工夫を元に生み出されたものなんだなぁと感慨深くなりました。自分もそんな面白いゲームを作るぞ!

 

Unity Integrated Success編 Unity eBook "Optimaize Your Mobile Game Performance" を読み解く

Optimize_Your_Mobile_Game_Performance

 Unityが無料で発行しているeBook "Optimize Your Mobile Game Performance"を読み解いていこう!という、この企画も今回でいよいよ最終回!無事に最後まで完走出来たので良かったです。

前回はWorkflow and collaboration編

 

 今回の章は、Unityが自分のプロジェクトを監修してくれたりする、Unity Integrated Successというサービスについての章です。これが利用できるくらいの規模のゲームを作れるようになりたいなぁ、と思います!

 

Unity Integrated Success

 (パーソナライズされた)個別の指摘が必要な場合、Unity Integrated Successの利用を考えてみてください。

 Integrated Successは、サポート・パッケージ以上のモノです。その利用者は、Unityのソースコードにアクセスして、コードを読んだり改造したりするオプションを加えることも出来ます。

 このアクセス権は、適合させるためにソース・コードを深く調べたい、あるいはコードを他のアプリケーションに再利用したい、という開発チームにとって有用です。

 

プロジェクト・レビューをしてもらおう

 プロジェクト・レビューはIntegrated Successパッケージの中でも欠かせない部分です。可能な時には、私達はその利用者の所まで赴き、そのプロジェクトを私達自身が理解するために丸二日間滞在します。

 私達は、様々なプロファイリング・ツールを使って、プロジェクトのパフォーマンス上のボトルネックを検知し、現状の要件と設計判断の中でファクタリングします。

 私達はまた、パフォーマンス上の最適化によって、より速く、安定し、効率化できそうなポイントも特定します。

 

 ビルド時間が少ない、(シーンのモジュール化、アセットバンドルの重用などによって)よく設計されているプロジェクトにおいては、新たな問題を発見するために、現場での変更と再プロファイルを実行します。

 

 私達が問題を直接解決することが出来ないインスタンスについては、出来る限りの情報を集めます。それから、Unity社内に戻り、更なる調査の画策を行い、必要となれば、Unityの研究開発部門に属する専門開発者を紹介します。

 

 レビューの成果は、利用者の要望により異なるのですが、特に発見したモノをまとめたレポート、推奨案が提供されます。

 

 私達のゴールとは私達の顧客に対して、内在する障壁、リスクやその適切な解決方法を特定し、開発を前進させる最良の実践に沿えるよう手助けすることで、最高の価値を常に提供することです。

 

Developer Relations Manager (DRM)

 プロジェクト・レビューに加えて、Unity Integrated SuccessではDeveloper Relations Managerも派遣しています。

 DRMはUnityの戦略的アドバイザーであり、Unityを使いこなす手助けをするのに、チームの外部顧問に素早く着任出来る存在です。

 

 あなたのDRMは専用テクニックと、問題を先回りできて、プロジェクトをすぐに立ち上げ、円滑に運用できる指導的な専門性を提供します。

 

 もし、Integrated Successやプロジェクト・レビューをもっと学びたいならば、Unityのセールス部門に聞くか、コンタクト・フォームから連絡を取ってください。

 


 

 うおーー!終わったぁ!文字数にしたら、全ての章で一万文字を軽く超えていると思いますが、これでやっと終わりました!

 

 今回の企画は完全な見切り発車ではあったし、最終的にはほぼ翻訳みたいな内容になったんですが、読み返しつつ記事を書いてると、本当に役立つことしか書いてないんですよね。

 だから大変ではあったけど、全然その労力に見合う試みだったと思います。Unity 2021のLTS版が出る際(3月)にまた、このeBookの新しいヴァージョンが出ると思うので、出たらこちらの記事達もアプデしていきたいと思います。

 

ひとまずは無事完結!ありがとうございました!!

 

Workflow and collaboration編 Unity eBook "Optimaize Your Mobile Game Performance" を読み解く

Optimize Your Mobile Game Performance

 UnityによるeBook "Optimize Your Mobile Game Performance"の読み解き企画もいよいよラストスパート!前回はPhysics編でした。

 今回はWorkflow and collaboration編です。ゲーム制作に直接的に関わる部分、ではあまりありませんが、作業工程を円滑にするためのテクニックが含まれています。

 

Workflow and collaboration

 Unityでのアプリケーションを開発は、たくさんの開発者による多大なる努力の賜物であることがほとんどです。

 あなたのチームにとって、最適となるようプロジェクトの立ち上げをしっかりとしましょう。

 

 全員がなんらかのヴァージョン管理システムを使うべきです。Editor Settingsで、Asset Serialization ModeForce Textにしましょう。

 

 もし、Gitのような外部のヴァージョン管理システムを使う場合、Version Control

設定で、ModeVisible Meta Filesに設定してください。

 

 Unityはその他にも、特にシーンやプレハブの統合にために、YMALツールが組み込まれています。詳しくはスマート・マージを確認してください。

 

 ヴァージョン管理はチームの一員として働くために不可欠なものです。バグを追跡したり、ダメな改訂を追跡するのに役立ちます。

 マイルストーンやリリースを管理するのに、ブランチやタグを使う、というような良き実践例に従ってください。

 

 Unityでのゲーム開発に最適な、推奨されるPlastic SCMを確認してみてください。(※SCMは今後、完全にUnity標準のヴァージョン管理システムとなる予定です)

 

巨大なシーンを分割する

 巨大で単一なUnityシーンはコラボレーションに適していません。レベル(いわゆるステージや面)をいくつかの小さなシーンに分割し、衝突のリスクを最小化しながらアーティストやデザイナーが、一つのレベルの中で上手くコラボできるようにしましょう。

 

 ゲーム実行時に、あなたはSceneManager.LoadSceneAsyncLoadSceneMode.Additiveという設定パラメータを通し、使用することで、追加的にシーンをロードすることが出来ます。

 

使用していないリソースを削除する

 サードパーティプラグインやライブラリ由来の使われていないアセットに注意して下さい。

 それらの多くには、テスト用に埋め込まれたアセットやスクリプトが含まれていて、あなたが取り除かなれば、ビルドに組み込まれてしまいます。

 プロトタイプの時から残留している、不要なリソースは全て引きはがしてしまいましょう。

 

Unity Acceleratorで共有をスピードアップする

 Unity AcceleratorはCollaborateサービスのためのプロキシとキャッシュで、Unityエディター・コンテンツの素早い共有を可能にします。

(※CollaborateはPlastic SCMに置き換わるため、ここでの表記はUnityの現状とズレがある場合があります)

 もし、あなたのチームが同じローカル・ネットワークで働いているなら、プロジェクトの部分リビルドが必要なくなり、ダウンロード時間を劇的に減らすことが出来ます。

 

 Unity Teams Advancedを利用していると、Acceleratorはソース・アセットも共有させてくれます。

 


 

 今回はゲーム制作そのものというよりかは、プロジェクトをどう扱うか、ということに関する内容だったと思います。

 これで、いよいよ次回が最終章!Unity Integrated Success編で会いましょう!

 

Physics編 Unity eBook "Optimaize Your Mobile Game Performance" を読み解く

Optimize Your Mobile Game Performance

 Unityが無料で発行しているeBook "Optimize Your Mobile Game Performance"を読み解いていこう!という企画です。今回はPhysics、物理に関する章となります。

(前回はAnimation編

 

Physics

 Unityに組み込まれている物理エンジン(Nvidia PhysX)は、モバイル上では重い場合があります。以下の豆知識は、より高いFPSを得るための助けになるかもしれません。

 

設定を最適化する

 Project SettingsのPlayer設定において、可能な時は常に、Prebake Collsion Meshesを有効にする。

 

 Physics Settings (Project Settings > Physics)も編集することも忘れないでください。Layer Collision Matrixを出来る限り、単純にしてください。

 

 Auto Sync Transformsを無効化し、Reuse Collision Calbackを有効化してください。

 

コライダーを単純化せよ!

 メッシュ・コライダーはコストが高い場合があります。複雑なメッシュ・コライダーの代わりに、より単純なプリミティブ・メッシュか、オリジナルの形状に近似させたメッシュ・コライダーで代用するようにしましょう。

 

RigidBodyをPhysicsメソッドを使って移動させる

 MovePositionAddForceのようなクラス・メソッドを使って、RigidBodyオブジェクトを移動させましょう。

 Transformコンポーネントを直接操作して動かすと、Physics ワールドでの再計算を引き起こしてしまう恐れがあり、これは複雑なシーンにおいてはコストが高いと思われます。

 

 Update関数ではなく、FixedUpdate関数の中で物理オブジェクトを動かしましょう。

 

Fixed Timestepを修正する

 プロジェクト設定でのデフォルトのFixed  Timestepは0.02 (50Hz)です。これをあなたの目標となるフレームレートに合うように、値を変えましょう。(例えば、30FPSに対して、0.03とする)

 

 さもなくば、実行時にフレームレートが低下した場合、これはつまり、各フレーム毎にUnityが複数回FixedUpdateを呼び出しており、負荷の高い物理コンテンツによって、CPUパフォーマンスに問題を引き起こしている、ということになります。

 

 Maximum Allowed Timestepは物理演算にどのくらいの時間を消費するか、そして、FixedUpdateイベントがそのイベント内でどのくらいフレームレートの抜け落ちを使えるか?を制限します。

 この値を下げるということは、パフォーマンスが怪しい時に物理演算やアニメーションの質を低下させて、かわりにフレームレートへの影響を低下させる、ということになります。

 

Physics Debuggerで視覚化する

 Window > Analysis > Physics Debuggerで物理デバッガーを開き、問題のあるコライダーや不一致(何の?)への対処の足掛かりにしてください。

 

 これによって、どのゲームオブジェクトが、その他のオブジェクトに対して、衝突することが出来るべきかを色付き表示で見ることが出来ます。

 更なる情報について、物理演算デバッグの可視化を確認してください。

 


 

 というわけで、物理編でした。物理演算は当然重たい部分ですし、挙動が読みにくいということもあって、使わないなら使わない方が良いとされています。使うにしても、今回紹介された設定などを上手く使っていきたいですね!

 

 残す章はあと二つとなりました!長いようで、あっという間でしたが、無事最後まで走り切れそうで嬉しいです!

 

次回はWorkflow and collaboration編!

 

Animation編 Unity eBook "Optimaize Your Mobile Game Performance" を読み解く

Optimize_Your_Mobile_Game_Performance

 Unityが無料で発行しているeBook "Optimize Your Mobile Game Performance"読み解き企画、今回はアニメーション編です。

 この章が短いのは意外ですが、サクッといってしまいましょう。

 

Animation

 UnityのMecanim Systemは非常に洗練されています。可能ならば、以下の設定を用いて、モバイル上でのアニメ・システムの利用を制限してください。

 

ヒューマノイド・リグに対して、ジェネリックを利用する

 デフォルト設定では、Unityはモデルをジェネリック・リグとしてインポートします。しかし、開発者はアニメーションさせるキャラクターをヒューマノイド・リグに切り替えることがほとんどです。

 ヒューマノイド・リグは同じモデルのジェネリック・リグと比較して、CPU処理時間を30~50%多く消費します。これは、IKやアニメーション・リターゲティングを使ってなかったとしても、それらを毎フレーム計算しているからです。

 

 これらのヒューマノイド特有の機能が必要ない場合は、ジェネリック・リグを使いましょう。

 

Animatorの使い過ぎを避ける

 Animator(コンポーネント)は人型のキャラクタに多くを占められますが、しかし、単一の値をアニメーションさせるのに使われることも多いです。

 特にUI要素に関わる事柄で、アニメーターを乱用するのは避けてください。可能な時は常に、モバイル向けにはレガシーなアニメーション・コンポーネントを使いましょう。

 

 Tweenする機能を作ったり、単純なアニメーション向けのDOTweenのようなサードパーティ・ライブラリの利用も考えてみてください。

 


 

 というわけで、かなり短い!もう少しテクニックありそうな気もするんですが、それは今後のアプデに期待ですね。

 

次回はPhysics編です!