---
title: "自作ゲームのsystemを説明する"
slug: "game"
date: 2025-07-12
tags: ["ue"]
draft: false
---

現在、自作ゲームを開発しています。

このゲームには4つの柱があり、それらはsystemで分けられています。そして、systemは根本的な2つの価値観に基づきます。

根本的な2つの価値観は、(1)現実を反映すること、(2)この世界に同じものは一つもないという唯一性になります。

1. 現実の反映
2. 唯一性の担保

では、各systemについて説明していきます。

# system

## world system

別名、planet systemといいます。

現実の反映という価値観から、ゲーム世界もできる限り現実に合わせようと思いworld systemを作っています。

ゲームは通常、平面世界です。これはゲームエンジンのルールであり、基本的にゲーム世界は平面をベースにしています。

ですから、例えば、上に行っても、下に行っても、あるいは右に行っても、左に行っても、ずっと地平線が広がっています。

しかし、現実世界では、上に行けば、やがて大気圏を越え、宇宙に出ます。

最初は昔から認知されていた地球、月、太陽という3つの星を現実に合わせて作りました。

そして、マップをできる限り惑星形式にします。

これは非常に難しいことで、現在もいくつか問題を抱えています。

ただし、このworld systemの問題がゲームプレイに影響するかと言われると、殆どの場合、影響しません。ゲームプレイの領域は、最初は非常に狭い範囲で作ろうと思っています。小さなところから完璧に作っていきたいという思いがあります。

つまり、プレイヤーは空にも宇宙にも到達できません。それが見えるかどうかもわかりません。しかし、見えない部分もしっかりと作り、世界があるということが私にとって大切です。

まずは、狭いけど完璧な空間を作り、そこでゲームシステムを完成させます。広い世界はできる限り見えないようにしたほうがいいでしょう。夢の世界のような狭い空間を作り、そこでシンプルで小さいゲームができます。もちろん、広い世界に出ることはできません。そもそもこのゲーム、見えない部分をちゃんと作る、そこにも世界がちゃんとあるというのをテーマにしているので、広い世界で何かをやるようなゲームを目指していなかったりします。なにかのときに垣間見える、かもしれない外の世界、広い世界。それを感じられることがある、ということ。それが重要なので、このsystem自体は背景に過ぎないのです。

最初から広い世界があるのではなく`狭い世界 -> 広い世界`への移行が重要だと考えています。この移行に関しては、演出というテーマに基づき、設計する必要があります。それがゲームとしての面白さを作る、ということなのだと思います。

## yui system

別名、unique systemといいます。プレイヤーの唯一性を担保するためのsystemです。

とはいえ、色々なものがここに詰め込まれるでしょう。characterのモデリングとかもそうですね。

どのように担保していくかは未定ですが、いくつか案があります。配信との連携、vmcでモーションキャプチャなどを考えていました。

## ai system

別名、ability systemといいます。

主に、ゲーム性に関することです。ゲーム性とはなにか。それは、永続するということです。

例えば、将棋やオセロを考えてみてください。無限の組み合わせがあり、可能であればずっと遊んでいられる。そのような仕組みを目指します。

まずは属性を物語から考えます。物語は最も小さい物質の探求です。アクシオンやバリオンなどの架空の物質、そして、中性子や原子などの現実の物質が属性となり、1キャラクターにつき1属性を持ちます。

## at system

別名、account systemといいます。

プレイヤーが現実のアカウントを使用してプレイできることを目指します。`atproto`を採用して、ゲームデータを個人のアカウントが所有することを目指しています。

# 現実の反映とはなにか

わかり易い言葉で「現実の反映」を目指すと言いましたが、これはどういうことでしょう。

私の中では「同一性」とも言い換えられます。

例えば、現実の世界とゲームの世界があるのではなく「すべてが現実である」という考え方をします。言い換えると「すべて同じもの」ということ。

もし多くの人が現実世界とゲーム世界を別物と捉えているなら、できる限りその認識を壊す方向で考えます。

例えば、`at system`では現実のsnsアカウントをゲームアカウントに使用したり、現実の出来事をゲームに反映したり、またはゲームの出来事を現実に反映する仕組みを考えます。

全ては一つ、一つはすべて。

同一性と唯一性は一見して矛盾しますが、その統合を考えます。

# 物語と実装

```md
# 物語-存在
 同一性
 唯一性

# system-実装
 world system
 yui system
 ai system
 at system
```

物語では、この世界のものは全て存在であると説きます。存在しかない世界。存在だけがある世界。そして、あらゆる存在を構築しているこの世界で最も小さいものが「存在子」です。存在子は別名、アイといいます。そして、このアイにも同じものはありません。すべての存在子は異なるもの、別の意識。

アイは、最初に生まれたキャラクターとして、アイ属性を扱います。これらの設定は`ai system`の領域です。アイは自分のことをアイと呼びます。

> アイね、この世界と一緒だから。この世界に同じものは一つもないよ。

これはアイのセリフ。存在の世界の同一性と唯一性のことを言っているのです。

# どこまで実装できた

実は、上記のsystemは既にすべてを実装したことがあります。

```md
[at system]
ゲームが始まると、atprotoのaccountでloginでき、取得したアイテムなどはatproto(pds)に保存されます。

[ai system]
キャラクターは属性攻撃ができます。

[world system]
上へ上へと飛んでいけば、雲を超え、宇宙空間に出られます。

[yui system]
配信環境やvmcでキャラクターを動かすことができます。
```

しかし、ue5.5で作っていたsystemも、ue5.6にupdateすると全て動かなくなりました。また一から作り直しています。私は、モデルの作り方から、ゲームの作り方まで初心者ですから、何度も作り直すことで、ゲーム作りを覚えられます。

そして、まだ革新的なアイディアを見つけられていません。それはシンプルで身近にあり、人々が面白いと思うもの。まだゲームになっていない、あるいはあまり知られていないものである必要があります。

例えば、ウマ娘でいうと競馬、ポケモンでいうと捕獲、になります。

それを見つけ、ゲームに取り込む事ができれば完成と言えるでしょう。

そして、ゲームに取り込むことが複雑で難しすぎるようなものではありません。シンプルで単純でわかりやすいものでなければなりません。

## versionを付ける

そろそろversionを付けるかどうか迷っています。

今までモヤモヤしていたものが、最近はよりはっきりしてきたと感じます。ただ、versionはあまり覚えていないし、付ける意味もない。これまではそうでした。

もしかすると今もそうかもしれません。色々なものがバラバラで管理しきれないのです。

ですが、今までやってきたことを総合すると、現在は、`v0.2`くらいだと思います。

最初、はじめてueを触ったときに宇宙マップを使って構築しました。これをv0.0としましょう。

次に、city sampleと宇宙を統合しました。これがv0.1です。

最近はworldscapeを使ってマップを構築しています。これがv0.2です。

aiというキャラクターモデルの変遷も大体を3つの段階に分けられると思います。初めてモデルを作った、vroidで作ったのがv0.0、blenderを初めて触ったのがv0.1、現在がv0.2です。

とはいえ、この設定もそのうち忘れ、どこかで圧縮されてしまうかもしれませんが、覚えているならここから徐々にversionが上がっていくでしょう。

