mirror of
https://github.com/dhewm/iddevnet.git
synced 2024-11-22 04:21:59 +00:00
5a7e5cbe45
it's more or less usable now! all images (except for the ones of moinmoin itself) are still missing. possibly articles are missing as well, haven't checked yet (and the lost downloads are missing, of course)
251 lines
15 KiB
HTML
251 lines
15 KiB
HTML
<!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>NetworkDemos - 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="./NetworkDemos?action=raw">
|
|
<link rel="Alternate" media="print" title="Print View" href="./NetworkDemos?action=print">
|
|
<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="./NetworkDemos?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="./NetworkDemos?action=fullsearch&value=linkto%3A%22NetworkDemos%22&context=180">NetworkDemos</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="./NetworkDemos.html">NetworkDemos</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="./NetworkDemos?action=info">Info</a></li><li><a href="./NetworkDemos?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="line862">Network demos are a recording of the network traffic during a multiplayer game. You can record a network demo on a client connected to a multiplayer server ( which we will refer to as <em>client netdemos</em> ), or you can record them directly on the server ( <em>server netdemos</em>, which were introduced in <strong>Quake 4 1.1</strong> ). <span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line862">When you play back a network demo, Quake 4 will behave just as if it was playing a live game and will reproduce the recorded session. <em>Server netdemos</em> record more information that <em>client netdemos</em>, and will allow you to fly around in the world during the replay, and to cycle between following the various players. <span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><p class="line867">
|
|
<h3 id="head-2e7437fdd8197d367671f02840a2145a77a4ee3b">Network demo commands:</h3>
|
|
<span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span><ul><li><p class="line891"><strong>recordNetDemo [<em>demoname</em>]</strong>: start a recording <span class="anchor" id="line-8"></span></li><li><p class="line891"><strong>playNetDemo <em>demoname</em></strong>: play back a network demo <span class="anchor" id="line-9"></span></li><li><p class="line891"><strong>stopNetDemo</strong>: stop current recording or replay <span class="anchor" id="line-10"></span></li><li><p class="line891"><strong>playNetTimeDemo <em>demoname</em></strong>: run a timedemo benchmark on the given network demo <span class="anchor" id="line-11"></span><span class="anchor" id="line-12"></span></li></ul><p class="line867">
|
|
<h3 id="head-3c2f250012c2bdc988a671fd4d9fb5d0cecf8059">Network demo cvars:</h3>
|
|
<span class="anchor" id="line-13"></span><span class="anchor" id="line-14"></span><ul><li><p class="line891"><strong>demo_snapshotDelay</strong>: How often to record game snapshots to the demo stream <strong>( server netdemo only )</strong> <span class="anchor" id="line-15"></span></li><li><p class="line891"><strong>demo_debug</strong>: verbose various information about the network demo subsystem when using demo commands <span class="anchor" id="line-16"></span></li><li><p class="line891"><strong>demo_enforceFS</strong>: enforce pure filesystem checks when playing back a demo. See below for details <span class="anchor" id="line-17"></span></li><li><p class="line891"><strong>demo_scale</strong>: slows or speeds up the replay ( mostly for debugging purposes ) <span class="anchor" id="line-18"></span><span class="anchor" id="line-19"></span></li></ul><p class="line867">
|
|
<h3 id="head-4a0e43dcd660432f0509931d4daa00dd70c0cf34">Why you should use network timedemos for benchmarking</h3>
|
|
<span class="anchor" id="line-20"></span><span class="anchor" id="line-21"></span><p class="line862">Render demos were written as a driver compatibility testing tool, and never intended as a benchmark tool for the game. A render demo stores render commands and feeds them to the graphics drivers. So all you're benchmarking is the performance of your GPU and it's drivers. Network demos however, will run the game code on the CPU, produce render commands and render frames to the GPU, so they are much closer to a real gameplay situation. That's why you should always use <strong>playNetTimeDemo</strong> for benchmarking rather than render demos. <span class="anchor" id="line-22"></span><span class="anchor" id="line-23"></span><p class="line862">See <strong><a href="./Benchmarking.html">Benchmarking</a></strong> for complete information on good benchmarking procedures with Quake 4. <span class="anchor" id="line-24"></span><span class="anchor" id="line-25"></span><p class="line867">
|
|
<h3 id="head-a04eb9f2b37bdfd68612f43489d51e4be18eed0c">The demo_enforceFS cvar</h3>
|
|
<span class="anchor" id="line-26"></span><span class="anchor" id="line-27"></span><p class="line874">When playing back a network demo, it is essential that the game code and assets are exactly the same as they were at the time of recording. If you are using a lot of custom pak files, it's very likely the filesystem needs a reconfiguration before it can play a demo under good conditions. Enable demo_enforceFS ( which is off by default ), so the filesystem will restart with the correct pak files whenever it needs to play a network demo. It will abort if that's not possible. Note that this only works for network demos that have been recorded on a pure server. <span class="anchor" id="line-28"></span><span class="anchor" id="line-29"></span><p class="line867">
|
|
<h3 id="head-9b7fbe55a670c3bf0b3b3d5871eef281be8feae2">Feedback</h3>
|
|
<span class="anchor" id="line-30"></span><span class="anchor" id="line-31"></span><p class="line862">Please send feedback and bug reports about the network demo functionality to <em>ttimo AT idsoftware DOT com</em> <span class="anchor" id="line-32"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">NetworkDemos (last edited 2006-07-17 22:11:36 by <span title="TimotheeBesset @ hellstorm.idsoftware.com[192.246.40.8]"><a class="nonexistent" href="./TimotheeBesset.html" title="TimotheeBesset @ hellstorm.idsoftware.com[192.246.40.8]">TimotheeBesset</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="./NetworkDemos?action=info">Info</a></li><li><a href="./NetworkDemos?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>
|
|
|