Giter Club home page Giter Club logo

dbp-game's People

Contributors

alexanderaltemoeller avatar andreasschroeder avatar christianreinhard avatar juliankniephoff avatar krueter-uos avatar lukaskalbertodt avatar p-pfeiffer avatar

Stargazers

 avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dbp-game's Issues

Maintainance-Skripte

Wir haben ja jetzt nicht die Möglichkeit, Prozesse im Hintergrund laufen zu lassen, die ständig gucken, ob gerade ein Kampf oder eine Forschung fertig ist. Das wäre zwar nett, und wenn am Ende noch Zeit ist, wäre das schön, wenn das jemand machen könnte,

Also müssen wir gucken, wann wir solche Aktionen ausführen können. Code in unserer Rails App láuft nur, wenn irgendein Nutzer die App aufruft. Als erste Näherungslösung wäre es also vielleicht gut, wenn wir bei jedem Aufruf der Seite gewisse Maintainance-Skripte laufen lassen könnten.

Jemand muss recherchieren, wie das geht und möge das dann erstmal hier rein schreiben.

Stichworte sind:

  • ApplicationController
  • before_filter bzw. before_action

Für später vielleicht: TRIGGER.

UI: Dynamic Menubar

Das Menü sollte dynamisch erweiterbar sein. Das Menü sollte sich aus der Datenbank Informationen laden um zu wissen wie viele Punkte im Menü angezeigt werden sollen. "link_to" und Iconreferenz sollte ebenfalls vorhanden sein.

Schiffe verkaufen

Funktion zum Schiffe verkaufen/zerstören einfügen.
Ggf mit rückgabe von Rohstoffen.

Bauplätze Schiffe

Zu den Schiffen müsste das Management bezüglich der Ausbauplätze noch erstellt werden.

Schiffsnamen Typ

@MarenSteinkamp

Der Typ wenn man ein Schiff erstellt sieht mir nach einem Text aus und nicht nach einem String, somit sind Absätze erlaubt. Könnte man eventuell überdenken.

Layout geht bei Falscheingaben kaputt

Wenn man bei der Registrierung ein zu kurzes Passwort eingibt, oder man das Passwort mit dem zweiten Feld falsch bestätigt, dann rutscht das Feld an den linken Rand des Layouts und sieht kaputt aus.
Zudem haben wir den Fehler auch in der Forschung festgestelt, nachdem wir eine Namensvalidierung ergänzt haben und diese getestet haben. Daher gehen wir davon aus, dass das ein allgemeines Problem im Layout ist.

Seed-Daten

Es gibt ja so "Referenz-Tabellen" wie sciences, die sich während des Spiels eigentlich nicht ändern. Diese will man beim Testen oder Deployen nicht jedes mal neu Einpflegen, also muss jemand ein Skript oder sowas ähnliches schreiben, was diesen Schritt automatisiert.

Stichwörter, die ihr da mal recherchieren könnt ist:

  • Rails seed data
  • Vielleicht kann man auch fixtures dafür benutzen.

Interessant, aber erstmal nicht so wichtig, ist dann noch der umgekehrte Schritt: Wenn man diese Tabellen jetzt doch aus der App heraus bearbeitet, wie kann man dann irgendwie automatisiert aus den Tabellen dieses Seed-Skript erstellen.

GameDesign - Schiffe Attribute

Basisbauzeit = Gesamtkosten * 2 min
Treibstoffverbrauch = [Abstandsmaß] * ([Hüllenmaße] + [Frachtraum])
Geschwindigkeit 8 = 1h Mindestdauer

!Achtung Tabelle geht nach rechts weiter!

Einheit Metall (Faktor 500) Kristall (Faktor 500) Treibstoff (Faktor 500) Gesamtkosten Beschreibung Hülle (Faktor 1000) Angriff (Faktor 10) Frachtraum (Faktor 100) Geschwindigkeit
Wertrate 1 2 4
Raketenwerfer 2 2 Standart Anlage 2 1
Spionagedrohne 2 10 Bringt information über Gegner 1 1 128
mob. Schildgenerator 4 1 8 Schützt eigene Einheiten 5 4
Schild klein 50 100 250 Schützt eigenes Schiff 100
Schild groß 200 400 1000 Schützt eigenes Schiff 500
EMP-Schiff 400 100 800 möglichekit im Kampf Schild zu zerstören 100 20 120 1
Bombenteleporter 250 100 650 Bonus gegen orbitale Waffenplattform. 100 50 100 1
Transporter klein 5 2 9 Ressourcen transport 2 80 4
Transporter groß 20 8 36 Ressourcen transport 8 400 8
Expeditionsschiff 40 10 80 Bringt event bei Aussenden 50 2 400 8
Jäger 2 1 4 LASER 1 1 2 8
Fregatte 20 10 40 LASER 10 12 5 8
Kreuzer 20 40 100 ION 10 50 8 4
Zerstörer 200 100 400 KINETIK 200 500 20 4
Bomber 20 10 60 KINETIK 20 10 5 1
Solarpanel 2 1 8 erhöht Energie 1
Lasergeschütze klein 3 1 5 2 2
Lasergeschütze groß 12 4 20 10 10
Ionenbeschleuniger klein 2 3 8 4 4
Ionenbeschleuniger groß 8 12 32 20 20
Massenbeschleuiniger 80 20 120 80 80
orbitale Waffenplattform 100 200 1800 1000 10000
Geheimwaffe 500 1000 5000 ??? 2000 1

Kampfsystem

Kampfablauf
1.Phase: Spionagephase

  • Verteidigende Armee feuert einmal auf angreifende Spionagesonden (weitere angreifende Schiffe werden in dieser Phase ignoriert)
  • Trefferchance ist abhängig von Spionageforschungsunterschied der beiden Spieler
  • Leben noch angreifende Spionagesonden, dann wird ein Spionage-Event gestartet
  • Die angreifende Spionagesonden verlassen den Kampf und fliegen zurück

2.Phase: Schildphase I

  • X entspricht der Anzahl der angreifenden EMP-Schiffe mit der Formel (1-1/(x_0.1+1))_0.5 wird die Trefferwahrscheinlichkeit (0.1) bestimmt
  • Trifft das EMP-Schiff, fällt das Schild der Verteidiger auf 0

3.Phase: Schildphase II

  • Phase 2 analog für Verteidiger

4.Phase: Angriffsphase

  • Angreifer beginnen
  • Trefferchance auf eine Zielgruppe ist proportional Abhängig von der Gruppe der Zielhülle von der Gesamthülle der Angreifer/ Verteidiger. Der Zufallstrefferwurf würfelt von 0 bis 1+"Misschance"
    Jeder roll über 1 ist automatisch ein "Miss"
  • Jede Einheitsgruppe schießt random auf eine Zielgruppe, wobei „Miss“ eine weitere Zielgruppe ist. Bei einem Treffer wird die Schadenssumme der Angreifer und die Hülle der Getroffenen so verrechnet, dass je ein Schiff von 100% auf 0 durch fokussiert wird
  • Solange Schild aktiv, bestehen die Zielgruppen nur aus „Miss“ und „Schild“, danach kommen alle Streitkräfte hinzu. Hinzufügen der weiteren Streitkräfte nur nach einer vollendeten Runde
  • Overkill einer Zielgruppe wird nicht berücksichtigt
  • Abwechselnd beginnt nun der Verteidiger mit Phase 4
  • Kampfabbruch bei zu langen Kämpfen (Unentschieden)
  • Misschance 30% - 1% pro Pilotentraining (Bei Schildphase halbiert)

Datenbank-Schema

Irgendwo sollte ein oder mehrere ER-Diagramme liegen, die das Datenbank-Schema beschreiben.

Das muss jetzt nicht ein riesiges Bild sein, sondern kann sich auf bestimmte Aspekte des Systems einschränken, z.B. "User und all seine (direkten) Relationships". Dann sollten alle diese Bilder zusammen allerdings das ganze System beschreiben.

Controller absichern um min. ein Schiff zu besitzen

Bitte fügt dies:

if current_user.activeShip == nil 
    redirect_to :controller => 'ships', :action => 'new'
end

in all eure Controller actions ein, damit sofern kein Ship ausgewählt ist ein neues erstellt wird, welches automatisch zu eurem aktuellen wird.

Erweiterung Schiffe

Kosten für das kaufen von Schiffen, sitzen der grenze von möglichen Schiffe (9) und implementieren einer Fehlerbehandlung falls SchiffsID = Nil

Teilnehmerliste

Mit schrecken musste ich feststellen, dass ich auch zwei Tage nach der Aufforderung immer noch nur 5 von 17 GitHub-Namen bekommen habe.

Alle, die mir noch nicht ihren GitHub-Benutzernamen per E-Mail geschickt haben, tragen diesen zusammen mit ihrem richtigen Namen bitte möglichst in alphabetischer Reihenfolge in diese Wiki-Seite ein.

Implementation: Forschungen

Folgende Forschungen sollten mit den angegebenen Bedingungen und Mechaniken eingebaut werden:

Forschungen sind spielerbezogen und schiffsübergreifend. Sie starten auf Level 0, haben Ressourcenkosten in Mineralien und Kristallen sowie eine Entwicklungszeit. Anfangs kann auf jedem Mutteschiff immer nur eine von den anderen getrennte Forschung entwickelt werden, ein Upgrade schaltet jedoch frei, dass die Forschungseffizenz von mehreren Mutterschiffen kombiniert werden kann (Netzwerktechnologie)
Boni aus mehreren Entwicklungsleveln verhalten sich additiv.
Um Level 1 erforschen zu können, sind teilweise Level auf anderen Forschungen benötigt.

  • Waffenforschungen:
    -- Laser, +10% Schaden aller Laserwaffen (benötigt Forschungsstation 2, Tier 1)
    -- Ionen, +10% Schaden aller Ionenwaffen (benötigt Laser 10 & Forschungsstation 6, Tier 2)
    -- Kinetik, +10% Schaden aller kinetischen Waffen (benötigt Ionen & Forschungsstation 10 10, Tier 3)
  • Energieschild, +10% zu allen Schildwerten (benötigt Hülle 10, Ionen 2 und Forschungsstation 8, Tier 2)
  • Hülle, +10% zu allen Hüllenwerten (benötigt Forschungsstation 2, Tier 1)
  • Triebwerkstuning, verringert Treibstoffverbrauch der Flugstrecken (benötigt Hülle 4 und Forschungsstation 4, Tier 2)
  • Netzwerktechnologie, pro Stufe kann ein weiteres Mutterschiff an einer Forschung kooperieren (benötigt Spionage 12 und Forschungsstation 12, special tier)
  • Spionage, beeinflusst das Spionage-Event, welches im Kampf auftritt (benötigt Forschungsstation 2, Tier 1)
  • Pilotentraining, beeinflusst Trefferchance während des Kampfes (benötigt Triebwerke 4 und Forschungsstation 8, Tier 3, capped auf 20)
  • Pioniersausbildung, erhöht die maximalanzahl von Mutterschiffen um 1 pro Stufe, capped auf 6. (benötigt Pilotentraining 8 und Forschungsstation 12, special tier)

Forschungszeit: 2 ^ x wobei (x = Tier + aktuelle Stufe - 1) Minuten
Die beiden Forschungen des special tiers haben eine Basiszeit für Stufe 1 von 24 Stunden

GameDesign - Stationen Stats

Station Kosten Metal. Kosten Kristall. Kosten Treibstoff. Gesamtkosten
Scanner Metall 4 1 6
Scanner Kristall 2 2 6
Scanner Treibstoff 2 1 6
Forschungsstaion 2 1 8
Baugebäude 2 1 4
Werft 4 1 8
Erweiterungsplattform 8 2 16
Ressourcenlager Metall 3 1 5
Ressourcenlager Kristall 1 2 5
Ressourcenlager Treibstoff 1 1 5
Ressourcentresor Metall 6 2 10
Ressourcentresor Kristall 2 4 10
Ressourcentresor Treibstoff 2 2 10
Energiegenerator 1 1 6
Verbrennungsgenerator 4 1 8
Reparaturgebäude 8 4 16

Code conventions

Jemand könnte sich mal Gedanken zu coding conventions machen. Das heißt entweder einen Style Guide raussuchen oder sich selbst Regeln für alles mögliche überlegen (das ist die schlechtere Variante).

Sachen, die mir beim sichten des ersten (richtigen) PRs aufgefallen sind:

  • Einrückung! Spaces? Tabs? Wie viele?
  • Klammern sind in Ruby ja nicht immer nötig, wollen wir sie trotzdem immer benutzen? Oder nur in bestimmten Situationen?
  • Code conventions betreffen auch HTML und CSS!
  • Wie setzen wir die geschweiften Klammern in CSS? Java-Style?

Dieses Issue kann gerne zum Sammeln weiterer Punkte genutzt werden.

Wer sich dieser Aufgabe annimmt, sollte auch mal recherchieren, wie man diese conventions zu einem gewissen Grad erzwingt. Dazu kann man z.B. mal gucken, wie man Konfigurationsdateien für bestimmte Editoren in das Repository tun kann, so dass der Editor sie automatisch findet, wenn man Dateien im Repository bearbeitet. Dazu muss man natürlich erstmal wissen, was für Editoren alle so benutzen, was mich sowieso mal interessieren würde, vielleicht kann mal jemand eine Wiki-Seite erstellen, wo steht, wer was benutzt?

Also, any takers?

Siehe auch #21

GameDesign - Forschung Stats

Forschung Kosten Metall Kosten Kristall Kosten Treibstoff Gesamtsumme
Hülle 10 10
Laser 4 3 10
Spionage 3 1 10
Triebwerk 8 3 20
Ionen 4 8 20
Schilde 6 2 20
Pilotentraining 20 5 40
Netzwerk 160 100 720
Pionierausbildung 320 100 720
Kinetik 20 10 40

Newline at end of file

Related to #20

Beim Sichten des ersten PR ist mir folgendes eingefallen: Einige Editoren fügen beim Speichern automatisch ein newline-Zeichen am Ende der Datei ein, wenn da keins steht, und einige nicht. Die Vorteile sind:

  • Zeilen sind einheitlich; jede Zeile endet mit einem newline-Zeichen, auch die letzte
  • Das wiederum macht die Verarbeitung leichter

Nachteile:

  • Man verschwendet ein byte

Ich bin dafür, aber ihr könnt mal eure Meinungen hier rein schreiben. Irgendwer sollte dann, wenn sich alle einig sind, mal gucken, wie wir das erzwingen, also ähnlich wie in #20. Außerdem sollten wir zumindest die von euch geschriebenen Dateien dann einmal durchgehen und sie vereinheitlichen.

Implementation: Stationen

Folgende Stationen sollen mit entsprechenden Mechaniken implementiert werden, Namen sind zum aktuellen Zeitpunkt teilweise noch Placeholder.

Mutterschiffe haben einen maximalen Bauplatz von 100. Jedes Level einer Station auf diesem Mutterschiff kostet einen Bauplatz. Sollte der maximale Bauplatz erreicht sein, ist es möglich diesen ein wenig durch Ausbau der Erweiterungsplatform zu erweitern.

Eine Station ist eine Mutterschiff bezogene Aufwertung, welche einen permanenten Effekt auf das entsprechende Mutterschriff hat. Haben ein Level beginnend mit 0 (Sonderregelung: Scanner für Metalle und Kristalle sowie der Energiegenerator auf Mutterschiffen starten mit 1) und können zu Ressourcenkosten in Metallen und Kristallen aufgewertet werden. Diese Aufwertung dauert jedoch auch eine Bauzeit.

Tier 1 Stationen:

  • Kollektor für die Ressource Metall (passive Erzeugung von Metallen), verbraucht Energie, Energieverbrauch kann mit einem Drosselslider reduziert werden, reduziert analog aber auch die Produktion
  • Kollektor für die Ressource Kristalle (passive Erzeugung von Kristalle), verbraucht Energie, Energieverbrauch kann mit einem Drosselslider reduziert werden, reduziert analog aber auch die Produktion
  • Kollektor für die Ressource Treibstoff (passive Erzeugung von Treibstoff), verbraucht Energie, Energieverbrauch kann mit einem Drosselslider reduziert werden, reduziert analog aber auch die Produktion
  • Lager für die Ressource Metall (Gesamtlagerplatz eines Spielers ergibt sich aus der Summe seiner Lager)
  • Lager für die Ressource Kristalle (Gesamtlagerplatz eines Spielers ergibt sich aus der Summe seiner Lager)
  • Lager für die Ressource Treibstoff (Gesamtlagerplatz eines Spielers ergibt sich aus der Summe seiner Lager)
  • Baugebäude, Aufrüsten erhöht die Geschwindigkeit der Stationsaufrüstung und Anlagen auf diesem Mutterschiff
  • Energiegenerator, produziert Energie, Aufrüsten erhöht die Energiemenge

Tier 2 Stationen:

  • Tresor für die Ressource Metall (Sofern der Spieler einen Angriff auf sein Mutterschiff verliert, bleiben mindestens Ressourcen equivalent zur Kapazität des Tresors erhalten)
  • Tresor für die Ressource Kristalle (Sofern der Spieler einen Angriff auf sein Mutterschiff verliert, bleiben mindestens Ressourcen equivalent zur Kapazität des Tresors erhalten)
  • Tresor für die Ressource Treibstoff (Sofern der Spieler einen Angriff auf sein Mutterschiff verliert, bleiben mindestens Ressourcen equivalent zur Kapazität des Tresors erhalten)
    -- Um einen Tresor zu bauen, muss man mindestens das entsprechende Lager auf Stufe 4 oder höher haben.
  • Forschungsstation, Aufrüsten erhöht die Forschungsgeschwindigkeit.
    -- Bedingung: Baugebäude 4
  • Werft, Aufrüsten erhöht die Konstuktionsgeschwindigkeit von Einheiten in diesem Mutterschiff
    -- Bedingung: Baugebäude 2
  • Verbrennungsgenerator, produziert Energie, verbraucht dazu Treibstoff, Aufrüsten erhöht die Maximalmenge. Produktionsmenge/Treibstoffverbrauch kann mittels eines Sliders kontrolliert werden.
    -- Bedingung: Energiegenerator 4

Tier 3 Stationen:

  • Reparaturgebäude, stellt nach einem Angriff auf das Mutterschiff einen Anteil der im Kampf zerstörten Anlagen wieder her. Aufrüsten erhöht den Anteil.
    -- Bedingung Baugebäude 8
  • Erweiterungsplatzform, Erhöht die maximalen Bauplätze des Mutterschiffs um 10 pro Upgrade.
    -- Bedingung: Baugebäude 10

Bauzeit der Stationen: 2 ^ x wobei (x = Tier + aktuelle Stufe - 1) Minuten

Wiki/Game Design weiter aufgliedern

Es wäre schön, wenn ihr die Wiki-Seiten zum game design etwas kompakter schreiben könntet und in mehrere Seiten aufteilen könntet, sodass man da einfach Aufgaben raussuchen kann.

Spätestens immer, wenn ihr ins Wiki guckt, um euch eine Aufgabe zu suchen, ist es automatisch Teil der Aufgabe, den entsprechenden Teil des Wiki in eine eigene Seite zu extrahieren!

Account management

Bitte benutzt das Issue-System, um zu dokumentieren, was ihr tut, ich sage da noch mal etwas mehr zu, wenn ich wieder da bin (hoffentlich morgen). Also offensichtlich sind zumindest einige gerade mit account management beschäftigt, wer gehört da alles zu außer @ChristianReinhard?

Was ist da jetzt noch genau zu tun? Tragt das mal hier ein.

Wenn da kleinere Aufgabenpakete auszumachen sind, erstellt auch ruhig weitere Issues.

Fehler, wenn nicht eingeloggt

Ihr müsst aufpassen, dass die App nicht crasht, wenn ich nicht eingeloggt bin und eine Seite besuche, die ich dann eigentlich nicht sehen darf.

Account Management: User Profile and Admin Rechte

Das Spiel soll Spielerprofile anzeigen können und für User andere Spieler anzeigen können.
Eine Verwaltung für Bearbeitungsrechte soll eingeführt werden und in die User in mehreren Stufen zugeordnet werden können.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.