Skip to content

Commit

Permalink
product doc for community
Browse files Browse the repository at this point in the history
  • Loading branch information
nighca committed Sep 13, 2024
1 parent 125e54e commit 2b3acc4
Show file tree
Hide file tree
Showing 2 changed files with 172 additions and 6 deletions.
166 changes: 166 additions & 0 deletions docs/product/community.zh.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,166 @@
# 社区 Community

搭建社区的目的:

* 促进创作热情(看到别人创作的优秀项目)
* 降低创作门槛(在别的项目基础上继续创作)
* 提高创作能力(看到别的项目是如何实现的)

本文档中说的社区 Community 指为搭建社区、实现上述目的而构建的一系列能力,包括但不限于

* 围绕 Project 的操作,如发布、运行、评论、点赞、改编等
* 围绕 User 的操作,如个人信息管理、关注等
* 围绕团队的操作,如创建、管理、甚至利益分配等

## 基本概念

### 关注 Follow

用户可以通过 Follow 其他用户以及时获取其动态信息。当 A Follow B 后,我们称 A 为 B 的 Follower,B 为 A 的 Followee。

“动态信息”包括但不限于:

* Followee 的新 Project
* Followee 的新 Release
* Followee 的新 Followee

获取动态信息的渠道包括但不限于:

* Follower 的首页推荐内容
* Follower 的消息通知(站内信、邮件、...)

### 喜欢 Like

用户可以 Like 他喜欢的 Project,除了对 Project 表示喜爱外,还可以方便自己日后查找。

### 用户 User

[Go+ Builder Product](./index.zh.md) 基础上,对 User 的基本信息进行扩充如下:

* Description: 对自己的描述

### 项目 Project

[Go+ Builder Product](./index.zh.md) 基础上,对 Project 信息进行扩充如下:

* Description: 描述,对 Project 的描述
* Instructions: 游戏的操作说明
* RemixFrom: Remix 来源信息,如果当前 Project 是基于其他 Project Remix 而来,这里记录原 Project & Release 的信息
* Thumbnail: 缩略图
* 其他 Community 交互相关信息,如访问次数等

### 版本 Release

一个 Release 是 Project 某个时刻状态的快照,确定的 Release 对应于确定的、不可变更的游戏内容。

每个 Project 可以有 0 个或多个 Release。

Release 包含以下信息:

* Version: 版本号,用于标识 Release 的版本;对于同一个 Project 下的 Release,其 Version 是唯一的
* Description: 对该 Release 的描述
* Game: 游戏内容
* Thumbnail: 缩略图
* 其他,如创建时间等

某个 Release 是否可被其他用户或未登录用户读取,取决于其对应的 Project 是否公开,仅公开的 Project 的 Release 可以被其他用户或未登录用户读取。

在最简单的实现方案下,Release 中的 Game 信息是对 Project 中 Game 信息的拷贝。长期来看,我们可能会在创建 Release 阶段做更多的工作,比如压缩、编译、混淆等。因此,Release 的 Game 信息实际上会包含两部分内容:

1. 源码,与 Project 中的 Game 信息一致
2. 可执行文件,基于源码生成的可执行文件

## User Story

### 创建 Release

用户可以为自己的 Project 创建 Release,过程包括:

* 系统自动生成(或用户输入) Version & Description 信息
* 拷贝当前 Project 中的 Game、Thumbnail 作为 Release 的 Game & Thumbnail
* 使用上述信息创建 Release

### 发布 Publish

Publish 是这样的动作:

1. 如果当前 Project 不是公开的,则将其设置为公开
2. 提供更新 Project 的 Description、Instructions 的机会
3. 基于当前 Project 创建一个 Release
4. 操作者会得到 Publish 成功的提示 & Project 详情页的 URL,以便分享给他人

### 取消发布 Unpublish

Unpublish 是这样的动作:

1. 如果当前 Project 是公开的,则将其设置为非公开

### 改编 Remix

用户可以在其他人的 Project 基础上创建属于自己的 Project,并继续编辑,这个过程称为 Remix。

注意当对某个 Project 进行 Remix 操作时,总是需要指定其某一个 Release(默认是最新 Release)。当对 Project P 的一个 Release R 进行 Remix 时,我们会:

1. 为当前 User 创建一个 Project P2
2. 将 P 的 Description、Instructions 等信息拷贝到 P2 中
3. 将 R 的 Game 信息(源码部分)拷贝到 P2 中
4. 设置 P2 的 RemixFrom 为 P & R

