Länderspracheinstellungen - wie herrangehen?

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Länderspracheinstellungen - wie herrangehen?

    Hallo zusammen,

    ich überlege gerade das ich für mein Spiel gern eine Spracheinstellung basteln möchte.
    Zumindest erstmal Deutsch/ Englisch.

    Meine Frage, wie gehe ich denn da am besten herran?
    Es geht jetzt nicht darum wie ich einen Button baue mit dem ich Einstellungen auswählen kann.

    Sondern eher um die Organisation innterhalb meines Spieles was Texte angeht.
    Vlt stand schonmal jemand vor dem Problem und hat sich schon ein wenig damit beschäftigt.

    schonmal vielen Dank und eine schöne Woche euch allen:)
    Mein aktuelles Projekt: Twiggels Tower Defence :para: :shifty:
    Mittlerweile: Green and Grey
  • Ich habe das immer so gemacht: Jede Sprache hat ein eigenes Script. In dem Script werden die Texte als globale Variablen definiert. Je nach Sprachauswahl wird dann das entsprechende Script gestartet.

    Edit: Die Methode lohnt sich auch, wenn man nur eine Sprache verwendet. So kann man Text vom restlichen Code wunderbar trennen. Ist hilfreich, wenn man auf der Suche nach Rechtschreibfehlern ist. :)

    Beispiel:
    Bilder
    • Snap 2017-12-05 at 22.44.51.png

      103,42 kB, 596×615, 395 mal angesehen
    Byte GameMaker Magazin - Online Zeitschrift für Spieleentwickler

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von the_black_wall ()

  • Am effizientesten wäre wohl einfach ein 2d array bzw grid zu erstellen, in dem jede Spalte eine andere Sprache darstellt. Mit einer Konstante kannst du diese dann sehr simpel ansprechen indem du diese mit dem jeweiligen Index versiehst zb LANG_GER = 0; LANG_ENG = 1; LANG_RUS = 2 Für die Indize der einzelnen Reihen machst du dir dann am besten Notizen wofür diese sind. Dann kannst du die Textelemente auf folgende Weise einbinden:

    GML-Quellcode

    1. draw_text(xx,yy,string(ds_grid_get(array_texts,CURRENT_LANG,7)));

    CURRENT_LANG hält in diesem Fall die ausgewählte Sprache fest, die 7 steht für einen beliebigen Index
    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Rhazul ()

  • Etwas ineffizienter ist es mit einer json Datei. Dabei kannst du dann aber auch noch Sprachen leicht hinzufügen (geht aber auch mit den anderen Methoden)
    Man lädt diese dann in eine ds_map und liest die Daten dort heraus.
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Ich merk schon. Sollte ich mal wieder ein Spiel programmieren ist das eine der ersten Dinge um die ich mich kümmern sollte.
    Vielen dank für die anregungen, ich denke die Variante mit dem 2D array klingt erstmal am attraktivsten.
    ob ich mir nun im Nachgang noch die Mühe mache mal sehen^^
    Mein aktuelles Projekt: Twiggels Tower Defence :para: :shifty:
    Mittlerweile: Green and Grey
  • Ich hatte schon mal ein kleies Sprachen-System gecoded, das war gar nicht so schwierig, ich könnt mal schauen, ob ich das noch wiederfinde.
    Das funktiinierte auf jeden fall so, das jede Sprache eine (.ini benannt als .lang) datei war.
    Die Spieleinstellungen hatten auch noch eine eigene Datei.
    Beim start des Spiels wurden alle strings aus der Sprachdatei gelesen die in der einstellungs-datei hinterlegt war.
    Um in den Einstellungen dann die Spielsprache zu ändern hatte ich ein Button, der ein Menü geöffnet hat.
    Dieses Menü suchte nach allen .lang Dateien im Ordner und gab diese zur Auswahl.
    Wenn man also die Sprache ändern wollte muss das Spiel nur den hinterlegten dateinamen für die Sprache anpassen und sich einmal neustarten (kann man aber auch besser coden)

    Das ganze hat dann natürlich den Vorteil, das man einfach weitere .lang Dateien hinzufügen kann ohne irgendwas im Spiel anpassen zu müssen.
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D
  • Ich denke die Idee mit den .lang Dateien werd ich mal versuchen.
    Das Laden aus Inis geht ja recht zügig im Gm. Das könnte evl. auch Global beim starten eines Raumes passieren ^^
    oder meint ihr das könnte bei zu vielen Objekten zu kleinen laggs beim laden eines Raumes führen? ?(
    Mein aktuelles Projekt: Twiggels Tower Defence :para: :shifty:
    Mittlerweile: Green and Grey
  • Du kannst ein Controllerobjekt erstellen der mit oben genannten Befehlen aus den ini's die Grids lädt /schreibt, die kannst du dann in ein globales Grid speichern. somit kannst du dann in jedem Objekt auf die Sprachgrid zugreifen:

    GML-Quellcode

    1. draw_text(xx,yy,string(ds_grid_get(global.array_texts,CURRENT_LANG,7)));

    132 little bugs in the code. 132 little bugs. Fix a few, set the compiler to stew, 172 little bugs in the code... :vogel:
  • Oh das ist ja gut, mein System war auch mit GM8 erstellt, ich hab das übrigens wiedergefunden, das ist aber echt so basic wie irgend möglich, naja hier ist es :D
    Dateien
    Kopiere dies in deine Signatur, um es in deiner Signatur zu haben.
    Achtung: Dieser Beitrag läuft ende des Monats ab, bitte lese ihn noch vor dem Monatswechsel...
    Nach langer zeit wieder im Forum aktiv :D