|
| 1 | +# Community |
| 2 | + |
| 3 | +Purpose of Building a Community: |
| 4 | + |
| 5 | +* Foster creative enthusiasm: Experience excellent projects created by others |
| 6 | +* Lower the barrier to creation: Continue creating based on other projects |
| 7 | +* Improve creative abilities: Learn how other projects implement functionalities |
| 8 | + |
| 9 | +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: |
| 10 | + |
| 11 | +* Operations related to Projects, such as publishing, running, commenting, liking, remixing, etc. |
| 12 | +* Operations related to Users, such as personal information management, following, etc. |
| 13 | +* Operations related to teams, such as creation, management, and even benefit distribution. |
| 14 | + |
| 15 | +## Basic Concepts |
| 16 | + |
| 17 | +### Follow |
| 18 | + |
| 19 | +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. |
| 20 | + |
| 21 | +In the long run, "news" may include but is not limited to: |
| 22 | + |
| 23 | +* New projects from followees |
| 24 | +* New releases from followees |
| 25 | +* New followees of followees |
| 26 | + |
| 27 | +Channels for obtaining news may include but are not limited to: |
| 28 | + |
| 29 | +* Recommended content on the follower's homepage |
| 30 | +* Message notifications (in-site messages, emails, etc.) for the follower |
| 31 | + |
| 32 | +### Like |
| 33 | + |
| 34 | +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. |
| 35 | + |
| 36 | +### User |
| 37 | + |
| 38 | +On top of the [Go+ Builder](./index.md), the basic information of a user is expanded as follows: |
| 39 | + |
| 40 | +* Description: A description of oneself |
| 41 | + |
| 42 | +### Project |
| 43 | + |
| 44 | +On top of the [Go+ Builder](./index.md), the information of a project is expanded as follows: |
| 45 | + |
| 46 | +* Description: A description of the project |
| 47 | +* Instructions: Instructions for playing the game |
| 48 | +* 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 |
| 49 | +* Thumbnail: A thumbnail image |
| 50 | +* Other community interaction-related information, such as visit counts, etc. |
| 51 | + |
| 52 | +### Release |
| 53 | + |
| 54 | +A release is a snapshot of a project's state at a certain moment, representing a fixed and immutable game content. |
| 55 | + |
| 56 | +Each project can have zero or more releases. |
| 57 | + |
| 58 | +A release includes the following information: |
| 59 | + |
| 60 | +* Version: A version number used to identify the release; for releases under the same project, the version is unique |
| 61 | +* Description: A description of the release |
| 62 | +* Game: The game content |
| 63 | +* Thumbnail: A thumbnail image |
| 64 | +* Others, such as creation time, etc. |
| 65 | + |
| 66 | +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. |
| 67 | + |
| 68 | +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: |
| 69 | + |
| 70 | +1. Source code, consistent with the game information in the project |
| 71 | +2. Executable file generated based on the source code |
| 72 | + |
| 73 | +The process of creating a release for one's own project includes: |
| 74 | + |
| 75 | +* Automatically generating (or user inputting) version and description information |
| 76 | +* Copying the game and thumbnail from the current project as the game and thumbnail of the release |
| 77 | +* Creating the release using the above information |
| 78 | + |
| 79 | +### Publish |
| 80 | + |
| 81 | +Publishing is an action that: |
| 82 | + |
| 83 | +1. If the current project is not public, sets it to public |
| 84 | +2. Allows the user to update the description, instructions, and other information of the current project |
| 85 | +3. Creates a release based on the current project |
| 86 | +4. Provides the operator with a successful publish prompt and the URL of the project page for sharing with others |
| 87 | + |
| 88 | +### Unpublish |
| 89 | + |
| 90 | +Unpublishing is an action that: |
| 91 | + |
| 92 | +1. If the current project is public, sets it to private |
| 93 | + |
| 94 | +### Remix |
| 95 | + |
| 96 | +Users can create their own projects based on other people's projects and continue editing them. This process is called remixing. |
| 97 | + |
| 98 | +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: |
| 99 | + |
| 100 | +1. Create a project P2 for the current user (private) |
| 101 | +2. Copy the description, instructions, and other information of P to P2 |
| 102 | +3. Copy the game information (source code part) of R to P2 |
| 103 | +4. Set the RemixFrom of P2 as P & R |
| 104 | + |
| 105 | +## User Story |
| 106 | + |
| 107 | +### Edit Project |
| 108 | + |
| 109 | +In addition to the actions mentioned in [Go+ Builder](./index.md), users can also perform the following actions in the editor: |
| 110 | + |
| 111 | +* Publish / Unpublish a project |
| 112 | + |
| 113 | +### View Others' Public Project Homepage |
| 114 | + |
| 115 | +Logged-in or anonymous users can visit the homepage of others' public projects to: |
| 116 | + |
| 117 | +* View basic information about the project, such as owner, name, description, instructions, remix source, etc. |
| 118 | +* View release records, such as creation time, version, description, etc. |
| 119 | +* View community interaction information of the project |
| 120 | +* Run the game, where the game content is the latest release of the project |
| 121 | +* Share the project with others |
| 122 | +* Like (if logged in) |
| 123 | +* Remix the project (if logged in) |
| 124 | + |
| 125 | + Remixing is based on the latest release of the project only when the project has releases. |
| 126 | + |
| 127 | +### View Own Project Homepage |
| 128 | + |
| 129 | +Logged-in users can visit their own project homepage to: |
| 130 | + |
| 131 | +* View basic information about the project, such as owner, name, description, instructions, remix source, etc. |
| 132 | +* View release records, such as creation time, version, description, etc. |
| 133 | +* View community interaction information of the project |
| 134 | +* Run the game, where the game content is the latest release of the project |
| 135 | +* Edit basic information about the project, such as description, instructions, etc. |
| 136 | +* Edit the game content of the project (redirect to the editor page) |
| 137 | +* Unpublish the project |
| 138 | + |
| 139 | +### View Others' Personal Homepage |
| 140 | + |
| 141 | +Logged-in or anonymous users can visit other users' personal homepage to: |
| 142 | + |
| 143 | +* View basic information about the user, such as name, description, etc. |
| 144 | +* View the list of the user's public projects |
| 145 | +* View community interaction information of the user, such as followers, followees, likes, etc. |
| 146 | +* Follow / Unfollow the user (if logged in) |
| 147 | + |
| 148 | +### View Own Personal Homepage |
| 149 | + |
| 150 | +Logged-in users can visit their own personal homepage to: |
| 151 | + |
| 152 | +* View their own basic information, such as name, description, etc. |
| 153 | +* View the list of their own public projects |
| 154 | +* View community interaction information of themselves, such as followers, followees, likes, etc. |
| 155 | +* Edit their own basic information |
| 156 | + |
| 157 | +### Access the Community Homepage |
| 158 | + |
| 159 | +Logged-in or anonymous users can access the community homepage to: |
| 160 | + |
| 161 | +* View a list of recommended public projects (based on recent likes and remixes across the platform) |
| 162 | +* View news from followed users |
0 commit comments