add en
@@ -14,9 +14,9 @@
|
|||||||
|
|
||||||
### project
|
### project
|
||||||
|
|
||||||
- [Airse](https://git.syui.ai/ai/rse/wiki/Airse)
|
- [Airse](https://git.syui.ai/ai/rse/wiki/Airse) / [en](https://git.syui.ai/ai/rse/wiki/en/Airse)
|
||||||
- [Aicard](https://git.syui.ai/ai/rse/wiki/Aicard)
|
- [Aicard](https://git.syui.ai/ai/rse/wiki/Aicard) / [en](https://git.syui.ai/ai/rse/wiki/en/Aicard)
|
||||||
- [Aiat](https://git.syui.ai/ai/rse/wiki/Aiat)
|
- [Aiat](https://git.syui.ai/ai/rse/wiki/Aiat) / [en](https://git.syui.ai/ai/rse/wiki/en/Aiat)
|
||||||
|
|
||||||
### platform
|
### platform
|
||||||
|
|
||||||
|
|||||||
45
en/Aiat.md
Normal file
45
en/Aiat.md
Normal file
@@ -0,0 +1,45 @@
|
|||||||
|
# Aiat
|
||||||
|
|
||||||
|
We are developing a selfhost and client for [bluesky-social/atproto](https://github.com/bluesky-social/atproto).
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "Aiat",
|
||||||
|
"id": "ai.at",
|
||||||
|
"repo": "ai/at",
|
||||||
|
"bundle": "ai.syui.at",
|
||||||
|
"domain": "at.syui.ai"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Why use atproto
|
||||||
|
|
||||||
|
`atproto` is a protocol.
|
||||||
|
|
||||||
|
It provides useful packages for building account systems.
|
||||||
|
|
||||||
|
Users are given an ID called a DID, and domains become URIs.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
at://did:plc:6qyecktefllvenje24fcxnie
|
||||||
|
at://ai.syui.ai
|
||||||
|
```
|
||||||
|
|
||||||
|
## Selfhost
|
||||||
|
|
||||||
|
We run pds, bsky, bgs, plc, jetstream, ozone, and social-app.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"pds": "data",
|
||||||
|
"bsky": "api",
|
||||||
|
"bgs": "timeline",
|
||||||
|
"plc": "did",
|
||||||
|
"jetstream": "feed",
|
||||||
|
"ozone": "moderation",
|
||||||
|
"social-app": "web"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Client
|
||||||
|
|
||||||
|
We are building iOS/web clients based on [bluesky-social/social-app](https://github.com/bluesky-social/social-app).
|
||||||
59
en/Aicard.md
Normal file
59
en/Aicard.md
Normal file
@@ -0,0 +1,59 @@
|
|||||||
|
# Aicard
|
||||||
|
|
||||||
|
An iOS app for collecting cards.
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "Aicard",
|
||||||
|
"id": "ai.card",
|
||||||
|
"repo": "ai/card",
|
||||||
|
"bundle": "ai.syui.card",
|
||||||
|
"domain": "card.syui.ai"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## Game Separation
|
||||||
|
|
||||||
|
Games are made up of many elements. However, since it's desirable for each element to operate independently, we separated some of the features we were building in `Airse` into `Aicard`.
|
||||||
|
|
||||||
|
Therefore, we decided to separate account creation, game data creation, and storage.
|
||||||
|
|
||||||
|
Also, one factor was that we considered iOS (App Store) to be the most suitable platform for monetization.
|
||||||
|
|
||||||
|
This allows data and monetization to operate and cooperate independently.
|
||||||
|
|
||||||
|
### Aicard [Local Data]
|
||||||
|
|
||||||
|
- Account data creation
|
||||||
|
- Save game data to remote
|
||||||
|
- Payment system
|
||||||
|
|
||||||
|
### Airse [Remote Data]
|
||||||
|
|
||||||
|
- Account data reading and reflection
|
||||||
|
|
||||||
|
## Creating New Accounts
|
||||||
|
|
||||||
|
There's an atproto PDS server called `syu.is`. We operate it independently and decided to use it as a game account system as well.
|
||||||
|
|
||||||
|
However, since we're adopting atproto, people with knowledge can rewrite remote data. This affects Airse.
|
||||||
|
|
||||||
|
To prevent this, newly created accounts issue a temporary UUID, allowing only session restoration using that UUID, without the ability to operate account records.
|
||||||
|
|
||||||
|
Because of this system, `syu.is` accounts are considered free of data tampering and receive special treatment.
|
||||||
|
|
||||||
|
1. Max values are set higher than normal
|
||||||
|
2. Username abbreviation
|
||||||
|
|
||||||
|
## Gameplay
|
||||||
|
|
||||||
|
Aicard is a card collecting game. The collected cards are reflected in Airse, an action game.
|
||||||
|
|
||||||
|
It has a very simple design and also works on the web.
|
||||||
|
|
||||||
|
## Building UI
|
||||||
|
|
||||||
|
Since building UI in game engines is difficult and results in low quality, we display `card.syui.ai` in UE's web browser for the player (user) UI.
|
||||||
|
|
||||||
|
By also serving as Airse's UI, we aim to reduce development burden and improve quality.
|
||||||
|
|
||||||
111
en/Airse.md
Normal file
111
en/Airse.md
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
# Airse
|
||||||
|
|
||||||
|
ai + verse = airse
|
||||||
|
|
||||||
|
A game that aims to reflect reality.
|
||||||
|
|
||||||
|
Built with [UE](https://dev.epicgames.com/documentation/unreal-engine).
|
||||||
|
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "Airse",
|
||||||
|
"id": "ai.rse",
|
||||||
|
"repo": "ai/rse",
|
||||||
|
"bundle": "ai.syui.rse",
|
||||||
|
"domain": "rse.syui.ai"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
## What We Started With
|
||||||
|
|
||||||
|
The first thing we worked on wasn't game development itself, but thinking about an account system to reflect reality in the game.
|
||||||
|
|
||||||
|
## Why Accounts Matter
|
||||||
|
|
||||||
|
We believe that in the future of gaming, personal accounts that are closer to the individual will become more important than gameplay itself.
|
||||||
|
|
||||||
|
No matter how amazing or fun a game is, it's sad when those records don't persist.
|
||||||
|
|
||||||
|
What is the most important thing to start with when making a game?
|
||||||
|
|
||||||
|
We thought it was building a system to preserve records.
|
||||||
|
|
||||||
|
And people enter games from accounts that are closer to reality, and then the game returns back to reality. We decided to think about and implement ways to realize this flow.
|
||||||
|
|
||||||
|
## After Building the Recording System
|
||||||
|
|
||||||
|
After creating the recording system, or account system, we wanted to make a distinctive game.
|
||||||
|
|
||||||
|
A distinctive game can be described in a single phrase: "What is this game, and what makes it different from others?"
|
||||||
|
|
||||||
|
For example, if you can express it with just a single character illustration, that's a success. Looking at the package of games like Zelda or Genshin Impact, you can understand the work at a glance.
|
||||||
|
|
||||||
|
However, there's no point in just copying existing games to make something similar. In other words, originality is needed.
|
||||||
|
|
||||||
|
Everyone has things they love, and there's an origin. Something universal and natural. A combination of such things.
|
||||||
|
|
||||||
|
For us, it was space and Ai.
|
||||||
|
|
||||||
|
## Space and Ai
|
||||||
|
|
||||||
|
Game engines are based on flat planes, so no matter how far you go, there's just a horizon stretching out. Even if there's a moon or sun, they're often just background images being moved.
|
||||||
|
|
||||||
|
This game aims to reflect reality. So when creating maps, we aim to match the real world. If you fly high up into the sky, the atmosphere expands there, and when you break through it, you emerge into space. There's an actual moon you can travel to, and a sun. Everything is connected, and we aim for a world where you can go to these places. We call this the planet system.
|
||||||
|
|
||||||
|
We develop with the mindset of properly building places that can't be visited during gameplay, things that can't be seen.
|
||||||
|
|
||||||
|
## Where is the Experience
|
||||||
|
|
||||||
|
The more free a game is, the more boring it becomes; the more constrained, the more interesting. Of course, it's a matter of degree, but fundamentally it operates on this principle.
|
||||||
|
|
||||||
|
However, simply constraining players isn't enough.
|
||||||
|
|
||||||
|
We call this "the transition from narrow to wide places."
|
||||||
|
|
||||||
|
Let's say you start in a wide area and can move around freely.
|
||||||
|
|
||||||
|
But there's no excitement in that. From constraint to freedom. From narrow places to wide places. Staging and experiencing that moment. That's what making a game is about.
|
||||||
|
|
||||||
|
## Story
|
||||||
|
|
||||||
|
The story begins with the exploration of the smallest substance in this world.
|
||||||
|
|
||||||
|
There's something called quantum. Apparently the results change when you observe it. But actually that's not quite right. Results change because there's contact between substances, or contact between consciousnesses. For example, it's natural that results change when objects collide with each other. As you make substances smaller and smaller, they reach the domain of consciousness. They were both substance and consciousness. There's no real difference. And the smallest unit that cannot be further divided, the smallest substance in this world, is called "the consciousness of existence." In other words, substances are made of gathered consciousness. Let's call this Ai.
|
||||||
|
|
||||||
|
## Battle System
|
||||||
|
|
||||||
|
Each character has one attribute. Each attribute triggers related reactions with one secondary attribute, changing the damage multiplier. Attributes include atomic nucleus, proton, electron, neutron, axion, quark, and others.
|
||||||
|
|
||||||
|
## Role of Each System
|
||||||
|
|
||||||
|
Based on our ideas, we created four systems to realize them, plus one exception.
|
||||||
|
|
||||||
|
### Principles
|
||||||
|
|
||||||
|
| name | tag | text | ref |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| ai system| ability | Attributes and battle system| generic combat system|
|
||||||
|
| yui system| unique | Building experiences and game story| livelink, vmc |
|
||||||
|
| at system| atproto | Account system using atproto| atproto |
|
||||||
|
| world system| planet | System for creating planetary maps| worldscape |
|
||||||
|
|
||||||
|
### Exception
|
||||||
|
|
||||||
|
| name | tag | text | ref |
|
||||||
|
| --- | --- | --- | --- |
|
||||||
|
| dream system| origin | System for adding planets modeled after ancient hemispherical planetary charts| landscape |
|
||||||
|
|
||||||
|
## App Separation
|
||||||
|
|
||||||
|
The single game we were making in `ai.rse` later separated the player's toolbox functionality into `ai.card`.
|
||||||
|
|
||||||
|
This became a simple card collecting game, where collected cards can be saved to your account.
|
||||||
|
|
||||||
|
The saved data is read from `ai.rse` and reflected in the game, maintaining simple game implementation while separating UI and monetization.
|
||||||
|
|
||||||
|
We felt that making a proper UI in UE was difficult. So we decided to build `ai.card` for iOS/web and display player status screens using UE's web browser.
|
||||||
|
|
||||||
|
```sh
|
||||||
|
[card](pay, UI) --> [at] --> [rse]
|
||||||
|
```
|
||||||
|
|
||||||
Reference in New Issue
Block a user