Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Nimelrian

Alter Hase

  • »Nimelrian« ist der Autor dieses Themas

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

1

28.05.2015, 11:07

Project Onyx - Ein neues Forenprojekt à la Dwarf Fortress


(Link)

Project Onyx
Aktueller Projektstatus: Kickoff durchgeführt, Konzeption und Planung laufen!

Worum geht's überhaupt?
Eventuell kennt Ihr bereits Dwarf Fortress (Wikipedia, Website). Falls Ihr bereits Kenntnis über DF besitzt, könnt Ihr diesen Abschnitt überspringen.

Dwarf Fortress ist eine Mischung aus Strategiespiel und Simulation. Man startet mit einer überschaubaren Truppe von Zwergen und muss mit diesen ein kleines Königreich aus dem Boden stampfen. Klingt einfach, ist aber unglaublich komplex. Während man sich heimisch einrichtet muss man gleichzeitig darauf achten, dass die Nahrungsvorräte nicht zur Neige gehen, die Zwege fröhlich sind, Platz für neue Bewohner existiert und man nicht von der Armee eines Totenbeschwörers/Goblinkönigs/WasAuchImmer überrannt wird.

Daraus ergibt sich eine ungeahnte Spieltiefe. So können Fallen errichtet, Tiere zu Kriegsbestien trainiert und komplexe Mechanismen gebaut werden, um nicht irgendwann in den Genuss von Fun zu kommen.

Der Clou: Das Spiel wird ausschließlich über die Tastatur bedient, Mausunterstützung ist ein Fremdwort und die Spielwelt besteht aus... ASCII-Zeichen.

Und weiter?
Ich würde gerne eine moderne Version von Dwarf Fortress schaffen. Diejenigen unter Euch, die Dwarf Fortress kennen, werden jetzt auf mich zeigen und sagen, dass ich spinne.

Motivation für mich ist in erster Linie das anfangs schreckliche User Interface des Originals, sowie die Tatsache, dass alles in diesem Spiel auf einem einzigen Thread läuft. Wer DF schon einmal gespielt hat und es geschafft hat länger als 5 Spielstunden zu überleben weiß, dass die Simulations- und Framerate im späteren Lauf in den Keller geht.

In der Tat ist das Ganze ein Mammutprojekt. Ich möchte daher eher Kleckern als Klotzen und Features nach und nach implementieren.

Generell sehe ich das Projekt eher als Lern- und Hobbyprojekt an.

Wie soll das Endprodukt aussehen?
  • Single Player (Eventuell später auch Multiplayer? Müsste man vor Projektstart einmal drüber reden)
  • Eine isometrische Darstellung der Spielwelt (Darstellung in 2D, nicht 3D!)
  • Ein ordentliches GUI (Mit Mausunterstützung natürlich!)
  • (Einsatz von Multithreading zur Gewährleistung einer guten Performance auch in längeren Spielen) Optional, wird im Verlauf der Entwicklung entschieden
  • Modability soll gewährleistet sein, die Community soll relativ einfach eigene Beiträge zum Spiel beisteuern können
  • Im Vergleich zur Dwarf Fortress einige Komfortfunktionen für den Endnutzer

Ansonsten soll sich das Fundament stark an Dwarf Fortress orientieren (Generierte Spielwelt, wachsende Gemeinschaft, Jobs, Wirtschaft, Militär, Erkundung, etc.)

Wie soll das ganze realisiert werden?
Programmiersprache
Als Programmiersprache kommt C++ zum Einsatz.

IDE
Aktuell liegt im Repository eine Visual Studio 2013 Solution, wir stellen aktuell jedoch die Weichen für einen Wechsel auf CMake, um plattformunabhängig arbeiten zu können.

Bibliotheken
Von vielen geliebt, von manchen gehasst (Gibt es solche Leute wirklich?), einfach weil es am besten passt: SFML.

Source Code Verwaltung
Der Source Code ist auf GitHub zu finden!

Organisation
Dokumente werden in Markdown geschrieben und im GitHub-Wiki gesammelt.

Die Sammlung von Dokumenten erfolgt im Repository. Aktuelle Zwischenstände und ein Scrapbook können in Microsoft OneNote erfasst/realisiert werden.

Zur internen Kommunikation dienen dieser Thread und der Chat (siehe unten), regelmäßige Meetings (Je nach Fortschritt wöchentlich) erfolgen über Google Hangouts.

Wer ist aktuell im Team?
Aktuell besteht das Team aus (alphabetische Reihenfolge):
  • anti-freak - Programmierer
  • DeKugelschieber - Programmierer
  • Nimelrian - Projektleiter, Programmierer
  • nurF - Programmierer
  • Schorsch - Programmierer
  • Stazer - Programmierer
  • xTr1m - Programmierer, Grafiker
  • Yatekii - Programmierer
Wen/Was suchen wir aktuell?
Aktuell ist eigentlich alles gern gesehen. Programmierer, Grafiker, Sounddesigner, Leute mit Erfahrung beim Planen und Durchführen von Projekten.
Falls Ihr als Programmierer mitmachen wollt solltet Ihr Kenntnisse (Praxiserfahrung ist NICHT erforderlich!) über folgende Dinge haben:
  • Smartpointer
  • Multithreading und seine Probleme
  • Versionsverwaltung
  • SFML
  • Design Patterns
Wie kann ich mitmachen?
Schicke mir eine private Nachricht über das Forum oder schau im Chat vorbei, vielleicht bin ich gerade anwesend. Wenn Du als Programmierer mitmachen willst, würde ich mich über ein kleines Code-Sample von Dir freuen, um deinen Kenntnisstand einstufen zu können.

Wie sieht es mit dem Geld aus?
Für den Anfang möchte ich das Projekt nicht-kommerziell halten. Es kann eventuell sein, dass wir später, wenn wir in der Alpha- (oder sogar Beta-)Phase sind, über Crowdfunding via Kickstarter oder Patreon nachdenken können. Spenden wären auch eine Option.

Darüber wird jedoch nicht nachgedacht, bevor das Projekt soweit ist. Generell finde ich, dass man erst dann Geld für seine Arbeit verlangen/annehmen sollte, wenn man weiß, dass diese Feature-Complete in einem ordentlichen Zustand bei den zahlenden Unterstützern ankommen wird.

Fazit: Habe nicht die Erwartung, für deine Arbeit Geld zu erhalten!

Was bringt mir das Projekt?
  • Erfahrung in Bezug auf die Arbeit in Teams an größeren, organisierten Projekten.
  • Spaß bei der Entwicklung eines Spiels
  • Ein Eintrag in den Credits
Ich habe noch weitere Fragen!
Dann klick auf den "Antworten"-Button und man wird sie sicher gern beantworten.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

Dieser Beitrag wurde bereits 8 mal editiert, zuletzt von »Nimelrian« (03.06.2015, 22:26)


Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

2

28.05.2015, 12:07

Da du von einem "Forenprojekt" schreibst: Es gab bereits das Bestreben, ein Forenprojekt anzufangen, welches aber nach nicht besonders langer Zeit kein "Forenprojekt" mehr war, da nur noch ein paar wenige daran weitergearbeitet haben. Du solltest idealerweise schauen, woran das gelegen haben könnte und wie man dem vorbeugen könnte.

Ansonsten:
  • Die Modbarkeit sollte vorerst keins der Ziele sein. Wenn das Spiel soweit implementiert ist und läuft, kann man über Refactoring und Erweiterung eine Modifizierbarkeit ergänzt werden. Abgesehen davon wurden bereits so viele Spiele modifiziert, die dies nie explizit vorgesehen haben. Wenn jemand wirklich eine Modifikation schreiben will (was ich schon ein wenig bezweifle), dann werden sich schon wege finden, vor allem wenn Zugriff auf den Quellcode besteht.
  • Das "Multithreading" sollte erst dann relevant werden, wenn man multithreaded arbeitet. Wenn die Berechnungen, die man implementiert, nie komplex genug werden, muss man sich auch nicht mit Multithreading rumplagen.
  • Um eine Mitarbeit am Projekt zu vereinfachen, wäre ein offenes Repository förderlich. Idealerweise wird auch bereits zu beginn festgelegt, welche Lizenz für den Quellcode verwendet wird.
  • Es sollte bereits von Anfang an feststehen, ob mit deisem Projekt eine Gewinnerzielung verfolgt wird oder nicht. Wenn das der Fall sein sollte, muss bereits von Anfang an anders an die Sache heran gegangen werden. Für ein Forenprojekt wäre deswegen und aus vielen anderen Gründen ein gänzlich freies Projekt besser, bei dem eine Kommerzialisierung auch gar nicht in Aussicht gestellt wird.
  • Ein großes Problem sehe ich derzeitig noch beim Balancing. Wie soll dieses in Angriff genommen werden?
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Nimelrian

Alter Hase

  • »Nimelrian« ist der Autor dieses Themas

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

3

28.05.2015, 12:27

Da du von einem "Forenprojekt" schreibst: Es gab bereits das Bestreben, ein Forenprojekt anzufangen, welches aber nach nicht besonders langer Zeit kein "Forenprojekt" mehr war, da nur noch ein paar wenige daran weitergearbeitet haben. Du solltest idealerweise schauen, woran das gelegen haben könnte und wie man dem vorbeugen könnte.
Ich habe extra vor Erstellung dieses Threads im Chat nach Interessenten gefragt. Ein paar haben sich daraufhin auch gemeldet. Um das Forum miteinzubeziehen würden regelmäßig Dev-Logs geposted werden, um das Interesse aufrecht zu erhalten. Auch Umfragen und die Einbeziehung des Forums bei der Entwicklung eines neuen Features sind durchaus in Betracht zu ziehen.

Die Modbarkeit sollte vorerst keins der Ziele sein. Wenn das Spiel soweit implementiert ist und läuft, kann man über Refactoring und Erweiterung eine Modifizierbarkeit ergänzt werden. Abgesehen davon wurden bereits so viele Spiele modifiziert, die dies nie explizit vorgesehen haben. Wenn jemand wirklich eine Modifikation schreiben will (was ich schon ein wenig bezweifle), dann werden sich schon wege finden, vor allem wenn Zugriff auf den Quellcode besteht.
Im Chat wurde eben eine Diskussion darüber geführt. Die Grundfrage ist hierbei, wie tiefgreifend Modifikationen erfolgen können. Sollen komplette Conversions möglich sein, oder sollen einfach nur Inhalte (Wie Items, Gegner, Sprites, Verhaltensweisen) eingefügt werden können? Im Chat fiel dann recht schnell das Wort "Scripting", was mir auch schon im Kopf schwebte. Über Scripting können natürlich sowohl Devs als auch Modder über dieselbe Schnittstelle arbeiten, was uns ein späteres umfassendes Refactioring ersparen würde.

Das "Multithreading" sollte erst dann relevant werden, wenn man multithreaded arbeitet. Wenn die Berechnungen, die man implementiert, nie komplex genug werden, muss man sich auch nicht mit Multithreading rumplagen.
Durchaus kann bereits von Anfang an mit mehreren Threads gearbeitet werden. In Dwarf Fortress existieren beispielsweise schon zu Beginn des Spiels viele handelnde Charaktere (Zwerge, Tiere) und Entities, die mit jedem Tick ein Update bekommen (Wasser). Bei so etwas bietet sich Threading dann durchaus an.

Um eine Mitarbeit am Projekt zu vereinfachen, wäre ein offenes Repository förderlich. Idealerweise wird auch bereits zu beginn festgelegt, welche Lizenz für den Quellcode verwendet wird.
Das wäre, wie schon gesagt, eine Entscheidung die im gesamten Projektteam getroffen werden sollte.

Es sollte bereits von Anfang an feststehen, ob mit deisem Projekt eine Gewinnerzielung verfolgt wird oder nicht. Wenn das der Fall sein sollte, muss bereits von Anfang an anders an die Sache heran gegangen werden. Für ein Forenprojekt wäre deswegen und aus vielen anderen Gründen ein gänzlich freies Projekt besser, bei dem eine Kommerzialisierung auch gar nicht in Aussicht gestellt wird.
Wie gesagt, es sind aktuell alles nur Überlegungen im Bezug auf das Thema Geld.
Sicherlich wäre es beispielsweise nicht fair, wenn einzelne Leute über 100% der Zeit mit am Projekt werkeln, andere nach 2 Wochen abspringen und beide Parteien bekommen am Ende Geld. Eine weitere Möglichkeit wäre natürlich, das Projekt bis Version 1.0 gänzlich frei zu betreiben und ab da auf eine kommerzielle Lizenz umzustellen. Möglichkeiten gibt es jede Menge. Aber das sind auch Dinge, die im Einvernehmen des gesamten Teams entschieden werden sollten, und nicht von mir allein.

Ein großes Problem sehe ich derzeitig noch beim Balancing. Wie soll dieses in Angriff genommen werden?
Das ist wieder ein Thema, über das man mit dem gesamten Team sprechen sollte. Grundsätzlich wollte ich mit diesem Thread erstmal einen Rahmen schaffen. Wie das Bild innerhalb dieses Rahmens letztendlich gemalt wird, kann man erst nach Projektstart entscheiden.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

