iddevnet/quake4/LevelEditor_Q4Conversion.html
2021-04-10 15:40:18 +02:00

247 lines
14 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>LevelEditor Q4Conversion - 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">
<link rel="Alternate" title="Wiki Markup" href="./LevelEditor_Q4Conversion?action=raw">
<link rel="Alternate" media="print" title="Print View" href="./LevelEditor_Q4Conversion?action=print">
<link rel="Search" href="./FindPage">
<link rel="Index" href="./TitleIndex">
<link rel="Glossary" href="./WordIndex">
<link rel="Help" href="./HelpOnFormatting">
</head>
<body lang="en" dir="ltr">
<div id="header">
<div id="logo"><a href="./Quake4SDK"><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="./LevelEditor_Q4Conversion?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="./LevelEditor_Q4Conversion?action=fullsearch&amp;value=linkto%3A%22LevelEditor+Q4Conversion%22&amp;context=180">LevelEditor Q4Conversion</a></li>
</ul>
</div>
<ul id="navibar">
<li class="wikilink"><a href="./GettingStarted">GettingStarted</a></li><li class="wikilink"><a href="./ScriptFile">ScriptFile</a></li><li class="wikilink"><a href="./MakeAMod">MakeAMod</a></li><li class="wikilink"><a href="./LevelEditor">LevelEditor</a></li><li class="wikilink"><a href="./FXEditor">FXEditor</a></li><li class="wikilink"><a href="./GUIEditor">GUIEditor</a></li><li class="wikilink"><a href="./Sounds">Sounds</a></li><li class="wikilink"><a href="./Animations">Animations</a></li><li class="wikilink"><a href="./ArtReference">ArtReference</a></li><li class="wikilink"><a href="./DownloadableContent">DownloadableContent</a></li><li class="wikilink"><a href="./RecentChanges">RecentChanges</a></li><li class="wikilink"><a href="./FindPage">FindPage</a></li><li class="wikilink"><a href="./HelpContents">HelpContents</a></li><li class="current"><a href="./LevelEditor_Q4Conversion">LevelEditor Q4Conversion</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="./LevelEditor_Q4Conversion?action=info">Info</a></li><li><a href="./LevelEditor_Q4Conversion?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-dd2e23882918634ae9d9ef2c835e74e6e8c00652">Converting Levels to Quake 4</h1>
<span class="anchor" id="line-2"></span><span class="anchor" id="line-3"></span><p class="line874">A common question online seems to be "How can I load a Quake 3 map into Quake 4?" As great as original maps are, re-makes and conversions offer some fun nostalgia and, in the case of someone converting one of their own older maps, great opportunities to take familiar work for prior Quake games and use that as a base to become familiar with the Q4 editor and workflow. Here's a quick overview on how you can get your older work up and running in Quake 4. <span class="anchor" id="line-4"></span><span class="anchor" id="line-5"></span><p class="line867">
<h2 id="head-14f9ce5a95e2142e34ef5451f79a2177e5ce6f16">Preparing the Old Map</h2>
<span class="anchor" id="line-6"></span><span class="anchor" id="line-7"></span><p class="line874">Quake 4 can load .map files for any previous Quake title. To make the process as smooth as possible, we recommend the following steps: <span class="anchor" id="line-8"></span><span class="anchor" id="line-9"></span><ul><li>You should delete entities from your old map before loading it into Quake 4. Entities with invalid classnames will load into Quake 4 as small green boxes that do not register as entities (you cannot just change their classname to something useful, unfortunately) and can be a pain to remove. <span class="anchor" id="line-10"></span></li><li>Grouped patch caps in Quake 3 map files may crash the Quake 4 editor. You should ungroup these before proceeding with a conversion. <span class="anchor" id="line-11"></span></li><li>You can leave lights in their current state and load them into Quake 4, but they will not have any bounds or center information, and are only useful as positional reference and not to automatically light the new level. (Old iterations of the 'light' entity had no volume defined as seen in Doom 3/ Quake 4). <span class="anchor" id="line-12"></span><span class="anchor" id="line-13"></span></li></ul><p class="line867">
<h2 id="head-fb07a73b8c14ed77fac25d1d7b5de45c493f0677">Finishing the Conversion</h2>
<span class="anchor" id="line-14"></span><span class="anchor" id="line-15"></span><p class="line874">Once the map is loaded, there's just a handful more things to keep in mind: <span class="anchor" id="line-16"></span><span class="anchor" id="line-17"></span><ul><li><p class="line862">There is no world scale difference; all maps will come in 1:1. The player's bounding box is still 32 units wide, so any 33+ unit wide gap still remains equally accessible. However, the player is slightly taller compared to previous Quakes (a continuing trend, it seems), as is the player view height (this results in an illusion that things are slightly slower in comparison to Quake 3, a result of the parallax difference between eye and floor). With this in mind, you <em>may</em> have to raise very low doorways and obstacles. Most Quake 3 levels will likely accomodate the new player with no adjustment needed. Quake 2's player height was 56 units and may require additional height increases, while Quake levels were based upon an even smaller player model (56 units tall), so these levels may pose the greatest challenge vertically. <span class="anchor" id="line-18"></span></li><li>Your level will load with no textures. You can halfway fix the problem by making a new mtr file mirroring all the files used in the old version, but world UVs are also not retained, which will result in needing to re-scale/re-align most faces anyway. <span class="anchor" id="line-19"></span></li><li><p class="line862">Performance will not be the same, for better or for worse (and, given the technological jump and extra stuff in Q4, I think it's safe to assume it'll err toward worse). Please keep our <a href="./LevelEditor_Performance">performance considerations</a> close during the conversion process, as nearly all aspects of performance tweaking are new to Quake 4 from the previous Quake titles. <span class="anchor" id="line-20"></span><span class="anchor" id="line-21"></span></li></ul><p class="line867"><hr /><p class="line874"> <span class="anchor" id="line-22"></span>Back to <a href="./LevelEditor">LevelEditor</a> <span class="anchor" id="line-23"></span><span class="anchor" id="bottom"></span></div><p id="pageinfo" class="info" lang="en" dir="ltr">LevelEditor Q4Conversion (last edited 2006-02-15 05:05:40 by <span title="AndrewWeldon @ 24-240-36-51.dhcp.mdsn.wi.charter.com[24.240.36.51]"><a class="nonexistent" href="./AndrewWeldon" title="AndrewWeldon @ 24-240-36-51.dhcp.mdsn.wi.charter.com[24.240.36.51]">AndrewWeldon</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="./LevelEditor_Q4Conversion?action=info">Info</a></li><li><a href="./LevelEditor_Q4Conversion?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>