Nighthawk.dk

Introduktion til WED og Level Design

Skrevet d. 28. July 2016 af Claus Nielsen.

Nu hvor 3DGS er klar til brug, vil vi se nærmere på WED (World EDitor), og hvordan man opbygger et level til sit spil.

De første skridt

Start WED (WED.exe kan findes i mappen hvor du installerede 3DGS), og lav et nyt level (File -> New Level). Gem det nye level (File -> Save As) og åben Map Properties (under File i menuen). Her kan du, under fanen Main, vælge et script for dit level - klik på New Script-ikonet, og vælg Flythrough. Vi kommer ind på hvad scripts er senere.

Inden vi går i gang, så lad os se på et udsnit af toolbaren, hvor de vigtigste funktioner er nævnt:

Først og fremmest kan du markere objekter i WED med Select, og flytte, dreje, eller skalere det markerede objekt med hhv. Move, Rotate og Scale. Markerede objekter er røde, mens kasser/blokke der ikke er markeret, er hvide (andre objekter vi får brug for senere, som lys og modeller, vises med andre farver når de ikke er markerede). Alternativt kan du også flytte og skalere vha. Edit Box. Derudover er der en række Camera Modes som du kan bruge til at navigere rundt i 3D View-vinduet med.

WED Toolbar-ikoner

Toolbaren i WED fik med A7 nye ikoner, men på mine screenshots fra WED ser de anderledes ud - jeg bruger de gamle ikoner, som kan slås til således:

File -> Preferences -> Vælg fanen Icons -> Slå Use Skin fra.

Nu er du klar til at lave dit level! Start med at lave en kasse (Object -> Add Cube -> Large), og lav den hul (Edit -> Hollow Block, mens kassen er markeret). Du har nu lavet et rum - men du mangler at angive, hvordan det skal se ud (om væggene f.eks. skal være af mursten, klippevæg, eller noget helt andet), dvs. vi mangler at vælge en texture.

WED kan hente textures via såkaldte WAD-filer, der bare er texture-samlinger, og der følger en texture-samling med 3DGS: standard.wad, i undermappen wads til den mappe hvor du har installeret 3DGS. Her ses hvordan du henter en WAD-fil med textures:

Når du har hentet standard.wad og har markeret dit rum, kan du dobbelt-klikke på en texture for at give rummet denne texture. Nu skulle du gerne have noget der ligner dette:

Hollow Block og Grouping

En kasse består af 6 sider, og hver side kan kun ses udefra. Dette betyder, at vil du lave et rum, skal det bestå af 6 kasser (da man ikke kan befinde sig inde i en kasse). Når du bruger Hollow Block på en kasse, laver den din ene kasse om til 6 kasser, således at det bliver et rum (tykkelsen på væggene kan indstilles under File -> Preferences -> Object OptionsOptions-fanen -> Indstil Hollow wall).

De 6 kasser som Hollow Block laver, vil være grouped, dvs. de vil blive betragtet som ét objekt. For at kunne tage fat i hver af de 6 kasser hver for sig (f.eks. for at bruge forskellige textures til vægge, gulv og loft), kan du bruge de to knapper længst til højre i toolbaren: Brug Scope Down hvorefter du kan tage fat i de enkelte elementer, og brug Scope Up når du er færdig.

Dit første rum er nu klar, men før vi kan spille det spil, vi er i gang med, skal dit level "bygges". Hver gang du har lavet en ændring i dit level skal det buildes ("bygges"), før du kan se ændringerne i spillet. Tryk på Build i toolbaren, tjek at Build BSP Map er valgt, og klik OK - vent dernærst til den er færdig med at "bygge", og klik OK.

Når du builder dit level, laves en .wmb-fil, som fortæller Acknex (din game engine) hvordan dit level ser ud.

Du kan nu starte dit "spil" ved at trykke Run i toolbaren.

Flythrough Script

Det script du valgte i tidligere, er den kode/det program der bestemmer hvordan dit spil fungerer.

Vi bruger her Flythrough, der lader dig flyve rundt i dit level med piletasterne eller WASD-tasterne, og kigge rundt når højre museknap holdes nede. Du kan desuden flyve gennem vægge.

Flere rum

Nu hvor vi har det første rum, så lad os udvide med et mere! Lav en kasse mere, brug f.eks. Edit Box fra toolbaren til at flytte den hen ved siden af dit første rum, og lav den større end det første rum. Bemærk at du kan bruge højre museknap og musehjulet til at navigere i Top-, Back- og Side-vinduerne. Brug nu Hollow Block på kassen, og sørg for, at gulvet ligger i samme højde som gulvet i dit forrige rum (i Back- eller Side-vinduerne).