Databyte

Alter Hase

Beiträge: 1 040

Wohnort: Na zu Hause

Beruf: Student (KIT)

  • Private Nachricht senden

4

28.05.2015, 13:05

Alle Leute beschweren sich immer, dass das Interface von DF so schlecht ist, aber wenn man mal genauer darüber nachdenkt, ist das eigentlich egal. Das Spiel ist so komplex, dass man sowieso das Wiki brauchst um voran zu kommen. 95% der Zeit verbraucht man um herauszufinden, dass etwas geht und wenn dann wie. Ein besseres GUI würde da auch nicht helfen. Man braucht sowieso sehr viel Zeit für das Spiel selber; da lernt man dann auch das Interface schnell zu benutzen. Für die Sachen die wirklich ******* zu bedienen sind (Gott ist die Ingame-Job-Verwaltung *** *******), gibt es externe Tools, die dir helfen (Siehe besonders Dwarf_Therapist).

Im Lazy Newb Pack gibt es alle tools, mods und Graphiken die man benötigt, um Dwarf Fortress zu spielen. Ist zwar nicht isometrisch, dafür top-down.

Und nur weil DF kein Multicore unterstützt, würde ich nicht versuchen einen Clone von einem Spiel zu machen... ich meine wie lange sitzen die Beiden daran? 10 Jahre sind es jetzt glaube ich.

Ansonsten gibt es schon isometrische Clone wie Gnomoria. Die haben ein schönes GUI... sie allerdings als Clone zu bezeichnen ist schon fast eine Beleidigung für DF! Eher Clone von DFs Schatten (Wenn die Sonne am höchsten steht). Immer hin ist praktisch jedes Spiel eine Untermenge von Dwarf Fortress!

PS: Ich habe in einem Interview irgendwie mal gelesen, dass Toady einbauen will, dass man mit den Zwergen wie mit einem Chat-Programm reden kann. Ich meine... wie will man bei dieser Awesomeness mithalten^^

Nimelrian

Alter Hase

  • »Nimelrian« ist der Autor dieses Themas

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

5

28.05.2015, 13:14

Und nur weil DF kein Multicore unterstützt, würde ich nicht versuchen einen Clone von einem Spiel zu machen... ich meine wie lange sitzen die Beiden daran? 10 Jahre sind es jetzt glaube ich.
Das ist auch nicht meine Motivation. Meine Motivation ist es in erster Linie, Praxiserfahrung zu sammeln in einigen Gebieten, von denen ich bisher nur die Theorie kenne. Und DF ist eben so eine wunderschöne Vorlage, bei denen man diese Theorie implementieren kann.

Gnomoria habe ich selbst gespielt, mir fehlt dort allerdings der Tiefgang. Außerdem ist die KI nicht gerade großartig.

Dass es für DF dutzende Tools gibt, ist mir bewusst, ich nutze sie ja selber exzessiv. Das sollte aber niemanden daran hindern, es einmal selbst zu versuchen. Man merkt DF einfach an, dass es inzwischen schon sehr alt ist. Wenn man es mit neuen Mitteln neu aufsetzen will, wieso nicht?
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

Tobiking

1x Rätselkönig

  • Private Nachricht senden

6

28.05.2015, 14:03

Das "Multithreading" sollte erst dann relevant werden, wenn man multithreaded arbeitet. Wenn die Berechnungen, die man implementiert, nie komplex genug werden, muss man sich auch nicht mit Multithreading rumplagen.
Durchaus kann bereits von Anfang an mit mehreren Threads gearbeitet werden. In Dwarf Fortress existieren beispielsweise schon zu Beginn des Spiels viele handelnde Charaktere (Zwerge, Tiere) und Entities, die mit jedem Tick ein Update bekommen (Wasser). Bei so etwas bietet sich Threading dann durchaus an.

Multithreading bietet sich nur an wenn du keine Datenabhängigkeiten hast. Ich nehme mal an die ganzen Entities interagieren miteinander und der Welt? Wenn du dort mit Multithreading dran gehst, hast du erstmal keine feste Reihenfolge mehr in der die Entities geupdatet werden und musst viel Aufwand (im Code und zur Laufzeit) betreiben um wieder ein nachvollziehbares Ergebnis zu erreichen. Wenn die Update Funktionen nicht übermäßig aufwändig sind, verlierst du dabei vermutlich mehr Zeit als du gewinnst. Daher kann ich die Empfehlung "Multithreading nur dann wenn es nötig wird" nur zustimmen.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

