F: Ich habe im MED ein Terrain erstellt, aber mein Model bewegt sich nur den halben Weg darüber und stoppt dann bzw. verhält sich so, als liefe es gegen eine Wand.
A: Wenn Ihr Model im MED so aussieht, kann es nichts erklimmen, was steiler ist als max_height, nicht mal eine Stufe! Setzen Sie das Origin Ihres Models auf eine höhere Position.


 
 

F: Wie mache ich gute Texturen ohne Ränder?
A: Laden Sie sich das Freeware Tool namens sTile herunter:
http://harmware.com/stile.htm
 
 

F: Ich weiß, dass man die Werte für Auflösung und Farbtiefe mit “video_switch” ändern kann, aber wie kann ich die Grundeinstellungen vom System wieder herstellen?
A: Es gibt keine Grundeinstellungen – Sie setzen sie am Anfang mit den Variablen video_mode und video_depth. Falls Ihr Spiel mit den Werten video_mode = 7 (800 x 600 Pixel) und video_depth = 16 (16 Bit = 65536 Farben) startete, können Sie diese Werte mit diesem Code wiederherstellen:

function restore_settings()
{
    video_swith (7, 16, 0);
}

on_r = restore_settings;
 
 

F: Wie kann ich einen Level Block in einer bestimmten Größe definieren, zum Beispiel 20 x 30 x 40?
A: Starten Sie WED und fügen Sie einen kleinen Würfel in Ihrem Level ein – er hat die Größe 64 x 64 x 64 Quants. Rechnen Sie dann aus 20 : 64 = 0,31; 30 : 64 = 0,47; 40 : 64 = 0,62. Wählen Sie “Eigenschaften” des Würfels und klicken Sie auf “Position”. Geben Sie die Werte für “Scale” ein und Sie erhalten Ihren 20 x 30 x 40 Würfel.


 
 
 

F: Können Sie mir ein Beispiel für draw_textmode geben?
A: Sehen Sie sich diesen Code an:

starter init_text()
{
     draw_textmode("Times", 2, 30, 40); // choose the font "Times New Roman", italic, 30 points, transparency factor = 40
     while (1)
     {
          draw_text("Geronimo!", 300, 200, vector(250, 250, 250)); // draw white text (rgb = 250, 250, 250) at (300,200) pixels
          wait (1);
     }
}


 
 

F: Ich habe ein Skybox Model, das dem Spieler folgt, wenn er läuft. Weil diese kleiner ist als das Level kann der Spieler keine Objekte sehen, die außerhalb der Box sind. Läuft der Computer dadurch schneller oder wird alles außerhalb der Box trotzdem gerendert?
A: Alle Objekte außerhalb der Skybox werden gerendert, aber Sie können clip_range auf einen Wert setzen, der sie entfernt. Wenn Ihre Skybox einen Durchmesser von 20.000 Quants hat, schreiben Sie diese Zeile in Ihre Main Funktion:

clip_range = 12000; // sphere_diameter * 0.6
 
 

F: Ist es möglich, dass ein Model auf Fog #1 reagiert und ein anderes auf Fog #2?
A: Nein, das ist nicht möglich. Sie können allerdings einem der Models farbiges Licht geben, um seine Farbe zu ändern:

action color_changer
{
     my.ambient = 100;
     my.light = on;
     my.bright = on;
     my.lightrange = 0;
     my.lightgreen = 0;
     my.lightblue = 0;
     while (1)
     {
          my.lightred = 230 + random(25); // small red flicker
          wait (1);
     }
}


 

 
F: Wie kann ich den Spieler in das nächste Level befördern, wenn er alle Missionsziele erreicht hat?
A: Der Code unten startet das nächste Level genau dann, wenn Sie 5 oder mehr Kisten aufgesammelt haben, indem Sie sie berühren:

var boxes_collected = 0;

string office2_wmb = <office2.wmb>; // next level

action get_ammoboxes
{
     while (player == null) {wait (1);}
     my.passable = on;
     while (vec_dist (player.x, my.x) > 100) {wait (1);}
     my.invisible = on;
     boxes_collected += 1;
}

starter next_level()
{
     while (boxes_collected < 5) {wait (1);} // need to get at least 5 boxes
     while (key_any) {wait (1);} // wait until all the keys are released on the keyboard
     level_load (office2_wmb);
}


 
 

F: Wie kann ich etwas mit mehreren Schaltern aktivieren? Sagen wir, ich möchte, dass sich eine Tür öffnet, wenn der erste Knopf auf “Aus” steht, der zweite auf “Ein” und der Dritte wieder auf “Aus”.
A: Benutzen Sie ein Models mit zwei Skins und dem Code unten; geben Sie den Knöpfen, die eingeschaltet sein müssen die Action button_on und den anderen button_off. Klicken Sie auf einen Knopf, um ihn umzuschalten:

var number_of_buttons = 0;
var button_status = 0;

function change_status()
{
     my.skin %= 2;
     my.skin += 1; // my.skin should be 1 or 2
     if (my.skill1 == 1) // this button should be set to "on"
     {
          if (my.skin == 2) // if it is set to on
          {
               button_status += 1; // add 1 to button_status
          }
          else // if it is set to off
          {
               button_status -= 1; // subtract 1 from button_status
          }
      }
     if (my.skill1 == 1000) // this button should be set to off
     {
          if (my.skin == 1) // if it is set to off
          {
               button_status += 1; // add 1 to button_status
          }
          else // if it is set to on
          {
               button_status -= 1; // subtract 1 from button_status
          }
     }
}

starter check_status()
{
     sleep (1);
     while (button_status != number_of_buttons) {wait (1);}
     // call the function that opens your door here
     beep;
}

action button_on
{
     number_of_buttons += 1;
     my.skin = 1; // set to "off" at game start
     my.skill1 = 1; // that's a button that needs to be set to on
     my.enable_click = on; // click it to change its status
     my.event = change_status;
}

action button_off
{
     number_of_buttons += 1;
     button_status += 1; // "off" is ok for this button
     my.skin = 1; // set to "off" at game start
     my.skill1 = 1000; // that's a button that needs to be set to off
     my.enable_click = on; // click it to change its status
     my.event = change_status;
}