### 编辑 Project

除了在 [Go+ Builder Product](./index.zh.md) 中提到的编辑 Project 的动作,用户还可以在编辑器中:

* 发布或取消发布

### 查看他人公开 Project 主页

已登录或未登录用户可以在他人公开 Project 对应的主页:

* 查看 Project 的基本信息,如拥有者、Name、Description、Instructions、RemixFrom 等
* 查看 Release 记录,如创建时间、Version、Description 等
* 查看 Project 的 Community 交互信息
* 运行游戏,游戏内容为 Project 的最新 Release 的 Game 信息
* 分享 Project 给他人
* Like(若已登录)
* Remix Project(若已登录)

仅当 Project 有 Release 时,Remix 操作基于的是当前 Project 的最新 Release

### 查看自己的 Project 主页

已登录用户可以在自己的 Project 主页:

* 查看 Project 的基本信息,如拥有者、Name、Description、Instructions、RemixFrom 等
* 查看 Release 记录,如创建时间、Version、Description 等
* 查看 Project 的 Community 交互信息
* 运行游戏,游戏内容为 Project 的最新 Release 的 Game 信息
* 编辑 Project 的基本信息,如 Description、Instructions 等
* 编辑最新 Release 的基本信息,如 Description 等
* 编辑 Project 游戏内容(跳转到编辑器页面)
* 取消发布

### 查看他人个人主页

已登录或未登录用户可以通过访问其他 User 的个人主页:

* 查看 User 的基本信息,如 Name、Description 等
* 查看 User 的公开 Project 列表
* 查看 User 的 Community 交互信息,如 Followers、Followees、Like 等
* Follow 该 User(若已登录)

### 查看自己的个人主页

已登录用户可以通过访问自己的个人主页:

* 查看自己的基本信息,如 Name、Description 等
* 查看自己的公开 Project 列表
* 查看自己的 Community 交互信息,如 Followers、Followees、Like 等
* 编辑自己的基本信息

### 访问 Community 首页

已登录或未登录用户可以访问 Community 首页:

* 查看推荐的公开 Project 列表(基于全网最近的 Like 信息 & Remix 信息)
* 查看关注的 User 的动态信息
* 查看 Like 的 Project 动态信息(TODO)
12 changes: 6 additions & 6 deletions docs/product/index.zh.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,9 +158,7 @@ Asset 包含以下信息:

### 在其他人的公开 Project 基础上编辑

用户可以查看并筛选所有人保存的公开 Project,并在其基础上继续编辑。需要注意,当用户在其他人的公开 Project 基础上编辑时,他编辑的并不是其他人的 Project,也无法真的修改其他人的 Project。

这个过程从原理上看应当是:创建一个新的 Project,并把目标 Project 的 Game 拷贝过来。因此在保存时,不应当将本次做的变更追加到云端已有的 Project 上,而是在云端添加新的 Project。
详见 [社区 Community](./community.zh.md) 中的“改编 Remix”。

### 导入、导出 Project

Expand Down Expand Up @@ -209,9 +207,11 @@ Asset 包含以下信息:

后续对于 Asset 的编辑与普通的编辑相同,这里不做赘述。

### 分享链接
### 分享

详见 [社区 Community](./community.zh.md)

在编辑器中,我们会引导用户分享他的 Project 给他人。只有已保存且公开的 Project 才可以被分享。
<!-- 在编辑器中,我们会引导用户分享他的 Project 给他人。只有已保存且公开的 Project 才可以被分享。
某个 Project 的拥有者 A 分享该 Project 给另外一个用户 B 时,完整的流程如下:
Expand All @@ -225,7 +225,7 @@ Asset 包含以下信息:
5. 除了允许 B 进行游戏外,我们通过在运行界面引导 B 在当前 Project 基础上添加自己的改动
6. 引导链接会进入到编辑器,后续流程与上述“在其他人的公开 Project 基础上编辑”一致
注意,因为编辑器暂不支持未登录用户通过编辑器进行操作,因此这里我们会检查用户登录状态,逻辑相见上述“未登录状态编辑”。
注意,因为编辑器暂不支持未登录用户通过编辑器进行操作,因此这里我们会检查用户登录状态,逻辑相见上述“未登录状态编辑”。 -->

### 嵌入到第三方站点

Expand Down

0 comments on commit 2b3acc4

Please sign in to comment.