7

28.05.2015, 14:11

@Nimelrian:
Warum sollte man Probleme lösen wollen, die man gar nicht hat? Wenn man nicht jeden einzelnen Feld eine Update-Nachricht schickt (also die Anzahl von Methodenaufrufen reduziert), kann man evtl. bereits Performance einsparen. Ich weiß nicht, wie Dwarf Fortress entwickelt ist, allerdings klingt es der Beschreibung nach so, als gäbe es da noch Potential für Einsparungen.
Zumal man ja nicht unbedingt weiß, an welchen Stellen optimiert werden muss, wenn man noch weit davon entfernt ist, überhaupt Code geschrieben zu haben. Wenn es erstmal implementiert ist, kann man nach Verbesserungsmöglichkeiten schauen (-> Profiling), aber bis dahin...

Scripting-Möglichkeiten sind zwar nicht zu schwierig in der Einbeindung, aber damit könnte man eventuell wieder Performanceprobleme bekommen, die man ja eigentlich eher vermeiden wollte (oder wofür war nochmal Multithreading?). Auch wird so bestimmt wieder ein Glaubenskrieg darüber ausbrechen, welche Sprache bzw. welche Sprachen für das Scripting verwendet werden sollten. JavaScript? C# (und andere .NET-Sprachen)? Java? PHP? Ruby? Python? Lua? AngelScript?
Viel weiter sollte es aber keines Falls gehen. Bereits das Einbinden der Scripting-Möglichkeiten verkompliziert das Design. Eine Total-Conversion von Haus aus zuzulassen ist entsprechend bei weitem zu umfangreich, als dass es sich lohnen würde.
Außerdem: wenn Zugriff auf den Quellcode besteht, dann ist das Modden sehr einfach: Modder ziehen sich den Quellcode und machen ihre Änderungen.


@DataByte:
Auch trotz vieler Nutzung bleibt ein schlechtes Interface ein schlechtes Interface. Ich kenne, wie bereits beschrieben, Dwarf Fortress nicht, daher weiß ich auch nicht, wo genau dessen Schwächen liegen. Dass externe Tools zur Verbesserung der Bedienung vorhanden ist, zeigt doch, dass das UI verbesserungswürdig ist.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Nimelrian

Alter Hase

  • »Nimelrian« ist der Autor dieses Themas

Beiträge: 1 216

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

8

28.05.2015, 14:19

Jetzt hängt das Projekt doch nicht an den Galgen weil ich das Wort Multithreading in den Mund genommen habe :pinch:

Wie gesagt, ich habe den Rahmen gebaut, wie es danach weitergeht wird im Team entschieden (Das sich sogar schneller bildet als gedacht. Habe die Liste im OP aktualisiert).
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

9

28.05.2015, 14:21

In welchem Alphabet kommt denn ein "Y" vor dem "S"? :P

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

10

28.05.2015, 14:22

Das Projekt ist ja jetzt noch in einer sehr sehr frühen Planungsphase. Soweit ich das weiß hat DF teilweise Probleme da alles in einem Thread läuft und es dadurch recht mühselig wird. Zumindest wenn man schon weiter fortgeschritten ist. Deshalb hatte Nimelrian die Idee mit dem Multithreading. Genauer ist dazu aber noch nichts geplant. Auch wenn eure Ratschläge gut und richtig sind möchte ich dazu sagen dass bis jetzt noch keine Zeile Code steht und wie gesagt die Planung nicht mal abgeschlossen ist. Es ist also nicht so dass Nimelrian da Probleme lösen möchte die es noch gar nicht gibt. Er hat ein Problem im original Spiel bemerkt und überlegt woran das nun liegen mag. Eine theoretisch mögliche Lösung hat er gefunden und diese halt eben genannt. Dabei ging es darum die Motivation des ganzen genauer zu erklären.
Wenn ihr nun also sagt er soll nicht versuchen Probleme zu lösen die noch gar nicht da sind, dann solltet ihr nichts zu Problemen machen was noch nicht existiert:)
Feedback zu technischen Details bringt da denke ich allgemein erst mal wenig da sich darum erst genauere Gedanken gemacht werden sollten. Schön eins nach dem anderen.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige