Skip to content
Snippets Groups Projects
Commit 94f66e1f authored by Marius Herget's avatar Marius Herget
Browse files

award badge howto
parent 6939baa4
No related branches found
No related tags found
1 merge request!50Badge Award API HowTo
docs/img/backoffice_assign_badge.jpg

16.5 KiB

docs/img/backoffice_redeem_badges.jpg

66.1 KiB

docs/img/cp_getBadge.png

8.02 KiB

...@@ -22,6 +22,7 @@ This tutorial is "work in progess", hence its worth checking it from time to tim ...@@ -22,6 +22,7 @@ This tutorial is "work in progess", hence its worth checking it from time to tim
* 2020-12-22: World-Exit added. * 2020-12-22: World-Exit added.
* 2020-12-22: Cross-Assembly Links added. * 2020-12-22: Cross-Assembly Links added.
* 2020-12-25: Added [exitUrl List](exitUrls.en.md) * 2020-12-25: Added [exitUrl List](exitUrls.en.md)
* 2020-12-27: Award Badge added.
## Known Bugs ## Known Bugs
Following bugs are known and worked on: Following bugs are known and worked on:
...@@ -136,6 +137,11 @@ Tiled provides custom collision shapes for tiles, however these are ignored by o ...@@ -136,6 +137,11 @@ Tiled provides custom collision shapes for tiles, however these are ignored by o
![](img/cp_collides.png) ![](img/cp_collides.png)
##### Award badges
You can award badges when stepping on certain tiles. To do this, give the layer the property "getBadge" (string). Use https. The token is a map token, which can be generated in the Backoffice for each badge.
![](img/cp_getBadge.png)
### Animated Tiles ### Animated Tiles
Tiles can be combined to animations (loops), for example to make floating water or bliking lights look better. Therefore all frames need to be a single 32x32 tile. Tiles can be combined to animations (loops), for example to make floating water or bliking lights look better. Therefore all frames need to be a single 32x32 tile.
Create animations by editing the tileset, click on the tile to animate (or pick a free tile to not overwrite existing ones) and click on the animation editor: Create animations by editing the tileset, click on the tile to animate (or pick a free tile to not overwrite existing ones) and click on the animation editor:
......
...@@ -141,6 +141,11 @@ Um Tiles als undurchgängig zu markieren, müsst ihr diese im Tileeditor öffnen ...@@ -141,6 +141,11 @@ Um Tiles als undurchgängig zu markieren, müsst ihr diese im Tileeditor öffnen
![](img/cp_collides.png) ![](img/cp_collides.png)
##### Award badges
Ihr könnt Badges an User vergeben, wenn diese ein bestimmten Tile betreten. Analog zu Start und Exit Layern legt ihr ein Layer dafür an, setzt Tiles an die entsprechenden Stellen und gebt dem Layer die custom property "_getBadge_" (string). Verwendet https! Ein Token könnt Ihr für jedes Badge im Backoffice generieren. Es funktioniert jedoch nur ein **Map** Redeem Token.
![](img/cp_getBadge.png)
### Animationen ### Animationen
Tiles können zu Animationen (Loops) zusammengeführt werden, um z.B. fließendes Wasser oder blinkende Lichter darzustellen. Dazu müssen alle "Frames" einer Animation jeweils ein eigenes 32x32 Tile sein. Tiles können zu Animationen (Loops) zusammengeführt werden, um z.B. fließendes Wasser oder blinkende Lichter darzustellen. Dazu müssen alle "Frames" einer Animation jeweils ein eigenes 32x32 Tile sein.
Bearbeitet dazu in Tiled das Tileset, wählt das zu animierende Tile (oder ein beliebiges leeres Tile) aus und klickt auf den Animation Editor: Bearbeitet dazu in Tiled das Tileset, wählt das zu animierende Tile (oder ein beliebiges leeres Tile) aus und klickt auf den Animation Editor:
......
...@@ -105,9 +105,71 @@ Badges are distributed to users via token. A matching token can be generated whe ...@@ -105,9 +105,71 @@ Badges are distributed to users via token. A matching token can be generated whe
Users will find collected badges in their profile. Users will always have to actively accept a badge - who wants to suddenly find a pink dolphine vibrator in their profile? Users will find collected badges in their profile. Users will always have to actively accept a badge - who wants to suddenly find a pink dolphine vibrator in their profile?
##### Assign directly via Backoffice
Within the backoffice Badges can be directly assigned to users.
![](img/backoffice_assign_badge.jpg)
##### Create Redeem Tokens
When automaticly assigning badges to users, Redeem Tokens (TM) are necessary. There are four types of Redeem Tokens:
* **One-Time**: The token can be used exaclty once.
* **Permanent**: The token can be used an unlimited amount of time.
* **Map**: The token can be only used in rc3 World Maps.
* **Limited**: The token can be used an n amount of time.
![](img/backoffice_redeem_badges.jpg)
These can be created via the Backoffice (see image) or via API:
Just send a REST POST Request to `/api/c/<conference_slug>/assembly/<assembly>/badges/new_redeem_token` with the following body:
```
{
issuing_token: <secret_issuing_token>,
badge_class: <private|public|map|limited>,
amount: <int>
}
```
_`amount` is only necessary if you create a limited redeem token._
#### How to distribute badges to the users? #### How to distribute badges to the users?
API endpoints will exist soon. You can award badges to individual users in the maschinenraum, too. ##### Using Redeem Tokens to get the badge
Badges can be distributed via the Redeem Tokens.
###### User adds it via the frontend
A user can go to his profile (`/<conference_slug>/me`) and redeem a token in "My badges".
A url is available to auto-fill in the token input field: `/<conference_slug>/me/redeem_badge/<redeem_token>`.
When a user redeems a badge via the frontend, it is automatically accepted and set to private on his profile.
###### Automaticly assign a badge to a user via the API
An API is provided to automatically assign a badge to an user. These badges need to be accepted by the user (`/<conference_slug>/me/manage_badges`).
Just send a REST POST Request to `/api/c/<conference_slug>/badges/redeem_token` with the following body:
```
{
token: <redeem_issuing_token>,
username: <username>
}
```
##### Using the rc3.world map to assign badges
In the rc3.world map a tile can be linked to assigning a badge. It works simiar to opening a website. Zou need to generate a Map Redeem Token.
![](img/cp_getBadge.png)
##### API Repsonse
The API always answaers the following when a badge is sucessfully assigned:
```
{
"badge": <badgename>,
"user": <username>,
"created": <True if the badge has been assigned the first time>
}
```
## Any More Questions? ## Any More Questions?
Please send any questions not covered here to the Assembly Team: [rc3@c3assemblies.de](mailto:rc3@c3assemblies.de) Please send any questions not covered here to the Assembly Team: [rc3@c3assemblies.de](mailto:rc3@c3assemblies.de)
...@@ -118,3 +180,4 @@ There is separate documentation for channels and connected questions: [c3voc.de/ ...@@ -118,3 +180,4 @@ There is separate documentation for channels and connected questions: [c3voc.de/
In case of questions regarding streams please contact: In case of questions regarding streams please contact:
recommended: IRC, #voc-lounge im Hackint.eu recommended: IRC, #voc-lounge im Hackint.eu
possible: [voc@c3voc.de](mailto:voc@c3voc.de) possible: [voc@c3voc.de](mailto:voc@c3voc.de)
\ No newline at end of file
...@@ -111,9 +111,73 @@ Badges werden via Token an die User:innen verteilt. Ein passendes Token kann bei ...@@ -111,9 +111,73 @@ Badges werden via Token an die User:innen verteilt. Ein passendes Token kann bei
Gesammelte Badges finden User:innen in ihrem Profil. User:innen müssen den Erhalt der Badges immer aktiv bestätigen - wer möchte schon plötzlich einen rosafarbenen Delphin-Vibrator im Profil vorfinden? Gesammelte Badges finden User:innen in ihrem Profil. User:innen müssen den Erhalt der Badges immer aktiv bestätigen - wer möchte schon plötzlich einen rosafarbenen Delphin-Vibrator im Profil vorfinden?
#### Badges verteilen ##### Direktzuweisung im Backoffice
API Endpunkt existiert in Kürze, alternativ können Badges individuell im Maschinenraum an Nutzer verteilt werden. Im Backoffice können Badges direkt an User vergeben werden.
![](img/backoffice_assign_badge.jpg)
##### Erstellung von Redeem Tokens
Zum sonstigen Vergeben von Badges wind Redeem Tokens (TM) notwending. Es gibt vier verschiedene Klassen:
* **One-Time**: Dieses Token ist exakt einmal einlösbar.
* **Permanent**: Dieses Token ist unendlich oft einlösbar.
* **Map**: Dieses Token ist kann nur in rc3.World maps eingelöst werden.
* **Limited**: Dieses Token ist exakt n-mal einlösbar.
![](img/backoffice_redeem_badges.jpg)
Diese Redeem Tokens können im Backoffice (siehe Bild) oder per API erstellt werden:
REST POST Request to `/api/c/<conference_slug>/assembly/<assembly>/badges/new_redeem_token` mit dem folgenden body:
```
{
issuing_token: <secret_issuing_token>,
badge_class: <private|public|map|limited>,
amount: <int>
}
```
_`amount` ist nur notwending, wenn Ihr ein Limited Redeem Token erstellen wollt._
#### Wie können Badges an User vergeben werden?
##### Redeem Tokens einlösen
Mit Redeem Tokens können Badges verteilt werden.
###### User löst es im Frontend ein
Ein Benutzer kann ein Redeem Token in seinem Profil (`/<conference_slug>/me`) einlösen unter "Meine Badges".
Eine URL zum automatischen ausfüllen von diesem Feld (z.B. für QR Codes) wird bereitgestellt: `/<conference_slug>/me/redeem_badge/<redeem_token>`.
Wenn ein Benutzer einen Badge im Frontend einlöst, wird dieser Badge automatisch akzeptiert und taucht in seinem Profil als "Privat" auf.
###### Automatisches Zuweisen von Badges mit der API
Es wird eine API bereitgestellt, mit der Badges einem Benutzer zugewiesen wrden können. Diese Badges müssen vom Benutzer manuell akzeptiert werden (`/<conference_slug>/me/manage_badges`).
REST POST Request: `/api/c/<conference_slug>/badges/redeem_token`
Body:
```
{
token: <redeem_issuing_token>,
username: <username>
}
```
##### Badges in der rc3.world zuweisen
In der rc3.world map kann ein Tile zu einem Badge verlinkt werden. Wenn der Benutzer dieses Teil betritt, bekommt er automatisch den Badge zugewiesen. Es funktioniert ähnlich wie das öffnen einer Website. Es muss ein Map Redeem Token benutzt werden.
![](img/cp_getBadge.png)
##### API Antwort
The API antwortet immer mit dem folgenden JSON Objekt.
```
{
"badge": <badgename>,
"user": <username>,
"created": <True wenn das Badge zum ersten Mal dem User zugewiesen wurde>
}
```
## Noch Fragen? ## Noch Fragen?
Bitte stellt übrige Fragen an das Assembly-Team: [rc3@c3assemblies.de](mailto:rc3@c3assemblies.de) Bitte stellt übrige Fragen an das Assembly-Team: [rc3@c3assemblies.de](mailto:rc3@c3assemblies.de)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment