{"id":1581,"date":"2025-10-09T22:56:18","date_gmt":"2025-10-09T21:56:18","guid":{"rendered":"https:\/\/grimms3dworlds.ddns.net\/?page_id=1581"},"modified":"2025-10-09T23:00:03","modified_gmt":"2025-10-09T22:00:03","slug":"compile-errors","status":"publish","type":"page","link":"https:\/\/grimms3dworlds.ddns.net\/index.php\/compile-errors\/","title":{"rendered":"Compile Errors"},"content":{"rendered":"\n<style>\n\/* Scoped to avoid conflicts *\/\n.compiler-errors-container {\n  font-family: 'Segoe UI', Arial, sans-serif;\n  max-width: 900px;\n  margin: 0 auto;\n  padding: 20px;\n  background: #ffffff;\n  border-radius: 8px;\n  box-shadow: 0 4px 12px rgba(0,0,0,0.1);\n}\n.compiler-errors-container h1, .compiler-errors-container h2, .compiler-errors-container h3 {\n  color: #1a3c5e;\n  margin-bottom: 15px;\n  padding-bottom: 8px;\n}\n.compiler-errors-container h1 {\n  border-bottom: 2px solid #e0e6ed;\n}\n.compiler-errors-container h2 {\n  border-bottom: 2px solid #e0e6ed;\n}\n.compiler-errors-container h3 {\n  border-bottom: 1px solid #e0e6ed;\n}\n.compiler-errors-container p {\n  color: #4a4a4a;\n  line-height: 1.6;\n}\n.compiler-errors-container .note {\n  background: #e7f3fe;\n  border: 1px solid #b6d4fe;\n  padding: 15px;\n  color: #0c5460;\n  border-radius: 5px;\n  margin-bottom: 20px;\n}\n.compiler-errors-container ul, .compiler-errors-container ol {\n  color: #4a4a4a;\n  padding-left: 20px;\n  margin-bottom: 20px;\n}\n.compiler-errors-container ul li, .compiler-errors-container ol li {\n  margin-bottom: 8px;\n}\n.compiler-errors-container pre {\n  position: relative;\n  background: #1e1e1e;\n  color: #ffffff;\n  padding: 15px;\n  border-radius: 5px;\n  font-size: 14px;\n  line-height: 1.4;\n  max-height: 400px;\n  overflow-y: auto;\n  overflow-x: auto;\n  white-space: pre-wrap; \/* Changed to pre-wrap for better line break handling *\/\n  margin-bottom: 20px;\n}\n.compiler-errors-container .copy-btn {\n  position: absolute;\n  top: 10px;\n  right: 10px;\n  background: #007bff;\n  color: #ffffff;\n  border: none;\n  padding: 8px 12px;\n  border-radius: 4px;\n  cursor: pointer;\n  font-size: 12px;\n}\n.compiler-errors-container .copy-btn.copied {\n  background: #28a745;\n}\n.compiler-errors-container table {\n  width: 100%;\n  border-collapse: collapse;\n  margin-bottom: 20px;\n}\n.compiler-errors-container th, .compiler-errors-container td {\n  border: 1px solid #ddd;\n  padding: 8px;\n  text-align: left;\n  color: black;\n}\n.compiler-errors-container th {\n  background: #f8f9fa;\n  color: black;\n}\n<\/style>\n\n<div class=\"compiler-errors-container\">\n  <script>\n  function copyCode(button) {\n    const pre = button.parentElement;\n    const code = pre.querySelector('code');\n    const text = code.textContent;\n    navigator.clipboard.writeText(text).then(() => {\n      button.textContent = 'Copied!';\n      button.classList.add('copied');\n      setTimeout(() => {\n        button.textContent = 'Copy';\n        button.classList.remove('copied');\n      }, 2000);\n    }).catch(err => {\n      console.error('Failed to copy: ', err);\n    });\n  }\n  <\/script>\n\n  <h1>Compiler Errors in Call of Duty 2 Map Editing<\/h1>\n  <p>When compiling a map for Call of Duty 2 using tools like Radiant, the compiler output provides critical feedback on errors. This guide covers common issues, their causes, and how to resolve them.<\/p>\n\n  <h2>Skybox Leaks<\/h2>\n  <h3>What is a Skybox Leak?<\/h3>\n  <p>A skybox leak occurs when the skybox in a Call of Duty 2 map has gaps, holes, or unsealed edges, allowing the game engine&#8217;s visibility rays to escape into the void (non-rendered space outside the map). This results in compilation errors, visual glitches, or incorrect lighting.<\/p>\n\n  <h3>Causes of Skybox Leaks<\/h3>\n  <ul>\n    <li><strong>Unsealed geometry:<\/strong> Gaps between skybox brushes or missing faces (e.g., no bottom or side).<\/li>\n    <li><strong>Map elements outside skybox:<\/strong> Lights, spawns, or models extending beyond the skybox boundaries.<\/li>\n    <li><strong>Incorrect textures:<\/strong> Using non-sky or non-caulk textures on outer skybox faces, allowing rays to escape.<\/li>\n  <\/ul>\n\n  <p class=\"note\"><strong>Note:<\/strong> A skybox leak can cause additional issues, such as portal errors. Prioritize fixing skybox leaks before addressing other problems.<\/p>\n\n  <h3>Compiler Notification<\/h3>\n  <p>If a skybox leak is detected, the compiler will output a message like:<\/p>\n  <pre><code>**********************\n******* leaked *******\n**********************\n================================\nWROTE BSP LEAKFILE: C:\\Program Files (x86)\\Steam\\steamapps\\common\\Call of Duty 2\\main\\maps\\mp\\mp_yourmapname.lin\n<\/code><button class=\"copy-btn\" onclick=\"copyCode(this)\">Copy<\/button><\/pre>\n\n  <h3>Debugging Skybox Leaks<\/h3>\n  <p>The compiler generates a <code>.lin<\/code> file to help locate leaks. Follow these steps in Radiant:<\/p>\n  <ol>\n    <li>Ensure the map is fully compiled to generate an accurate <code>.lin<\/code> file.<\/li>\n    <li>In Radiant, go to <strong>File > Pointfile<\/strong> to load the <code>.lin<\/code> file.<\/li>\n    <li>Press <strong>Ctrl+Shift+K<\/strong> or navigate to <strong>Misc > Next Leak Spot<\/strong> to display a red line pointing to the leak location.<\/li>\n    <li>If no red line appears, open the <code>mp_yourmapname.lin<\/code> file in a text editor to view coordinates, e.g.:<\/li>\n  <\/ol>\n  <pre><code>644.000000 744.000000 280.000000\n696.000000 744.000000 232.000000\n<\/code><button class=\"copy-btn\" onclick=\"copyCode(this)\">Copy<\/button><\/pre>\n  <p>Enter these coordinates in Radiant via <strong>Misc > Go to Position<\/strong> to move the camera to the leak location.<\/p>\n\n  <h2>Portal Issues<\/h2>\n  <p>Portal issues arise during compilation and are often related to skybox leaks or improper portal placement. Two common errors are:<\/p>\n  <table>\n    <tr>\n      <th>Error<\/th>\n      <th>Description<\/th>\n    <\/tr>\n    <tr>\n      <td><code>WARNING: portal at (484 392 -208) map yourmaporprefab.map entity 0 brush 426 is not at a BSP split, is floating, or is next to a solid brush<\/code><\/td>\n      <td>Uncommon; often linked to skybox leaks. Fix the leak first to resolve.<\/td>\n    <\/tr>\n    <tr>\n      <td><code>WARNING: portal at (1264 144 -208) map yourmaporprefab.map entity 0 brush 375 has the same cell on both sides, portal ignored<\/code><\/td>\n      <td>Indicates a portal leaking into another area, causing both sides to be in the same cell.<\/td>\n    <\/tr>\n  <\/table>\n\n  <h3>Debugging Portal Issues<\/h3>\n  <p><strong>In a Prefab:<\/strong><\/p>\n  <ol>\n    <li>Open the prefab in Radiant.<\/li>\n    <li>Go to <strong>Misc > Find Brush<\/strong>, enter the brush number (e.g., 375), and click OK to move to the offending portal.<\/li>\n  <\/ol>\n  <p><strong>In the Main Map:<\/strong><\/p>\n  <ol>\n    <li>Use <strong>Misc > Go to Position<\/strong> and enter the coordinates (e.g., 1264 144 -208) to locate the portal.<\/li>\n  <\/ol>\n\n  <h2>Duplicate Planes<\/h2>\n  <p>Duplicate planes occur when a brush has overlapping faces, often due to cutting, resizing, or vertex manipulation. The compiler may report:<\/p>\n  <pre><code>Map yourmaporprefab.map, Entity 0, Brush 129: duplicate plane\n<\/code><button class=\"copy-btn\" onclick=\"copyCode(this)\">Copy<\/button><\/pre>\n  <h3>Fixing Duplicate Planes<\/h3>\n  <ol>\n    <li>Go to <strong>Misc > Find Brush<\/strong> and enter the brush number (e.g., 129) to locate the brush.<\/li>\n    <li>Select the brush and choose one of the following:<\/li>\n    <ul>\n      <li><strong>Option 1:<\/strong> Delete the brush and recreate it.<\/li>\n      <li><strong>Option 2:<\/strong> Identify the duplicate plane:\n        <ul>\n          <li>With the brush selected, hold <strong>Ctrl+Shift<\/strong> and click each face.<\/li>\n          <li>Good faces will deselect; the duplicate face remains highlighted or changes highlight due to overlapping faces.<\/li>\n          <li>Use the clipping tool to recut the brush and remove the duplicate plane.<\/li>\n        <\/ul>\n      <\/li>\n    <\/ul>\n  <\/ol>\n\n  <h2>Light Radius Errors<\/h2>\n  <p>A common lighting error is:<\/p>\n  <pre><code>WARNING: ignoring light at (232 184 104): no 'radius' key\n<\/code><button class=\"copy-btn\" onclick=\"copyCode(this)\">Copy<\/button><\/pre>\n  <p>This indicates a light at the specified position lacks a radius value.<\/p>\n  <h3>Fixing Light Radius Errors<\/h3>\n  <ol>\n    <li>Select the light in Radiant.<\/li>\n    <li>Press <strong>N<\/strong> to open the entity window.<\/li>\n    <li>Add a key\/value pair for <code>radius<\/code> (e.g., <code>radius 200<\/code>).<\/li>\n  <\/ol>\n<\/div>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\/* Scoped to avoid conflicts *\/ .compiler-errors-container { font-family: &#8216;Segoe UI&#8217;, Arial, sans-serif; max-width: 900px; margin: 0 auto; padding: 20px; background: #ffffff; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); } .compiler-errors-container h1, .compiler-errors-container h2, .compiler-errors-container h3 { color: #1a3c5e; margin-bottom: 15px; padding-bottom: 8px; } .compiler-errors-container h1 { border-bottom: 2px solid #e0e6ed; } .compiler-errors-container h2 { [&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1581","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/grimms3dworlds.ddns.net\/index.php\/wp-json\/wp\/v2\/pages\/1581","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/grimms3dworlds.ddns.net\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/grimms3dworlds.ddns.net\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/grimms3dworlds.ddns.net\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/grimms3dworlds.ddns.net\/index.php\/wp-json\/wp\/v2\/comments?post=1581"}],"version-history":[{"count":2,"href":"https:\/\/grimms3dworlds.ddns.net\/index.php\/wp-json\/wp\/v2\/pages\/1581\/revisions"}],"predecessor-version":[{"id":1584,"href":"https:\/\/grimms3dworlds.ddns.net\/index.php\/wp-json\/wp\/v2\/pages\/1581\/revisions\/1584"}],"wp:attachment":[{"href":"https:\/\/grimms3dworlds.ddns.net\/index.php\/wp-json\/wp\/v2\/media?parent=1581"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}