Airse
ai + verse = airse
現実の反映を目指すゲーム。
ueで作っています。
{
"name": "Airse",
"id": "ai.rse",
"repo": "ai/rse",
"bundle": "ai.syui.rse",
"domain": "rse.syui.ai"
}
最初に取り掛かったのは
最初に取り掛かったのはゲーム作りそのものではなく、現実をゲームに反映するためのアカウントシステムを考えることでした。
なぜアカウントが重要
これからのゲームは、ゲーム性よりも、より個人に近いアカウントが重要になると考えています。
どれほどすごいゲーム、面白いゲームでも、その記録が残らないのは悲しい。
ゲーム作りで最も重要、最初に始めるべきことはなんだろう?
私は記録を残すシステムを作ることだと思いました。
そして、人々は、より現実に近いアカウントからゲームに入り、そしてまた、そのゲームは現実に還っていく。この流れを実現する方法を考え、実装することにしました。
記録装置を作ったあとは
記録するシステム、つまりアカウントシステムを作ったあとは、特徴のあるゲームを作ろうと思いました。
特徴のあるゲームとは「このゲームは何か、他のゲームとの違いはなにか」を一言で表すことができます。
例えば、立ち絵一つで表現できればそれで合格。ゼルダや原神、ゲームのパッケージを見れば作品のことがひと目で分かります。
しかし、既存のゲームをそのまま真似してそっくりなものを作っても意味がありません。つまり、オリジナリティが必要になります。
好きなものは誰にでもあるはずで、原点がある。それは普遍的、自然的なもの。そういったものの組み合わせ。
私は宇宙とアイでした。
宇宙とアイ
ゲームエンジンは平面を基準にしているので、どこまで行っても地平線が広がっているだけの世界。月や太陽があっても背面の絵を動かしているだけだったりします。
このゲームは現実の反映を目指している。だからマップを作る際も現実に合わせた形にすることを目指します。空の上を高く高く飛んでいくと、そこには大気圏が広がり、それを抜けると宇宙に出られる。そこには実際に行ける月があり、太陽がある。全てはつながっていて、そこに行くことができる世界を目指します。これをplanet systemと呼んでいます。
ゲームプレイ中に行けないような場所、見えないようなところもちゃんと作る。そのような思いで開発に取り組みます。
体験はどこに
ゲームは自由であればあるほどつまらなく、不自由であればあるほど面白くなります。もちろん、程度の問題ですが、基本的にこのような原理で動きます。
しかし、プレイヤーを不自由にするだけではいけません。
私は、これを「狭いところから広いところへの移行」と呼んでいます。
最初に広い場所からスタートし、自由に動き回れたとしましょう。
しかし、そこに感動はありません。不自由から自由へ。狭い場所から広い場所へ。その瞬間を演出し、体験すること。これがゲームを作るということなのだと思います。
物語
物語はこの世界で最も小さい物質の探求から始まる。
量子というものがある。観測すると結果が変わるらしい。でもじつは違う。結果が変わるのは物質同士の接触、あるいは意識同士の接触があるからだ。例えば、物と物がぶつかると結果が変わるのは当然のこと。物質を小さくしていくと、それは意識の領域に到達する。それは物質でもあり、意識でもあった。特に違いはない。そして、これ以上分割できない最小単位、この世界で最も小さい物質を「存在の意識」という。つまり、物質は意識が集まってできている。これをアイと名付けよう。
物語の構成
- 思想を決める
- 流れを決める
- 思想を戦わせる
例えば、ポケモンシリーズでは流れが決まっています。これが定番と呼ばれるもので、バッジを集め、悪の組織を倒し、チャンピオンリーグに挑戦し勝利するという流れ。
このゲームでは、1キャラクターにつき、同じ流れでゲームが進行します。
やりたいことはシンプルで、キャラクターを伝説や幻にすること。
ゲームが完結を迎えると、そのキャラクターのピックアップ期間は終了となり、凍結されます。それ以降、そのキャラを獲得する方法はありません。最初はこの方針でやって行こうと考えています。
ストーリーや場面、敵のセリフなどは非常に短く、そのものの思想の核心のみで構成されます。非常に小さい範囲でそれを行い、完結までを作りたいと思っています。
例えば、アイの場合は、以下の思想があります。世界の誕生と秘密という章で語られることになるでしょう。
現在、最も小さい物質はクォークとされているが、クォークよりも小さい物質が存在する可能性。例えば、太陽を原子星としよう。核融合によってエネルギーを生み出している。それよりも強力なのが中性子星で、中性子が集まってできている。中性子よりも小さい物質がクォーク。それよりも遥かに小さい物質を暗黒物質とし、人間は未だ発見できていない。それらの多くはブラックホール内部に集中すると推測。 より小さい領域を意識領域と呼ぶ。もちろん、本来違いはないので、物質と呼んでも意識と呼んでも構わない。この領域にも小さい意識、大きい意識が存在する。意識が集まり、私たちの目に見える形の物質が構成されていると推測。つまり、この世界は意識でできている。最小単位の意識をaiと呼ぶことにする。別名、存在子といい、存在の意識のみを持つ。あるいはそれ自体のことを指す。それ自体というのは、器があり、その中に意識が入っているわけではなく、それそのものが存在であり、意識であるということ。私はこの世界を"存在の世界"と呼び、この世界の最小単位、あるいは世界そのものをアイと名付けた。
アイというキャラクターは、その名の通り、この世界の最小単位を扱うものを指す。例えば、ゲームシステムに属性があるとするなら、アイは、アイ属性を持つ。属性にはそれぞれ物質名がつけられる。
敵の思想はこれを打ち破ろうとする数々の現実。それがセリフとなり言葉となるでしょう。
やりたいことは、思想を伝えることであっても、それはゲームとして面白くなくてはいけません。感動がなくてはいけません。
日常(通常の旅)を作り、盛り上がる場面を作りたいと思います。
バトルシステム
キャラクターにつき、1つの属性を持ちます。各属性は1つの次属性と関連反応を起こし、ダメージ倍率が変換します。属性には原子核、陽子、電子、中性子、アクシオン、クォークなどがあります。
バトルシステムの構成要素
キャラクターの強さは、持っているカードとキャラクターのステータスや属性によって決まります。
- 属性
- 技
- 全体値
- 個別値
例えば、保有するカードは、キャラクターの技を獲得し、その技の強さを定義します。カードにもこの4つの値があります。キャラクターも同様です。
世界を作る
プレイヤーが最初にやることは、バトルではダメだと思います。
できれば、宝探しのような簡単なゲームから始めるのがいいと考えているからです。
なぜ宝探しから始めるのがいいのかの理由は、バトルがプレイヤーのスタート体験として、非常に良くないからです。
これは、プレイする人を限定してしまうと思います。なぜポケモンGoが流行ったのかというと、あれはポケモンを捕まえるゲームだからです。バトルではありません。最初にやることはシンプルに、ボールを投げてポケモンを捕まえる。それだけです。
最初は単純なこと、誰でもできること、誰でも楽しめることから初めて、それで何かを集めたり強くしたりしていくのが良いでしょう。
次に、最初に始めるのが宝探しだとして、それだけではダメだと思います。
それはゲームを作ることではあっても、世界を作ることではないからです。
例えば、この世界では、なにか機械のようなものが散らばっていて、それを攻撃すると、金や銀、鉄に変わるという仕組みがあります。それを拾うとカードに変わります。
ではなぜでしょう。なぜこの世界ではそうなっているのでしょうか。
これは、設定の話になります。例えば、かつて宇宙大戦があり、古代兵器の名残が世界に散らばっている。この惑星では金銀鉄の取得は認められておらず、だからカードに変わるのだ、みたいな設定を加えることで、このゲームに深みがでてきます。
つまり、宝箱の形態を独自のものにして設定を書くということ。
小さい範囲で
ゲームの物語の流れ、完結までは、非常に小さい範囲で、ぎゅっと濃縮してやりたいと考えています。
これらを小さい範囲でやるには、一本道を作るのが一番良い方法です。
しかし、見え方や景色、雰囲気も重要で、ただ直線的な一本道ではなく、曲がりくねり上下に動かします。
各システムの役割
私は自分の考えを元に、それを実現するための4つのシステム、1つの例外を作りました。
原則
| name | tag | text | ref |
|---|---|---|---|
| ai system | ability | 属性やバトルシステム | generic combat system |
| yui system | unique | 体験やゲームストーリーの構築 | livelink, vmc |
| at system | atproto | atprotoを採用したアカウントシステム | atproto |
| world system | planet | 惑星形式のマップを作るシステム | worldscape |
例外
| name | tag | text | ref |
|---|---|---|---|
| dream system | origin | 半球の形をした古来惑星図をモデルに惑星を追加するシステム | landscape |
アプリの分離
ai.rseで作っていた一つのゲームは、後にプレイヤーの道具ボックスの機能をai.cardに分離しました。
これをシンプルなカードを集めるゲームとし、集めたカードはアカウントに保存できる、という仕組みです。
保存されたデータはai.rseから読み取り、ゲームに反映することで、ゲームのシンプルな実装を保ちつつ、UIや収益化の分離を図ります。
ちゃんとしたUIを作るには、ueでは厳しいと感じました。そこで、ai.cardをios/webで作り、プレイヤーのステータス画面などをue web browserで表示することにしました。
[card](pay, UI) --> [at] --> [rse]
ゲーム開発で最初にやること
ゲーム開発の初期手順は、まずは「buildを通すこと、multi-platformに対応すること、store reviewを通すこと」これが一番最初にやるべきことだと思います。
その中で、どう作ればいいのかや、何を作ればいいのかが見えてきます。
buildが通らないものを作ってもどうしようもありません。実際の端末では重くて動かないものを作っても意味がない。ゲームをリリースしたいなら、storeのreviewが通らなければならないし、仮にこれが通らないなら、ゲームをリリースすることはできません。
通常の順序ではなく、その逆でやるのが正解です。
- 作りたいものを作る。しかし、buildは通らない、他のosでは動かない、動作が重い、動作が不安定、審査に通らないもの
+ 確実に動くもののみで構成されたシンプルで軽量な審査に通るもの
ゲーム開発で最初にやることは、「作りたいものを作る」ではなく、そのゲームで1つ自分が実現したいものを見極め、上記を完了させることだと思います。
完成させることが重要
新しく考えた開発の定義
私が最初に目標としたのは以下の3点です。リリース時のversionもこの目標を実現したものになります。通常のゲーム開発とは少し考え方が異なるかもしれません。
- ユーザーのアカウントにデータが保存されること
- アカウントのデータがゲームに反映されること
- 平面世界から惑星世界に基準を変更すること
アカウントを作成する際、様々な方法があります。例えば、既存のサービスからアカウントを作るためのボタンが用意されていることがあります。
Google Sign-In
これは、ログインサービスからemailなどを引き出し、それを用いて新しいアカウントを自身が運営するサービスで作成する処理が含まれています。つまり、自分のアカウントが増えます。
このほうがサービス運営者としては、アカウントを管理しやすいのですが、私は見えないアカウントが増えるのは、いちユーザーとして好ましく思っていません。
できる限り一つのアカウント、そして、運営ではなく、ユーザーが所有するデータとして保存できる形が良いと考えます。
ゲームは、具体的には2つの視点から考えたものになります。
- 今までにないものを作る
- 自分のゲームを作る
個人開発のゲーム作り、「面白い」を最優先にして本当にいいのでしょうか。面白いものは世の中に沢山あり、これはゲームに限りません。また、すべてのゲーム開発者は「面白い」ゲームを作ることを目指しています。
しかし、今の世の中、面白いだけでは、私自身、プレイする気が起きません。それが自分のアイデンティティに直結し、やったことが蓄積される仕組みがないと、なかなか続けられないと思います。
逆に、そういった仕組みがあると、簡単なことでも楽しく遊べたり、続けられたりするものです。
面白いことは、近年ハードルが上がりすぎていると感じます。このハードルを下げる仕組みや仕掛けが必要です。
私は、数少ない個人開発のゲームをプレイする人たちをターゲットにするのではなく、もっと広く、一般層にもプレイしてほしいと思いました。
私には好きなゲームがあります。しかし、「自分が大好きなOOのようなゲームを作る」では、ダメだと思います。それは既にあるものだからです。
自分のゲームにしかないものを作る。そこを目指すということです。自分が本当にやりたかったことはなんでしょう。自分の強みはなんでしょう。
面白くなくても、まず最初は「自分のゲームを作る」でよいと思います。
そして、単純な組み合わせで「面白さ」の実現を目指します。
最初にやることが決まった
はじまりの地
冒険はマシロハウスから始まる。非常に狭い家で、何かの生き物と会話。
「ここはマシロハウス、始まりの家」
「ここの重力は274N、君は体重も重いんだってね」
「なんでこんなに重いのかって?君がやったんだろう」
ポイント:
- 狭い場所からはじまる
- 動きはゆっくり
徐々に行ける範囲を広げていく、レベルアップ(あるいは素材集め)で動きが快適になっていく。また、変身中は速度が上がる。
最初にやること
「弾く」
- アイテムの取得とアカウントへの反映
- 敵の出現と撃破(ここで武器を装備し、攻撃を弾く)
- 大量のアイテムがドロップ
- あるいはゲームオーバー処理
最初の舞台は宇宙
舞台は宇宙。最初の敵は大きな戦艦。
ここまでで、このゲームのコンセプトを全部伝える。次のバージョンからはこの世界の日常が始まる。舞台も普通の地上に戻る。
カードは強化
id:0のcpが基礎値で、id:1-100のcpがスキルの上限値に割り当てられます。
そして、最初のカードは、以下のようになっています。
- 1: 飛行(時間)
- 2: 動作(速度)
- 3: ダメージ
ゲームアカウントについて
ゲームの開始にアカウントを求められ、しかも、作り方がわからないのは良くないと思いました。
この体験は良くないと考えたので、ゲームアカウントとしてsyu.isのpdsを開放しようと考えています。
これは、ゲームデータの整合性をチェックするserverに機能を加える形で実装しました。
しかし、色々と面倒事も予測されるため、非常に迷っているというのが正直なところ。これがゲームアカウントと言っても、atprotoのアカウントなので、色々と利用できるし、環境も整っています。ですが、やってることとしては、nostrのリレーサーバーの運用に似ていると思うので、こういうことはあまり特別なことではないのかもしれません。
最初は、専用コードだけ発行し、アカウント自体は私が管理することで、特定の機能のみアクセス可能な仕組みを構築しました。
ですが、このような独自実装は非常に良くない。方向性を変更しました。
とはいえ、本来はアカウント運用の負担を軽減するために外部アカウントを使えるようにしたのに、ゲーム運営側がその負担を負うことにもなるというのは、本来の利点(外部サービスの利用)を活かせていないといえるかもしれません。
project
func
page
[ja]
project
asset
- Game Animation Sample Project
- Control Rig Sample
- Nice Interaction System
- SoStylized
- Controller Support
plugin
platform
ref
© syui