Nu har du to rum, og for at man kan komme fra det ene rum til det andet, skal vi have lavet et hul i væggen. Lav endnu en kasse, og brug Edit Box-tool til at placere den dør, hvor man skal kunne gå fra det ene rum til det andet. Den skal stikke hele vejen gennem væggen, og pas på at den ikke går gennem gulvet eller loftet, for så kommer du til også at skære hul i det! Til sidst kan du også give kassen en texture, for de sider som den skærer hul i, vil få samme texture som denne kasse.

Bemærk: Du skal ikke bruge Hollow Block på denne kasse!

Nu skulle du gerne have noget der ligner dette:

Sørg for at du har den nye kasse markeret, gå op i menuen under Edit -> CSG Subtract for at skære hul, og slet den nye kasse igen. Hvis du ikke har prøvet at navigere i 3D View-vinduet endnu, så prøv det nu! Undersøg hvordan Camera Move, Move Eye, Rotate Eye og Zoom Eye i toolbaren virker, og inspicér hullet i muren i 3D View.

Ser det ikke godt ud, så fortryd med Ctrl + Z (to gange, da du også slettede kassen til at skære med), og prøv igen. Når du er tilfreds, så Build og Run, og så skulle du se noget i stil med dette (det er lidt mørkt, men det gør vi noget ved omlidt):

Den kasse, som blev brugt til at skære hul, har nu bestemt hvilken texture der bliver brugt på alle overfladerne omkring hullet - men vi kan lave om på dette, hvis vi markerer et rum, og trykker på Scope Down i toolbaren (se boksen Hollow Block og Grouping ovenfor). Markér nu den mur, der er skåret hul i, og Scope Down igen, for ligesom da du brugte Hollow Block, så virker CSG Subtract ved at skifte én kasse ud med flere kasser, og alle de nye kasser bliver samlet i en group.

Nu kan du ændre textures på de enkelte blokke i muren. Når du er færdig, så brug Scope Up to gange (én gang for hver gang du brugte Scope Down - eller bare indtil du ikke kan trykke på den mere). Nu kan du gøre det samme med det andet rum, og resultatet skulle gerne blive en pæn overgang fra det ene rum til det andet:

Prøv nu at bygge videre: tilføj et par rum mere, sæt nogle søjler ind (Object -> Add Primitive -> Cylinders -> Vælg f.eks. 8-sidet), eller byg en trappe af kasser, hvis du laver et rum med gulvet i en anden højde. Tip: Hvis du f.eks. skal bruge flere søjler, så lav én søjle, markér den, og brug Ctrl + D til at lave en mere.

Husk at bruge Build før Run når du vil se dit level!

Lys

Næste skridt er at indsætte lys i dit level: dette gør du i menuen under Object -> Add Light.

Lyset er vist som gult når det ikke er markeret, og når du markerer det, vil du se en gul ring, som angiver ca. hvor langt væk ting bliver oplyst. Når du markerer lyset kan du højre-klikke (i f.eks. Top View) og vælge Properties: hvis der ikke kommer et Properties-vindue frem, så kan du finde Properties-boksen i venstre side:

Du kan evt. tage fat i toppen af Properties-boksen og "trække den ud", så det bliver et vindue i stedet. I Properties-vinduet kan du bl.a. sætte Range (rækkevidden på lyset - hvor langt det skal lyse) og farven på lyset.

Udover selve lyset, kan du også bestemme hvordan "mørke" skal se ud: åben Map Properties (under File), gå til fanen Sun, og her kan du finde Ambient, der er "skygge-farven":

Her kan du også indstille "solen", dvs. du kan angive farve og position (positionen angives vha. en vinkel, azimuth, og højden på himlen, elevation). Hvis du ikke har noget tag på dit rum, eller bruger en "himmel-texture" som f.eks. skyblue eller skywhite som "loftet" i et rum, så vil du få sollys. Vælg en hel sort farve for sollyset for at slå det fra.

Indsæt nogle lys i dit level, gem, build og run:

På det andet billede (med kasserne) er de anvendte textures justeret som beskrevet i næste sektion (nedenfor).

Godt at vide

Vi har nu set på noget af det mest grundlæggende i WED, men der er stadig meget at lære - her kommer vi ind på nogle af de mest praktiske ting.

Texture Settings

Hvis du højre-klikker på en texture i panelet i venstre side (f.eks. en texture i standard.wad), kan du vælge Settings, der åbner et vindue med indstillinger for den texture du højre-klikkede på. Hver gang du efterfølgende bruger denne texture vil dine seneste indstillinger blive brugt, men kasser som du allerede har givet den pågældende texture bliver ikke ændret. Du skal derfor give dine kasser samme texture på igen, hvis de skal opdateres til de nye indstillinger.

I Texture Setting-vinduet står der "X" og "Y" to gange: den første gang (med standardværdien 0) angiver positionen (dvs. du kan flytte rundt på en texture på en overflade), og anden gang der står "X" og "Y" (med standardværdi 1.000) er der tale om skalering - og dette er en vigtig parameter, særligt med standard.wad, da disse textures er af dårlig kvalitet, og derfor ofte ser bedre ud hvis de skaleres ned, f.eks. til 0.600 (brug samme værdi for X- og Y-skalering, da din texture ellers bliver strukket).

Du kan f.eks. også dreje en texture med Angle, og gøre den lysere eller mørkere med Ambient.

Object Properties

Hvis du markerer en kasse, højre-klikker, og åbner Properties-vinduet, vil du kunne finde disse to faner:

Lad os starte med Properties-fanen, her har du bl.a. følgende muligheder:

  • Invisible - Afkryds dette felt, for at gøre blokken usynlig (kan sættes på alle objekter).
  • Passable - Afkryds dette felt, for at lade andre objekter gå igennem kassen (f.eks. kan player'eren kan gå gennem en kasse med dette flag sat).
  • Texture Lock - Låser texture-koordinater på din kasse. Uden dette flag vil dine textures flytte sig, hvis du flytter din kasse.
  • Material - Her kan du vælge en shader til din kasse (kræver minimum Commercial Edition!).
  • Ambient - Her kan du ændre hvor lys/mørk din kasse skal fremstå.

Derudover er der Surface-fanen, hvor du kan markere de enkelte sider på din kasse. Dette kan du f.eks. bruge hvis forskellige sider af din kasse skal have forskellige textures. Desuden kan du indstille position (Offset), skalering (Scale), og rotation (Angle) af din texture på den markerede side af kassen (og kun for den markerede side. Brug 3D View til at se hvilken side, der er markeret (rød), og skift side med pilene på Surface-fanen eller Select-tool (klik på en overflade i 3D View mens Surface-fanen er åben).

Desuden har du knapperne med Texture Alignment: prøv dig frem, og se hvordan de virker! Specielt F ("fit") kan være brugbar. Kasserne på dette billede er lavet ved brug af F (kryds All af mens du trykker F for at tilpasse alle kassens sider på én gang), bortset fra den markerede side, der måtte indstilles manuelt fordi kassen er drejet:

Hvordan laver jeg flottere levels?

Hvis dine levels ikke ser super godt ud endnu, er der flere grunde til det: for det første er textures fra standard.wad af dårlig kvalitet, og du kan finde mange gratis textures online, der er mindst ligeså gode. Derudover er dit level kun opbygget af kasser og hvad man ellers kan finde under Object -> Add Primitive - mange af de ting man putter ind i sit level er models (som vi begynder at bruge i næste afsnit), eller sprites ("flade billeder"). Til udendørs-levels kan man anvende Terrains - de kan laves i programmet MED der følger med 3DGS, ud fra et billede (et såkaldt heightmap der angiver højden for de forskellige xy-koordinater).

Sidst men ikke mindst er der shaders, der simpelthen bare får alting til at se meget bedre ud: lige fra realistisk vand til bump-mapping, per-pixel lighting og toon-shaders. Prøv at finde eksempler på disse shaders på nettet, så du kan se, hvad man kan med dem - de kan virkelig gøre en forskel. Og faktisk følger en del shaders med 3DGS, men desværre skal du som minimum have Commercial Edition for at kunne bruge dem.

Level design kræver desuden en del øvelse. Selvom der ser ud til at være lang vej fra det du har lavet indtil videre, og til de professionelle spil man kan finde f.eks. på Steam, så kan det sagtens lade sig gøre med 3DGS! Næste gang du spiller et spil (særligt indendørs skydespil), så læg mærke til hvordan deres levels er opbygget.

Nu hvor du har lært det grundlæggende om WED, vil vi i næste afsnit lave et egentligt spil, så du kan rende rundt i dit level og skyde nogle modstandere!

Relaterede ressourcer
Acknex Unlimited

Mange ressourcer til 3D Gamestudio.

Se mere her

3D Gamestudio

Game-engine til udvikling af 3D-spil.

Se mere her

×