View Single Post
  #4  
Old 06-12-2007, 06:59 AM
Brakazog Brakazog is offline
Member
 
Join Date: Jun 2007
Location: Dallas, TX
Posts: 47
Default

Success! After about 4 hours and a fair amount of beer, I've got a prototype level that I'm about to post. I just wanted to drop a note here saying that the developers rock - there's a lot of really complicated stuff you handle, especially when building random boards (I found this out when I tried to make a weird problematic arrangement, and the program corrected it for me - it's like there's an AI in there that knew I was trying to mess with it).

Anyway, building a custom level is kind of a pain, so unless I get a particularly inspired idea, I'll probably just wait for the editor.

For anyone interested, here's the method I found (this requires some tech skills):

1. In Pathstorm, build a board with the dimensions you want. Make sure you put enough objects in the level - sometimes blank rows can be omitted in the file, and I didn't research when that happens or how to add rows in that case (though it's probably something simple). Also, make sure the build parameters match what you're going to put in your level, just in case. For example, in my prototype I built a 15x7 board with 4-directional bouncers. Start playing it, but don't finish it; then Add to Favorites. Go to Favorites, pick it, and Start New Level. Confirm that you want to lose your progress so far. Now any random saved-along-with-the-level data will be cleaned out, and you won't have an inappropriate time saved with it.

2. Find the .board file and copy it to a work area, then rename your copy so it has a .zip suffix.

3. Inside the .zip file you'll find a .board file with the same name. Extract it. Open the .board file in your favorite hex editor.

4. About 1/3 of the way through the file, you'll see something that looks like a level layout. It's the level layout.

5. Each row has the following format (in hex):
04 (I'm assuming that's the length of the integer to follow)
xx 00 00 00 (xx is the length of the string to follow, in hex, including the 00 at the end -- yes, this does vary even with fixed width rows - see below)
(row data followed by 00 - details below)

6. Replace the row data with yours, adjust the row data lengths as appropriate. Save, update the .zip, rename .zip back to .board.

7. Back up your original .board file (in the game's directory), then copy your new (zipped) .board file in. Play it most of the way through, but don't finish it (otherwise it'll save the file with you as the lowest time, and that really wouldn't be fair).

8. Choose "Email" and copy the file it creates. Now test it again and complete the level. Make sure you didn't do something stupid that fried your profile (unlikely, but there's a bunch of stuff in the file that I haven't decoded, so best to be careful). Share the copy you made from the "Email" option that doesn't have your time in it. Bask in the glory of the accolades that are sure to come in!

Row Data (text form) - concatenate to build your row:
. = Empty
* = Wall
v0 = Top Entry
>0 = Left Entry
<0 = Right Entry
^0 = Bottom Entry
//0 = Bouncer /
\\0 = Bouncer \
--0 = Bouncer -
||0 = Bouncer |
//1 = Switcher (bouncer) with / as correct direction
\\1 = Switcher (bouncer) with \ correct
/\8 = Scrambler (bouncer) starts as \ but / is correct
\\8 = Scrambler (bouncer) starts as \ and \ correct
(other combos are xy8, where x is correct and y is the starting state)
++0 = Splitter +
]]0 = Shifter CW
[[0 = Shifter CCW
}}0 = Twirler CW
{{0 = Twirler CCW
Switchers and Scramblers for shifters and twirlers follow the same pattern as for bouncers.

So, to write a level that looks kinda like this:
**v**v*
>.\...*
>.....*
*.....<
>.\...*
*.....<
***^^**


you'd actually code it as this:
**v0**v0*
>0.\\0...*
>0.....*
*.....<0
>0.\\0...*
*.....<0
***^0^0**


and so your hex (broken into rows) would look like this:
04 0A000000 2A2A76302A2A76302A00
04 0B000000 3E302E5C5C302E2E2E2A00
04 09000000 3E302E2E2E2E2E2A00
04 09000000 2A2E2E2E2E2E3C3000
04 0B000000 3E302E5C5C302E2E2E2A00
04 09000000 2A2E2E2E2E2E3C3000
04 0A000000 2A2A2A5E305E302A2A00


See? Kind of a pain. Nevertheless, if y'all want to go to the effort of building something, I promise I'll play it .

Cheers!
Reply With Quote