-
Notifications
You must be signed in to change notification settings - Fork 32
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
4 changed files
with
330 additions
and
38 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
# Community | ||
|
||
Purpose of Building a Community: | ||
|
||
* Foster creative enthusiasm: Experience excellent projects created by others | ||
* Lower the barrier to creation: Continue creating based on other projects | ||
* Improve creative abilities: Learn how other projects implement functionalities | ||
|
||
The term "Community" in this document refers to a series of capabilities built to establish a community and achieve the aforementioned purposes, including but not limited to: | ||
|
||
* Operations related to Projects, such as publishing, running, commenting, liking, remixing, etc. | ||
* Operations related to Users, such as personal information management, following, etc. | ||
* Operations related to teams, such as creation, management, and even benefit distribution. | ||
|
||
## Basic Concepts | ||
|
||
### Follow | ||
|
||
Users can follow other users to receive their news in a timely manner. When A follows B, A is considered a follower of B, and B is considered a followee of A. | ||
|
||
In the long run, "news" may include but is not limited to: | ||
|
||
* New projects from followees | ||
* New releases from followees | ||
* New followees of followees | ||
|
||
Channels for obtaining news may include but are not limited to: | ||
|
||
* Recommended content on the follower's homepage | ||
* Message notifications (in-site messages, emails, etc.) for the follower | ||
|
||
### Like | ||
|
||
Users can like projects they enjoy. In addition to expressing their admiration for the project, it also allows them to easily find it in the future. In the long run, we may also use a user's like information to recommend content to them. | ||
|
||
### User | ||
|
||
On top of the [Go+ Builder](./index.md), the basic information of a user is expanded as follows: | ||
|
||
* Description: A description of oneself | ||
|
||
### Project | ||
|
||
On top of the [Go+ Builder](./index.md), the information of a project is expanded as follows: | ||
|
||
* Description: A description of the project | ||
* Instructions: Instructions for playing the game | ||
* RemixFrom: Information about the source of the remix, if the current project is created by remixing based on another project, this records the original project and release information | ||
* Thumbnail: A thumbnail image | ||
* Other community interaction-related information, such as visit counts, etc. | ||
|
||
### Release | ||
|
||
A release is a snapshot of a project's state at a certain moment, representing a fixed and immutable game content. | ||
|
||
Each project can have zero or more releases. | ||
|
||
A release includes the following information: | ||
|
||
* Version: A version number used to identify the release; for releases under the same project, the version is unique | ||
* Description: A description of the release | ||
* Game: The game content | ||
* Thumbnail: A thumbnail image | ||
* Others, such as creation time, etc. | ||
|
||
Whether another user or an anonymous user can access a release depends on whether its corresponding project is public. Only when a project is public can its releases be accessed by other users or anonymous users. | ||
|
||
In the simplest implementation, the game information in a release is a copy of the game information in the project. In the long run, we may do more work during the release creation phase, such as compression, compilation, etc. Therefore, the game information in a release actually contains two parts: | ||
|
||
1. Source code, consistent with the game information in the project | ||
2. Executable file generated based on the source code | ||
|
||
The process of creating a release for one's own project includes: | ||
|
||
* Automatically generating (or user inputting) version and description information | ||
* Copying the game and thumbnail from the current project as the game and thumbnail of the release | ||
* Creating the release using the above information | ||
|
||
### Publish | ||
|
||
Publishing is an action that: | ||
|
||
1. If the current project is not public, sets it to public | ||
2. Allows the user to update the description, instructions, and other information of the current project | ||
3. Creates a release based on the current project | ||
4. Provides the operator with a successful publish prompt and the URL of the project page for sharing with others | ||
|
||
### Unpublish | ||
|
||
Unpublishing is an action that: | ||
|
||
1. If the current project is public, sets it to private | ||
|
||
### Remix | ||
|
||
Users can create their own projects based on other people's projects and continue editing them. This process is called remixing. | ||
|
||
Note that when remixing a project, it is always necessary to specify one of its releases (by default, the latest release). When remixing a release R of project P, we will: | ||
|
||
1. Create a project P2 for the current user (private) | ||
2. Copy the description, instructions, and other information of P to P2 | ||
3. Copy the game information (source code part) of R to P2 | ||
4. Set the RemixFrom of P2 as P & R | ||
|
||
## User Story | ||
|
||
### Edit Project | ||
|
||
In addition to the actions mentioned in [Go+ Builder](./index.md), users can also perform the following actions in the editor: | ||
|
||
* Publish / Unpublish a project | ||
|
||
### View Others' Public Project Homepage | ||
|
||
Logged-in or anonymous users can visit the homepage of others' public projects to: | ||
|
||
* View basic information about the project, such as owner, name, description, instructions, remix source, etc. | ||
* View release records, such as creation time, version, description, etc. | ||
* View community interaction information of the project | ||
* Run the game, where the game content is the latest release of the project | ||
* Share the project with others | ||
* Like (if logged in) | ||
* Remix the project (if logged in) | ||
|
||
Remixing is based on the latest release of the project only when the project has releases. | ||
|
||
### View Own Project Homepage | ||
|
||
Logged-in users can visit their own project homepage to: | ||
|
||
* View basic information about the project, such as owner, name, description, instructions, remix source, etc. | ||
* View release records, such as creation time, version, description, etc. | ||
* View community interaction information of the project | ||
* Run the game, where the game content is the latest release of the project | ||
* Edit basic information about the project, such as description, instructions, etc. | ||
* Edit the game content of the project (redirect to the editor page) | ||
* Unpublish the project | ||
|
||
### View Others' Personal Homepage | ||
|
||
Logged-in or anonymous users can visit other users' personal homepage to: | ||
|
||
* View basic information about the user, such as name, description, etc. | ||
* View the list of the user's public projects | ||
* View community interaction information of the user, such as followers, followees, likes, etc. | ||
* Follow / Unfollow the user (if logged in) | ||
|
||
### View Own Personal Homepage | ||
|
||
Logged-in users can visit their own personal homepage to: | ||
|
||
* View their own basic information, such as name, description, etc. | ||
* View the list of their own public projects | ||
* View community interaction information of themselves, such as followers, followees, likes, etc. | ||
* Edit their own basic information | ||
|
||
### Access the Community Homepage | ||
|
||
Logged-in or anonymous users can access the community homepage to: | ||
|
||
* View a list of recommended public projects (based on recent likes and remixes across the platform) | ||
* View news from followed users |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,162 @@ | ||
# 社区 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 表示喜爱外,还可以方便自己日后查找。长期来看,我们也可能根据用户的 Like 信息为用户推荐内容。 | ||
|
||
### 用户 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. 可执行文件,基于源码生成的可执行文件 | ||
|
||
用户为自己的 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 | ||
|
||
## User Story | ||
|
||
### 编辑 Project | ||
|
||
除了在 [Go+ Builder Product](./index.zh.md) 中提到的编辑 Project 的动作,用户还可以在编辑器中: | ||
|
||
* Publish / Unpublish 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 等 | ||
* 编辑 Project 游戏内容(跳转到编辑器页面) | ||
* Unpublish Project | ||
|
||
### 查看他人个人主页 | ||
|
||
已登录或未登录用户可以通过访问其他 User 的个人主页: | ||
|
||
* 查看 User 的基本信息,如 Name、Description 等 | ||
* 查看 User 的公开 Project 列表 | ||
* 查看 User 的 Community 交互信息,如 Followers、Followees、Like 等 | ||
* Follow / Unfollow 该 User(若已登录) | ||
|
||
### 查看自己的个人主页 | ||
|
||
已登录用户可以通过访问自己的个人主页: | ||
|
||
* 查看自己的基本信息,如 Name、Description 等 | ||
* 查看自己的公开 Project 列表 | ||
* 查看自己的 Community 交互信息,如 Followers、Followees、Like 等 | ||
* 编辑自己的基本信息 | ||
|
||
### 访问 Community 首页 | ||
|
||
已登录或未登录用户可以访问 Community 首页: | ||
|
||
* 查看推荐的公开 Project 列表(基于全网最近的 Like 信息 & Remix 信息) | ||
* 查看关注的 User 的动态信息 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters