iddevnet/quake4/Sounds_SoundPlacement.html
Daniel Gibson 2c9f515b10 Added remaining missing images to Quake4 articles
Only guied_ansi.jpg and guied_symbol.jpg of
Adding_Fonts_to_use_in_Quake_4_GUIs are still missing
(and Doom3/skins_imp.png), but so far no one seems to have them
2021-04-23 02:02:47 +02:00

260 lines
16 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8">
<meta name="robots" content="index,nofollow">
<title>Sounds SoundPlacement - Quake 4 SDK Documentation</title>
<script type="text/javascript" src="wiki/common/js/common.js"></script>
<script type="text/javascript">
<!--// common functions
// We keep here the state of the search box
searchIsDisabled = false;
function searchChange(e) {
// Update search buttons status according to search box content.
// Ignore empty or whitespace search term.
var value = e.value.replace(/\s+/, '');
if (value == '' || searchIsDisabled) {
searchSetDisabled(true);
} else {
searchSetDisabled(false);
}
}
function searchSetDisabled(flag) {
// Enable or disable search
document.getElementById('fullsearch').disabled = flag;
document.getElementById('titlesearch').disabled = flag;
}
function searchFocus(e) {
// Update search input content on focus
if (e.value == 'Search') {
e.value = '';
e.className = '';
searchIsDisabled = false;
}
}
function searchBlur(e) {
// Update search input content on blur
if (e.value == '') {
e.value = 'Search';
e.className = 'disabled';
searchIsDisabled = true;
}
}
function actionsMenuInit(title) {
// Initialize action menu
for (i = 0; i < document.forms.length; i++) {
var form = document.forms[i];
if (form.className == 'actionsmenu') {
// Check if this form needs update
var div = form.getElementsByTagName('div')[0];
var label = div.getElementsByTagName('label')[0];
if (label) {
// This is the first time: remove label and do buton.
div.removeChild(label);
var dobutton = div.getElementsByTagName('input')[0];
div.removeChild(dobutton);
// and add menu title
var select = div.getElementsByTagName('select')[0];
var item = document.createElement('option');
item.appendChild(document.createTextNode(title));
item.value = 'show';
select.insertBefore(item, select.options[0]);
select.selectedIndex = 0;
}
}
}
}
//-->
</script>
<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="wiki/modern/css/common.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="screen" href="wiki/modern/css/screen.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="print" href="wiki/modern/css/print.css">
<link rel="stylesheet" type="text/css" charset="utf-8" media="projection" href="wiki/modern/css/projection.css">
<!-- css only for MSIE browsers -->
<!--[if IE]>
<link rel="stylesheet" type="text/css" charset="utf-8" media="all" href="wiki/modern/css/msie.css">
<![endif]-->
<link rel="Start" href="./Quake4SDK.html">
<link rel="Alternate" title="Wiki Markup" href="./Sounds_SoundPlacement?action=raw">
<link rel="Alternate" media="print" title="Print View" href="./Sounds_SoundPlacement?action=print">
<link rel="Appendix" title="image1.jpg" href="./Sounds_SoundPlacement?action=AttachFile&amp;do=view&amp;target=image1.jpg">
<link rel="Appendix" title="image2.jpg" href="./Sounds_SoundPlacement?action=AttachFile&amp;do=view&amp;target=image2.jpg">
<link rel="Search" href="./FindPage.html">
<link rel="Index" href="./TitleIndex.html">
<link rel="Glossary" href="./WordIndex.html">
<link rel="Help" href="./HelpOnFormatting.html">
</head>
<body lang="en" dir="ltr">
<div id="header">
<div id="logo"><a href="./Quake4SDK.html"><img src="wiki/common/moinmoin.png" alt="MoinMoin Logo"></a></div>
<form id="searchform" method="get" action="">
<div>
<input type="hidden" name="action" value="fullsearch">
<input type="hidden" name="context" value="180">
<label for="searchinput">Search:</label>
<input id="searchinput" type="text" name="value" value="" size="20"
onfocus="searchFocus(this)" onblur="searchBlur(this)"
onkeyup="searchChange(this)" onchange="searchChange(this)" alt="Search">
<input id="titlesearch" name="titlesearch" type="submit"
value="Titles" alt="Search Titles">
<input id="fullsearch" name="fullsearch" type="submit"
value="Text" alt="Search Full Text">
</div>
</form>
<script type="text/javascript">
<!--// Initialize search form
var f = document.getElementById('searchform');
f.getElementsByTagName('label')[0].style.display = 'none';
var e = document.getElementById('searchinput');
searchChange(e);
searchBlur(e);
//-->
</script>
<ul id="username"><li><a href="./Sounds_SoundPlacement?action=login" id="login">Login</a></li></ul>
<div id="locationline">
<ul id="pagelocation">
<li><a class="backlink" title="Click to do a full-text search for this title" href="./Sounds_SoundPlacement?action=fullsearch&amp;value=linkto%3A%22Sounds+SoundPlacement%22&amp;context=180">Sounds SoundPlacement</a></li>
</ul>
</div>
<ul id="navibar">
<li class="wikilink"><a href="./GettingStarted.html">GettingStarted</a></li><li class="wikilink"><a href="./ScriptFile.html">ScriptFile</a></li><li class="wikilink"><a href="./MakeAMod.html">MakeAMod</a></li><li class="wikilink"><a href="./LevelEditor.html">LevelEditor</a></li><li class="wikilink"><a href="./FXEditor.html">FXEditor</a></li><li class="wikilink"><a href="./GUIEditor.html">GUIEditor</a></li><li class="wikilink"><a href="./Sounds.html">Sounds</a></li><li class="wikilink"><a href="./Animations.html">Animations</a></li><li class="wikilink"><a href="./ArtReference.html">ArtReference</a></li><li class="wikilink"><a href="./DownloadableContent.html">DownloadableContent</a></li><li class="wikilink"><a href="./RecentChanges.html">RecentChanges</a></li><li class="wikilink"><a href="./FindPage.html">FindPage</a></li><li class="wikilink"><a href="./HelpContents.html">HelpContents</a></li><li class="current"><a href="./Sounds_SoundPlacement.html">Sounds SoundPlacement</a></li>
</ul>
<div id="pageline"><hr style="display:none;"></div>
<ul class="editbar"><li><span class="disabled">Immutable Page</span></li><li><a href="./Sounds_SoundPlacement?action=info">Info</a></li><li><a href="./Sounds_SoundPlacement?action=AttachFile">Attachments</a></li><li>
<form class="actionsmenu" method="get" action="">
<div>
<label>More Actions:</label>
<select name="action"
onchange="if ((this.selectedIndex != 0) &&
(this.options[this.selectedIndex].disabled == false)) {
this.form.submit();
}
this.selectedIndex = 0;">
<option value="raw">Raw Text</option>
<option value="print">Print View</option>
<option value="RenderAsDocbook">Render as Docbook</option>
<option value="refresh">Delete Cache</option>
<option value="show" disabled class="disabled">------------</option>
<option value="SpellCheck">Check Spelling</option>
<option value="LikePages">Like Pages</option>
<option value="LocalSiteMap">Local Site Map</option>
<option value="show" disabled class="disabled">------------</option>
<option value="RenamePage" disabled class="disabled">Rename Page</option>
<option value="DeletePage" disabled class="disabled">Delete Page</option>
<option value="show" disabled class="disabled">------------</option>
<option value="MyPages">My Pages</option>
<option value="SubscribeUser">Subscribe User</option>
<option value="show" disabled class="disabled">------------</option>
<option value="Despam">Remove Spam</option>
<option value="PackagePages">Package Pages</option>
</select>
<input type="submit" value="Do">
</div>
<script type="text/javascript">
<!--// Init menu
actionsMenuInit('More Actions:');
//-->
</script>
</form>
</li></ul>
</div>
<div id="page" lang="en" dir="ltr">
<div dir="ltr" id="content" lang="en"><span class="anchor" id="top"></span>
<span class="anchor" id="line-1"></span><p class="line867">
<h1 id="head-00f8f014c3d5a3568fb9283187f83b9d90eede59">Quake 4 Sound Placement</h1>
<span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line867">
<h2 id="head-1303067f6a6a8105664f8e9ce404d227c1c1d809">Ambient Sounds:</h2>
<span class="anchor" id="line-4"></span><p class="line874">When you place ambient sounds and edit reverb data in Quake 4, it is all done in real-time while the game is actually running. The following screeshot is what all of the audio tools looks like while youre placing them in the game environment. <span class="anchor" id="line-5"></span><span class="anchor" id="line-6"></span><p class="line867"><img class="attachment" src="./Sounds_SoundPlacement1.jpg" title="attachment:image1.jpg" /> <span class="anchor" id="line-7"></span><span class="anchor" id="line-8"></span><ol type="1"><li>This is the audio editor. This is the place where you edit the majority of speaker data in the game. <span class="anchor" id="line-9"></span></li><li>This is the actual game running in windowed mode <span class="anchor" id="line-10"></span></li><li>This is the reverb editor for OpenAL use. <span class="anchor" id="line-11"></span><span class="anchor" id="line-12"></span></li></ol><p class="line874">Ready to get going? Good! Start the game and run in windowed mode (r_fullscreen 0, then vidrestart), load the map you wish to start placing ambient sounds in. You might want to kill all the monsters in the level by bringing the console down and typing “killmonsters” and going invulnerable by typing “god”. That way you will be able to go through the level without being bothered. You might also want to bind a key to “noclip” so you can get to hard to reach spaces easily. <span class="anchor" id="line-13"></span><span class="anchor" id="line-14"></span><p class="line862">Now bring down the console and type “editsounds”. This will open up the sound editor that allows you to preview and place ambient sounds throughout the level. It will analyze the shader file for all of the sounds attributes (meaning volume &amp; radius settings), but you can make changes to each individual speaker that you place in the world. <span class="anchor" id="line-15"></span><span class="anchor" id="line-16"></span><p class="line867"><img class="attachment" src="./Sounds_SoundPlacement2.jpg" title="attachment:image2.jpg" /> <span class="anchor" id="line-17"></span><span class="anchor" id="line-18"></span><p class="line874">As you can see, the majority of the tool itself is self-explanatory. If you wish to select a specific speaker while playing, just click on the speaker like youre shooting it in the game environment. You can also choose certain speakers from the pulldown menu. You might want to make sure youre in “noclip” mode though. If you choose a speaker that is up in the sky, the player will fall to his/her demise. <span class="anchor" id="line-19"></span><span class="anchor" id="line-20"></span><p class="line874">Its always a good idea to immediately play through the level like normal after you finish placing ambient sounds. This makes sure that your ambient sounds arent too overpowering. <span class="anchor" id="line-21"></span><span class="anchor" id="line-22"></span><span class="anchor" id="line-23"></span><p class="line867">
<h2 id="head-32f8110bfe6b8d66ae167da4e6a38eee79ab0ee2">Editing Reverb:</h2>
<span class="anchor" id="line-24"></span><p class="line874">If you are running the game in OpenAL, then you can edit reverb settings in your maps as well by typing “editreverb” on the console. The reverb data is derived from portal data in your map, so if you update the portal data, you MUST updated the reverb information. Generally, the reverb-pass should be the last thing you do before you call the map “final”. <span class="anchor" id="line-25"></span><span class="anchor" id="line-26"></span><span class="anchor" id="line-27"></span><p class="line867">
<h2 id="head-bae5fdba4cea9e58a58bf4558ec9cc3e8b0ebccb">World Objects and Animations:</h2>
<span class="anchor" id="line-28"></span><p class="line874">This is a process that can get very involved, so prepare thyself! The way to do this is to start the game, drop the console down, and start Modview. This will open our in-house model/animation viewer tool. Load up the model and/or animation you wish to attach a sound to, note the frame numbers you wish the sound effects to occur on, then open the appropriate .def file (in this case, the gladiator.def file) that is home to the animation you wish to edit. Add whichever sound shaders to the model definition like this: <span class="anchor" id="line-29"></span><span class="anchor" id="line-30"></span><pre>"snd_sight" "gladiator_alert"
<span class="anchor" id="line-31"></span>"snd_stomp" "gladiator_footsteps_run"
<span class="anchor" id="line-32"></span>"snd_punch" "gladiator_punch"
<span class="anchor" id="line-33"></span>"snd_swing" "gladiator_swing"
<span class="anchor" id="line-34"></span></pre><span class="anchor" id="line-35"></span><p class="line874">Next, find the specific animation in the .def file then use something like this to edit: <span class="anchor" id="line-36"></span><span class="anchor" id="line-37"></span><pre>anim range_attack1 models/monsters/gladiator/gla_blaster_strafe.md5anim
<span class="anchor" id="line-38"></span>{ frame 6,21 sound snd_stomp
<span class="anchor" id="line-39"></span> frame 1,25 sound snd_breathe
<span class="anchor" id="line-40"></span> frame 4,25 sound snd_servo
<span class="anchor" id="line-41"></span>}
<span class="anchor" id="line-42"></span></pre><span class="anchor" id="line-43"></span><p class="line874">This shows that for the animation for the gladiators range_attack1, the stomp sound will occur on frame 6 and 21, and his breathing falls on frame 1 and 25, while his servo sounds fire off on frame 4 and 25. <span class="anchor" id="line-44"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">Sounds SoundPlacement (last edited 2005-11-04 17:29:09 by <span title="EricBiessman @ 67.129.250.254[67.129.250.254]"><a class="nonexistent" href="./EricBiessman.html" title="EricBiessman @ 67.129.250.254[67.129.250.254]">EricBiessman</a></span>)</p>
<div id="pagebottom"></div>
</div>
<div id="footer">
<ul class="editbar"><li><span class="disabled">Immutable Page</span></li><li><a href="./Sounds_SoundPlacement?action=info">Info</a></li><li><a href="./Sounds_SoundPlacement?action=AttachFile">Attachments</a></li><li>
<form class="actionsmenu" method="get" action="">
<div>
<label>More Actions:</label>
<select name="action"
onchange="if ((this.selectedIndex != 0) &&
(this.options[this.selectedIndex].disabled == false)) {
this.form.submit();
}
this.selectedIndex = 0;">
<option value="raw">Raw Text</option>
<option value="print">Print View</option>
<option value="RenderAsDocbook">Render as Docbook</option>
<option value="refresh">Delete Cache</option>
<option value="show" disabled class="disabled">------------</option>
<option value="SpellCheck">Check Spelling</option>
<option value="LikePages">Like Pages</option>
<option value="LocalSiteMap">Local Site Map</option>
<option value="show" disabled class="disabled">------------</option>
<option value="RenamePage" disabled class="disabled">Rename Page</option>
<option value="DeletePage" disabled class="disabled">Delete Page</option>
<option value="show" disabled class="disabled">------------</option>
<option value="MyPages">My Pages</option>
<option value="SubscribeUser">Subscribe User</option>
<option value="show" disabled class="disabled">------------</option>
<option value="Despam">Remove Spam</option>
<option value="PackagePages">Package Pages</option>
</select>
<input type="submit" value="Do">
</div>
<script type="text/javascript">
<!--// Init menu
actionsMenuInit('More Actions:');
//-->
</script>
</form>
</li></ul>
<ul id="credits">
<li><a href="http://moinmoin.wikiwikiweb.de/">MoinMoin Powered</a></li><li><a href="http://www.python.org/">Python Powered</a></li><li><a href="http://validator.w3.org/check?uri=referer">Valid HTML 4.01</a></li>
</ul>
</div>
</body>
</html>