Fragen zu Browsergameerstellung

  • Hey,


    ich habe mal paar Fragen zur Browsergameerstellung.


    Ich habe vorgestellt, dass man so ein raster hat mit vielen Vierecken. Und auf diesem Raster kann dann der User z.b. gebäude bauen usw.

    Was ich mir jetzt überlege ist wie bekommt man es hin, dass die Spielekarte in vielen Vierecken eingeteilt wird und das wenn der User auf ein Objekt aus dem Menu draufklickt das diese dann in diesem raster ausgewählt ist und man das nurnoch platzieren muss, natürlich wird dieser Bau dann von Ressourcen abgezogen.


    Wie geht denn sowas ? Wie kann ich es mir vorstellen? Vorschläge wie man es erstellen kann?


    Stef

  • Dein Vorhaben ist schon etwas komplex. Ich würde es mit Canvas und einer Bibliothek wie jCanvas machen, weil diese Drag&Drop unterstützt. Das Spielfeld könntest du leicht mit zwei verschachtelten Schleifen anlegen. Menü mit den Gebäuden ebenfalls anlegen. Dann mit Drag&Drop die Gebäude auf eine Kachel ziehen lassen.


    Noch etwas komplexer würde es, wenn es in 3D sein soll. Auch dafür gibt es, glaube ich, Bibliotheken, aber ich habe keine Erfahrung damit.

    Wenn Du auch noch keine Erfahrung hast, würde ich empfehlen, mit einer 2D-Version zu beginnen.

  • Hey,


    danke für die schnelle Antwort.


    Jap ist es. Ich muss mich aber erstmal mit javascript beschäftigen bevor ich nun dieses beginne. Aber es wird noch seine Zeit dauern (ich brauche jemanden aufjedenfall der mit mir das Projekt macht der sich damit auch auskennt. Sempervivum hast du villt lust ? Wenn ich auf einen guten Stand bei Javascript bin würde ich dann mich bei dir melden. ).


    Aber meine Ideen wie ich es umsetzen würde wollte ich nochmals erwähnen:

    Fürs Raster wie Sempervivum gesagt hat, 2 for schleifen, 1ne erstellt die felder auf x ebene und die andere auf y ebene (felder werden dann mit css designt, kann man glaub ich auch mit js direkt machen) ,
    Wie bekomme ich dieses raster dann nur funktionsfähig (Woher will der Browser erkennen auf welche Vierecke ich genau klicke)?

    Idee: diese vierecke verlinken. Und dann wenn man dieses anklickt diese mit hintergrundfarbe rot machen und das menü öffnen mit den Häusern z.b.

    Nun wenn man dann auf ein Haus draufklickt wird dieses Haus auf diesem Viereck platziert und dabei werden dann Ressourcen abgezogen und bei der Einwohnerzahl einwohner addiert. Da könnte mann dann jedes Haus als array machen, und in diesem array die keys , verbrauchte Rohstoffe sowie einwohnerzahl mit deren value geben. Und dann beim Bauen die benötigten Ressourcen abziehen + die Einwohnerzahl addieren.


    Upleveln neue Gebäude/Ressourcen freischalten: Überprüfung ob erhaltene punkte den sollpunktezahl erreicht hat und wenn ja die disabled Häuser/Ressourcen enablen. Aber wie soll man dies denn machen, das enablen ?


    Häuser: Es gibt jetzt z.b. Wohnhäuser, Kirche, Rathhaus. Und jedes Gebäude hat eine unterschiedliche Größe. Wie kann man es denn realisieren das Wohnhäuser nur 1 viereck haben, Kirchen 8 (2 felder breite, 8 felder länge), Rathhaus (4 felder breite, 4 felder länge) haben ? Darauf komme ich nicht. Dies wird mir auch nicht schlüssig.


    Ressourcen erwirtschaften: Für jedes Ressourcehaus ( Holzfäller, Bauerhöfe, Fischerei, Fleischerei, Farm) ein array wo in diesem die ressourcen drin stehen die erwirtschaftet werden mit der notwendigen zeit. Nun nimmt man dann die aktuelle zeit und addiert diese mit dieser notwenigen zeit. Aber wie schafft man das , dass es dann z.b. jede 30 Minuten immer 5 Holz/Fleisch/Fisch mit den vorhandenen Ressourcen addiert werden?


    Ebenso braucht man da sicherlich ajax.


    Würde mich über Antworten freuen.


    Stef

  • Zitat

    Wie bekomme ich dieses raster dann nur funktionsfähig (Woher will der Browser erkennen auf welche Vierecke ich genau klicke)?

    Idee: diese vierecke verlinken

    Wohl weniger verlinken, sondern eher mit einem Eventhandler versehen. Informiere dich über die Funktion addEventListener bzw. die Äquivalente bei jQuery.

    Zitat

    Und dann wenn man dieses anklickt diese mit hintergrundfarbe rot machen und das menü öffnen mit den Häusern

    So geht es auch. Ich hatte daran gedacht, die Häuser auf dem Spielfeld zu platzieren und der Spieler kann sie per Drag&Drop auf ein Viereck drauf ziehen.

    Zitat

    Wie kann man es denn realisieren das Wohnhäuser nur 1 viereck haben, Kirchen 8 (2 felder breite, 8 felder länge), Rathhaus (4 felder breite, 4 felder länge) haben ?

    Wahrscheinlich müsstest Du festlegen, dass man auf das linke obere Viereck klicken/ziehen muss. Dann die Felder belegen:

    Code
    // Geklicktes Element hat die Koordinaten x und y
    var len = 4, width = 2;
    for (var i = 0; i < len; i++) {
        for (var j = 0; j < width; j++) {
            // Viereck mit den Koordinaten x+i und y+j mit Gebäude belegen
        }
    }
    Zitat

    Da könnte mann dann jedes Haus als array machen, und in diesem array die keys , verbrauchte Rohstoffe sowie einwohnerzahl mit deren value geben. Und dann beim Bauen die benötigten Ressourcen abziehen + die Einwohnerzahl addieren.

    Dafür wurde sich ein Objekt i. S. von Javascript anbieten, in dem Du die gesammelten Informationen ablegst. Oder in einen objektorientierten Ansatz einsteigen und die Gebäude als Instanzen einer "Klasse" anlegen.

    Zitat

    Upleveln neue Gebäude/Ressourcen freischalten: Überprüfung ob erhaltene punkte den sollpunktezahl erreicht hat und wenn ja die disabled Häuser/Ressourcen enablen. Aber wie soll man dies denn machen, das enablen ?

    Ich würde weniger enabeln als vielmehr die Gebäude/Ressourcen neu anlegen. Die Gebäude, die einem Spieler gehören, in einem Array ablegen und neue hinzufügen. Für das Anlegen würde sicher ebenfalls ein objektorientierter Ansatz anbieten, dann kann man ein neues Gebäude mir "new" anlegen und die Eigenschaften wie Einwohnerzahl, etc. sind gleich verfügbar.

  • Moin,


    aso ok. Ja das ist auch ne Möglichkeit. Das mit dem Drag & Drop ist auch gut. Schau es mir aufjedenfall nochmal an.


    Die Felder mit den Häusern belegen:

    Danke für diesen Denkanstoß. Noch ne Frage: Woher will der Browser nun wissen wo denn die Kästchen sind auf denen man die Häuser platziert?

    Also wenn man nun ein haus aus dem menü zieht auf das raster, dass dann der Browser sieht dort sind die kästchen wo es platziert werden kann. Und nicht in der Mitte der Kästchen.


    Zitat

    Dafür wurde sich ein Objekt i. S. von Javascript anbieten

    Ok. Also ist in javascript schon ein Objekt für solche Angelegenheiten vorhanden, wo man einfach mit den funktionen nutzen kann ?

    Was bedeutet das i.S. ?


    Ja das ist auch ne gute Idee und erscheint viel logischer.


    Vielen Dank :)


    Stef

  • Zitat

    Woher will der Browser nun wissen wo denn die Kästchen sind auf denen man die Häuser platziert?


    Also wenn man nun ein haus aus dem menü zieht auf das raster, dass dann der Browser sieht dort sind die kästchen wo es platziert werden kann. Und nicht in der Mitte der Kästchen.

    Dafür sehe ich zwei Möglichkeiten:

    1. Beim Ziehen sind die Koordinaten der Maus oder des Kästchens verfügbar. Kennt man die linke obere Ecke der Matrix mit den Kästchen, kann man berechnen, in welchem sich die Maus oder das gezogene Element befinden.

    2. Man könnte die Daten der Kästchen einschl. x- und y-Koordinaten in einem Array ablegen. Dann kann man ebenfalls ermitteln, in welchen Kästchen man sich befindet. Man kann das Objekt auch auf den Kästchen einrasten lassen, siehe hier:

    https://projects.calebevans.me/jcanvas/docs/draggableLayers/

    (ganz unten)

    Zitat

    Also ist in javascript schon ein Objekt für solche Angelegenheiten vorhanden, wo man einfach mit den funktionen nutzen kann ?

    Zu Objekten siehe z. B. hier:

    https://wiki.selfhtml.org/wiki/JavaScript/Objekte

    Ein Objekt gibt es nicht fertig für einen bestimmten Anwendungszweck, sondern man muss es selber anlegen:

    Code
    var kirche = {breite: 2, laenge: 5, einwohner: 100, key_a: "xxx", key_b: "yyy"};
    Zitat

    Was bedeutet das i.S. ?

    Das bedeutet "im Sinne von": Der Begriff "Objekt" ist leider mehrdeutig, wie Du aus dem Link oben entnehmen kannst.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!