# Ideen für die Backend-Entwicklung eines Games gesucht



## RezaScript (23. Mai 2019)

Hallo,

in meinem Studium bin ich in einem Team von 7 Game-Entwickler, 3 Frontend-Entwickler und 1 Backend-Entwickler. Der Backend-Entwickler bin ich.

Das Ziel ist es ein "Game" zu entwickeln das im Browser läuft. 

So ungefähr ist die Idee:
Eine Website hat eine "Über uns"-Seite. Anstatt Fotos von Mitarbeitenden gibt es eine Game-Grafik von jedem einzelnen Mitarbeiter, welche alle in einem Raum sind. Man kann sich frei bewegen und jeden Mitarbeiter anklicken. Via Animationen ist jeder Mitarbeiter beschäftigt und wenn der User darauf klickt, tut er irgendwas anders. 

Was die Game-Entwickler genau machen, weiß ich nicht, denn es ist auch nicht mein Fachgebiet. Die Frontend-Entwickler setzen auf Three.js und haben genug zu tun. So, ich als Backend-Entwickler bin der einzige der nichts zu tun hat, da das Projekt ziemlich frontend-basierend ist. Ich habe mich bewusst für die Rolle als Backend-Entwickler entschieden, da ich so gut wie keine Ahnung von Java habe und somit auch etwas lernen wollte. Das Ding ist aber, dass ich keine Ahnung habe welche nützliche Funktionen ich anbieten könnte.

Der Stand der Dinge ist, dass ich zurzeit ein Login mit Logout gebaut habe. So, toll. Aber wozu? Was kann man machen wenn man eingeloggt ist? 

Ich müsste also irgendetwas spektakuläreres machen, da der Code an sich nicht benotet wird, sondern viel mehr die Ideen und Usability. 

Für mich ist es ziemlich schwierig eine nützliche Idee zu finden, da das Projekt überhaupt gar kein Backend-Entwickler braucht.

Wenn ihr eine Idee habt, würde ich mich sehr auf einen Vorschlag freuen!


----------



## kneitzel (23. Mai 2019)

Also wenn ich das richtig verstanden habe, dann haben alle direkt irgendwie losgelegt ohne ein gemeinsames Konzept zu haben? Das finde ich fatal, denn der Client kann natürlich irgendwas machen, aber das Backend ist ohne den Client erst einmal nichts....

Ideen, was umgesetzt werden könnte, wäre z.B. etwas wie:
- Alle sehen das Gleiche, d.h. wenn ein Spieler einen Entwickler anklickt dann bekommen es alle Spieler mit.
- Spieler können Attribute haben, d.h. Spieler bekommen für irgendwas Punkte. Wenn einem Entwickler etwas runter fällt, dann kann man das als Spieler aufheben. Aber wenn das irgendwas gefährliches ist, dann gibt es Punktabzug. (Also Goldstücke aufheben, Scheissehaufen aber bitte liegen lassen....)
- Liste der Spieler, die derzeit angemeldet sind (nur die dürfen mitspielen).

Dann muss man sich überlegen, wie man das bauen kann, damit events vom Server zeitnah verwaltet werden. Da könnte man sich einiges überlegen:
- Wie kommen die Events vom Server zum Client? Evtl. ist das ein lang andauernder WebRequest, also sozusagen ein download, den der Client zeilenweise liest und in den der Server seine Events schreiben kann... und der nie fertig wird.... Wäre eine Option.
- Und dann hat sowas wie HighScores. Man kann ja speichern, wer bisher die meisten Punkte hat....
- Dinge, die der Client machen kann, sollten generell vom Server kommen. Da kann man sich also auch die notwendigen Überlegungen machen bezüglich Datenstrukturen und so. (Anstatt also alles in HTML, JS und CSS zu gießen sollte man überlegen, ob man Dinge aus Datenbanken lädt. Dann sind gewisse Dinge dynamisch. Falls es dazu zu spät ist: Falls die z.B. mit CSS arbeiten wäre eine Überlegung, dies in eine Datenbank zu laden. Dann hättest Du an Funktionen:
a) Import (für deine Entwickler), evtl. einmalig?
b) Editor für die Daten
c) Export, s.h. über eine URL kann das als CSS File abgerufen werden.
Bei den Daten ist evtl. wichtig, dass man pro Element angeben kann: Wann das Verwendung findet (also eine Zuordnung zu Seiten, so die Frontend Entwickler nicht zusammen ein CSS Style haben. Und evtl. ein Flag, was der Spieler anpassen kann. Evtl. kann der Spieler ja die Hintergrundfarbe anpassen oder so? -> Dann gibt es also auch Werte pro Spieler. Also ein default wert und dann kann ein Spieler noch neue Werte für sich setzen ...

Das nur einmal als ein paar Ideen. Aber da müssen die Frontend Entwickler immer mit machen.... So eine Idee bezüglich CSS Verwaltung kann man evtl, unabhängig bauen... Aber die Frage ist, ob das nicht schon zu komplex wird - ich weiss ja nicht, wie viel Zeit ihr habt ...


----------



## mihe7 (23. Mai 2019)

RezaScript hat gesagt.:


> So ungefähr ist die Idee:


Ich gehe auf eine about-Seite und sehe dann Mitarbeiter, die kann ich anklicken und dann wird etwas animiert. Das ist völlig uninteressant. Mir fehlt hier der Zusammenhang zu einem Spiel. Worin besteht die "Herausforderung" für mich als Spieler?


----------



## RezaScript (23. Mai 2019)

@kneitzel Zeit haben wir eigentlich genug. Also bis Mitte Juli ungefähr. Aber deine Ideen finde ich sehr interessant. Einige davon machen auch ziemlich Sinn, wenn die Zusammenarbeit mit dem Frontend stimmt aber das müsste ich mal vorerst mit ihnen besprechen. Danke jedenfalls für die tollen Ideen!

@mihe7 das ist eben genau das Problem. Meine Idee war zu Beginn, dass wir ein Browser-Game entwickeln aber ich konnte mich damit leider nicht durchsetzen. Die jetzige Idee hat nichts mit einem "Game" zu tun. Es ist viel mehr eine 360°-3D-Umgebung mit ein paar wenige Events wie Klicken und Zoomen aber das wars dann auch schon. Eine Herausforderung für den Spieler gibt es nicht, da er eigentlich kein Spieler ist, sondern viel mehr ein Viewer.


----------



## mrBrown (23. Mai 2019)

Versteh ich das richtig, über nd ihr seid 11 Personen, von denen 7 „Gameentwickler“ sind? Oder sind das 7 Gameentwickler, von denen 3 Front- und einer Backend-Entwickler ist?

(Der Duden sollte endlich mal ein „Oxford-Komma“ erlauben...)


----------



## mihe7 (23. Mai 2019)

RezaScript hat gesagt.:


> Es ist viel mehr eine 360°-3D-Umgebung mit ein paar wenige Events wie Klicken und Zoomen aber das wars dann auch schon. Eine Herausforderung für den Spieler gibt es nicht, da er eigentlich kein Spieler ist, sondern viel mehr ein Viewer.


Dann könntet Ihr ja wenigstens die "aktuelle Welt" vom Server erhalten. Man ist in einem Raum, klickt auf die Tür -> Server erzeugt anderen Raum -> zum Client -> Client stellt Raum dar usw. Dann könntet ihr die anderen "Besucher" mit darstellen (müssen vom Server kommen) und/oder eine Art Labyrinth daraus machen. Wenn ihr wollt, könntet Ihr noch einen kleinen Chat mit einbauen, so dass sich die Seitenbesucher untereinander unterhalten können usw.


----------



## RezaScript (23. Mai 2019)

@mrBrown nene, es wird getrennt. Die Game-Entwickler haben keine Ahnung von der Web-Entwicklung und die Web-Entwickler haben keine Ahnung von der Game-Entwicklung.

@mihe7 das mit dem Chat ist eine ziemlich gute Idee! Das würde ich sehr gerne machen wollen aber ich weiss nicht, ob ich das schaffe, da ich grad noch Java am lernen bin. Ich würde es hinkriegen, dass jeder User etwas tippen kann und der Text wird dann in der Datenbank gespeichert und wird dann wieder ausgegeben, wenn der Browser neu geladen wird aber so sollte ein Chat ja nicht funktionieren. Wie das ganze in real time funktioniert stell ich mir ziemlich schwierig vor. Eine Idee die ich vielleicht hätte wäre, dass ein Ajax-Aufruf alle z.B. 1 Sekunde stattfindet und die Daten dann vom Server lädt aber ich denke, dass ich da völlig falsch liege, denn die Daten sollten ja eigentlich gar nicht gespeichert werden.


----------



## mihe7 (23. Mai 2019)

RezaScript hat gesagt.:


> Ich würde es hinkriegen, dass jeder User etwas tippen kann und der Text wird dann in der Datenbank gespeichert und wird dann wieder ausgegeben, wenn der Browser neu geladen wird aber so sollte ein Chat ja nicht funktionieren. Wie das ganze in real time funktioniert stell ich mir ziemlich schwierig vor. Eine Idee die ich vielleicht hätte wäre, dass ein Ajax-Aufruf alle z.B. 1 Sekunde stattfindet und die Daten dann vom Server lädt aber ich denke, dass ich da völlig falsch liege, denn die Daten sollten ja eigentlich gar nicht gespeichert werden.


https://www.baeldung.com/java-websockets - da ist gleich noch eine Art Beispiel dabei


----------



## RezaScript (23. Mai 2019)

Super danke. Ich werde es mir mal anschauen.


----------

