Skip to content
This repository has been archived by the owner on Sep 20, 2023. It is now read-only.

synchronized Account, Filesystem and Workloadsystem to current state #117

Open
wants to merge 2 commits into
base: gamedesign-pre-alpha-3
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
19 changes: 10 additions & 9 deletions Cryptic/Gamedesign/Backend/Account/Account.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
## **1.1 Account/User**

erstellt von [Allen]


>Abgeschlossen: Security, Tristan, Jannik \
Datum: 29.06.2021
Expand All @@ -9,25 +9,26 @@ Datum: 29.06.2021

### **1.1.1 OAuth2**

Wir managen die User-Accounts nicht selbst, sondern verwenden [OAuth2](https://oauth.net/2/)-Provider (z.B. Google, Discord, GitHub…). Das bedeutet, dass die Nutzer keine separate Registrierung mit E-Mail und Passwort für Cryptic benötigen.
Wir managen die User-Accounts nicht selbst, sondern verwenden [OAuth2](https://oauth.net/2/)-Provider) (z.B. Google, Discord, GitHub…). Das bedeutet, dass die Nutzer keine separate Registrierung mit E-Mail und Passwort für Cryptic benötigen.

<br>

### **1.1.2 Erster Login**

Bei dem ersten Login muss der Nutzer einen Benutzername festlegen. Dieser muss folgende Kriterien erfüllen:
Bei dem ersten Login muss der Nutzer einen Benutzernamen festlegen. Dieser muss folgende Kriterien erfüllen:

* RegEx: [a-zA-Z0-9]{4,32}
* Länge zwischen 4 und 32 Zeichen
* Darf nur Buchstaben (a-z, A-Z) und Zahlen (0-9) enthalten
* Derselbe Benutzername darf nicht mehrfach vergeben werden
* Kein Name von der [Blacklist](../Filesystem/Filesystem.md#144-blacklist)

* Länge zwischen 4 und 32 Zeichen
* Darf nur Buchstaben (a-z, A-Z) und Zahlen (0-9) enthalten
* Derselbe Benutzername darf nicht mehrfach vergeben werden
* Kein Name von der Blacklist

<br>

### **1.1.3 Benutzerverwaltung**

* Der Benutzer kann seinen Nutzernamen monatlich 1x ändern
* Anforderungen s. [Erster Login](Account.md#112-erster-login)
* [zukünftig: Der Benutzer kann seinen Nutzernamen monatlich 1x ändern]

<br>

Expand Down
28 changes: 10 additions & 18 deletions Cryptic/Gamedesign/Backend/Filesystem/Filesystem.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,27 +23,25 @@ Anm. Devs: (PC mit mehreren Festplatten)
* Ordner können weitere Ordner und Dateien enthalten.
* Ordner sind vom Spieler zu benennen: - auch beim Umbenennen beachten
* kein Name von der [Blacklist](Filesystem.md#144-blacklist)
* 1 bis 32 Zeichen im Namen
* Namen dürfen nur Buchstaben, Ziffern und `.-_` enthalten. (ASCII 45-46, 65-90, 95, 97-122)
* RegEx: [a-zA-z0-9.\-_]{1,32}
* 1 bis 32 Zeichen im Namen
* Namen dürfen nur Buchstaben, Ziffern und \`.-_\` enthalten. (ASCII Großbuchstaben, Kleinbuchstaben, Punkt, Unterstrich, Minus, Ziffern (0-9) - die Namen “..” und “.” sind Verboten

* Ordner können verschoben werden (mit Inhalt).
* Ordner können gelöscht werden. Im Ordner enthaltene Dateien und Ordner werden dann rekursiv gelöscht.
* Ordner können kopiert werden (mit Inhalt, nur vollständig)
* Ordner können umbenannt werden.
* Ordner können sichtbar oder unsichtbar sein.
* Es kann abgerufen werden, welche Ordner und Dateien in einem Ordner enthalten sind (nicht rekursiv).
* Art (Ordner/Datei), Stufe und Name
* Art (Ordner/Datei), Rechte und Name

<br>

### **1.4.2 Text-Dateien**

* Dateien enthalten Texte.
* Inhalte werden auf Blacklist-Begriffe geprüft.
* Es sind alle gängigen Buchstaben, Zahlen und Sonderzeichen zulässig (Inhalt der Datei). UTF-8
* Dateiname ist vom Spieler anzugeben:
* kein Name von der [Blacklist](Filesystem.md#144-blacklist)
* 1 bis 32 Zeichen im Namen
* Namen dürfen nur Buchstaben, Ziffern und `.-_` enthalten. (ASCII 45-46, 65-90, 95, 97-122)
* Inhalte werden auf [Blacklist](Filesystem.md#144-blacklist)-Begriffe geprüft.
* Inhalt muss UTF-8 konform sein.
* Dateien sind vom Spieler zu benennen:
* Siehe [1.4.1 Ordnerstruktur](Filesystem.md#141-ordnerstruktur)
* Dateien können sichtbar oder unsichtbar sein, siehe <span style="text-decoration:underline;">1.6.1.1.5.2 Stufensystem</span>
Expand All @@ -54,12 +52,7 @@ Anm. Devs: (PC mit mehreren Festplatten)
* Der Inhalt einer Datei kann vom Spieler abgerufen werden.
* Der Inhalt einer Datei kann vom Spieler geändert werden. Abhängig vom Rechtesystem - siehe <span style="text-decoration:underline;">1.6.1.1.5 Benutzerverwaltung</span>
* Die Dateigröße kann vom Spieler abgerufen werden, abhängig von Rechten.
* Während der Bearbeitung kann mit der Datei weiter agiert werden.
* während der Bearbeitung wird bearbeitet: jede Bearbeitung wird gespeichert, die letzte ist dann die letzte
* während der Bearbeitung wird gelöscht: Die Bearbeitung ist eine neue Datei mit gleichem Namen an alter Stelle (wenn genug Speicherplatz)
* während der Bearbeitung wird verschoben: An der alten Stelle wird die Bearbeitung als neue Datei gespeichert. (wenn genug Speicherplatz)
* Der Inhalt einer Datei darf max. 1’800 Zeichen betragen ``(ThisIsForGameParameters /filesystem/file/maxcharsperfile)``

* Der Inhalt einer Datei darf max. 1’800 Zeichen betragen
<br>

### **1.4.3 Speichernutzung**
Expand All @@ -70,9 +63,8 @@ Anm. Devs: (PC mit mehreren Festplatten)
* 1.000 TB = 1 PB
* Es können nur Ordner und Dateien angelegt werden, wenn Platz auf der verbauten Hardware (ingame Festplatte) ist.\
Anm. Dev: (Speicherbedarf bevor der Aktion ausrechnen) (Jede Festplatte einzeln betrachtet)
* Ordner verbrauchen jeweils 1 MB (Ingame) ``(ThisIsForGameParameters /filesystem/folder/needsspace)``
* Dateien verbrauchen je begonnene 20 Zeichen 5 MB (Ingame) ``(ThisIsForGameParameters /filesystem/file/needspaceper20chars)``

* Ordner verbrauchen jeweils 1 MB (Ingame)
* Dateien verbrauchen je begonnene 20 Zeichen 5 MB (Ingame) \
**Vorgehensweise:**

Anzahl Zeichen | Speicher in MB
Expand Down
11 changes: 11 additions & 0 deletions Cryptic/Gamedesign/Backend/Kryptowaehrung/Kryptowaehrung.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
## **1.2 Kryptowährung**

erstellt von [Marius]

Die Kryptowährung im Spiel heißt “Morphcoin” (Abgekürzt: MC).

* Die Währung ist global im Spiel gültig
* Es ist eine pseudo Ingame-Kryptowährung (Zahlung oder Transferierung mit/in Echtgeld ist ausgeschlossen!)
* Die Währung dient ingame als Zahlungsmittel.
* Die Währung wird mit 3 Nachkommastellen angegeben. Beispiel: 0,006 MC
* Die Gesamtmenge an MC ist unbegrenzt *[kann sich zu einer späteren Version ändern]*
146 changes: 146 additions & 0 deletions Cryptic/Gamedesign/Backend/Wallet/Wallet.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,146 @@
## **1.3 Wallet**

erstellt von [Marius, Tristan]

### **1.3.1 Allgemein**

Das Wallet ist an den [Spieler-Account](../Account/Account.md#11-accountuser) gebunden. Es ist für Fremde nicht angreif-
oder sichtbar. Der Owner kann auf die Wallets zugreifen, indem er das Terminal oder die Wallet-App nutzt. Eine
Authentifizierung ist nicht mehr nötig. Ein Hacker kann „Geld klauen", indem er die Befehle zum Kontostand auslesen und
Geld überweisen untergräbt/hackt. Er hat keinen direkten Zugriff auf das Wallet, sondern nur die Möglichkeit, den Owner
zu imitieren und damit eine „gehackte Transaktion durchzuführen". Siehe [Kapitel 1.6.2.5.5]() Wallet hacken.

### 1.3.2 Detailliert

* Das Wallet wird genutzt, um die Währung “[Morphcoin](../Kryptowaehrung/Kryptowaehrung.md#12-kryptowhrung)” sowie eine
Transaktionshistorie und Einstellungen zu speichern.
* Das Wallet besitzt eine UUID als Adresse (analog IBAN). Über diese wird Geld gesendet und empfangen.
* Das Wallet ist an den Spieler-Account gebunden.
* Nur der Spieler selber kann ein Wallet erstellen oder löschen.
* Das Erstellen oder Löschen kann nur von einem eigenen, laufenden PC aus getätigt werden.
* Wallet kann nicht übertragen werden.
* Nur der Owner hat vollen Zugriff auf das Wallet. Über das Terminal kann die Transaktionsmechanik des Wallets
gehackt werden (siehe [Wallet hacken]())


* Der Spieler kann bis zu x Wallets gleichzeitig besitzen.
* Alle Wallets können auf allen eigenen Computern verwaltet werden


* Definition Wallet-Name
* Name wird manuell durch den Spieler vergeben
* Kein Name von der [Blacklist](../Filesystem/Filesystem.md#144-blacklist)
* Regex: [A-Za-z]{3,12}
* 3 bis 12 Zeichen (Buchstaben a-z/A-Z)
* Name darf jederzeit geändert werden


* Zum ersten Spieleintritt ist kein Wallet vorhanden.
* Der Spieler muss Wallets manuell erstellen.
* Voraussetzung: Computer muss eingeschaltet bzw. das OS muss vollständig [gestartet]() sein. Unabhängig auf welchem
eigenen Computer.


* Auf dem Wallet kann ein Überweisungslimit von 1.000 bis {+inf} MC pro Tag eingestellt werden. Das Überweisungslimit
greift immer.
* Default-Limit: 1.000 MC / Tag
* Das Limit ist in 500er Schritten anzugeben
* Das Überweisungslimit kann alle 2 Tage verändert werden
* Nur der Owner kann diese Einstellung tätigen.


* Jedes Wallet besitzt eine Sicherheitszahl. Standard 1 bis 3
* Sicherheitszahl wird vom System generiert bei Angriff eines Hackers, s. Kapitel [Wallet hacken]()
* Für 500 MC kann der Spieler die Sicherheitszahl für 24 Stunden auf 1 bis 4 erhöhen. Nach Ablauf der Zeit fällt die
Zahl auf 1 bis 3 zurück.


* Einstellungen müssen für jedes Wallet einzeln vorgenommen werden.m9
* Einstellungsänderungen werden mit Unix Timestamps geloggt


* Von allen Wallets die man besitzt, kann folgendes jeweils abgefragt werden:
* Kontostand
* Wallet-UUID
* Transaktionshistorie
* Einstellungsänderungen


* Folgen des Löschens des Wallets:
* Der User verliert damit den Zugang zum Wallet.
* Alle Verbindungen zum Miner, Hardware-Shop, Wallet-App, usw. werden getrennt
* Das Wallet wird mit Inhalt (Morphcoins + UUID + Historie) unwiderruflich gelöscht

### 1.3.3 Transaktionen

* Voraussetzungen:
* Spieler A und Spieler B besitzen jeweils mindestens ein Wallet
* Die [Computer]() von Spieler A und Spieler B sind beide eingeschaltet


* Transaktionen können nur ausgeführt werden:
* wenn der [Netzwerktreiber]() läuft und eine Netzwerkverbindung zwischen Sender und Empfänger besteht.
* wenn die gewählte Summe MC auf dem gewählten Wallet vorhanden ist
* Transaktionen können vom Besitzer des Wallets ausgeführt werden. Hacker können über eine
Hackerattacke ([Wallet hacken]()) eine Transaktion ausführen.


* Ein Hacker kann die Transaktionsmechanik untergraben und somit als “Nicht-Owner” Geld von dem Wallet senden. Er hat
dabei keinen direkten Zugriff auf das Konto, sondern nur auf die Transaktionsmechanik.

#### 1.3.3.1 Transaktionen von Spieler zu Spieler

* Es sind Transaktionen unter Spielern möglich (Geld überweisen).
* Es können MCs von Wallet zu Wallet transferiert werden. Auch an eigene Wallets \
**Absender:**\
Folgende Angaben macht der Spieler selbst:
* Angabe des Ziel-Wallets mit der Wallet-UUID
* Angabe der Summe [Gleitkommazahl]
* Optional: Nachricht [Text]
* RegEx: [A-Za-z0-9,. ]{0,150}
* max. 150 Zeichen
* Buchstaben (a-z, A-Z) und Zahlen 0-9, Leerzeichen und Punkt “.”
* Wörter mit [Blacklist](../Filesystem/Filesystem.md#144-blacklist) prüfen
* Zeitstempel Absenden wird automatisch gesetzt.\
\
**Empfänger:**
* Absender Wallet-UUID
* Empfänger Wallet-UUID
* Summe in MC
* Zeitstempel Empfangen wird automatisch gesetzt
* Optional: Nachricht des Absenders [Text]

#### 1.3.3.2 Transaktionen zwischen Spielern und System-Servern

* Es sind Transaktionen mit dem [Hardware-Shop]() möglich (Teile kaufen)
* Es sind Transaktionen mit dem [Versanddienst]() möglich (Versand für Hardware zahlen)
* Es sind Transaktionen mit dem [Inventar]() möglich (Teile verkaufen)
* Es sind Transaktionen mit [versteckten]() oder [öffentlichen Netzwerken]() möglich (Für Zugriff zahlen).
* Es können MCs von Wallet zu Service transferiert werden.\
\
**Transaktion wird automatisch ausgeführt.**\
Folgende Informationen erhält der Spieler:
* Abgebucht/Überwiesen von: z.b. Hardware-Shop
* Summe in MC z.b. Betrag der Hardwareteile
* Autom. Nachricht [Text] zb Name und Anzahl der Hardwareteile
* Zeitstempel Absenden im Unix Timestamp wird automatisch gesetzt

#### 1.3.3.3 Transaktionen von Miner an Spieler

* Es werden Morphcoins vom [Miner]() zum Wallet transferiert.\
\
**Empfänger:**
* Empfänger ist immer der User
* Absender Miner von Computer X
* Empfänger Wallet-UUID Spieler
* Summe in MC
* Zeitstempel Empfangen im Unix Timestamp wird automatisch gesetzt
* Autom. Nachricht [Text] Miner leeren

* Absender ist der Miner

### 1.3.4 Transaktionshistorie

* Die letzten 30 Transaktionen werden chronologisch gespeichert und können abgerufen werden (Transaktionshistorie).
* Transaktionen, die durch Hacks ausgeführt wurden, werden in der Historie gesondert gekennzeichnet.
* Die letzten 15 Einstellungsänderungen werden chronologisch gespeichert und können abgerufen werden.
Loading