Dota 2-utropare fungerar som en databas av svar till olika händelser: "ditt övre torn har fallit", "motståndarlagets nedre baracker har fallit", "kurir dräpt", och så vidare. Anpassade utropare kan skapas genom att spela in repliker för alla dessa händelser, och ersätta dem med den vanliga utroparens röst. I dagsläget är det lättaste sättet att förbereda ett manus för ett nytt utroparbidrag är att utgå ifrån "Mall för instruktionsmanus" som tillhandahålls nedan, som listar alla repliker som krävs för varje utroparpaket, flera valfria möjligheter att låta ditt paket sticka ut, och en lista av riktlinjer att hjälpa ditt utroparpaket att lyckas så mycket som möjligt. När du har spelat in ditt manus kan du använda exempelkalkylbladen nedan att skapa en uppfattning om de händelse-triggers som är avsedda för varje replik. Exempelkalkylbladen visar exempel-triggers för händelser som detaljeras i mallen för instruktionsmanus, men för en mer genomgående lista av triggers kan du referera till listan för händelsetriggers. Vi har även tillhandahållit en lätt kommenterad version av de kalkylblad som användes med det släppta Bastion-utroparpaketet för ytterligare hjälp och inspiration.
Resurser:
Mall för instruktionsmanus - Updated 07/16/2013
Lista över händelse-triggers - Updated 07/18/2013
Kalkylblad för exempelutropare - Updated 07/18/2013
Kalkylblad med exempel för Killing Spree-utropare - Updated 07/18/2013
Kalkylblad för Bastion-utropare - Updated 07/18/2013
Kalkylblad med Bastions Killing Spree-utropare - Updated 07/18/2013
Intensitet, personlighet, att kunna fatta sig kort, och framför allt, variation, är nycklarna till att skapa ett framgångsrikt utroparpaket.
Varje replik som du spelar in kommer att höras flera gånger om av varje spelare som aktiverar händelsen. I en match kan en spelare höra femton "tornet har fallit"-händelser, tre "Roshan har dräpts"-händelser, och över trettio "din [byggnad] attackeras"-händelser. För att en utropare ska hålla sig färsk efter många matcher så bör varje händelse ha en rad olika tillgängliga repliker. Juggernaut-utroparen har omkring tre variationer på varje replik, medan Dr.Kleiner-utroparen har så många som fem i vissa kategorier. Du kan även vill använda uppföljningsmekanismen som ett sätt att skapa variation, genom att låta utroparen mixa och matcha en grundhändelse ("ditt övre torn har fallit") med en uppsättning av relevanta uppföljningsrepliker ("det där ser inte bra ut för er"). Bastion- och Axe-utroparna använder sig flitigt av uppföljningsfunktionerna. Observera att vi har en gräns på 600 repliker för Workshop-utropare.
Kör hårt med ditt utförande! För att stå ut från mängden måste din utropare kunna göra ett starkt intryck på lyssnaren med bara en handfull ord. Lägg till gott om intensitet och personlighet i varje replik för att göra din karaktär unik. Du behöver även spela in åtminstone en "vanlig" version av varje huvudhändelse i din karaktärs röst. Till exempel, om din renässansutropare har en replik såsom "Behold! Thine top tower doth find itself beseiged!", så måste du även spela in en standardmässig "Your top tower is under attack!" med samma röst. Detta hjälper till att göra dina mer överdrivna repliker mindre repetitiva, då de kan blandas ut med vanliga repliker i en lägre frekvens.
Var schysst och positiv! Dota 2 har en mycket bred publik och vi vill se till att varje utropare kan tilltala så många människor som möjligt. När du skriver manuset för din utropare, se gärna till att humorn är schysst och undviker dialog som är sexistisk, rasistisk eller religiöst kränkande. Tänk även på att Dota 2 kan vara ett mycket stressigt spel. När en spelares lag börjar förlora så är oftast det sista denne vill höra en utropare som förolämpar eller kritiserar. Försök att, när det är lämpligt, göra utroparens kommentarer positiva, roliga eller åtminstone uppmuntrande. Vi avråder även ifrån att referera till upphovsrättsskyddat material såsom sånger eller filmer, eller kommentera riktiga människor.
Kom ihåg att Dota 2 kan vara ett kaotiskt spel och saker kan hända väldigt fort. Försök hålla utroparens repliker korta, eftersom intervallen mellan ett torn som faller och en hjälte som talar kan vara ett par sekunder eller mindre. Längre repliker kan distrahera spelare som försöker fokusera på att hålla sin hjälte vid liv. Längre repliker kan även bli repetitiva fortare, och har hög chans att bli avbruten av en annan utroparreplik. Generellt är tumregeln att hålla replikerna under tre sekunder, och absolut inte längre än fem sekunder.
Åskådarrepliker, som endast hörs när användare har din utropare utrustad när de tittar på en match, kan ha större spelrum när det gäller längd och innehåll då åskådare inte är fokuserade på att ignorera brus för att höra matchkritisk information på samma sätt som spelare är. Du kan markera vilken replik som helst som åskådarspecifik, så att åskådare och spelare kan höra helt olika dialoger för samma händelser. I exempel-kalkylarket kan spelare höra "Your tower is under attack" medan åskådare hör "Radiant's tower is under attack" för samma händelse.
Mallinstruktionerna för utropare har mer information och vägledning.
Att skapa material i professionell kvalitet för utvärdering bör vara bland dina högsta prioriteringar. Ordentliga inspelningshårdvaror och -faciliteter, god mikrofonteknik och -avstånd samt korrekt förvaltade ljudnivåer kan dramatiskt påverka hur ditt utroparpaket i slutändan mottas.
Att använda en headset-mikrofon för att spela in ett utroparpaket för inlämning är inte acceptabelt.
Vi rekommenderar starkt att du anlitar en studio eller letar upp en ljudhobbyist med en projektstudio. En professionell ljudingenjör eller -hobbyist som kan navigera bland förvecklingarna med röstinspelning kan förse oss med material av högsta kvalitet.
Du bör spela in originalljud i mono med ett helupplösningsformat (t.ex. WAV eller AIF) med ett djup på minst 16 bit och samplingshastighet på 44.1khz. När din utropare har spelats in och du börjar redigera ditt material, lyssna noga efter hårda klusiler eller förvrängda ljudtoppar som kan ha missats - du kan behöva spela in dessa tagningar igen, eller ta bort dem helt. Vänligen lämna en fjärdedels sekund med omgivningsljud från den ursprungliga inspelningen på båda ändar av varje klipp för tekniska ändamål.
Om din inlämning accepteras så kommer vi kontakta dig gällande de ursprungliga, högupplösta filerna. Dock, för att reducera storleken på din första Workshop-inlämning och generellt göra den enklare att flytta omkring och arbeta med, så kan du vilja komprimera dina ljudfiler till .MP3-formatet genom att använda dig av ett program såsom SoundForge eller iTunes innan du laddar upp.
Paketera och skicka in dina komprimerade ljudfiler och händelsetrigger-kalkylarket till oss som en Workshop-artikel via spelklienten.
Efter att ha spelat in och renderat dina filer, så ska du fylla i ett kalkylark för att skapa en approximation på vilka filer som ska höra till vilka händelser. Exempelvis indikerar följande exempel på att du skulle vilja spela upp "announcer_battle_begin_02 " efter "game start"-hornet ljuder.
A | B | C | D |
announcer_battle_begin_02 | The battle begins! | Custom | IsGameStart |
OBS: Med några undantag (uppföljningar, återskapning, och köp), alla repliker som triggas av en utropare har "Custom" i sin C-kolumn.
Du kan specificera flera repliker för samma händelser, som detta exempel från Dr. Kleiner-utroparen:
announcer_fort_rad_01 | I've never seen Radiant's structures looking so fortified. | Custom | GlyphUsedGood |
announcer_fort_rad_02 | Radiant's structures are beautifully fortified. | Custom | GlyphUsedGood |
announcer_fort_rad_03 | Radiant's structures are fortified. | Custom | GlyphUsedGood |
announcer_fort_rad_04 | Radiant's structures are fortified. There appears to be some sort of magic at work. | Custom | GlyphUsedGood |
I ovanstående fall så väljer spelet att spela upp antingen announcer_fort_rad_01, announcer_fort_rad_02, announcer_fort_rad_03 eller announcer_fort_rad_04 när lag Radiant ("good") använder Glyph of Fortification. När flera rader har identiska kriterier, så anses de vara alternativa repliker för samma händelse.
I vissa fall har kalkylarkets D-kolumn flera kriterier. Dessa kriterier definierar tillsammans händelsen som repliker svarar till; repliken kommer endast spelas upp om alla variabler är sanna. Dessutom, när delvisa matchningar inträffar, kommer systemet välja den replik som matchar flest kriterier. I nedanstående exempel spelas announcer_rax_fall_yr_top när alla av följande variabler är sanna: ett torn har förstörts, det var i Top Lane, och tornet nekades inte.
announcer_twr_fall_yr_top | Your top tower has fallen. | Custom | IsTowerKilled IsTopLane IsNotDeny |
Vissa valfria kriterier kan läggas till en D-kolumn för att vidare specificera när du vill att en replik ska spelas upp. Till exempel kan du använda IsSpectator för att definiera en replik som endast spelas upp för åskådare och inte för spelare.
announcer_rax_attack_dire_bot | Dire's bottom barracks are under attack. | Custom | IsBarracksAttacked IsBadAttacked IsSpectator IsBotLane |
Vissa händelsetyper är "uppföljningsrepliker" som valfritt spelas upp efter andra händelserepliker har spelats.
announcer_followup_generic_01 | Bet that hurt! | Followup_Generic | (nothing in column D) |
Observera att uppföljningstypen indikeras i C-kolumnen. Uppföljare kan byggas som generiska händelser som inträffar efter vilken händelse som helst, eller för specifika händelser. Då det inte finns något i D-kolumnen på denna uppföljare, så kommer den läggas till i samlingen av repliker för alla fall där en generisk uppföljningsreplik åkallas. På detta sätt kan du mixa och matcha repliker för ännu mer variation, som t.ex.: " "The Radiant's Courier has been killed... That poor, defenseless courier!" genom att spela in och definiera "courier killed" och uppföljningsbiten separat.
announcer_courier_rad_dead_01 | Radiant’s Courier has been killed. | Custom | CourierLostGood |
announcer_courier_dire_dead_01 | Dire’s Courier has been killed. | Custom | CourierLostBad |
announcer_courier_followup_01 | That poor, defenseless courier! | Followup_Generic | CourierLostGood Chance_25% |
announcer_courier_followup_01 | That poor, defenseless courier! | Followup_Generic | CourierLostBad Chance_25% |
Lägg märke till att uppföljningsreplik-händelsen är generisk, men innehåller även samma händelsekriterier som repliken innan, vilket betyder att den är tänkt att vara specifik för just den händelsen. Detta betyder att replikhändelsen placeras i den generiska samlingen med övriga uppföljningsrepliker i utroparpaketet, men detta specifika klipp spelas endast upp när Radiants kurir dräps.
Dessutom har ovanstående uppföljningsexempel ett Chance_25%-kriterium. Varje gång en replik spelas väljs slumpmässigt ett nummer mellan 1 och 100. Chance-kriteriet möts om numret som slås är lika med eller lägre än den indikerade procentchansen. Då vårt röstsystem alltid kommer att spela den replik som matchar kriteriets högsta nummer, så är det slutgiltiga resultatet av ovanstående exempel att, om en kurir dödas, och det slumpvalda numret blir 25 eller lägre, så kommer announcer_courier_followup_01 alltid att spelas upp. Att kombinera specifika händelser med Chance-kriteriet är ett sätt att kunna mixa generiska uppföljare med händelsespecifika uppföljare.
Lägg även märke till att samma announcer_courier_followup_01-replik är byggd som en uppföljare för både händelserna CourierLostGood ("Radiant") och CourierLostBad ("Dire"). En enda replik kan användas för så många specifika händelser som du vill. Om du vill tilldela en replik till flera ömsesidigt exklusiva händelser så behöver var och en av dessa händelsetriggers byggas separat.
Slutligen dyker timingmodifierare och länkarna som leder händelserepliker till en uppföljningsreplik upp i E-kolumnen. För att gå vidare på ovanstående exempel:
A | B | C | D | E |
announcer_courier_rad_dead_01 | Radiant’s Courier has been killed. | Custom | CourierLostGood | respeakdelay 35 then self TLK_DOTA_FOLLOWUP_GENERIC foo:0 9 |
announcer_courier_followup_01 | That poor, defenseless courier! | Followup_Generic | CourierLostGood Chance_25% | speakonce |
I dessa utökade exempel finns tre typer av modifierare som visas i E-kolumnen:
respeakdelay 35 | Denna indikerar på att när denna specifika replik har spelats upp, så kan den inte spelas igen förrän efter en viss tidsperiod, i detta fall 35 sekunder. |
speakonce | Denna indikerar att när repliken har spelats upp, så kommer den inte spelas igen under resten av matchen. |
then self TLK_DOTA_FOLLOWUP_GENERIC foo:0 9 | Det här är en operation. Den indikerar uppföljningstypen för att gå vidare till nästa (i detta fall "TLK_DOTA_FOLLOWUP_GENERIC") där numret på slutet visar antalet sekunder att vänta innan uppföljningen, i detta fall nio sekunder. |
Varje sorts händelse har en naturlig och unik väntetid för upprepning för att förhindra lyssnaren från att bli överväldigad av upprepad information, så för de flesta repliker behöver man inte ha med en timing-modifierare.
Andra uppföljningskoncept inkluderar TLK_DOTA_FOLLOWUP_POSITIVE (avsedd att följa händelser som slutat väl för lyssnaren), TLK_DOTA_FOLLOWUP_NEGATIVE (avsedd att följa händelser som slutat dåligt för lyssnaren), and TLK_DOTA_FOLLOWUP_NEGATIVE_ONGOING (avsedd att följa repliker som indikerar en pågående händelse som lyssnaren bör varnas för eller vara uppmärksam på, till exempel "Stormmoln samlas").
När du är redo att konstruera dina utroparhändelser, var god se Lista över händelse-triggers, Kalkylblad för exempelutropare, Kalkylblad med exempel för Killing Spree-utropare för mer information och exempel. Du kanske också vill läsa Kalkylblad för Bastion-utropare and Kalkylblad med Bastions Killing Spree-utropare för fler exempel på hur utroparens repliker och kriterier kan användas och kombineras.