Minimap Render [RoRenderV3]

Ro-Render V3

Application | Plugin | Source Code

Read this post for the latest info/future of this project Minimap Render [RoRenderV3] - #341 by reteach

Note: The replies to this thread are about the old version (V2), not V3. To see the replies regarding V3 please skip to this post.

Ro-Render is a tool designed to create a top-down orthographic projection of your maps. The primary use case for this tool is to create minimaps in game. This is the third iteration (technically fourth, since the original idea was built by @Widgeon) of this tool and it may be useful to look through old posts and documentations to understand how it works (do note that a lot of what you read in the old posts will no longer apply to V3, only some of it will). It is based on a tool originally created by @Widgeon and then modified for ease of use. The modified version is what is known as “RoRender” (V1 and V2).

Huge shoutout to @StrategicPlayZ for pushing Ro-Render to V3, this was a major undertaking the result of which is massive performance gains and an overall cleaner user experience.

Changes in V3:

V3 is a completely new version of this tool which matches little to nothing with V2. The main changes in this version are:

  • Much faster than V2.
    • According to a few quick tests I have done it is about 45 times faster than V2 on my machine. Proper benchmarks are not yet ready, but the speed-up is very significant and can be easily noticed by anyone who has used the V2 before.
    • This version uses Parallel Luau V1, which was released by Roblox in June 2022. This makes the rendering much faster than V2 since all cores of your system are utilized to the maximum (the renderer now takes 85% - 100% of the CPU).
    • In this version the data to be sent in each Http request is 65535 pixels (this is not a special number, just a normal number we chose, you shouldn’t change it though). Each actor also computes this same amount of pixels. This results in data being computed and sent much faster.
  • No map size limits. You do not need to split large maps into pieces anymore.
  • Simpler plugin. All settings are configured in a ModuleScript, this makes it very flexible as you can add your own code (if you wish) within the module to customize settings such as RaycastParams. It also reduces the amount of maintenance/bug-fixing we have to do in the plugin.
  • No need to open extra Studio windows. You do not need to open multiple Studio windows to utilize multiple cores anymore, as that is done automatically by Parallel Luau.
  • The ability to save and store rendering configurations. Since all the settings are contained inside a single ModuleScript, it is now possible to simply save the settings to your computer as a file and load them up later if you wish. (Right click → Save to file).

How to use:

Firstly, it is highly recommended that you do the render in a local copy of your game as this will enable you to delete transparent and translucent parts (along with a few other adjustments you may want to make for the minimap) without affecting the main game.

Prerequisites:

  1. Make sure you have the plugin installed and the appropriate version of the Ro-Render Application (.dmg for Mac, .exe for Windows). We are aware of the large size of the application and have a few ideas which may be included in a future update. You will likely get a warning when you download and run the file, this is not because it is a virus, rather this is because it is an unsigned program, so you can simply ignore the warning. If you are super paranoid then you can check out the source code linked above and compile it yourself (follow the instructions on the link).
  2. We recommend creating a local copy of your game (no need to republish the game to a new place, just save it into a file).
    • It is recommended to delete all transparent and translucent parts in the (copy) game (as transparent parts slow down the render while translucent parts are rendered as opaque).
    • Also delete all the scripts in your (copy) game so that they do not possibly interfere with the rendering.
    • If you have any large meshes or unions in the (copy) game which will take up a good portion of the render, you should set their CollisionFidelity to “Default”. Also color them with a color that matches with the texture the most (if any), since this plugin cannot render texture.
  3. Enable Http requests by running the following code in the command bar at the bottom:
    game:GetService("HttpService").HttpEnabled = true
  4. The rendering will take a lot of your CPU usage, so make sure your CPU’s cooling system is working properly.

Now you’re all set for rendering your map.

Adding the Ro-Render V3 settings into your game:

  1. Open the place or game you want to render, and then open the Ro-Render V3 plugin.
  2. Now, click on “Create Settings” button. This will insert the default Ro-Render V3 settings into your game which you can modify.

Loading the settings:

Make sure to always load the settings in the plugin before messing with the draggers (the purple box and everything else inside the Draggers folder). You can edit the ModuleScript without loading the settings though, but when you want to move or resize the purple box, you should load the settings in the plugin first.

  1. Click on the “Load Settings” button, this will load the settings which you have currently selected in explorer.

Editing the settings:

Now that you have inserted and loaded the default settings, it is time to modify them according to the map and your own liking.

The draggers:

The purple box which you see is what specifies the area which you want the plugin to render. The bottom of the purple box should extend till a bit lower than the lowest point of the map’s surface which you want to render (auto configure may violate this, but do not follow auto configure, rather follow what is mentioned here). The top of the purple box should extend till a bit higher than the highest point of the map which you want to include in the render.

You can resize the purple box by moving the two spheres located at opposite corners of the purple box. In order to move or rotate the purple box, deselect everything, then select the settings ModuleScript (not the purple box) and then use Roblox’s move and rotate tools to move and rotate the purple box as you like. Make sure not to rotate an individual corner, select both of them before moving or rotating.

Which part of the purple box will show up at the top of the rendered image? You can find this out by selecting one of the corners, then right click and press “show orientation indicator”. This will show you where the front and the top of the purple box is facing. The front of the purple box will be rendered at the top of the image.

Other settings:

All other settings are located inside the ModuleScript and you can configure them from there. The explanation for each of the settings are also present inside the ModuleScript in the form of comments.

Starting the render:

Now that all the settings have been configured, you may now close the plugin and start the rendering.
Make sure to recheck that the Ro-Render Application is running and that the “Start Server” button has been pressed.

It is recommended to open the task manager (on Windows) and activity monitor (on Mac) to monitor CPU and memory usage while rendering.

While rendering Studio may become unresponsive. Do not click on anything in the Studio window while it is unresponsive.

The rendering will take a lot of your CPU usage. If your PC starts to overheat, you can pause the render by setting the “PauseRender” attribute of the “Actors” folder. You can only set this while Studio is responsive, this happens every few seconds when the script temporarily pauses the rendering (to send the pixel data computed so far), so just wait until Studio is responsive then quickly set the “PauseRender” attribute of the “Actors” folder. (This attribute has not been very thoroughly tested so if bugs arise please report them here.)

Now, click the small arrow under the “Play” button in Studio, then press “Run”. This will run the game but will not load any players in, this is important because if you press the Play button your character will be rendered in the map as well (which is not good).

Once the rendering is complete, press the “Download Image” button in the Ro-Render Application to save the render as a .png image.

A few caveats:

A major caveat of this plugin is that it cannot render texture. If your map uses a lot of textures especially on large meshes/unions/parts, then those textures will not show up in the final render, only the color of the part will show. You can attempt to fix this by coloring the part to a color that matches the most with the texture, or manually make a rough outline of the main features of the texture via parts and color them accordingly (tedious, I know).

This limitation is not from this plugin, rather it is from Roblox itself (there is no way to get what color of the texture is displayed on a specific point of a part, we can only find the color of the entire part or the color of the terrain’s materials set in the properties of Terrain).

Older versions

  1. Isometric Minimap Creator (by @Widgeon).
  2. Ro-Render V1 (by @reteach, a modification of Widgeon’s version)
  3. Ro-Render V2 (by @reteach and @StrategicPlayZ)
  4. Ro-Render V3 (by @reteach and @StrategicPlayZ)
488 Likes

Nice! Definitely going to be coming back to this as my map changes and changes. This looks so much more user-friendly as well.

Questions/concerns/PSA’s though:

  1. More or less I think the rendering method is the same as the last one? (Where you press play and use clients)

Meaning that:

  • You should probably clarify that StreamingEnabled needs to be off. Otherwise the entire map (depending on how big it is) will not be available to clients (unless you move around so everything gets streamed in but no one wants to do that…) causing you to get incomplete renders of your map like this:

(stumped me for like an hour or two, did like 9 renders wondering what I was doing wrong :skull: )

  1. Also, the issue that would cause RoRender V1 not to work (especially for lower/medium end systems like mine) was the PlayerAdded function in the server script that was actually supposed to start the rendering. Not sure if you’ve heard about it, but PlayerAdded sometimes will not fire on game initialization if a client joins before the function is connected. For games with big maps, meaning longer load times, this will happen a lot more.

So basically, if you haven’t done it already, make sure the PlayerAdded function accounts for people who could’ve joined before the function connected:

local players = game:GetService("Players")

local function onPlayerAdded(player)
    -- code 
end

players.PlayerAdded:Connect(onPlayerAdded)

for _, player in ipairs(players:GetPlayers()) do 
    coroutine.wrap(onPlayerAdded)(player)
end 

Again though, amazing job. This plugin is extremely convenient and I’m glad to see it got updated

29 Likes

I forgot to mention that in the caveats section, it is updated now.

And I have updated the plugin to fix that issue. Thanks : )

4 Likes

Wow, just wow. This project has evolved in such a good way. From glitchy Java files to this! Honestly you have done an amazing job!

4 Likes

I tried it out for an underground facility map and with some adjustments, it actually covers most of the layout very nicely. Since an interior-heavy minimap is not really guaranteed to be perfect, at the very least, it’s pretty useful in making it easier to trace out a custom minimap from the generated image.

Original:

Edited (objects above and below the intended level removed):
rorender_test

19 Likes

Thats gonna be a browser specific problem, make sure your browser is updated or try a different browser.

4 Likes

Hey this application never seems to work for me on any version. I did this on the basic city template. I installed the plugin, went into studio, opened the plugin, clicked auto configure, ran the exe of RoRender, clicked start server on RoRender, started up a local server with 6 players because i have 6 cores, waited until all players loaded in, checked RoRender… nothing happened, opened up the exe again…nothing.

Test 2: I thought maybe it was a firewall issue so i disabled my firewall. I did the same steps and it did the same thing it wouldn’t load the image, time would not start, nothing.

Here is my video showing what i am doing

10 Likes

Did you click inject scripts on the plugin? I’m probably going to remove it in future iterations because a lot of people forget.

5 Likes

yea it still never tried to make an image even with inject scripts

4 Likes

Video

4 Likes

I’m having the same issue, it used to work, just now it dosent want to…

3 Likes

When i used it, it took a few seconds to start, and when I googled how many cores my cpu has, google was different than what Task Manager was telling me. Google said my cpu has 6 cores but task manager was saying there’s 4 cores.

2 Likes

Task Manager is accurate, because it shows you how many cores you actually have. As it a main application in your computer. It should know

5 Likes

Yea when i tried with what google said the script gave an error, but when i went with what the task manager said it worked fine

3 Likes

Weird because i get no feedback from RoRender at all. It just sits there doing nothing, even after the steps that i needed to take.

3 Likes

@Stonetr03
@CoolMeeskop

Any output in the studio window?

3 Likes

I got a render by having HTTP service on in the template game… i am an idiot i forgot this thing needs HTTP service to work i saw the error in the console… i am gonna try to get one of my game. The render of my game came out like this v … i will try to render a part of the map

2 Likes

One thing i noticed is a changed the size but its rendering a different part of the map aslo its being cut off… that might be because i tried to make a small size render but it didnt render that area selected… i thinks its rendering my entire map, which is good

Suggestion maybe tell people to turn on HTTP service, because if i completely forgot some people might aswell

4 Likes

I’m not sure what you mean here

I updated the post to include turning on HTTP requests

5 Likes

I wrote that part in a hurry as i had to do something. Here is a better version.

I am really bad at explaining.

I clicked Auto config then made the purple box smaller, but RoRender rendered the auto confgure instead of the smaller area. This could have just been a one time glitch.

The cut off of part i was referring to was the void i noticed it rendered the void as transparency.

Also here is the final render. I need to add water around my map. Its an old map i made so i am trying to rework the terrain. So stuff looks bad as of now.

2 Likes