DADIU Produktion. en introduktion til Source for DADIU programmører. Bo Bendtsen Lasse Laursen 23.
|
|
- Peder Henriksen
- 8 år siden
- Visninger:
Transkript
1 DADIU Produktion en introduktion til Source for DADIU programmører Bo Bendtsen Lasse Laursen 23. august 2006 Vejleder: Jon Sporring
2 Indhold 1 Forord Definition af termer DADIU Dolores Produktions forløb Praktiske forhold Arbejdspladsen og roller Konflikter og problemer Hvad er Source? Kilder til Source Klient-server-design Entiteter Input/Output systemet Hammer Arbejde i Source Partiel eller fuldstændig konvertering Programmering i Source Ungarsk notation Konkrete tips til programmering i Source Entiteter Tilstande og funktioner Entiteter og Data Descriptions Input/Output Source AI Think-funktioner States, schedules, tasks & conditions Interessante funktioner i Sources AI Gennemgang af en entitet QC-Scripting En rekvisitmodel En NPC model Materialer og teksturer Lydsystemet i Source Soundscripts Soundscapes Ambient_generic Response System Source konsollen Optimering af spillet og dets baner
3 4.9.2 Fintuning af forskellige aspekter ved motoren Manipulation af selvdefinerede konsolvariabler Tilgang til banens entiteter Afprøvning og debugging af Source AI Scripts og ressourcer Ressource-mapper Scripts-mapper GCF-filer og decompiling Afsluttende bemærkninger 48 A Nyttigt Software 50 B Kildekode til base NPC klassen 52 C Billeder fra Dolores 55 D Designdokument 58 Litteratur 59 2
4 1 Forord Videnskabelig arbejde forløber i den ideelle verden tilnærmelsesvis med, at man på grundlag af teoretisk viden efterprøver en idé og dokumenterer resultatet. Forløbet, der førte til denne rapport, passer ikke med denne beskrivelse. DADIU er det nye, danske spilakademi. DADIUs mål er at uddanne mennesker på tværs af faggrupper i at producere computerspil. Forfatterne til rapporten, du nu læser, deltog i en DADIU-spilproduktion, der blev afholdt i marts måned Det specielle ved situationen var, at vi som forfattere ikke havde nogen videre teoretisk eller praktisk viden om spilproduktion og slet intet kendskab til den udleverede spilmotor. Denne rapport er paradoksal i den forstand, at vi har skrevet den til os selv - og fremtidige studerende. Den skulle gerne svare på nogle af de spørgsmål, vi havde, før vi gik i gang med spilproduktionen. Source SDK er navnet på værktøjspakken, der i skrivende stund bliver brugt i DADIU-regi. Det er en spilmotor, der er blevet brugt til succesfulde kommercielle spil som f.eks. Half-Life 2. Source SDK et består af en række værktøjer og en delvist åben kildekode. Desværre er den eksisterende dokumentation til Source i bedste fald mangelfuld og lidet pædagogisk. Det er det forhold, der har motiveret os til at skrive en introduktion til Source foruden en beskrivelse af selve spilproduktionen. Vi håber at kunne dokumentere forståelse af stoffet, og formidle nogle af de erfaringer vi gjorde til fremtidige programmører på DADIU produktionerne. Denne rapport er ikke en komplet dokumentation af Source. Da rapporten bygger på vores praktiske erfaringer og tydning af tilgængelige dokumentation, ved vi, at den ikke belyser alle aspekter af motoren. Den svarer heller ikke på alle de spørgsmål, der måtte komme gennem en spilproduktion. Men vi håber, den kan bruges til at skabe overblik over motoren og de opgaver, der kan forekomme i en spilproduktion. En stor del af spilproduktion for programmørerne ligger i at finde ud af, hvordan forskellige spilmekanikker før er blevet implementeret i Source og få hele spillet til at spille, før deadlinen. Det er i langt højere grad en praktisk opgave, end de teoriske opgaver vi er vant til i universitetsverdenen. Rapporten har vi valgt at opdele i tre dele - den første del (kapitel 2) beskriver DADIU-spilproduktionsforløbet. Den anden (kapitel 3) er en overordnet introduktion til Source, opbygningen og organisation. Og den tredie og sidste (kapitel 4) går mere i dybden med udvalgte aspekter. Den sidste del er meget programnær, og bør ikke læses fra ende til anden. Underkapitlerne kan læses efter behov, mens man arbejder med Source. Rapporten bliver som nævnt meget programnær, og forudsætter derfor, at læseren kan bruge C++. Vi har valgt at bruge engelske fagtermer, hvor vi mente, at danske oversættelser ville forvirre mere end gavne. I det efterfølgende afsnit findes en 3
5 oversigt over termer og forkortelser. 4
6 1.1 Definition af termer Følgende er en liste af termer som vi benytter løbende i denne rapport: AI - Forkortelse af Artificial Intelligence. Kunstlig Intelligens. Brush - Et geometrisk objekt i verdenen. Der skelnes mellem to forskellige typer brushes i Hammer. World brushes som er et solidt objekt der ikke kan flyttes eller tilintetgøres i selve spillet. Brush-entiteter som er entiteter knyttet til volumen, som brushen udspænder. Bumpmapping - En teknik der giver en tekstur yderligere detaljer uden at gøre formen på overfladen den ligger på mere kompleks. Teknikken giver en plan overflade en slags dybde. Klient-entitet - En entitet der bliver afviklet på klientsiden af Source motoren. NPC - Forkortelse af non-player character. En figur i spillet der ikke bliver kontrolleret af spilleren. Path-finding - Direkte oversat betyder dette sti-søgning. Udtrykket bruges ofte i en algoritmisk forbindelse, hvor formålet er at finde fra et punkt frem til et andet i f.eks en virtuel verden. SDK - Forkortelse for Software Development Kit. Server-entitet - En entitet der bliver afviklet på serversiden af Source motoren. Spekular refleksion - En del af Phongs lysmodel, der benyttes til visuelt at efterligne lys. Trigger - Udløser. Bliver brugt i sammenhæng med entiteter, til at informere om tilstandsændringer. Wiki - En wiki et internetværktøj til i fællesskab at se og vedligeholde en hjemmeside. 5
7 2 DADIU DADIU[2] - Det Danske Akademi for Digital Interaktiv Underholdning - er et samarbejde mellem ni kandidatuddannelser og tre kunstskoler spredt ud over hele danmark. Formålet er at uddanne mange forskellige faggrupper i at lave computerspil. En grov opdeling af faggrupperne ville være de organisatoriske, de kreative og de tekniske. DADIU-forløbet består dels af fagspecifik undervisning på de deltagende uddannelser, en gennemgang af fællespensum i DADIU-regi og to fællesproduktioner. Fællespensum foregår som 3 ugers fællesundervisning på tværs af faggrupperne. Målet er at give deltagerne en basal indsigt i de andre faggruppers arbejde og skabe et fælles sprog. De to produktioner bliver løst i hold sammensat af folk fra de forskellige uddannelsessteder. Alle faggrupper, der befinder sig i en kommerciel produktion, er tilstede i dette forløb. Dette skal sikre, at det færdige projekt er en afrundet og realistisk produktion, dog i mindre størrelsesforhold. Der skal laves en spilbar prototype. Det har hvert deltagende hold fire ugers præproduktion og fire ugers reel produktion til. Først og fremmest er det de tværfaglige udfordringer og kulturforskellene mellem uddannelserne, der gør DADIU-produktioner mere realistiske end de opgaver, folk ellers løser på deres respektive uddannelser. Der er også rigelig udfordring til de forskellige faggrupper, dog er fokus væsentlig mere praktisk end teoretisk. Opgaverne, som nogle deltagere, især også datalogerne, vil blive stillet overfor i sådan en produktion, vil i visse tilfælde være mindre fagligt relevante end andre. DIKU er ny deltager i DADIU, så det var første gang, der var DIKUstuderende med i en DADIU-produktion i marts Som DIKU-studerende betød det, at vi ikke havde fået direkte spilorienteret undervisning eller deltaget i mere end en trediedel af fællespensumet. Fællesproduktionen marts 2006 var DADIUs første årgangs anden og afsluttende produktion. Til den første produktion blev der brugt et udviklingsværktøj, der hed Virtools[9], men det var der ikke stor tilfredshed med og de færdige produktioner kunne ikke frit distribueres. Så værktøjspakken blev skiftet ud med Valves Source, der ikke lider under den samme restriktive distributions aftale. Dog skal man eje Valve Softwares spil, Half-Life 2 - som Source oprindeligt er udviklet til - for at kunne spille DADIU-produktionerne. Half-Life 2 er et populært og anmelderrost første-persons-skydespil. Det har et delvist åbent SDK og bliver i forvejen brugt til mange hobbyproduktioner i form af modifikationer til originalspillet (se afsnit 4.1). 6
8 2.1 Dolores Dolores[3] er titlen på vores holds spilproduktion. Vi vil igennem rapporten hovedsageligt tage udgangspunkt i de erfaringer, vi gjorde os på vores hold. Vi vil dels prøve at give et indblik i, hvordan vi oplevede produktionen og bruge det som enkelte eksempler i vores tekniske introduktion til Source. Holdet bestod af: 1 instruktør, Jan Rahbek 1 spildesigner, Henrik Bennetsen 1 projektleder, Hans von Knut Skovfoged 2 grafikere/designere, Rune Hauberg Brimer (Lead Artist) og Susanne Møller Nielsen 1 lyddesigner, Frans Galschiøt Quaade 2 animatorer, Karsten Madsen og Jeppe Sandholt 3 programmører, Anders Thaulow og denne rapports forfattere; Bo Bendtsen og Lasse Laursen. Vi vil i afsnit 2.4 komme mere ind på, hvad de enkelte roller dækker over. 2.2 Produktions forløb Præproduktionen startede som nævnt fire uger før selve produktionen. Her var det instruktøren, spildesigneren, projektlederen og Lead Artist ens opgave at få på plads, hvilket spil de ville lave, hvordan historien og rammen skulle være, hvordan det skulle se ud og desuden lave en produktionsplan for at sikre et afrundet og spilbart slutprodukt. Designdokument, manuskript, concept art og produktionsplan blev udarbejdet i februar. Som programmører forberedte vi os ved at se på de praktiske forhold (se afsnit 2.3) og sætte os ind i Source. Det sidstnævnte gjorde vi ved at søge efter dokumentation og tutorials (se litteraturlisten og f.eks. My First Mod på Valves wiki[6]). Vi havde også en række møder med projektlederen, spil- og lyddesignerne så vi kunne få en overordnet idé om, hvilke udfordringer vi kunne forvente i marts. Produktionen løb igennem hele marts. Vi havde aftalt en almindelig arbejdsuge fra ni til sytten, mandag til fredag. Hver dag blev indledt med et morgenmøde. Morgenmødet blev brugt til at fortælle hinanden, hvad man lavede, og hvor langt man var med sine opgaver. Det var især projektlederen, der styrede mødet og sikrede sig, at folks opgaver overholdt produktionsplanen. Udover at møderne opfyldte et praktisk behov for kontrol med produktionsplanen, var de også meget motiverende, fordi man kunne høre, 7
9 at det gik i den rigtige retning på alle fronter. Selve arbejdsgangen foregik meget selvstændigt. Vi sad i det samme lokale, så hvis man havde brug for at snakke med nogen fra de andre faggrupper, spurgte man bare. Den flade stuktur vi havde på holdet, i modsætningen til en hierarkisk struktur, førte til et meget naturligt samarbejde. Vi spiste frokost i fællesskab og brugte også spisepausen til hyggelige, uformelle møder. Ikke alle faggrupper var med i hele produktionen. Vores animatorer deltog kun i de to midterste uger. Derfor var meget af planlægningen og pipeline en tilrettelagt efter hvornår, de var tilgængelige. Det var ikke de store dramaer, der prægede hverdagen. Vi arbejdede fremad mod deadlinen og da vi nærmede os den, arbejdede vi endnu mere. Ellers var den daglige rutine kun afbrudt af spiltest og besøg af DADIU og branchefolk. Mod slutningen af forløbet blev visse ressourcer, der ikke kunne deles, flaskehalse. Det krævede mere koordination og ledelse. Projektlederen sørgede for at optimere udnyttelsen af de kritiske ressourcer. Der var dog mod afleveringsfristen konflikter, der blussede op, som ikke blev bilagt. Det førte heldigvis ikke til nedbrud i selve produktionen, men lagde lidt en dæmper på det gode humør. Under projektforløbet blev der udarbejdet et designdokument (bilag D). Projektlederen stod hovedsageligt for dette dokument, men det var tanken, at de forskellige faggrupper hver skulle lave et afsnit. Da designdokumentet skulle færdiggøres var programmørernes arbejde med spillet langt fra slut. Vi vurderede, at hvis vi skulle skrive et afsnit til designdokumentet, ville vi ikke kunne nå at få spillet færdig i den tilstand, vi ønskede. Vi står ved vores prioritering af selve produktet, i retrospekt må vi sande, at det var en fejl udelukkende at lade vores projektleder skrive vores afsnit. Hvis vi havde prioriteret programmørnotaterne i designdokumentet minimalt, ville det have gjort en verden til forskel. Det var heldigvis ikke dårligt humør og konflikter, der prægede produktionen, tværtimod var det god stemning og engagement, der bedst beskrev vores produktionshold. Det færdige spil var et, vi alle var glade for. I bilag C er der billeder fra spillet, der i øvrigt kan hentes fra hjemmesiden: [3]. 2.3 Praktiske forhold Formålet med dette afsnit er at videregive nogle gode råd om de praktiske forhold, der er ved en DADIU-produktion. Som programmør på et DADIUprojekt forventes det, at du supporterer og vedligeholder de maskiner, holdet arbejder på. Eller i det mindste at stå for kontakten med det personale, der har ansvaret. Der er flere ting, man bør gøre for at forberede sig på projektarbejdet: Man kan sikre sig, at der er fungerende maskiner, og at de har installeret det software produktionsholdet har brug for. Man kan se en liste 8
10 i appendiks A over noget af det software, vi gjorde brug af til vores produktion. Vi fandt det uundværligt at have et versioneringsystem. Vores valg faldt på Subversion (SVN) der stort set gnidningsfrit kan integreres i Microsoft Windows Explorer med TortoiseSVN. Det er ikke nok at programmørerne kan bruge SVN, de bliver nødt til at sætte sig nok ind i systemet til at kunne lære resten af holdet at bruge det. Der findes et par gode manualer på nettet: [16] og [7]. Husk Murphys lov! Sørg for at der dagligt bliver lavet backup af serveren med versioneringssystemet. Husk at fortælle resten af holdet at det er kun er de ting, der er committed til versioneringssystemet, der bliver taget backup af. Under forløbet brugte hele holdet en wiki til at samle alle informationer om projektet. Og vi brugte siden til at koordinere og dokumentere vores arbejdsindsats og til at oprette en vidensdatabase. Det er værktøj, der skal være oppe at køre allerede fra dag et i præproduktionen. (I vores gruppe havde spildesigneren allerede sat en wiki op til holdet.) Alle fire punkter ligger udenfor programmørernes opgaver til selve spilproduktionen, men de er kritiske og skal løses. Og programmører er dem, der er bedst kvalificerede til at løse de opgaver på et DADIU-hold. 2.4 Arbejdspladsen og roller I det forrige afsnit (2.2) skitserede vi produktionsforløbet og den flade struktur vi havde i vores gruppe. Formelt set var spildesigneren, instruktøren og projektlederen den øverste ledelse i gruppen. Så længe det gik, som det skulle, havde folk selv lov til at bestemme over, hvordan de arbejdede. Det var kun de få gange, planen var ved at skride, at folk påtog sig deres lederroller og gav deciderede ordrer. Det førte til enkelte konflikter. Nogle handlede grundlæggende om forskellig prioritering, men de overskyggede ikke den fælles vilje til at lave et færdigt og afrundet produkt. Andre bundede i kreativ uenighed, for det meste pga. miskommunikation. Den sidste type konflikter, vi vil se lidt mere på, er nogle af de tværfaglige konflikter, vi oplevede. Næsten alle de delelementer af spillet, der blev lavet, krydsede ind over programmørernes fagområde. Når de færdige ressourcer - lyd, grafik, animation, baner osv. - skulle ind i selve spillet, var det programmørerne, der for det meste lavede den sidste efterbehandling. I vores produktion var programmørerne den højeste autoritet, omkring hvad der var teknisk muligt, og hvor meget arbejde, det ville kræve. Et konkret eksempel var lydsystemet. Lyddesigneren havde skitseret et avanceret system, der bl.a. skulle kunne væsentligt mere end Sources eksisterende system. Det ville bestemt være 9
11 muligt at implementere, men vi vurderede, at det ville tage alle de programmørressourcer, vi havde, hvis ikke mere. Men så ville vi ikke have kunnet lave noget andet. Dette er også et godt eksempel på, hvor smidig vores flade stuktur var: Lyddesigneren og programmørerne tog diskussionen direkte med hinanden og fandt frem til praktisk mulige løsningsforslag. På vores hold var vi meget heldige med, at alle faggrupperne var fleksible nok til at krydse indover hinandens faggrænser. Det betød f.eks., at vores spildesigner stod for det meste af bane-implementationen, at vores lead artist selv fandt ud af de fleste tekniske krav for modeller til Source og at vores projektleder og instruktør lavede nogle af de trivielle teksturer og banedesign. Denne fleksibilitet gjorde, at alle folk hele tiden hjalp til, også selvom alle opgaverne ikke altid lå i deres ansvarsområde. De tværfaglige udfordringer var dem, der gav os allermest i DADIUforløbet, og det bør betrages som et af de vigtigste aspekter for at deltage i et sådan projekt. 2.5 Konflikter og problemer Vores hold oplevede en række problemer under selve spilproduktionen (se afsnit 2.2 og 2.4). Fra forfatternes perspektiv var vores problemer minimale i forhold til nogle af problemerne de andre DADIU-hold oplevede. I dette kapitel vil vi nævne nogle af problemerne, som andre grupper oplevede i deres produktionsforløb for at fremhæve, at det mere er reglen end undtagelsen, at der opstår problemer. De er kun medtaget for at skabe et mere alsidigt billede af, hvilke udfordringer et DADIU-forløb kan indeholde. I en enkelt gruppe var der folk i ledelsen, der faldt fra mellem præproduktionen og selve produktionen. Det kan give stor turbulens og uro i en gruppe, når der pludselig skal hyres en ny person til jobbet udefra. Der kan nemlig være forskel på motivationen til et betalt job og et uddannelsesprojekt. Der var også grupper der havde problemer med faglig fleksibilitet og kommunikation. Det er meget vigtigt, at kommunikation ikke kun går fra ledelse og ned til fodfolket. Man bliver nødt til at være villig til at lytte til hinanden og stole på hinandens faglighed, hvis der ikke skal opstå uløselige problemer. Fordomme om, at kunstnere er nogle følsomme gemytter, der ikke vil gå på kompromis med deres kunstneriske ambitioner, gik også i opfyldelse i visse grupper. Det er en balancegang mellem, hvornår man skal stå ved sine ambitioner, eller hvornår man skal kill your darlings. Designvalg, kreative og tekniske kan også vise sig at være beskæmmende for det færdige produkt. Der er ikke andet at sige til det, end 10
12 at man skal være dygtig og heldig til at træffe de rigtige valg. Det er ikke tid til ombestemme sig mange gange. Der skal sættes realistiske mål. Vores gruppe havde planlagt en minimumsløsning for alle spillets aspekter. Så blev der bygget ovenpå den plan med yderligere indhold og funktioner. På den måde var det lettere at skære fra, når ressourcerne blev knappe. Hvis man ikke følger en lignende fremgangsmåde, kan man risikere at ende med et spil, der helt mangler visse aspekter. I sidste ende afhænger meget af forløbet, og hvor mange problemer man får undervejs, af kemien mellem holdets medlemmer. Det er ikke nok, at folk er fagligt kompetente. DADIU-produktionsforløbet er meget intenst og tidskrævende, så det afhænger af, hvor heldig man er med sin gruppe. Hvis man ikke fungerer godt sammen, bliver det en meget hård opgave at komme igennem. Man skal ikke undervurdere, hvor meget det betyder for projektforløbet, at holdets deltagere lægger vægt på de sociale aspekter. 11
13 3 Hvad er Source? Source er en spilmotor udviklet af Valve Software[8]. Motoren blev udviklet til spillet Half-Life 2 og er siden blevet brugt i andre spil og til et utal af modifikationer af spillene (se afsnit 4.1). Source følger mange af de traditioner, som Quake[10] grundlagde. De har spilstilen tilfælles - første-personsskydespil. Udover det har de også en åbenhed overfor at ændre på spillet tilfælles, bl.a at ændre på reglerne eller spillets design. Source er en ekstrem skalerbar motor med mange kraftfulde komponenter som f.eks. animationssystemer, GUI, kunstig intelligens, netværkskode og fysikmotor. For at få et overblik over hvad spilmotoren Source kan, er det en meget god idé at spille Half-Life 2 igennem. Det giver et rigtig godt indblik i, hvad motorens muligheder er. Når man så ønsker at implementere noget nyt, der i større eller mindre grad ligner noget, man har set i Half-Life 2, har man muligheden for at kigge på ressourcerne (f.eks. kode, såvel som bane - se afsnit ) for at lære, hvordan det er gjort før. Valve har frigivet et SDK til Source. SDK et indeholder en delvist åben kildekode og en samling af værktøjer. En stor del af værktøjet er konverteringsværktøjer, der skal gøre det muligt at importere ressourcer til spilmotorens format. De mest interessante dele af SDK et er kildekoden og leveleditoren Hammer, der gør det muligt at ændre spillet fundamentalt. Source er en meget kraftfuld motor, men det er som tidligere nævnt ikke al kildekoden, der er frigivet i SDK et. Du får ikke lov til at lave din egen eksekverbare main-fil eller til at kigge under motorhjelmen på de grundlæggende grafik- eller fysikmotorer. Source burger den kommercielle Havok[4] pakke til simulering af fysik. Dvs. til at udregne de fysiske objekters opførsel i spilverdenen, når de kastes rundt, eller når modstanderne falder sammen som kludedukker. I resten rapporten vil vi kort komme ind på nogle af de værktøjer, vi brugte i produktionsforløbet, men hovedsageligt vil vi dykke ned i kildekoden og dennes opbygning og design. 3.1 Kilder til Source På trods af at Source ikke er en veldokumenteret spilmotor, findes der en stor brugerbase og et stort fællesskab omkring den. Der er en god chance for, at andre mennesker har forsøgt at implementere et eller andet, som man selv sidder og kæmper med. Vi brugte selv en del tid på at undersøge andre modifikationer, der allerede fandtes og var dokumenterede: [17] og [15]. Selvom det ikke nødvendigvis giver indsigt i de problemer, man selv skal løse, er det stadig meget fornuftigt at få indblik i, hvad andre har forsøgt, og lære af deres erfaringer i Source. 12
14 Valves wiki[6] var den kilde, vi brugte mest. I resten af rapporten vil vi mange gange henvise til sider i denne wiki. På trods af dens mangler er det den eneste officielle, online kilde til Source. 3.2 Klient-server-design Source er bygget efter en klient-server-model. Dette designvalg gennemsyrer hele Source og medfører, at også et single-player-spil vil have en klientog en serverdel. Dvs. at et Source spil kører en serverproces og mindst en klientproces. Det er en åbenlys fordel, hvis man skal lave et multi-player-spil, men hvis man står med et klassisk single-player-spildesign kan det være sværere at acceptere, at man skal sætte sig ind i en klient-server-arkitektur. Der er dog et par fordele ved det; helt åbentlyst er der færre omkostninger ved at få tilføjet mulighed for multi-player til sit spil senere, hvis man allerede har designet sin kode til at understøtte et klient-server-design. Derudover opfordrer det også til pænt kodedesign. Man er tvunget til at tænke sig om pga. det klare snit mellem klient og server. Det betyder dog også, man skal tænke kreativt for at gøre ting, der ikke helt passer ind i interfacet mellem klient og server. Da klient-server-kommunikation skal kunne foregå over nettet, er der visse begrænsninger på, hvad man kan sende mellem de to dele. Alene det at synkronisere de to dele er en stor udfordring. Der er en meget traditionel ansvarsfordeling i Source - det er serveren der vedligeholder den virtuelle verdens tilstand, og klienterne der gør den tilgængelig for brugerne. 3.3 Entiteter Den virtuelle verden, som Source simulerer, består af aktive og inaktive elementer. I Source bliver de aktive elementer kaldt for entiteter, og de inaktive for brushes. Fjender, venner, møbler, våben og triggers er alle sammen entiteter. Det er entiteterne, der introducerer liv i en ellers statisk verden kun bestående af ubevægelig geometri. Entiteterne kan betragtes som byggeklodserne for en interaktiv verden, og samtidig tilbyder de også en uafhængig og nem tilgang til at introducere nye funktioner i Source. Der findes tre hovedtyper af entiteter i Source: Logical Entity - En såkaldt logisk entitet. Denne type entitet har ikke nogen position i verdenen eller nogen visuel repræsentation. Praktisk set har entiteten faktisk en position, men denne er for alle intentioner og formål unødvendig. En logisk entitet eksisterer kun for at kunne modtage input, udføre en given funktion og til sidst sende output afhængig af hvad entiteten skal kunne. Et eksempel på denne slags entitet er en tæller, der tæller det antal fjender, man har nedkæmpet. 13
15 Model Entity - En entitet med en tilknyttet model som visuel repræsentation. Den kan bevæge sig igennem verden og er ofte interaktiv. Et godt eksempel på denne slags entitet er en NPC. Brush Entity - Disse entiteter er skabt fra brushes, og udgør et volumen i spilverden. Ofte bruges disse entiteter som triggers, der bliver aktiveret, når brugere bevæger sig ind i entiteten. En anden funktion ville være døre og elevatorer. Bliver en brush brugt som en entitet, går den fra at være et statisk element til et aktivt element. Omvendt kan man lave modeller om til statiske brushes. Hver af disse kan bruges til samme formål, men der vil ofte være en type, der egner sig bedre end de andre. I det udleverede SDK til Source er kildekoden til mange af entiteterne, som blev brugt til Half-Life 2, også tilgænglige. Desværre er dog ikke alle tilgænglige. F.eks. er lydentiteten evn_soundscape (omtalt i kapitel 4.8) ikke direkte at finde i den udleverede kildekode Input/Output systemet Næsten al dynamik, Source kan levere, er resultatet af, at forskellige entiteter kommunikerer sammen og reagerer på kommunikationen. Kommunikationen, der foregår iblandt entiteterne, er ofte stærkt afhængig af den verden, de befinder sig i. På grund af dette bliver kommunikationen tilrettelagt i Valves level-editor - Hammer - ved at bruge et system ved navn Input/output system, eller forkortet IO System. Alle entiteter i Source kan kommunikere vha. et antal input og output. Dvs. en entitet kan sende et output eller modtage et input fra en anden entitet. Ethvert output kan forbindes med ethvert input, hvilket tillader avanceret og kompleks interaktion mellem forskellige entiteter. Et output bliver som regel sendt afsted når en entitetstilstand ændrer sig, f.eks. hvis der bliver trykket på en knap, en dør er blevet lukket, eller et ur har talt ned. Et input sørger for en tilstandsændring ved en entitet. Når et output, som er forbundet med et andet input, sendes afsted, bliver inputtet aktiveret. Et eksempel på dette kunne være, at spilleren bevæger sig ind i et område, hvilket medfører at et output bliver sendt til en lysentitet. Områdets output var forbundet med lysets tænd -input, og dermed tændtes lyset. Teoretisk set er der ingen begrænsning på antallet af reaktioner, som man kan bygge ind i én lang kæde. Vi vil beskrive selve input/output-systemet nærmere i afsnit
16 3.4 Hammer Som tidligere nævnt er Hammer Valves egen level-editor, der følger med Sources SDK. Bemærk at definitionen level-editor ikke er bred nok til at dække alt det, som Hammer reelt kan bruges til. For at give et indblik i hvor omfattende Hammers indflydelse på et Source-baseret spil er, skal man blot se på Half-Life 2. En stor del af indholdet, der findes i Half-Life 2, er blevet sammensat eller konstrueret i Hammer. Hammer bruges til alt fra at bygge spilverdenens struktur til at definere dets indhold, funktioner og reaktioner. Man vil hurtigt finde frem til, at Hammer spiller en stor rolle i et produktionsforløb. På trods af at denne rapport dækker de mere programmelle aspekter af en produktion i Source, er Hammers involvering så stor, at den ikke kan undgås at benævnes. Dog vil vi ikke komme særlig dybt ned i Hammer, da den er godt dokumenteret i forvejen. En uddybende dokumentation til brug af Hammer i forbindelse med Source kan findes på Valves wiki[6]. 15
17 4 Arbejde i Source Formålet med dette kapitel er at dele vores erfaringer i de områder, vi har beskæftiget os med i Source. I kapitel har vi udledt nogle konkrete tips til at programmere i Source. Derefter uddyber vi de specifikke emner vi har beskæftiget os med. Som nævnt i kapitel 3.2, er Source bygget efter en klient-server-model. Størstedelen af koden, som vi skrev i forbindelse med vores spil Dolores[3], blev sat på serversiden, da spillet ikke implementerer nogen form for multiplayer. Konsekvensen er, at informationerne i denne rapport ikke nødvendigvis gælder for funktionaliteten, der skal implementeres på klientsiden af Source. Vi vil gøre læseren opmærksom de steder, hvor vi ved, der er forskel mellem implementationen på klient- og serversiden. 4.1 Partiel eller fuldstændig konvertering Inden man kaster sig ud i et så omfattende projekt som at skabe et spil i Source, er der en beslutning, man skal tage på forhånd. Enten at skabe en partiel eller en komplet konvertering af Half-Life 2. Dvs. hvor meget af Half-Life 2 man har tænkt sig at genbruge i sit eget spil. Beslutningen kan ændres undervejs, dog er det ikke helt uden omkostninger. Forskellen mellem de to er, om Sources SDK stiller alle Half-Life 2 s ressourcer til rådighed. Ved begge valgmuligheder er der fordele og ulemper. Partiel konvertering Den største fordel ved en partiel konvertering er, at alle Half-Life 2 s ressourcer står til rådighed. Hvis det er første forsøg på at skabe et spil i Source, er det helt klart denne variant, der skal vælges. Intet er mere hjælpsomt end at kunne se, hvad andre har gjort, og hvordan det fungerer. Ulempen er, at det kan virke overvældende, da Half-Life 2 har en meget stor mængde indhold i alle former. Det vil tage tid at forstå, hvordan det hele hænger sammen, og hvordan man kan bruge det til sin egen fordel. Fuldstændig konvertering Man kan også vælge kun at bygge på spilmotoren. Ulempen ved den fuldstændige konvertering er at meget skal laves fra bunden. Alle Half-Life 2 s ressourcer, dvs. lyd, grafik, mange entiteter og NPCer, kan ikke genbruges. De er naturligvis stadig til rådighed som reference, men for at spillet kan kaldes for en fuldstændig konvertering, må kun den grundlæggende spilmotor genbruges. Det er det rette valg hvis man vil lave et spil der er grundlæggende forskelligt fra Half-Life 2. 16
18 4.2 Programmering i Source At spille Half-Life 2 igennem giver et godt overblik over og samtidig indsigt i, hvad der kan lade sig gøre i Source. Men at finde ud af hvordan de forskellige spilmekanikker er implementeret, er dog ikke altid så lige til. Heldigvis er der ofte folk, der har forsøgt noget lignende før. Bl.a. denne hjemmeside [5] indeholder en masse information om diverse funktioner, der ligger skjult i Source Ungarsk notation Valve har valgt at benytte sig af ungarsk notation[12] i deres kodestil. Ungarsk notation benyttes til at hjælpe programmører med at gennemskue, hvilke egenskaber forskellige variabler har. Notationen afslører ofte, hvilken type variabel der er tale om (integer, float, double osv.), og om denne tilhører en klasse. Ydermere har Valve vedtaget den konvention, at klasser, der hører til serversiden, hedder CNavn, mens klasser, der hører til på klientsiden, hedder C_Navn. Begge konventioner anbefaler vi, at man følger for lettere at læse Valves kode Konkrete tips til programmering i Source Vejledningerne (tutorials) der ligger på Valves wiki[6] er et godt udgangspunkt for at lære at programmere i Source. Til gengæld er det svært at opnå en dybere forståelse af de enkelte objekter og funktioner ud fra disse vejledninger. Vi brugte meget energi på at gennemskue den eksisterende kode og finde de funktioner, vi havde brug for. De følgende elementer, funktioner såvel som objekter, er desværre ikke beskrevet i den udleverede dokumentation til Source. Situationerne, som elementerne kan blive benyttet i, er dog så mangfoldige, at de ikke burde undlades. Gennemgangen af de følgende elementer kan ikke betragtes som udtømmende forklaringer, da vi ikke selv har forstand på deres fulde funktionalitet. Listen skal betragtes som et vink om, hvilke vigtige elementer der ikke burde overses. gpglobals Dette objekt indholder diverse globale tilstande og informationer, så som den globale tid i spilverdenen. Vi brugte f.eks objektet til at finde det næste tidspunkt hvor forskellige entiteter skulle fortage beslutninger i spilverdenen. g peffects g_peffects bruges til at visualisere forskellige effekter indenfor spilverdenen, som f.eks. støv- eller lyseffekterne ved pistolaffyring. Et 17
19 eksempel kunne være en af fjenderne fra spillet Dolores som opvivler støv, når den kolliderer med gulvet. devmsg() Denne funktion udskriver en besked til skærmen, når spillet afvikles. Det er yderst nyttigt, når man forsøger af afprøve forskellige dele af sit program. ConVar ConVar er en makro, der gør en variabel tilgængelig fra konsollen i Source. I kapitel 4.9 vil vi uddybe brugen af konsollen. Kort sagt giver denne adgang til en stor mængde af kommandoer og informationer under spillets kørsel. Tilgang til disse variabler under spillets afvikling, gør det nemt at teste og fintune dem. 18
20 4.3 Entiteter Som tidligere nævnt findes der tre overordnede entitetstyper i Source: Logical Entity, Model Entity og Brush Entity. Praktisk set er de tre typer kun vejledende. De giver et godt overblik og hjælper med at afgøre, hvilken type entitet man har brug for. Hver især har entiteterne en klasse, de nedarver fra, der tilbyder funktionalitet specifikt for den type entitet. Logiske entiteter nedarver fra CLogicalEntity, modelentiteter fra CBaseAnimating og brush-entiteter fra CBaseToggle. I tilfælde af at den nye entitet ikke falder i en af de kategorier, som de tre typer tilbyder, er det oplagt at lade den nye entitet nedarve fra CBase- Entity. Denne klasse er absolut basis for entiteter, og det er denne klasse, som de tre typer også nedarver fra. Den reelle nedarvning ses i figur 1. Figur 1: Nedarvning af entitetsklasser i Source. For at opnå et hurtigere resultat, når man er i gang med at lave en ny entitet, er det en mulighed at omskrive en af de eksisterende Half-Life 2 entiteter. I det tilfælde er det oplagt at vælge den entitet i Half-Life 2, der på forhånd kan nogle af de ting, man ønsker. Ulempen ved at vælge en eksisterende entitet er, at koden til denne ikke umiddelbart er til at gennemskue. Derfor er det uden tvivl en fordel selv at sammenkæde en entitet fra bunden. En gennemgang af en meget enkel entitet findes i kapitel Tilstande og funktioner Formålet med dette kapitel er at skitsere nogle af de tilstande en entitet kan indtage, samt vigtige funktioner. Entiteters tilstande i Source Udover de tilstande som en entitet er programmeret til at kunne indtage, kan man betragte en entitet som havende nogle overordnede tilstande i spilverdenen: Før den bliver oprettet, mens den eksisterer, og efter den er blevet slettet. 19
Spil Rapport. Spil lavet i GameMaker. Kevin, Mads og Thor 03-02-2011
Spil Rapport Spil lavet i GameMaker Kevin, Mads og Thor 03-02-2011 Indholdsfortegnelse Indledning... 2 HCI... 2 Planlægning / Elementær systemudvikling... 2 Kravspecifikationer... 4 Spil beskrivelse...
Læs mereBilag 1: Interviewguide:
Bilag 1: Interviewguide: Vores interview guideforskningsspørgsmål Spiller folk på ITU multiplayer, frem for singleplayer? Skaber onlinespil sociale relationer mellem folk på ITU? Interviewspørgsmål Foretrækker
Læs mereProgrammering C Eksamensprojekt. Lavet af Suayb Köse & Nikolaj Egholk Jakobsen
Programmering C Eksamensprojekt Lavet af Suayb Köse & Nikolaj Egholk Jakobsen Indledning Analyse Læring er en svær størrelse. Der er hele tiden fokus fra politikerne på, hvordan de danske skoleelever kan
Læs mereProjekt - Valgfrit Tema
Projekt - Valgfrit Tema Søren Witek & Christoffer Thor Paulsen 2012 Projektet Valgfrit Tema var et projekt hvor vi nærmest fik frie tøjler til at arbejde med hvad vi ville. Så vi satte os for at arbejde
Læs mereGreenfoot En kort introduktion til Programmering og Objekt-Orientering
Greenfoot En kort introduktion til Programmering og Objekt-Orientering Greenfoot er et computer-program, som kan benyttes til at skrive andre computer-programmer, i et programmeringssprog kaldet Java.
Læs mereGruppe: 2 Hold: MulB Årgang 2013 Lærere: Merete Geldermann Lützen & Jesper Hinchely
Bannerpage: http://spicegirls.creativefolder.dk/bannerpage/ Landingpage: http://spicegirls.creativefolder.dk/ René Skovgaard Andersen cph-ra73@cphbusiness.dk Stig Hamborg Nielsen cph-sn9@cphbusiness.dk
Læs mereMichael Jokil 11-05-2012
HTX, RTG Det skrå kast Informationsteknologi B Michael Jokil 11-05-2012 Indholdsfortegnelse Indledning... 3 Teori... 3 Kravspecifikationer... 4 Design... 4 Funktionalitet... 4 Brugerflade... 4 Implementering...
Læs mereAndreas Lauge V. Hansen klasse 3.3t Roskilde HTX
IT -Eksamen Andreas Lauge V. Hansen klasse 3.3t Roskilde HTX [Vælg en dato] Indhold Indledning... 2 Teori... 3 Hvorfor dette design... 4 Produktet... 4 Test og afprøvning... 9 Konklusion... 10 Indledning
Læs mereIT opgave. Informationsteknologi B. Vejleder: Karl. Navn: Devran Kücükyildiz. Klasse: 2,4
IT opgave Informationsteknologi B Vejleder: Karl Navn: Devran Kücükyildiz Klasse: 2,4 Dato:03-03-2009 1 Indholdsfortegnelse 1. Indledning... 3 2. Planlægning... 3 Kommunikationsplanlægning... 3 Problemstillingen...
Læs mereI denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.
Denne guide er oprindeligt udgivet på Eksperten.dk Grundlæggende PHP I denne artikel, vil der blive gennemgået de grundlæggende PHP-funktioner, såsom udskrift til skærmen, tid og dato og if-sætningen.
Læs mereFølgende spørgsmål omhandler den faglige del af modulet: Hvordan vurderer du planlægningen af modulet? Hvordan vurderer du modulets relevans for dig?
Følgende spørgsmål omhandler den faglige del af modulet: Hvordan vurderer du planlægningen af modulet? Hvordan vurderer du modulets relevans for dig? Hvordan vurderer du modulets faglige indhold? 1 19.06.2018/Pia
Læs mereIntroduktion. Gruppesnak. Dokumentation
Introduktion Opgaven gik ud på at lave et spil, hvor vi selv skulle stå for alt arbejdet, altså programmeringen, figurere, baggrunde og lyde. Der har været forskellige værktøjer og programmer, som vi har
Læs mereXProtect-klienter Tilgå din overvågning
XProtect-klienter Tilgå din overvågning Tre måder at se videoovervågning på For at skabe nem adgang til videoovervågning tilbyder Milestone tre fleksible brugergrænseflader: XProtect Smart Client, XProtect
Læs mereProcesbeskrivelse - Webprogrammering
Procesbeskrivelse - Webprogrammering Indholdsfortegnelse Forudsætninger... 1 Konceptet... 2 Hjemmesiden... 2 Server-side... 3 Filstrukturen... 3 Databasehåndtering og serverforbindelse... 4 Client-side...
Læs mereExceptions i Delphi. Try except
Exceptions i Delphi Exceptions er en teknik til at fange fejl under programafviklingen. Ikke programmeringsfejl, men fejl der opstår i forskellige situationer, f.eks. en fil der mangler en fil der er skrivebeskyttet,
Læs mereProgrammering C RTG - 3.3 09-02-2015
Indholdsfortegnelse Formål... 2 Opgave formulering... 2 Krav til dokumentation af programmer... 3 ASCII tabel... 4 Værktøjer... 5 Versioner af ASCII tabel... 6 v1.9... 6 Problemer og mangler... 6 v2.1...
Læs mereaf Philip De Skæve Gallere Birk-Jensen
mirc Guide af Philip De Skæve Gallere Birk-Jensen Side 1 Forord Der er mange som har problemer med at komme i gang med IRC, selvom dette er et yderst nyttigt værktøj, når man skal kommunikere. Når der
Læs mereHTX, RTG. Rumlige Figurer. Matematik og programmering
HTX, RTG Rumlige Figurer Matematik og programmering Vejledere: Jørn Christian Bendtsen og Karl G. Bjarnason Morten Bo Kofoed Nielsen & Michael Jokil 10-10-2011 In this assignment we have been working with
Læs mereAFSLUTTENDE PROJEKT KOM/IT
5/5-2017 AFSLUTTENDE PROJEKT KOM/IT Daniel & Frederik Klasse 1.1 Indledning Vi startede med at få valget stillet om vi ville lave noget med e-learning, databehandling og præsentation eller vi kunne lave
Læs mereDesign dit eget computerspil med Kodu
Design dit eget computerspil med Kodu I sensommeren var vi to CFU-konsulenter ude i SFO en på Borup Ris Skolens Grønbro-afdeling. Her var vi sammen med børnene for at få erfaringer i arbejdet med platformen
Læs mereAfstande, skæringer og vinkler i rummet
Afstande, skæringer og vinkler i rummet Frank Nasser 9. april 20 c 2008-20. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her.
Læs mereUndervisningsbeskrivelse
Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin Institution Uddannelse Fag og niveau Lærer(e) Hold Termin hvori undervisningen afsluttes: maj-juni 2013 HTX
Læs mereSEMESTEREVALUERING MODUL 1 OG 2 EFTERÅRET Køn
SEMESTEREVALUERING MODUL 1 OG 2 EFTERÅRET 2014 Køn Jeg oplevede, at der var sammenhæng mellem semesterets forskellige undervisningsmoduler (fagområder, projekter m.m.) Bemærkninger/kommentarer til Studiemiljøet
Læs mereUndervisningsbeskrivelse
Undervisningsbeskrivelse Stamoplysninger til brug ved prøver til gymnasiale uddannelser Termin Institution Uddannelse Fag og niveau Lærer(e) Hold Termin hvori undervisningen afsluttes: maj-juni 2013 HTX
Læs mereAfstande, skæringer og vinkler i rummet
Afstande, skæringer og vinkler i rummet Frank Villa 2. maj 202 c 2008-20. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Indhold
Læs mereArduino Programmering
Microcontroller, Arduino I teknologi skal vi lære at lave programmer til uc for at have muligheden til eksamen at kunne lave intelligente el-produkter. I hvert fald skal vi have set mulighederne, og forstået
Læs mereGentofte Skole elevers alsidige udvikling
Et udviklingsprojekt på Gentofte Skole ser på, hvordan man på forskellige måder kan fremme elevers alsidige udvikling, blandt andet gennem styrkelse af elevers samarbejde i projektarbejde og gennem undervisning,
Læs mereKomunikation/It C Helena, Katrine og Rikke
HTX Afsluttende projekt E-learning Komunikation/It C Helena, Katrine og Rikke 1.1 01-05-2013 Systemudvikling Indledende aktiviteter Kommunikationsplanlægning for projektet, Laswells fem spørgsmål. o Hvem
Læs mereProjekt - Visual Basic for Applications N på stribe
Projekt - Visual Basic for Applications N på stribe Mikkel Kaas og Troels Henriksen - 03x 3. november 2005 1 Introduktion Spillet tager udgangspunkt i det gamle kendte 4 på stribe, dog med den ændring,
Læs mereLæringsprogram. Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4
Læringsprogram Christian Hjortshøj, Bjarke Sørensen og Asger Hansen Vejleder: Karl G Bjarnason Fag: Programmering Klasse 3.4 R o s k i l d e T e k n i s k e G y m n a s i u m Indholdsfortegnelse FORMÅL...
Læs mereHensigten har været at træne de studerende i at dele dokumenter hvor der er mulighed for inkorporering af alle former for multimodale tekster.
Projekt edidaktik Forsøg med multimodal tekstproduktion På Viden Djurs er der I to klasser blevet gennemført et forsøg med anvendelse af Microsoft Office 365. Hensigten har været at træne de studerende
Læs mereArbejdsblad. Indhold. 27. maj 2010 A312. 1 Projektplanlægning 1. 2 Samarbejdet i gruppen 3. 3 Samarbejdet med vejlederne 5
Arbejdsblad 27. maj 2010 A312 Indhold 1 Projektplanlægning 1 2 Samarbejdet i gruppen 3 3 Samarbejdet med vejlederne 5 1 Procesanalyse 1 Projektplanlægning I projektarbejdet har vi benyttet Google kalender
Læs mereIntroduktion til projekter
Introduktion til projekter v. 1.0.3 Introduktion I dette materiale ser vi overordnet på, hvad projekter egentlig er, hvordan de er skruet sammen og hvilke begreber, som relaterer sig til projekter. Vi
Læs mereABCD- E-Learning UDVIKLING
ABCD- E-Learning 2018 Prolearning ApS ABCD- E-Learning Når du skal udvikle e-læring bliver dine evner for alvor udfordret: Redigering af billeder, tegning af interaktive figurer, lyd- og videoredigering
Læs mereGirls Day in Science - En national Jet
Girls Day in Science - En national Jet Jet Net.dk event Vejledning til Virksomheder Hvorfor denne vejledning? Denne vejledning til virksomheder indeholder ideer til, tips og eksempler på ting der tidligere
Læs mereJeg ville udfordre eleverne med en opgave, som ikke umiddelbar var målbar; Hvor høj er skolens flagstang?.
Hvor høj er skolens flagstang? Undersøgelsesbaseret matematik 8.a på Ankermedets Skole i Skagen Marts 2012 Klassen deltog for anden gang i Fibonacci Projektet, og der var afsat ca. 8 lektioner, fordelt
Læs mereVisualiseringsprogram
Visualiseringsprogram Programmering C - eksamensopgave Rami Kaddoura og Martin Schmidt Klasse: 3.4 Vejleder: Karl Bjarnason Roskilde Tekniske Gymnasium Udleveringsdato: 02-03-2012 Afleveringsdato: 11-05-12
Læs merePlanlægning er en god idé
Planlægning er en god idé TÆLL3R OGSÅ! Kom godt i gang med at arbejde med det psykiske arbejdsmiljø i butikken Læs mere på www.detdumærker.dk større indsats / Dialogmetoden og Gode råd undervejs BAR Handel
Læs mereRollespil Projektsamarbejde Instruktioner til mødeleder
Instruktioner til mødeleder Introduktion Med dette rollespil træner I det lærte i lektionen Hjælp en kollega i konflikt. Der skal medvirke to personer, der skal spille henholdsvis Christian og Bente, hvor
Læs mereDokumentation af programmering i Python 2.75
Dokumentation af programmering i Python 2.75 Af: Alexander Bergendorff Jeg vil i dette dokument, dokumentere det arbejde jeg har lavet i løbet opstarts forløbet i Programmering C. Jeg vil forsøge, så vidt
Læs mereSucceskriterier og mål for projektet
Page 1 of 5 Succeskriterier og mål for projektet Individuelle Lasse Bager: Min personlige målsætning med det her projekt er først og fremmest at lave et projekt at jeg og hele gruppen i sidste ende vil
Læs mereKursusgang 11. Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing
Kursusgang 11 Oversigt: Sidste kursusgang Værktøjer til udvikling og implementering af HCI-design Oversigt over Java Swing Design af brugerflader 11.1 Samme sted Forskellige steder Sidste kursusgang Samtidigt
Læs mereFlere ligninger med flere ukendte
Flere ligninger med flere ukendte Frank Villa 14. februar 2012 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her.
Læs mereSpørgsmål og svar om inddragelse af pårørende
Spørgsmål og svar om inddragelse af pårørende I Hej Sundhedsvæsen har vi arbejdet på at understøtte, at de pårørende inddrages i større omfang, når et familiemedlem eller en nær ven indlægges på sygehus.
Læs mereklassetrin Vejledning til elev-nøglen.
6.- 10. klassetrin Vejledning til elev-nøglen. I denne vejledning vil du til nøglen Kollaboration finde følgende: Elev-nøgler forklaret i elevsprog. En uddybende forklaring og en vejledning til hvordan
Læs mereDetaljering af BIM-objekter
Detaljering af BIM-objekter BIM-objektet skal ikke være en fotorealistisk visualisering af byggematerialet - kvaliteten af de tilknyttede produktdata er vigtigere (og ofte overset). Hvilke krav stiller
Læs mereUgeseddel 4 1. marts - 8. marts
Ugeseddel 4 1. marts - 8. marts Læs følgende sider i kapitel 6 i lærebogen: s. 233 258 og s. 291 317 (afsnit 6.3 overspringes). Begynd at overveje, hvad afleveringsopgaven skal omhandle. Læs vejledningen,
Læs mereKENDER DU DEN NYE GENERATION AF HUNDEEJERE?
KENDER DU DEN NYE GENERATION AF HUNDEEJERE? EN UNDERSØGELSE UDARBEJDET AF BOEHRINGER INGELHEIM Revision 1, 2019. Inkluderer detaljerede datasæt Value Through Innovation HUNDEEJERE ER IKKE LÆNGERE, SOM
Læs mereRoskilde Tekniske Gymnasium. Eksamensprojekt. Programmering C niveau
Roskilde Tekniske Gymnasium Eksamensprojekt Programmering C niveau Andreas Sode 09-05-2014 Indhold Eksamensprojekt Programmering C niveau... 2 Forord... 2 Indledning... 2 Problemformulering... 2 Krav til
Læs mereIt-sikkerhedstekst ST9
It-sikkerhedstekst ST9 Single Sign-On og log-ud Denne tekst må kopieres i sin helhed med kildeangivelse. Dokumentnavn: ST9 Version 1 Juli 2015 Single Sign-On og log-ud Betegnelsen Single Sign-On (SSO)
Læs mereVejledning til Teknisk opsætning
Vejledning til Teknisk opsætning v. 1.0 Adm4you, 2010. Indhold Kort om denne vejledning... 3 Generelt om easyourtime... 3 Installation af databasen... 3 Sikkerhed og rettigheder... 4 SQL Login... 4 Rettigheder
Læs mereKOLLABORATION. Vejledning til elevnøgle, klasse
Vejledning til elevnøgle, 6.-10. klasse I denne vejledning vil du finde følgende: Elevnøgler forklaret i elevsprog. Vejledning og uddybende forklaring til, hvordan man sammen med eleverne kan tale om,
Læs mereProjektplan for DIKU studenterprojekter
Projektplan for DIKU studenterprojekter Forfatter: Anders Johansen, Softwareudvikler, Det Kongelige Bibliotek 29. januar, 2007 Projektplan version 1.0 Det Kongelige Bibliotek Postboks 2149, DK-1016 København
Læs mere1: Hvilket studium er du optaget på: 2: Hvilke af nedenstående forelæsninger har du deltaget i?
1: Hvilket studium er du optaget på: 2: Hvilke af nedenstående forelæsninger har du deltaget i? 3: Hvis du har deltaget i mindre end halvdelen af kursusgangene bedes du venligst begrunde hvorfor har deltaget
Læs mereComputerspil rapport. Kommunikation og IT. HTX Roskilde klasse 1.4. Casper, Mathias Nakayama, Anders, Lasse og Mads BC. Lærer - Karl Bjarnason
Computerspil rapport Kommunikation og IT HTX Roskilde klasse 1.4 Casper, Mathias Nakayama, Anders, Lasse og Mads BC Lærer - Karl Bjarnason Indledning Vi har lavet et computerspil i Python som er et quiz-spil
Læs mereSmartFraming Et vindue til nationale sundhedssystemer. Version 3.0
SmartFraming Et vindue til nationale sundhedssystemer Version 3.0 Infrastruktur i dagens sundheds IT Det sundhedsfaglige personale benytter sig i dag af en række forskellige systemer i forbindelse med
Læs mereManual til Kundekartotek
2016 Manual til Kundekartotek ShopPlanner Customers Med forklaring og eksempler på hvordan man håndterer kundeoplysninger www.obels.dk 1 Introduktion... 3 1.1 Formål... 3 1.2 Anvendelse... 3 2 Referencer...
Læs mereSpecialiseringen Rapport Lavede Af Rasmus R. Sørensen Side 1 af 6
Side 1 af 6 Indholdsfortegnelse INDHOLDSFORTEGNELSE 1 INTRO 3 STARTEN AF SPECIALISERINGEN 3 ANKOMST TIL SKOTLAND 4 DATABASER 5 NETVÆRK 5 INTERAKTION 5 AFSLUTNING AF SPECIALISERINGEN 5 KONKLUSION 6 Side
Læs mereDet her får du ud af at deltage på uddannelsen: MejlhedeHalskov.dk
Integrativ NLP Practitioner og Master Practitioner Vi tilbyder nu en unik uddannelse, som kombinerer det bedste fra en NLP Practitioner og en NLP Master Practitioner med Enneagrammet indsat i en integral
Læs mereDM536. Rapport og debug
DM536 Rapport og debug Kilder Vigtig.it (Felix Palludan Hargreaves) http://vigtig.it/dm502/howto_report.pdf http://vigtig.it/blog/teaching/#toc-relevant-tips Peter Schneider-Kamp http://imada.sdu.dk/~petersk/dm536/project2.pdf
Læs mereDatabase for udviklere. Jan Lund Madsen PBS10107
Database for udviklere Jan Lund Madsen PBS10107 Indhold LINQ... 3 LINQ to SQL og Arkitektur... 3 O/R designere... 5 LINQ Den store introduktion med.net 3.5 er uden tvivl LINQ(udtales link): Language-INtegrated
Læs mereAndengradsligninger. Frank Nasser. 12. april 2011
Andengradsligninger Frank Nasser 12. april 2011 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk: Dette
Læs mereProjektarbejde med scrum- metoden
Projektarbejde med scrum- metoden Indhold Indhold... 1 1 Indledning... 2 2 Roller og terminologi i scrum... 3 Opgavestilleren... 3 Scrum Masteren... 3 Projektgruppen... 3 Sprint... 3 3 Møder... 3 Planlægningsmødet...
Læs mereEVALUERING AF BOLIGSOCIALE AKTIVITETER
Guide EVALUERING AF BOLIGSOCIALE AKTIVITETER Det er rart at vide, om en aktivitet virker. Derfor følger der ofte et ønske om evaluering med, når I iværksætter nye aktiviteter. Denne guide er en hjælp til
Læs mereIndholdsfortegnelse Valg af opgave... 2 Introduktion... 2 Problem... 2 Målgruppe... 2 Afsender... 2 Budskab... 2 Kodning... 3 Effekt...
Indholdsfortegnelse Valg af opgave... 2 Introduktion... 2 Problem... 2 Målgruppe... 2 Afsender... 2 Budskab... 2 Kodning... 3 Effekt... 3 Information... 3 Programmering... 3 Design... 4 Brochure... 4 Hjemmeside...
Læs mereComputerens Anatomi. Kom/IT C - Computer Anatomi - Daniel og Fie - 3/3 2015. Planlægning af kommunikationsvalg og medieprodukt.
Computerens Anatomi Planlægning af kommunikationsvalg og medieprodukt. Vi startede med at snakke om modtager, afsender og budskab og blev enige om at det skulle være simpelt for at få modtagernes interesse.
Læs mereNår man skal udfylde i feltet: branche, kan det være relevant, at se valgmulighederne lidt igennem for at finde den mest passende.
Sådan opretter du en LinkedIn profil: - Først starter man med at klikke ind på LinkedIn.com På forsiden ser man en boks til højre på skærmen. Her har man mulighed for at oprette sin profil ved hjælp af
Læs mere5/11/2015. Programmering. Hussein Al-Saidi ROSKILDE TEKNINSK GYMNASIE VEJLEDER: CHRISTOFFER S.
5/11/2015 Hussein Al-Saidi ROSKILDE TEKNINSK GYMNASIE VEJLEDER: CHRISTOFFER S. 1 Contents... 0 Indledning... 3 Analyse... 3 Problemformulering... 3 Målgruppe... 3 Løsningsforslag... 3 Detaljeret beskrivelse
Læs mereLøsning af simple Ligninger
Løsning af simple Ligninger Frank Nasser 19. april 2011 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk:
Læs mereMark Jeays simple solution to the Rubik s cube oversat og redigeret af Jess Bonde. -
Mark Jeays simple solution to the Rubik s cube oversat og redigeret af Jess Bonde. jess@rubiks.dk - http://www.rubiks.dk Trin 0 Introduktion & notation Trin 1 De tre øverste sidestykker Trin 2 Hjørner
Læs mereMicrocontroller, Arduino
Microcontroller, Arduino Programmerbar elektronik. uc Vi skal lære at lave programmer til uc for at kunne lave el-produkter. Forstå princippet i programmering af en uc og se mulighederne. Programmeringen
Læs mereHvordan håndteres. den svære samtale. i mindre virksomheder?
Hvordan håndteres den svære samtale i mindre virksomheder? 1. Den svære samtale 2. Forberedelse til samtalen 3. Afholdelse af selve samtalen 4. Skabelon til afholdelse af samtalen 5. Opfølgning på samtalen
Læs mereKundetilfredshedsundersøgelse Oktober 2015
Kundetilfredshedsundersøgelse Oktober 2015 Introduktion Den 18. september fik alle kunder tilsendt en e-mail med et link til en kundetilfredshedsundersøgelse. 28 % valgte at besvare spørgsmålene, og der
Læs mereAndengradsligninger. Frank Nasser. 11. juli 2011
Andengradsligninger Frank Nasser 11. juli 2011 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Indhold 1 Introduktion
Læs mereINDHOLDSFORTEGNELSE. INDLEDNING... 7 Kristian Langborg-Hansen. KAPITEL ET... 9 I gang med App Inventor. KAPITEL TO...
INDHOLDSFORTEGNELSE INDLEDNING... 7 Kristian Langborg-Hansen KAPITEL ET... 9 I gang med App Inventor Installation af App Inventor... 10 Trådløs installation... 11 Installation af emulator (Windows)...
Læs mereSpil og svar. Journal nr. 13.12.599. Et webbaseret værktøj udviklet af Programdatateket i Skive
Journal nr. 13.12.599 Spil og svar Et webbaseret værktøj udviklet af Programdatateket i Skive E-mail: programdatateket@viauc.dk Web: http://www.programdatateket.dk Kolofon HVAL-vejledning Spil og svar
Læs mereLEVERANCE 1.3. Model for kvalitetssikring
LEVERANCE 1.3 Model for kvalitetssikring Udarbejdelse af kvalitetssikringsmodel, krav til open source kode og dokumentation og godkendelsesprocedurer m.v. Samt fokus på understøttelse af CE-mærkning. 1
Læs mereRETNINGSLINIER FOR KAMPE SPILLET UDEN DOMMER - opdateret d. 15. marts 2010
RETNINGSLINIER FOR KAMPE SPILLET UDEN DOMMER - opdateret d. 15. marts 2010 Generelle retningslinjer for Referees/referee assistenten der virker ved turneringer hvor der spilles kampe spillet uden dommer:
Læs mereLavet af Danni jensen og David Olsen
Projekt Delfin Lavet af Danni jensen og David Olsen 19/5-2008 Indholdsfortegnelse. Side 1: Indholdsfortegnelse og forord. Side 2: Kravsliste. Side 3: Use Case Model. Side 4: Formandens aktørbeskrivelse
Læs mereUndervisningsbeskrivelse
Undervisningsbeskrivelse Programmering C ved mst Termin Juni 117 Institution Uddannelse Fag og niveau Lærer Hold Erhvervsskolerne Aars hhx Programmering C Michael Stenner (mst) 2-3g16 pro Forløbsoversigt
Læs mereHarald Michalsen og Lasse Storr-Hansen
1 af 9 02MAJ2007 03MAJ2007 06MAJ2007 14MAJ2007 Rettet en fejl i installationsprogrammet. Ny installationer kunne ikke køre igennem og stoppede halvvejs. Rettelsen blev lagt på nettet klokken 16:40 mandag
Læs mereAfsluttende Projekt - Kom/IT
1 Afsluttende Projekt - Kom/IT Rasmus H. Plaep 1 Billedkilde: http://blog.snelling.com/files/2015/01/business-107.jpg Indhold... 0 Indledning... 2 Problemafgrænsning... 2 Problemformulering... 2 Teori...
Læs mereIndledning...1 Hvad er en konflikt?...1 I institutionen...1 Definition af konflikt:...2 Hvem har konflikter...2 Konfliktløsning...
Indledning...1 Hvad er en konflikt?...1 I institutionen...1 Definition af konflikt:...2 Hvem har konflikter...2 Konfliktløsning...3 Hanne Lind s køreplan...3 I Praksis...5 Konklusion...7 Indledning Konflikter
Læs mereManual til Groupcare: Indhold, formål og brug
Manual til Groupcare: Indhold, formål og brug Indledning Groupcare er en elektronisk, internetbaseret kommunikationsform som vi bruger i forbindelse med din DOL-uddannelse. Grundlæggende set er Groupcare
Læs mereAnalysen er din, og skal kun bruges til, at du kan tænke over, hvordan du oplever dig selv som leder.
Ledelsesstilanalyse Dette er en analyse af den måde du leder på, med fokus på at lede mennesker. Det er vigtigt for din selvindsigt, at du er så ærlig som overhovedet mulig overfor dig selv når du svarer.
Læs mereFunktionsterminologi
Funktionsterminologi Frank Nasser 12. april 2011 c 2008-2011. Dette dokument må kun anvendes til undervisning i klasser som abonnerer på MatBog.dk. Se yderligere betingelser for brug her. Bemærk: Dette
Læs mereALGORITMER OG DATA SOM BAGGRUND FOR FORUDSIGELSER 8. KLASSE. Udfordring
ALGORITMER OG DATA SOM BAGGRUND FOR FORUDSIGELSER 8. KLASSE Udfordring INDHOLDSFORTEGNELSE 1. Forløbsbeskrivelse... 3 1.1 Overordnet beskrivelse tre sammenhængende forløb... 3 1.2 Resume... 5 1.3 Rammer
Læs mereN: Jeg hedder Nina og jeg er 13 år gammel. Jeg har været frivillig et år.
Interview Fokusgruppe med instruktører i alderen - år 0 0 0 0 Introduktionsrunde: I: Vil I starte med at præsentere jer i forhold til hvad I hedder, hvor gamle I er og hvor lang tid I har været frivillige
Læs mereMedarbejder- udviklingssamtaler - MUS
fremtiden starter her... Gode råd om... Medarbejder- udviklingssamtaler - MUS INDHOLD Hvad er MUS 3 Fordele ved at holde MUS 4 De fire trin 5 Forberedelse 6 Gennemførelse 7 Opfølgning 10 Evaluering 10
Læs mereSpørgeskemaer i SkoleIntra
Spørgeskemaer i SkoleIntra Brug det indbyggede værktøj, når du vil vide mere! Version: August 2012 Indholdsfortegnelse Spørgeskema kun for skoler med ElevIntra!...4 Spørgeskemaer i SkoleIntra...4 Hvor
Læs mereFang Prikkerne. Introduktion. Scratch
Scratch 2 Fang Prikkerne All Code Clubs must be registered. Registered clubs appear on the map at codeclubworld.org - if your club is not on the map then visit jumpto.cc/ccwreg to register your club. Introduktion
Læs mereProjektarbejde. AFL Institutmøde den 6.10.2005 Pernille Kræmmergaard Forskningsgruppen i Informatik
Projektarbejde AFL Institutmøde den 6.10.2005 Pernille Kræmmergaard Forskningsgruppen i Informatik Ønske for dagen Jeg håber, at i får et indblik i: Hvad studieprojekter er for noget Hvordan projektarbejdet
Læs mereMuseu de Aveiro. af Jeffrey Lai. Februar-April 2010 Praktikophold i Aveiro
Museu de Aveiro af Jeffrey Lai Februar-April 2010 Praktikophold i Aveiro 1 Formålet med mit praktikophold i Aveiro var at lave det lokale museum i 3D, således at man kunne begive sig rundt i museet i den
Læs mereSOCIAL KAPITAL SAMARBEJDE SKABER RESULTATER TÆLL3R OGSÅ! OM PSYKISK ARBEJDSMILJØ I DETAILHANDLEN LEDER/ARBEJDSGIVER
OM PSYKISK ARBEJDSMILJØ I DETAILHANDLEN Læs mere på www.detdumærker.dk TÆLL3R OGSÅ! LEDER/ARBEJDSGIVER SOCIAL KAPITAL SAMARBEJDE SKABER RESULTATER Årets store udsalg skal forberedes, men da medarbejderne
Læs mereBliv opdaget på Internettet! - 10 gode råd til at optimere din hjemmeside til søgemaskiner
Bliv opdaget på Internettet! - 10 gode råd til at optimere din hjemmeside til søgemaskiner Af Henrik Bro og Martin T. Hansen I har måske allerede en flot, og informativ hjemmeside. Og alle jeres kursister
Læs mereVurder samtalens kvalitet på følgende punkter på en skala fra 1-5, hvor 1 betyder i lav grad og 5 betyder i høj grad.
Vurder samtalens kvalitet på følgende punkter på en skala fra 1-5, hvor 1 betyder i lav grad og 5 betyder i høj grad. Samtalens rammer og indhold I hvor stor grad fik du afklaret samtalens rammer (formål,
Læs mereMicrocontroller, Arduino
Microcontroller, Arduino Kompendium til Arduino-programmering i Teknologi. Vi skal lære at lave programmer til uc for at kunne lave el-produkter. Vi skal forstå princippet i programmering af en uc og se
Læs mere