Anmelden

Archiv verlassen und diese Seite im Standarddesign anzeigen : Sprache wählen ?



Antar
04.01.2008, 11:24
Hallo,
ich arbeite derzeit an einem Projekt. Ich will das man beim Start des Spieles die Sprache wählen kann. Also Englisch oder Deutsch.
Weiß vieleicht einer ob das geht und wenn ja, wie ?

Dabke schonmal im vorraus. ;)

zertrax
04.01.2008, 11:35
Ja es geht.
Das jetzt zu erklären ist ein bissle zu kompliziert.
Ich werde dir so etwas als Skript basteln.
Kann es aber erst in den nächsten vier tagen hochladen da ich dann vieleicht erst wieder am 8 Januar online kommen kann.

Antar
04.01.2008, 11:42
Oh, das wäre super. Danke.
Bekommst dann natürlich ein gescheiden credits eintrag. :)

Caine Luveno
04.01.2008, 11:46
Ist recht einfach:
- Am Anfang deines Spiels musst du eine Auswahl erstellen welche Sprache man haben will. Das kannst du über Events, Pictures, oder per "Show Choice" abfrage machen (da du ein Anfänger zu sein scheinst nimmst du erst einmal "Show Choice" ;)).

- Bei der Auswahl benötigt du einen Switch (Schalter) den du je nachdem was ausgewählt wurde auf ON oder OFF stellst. Das ganze sähe dann so aus:



Show Choice: Sprache auswählen
Englisch Case:
Change Switch: Sprache Englisch ON
End;

Deutsch Case;
Change Switch: Sprache Englisch OFF
End;


Nun musst du überall wo es Text in deinem Spiel gibt eine Fork Condition einbauen um abzufragen welche Sprache ausgewählt wurde. Z.B.



Fork Condition: Switch Sprache Englisch ON
Show Mssage: This is a text!
ELSE
Show essage: Dies ist ein Text!
END;


Bei einem größerem Projekt ist das allerdings ein Haufen arbeit jedem Dialog doppelt zu schreiben ;)

Byder
04.01.2008, 11:51
http://img341.imageshack.us/img341/4655/hilfestellungul9.th.png (http://img341.imageshack.us/my.php?image=hilfestellungul9.png)

Gut, meins ist dann die umständliche Variante, aber so ist es auch möglich.

Caine Luveno
04.01.2008, 11:54
http://img341.imageshack.us/img341/4655/hilfestellungul9.th.png (http://img341.imageshack.us/my.php?image=hilfestellungul9.png)

So würde ich es nicht machen da wenn zwischen den Dialogen noch andere Befehle kommen diese imemr mit Kopiert werden müssen ;) Man stelle sich mal vor man baut eine Szene, will die hinterher ändern und muss die Änderungen auf 4 oder mehr Event Seiten wiederholen XD

Byder
04.01.2008, 11:59
So würde ich es nicht machen da wenn zwischen den Dialogen noch andere Befehle kommen diese imemr mit Kopiert werden müssen ;) Man stelle sich mal vor man baut eine Szene, will die hinterher ändern und muss die Änderungen auf 4 oder mehr Event Seiten wiederholen XD
Einfach Copy and paste. :O

Caine Luveno
04.01.2008, 12:02
Einfach Copy and paste. :O

Oder Dialog Events welche per "Call Event" aqufgerufen werden XD

Ist aber in jedem Fall umständlicher, wollts auch nur erwähnt haben ;) Aber natürlich geht deine Variante auch.

Antar
04.01.2008, 14:22
Super, danke leute. Das wird mir mit sicherheit weiterhelfen. ;)

Ascare
04.01.2008, 15:18
Ich hatte es glaube ich so gemacht:
Variable mit der Text ID zB. auf 5.
Dann Call Event (Common Event Texte).

Das Common Event sah dann so aus:
If Sprache = Deutsch
if Variable Text ID = 5
Show Text "Hallo Welt"
end
end

If Sprache = Englisch
if Variable Text ID = 5
Show Text "Hello World"
end
end

War meiner Meinung nach am bequemsten für die 2k/3. Fürn XP wäre Ruby sicher die bessere Lösung.

Macavity
10.01.2008, 09:00
Ich würde ein fieses Riesenarray anlegen das alle Texte beinhaltet. Einziger Haken wäre das jeder Text dann nur dynamisch über Skripte erhalten werden kann.

Ich meine also eine globale $lang-Variable die dann zentral mit Werten gefüllt wird bei der Sprachwahl, zb so:

if Sprache = Deutsch
$lang["Hallo ich bin Hugo."] = "Hallo ich bin Hugo."
$lang[..] = ".."
# ... und alle anderen Texte entsprechend
elsif Sprache = Englisch
$lang["Hallo ich bin Hugo."] = "Hi my name is Hugo."
$lang[..] = ".."
# ... und alle anderen Texte entsprechend
end


Jeder Text wird dann aus $lang["Text"] ausgelesen und man muss nur einmal (bei Sprachauswahl) unterscheiden welche Sprache der Spieler ausgewählt hat. Danach kann man sicher sein das $lang["Text"] den Text in der Sprache enthält die der Spieler gewählt hatte.


Variable mit der Text ID zB. auf 5.
Der Nachteil an der Lösung ist das du vermutlich nicht immer im Kopf hast welche ID zu welchem Text gehört. Bei $lang["Hallo ich bin Hugo"] weiß man immer worum es im enthaltenen Text geht und nicht groß rätseln muss, obwohl der Text nicht direkt einzusehen ist.

Supermike
10.01.2008, 11:05
Ich würde ein fieses Riesenarray anlegen das alle Texte beinhaltet. Einziger Haken wäre das jeder Text dann nur dynamisch über Skripte erhalten werden kann.

Ich meine also eine globale $lang-Variable die dann zentral mit Werten gefüllt wird bei der Sprachwahl, zb so:

if Sprache = Deutsch
$lang["Hallo ich bin Hugo."] = "Hallo ich bin Hugo."
$lang[..] = ".."
# ... und alle anderen Texte entsprechend
elsif Sprache = Englisch
$lang["Hallo ich bin Hugo."] = "Hi my name is Hugo."
$lang[..] = ".."
# ... und alle anderen Texte entsprechend
end


Jeder Text wird dann aus $lang["Text"] ausgelesen und man muss nur einmal (bei Sprachauswahl) unterscheiden welche Sprache der Spieler ausgewählt hat. Danach kann man sicher sein das $lang["Text"] den Text in der Sprache enthält die der Spieler gewählt hatte.


Der Nachteil an der Lösung ist das du vermutlich nicht immer im Kopf hast welche ID zu welchem Text gehört. Bei $lang["Hallo ich bin Hugo"] weiß man immer worum es im enthaltenen Text geht und nicht groß rätseln muss, obwohl der Text nicht direkt einzusehen ist.

Antar benutzt wohl den Rm2k/3. Deine Rubykenntinisse werden ihm in dem Sinne nicht viel weiter helfen.


@Topic
Ich würde die Variante von Caine bevorzugen. scheint in meinen Augen noch die simpelste.

Macavity
10.01.2008, 11:40
Antar benutzt wohl den Rm2k/3. Deine Rubykenntinisse werden ihm in dem Sinne nicht viel weiter helfen.
Ist das so? Zumindest hier sehe ich keinen Hinweis darauf, aber klar mit dem 2k wird ihm das wohl eher nicht helfen :rolleyes:

Ascare
10.01.2008, 16:09
Der Nachteil an der Lösung ist das du vermutlich nicht immer im Kopf hast welche ID zu welchem Text gehört. Bei $lang["Hallo ich bin Hugo"] weiß man immer worum es im enthaltenen Text geht und nicht groß rätseln muss, obwohl der Text nicht direkt einzusehen ist.
Ich habe bereits schon erwähnt das meine Lösung für 2k/3 ist und das für den XP Ruby die bessere Lösung wäre. Und nee, man muss nicht rätseln, man muss nur gucken bei welcher ID man stehen geblieben ist und dann einfach bei jedem Show Text ein Variable + 1, das reicht schon. ;)

@Topic
Ich würde die Variante von Caine bevorzugen. scheint in meinen Augen noch die simpelste.
Auf den ersten Blick vielleicht, aber bei meiner Lösung gibt es den Vorteil das man a) mehr als 2 Sprachen benutzen kann, b) nicht sofort die englische Variante hinschreiben muss, sondern sie auch später einbauen kann c) zwecks Übersicht alle Dialoge in einem Event hat (man kann bei vielen Dialogen mehrere CEs anlegen, z.B. Texte Intro, Texte Kapitel 1, Texte Kapitel 2 usw.)
d) nicht bei jeder Show Message immer wieder ein Fork Language setzen muss. Ich spreche aus Erfahrung da ich eine zweisprachige Demo rausgebracht habe und genau mein System benutzt habe und das auch jedem weiterempfehlen würde.