I was gonna make a video tut for this but I've been really busy with my game (except to release before Christmas) so if anybody wants to make a vid, fell free to... Actually, I encourage you since the subject is kinda advanced and everybody might not 'get it' just from the text (I mean, how to make
Anyways, this app will basically split the map so it converts. It will not make prebuilt constructor spheres convertible, but it'll take all the brushes and try them to different maps, searching for malformed faces or vislinks. It will close all the dialogs popping up, including any crash-dialogs. The crash dialogs are owned by a windows process so it's difficult to trace back the source of the crash, at least with the high-level .NET framework... If anyone is interested in how it catches the crash: I run the dialog closer and the command-line scanner in separate threads.
Also, the process is really slow so always separate the problematic part from the main map. And of there are any brushes that wantn't go through even in a map only containing themselves, the Map Splitter will list them in a file called mapname_malformed.map, where you can manually try to process them from.
Now there's a sort of a bug or something, dunno why, in MBMap2Dif which throws the cursor to the bottom-right corner of the screen, and as you can imagine this will get really annoying when it happens like every other second, if not denser, so I kinda had to 'hack' it. It will make it a little better by immediately restoring the cursor, but forget the idea of using a paint-program while your map is converting.
I know, I know, that's a long list of problems but I tried to minimalize them as well as I could. Here's some features, on the other hand:
So; the Map Splitter will
Split your map into convertible pieces and convert them, naming them as mapname0.dif, mapname1.dif, mapname2.dif... When a map is being dropped on it. Open the settings dialog when it is being opened without a file, or command line arguments.
Create a base mission file containing all the parts of the map, positioned at 0 0 0.
Optionally run an interior test (actually, invoke the base mission)
Optionally prevent any large maps (>x) to be created by offering the option to limit the map size.
Work with MarbleBlast Exporter (philsempire.com), if MBMapSplitted is set as Map2Dif.exe and basic settings are used with no interior test.
Here's some example work:
From the inside
From the outside
Some tips on the toruses (360 tubes):
To make a torus, first create a curve for one segment of the torus on one axis, then curve that on another.
To avoid malformed brushes, use a triangle calculator (
, for example) to calculate the angles and dimensions. I'm not going to learn you how to use it though. IMPORTANT: DO NOT use the knife tool(s) for the base segment, but instead use the planar scale tool for the vertices when putting the first cube to form! This will take a bit more math, but if you don't do it you'll get malformed brushes. For the form of the first segment, you can use the knife tool.
Hope this is enough for advanced constructors to get started, and hopefully create a tutorial.
It keeps them as big as possible, and to speed up the process it uses something I like to call the karma system. When a brush is added and the map is retested, the karma of the map will update (karma = successes - fails) and when a new brush is processed, it will be tried first to the map with the highest karma and last to the one with the lowest. If a map has more fails than successes it is skipped since trying to fit a brush into it would most likely fail. This system is just for saving time.
I forgot to mention btw that if there are any entities in the map, they will be copied straight to the first map (mapname0.dif), but you'll have to click the create subs -button yourself.
That's weird... I'll check it out once I get home!
EDIT: I have a feeling the texture paths might be messed up... That would explain every brush failing to convert. Have you tried if the temp map converts manually? Also, could you post the contents of both your troubleshooting map and the temp map?
Ah, didn't think of testing that. I'll get back to you in a minute (need to start up bootcamp)
OK, the Temp. Map that the splitter creates converts just fine if I use MBMap2Dif
BTW forgot to say earlier, your Torus that you provided won't convert either... Also, I am on Windows XP.
I have tried it with the texture paths set at mbu_grid_neutral1, at /mbu_grid_neutral1, and at OfficialMBP/mbu_grid_neutral1 (how it was originally) with the same problem. BTW not texture specific, my other map does the smae with different textures.
Yeahh... I think I figured it out... Can't be sure about it, though: If I'm not wrong, Map Splitter has kind of a bug or a compacility issue; it assumes all the interiors are located at /marble/data/interiors/. Sorry, but I guess you'll just have to deal with it until I get home to fix it.
Wait whaaaa??? Fun trying to solve errors by an app I wrote months ago without even getting to look at the code And why does it say 1 as the map count always after creating a new one? Like wtf is my app doing? (lol)
Anyways, does it even create a test map? Maybe it crashes if it can't find the executeable for some reason? If you do find a test map, could you post the contents of it?
Not sure about the Total Maps now 1, I was using the feature to limit maximum map size so that it would do divisions, and I think the bug may be there. Doesn't effect how it actually works...
I converted a map almost entirely made of curves w/out a problem, with the limit map size off it gave the correct #'s of maps. The program crashed a few times during conversion (or something did, now that I think about it, that may have been map2dif) but after I dismissed the error message it kept on going. Crashed at the point of generating a .mis, just like I described, but it did the splitting and converting correctly, even put the malformed brushes into a separate .map.
Not sure what you mean by a test map, clarify pls.
Also figured out the easy way to make my own .mis with all of the pieces. Just put all the interiors into a subfolder, set MB to place at centroid, and click each interior. Not too much more work...
3. Microsoft .NET Framework 4.0 installed on your computer (If you don’t already have it Download the latest version from Microsoft)
4. Marble Blast Gold or Marble Blast Platinum installed on you computer
To set it up:
1. Move MBMap2Dif Into your Interiors folder (MBG Usually C:/Program Files/Marble Blast/marble/Interiors)(MBP Usually C:/Program Files/Marble Blast Platinum 1.14/marble/Interiors)
All of the textures used on your map must also be in this folder, so if they aren't copy them in
2. Open MBMapSplitter.exe
Set MB root folder to your MB folder (Usually C:/Program Files/Marble Blast, or C:/Program Files/Marble Blast Platinum 1.14)
Set MBMap2Dif.exe to MBMap2Dif in your interiors folder
3. Drag the templates folder to C:/Documents and Settings/[Your Username], and hit yes to merge the files into the existing (hidden) Templates folder.
You have two options to control how the program works
1. Max brushes per map:
This limits the number of brushes that can be in each Interior (I recommend leaving this on 0 [0 is Infinite])
2. Test the interior:
Check it if you want the program to run an Interior Test when it finishes converting.
Close the window when you have the settings how you want them.
Drag your .map onto MBMapSplitter, and wait…
It takes a while…
During the conversion process you might encounter some crash dialogues. Just dismiss them by clicking Don't Send
When the program is finished , and after an interior test (If you selected that option) you will have:
1. All of the Interiors in your Interiors folder, numbered starting from zero in this format: mapname0.dif, mapname1.dif…..
2. A mission file called testMission.mis in your missions folder. This .mis has all of your interiors properly aligned and placed.
3. mapSplitterTempMap.map in your Interiors folder. this is used in the conversion process and can safely be deleted.
4. mapname_malformed.map in the same location as your original .map. This is a .map scene containing all of the brushes in your scene that cannot be converted at all, even when placed in their own individual .map's. Not created if everything converts correctly.
If you have this try opening it in constructor or QuARK and remaking the brush in a different way, (i.e. use pie slices instead of pre-made cylinders, or remake the piece starting with a flexi-cube). Also try changing the UV mapping on the brush, sometimes the way the textures are mapped screws up the conversion.
- MBMapSplitter doesn't automatically close crash dialogues in Windows XP (Possibly other OS's too)
- When using the Max brushes per map feature to limit interior size the Interior count doesn't increase