<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/">
	<channel>
		<title><![CDATA[Blockland Fan Forums - Tools and Resources]]></title>
		<link>https://forum.bcs.place/</link>
		<description><![CDATA[Blockland Fan Forums - https://forum.bcs.place]]></description>
		<pubDate>Fri, 01 May 2026 22:48:36 +0000</pubDate>
		<generator>MyBB</generator>
		<item>
			<title><![CDATA[Gamemode.txt Creation]]></title>
			<link>https://forum.bcs.place/showthread.php?tid=84</link>
			<pubDate>Mon, 23 Mar 2026 08:35:22 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.bcs.place/member.php?action=profile&uid=71">banana2</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.bcs.place/showthread.php?tid=84</guid>
			<description><![CDATA[This script will create a generateGamemodeTxt function, that when used, will create a file styled like your average gamemode's gamemode.txt.<br />
<br />
It will collect information from the gamemode you're hosting right now (Only tested on Custom gamemode).<br />
Specifically it'll create data about all add-ons, musics, and the environment. <span style="color: #000000;" class="mycode_color">Minigame should be handled by the creator.</span><br />
<br />
Example:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>generateGamemodeTXT("Add-ons/Gamemode_MyEpicDM/gamemode.txt"); //In console</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Note: This will include itself in the gamemode.txt, you can remove it if you want to. It will not create (For now) &#36;Server::GhostLimit ETC.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.bcs.place/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=29" target="_blank" title="">Script_GamemodeTXT.zip</a> (Size: 1.45 KB / Downloads: 21)
<!-- end: postbit_attachments_attachment -->]]></description>
			<content:encoded><![CDATA[This script will create a generateGamemodeTxt function, that when used, will create a file styled like your average gamemode's gamemode.txt.<br />
<br />
It will collect information from the gamemode you're hosting right now (Only tested on Custom gamemode).<br />
Specifically it'll create data about all add-ons, musics, and the environment. <span style="color: #000000;" class="mycode_color">Minigame should be handled by the creator.</span><br />
<br />
Example:<br />
<div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>generateGamemodeTXT("Add-ons/Gamemode_MyEpicDM/gamemode.txt"); //In console</code></div></div><br />
<span style="font-weight: bold;" class="mycode_b">Note: This will include itself in the gamemode.txt, you can remove it if you want to. It will not create (For now) &#36;Server::GhostLimit ETC.</span><br /><!-- start: postbit_attachments_attachment -->
<br /><!-- start: attachment_icon -->
<img src="https://forum.bcs.place/images/attachtypes/zip.png" title="ZIP File" border="0" alt=".zip" />
<!-- end: attachment_icon -->&nbsp;&nbsp;<a href="attachment.php?aid=29" target="_blank" title="">Script_GamemodeTXT.zip</a> (Size: 1.45 KB / Downloads: 21)
<!-- end: postbit_attachments_attachment -->]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Linux Raw Input (DLL)]]></title>
			<link>https://forum.bcs.place/showthread.php?tid=77</link>
			<pubDate>Sat, 07 Mar 2026 02:14:42 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.bcs.place/member.php?action=profile&uid=3">Queuenard</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.bcs.place/showthread.php?tid=77</guid>
			<description><![CDATA[<a href="https://codeberg.org/Queuenard/blockland-DLL-LinuxRawInput" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Queuenard/blockland...uxRawInput</a><br />
DLL is in releases folder<br />
<br />
This DLL enables use of the raw input APIs provided by Windows and implemented by Wine.<br />
<br />
Right now I only implemented mouse movement.<br />
<br />
This should alleviate some of the input buffering faced by Linux/Wine users.]]></description>
			<content:encoded><![CDATA[<a href="https://codeberg.org/Queuenard/blockland-DLL-LinuxRawInput" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Queuenard/blockland...uxRawInput</a><br />
DLL is in releases folder<br />
<br />
This DLL enables use of the raw input APIs provided by Windows and implemented by Wine.<br />
<br />
Right now I only implemented mouse movement.<br />
<br />
This should alleviate some of the input buffering faced by Linux/Wine users.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Blockland Liberator Python]]></title>
			<link>https://forum.bcs.place/showthread.php?tid=63</link>
			<pubDate>Fri, 28 Nov 2025 06:09:26 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.bcs.place/member.php?action=profile&uid=3">Queuenard</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.bcs.place/showthread.php?tid=63</guid>
			<description><![CDATA[<a href="https://codeberg.org/Queuenard/blockland-liberator-python" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Queuenard/blockland...tor-python</a><br />
<br />
This is the Python equivalent of the "Blockland Liberator" written in 2024. Works for r2033, the current version.<br />
<a href="https://github.com/Elletra/bl-liberator" target="_blank" rel="noopener" class="mycode_url">https://github.com/Elletra/bl-liberator</a><br />
<br />
This really isn't meant to be a fully supported project and I don't claim to understand everything it does but a few people make use of the original tool, so I made something accessible to those without the ability to compile C/C++. The C program duplicates a lot of logic already in pre-existing libraries.]]></description>
			<content:encoded><![CDATA[<a href="https://codeberg.org/Queuenard/blockland-liberator-python" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Queuenard/blockland...tor-python</a><br />
<br />
This is the Python equivalent of the "Blockland Liberator" written in 2024. Works for r2033, the current version.<br />
<a href="https://github.com/Elletra/bl-liberator" target="_blank" rel="noopener" class="mycode_url">https://github.com/Elletra/bl-liberator</a><br />
<br />
This really isn't meant to be a fully supported project and I don't claim to understand everything it does but a few people make use of the original tool, so I made something accessible to those without the ability to compile C/C++. The C program duplicates a lot of logic already in pre-existing libraries.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Queuenard's Blockland video archive]]></title>
			<link>https://forum.bcs.place/showthread.php?tid=61</link>
			<pubDate>Fri, 07 Nov 2025 03:22:38 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.bcs.place/member.php?action=profile&uid=3">Queuenard</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.bcs.place/showthread.php?tid=61</guid>
			<description><![CDATA[<a href="https://archive.org/details/blockland-queuenard-video-archive" target="_blank" rel="noopener" class="mycode_url">https://archive.org/details/blockland-qu...eo-archive</a><br />
<br />
What's that? A video archive with no videos uploaded?  <img src="https://forum.bcs.place/images/smilies/coolsmile.png" alt="Cool Smile" title="Cool Smile" class="smilie smilie_25" /><br />
<br />
Last Update: April 13th, 2026<br />
<br />
Since March 2025 I've been doing weekly scans of YouTube videos matching the search term "Blockland". I do full 2006-to-present scans usually at the beginning of every month. The full searches still turn up videos that didn't show up in prior searches. Right now I've uploaded only the export of video data since writing a whole video upload mechanism is a lot of work. As far as I'm concerned, all the videos are now safe since I personally have them all downloaded. You are encouraged to use the list to download the videos yourself, which should require <span style="text-decoration: line-through;" class="mycode_s">2.2TB</span> <span style="text-decoration: line-through;" class="mycode_s">2.13TB</span> 2.18TB of space. The full details are in the link.<br />
<br />
The Titanium / Blockistium (whose <a href="https://www.youtube.com/channel/UCED8qCOFWxhBTLDqR5cbzeA" target="_blank" rel="noopener" class="mycode_url">videos</a> also take up 625GB or 29% of the archive by disk usage) found the data useful for making <a href="https://www.youtube.com/watch?v=AygwXZeB1IU" target="_blank" rel="noopener" class="mycode_url">this compilation</a>.]]></description>
			<content:encoded><![CDATA[<a href="https://archive.org/details/blockland-queuenard-video-archive" target="_blank" rel="noopener" class="mycode_url">https://archive.org/details/blockland-qu...eo-archive</a><br />
<br />
What's that? A video archive with no videos uploaded?  <img src="https://forum.bcs.place/images/smilies/coolsmile.png" alt="Cool Smile" title="Cool Smile" class="smilie smilie_25" /><br />
<br />
Last Update: April 13th, 2026<br />
<br />
Since March 2025 I've been doing weekly scans of YouTube videos matching the search term "Blockland". I do full 2006-to-present scans usually at the beginning of every month. The full searches still turn up videos that didn't show up in prior searches. Right now I've uploaded only the export of video data since writing a whole video upload mechanism is a lot of work. As far as I'm concerned, all the videos are now safe since I personally have them all downloaded. You are encouraged to use the list to download the videos yourself, which should require <span style="text-decoration: line-through;" class="mycode_s">2.2TB</span> <span style="text-decoration: line-through;" class="mycode_s">2.13TB</span> 2.18TB of space. The full details are in the link.<br />
<br />
The Titanium / Blockistium (whose <a href="https://www.youtube.com/channel/UCED8qCOFWxhBTLDqR5cbzeA" target="_blank" rel="noopener" class="mycode_url">videos</a> also take up 625GB or 29% of the archive by disk usage) found the data useful for making <a href="https://www.youtube.com/watch?v=AygwXZeB1IU" target="_blank" rel="noopener" class="mycode_url">this compilation</a>.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Prison Escape Resources]]></title>
			<link>https://forum.bcs.place/showthread.php?tid=59</link>
			<pubDate>Thu, 04 Sep 2025 02:51:59 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.bcs.place/member.php?action=profile&uid=62">Fastmapler</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.bcs.place/showthread.php?tid=59</guid>
			<description><![CDATA[Here is the files I use when hosting prison escape. Unfortunately, the gamemode isn't properly packaged, and uses the server's enabled add-on list instead.<br />
As a result, the setup is quite convoluted and requires a few manual steps to get the game to run. This archive contains hopefully the bare mininum to run the gamemode.<br />
Or maybe you are just here to grab the music or a specific add-on, if so go for it.<br />
<br />
Server_Prison_Escape is the main add-on for the gamemode, although you can't run it like a normal gamemode. It is also not the true original file used in Tezuni's or Apak's host<br />
of the server. I made this newer add-on as I only had access to an old build I saved a long time ago, alongside another build supplied by Gentle Spy. Since then, the map used here has undergone<br />
substantial changes and additions from the original host. To be honest the code is quite spaghetti-like and has lots of hard-coded stuff in it, which makes setting up the server more difficult.<br />
<br />
To run the gamemode:<br />
Create a new blockland instance and copy the "Add-Ons", "config", and "modules" folder over, overwriting conflicting files.<br />
Optionally install RedBlocklandLoader to use the DLLs in the modules folder. (<a href="https://gitlab.com/Eagle517/redblocklandloader/-/releases" target="_blank" rel="noopener" class="mycode_url">https://gitlab.com/Eagle517/redblockland...-/releases</a>)<br />
Run the server dedicated with the default Custom "gamemode".<br />
Once you load in, run in the console "serverDirectSaveFileLoad("Add-Ons/Server_Prison_Escape/Save.bls",3,"",0,0); PrisonEscape_WantedLoop();".<br />
This will load up the save, and start the scheduled loop for the bottom print for prisoners.<br />
Create a slayer minigame using the two csv files supplied in the Server_Prison_Escape folder. You can copy this to your own client slayer config folder to more easily select it.<br />
Run the minigame, and set the "&#36;DefaultMinigame" global variable to the newly created minigame. Using "\&#36;DefaultMinigame = %minigame" ingame with ClayEval should work.<br />
The game should be ready to play now, glhf<br />
<br />
Link to archive: <a href="https://mega.nz/file/RUJixDZY#POgRFhutlFNHUCc9cjw8x5axJ1m4igdgOfcJC_fOci0" target="_blank" rel="noopener" class="mycode_url">https://mega.nz/file/RUJixDZY#POgRFhutlF...fcJC_fOci0</a>]]></description>
			<content:encoded><![CDATA[Here is the files I use when hosting prison escape. Unfortunately, the gamemode isn't properly packaged, and uses the server's enabled add-on list instead.<br />
As a result, the setup is quite convoluted and requires a few manual steps to get the game to run. This archive contains hopefully the bare mininum to run the gamemode.<br />
Or maybe you are just here to grab the music or a specific add-on, if so go for it.<br />
<br />
Server_Prison_Escape is the main add-on for the gamemode, although you can't run it like a normal gamemode. It is also not the true original file used in Tezuni's or Apak's host<br />
of the server. I made this newer add-on as I only had access to an old build I saved a long time ago, alongside another build supplied by Gentle Spy. Since then, the map used here has undergone<br />
substantial changes and additions from the original host. To be honest the code is quite spaghetti-like and has lots of hard-coded stuff in it, which makes setting up the server more difficult.<br />
<br />
To run the gamemode:<br />
Create a new blockland instance and copy the "Add-Ons", "config", and "modules" folder over, overwriting conflicting files.<br />
Optionally install RedBlocklandLoader to use the DLLs in the modules folder. (<a href="https://gitlab.com/Eagle517/redblocklandloader/-/releases" target="_blank" rel="noopener" class="mycode_url">https://gitlab.com/Eagle517/redblockland...-/releases</a>)<br />
Run the server dedicated with the default Custom "gamemode".<br />
Once you load in, run in the console "serverDirectSaveFileLoad("Add-Ons/Server_Prison_Escape/Save.bls",3,"",0,0); PrisonEscape_WantedLoop();".<br />
This will load up the save, and start the scheduled loop for the bottom print for prisoners.<br />
Create a slayer minigame using the two csv files supplied in the Server_Prison_Escape folder. You can copy this to your own client slayer config folder to more easily select it.<br />
Run the minigame, and set the "&#36;DefaultMinigame" global variable to the newly created minigame. Using "\&#36;DefaultMinigame = %minigame" ingame with ClayEval should work.<br />
The game should be ready to play now, glhf<br />
<br />
Link to archive: <a href="https://mega.nz/file/RUJixDZY#POgRFhutlFNHUCc9cjw8x5axJ1m4igdgOfcJC_fOci0" target="_blank" rel="noopener" class="mycode_url">https://mega.nz/file/RUJixDZY#POgRFhutlF...fcJC_fOci0</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[My DLLs]]></title>
			<link>https://forum.bcs.place/showthread.php?tid=40</link>
			<pubDate>Sat, 24 May 2025 06:25:24 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.bcs.place/member.php?action=profile&uid=1">Eagle517</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.bcs.place/showthread.php?tid=40</guid>
			<description><![CDATA[I wanted to make a thread to house the DLLs I've worked on over the years. I've arranged them based on whether they're client-side or server-side as well as how useful I think they are. As always, Queuenard maintains an exhaustive list of all DLLs made for Blockland over at <a href="https://codeberg.org/Queuenard/blockland-DLL-tools" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Queuenard/blockland-DLL-tools</a>. All of these DLLs can be loaded into the game using <a href="https://gitlab.com/Eagle517/redblocklandloader/-/releases" target="_blank" rel="noopener" class="mycode_url">RedBlocklandLoader</a>.<br />
<br />
<table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:75%;"><caption><span style="font-weight: bold;" class="mycode_b">Client DLLs</span></caption><br />
<tr><th class="tcat" align=""><strong>Name</strong></th><th class="tcat" align=""><strong>Description</strong></th></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/immediate-refocus/-/releases" target="_blank" rel="noopener" class="mycode_url">Immediate Refocus</a></td><td class="trow1" valign="top" align="">This allows you to alt+tab in and out of the game without it freezing (assuming you're not in fullscreen mode).</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/precipitation/-/releases" target="_blank" rel="noopener" class="mycode_url">Precipitation</a></td><td class="trow1" valign="top" align="">Makes rain/snow collide with bricks, improving a build's atmosphere.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/no-sleep/-/releases" target="_blank" rel="noopener" class="mycode_url">No Sleep</a></td><td class="trow1" valign="top" align="">Prevents the game from sleeping when the window is not focused. This makes it so the game continues to run smoothly while in the background.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/texture-bleed/-/releases" target="_blank" rel="noopener" class="mycode_url">Texture Bleed</a></td><td class="trow1" valign="top" align="">Makes it so textures clamp to their edges properly and don't bleed. See an example <a href="https://gitlab.com/Eagle517/texture-bleed#examples" target="_blank" rel="noopener" class="mycode_url">here</a>.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/more-coverage/-/releases" target="_blank" rel="noopener" class="mycode_url">More Coverage</a></td><td class="trow1" valign="top" align="">Extends brick face culling to cover larger bricks. See an example <a href="https://gitlab.com/Eagle517/more-coverage#examples" target="_blank" rel="noopener" class="mycode_url">here</a>.</td></tr>
</table>
<table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:75%;"><caption><span style="font-weight: bold;" class="mycode_b">Server DLLs</span></caption><br />
<tr><th class="tcat" align=""><strong>Name</strong></th><th class="tcat" align=""><strong>Description</strong></th></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/selective-ghosting/-/releases" target="_blank" rel="noopener" class="mycode_url">Selective Ghosting</a></td><td class="trow1" valign="top" align="">Dynamically ghost/unghost objects to clients and adjust objects' net fields. Original by Zeblote.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/network-priority/-/releases" target="_blank" rel="noopener" class="mycode_url">Network Priority</a></td><td class="trow1" valign="top" align="">Control the network priority of objects so important objects ghost first for clients.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/wine-fix/-/releases" target="_blank" rel="noopener" class="mycode_url">Wine Fix</a></td><td class="trow1" valign="top" align="">Fixes the console so dedicated servers work properly with more recent versions of Wine (up to Wine 8.0.2).</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/move-handler/-/releases" target="_blank" rel="noopener" class="mycode_url">Move Handler</a></td><td class="trow1" valign="top" align="">Gives you the ability to see player's inputs and control bots in a precise manner. Originals by Port and Gytyyhgfffff.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/ghost-limit-bypass/-/releases" target="_blank" rel="noopener" class="mycode_url">Ghost Limit Bypass</a></td><td class="trow1" valign="top" align="">Removes the ghost limit so more objects are able to update per game tick for clients. Note that clients with poor bandwidth may be negatively impacted. Original by Pah1023.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/object-collision/-/releases" target="_blank" rel="noopener" class="mycode_url">Object Collision</a></td><td class="trow1" valign="top" align="">Gives you fine-grain control over object collisions, letting you specify it per-object. See examples <a href="https://gitlab.com/Eagle517/object-collision#examples" target="_blank" rel="noopener" class="mycode_url">here</a>.</td></tr> <br />
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/player-data-fields/-/releases" target="_blank" rel="noopener" class="mycode_url">Player Data Fields</a></td><td class="trow1" valign="top" align="">This lets you adjust datablock fields per-player, along with their recharge rates. This can reduce ghost updates, but it may cause client-side interpolation jittering depending on which fields you modify.</td></tr> <br />
</table>
<br />
<table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:75%;"><caption><span style="font-weight: bold;" class="mycode_b">Utility DLLs</span> (These work on both the server and client)</caption><br />
<tr><th class="tcat" align=""><strong>Name</strong></th><th class="tcat" align=""><strong>Description</strong></th></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/player-collision-toggle/-/releases" target="_blank" rel="noopener" class="mycode_url">Player Collision Toggle</a></td><td class="trow1" valign="top" align="">Lets you manipulate collisions between players and vehicles. Original by Zeblote. See examples <a href="https://gitlab.com/Eagle517/player-collision-toggle#player-collision-toggle" target="_blank" rel="noopener" class="mycode_url">here</a>.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/float-precision/-/releases" target="_blank" rel="noopener" class="mycode_url">Float Precision</a></td><td class="trow1" valign="top" align="">Increases the floating point precision of TorqueScript.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/bl-tracy/-/releases" target="_blank" rel="noopener" class="mycode_url">BL Tracy</a></td><td class="trow1" valign="top" align="">Integrates the Tracy profiler into Blockland for TorqueScript, letting you better diagnose problems. See examples <a href="https://gitlab.com/Eagle517/bl-tracy#features" target="_blank" rel="noopener" class="mycode_url">here</a>.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/datachunker-fix/-/releases" target="_blank" rel="noopener" class="mycode_url">DataChunker Fix</a></td><td class="trow1" valign="top" align="">Fixes a bug with the DataChunker class, increasing the function limit of TorqueScript.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/on-game-tick/-/releases" target="_blank" rel="noopener" class="mycode_url">On Game Tick</a></td><td class="trow1" valign="top" align="">Adds a TorqueScript callback that gets called every game tick with the game's delta time.</td></tr>
</table>]]></description>
			<content:encoded><![CDATA[I wanted to make a thread to house the DLLs I've worked on over the years. I've arranged them based on whether they're client-side or server-side as well as how useful I think they are. As always, Queuenard maintains an exhaustive list of all DLLs made for Blockland over at <a href="https://codeberg.org/Queuenard/blockland-DLL-tools" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Queuenard/blockland-DLL-tools</a>. All of these DLLs can be loaded into the game using <a href="https://gitlab.com/Eagle517/redblocklandloader/-/releases" target="_blank" rel="noopener" class="mycode_url">RedBlocklandLoader</a>.<br />
<br />
<table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:75%;"><caption><span style="font-weight: bold;" class="mycode_b">Client DLLs</span></caption><br />
<tr><th class="tcat" align=""><strong>Name</strong></th><th class="tcat" align=""><strong>Description</strong></th></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/immediate-refocus/-/releases" target="_blank" rel="noopener" class="mycode_url">Immediate Refocus</a></td><td class="trow1" valign="top" align="">This allows you to alt+tab in and out of the game without it freezing (assuming you're not in fullscreen mode).</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/precipitation/-/releases" target="_blank" rel="noopener" class="mycode_url">Precipitation</a></td><td class="trow1" valign="top" align="">Makes rain/snow collide with bricks, improving a build's atmosphere.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/no-sleep/-/releases" target="_blank" rel="noopener" class="mycode_url">No Sleep</a></td><td class="trow1" valign="top" align="">Prevents the game from sleeping when the window is not focused. This makes it so the game continues to run smoothly while in the background.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/texture-bleed/-/releases" target="_blank" rel="noopener" class="mycode_url">Texture Bleed</a></td><td class="trow1" valign="top" align="">Makes it so textures clamp to their edges properly and don't bleed. See an example <a href="https://gitlab.com/Eagle517/texture-bleed#examples" target="_blank" rel="noopener" class="mycode_url">here</a>.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/more-coverage/-/releases" target="_blank" rel="noopener" class="mycode_url">More Coverage</a></td><td class="trow1" valign="top" align="">Extends brick face culling to cover larger bricks. See an example <a href="https://gitlab.com/Eagle517/more-coverage#examples" target="_blank" rel="noopener" class="mycode_url">here</a>.</td></tr>
</table>
<table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:75%;"><caption><span style="font-weight: bold;" class="mycode_b">Server DLLs</span></caption><br />
<tr><th class="tcat" align=""><strong>Name</strong></th><th class="tcat" align=""><strong>Description</strong></th></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/selective-ghosting/-/releases" target="_blank" rel="noopener" class="mycode_url">Selective Ghosting</a></td><td class="trow1" valign="top" align="">Dynamically ghost/unghost objects to clients and adjust objects' net fields. Original by Zeblote.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/network-priority/-/releases" target="_blank" rel="noopener" class="mycode_url">Network Priority</a></td><td class="trow1" valign="top" align="">Control the network priority of objects so important objects ghost first for clients.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/wine-fix/-/releases" target="_blank" rel="noopener" class="mycode_url">Wine Fix</a></td><td class="trow1" valign="top" align="">Fixes the console so dedicated servers work properly with more recent versions of Wine (up to Wine 8.0.2).</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/move-handler/-/releases" target="_blank" rel="noopener" class="mycode_url">Move Handler</a></td><td class="trow1" valign="top" align="">Gives you the ability to see player's inputs and control bots in a precise manner. Originals by Port and Gytyyhgfffff.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/ghost-limit-bypass/-/releases" target="_blank" rel="noopener" class="mycode_url">Ghost Limit Bypass</a></td><td class="trow1" valign="top" align="">Removes the ghost limit so more objects are able to update per game tick for clients. Note that clients with poor bandwidth may be negatively impacted. Original by Pah1023.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/object-collision/-/releases" target="_blank" rel="noopener" class="mycode_url">Object Collision</a></td><td class="trow1" valign="top" align="">Gives you fine-grain control over object collisions, letting you specify it per-object. See examples <a href="https://gitlab.com/Eagle517/object-collision#examples" target="_blank" rel="noopener" class="mycode_url">here</a>.</td></tr> <br />
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/player-data-fields/-/releases" target="_blank" rel="noopener" class="mycode_url">Player Data Fields</a></td><td class="trow1" valign="top" align="">This lets you adjust datablock fields per-player, along with their recharge rates. This can reduce ghost updates, but it may cause client-side interpolation jittering depending on which fields you modify.</td></tr> <br />
</table>
<br />
<table border="0" cellspacing="1" cellpadding="3" class="tborder" style="width:75%;"><caption><span style="font-weight: bold;" class="mycode_b">Utility DLLs</span> (These work on both the server and client)</caption><br />
<tr><th class="tcat" align=""><strong>Name</strong></th><th class="tcat" align=""><strong>Description</strong></th></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/player-collision-toggle/-/releases" target="_blank" rel="noopener" class="mycode_url">Player Collision Toggle</a></td><td class="trow1" valign="top" align="">Lets you manipulate collisions between players and vehicles. Original by Zeblote. See examples <a href="https://gitlab.com/Eagle517/player-collision-toggle#player-collision-toggle" target="_blank" rel="noopener" class="mycode_url">here</a>.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/float-precision/-/releases" target="_blank" rel="noopener" class="mycode_url">Float Precision</a></td><td class="trow1" valign="top" align="">Increases the floating point precision of TorqueScript.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/bl-tracy/-/releases" target="_blank" rel="noopener" class="mycode_url">BL Tracy</a></td><td class="trow1" valign="top" align="">Integrates the Tracy profiler into Blockland for TorqueScript, letting you better diagnose problems. See examples <a href="https://gitlab.com/Eagle517/bl-tracy#features" target="_blank" rel="noopener" class="mycode_url">here</a>.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/datachunker-fix/-/releases" target="_blank" rel="noopener" class="mycode_url">DataChunker Fix</a></td><td class="trow1" valign="top" align="">Fixes a bug with the DataChunker class, increasing the function limit of TorqueScript.</td></tr>
<tr><td class="trow1" valign="top" align=""><a href="https://gitlab.com/Eagle517/on-game-tick/-/releases" target="_blank" rel="noopener" class="mycode_url">On Game Tick</a></td><td class="trow1" valign="top" align="">Adds a TorqueScript callback that gets called every game tick with the game's delta time.</td></tr>
</table>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Memory Usage (DLL)]]></title>
			<link>https://forum.bcs.place/showthread.php?tid=36</link>
			<pubDate>Thu, 24 Apr 2025 06:10:58 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.bcs.place/member.php?action=profile&uid=3">Queuenard</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.bcs.place/showthread.php?tid=36</guid>
			<description><![CDATA[<span style="text-decoration: line-through;" class="mycode_s"><a href="https://notabug.org/Queuenard/MemoryUsage" target="_blank" rel="noopener" class="mycode_url">https://notabug.org/Queuenard/MemoryUsage</a></span><br />
<a href="https://codeberg.org/Queuenard/blockland-DLL-MemoryUsage" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Queuenard/blockland...emoryUsage</a><br />
Documentation; DLL is in releases folder<br />
<br />
This DLL allows TorqueScript to get the memory usage of the current Blockland process.]]></description>
			<content:encoded><![CDATA[<span style="text-decoration: line-through;" class="mycode_s"><a href="https://notabug.org/Queuenard/MemoryUsage" target="_blank" rel="noopener" class="mycode_url">https://notabug.org/Queuenard/MemoryUsage</a></span><br />
<a href="https://codeberg.org/Queuenard/blockland-DLL-MemoryUsage" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Queuenard/blockland...emoryUsage</a><br />
Documentation; DLL is in releases folder<br />
<br />
This DLL allows TorqueScript to get the memory usage of the current Blockland process.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Blockland Docker Image]]></title>
			<link>https://forum.bcs.place/showthread.php?tid=25</link>
			<pubDate>Sun, 09 Feb 2025 09:56:13 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.bcs.place/member.php?action=profile&uid=1">Eagle517</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.bcs.place/showthread.php?tid=25</guid>
			<description><![CDATA[I found myself having to install Wine one too many times, so I put together a Docker image to simplify setting up and running a Blockland dedicated server on a Linux VPS.  The image itself is based off of debian:bookworm-slim with all the necessary packages needed to run Blockland.<br />
<br />
I put together a nice readme on the Git repo which is located here:  <a href="https://gitlab.com/Eagle517/blockland-docker" target="_blank" rel="noopener" class="mycode_url">https://gitlab.com/Eagle517/blockland-docker</a>.  This should have everything to get you started.  The image itself is located on Docker Hub at <a href="https://hub.docker.com/r/eagle517/blockland-server" target="_blank" rel="noopener" class="mycode_url">eagle517/blockland-server</a>.<br />
<br />
Those familiar with Docker may notice I recommend using the host network driver.  I would have liked to use the standard bridge driver, but I've yet to figure out how to get Blockland's UDP packets to play nicely with it, and the broader Docker community <a href="https://forums.docker.com/t/how-to-udp-broadcast-to-external-network-without-host-mode/86526" target="_blank" rel="noopener" class="mycode_url">appears to have</a> <a href="https://www.reddit.com/r/docker/comments/fnt2k9/udp_packet_source_address_being_changed_to_bridge/" target="_blank" rel="noopener" class="mycode_url">similar issues</a> <a href="https://forums.docker.com/t/container-receives-udp-data-but-not-able-to-send-udp-data/127506" target="_blank" rel="noopener" class="mycode_url">with UDP</a> <a href="https://stackoverflow.com/questions/50508833/sending-udp-broadcast-from-a-docker-container" target="_blank" rel="noopener" class="mycode_url">in general</a>.  The primary consequence of this is the host driver is only available on Linux, so it's not possible to use this image on Windows hosts.  Fortunately most people running dedicated servers use Linux anyway.<br />
<br />
This is the first Docker image I've put together, and I tried to learn the best practices.  If you happen to be more experienced with Docker and think I've done something silly, please let me know.]]></description>
			<content:encoded><![CDATA[I found myself having to install Wine one too many times, so I put together a Docker image to simplify setting up and running a Blockland dedicated server on a Linux VPS.  The image itself is based off of debian:bookworm-slim with all the necessary packages needed to run Blockland.<br />
<br />
I put together a nice readme on the Git repo which is located here:  <a href="https://gitlab.com/Eagle517/blockland-docker" target="_blank" rel="noopener" class="mycode_url">https://gitlab.com/Eagle517/blockland-docker</a>.  This should have everything to get you started.  The image itself is located on Docker Hub at <a href="https://hub.docker.com/r/eagle517/blockland-server" target="_blank" rel="noopener" class="mycode_url">eagle517/blockland-server</a>.<br />
<br />
Those familiar with Docker may notice I recommend using the host network driver.  I would have liked to use the standard bridge driver, but I've yet to figure out how to get Blockland's UDP packets to play nicely with it, and the broader Docker community <a href="https://forums.docker.com/t/how-to-udp-broadcast-to-external-network-without-host-mode/86526" target="_blank" rel="noopener" class="mycode_url">appears to have</a> <a href="https://www.reddit.com/r/docker/comments/fnt2k9/udp_packet_source_address_being_changed_to_bridge/" target="_blank" rel="noopener" class="mycode_url">similar issues</a> <a href="https://forums.docker.com/t/container-receives-udp-data-but-not-able-to-send-udp-data/127506" target="_blank" rel="noopener" class="mycode_url">with UDP</a> <a href="https://stackoverflow.com/questions/50508833/sending-udp-broadcast-from-a-docker-container" target="_blank" rel="noopener" class="mycode_url">in general</a>.  The primary consequence of this is the host driver is only available on Linux, so it's not possible to use this image on Windows hosts.  Fortunately most people running dedicated servers use Linux anyway.<br />
<br />
This is the first Docker image I've put together, and I tried to learn the best practices.  If you happen to be more experienced with Docker and think I've done something silly, please let me know.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Public Blob CDN]]></title>
			<link>https://forum.bcs.place/showthread.php?tid=24</link>
			<pubDate>Sat, 08 Feb 2025 05:15:42 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.bcs.place/member.php?action=profile&uid=1">Eagle517</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.bcs.place/showthread.php?tid=24</guid>
			<description><![CDATA[Back in January I setup a bot that periodically goes through servers and collects their blobs.  These blobs are uploaded to a Storj bucket and accessible via <a href="http://blobs.bcs.place" target="_blank" rel="noopener" class="mycode_url">http://blobs.bcs.place</a>.  The homepage just shows basic information such as how many blobs are available, but if you want to test it here's a link to <a href="http://blobs.bcs.place/f485ff604c8be1e39d9b6109675b46a076d92a90.bz2" target="_blank" rel="noopener" class="mycode_url">base/data/shapes/empty.dts</a>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">What's the point?</span></span><br />
Servers have two ways of sending content to clients, either via a CDN (<a href="https://cloudf.blockland.us" target="_blank" rel="noopener" class="mycode_url">https://cloudf.blockland.us</a> by default) or directly from the server.  Sending content directly from the server is the fallback approach if the blob is not available on the CDN and is unfortunately very slow, as the packets are limited to 200 bytes/tick or so.  This leads to long loading times on servers with a lot of custom content.  Content sent via a CDN is a lot faster and can speed up load times by 4-7x depending on the average size of your server's blobs.  As an example, loading times for BCS dropped from 13 minutes to 2 minutes once we implemented our own CDN (a ~6.5x improvement on a fresh install).<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">What's wrong with the default CDN?</span></span><br />
The default CDN does not appear to be maintained by Badspot anymore, so it's missing a lot of blobs you encounter nowadays.  And funnily enough, custom content has grown quite a bit in the past few years.  Servers like Eventide, BCS, AoD, and Farming have a significant amount of custom content that isn't captured in the default CDN.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">What's the solution?</span></span><br />
Some time ago, Queuenard made <a href="https://blocklandglass.com/addons/addon/1580" target="_blank" rel="noopener" class="mycode_url">Support_CustomCDN</a>.  This add-on enables servers to define what CDN clients should use, and clients with the add-on will make use of that CDN.  This is great, but it puts the onus of hosting the CDN on the server host.  A lot of hosts shy away from it because of the complexity/costs/etc. that come with setting one up and maintaining it.  The purpose of my CDN is to make it as painless as possible.  The host has to do nothing outside of configuring the add-on to point to my CDN and just wait for my bot to stop by and collect their blobs.<br />
<br />
I also made an add-on to make CDN configuration/management a bit simpler for hosts, <a href="https://gitlab.com/Eagle517/Server_BlobCDN" target="_blank" rel="noopener" class="mycode_url">Server_BlobCDN</a>.  This adds RTB/Glass preferences and fallback mitigations should the CDN ever go down.  It's optional, the only required add-on is Queuenard's.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Why am I doing this?</span></span><br />
I like Blockland, and I want to encourage content creation without hosts worrying about loading times.  The cost of running this is less than a Netflix subscription and gives me more enjoyment.  I intend to keep it going until Badspot pulls the plug on the game, assuming no one is around that can plug it back in somehow.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Some footnotes</span></span><br />
The bot is capable of automatically joining all public servers and collecting only blobs it has not encountered before.  It is capable of joining passworded servers should the host provide the password to me.  The upload process for the blobs is automatic but requires manual intervention should any upload fail.  I also manually activate the bot when I think it's a good time to collect blobs.  I would like to get it fully automated, and have it be proactive/focused in its blob gathering by scanning the server list for new servers occasionally along with a daily scheduled time.<br />
<br />
If you need help configuring Support_CustomCDN or notice an issue, just let me know.]]></description>
			<content:encoded><![CDATA[Back in January I setup a bot that periodically goes through servers and collects their blobs.  These blobs are uploaded to a Storj bucket and accessible via <a href="http://blobs.bcs.place" target="_blank" rel="noopener" class="mycode_url">http://blobs.bcs.place</a>.  The homepage just shows basic information such as how many blobs are available, but if you want to test it here's a link to <a href="http://blobs.bcs.place/f485ff604c8be1e39d9b6109675b46a076d92a90.bz2" target="_blank" rel="noopener" class="mycode_url">base/data/shapes/empty.dts</a>.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">What's the point?</span></span><br />
Servers have two ways of sending content to clients, either via a CDN (<a href="https://cloudf.blockland.us" target="_blank" rel="noopener" class="mycode_url">https://cloudf.blockland.us</a> by default) or directly from the server.  Sending content directly from the server is the fallback approach if the blob is not available on the CDN and is unfortunately very slow, as the packets are limited to 200 bytes/tick or so.  This leads to long loading times on servers with a lot of custom content.  Content sent via a CDN is a lot faster and can speed up load times by 4-7x depending on the average size of your server's blobs.  As an example, loading times for BCS dropped from 13 minutes to 2 minutes once we implemented our own CDN (a ~6.5x improvement on a fresh install).<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">What's wrong with the default CDN?</span></span><br />
The default CDN does not appear to be maintained by Badspot anymore, so it's missing a lot of blobs you encounter nowadays.  And funnily enough, custom content has grown quite a bit in the past few years.  Servers like Eventide, BCS, AoD, and Farming have a significant amount of custom content that isn't captured in the default CDN.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">What's the solution?</span></span><br />
Some time ago, Queuenard made <a href="https://blocklandglass.com/addons/addon/1580" target="_blank" rel="noopener" class="mycode_url">Support_CustomCDN</a>.  This add-on enables servers to define what CDN clients should use, and clients with the add-on will make use of that CDN.  This is great, but it puts the onus of hosting the CDN on the server host.  A lot of hosts shy away from it because of the complexity/costs/etc. that come with setting one up and maintaining it.  The purpose of my CDN is to make it as painless as possible.  The host has to do nothing outside of configuring the add-on to point to my CDN and just wait for my bot to stop by and collect their blobs.<br />
<br />
I also made an add-on to make CDN configuration/management a bit simpler for hosts, <a href="https://gitlab.com/Eagle517/Server_BlobCDN" target="_blank" rel="noopener" class="mycode_url">Server_BlobCDN</a>.  This adds RTB/Glass preferences and fallback mitigations should the CDN ever go down.  It's optional, the only required add-on is Queuenard's.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Why am I doing this?</span></span><br />
I like Blockland, and I want to encourage content creation without hosts worrying about loading times.  The cost of running this is less than a Netflix subscription and gives me more enjoyment.  I intend to keep it going until Badspot pulls the plug on the game, assuming no one is around that can plug it back in somehow.<br />
<br />
<span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u">Some footnotes</span></span><br />
The bot is capable of automatically joining all public servers and collecting only blobs it has not encountered before.  It is capable of joining passworded servers should the host provide the password to me.  The upload process for the blobs is automatic but requires manual intervention should any upload fail.  I also manually activate the bot when I think it's a good time to collect blobs.  I would like to get it fully automated, and have it be proactive/focused in its blob gathering by scanning the server list for new servers occasionally along with a daily scheduled time.<br />
<br />
If you need help configuring Support_CustomCDN or notice an issue, just let me know.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Trace Buddy (DLL)]]></title>
			<link>https://forum.bcs.place/showthread.php?tid=22</link>
			<pubDate>Thu, 06 Feb 2025 08:03:19 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.bcs.place/member.php?action=profile&uid=3">Queuenard</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.bcs.place/showthread.php?tid=22</guid>
			<description><![CDATA[<a href="https://gitlab.com/Queuenard/TraceBuddy" target="_blank" rel="noopener" class="mycode_url">https://gitlab.com/Queuenard/TraceBuddy</a><br />
Documentation; DLL is in releases folder<br />
<br />
This DLL adds a "trace2" function that dumps a custom (but extremely similar to regular trace) TorqueScript trace into a file if the program crashes* (see Linux caveat - this isn't reliable) or is requested to dump by script.<br />
<br />
The stock trace() function is really difficult in certain circumstances because it outputs to the console log which makes the server wait for massive amounts of file writes.<br />
<br />
<br />
<br />
A Python tool to read the trace log from a Windows memory dump has been released: <a href="https://notabug.org/Queuenard/blockland-memory-dump-search" target="_blank" rel="noopener" class="mycode_url"><span style="text-decoration: line-through;" class="mycode_s">https://notabug.org/Queuenard/blockland-memory-dump-search</span></a> <a href="https://codeberg.org/Queuenard/blockland-memory-dump-search" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Queuenard/blockland...ump-search</a><br />
<br />
<br />
As of today I've added new timing features so you can actually see how long functions are taking to run.]]></description>
			<content:encoded><![CDATA[<a href="https://gitlab.com/Queuenard/TraceBuddy" target="_blank" rel="noopener" class="mycode_url">https://gitlab.com/Queuenard/TraceBuddy</a><br />
Documentation; DLL is in releases folder<br />
<br />
This DLL adds a "trace2" function that dumps a custom (but extremely similar to regular trace) TorqueScript trace into a file if the program crashes* (see Linux caveat - this isn't reliable) or is requested to dump by script.<br />
<br />
The stock trace() function is really difficult in certain circumstances because it outputs to the console log which makes the server wait for massive amounts of file writes.<br />
<br />
<br />
<br />
A Python tool to read the trace log from a Windows memory dump has been released: <a href="https://notabug.org/Queuenard/blockland-memory-dump-search" target="_blank" rel="noopener" class="mycode_url"><span style="text-decoration: line-through;" class="mycode_s">https://notabug.org/Queuenard/blockland-memory-dump-search</span></a> <a href="https://codeberg.org/Queuenard/blockland-memory-dump-search" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Queuenard/blockland...ump-search</a><br />
<br />
<br />
As of today I've added new timing features so you can actually see how long functions are taking to run.]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Useful Resources Thread]]></title>
			<link>https://forum.bcs.place/showthread.php?tid=19</link>
			<pubDate>Sun, 02 Feb 2025 17:55:28 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.bcs.place/member.php?action=profile&uid=30">El Gringo</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.bcs.place/showthread.php?tid=19</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size">Useful Resources Thread</span></div>
<hr class="mycode_hr" />
<br />
The purpose of this thread is to help people unfamiliar or inexperienced with making Add-Ons for the game by sharing links to useful resources, or their experiences with making Add-Ons.<br />
I'll start it off by dumping some of the links I have for programming in Torquescript and working with Blockland. <br />
(Big thanks to Patyos for initially providing me with some of these links!)<br />
<span style="font-size: x-small;" class="mycode_size">I am specifically making it as it can be hard to find useful resources on Google as it indexes search content different depending on user account used and region. <br />
For example: I cannot find this forum easily on Google unless i search for "heightmap2bls" (a tool I made and posted here) or for "bcs.place forum".</span><br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: x-large;" class="mycode_size">Blockland Forums (Official) Posts</span><br />
<br />
"META-STICKY - Resources and helpful threads"<br />
<a href="https://forum.blockland.us/index.php?topic=287458.0" target="_blank" rel="noopener" class="mycode_url">https://forum.blockland.us/index.php?topic=287458.0</a><br />
<br />
"is there a good resource for torquescript syntax and inbuilt functions?"<br />
<a href="https://forum.blockland.us/index.php?topic=327937.0" target="_blank" rel="noopener" class="mycode_url">https://forum.blockland.us/index.php?topic=327937.0</a><br />
<br />
"Blockland Content Creators [Discord]"<br />
<a href="https://forum.blockland.us/index.php?topic=318430.0" target="_blank" rel="noopener" class="mycode_url">https://forum.blockland.us/index.php?topic=318430.0</a><br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: x-large;" class="mycode_size">Mr. Wallet's "Blockland Scripting for Dummies"</span><br />
A short document about scripting in torquescript, specifically aimed at Blockland <br />
Good for beginners to get a handle of scripting<br />
<a href="https://files.blockland.online/Documentation/Mr._Wallet's_Blockland_Scripting_for_Dummies.pdf" target="_blank" rel="noopener" class="mycode_url">https://files.blockland.online/Documenta...ummies.pdf</a><br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: x-large;" class="mycode_size">Torque Game Engine (TGE &amp; Torque3d)</span><br />
<span style="font-size: large;" class="mycode_size">Archives</span><br />
Archive.org's archive of garagegames' tge documentation<br />
<a href="http://web.archive.org/web/20220515095540/http://docs.garagegames.com/tge/official/" target="_blank" rel="noopener" class="mycode_url">http://web.archive.org/web/2022051509554.../official/</a><br />
Kenko's archive of garagegames' tge documentation<br />
<a href="https://bl.kenko.dev/Websites/docs.garagegames.com/tge/official/" target="_blank" rel="noopener" class="mycode_url">https://bl.kenko.dev/Websites/docs.garag.../official/</a><br />
<br />
<span style="font-size: large;" class="mycode_size">Torque Quick References PDF</span><br />
An almost 400 page long book about all things TGE <br />
(I have yet to take a proper look at this but it seems to cover a wide array of topics to do with TGE)<br />
<a href="http://www2.ift.ulaval.ca/~couture/IFT-21776/documents/TorqueQuickReferences.pdf" target="_blank" rel="noopener" class="mycode_url">http://www2.ift.ulaval.ca/~couture/IFT-2...rences.pdf</a><br />
<br />
<span style="font-size: large;" class="mycode_size">Torque3D</span><br />
Not 100% applicable to Blockland, but there is still a decent amount of overlap with built-in functions (AFAIK)<br />
<a href="https://torque-3d.readthedocs.io/en/latest/" target="_blank" rel="noopener" class="mycode_url">https://torque-3d.readthedocs.io/en/latest/</a><br />
Official Torque3D site (Has a discord server with an active community)<br />
<a href="https://torque3d.org/" target="_blank" rel="noopener" class="mycode_url">https://torque3d.org/</a><br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: x-large;" class="mycode_size">Community made documentation</span><br />
The following is a list of community-made documentation specifically targeted at Blockland<br />
<br />
<span style="font-size: large;" class="mycode_size">BlDocs</span><br />
<a href="https://bldocs.readthedocs.io/en/latest/index.html" target="_blank" rel="noopener" class="mycode_url">https://bldocs.readthedocs.io/en/latest/index.html</a><br />
<a href="https://github.com/nightkr/bldocs" target="_blank" rel="noopener" class="mycode_url">https://github.com/nightkr/bldocs</a><br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: x-large;" class="mycode_size">Public Code Repositories</span><br />
This section is for large, well-known or otherwise useful projects hosted on public code repositories such as GitHub, Gitlab, codeberg, notabug, etc.<br />
These aren't specifically aimed at teaching someone how to make Add-Ons or for providing documentation, rather for reference and seeing how things are done.<br />
Good for hands-on learning.<br />
<br />
<span style="font-size: large;" class="mycode_size">CityRPG4</span><br />
<a href="https://github.com/cityrpg/CityRPG" target="_blank" rel="noopener" class="mycode_url">https://github.com/cityrpg/CityRPG</a><br />
<br />
<span style="font-size: large;" class="mycode_size">TBP's megadump of his Blockland content</span><br />
<a href="https://github.com/TheBlackParrot/blockland-megadump" target="_blank" rel="noopener" class="mycode_url">https://github.com/TheBlackParrot/blockland-megadump</a><br />
<br />
<span style="font-size: large;" class="mycode_size">Blockland Glass <span style="color: #444444;" class="mycode_color">sourcecode</span></span><br />
<a href="https://github.com/BlocklandGlass/BlocklandGlass" target="_blank" rel="noopener" class="mycode_url">https://github.com/BlocklandGlass/BlocklandGlass</a><br />
<br />
<span style="color: #444444;" class="mycode_color"><span style="font-size: large;" class="mycode_size">/Ty's CityRPG addon </span></span><br />
(<span style="color: #ff4136;" class="mycode_color">Exercise extreme caution</span> if referring to this as it apparently contains backdoors, <span style="color: #ff4136;" class="mycode_color">do not replicate them or you are putting yourself and all users of your add-on at risk</span>)<br />
<a href="https://github.com/Ty-lerCox/tys-city-rpg" target="_blank" rel="noopener" class="mycode_url">https://github.com/Ty-lerCox/tys-city-rpg</a><br />
<br />
<span style="font-size: large;" class="mycode_size">Bl-decompiled</span><br />
Has seemingly decompiled all of the game's cs.dso files (compiled torquescript) for several versions of the game (beta, v1, v20, v21)<br />
<a href="https://github.com/Elletra/bl-decompiled" target="_blank" rel="noopener" class="mycode_url">https://github.com/Elletra/bl-decompiled</a><br />
<br />
<span style="font-size: large;" class="mycode_size">Queuenard's List of Blockland DLL Tools</span><br />
<a href="https://codeberg.org/Queuenard/blockland-DLL-tools" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Queuenard/blockland-DLL-tools</a><br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: x-large;" class="mycode_size">Dead Links</span><br />
These links contain archives and community made documentation that is currently unavailable, but will be left here in case they come back online.<br />
<br />
<span style="font-size: large;" class="mycode_size">Pecon's Archives</span><br />
Torque Game Engine Advanced<br />
<a href="https://pywb.pecon.us/en/all/20220422044544/http://docs.garagegames.com/tgea/official/" target="_blank" rel="noopener" class="mycode_url">https://pywb.pecon.us/en/all/20220422044.../official/</a><br />
Torque Game Engine<br />
<a href="https://pywb.pecon.us/en/all/20220422044544/http://docs.garagegames.com/tge/official/" target="_blank" rel="noopener" class="mycode_url">https://pywb.pecon.us/en/all/20220422044.../official/</a><br />
<br />
<span style="font-size: large;" class="mycode_size">Blockdoc - Community made documentation</span><br />
<a href="http://blockdoc.block.land/index.php/Main_Page" target="_blank" rel="noopener" class="mycode_url">http://blockdoc.block.land/index.php/Main_Page</a>]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size">Useful Resources Thread</span></div>
<hr class="mycode_hr" />
<br />
The purpose of this thread is to help people unfamiliar or inexperienced with making Add-Ons for the game by sharing links to useful resources, or their experiences with making Add-Ons.<br />
I'll start it off by dumping some of the links I have for programming in Torquescript and working with Blockland. <br />
(Big thanks to Patyos for initially providing me with some of these links!)<br />
<span style="font-size: x-small;" class="mycode_size">I am specifically making it as it can be hard to find useful resources on Google as it indexes search content different depending on user account used and region. <br />
For example: I cannot find this forum easily on Google unless i search for "heightmap2bls" (a tool I made and posted here) or for "bcs.place forum".</span><br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: x-large;" class="mycode_size">Blockland Forums (Official) Posts</span><br />
<br />
"META-STICKY - Resources and helpful threads"<br />
<a href="https://forum.blockland.us/index.php?topic=287458.0" target="_blank" rel="noopener" class="mycode_url">https://forum.blockland.us/index.php?topic=287458.0</a><br />
<br />
"is there a good resource for torquescript syntax and inbuilt functions?"<br />
<a href="https://forum.blockland.us/index.php?topic=327937.0" target="_blank" rel="noopener" class="mycode_url">https://forum.blockland.us/index.php?topic=327937.0</a><br />
<br />
"Blockland Content Creators [Discord]"<br />
<a href="https://forum.blockland.us/index.php?topic=318430.0" target="_blank" rel="noopener" class="mycode_url">https://forum.blockland.us/index.php?topic=318430.0</a><br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: x-large;" class="mycode_size">Mr. Wallet's "Blockland Scripting for Dummies"</span><br />
A short document about scripting in torquescript, specifically aimed at Blockland <br />
Good for beginners to get a handle of scripting<br />
<a href="https://files.blockland.online/Documentation/Mr._Wallet's_Blockland_Scripting_for_Dummies.pdf" target="_blank" rel="noopener" class="mycode_url">https://files.blockland.online/Documenta...ummies.pdf</a><br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: x-large;" class="mycode_size">Torque Game Engine (TGE &amp; Torque3d)</span><br />
<span style="font-size: large;" class="mycode_size">Archives</span><br />
Archive.org's archive of garagegames' tge documentation<br />
<a href="http://web.archive.org/web/20220515095540/http://docs.garagegames.com/tge/official/" target="_blank" rel="noopener" class="mycode_url">http://web.archive.org/web/2022051509554.../official/</a><br />
Kenko's archive of garagegames' tge documentation<br />
<a href="https://bl.kenko.dev/Websites/docs.garagegames.com/tge/official/" target="_blank" rel="noopener" class="mycode_url">https://bl.kenko.dev/Websites/docs.garag.../official/</a><br />
<br />
<span style="font-size: large;" class="mycode_size">Torque Quick References PDF</span><br />
An almost 400 page long book about all things TGE <br />
(I have yet to take a proper look at this but it seems to cover a wide array of topics to do with TGE)<br />
<a href="http://www2.ift.ulaval.ca/~couture/IFT-21776/documents/TorqueQuickReferences.pdf" target="_blank" rel="noopener" class="mycode_url">http://www2.ift.ulaval.ca/~couture/IFT-2...rences.pdf</a><br />
<br />
<span style="font-size: large;" class="mycode_size">Torque3D</span><br />
Not 100% applicable to Blockland, but there is still a decent amount of overlap with built-in functions (AFAIK)<br />
<a href="https://torque-3d.readthedocs.io/en/latest/" target="_blank" rel="noopener" class="mycode_url">https://torque-3d.readthedocs.io/en/latest/</a><br />
Official Torque3D site (Has a discord server with an active community)<br />
<a href="https://torque3d.org/" target="_blank" rel="noopener" class="mycode_url">https://torque3d.org/</a><br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: x-large;" class="mycode_size">Community made documentation</span><br />
The following is a list of community-made documentation specifically targeted at Blockland<br />
<br />
<span style="font-size: large;" class="mycode_size">BlDocs</span><br />
<a href="https://bldocs.readthedocs.io/en/latest/index.html" target="_blank" rel="noopener" class="mycode_url">https://bldocs.readthedocs.io/en/latest/index.html</a><br />
<a href="https://github.com/nightkr/bldocs" target="_blank" rel="noopener" class="mycode_url">https://github.com/nightkr/bldocs</a><br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: x-large;" class="mycode_size">Public Code Repositories</span><br />
This section is for large, well-known or otherwise useful projects hosted on public code repositories such as GitHub, Gitlab, codeberg, notabug, etc.<br />
These aren't specifically aimed at teaching someone how to make Add-Ons or for providing documentation, rather for reference and seeing how things are done.<br />
Good for hands-on learning.<br />
<br />
<span style="font-size: large;" class="mycode_size">CityRPG4</span><br />
<a href="https://github.com/cityrpg/CityRPG" target="_blank" rel="noopener" class="mycode_url">https://github.com/cityrpg/CityRPG</a><br />
<br />
<span style="font-size: large;" class="mycode_size">TBP's megadump of his Blockland content</span><br />
<a href="https://github.com/TheBlackParrot/blockland-megadump" target="_blank" rel="noopener" class="mycode_url">https://github.com/TheBlackParrot/blockland-megadump</a><br />
<br />
<span style="font-size: large;" class="mycode_size">Blockland Glass <span style="color: #444444;" class="mycode_color">sourcecode</span></span><br />
<a href="https://github.com/BlocklandGlass/BlocklandGlass" target="_blank" rel="noopener" class="mycode_url">https://github.com/BlocklandGlass/BlocklandGlass</a><br />
<br />
<span style="color: #444444;" class="mycode_color"><span style="font-size: large;" class="mycode_size">/Ty's CityRPG addon </span></span><br />
(<span style="color: #ff4136;" class="mycode_color">Exercise extreme caution</span> if referring to this as it apparently contains backdoors, <span style="color: #ff4136;" class="mycode_color">do not replicate them or you are putting yourself and all users of your add-on at risk</span>)<br />
<a href="https://github.com/Ty-lerCox/tys-city-rpg" target="_blank" rel="noopener" class="mycode_url">https://github.com/Ty-lerCox/tys-city-rpg</a><br />
<br />
<span style="font-size: large;" class="mycode_size">Bl-decompiled</span><br />
Has seemingly decompiled all of the game's cs.dso files (compiled torquescript) for several versions of the game (beta, v1, v20, v21)<br />
<a href="https://github.com/Elletra/bl-decompiled" target="_blank" rel="noopener" class="mycode_url">https://github.com/Elletra/bl-decompiled</a><br />
<br />
<span style="font-size: large;" class="mycode_size">Queuenard's List of Blockland DLL Tools</span><br />
<a href="https://codeberg.org/Queuenard/blockland-DLL-tools" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Queuenard/blockland-DLL-tools</a><br />
<br />
<hr class="mycode_hr" />
<br />
<span style="font-size: x-large;" class="mycode_size">Dead Links</span><br />
These links contain archives and community made documentation that is currently unavailable, but will be left here in case they come back online.<br />
<br />
<span style="font-size: large;" class="mycode_size">Pecon's Archives</span><br />
Torque Game Engine Advanced<br />
<a href="https://pywb.pecon.us/en/all/20220422044544/http://docs.garagegames.com/tgea/official/" target="_blank" rel="noopener" class="mycode_url">https://pywb.pecon.us/en/all/20220422044.../official/</a><br />
Torque Game Engine<br />
<a href="https://pywb.pecon.us/en/all/20220422044544/http://docs.garagegames.com/tge/official/" target="_blank" rel="noopener" class="mycode_url">https://pywb.pecon.us/en/all/20220422044.../official/</a><br />
<br />
<span style="font-size: large;" class="mycode_size">Blockdoc - Community made documentation</span><br />
<a href="http://blockdoc.block.land/index.php/Main_Page" target="_blank" rel="noopener" class="mycode_url">http://blockdoc.block.land/index.php/Main_Page</a>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Heightmap2bls]]></title>
			<link>https://forum.bcs.place/showthread.php?tid=14</link>
			<pubDate>Mon, 20 Jan 2025 00:10:35 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.bcs.place/member.php?action=profile&uid=30">El Gringo</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.bcs.place/showthread.php?tid=14</guid>
			<description><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><a href="https://github.com/etpcdev/heightmap2bls" target="_blank" rel="noopener" class="mycode_url">Heightmap2bls</a></span></span></div>
<div style="text-align: center;" class="mycode_align"><span style="font-size: small;" class="mycode_size"><span style="font-style: italic;" class="mycode_i">Generate high quality terrain from heightmaps!</span></span></div>
<div style="text-align: center;" class="mycode_align"><img src="https://github.com/etpcdev/heightmap2bls/blob/main/img/img5.png?raw=true" loading="lazy"  alt="[Image: img5.png?raw=true]" class="mycode_img" /></div>
<div style="text-align: left;" class="mycode_align"><hr class="mycode_hr" />
<div style="text-align: center;" class="mycode_align"><a href="https://github.com/etpcdev/heightmap2bls/releases/tag/0.3.0" target="_blank" rel="noopener" class="mycode_url">0.3.0 - Now with a GUI!</a></div>
</div>
<div style="text-align: left;" class="mycode_align"><hr class="mycode_hr" />
</div>
<div style="text-align: left;" class="mycode_align"><span style="font-size: medium;" class="mycode_size">Heightmap2bls is an external python command line tool for generating .bls save files from 8-bit greyscale heightmap images.</span></div>
<div style="text-align: left;" class="mycode_align"><span style="font-size: medium;" class="mycode_size">It also supports automatically colorizing the map if a colored png is provided!</span></div>
<div style="text-align: left;" class="mycode_align"><span style="font-size: medium;" class="mycode_size">(If you want to use this tool, you need Python 3!)</span></div>
<div style="text-align: left;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u"><span style="font-size: large;" class="mycode_size">Main features</span><span style="font-size: medium;" class="mycode_size">:</span></span></span></div>
<div style="text-align: left;" class="mycode_align"><ul class="mycode_list"><li><span style="font-size: medium;" class="mycode_size">Generate maps from 2d images!</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Use custom colorsets</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Automatically color the map using the closest color</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Arbitrarily rescale all 3 axis of the map (x, y, z)!</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Optionally fill in vertical gaps</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Perform basic brick optimization</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Load custom brick files (defined in JSON)</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Hotswap save files (kind of <img src="https://forum.bcs.place/images/smilies/cool.png" alt="Cool" title="Cool" class="smilie smilie_3" /> )</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Define the map's step (minimum height difference between layers)</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Sit a map on the ground (if your heightmap doesn't have any pitch-black spots)</span><br />
</li>
</ul>
<ul class="mycode_list"><li><span style="font-style: italic;" class="mycode_i">PROTOTYPE</span> <span style="font-weight: bold;" class="mycode_b">GUI</span>! &lt;--- If you have previously used the software, you will need to follow the setup instructions again.<br />
</li>
</ul>
</div>
<div style="text-align: left;" class="mycode_align"><span style="font-size: medium;" class="mycode_size">Sample command on windows:</span></div>
<div style="text-align: left;" class="mycode_align"><div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>python hm2bls.py -hm res/heightmap.png --bricks res/terrainBricks.json --gapfill --optimize  --ground -x 400 -y 400 -z 90</code></div></div></div>
<div style="text-align: left;" class="mycode_align"><span style="font-size: medium;" class="mycode_size">This will generate a bls save file using "heightmap.png" for elevation data, use a custom brick set file, fill in any vertical gaps, try optimize the brickcount where possible, set the map on the ground and rescale it to 400x400x90!</span></div>
<div style="text-align: left;" class="mycode_align"><span style="font-size: medium;" class="mycode_size">See the <a href="https://github.com/etpcdev/heightmap2bls" target="_blank" rel="noopener" class="mycode_url">github page</a> for full usage guidelines!</span></div>
<div style="text-align: left;" class="mycode_align"><hr class="mycode_hr" />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u">What it looks like:</span></span></span></div>
<div style="text-align: left;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><img src="https://github.com/etpcdev/heightmap2bls/blob/main/img/hm2blsGUI.png?raw=true" loading="lazy"  alt="[Image: hm2blsGUI.png?raw=true]" class="mycode_img" /></span></span></span></div>
<div style="text-align: left;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u">What it can do:</span></span></span></div>
<div style="text-align: left;" class="mycode_align"><img src="https://github.com/etpcdev/heightmap2bls/blob/main/img/fuji2.png?raw=true" loading="lazy"  alt="[Image: fuji2.png?raw=true]" class="mycode_img" /></div>
<div style="text-align: left;" class="mycode_align"><img src="https://github.com/etpcdev/heightmap2bls/blob/main/img/grand_canyon9.png?raw=true" loading="lazy"  alt="[Image: grand_canyon9.png?raw=true]" class="mycode_img" /></div>
<br />
<img src="https://github.com/etpcdev/heightmap2bls/blob/main/img/lake_windermere1.png?raw=true" loading="lazy"  alt="[Image: lake_windermere1.png?raw=true]" class="mycode_img" /><br />
<br />
<img src="https://github.com/etpcdev/heightmap2bls/blob/main/img/torotoro7.png?raw=true" loading="lazy"  alt="[Image: torotoro7.png?raw=true]" class="mycode_img" /><br />
<br />
<div style="text-align: center;" class="mycode_align"><a href="https://github.com/etpcdev/heightmap2bls" target="_blank" rel="noopener" class="mycode_url"><span style="font-size: large;" class="mycode_size">Get Heightmap2bls here!</span></a></div>
<div style="text-align: center;" class="mycode_align"><span style="font-size: small;" class="mycode_size">(Includes Bonus brickpacks 4n8brickH and 4n8brickT in the res folder!)</span></div>]]></description>
			<content:encoded><![CDATA[<div style="text-align: center;" class="mycode_align"><span style="font-size: xx-large;" class="mycode_size"><span style="font-weight: bold;" class="mycode_b"><a href="https://github.com/etpcdev/heightmap2bls" target="_blank" rel="noopener" class="mycode_url">Heightmap2bls</a></span></span></div>
<div style="text-align: center;" class="mycode_align"><span style="font-size: small;" class="mycode_size"><span style="font-style: italic;" class="mycode_i">Generate high quality terrain from heightmaps!</span></span></div>
<div style="text-align: center;" class="mycode_align"><img src="https://github.com/etpcdev/heightmap2bls/blob/main/img/img5.png?raw=true" loading="lazy"  alt="[Image: img5.png?raw=true]" class="mycode_img" /></div>
<div style="text-align: left;" class="mycode_align"><hr class="mycode_hr" />
<div style="text-align: center;" class="mycode_align"><a href="https://github.com/etpcdev/heightmap2bls/releases/tag/0.3.0" target="_blank" rel="noopener" class="mycode_url">0.3.0 - Now with a GUI!</a></div>
</div>
<div style="text-align: left;" class="mycode_align"><hr class="mycode_hr" />
</div>
<div style="text-align: left;" class="mycode_align"><span style="font-size: medium;" class="mycode_size">Heightmap2bls is an external python command line tool for generating .bls save files from 8-bit greyscale heightmap images.</span></div>
<div style="text-align: left;" class="mycode_align"><span style="font-size: medium;" class="mycode_size">It also supports automatically colorizing the map if a colored png is provided!</span></div>
<div style="text-align: left;" class="mycode_align"><span style="font-size: medium;" class="mycode_size">(If you want to use this tool, you need Python 3!)</span></div>
<div style="text-align: left;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="text-decoration: underline;" class="mycode_u"><span style="font-size: large;" class="mycode_size">Main features</span><span style="font-size: medium;" class="mycode_size">:</span></span></span></div>
<div style="text-align: left;" class="mycode_align"><ul class="mycode_list"><li><span style="font-size: medium;" class="mycode_size">Generate maps from 2d images!</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Use custom colorsets</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Automatically color the map using the closest color</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Arbitrarily rescale all 3 axis of the map (x, y, z)!</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Optionally fill in vertical gaps</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Perform basic brick optimization</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Load custom brick files (defined in JSON)</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Hotswap save files (kind of <img src="https://forum.bcs.place/images/smilies/cool.png" alt="Cool" title="Cool" class="smilie smilie_3" /> )</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Define the map's step (minimum height difference between layers)</span><br />
</li>
<li><span style="font-size: medium;" class="mycode_size">Sit a map on the ground (if your heightmap doesn't have any pitch-black spots)</span><br />
</li>
</ul>
<ul class="mycode_list"><li><span style="font-style: italic;" class="mycode_i">PROTOTYPE</span> <span style="font-weight: bold;" class="mycode_b">GUI</span>! &lt;--- If you have previously used the software, you will need to follow the setup instructions again.<br />
</li>
</ul>
</div>
<div style="text-align: left;" class="mycode_align"><span style="font-size: medium;" class="mycode_size">Sample command on windows:</span></div>
<div style="text-align: left;" class="mycode_align"><div class="codeblock"><div class="title">Code:</div><div class="body" dir="ltr"><code>python hm2bls.py -hm res/heightmap.png --bricks res/terrainBricks.json --gapfill --optimize  --ground -x 400 -y 400 -z 90</code></div></div></div>
<div style="text-align: left;" class="mycode_align"><span style="font-size: medium;" class="mycode_size">This will generate a bls save file using "heightmap.png" for elevation data, use a custom brick set file, fill in any vertical gaps, try optimize the brickcount where possible, set the map on the ground and rescale it to 400x400x90!</span></div>
<div style="text-align: left;" class="mycode_align"><span style="font-size: medium;" class="mycode_size">See the <a href="https://github.com/etpcdev/heightmap2bls" target="_blank" rel="noopener" class="mycode_url">github page</a> for full usage guidelines!</span></div>
<div style="text-align: left;" class="mycode_align"><hr class="mycode_hr" />
<span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u">What it looks like:</span></span></span></div>
<div style="text-align: left;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u"><img src="https://github.com/etpcdev/heightmap2bls/blob/main/img/hm2blsGUI.png?raw=true" loading="lazy"  alt="[Image: hm2blsGUI.png?raw=true]" class="mycode_img" /></span></span></span></div>
<div style="text-align: left;" class="mycode_align"><span style="font-weight: bold;" class="mycode_b"><span style="font-size: x-large;" class="mycode_size"><span style="text-decoration: underline;" class="mycode_u">What it can do:</span></span></span></div>
<div style="text-align: left;" class="mycode_align"><img src="https://github.com/etpcdev/heightmap2bls/blob/main/img/fuji2.png?raw=true" loading="lazy"  alt="[Image: fuji2.png?raw=true]" class="mycode_img" /></div>
<div style="text-align: left;" class="mycode_align"><img src="https://github.com/etpcdev/heightmap2bls/blob/main/img/grand_canyon9.png?raw=true" loading="lazy"  alt="[Image: grand_canyon9.png?raw=true]" class="mycode_img" /></div>
<br />
<img src="https://github.com/etpcdev/heightmap2bls/blob/main/img/lake_windermere1.png?raw=true" loading="lazy"  alt="[Image: lake_windermere1.png?raw=true]" class="mycode_img" /><br />
<br />
<img src="https://github.com/etpcdev/heightmap2bls/blob/main/img/torotoro7.png?raw=true" loading="lazy"  alt="[Image: torotoro7.png?raw=true]" class="mycode_img" /><br />
<br />
<div style="text-align: center;" class="mycode_align"><a href="https://github.com/etpcdev/heightmap2bls" target="_blank" rel="noopener" class="mycode_url"><span style="font-size: large;" class="mycode_size">Get Heightmap2bls here!</span></a></div>
<div style="text-align: center;" class="mycode_align"><span style="font-size: small;" class="mycode_size">(Includes Bonus brickpacks 4n8brickH and 4n8brickT in the res folder!)</span></div>]]></content:encoded>
		</item>
		<item>
			<title><![CDATA[Default game scripts and a little story]]></title>
			<link>https://forum.bcs.place/showthread.php?tid=3</link>
			<pubDate>Wed, 13 Nov 2024 04:03:40 +0000</pubDate>
			<dc:creator><![CDATA[<a href="https://forum.bcs.place/member.php?action=profile&uid=3">Queuenard</a>]]></dc:creator>
			<guid isPermaLink="false">https://forum.bcs.place/showthread.php?tid=3</guid>
			<description><![CDATA[<span style="font-size: large;" class="mycode_size">The default scripts are available in raw form here and have been available since 2019:<br />
<a href="https://github.com/Elletra/bl-decompiled" target="_blank" rel="noopener" class="mycode_url">https://github.com/Elletra/bl-decompiled</a></span><br />
<br />
<br />
This is a little example of how not having the game's default scripts caused headaches over the years and forced scripts to guess, often incorrectly, about default functions...<br />
<br />
<br />
<span style="text-decoration: line-through;" class="mycode_s"><a href="https://notabug.org/Queuenard/Blockland-ProjectileData-onCollision-Plague" target="_blank" rel="noopener" class="mycode_url">https://notabug.org/Queuenard/Blockland-...ion-Plague</a></span><br />
<a href="https://codeberg.org/Queuenard/blockland-ProjectileData-onCollision-Plague" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Queuenard/blockland...ion-Plague</a><br />
<span style="font-style: italic;" class="mycode_i">Analysis of a scripting mistake with the parameters of ProjectileData::onCollision that has plagued Blockland for years </span><br />
<br />
I wrote this after discovering this issue in December 2023. This common mistake will make the push broom only able to push players upwards.<br />
<br />
The most likely cause for scripters getting this wrong was finding information on this function from the stock Torque Game Engine manuals, as Blockland had added a parameter that the stock engine did not have.<br />
<br />
<br />
A big part of the problem was that the default TorqueScript code ("DSO code" or "default scripts") had been obscured in compiled form until a few years ago.]]></description>
			<content:encoded><![CDATA[<span style="font-size: large;" class="mycode_size">The default scripts are available in raw form here and have been available since 2019:<br />
<a href="https://github.com/Elletra/bl-decompiled" target="_blank" rel="noopener" class="mycode_url">https://github.com/Elletra/bl-decompiled</a></span><br />
<br />
<br />
This is a little example of how not having the game's default scripts caused headaches over the years and forced scripts to guess, often incorrectly, about default functions...<br />
<br />
<br />
<span style="text-decoration: line-through;" class="mycode_s"><a href="https://notabug.org/Queuenard/Blockland-ProjectileData-onCollision-Plague" target="_blank" rel="noopener" class="mycode_url">https://notabug.org/Queuenard/Blockland-...ion-Plague</a></span><br />
<a href="https://codeberg.org/Queuenard/blockland-ProjectileData-onCollision-Plague" target="_blank" rel="noopener" class="mycode_url">https://codeberg.org/Queuenard/blockland...ion-Plague</a><br />
<span style="font-style: italic;" class="mycode_i">Analysis of a scripting mistake with the parameters of ProjectileData::onCollision that has plagued Blockland for years </span><br />
<br />
I wrote this after discovering this issue in December 2023. This common mistake will make the push broom only able to push players upwards.<br />
<br />
The most likely cause for scripters getting this wrong was finding information on this function from the stock Torque Game Engine manuals, as Blockland had added a parameter that the stock engine did not have.<br />
<br />
<br />
A big part of the problem was that the default TorqueScript code ("DSO code" or "default scripts") had been obscured in compiled form until a few years ago.]]></content:encoded>
		</item>
	</channel>
</rss>