Manually Built Demos (or MBDs) are demos which are created using manual input (usually 7 frames at a time). It is similar to demo splicing in this respect, as demos can be cut and modified using trial and error to find the most optimal route on a map, although the entire process is very tedious and can take hours to do properly. The term MBD was first coined and popularised by Mohamedraif (aka raif), and he has created nearly 200 MBDs, all of which can be found here. TheRealOne and EddyMataGallos are both noteworthy MBD contributors; however, they have created far fewer MBD runs than raif's massive collection.
Below is an example of one of raif's MBDs, a score of 167.525 on 88-4, universally considered to be the hardest level in N 1.4. It is 7.775 seconds faster than the current real-time 0th score, 159.750, held by EddyMataGallos. Like all of the MBDs listed in the master list above, it is viewable by going to user levels and pasting the data in the replay box and clicking 'view replay'.
$###1I2J111MFI0JQI0FQQQMB111@00B1E00000000000000021P00F11000000000000000?1A00?1A003H0GD0GD00000>1H002100>1111111111A00011@001D001A0000FEI100001I003110?100GH000?1@000100?1150F10B111@0N1P00?100B1100010N111P0N1P00N1@00F1P0310N111P0N1A00B150001A0J10>111P0>1000N100031000100111A001000>1H0F1100?1@0B110001400011I0B140N1A0N110031E0001500>1A0N100N11H0B1P00K1000010021@0N1150N1A0021000G10001A0N1100N1000010C11100?100N1100N1000G10>111@0N100N1100N1H00B1L0FM1A0N140>11@0>1E00C11@00100N1D00B1P001A00J111@0100N11LH>1P001000011A0C100>111111A00140001I0011400FFI0FI0031E00?100GK1E0000000000>1500>1000F11H0GOH00GOHC1@0001400?11111111111111A00011@000FE0BM0FQ150FE000G111L0000000000F0000000B1111A0000000000000000GC1111LKOGH000GOOOH003111|5^48,72!12^96,144!12^144,144!12^168,144!12^252,144!12^276,144!12^384,144!12^408,144!12^540,144!12^516,144!12^492,144!12^648,144!12^672,216!12^672,240!12^768,240!12^768,264!12^768,288!12^768,312!12^672,288!12^672,312!12^756,348!12^756,372!12^756,396!12^672,408!12^672,432!12^768,432!12^768,456!12^768,480!12^684,576!12^660,576!12^636,576!12^564,576!12^540,576!12^432,576!12^408,576!12^360,576!12^336,576!12^312,576!12^192,576!12^168,576!12^144,576!12^120,576!12^120,432!12^120,456!12^120,480!12^36,408!12^36,432!12^36,456!12^36,480!12^24,384!12^24,360!12^120,360!12^120,384!12^36,312!12^36,336!12^120,288!12^120,312!12^24,264!12^24,288!12^144,240!12^168,240!12^204,240!12^228,240!12^288,240!12^312,240!12^408,240!12^432,240!12^468,228!12^492,228!12^648,228!12^576,324!12^648,324!12^648,348!12^636,384!12^636,408!12^576,456!12^552,456!12^528,456!12^504,456!12^336,456!12^312,456!12^288,456!12^252,444!12^228,444!12^204,444!12^168,456!12^144,456!12^144,384!12^144,360!12^144,336!12^144,312!12^144,288!12^192,360!12^216,300!12^240,300!12^264,300!12^300,312!12^336,324!12^360,324!12^384,324!12^420,324!12^444,324!12^468,324!6^348,108,3,0,0,0!9^420,120,1,1,21,5,0,0,-1!8^732,516,3!8^708,540,2!8^60,516,0!12^528,228!12^552,228!12^636,264!12^636,288!8^636,60,1!12^288,564!12^264,564!12^516,552!12^456,552!12^72,576!8^612,204,2!8^612,420,3!12^408,444!12^432,444!12^456,444!8^180,420,0!8^516,300,2!9^36,372,1,1,10,18,0,0,-1!11^516,324,360,204!9^360,204,1,1,21,14,0,0,-1!9^360,204,1,1,22,14,0,0,-1!12^540,348!12^528,348!12^552,348!12^552,360!12^576,384!0^96,96!0^120,84!0^144,96!0^288,84!0^312,84!0^396,72!0^420,72!0^420,72!0^600,84!0^624,84!0^648,84!0^684,168!0^744,144!0^696,348!0^696,444!0^564,528!0^552,504!0^528,492!0^504,504!0^492,528!0^492,528!0^348,552!0^324,528!0^300,516!0^276,528!0^252,552!0^96,552!0^96,528!0^96,528!0^96,504!0^60,348!0^84,348!0^60,240!0^84,240!0^204,216!0^228,204!0^252,216!0^396,216!0^420,204!0^444,192!0^576,432!0^552,420!0^528,420!0^504,420!0^480,432!0^336,432!0^312,420!0^288,408!0^288,288!0^324,300!0^372,276!0^444,276!0^468,276#1139:36774434|35791394|35808994|35791394|35791394|35791394|35791394|40328738|35791394|35791394|35791394|35721489|36062946|35791394|35791394|35651618|35791394|107374306|107374182|107374182|40265318|35791406|35791394|35791394|35791394|35791394|35791394|107880994|124151398|18175317|35791377|35791394|52568610|17895697|17895696|35791393|35791394|107374306|17944934|17895697|0|256|0|0|0|35791394|35791394|18035490|17895697|17895697|17895697|17895681|17895697|17895697|17895697|17895697|17895697|17895697|18682129|17895697|17895697|17895697|89510449|89478485|36001109|35791394|19014178|89480465|89478485|17895765|17895697|17895970|35721472|52568622|17895697|17895697|219222289|107375893|35808870|108352861|107374182|107374182|107374150|107374182|107374182|89510502|89478485|235999505|107374182|107374182|107374182|107374182|35791394|35791394|35791394|35791394|35791394|35791394|107376162|52569702|17895697|17895697|40269265|35791394|17895698|115483170|107374182|35791398|35791394|35791394|19014178|17895697|17895697|16847121|235999505|17896226|1|17895680|17895697|17895697|17895697|35794449|17895699|17895697|17895697|107876625|89478487|17913173|17895697|17895697|17897441|17895697|20062737|219222289|89478485|89478485|35853653|35791392|35791394|18207266|17895697|219222289|91645542|17896788|89478493|107374181|35808870|237117986|107374182|40265318|35791394|35791394|97595938|89478485|107374165|107374182|17904162|17895696|35794481|35791394|35791394|35791394|139810#
In April 2020, a five-way collaboration on 95-0 managed to achieve an innovation that until then had only been theoretical. An idea, raised by ska, was to dodge the drone near the very end of the level. The first phase of the plan was to ensure the dodge (dubbed the 'slip' by ska) was even possible. Vankusss supplied ska with demo data, confirming that the slip was possible. Next, ska made some comparisons between the top-performing highscorers on the level to see where time could be saved. He extracted the first 400 frames or so from Mr Lim's 0th run, which he noticed was exceptionally clean. The initial plan was to stitch various runs together, but after a while it became evident that a proper MBD would need to be made. Because it was ska's first attempt at an MBD, it took him a solid day to get most of the run done. However, he was finding the end to be particularly tricky, so he handed over the final chimney section for EddyMataGallos to complete, which he did, managing to successfully execute the slip to break the bottleneck and thus saving 0.350 seconds and breaking a 13-year-old record (albeit not done in a real-time run) with a score of 127.575. With some advice for the ending from raif, Eddy was able to squeeze out another frame to get 127.600, a total saving of 0.375 from Mr_Lim's original 0th. Until the innovation was implemented in a real-time run, it remained Mr Lim's last remaining 0th, which was a three-way tie on the official boards. In May 2020, macrohenry was able to use the new route to take the 13-year-old 0th with a score of 12.575, which tied the first draft of the MBD. The completed MBD in user levels format can be found below:
$95-0 - bang#Metanet#1.4#15000000000050000011111100311110000000003111111001111100000000311111114011115000000031111111111111500000003111111111111150000000311111111111111000000031111111111111111111000111111111111111111110001111111111111111111500000000011111111111150000000003111111111115000000000311111111111500000000031111111111110000000003111111111111111111000311111111111111111110001111111111111111111500011111111111111111150000000001111111111115000000000311111111111500000000031111111111150000000003111111111111000000000311111111111111111110001111111111111111111100011111111111111111115000000011111111111111500000003111111111111150000000311111111111115000000031111021111111500000000111110011111150000000001111500111111000003000000000031|5^60,84!12^492,348!12^312,324!12^684,384!12^612,360!12^540,360!12^444,336!12^372,336!12^252,312!12^648,372!12^180,312!12^36,288!12^108,300!6^756,348,3,0,0,3!6^228,300,2,0,0,0!0^324,168!0^312,180!0^300,192!0^288,204!0^276,216!0^264,228!0^336,156!0^168,156!0^156,168!0^144,180!0^132,192!0^120,204!0^528,156!0^516,168!0^504,180!0^492,192!0^480,204!0^468,216!0^456,228!0^444,240!0^432,252!0^744,156!0^732,168!0^720,180!0^708,192!0^696,204!0^684,216!0^672,228!0^660,240!0^648,252!0^636,264!0^624,276!12^138,324!12^66,312!12^276,336!12^336,348!12^462,360!12^510,372!12^624,378!12^660,390!12^36,444!12^252,444!12^444,444!12^612,444!9^180,156,1,0,31,17,1,0,-1!9^348,156,1,0,31,18,1,0,-1!9^540,156,1,0,31,19,1,0,-1!9^756,156,1,0,31,19,1,0,0!11^96,84,720,540#1056:17895697|17895697|1118481|0|0|0|0|234881024|107374182|107374182|107374182|107374182|107374182|107374182|107872262|107374182|107374182|107374182|40265318|89476642|33554517|35791394|2236962|0|0|89478493|89478485|105137221|107374182|107374182|35791462|35791394|35791394|35791394|35791394|107880994|107374182|107374182|107374182|107405858|107374182|107374182|107374182|2516582|89478608|89478485|17895765|1118481|35791360|35791394|35791394|35791394|35791394|35791470|35791394|35791394|35791394|35791394|35791394|35791394|35791394|107374190|107374182|107374182|107376166|107374182|107374182|107374182|237397606|89478485|89478485|89478485|89478485|89478485|35791121|35791121|35791394|35791394|35791394|35791586|35791394|35791394|35791394|35791394|35791394|35791394|237117986|107374182|107374182|107374182|40265318|107374190|107374182|107374182|89480486|89478485|89478485|107373909|107374182|107374182|107374182|107374182|107374182|0|0|35721489|35791394|35791394|35791394|107405858|107374182|107374182|107374182|237905634|89986397|71582912|17913173|22371601|17895697|22371601|17895697|17895697|17895697|17895697|17895697|17895697|17896797|17895697|17895697|17895697|97587473|89478485|17895765|17895697|0|0|0|89480465|89478485|89478485|89478485|89478485|18175441|36102417|0|0|380928|0|107405824|107374182|2236962
MBDs can be quite useful for highscorers who want to implement tricks or strategies used in MBDs to improve their own runs and/or to try to improve an existing 0th. MBDs, despite their similarity, should not be confused with TAS (Tool Assisted Speedruns), as MBDs are not technically played frame by frame but rather manually built using groups of key inputs due to the way N handles demo data.
How Demo Data Works[]
Within N, all demos are saved in plain text format, which is then interpreted by N. This is just another one of the many features that make N a really optimised game (as far as storage size is concerned). The demo code is a series of numbers, continuously separated by vertical bars (|), which represent which keys are pressed on each frame, and this is then decoded by N. So, when you are watching a demo on N, its literally a replay, since the game is reproducing automatically each key you pressed on each frame. This technique is used by a lot of other games, but the way it saves the key presses is unique.
Each number between two vertical bars codes 7 frames of a run; that is, it contains the information of the key-presses on 7 consecutive frames. Remember that you can be pressing up to three keys at the same frame, which is also saved in this number. Each action (right, left, jump, hold jump, etc.) has got a different and unique value whether they are on the 1st frame of the set, on the 2nd one, etc. To get the final number that codes all 7 frames, you must add up all values. If two keys are pressed at the same frame, the values are also added, of course.
There are quite a few optimizations to creating an MBD that will significantly reduce the amount of time needed to complete a run, but even an experienced MBD creator will take 4 hours or more to create an MBD for a level of moderate length. Optimizations recommended by experienced MBD creators include using NReality overclocked to 20, key states enabled, and use of NEd (so frame-by-frame advance can be used near the end of a work-in-progress run).
The following table, created by Mohamedraif, contains all values from all possible combinations you need, but it is an obsolete method that is much slower. A person compiling a run using this method would need to manually add all the numbers together, which would make compiling a run far longer than necessary. It is highly recommended, however, that you download and use a spreadsheet created by Raif that does all the operations automatically.
Demo Data Codes[]
Demo Data Codes | ||||||||
Frame # | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Code |
Left Movement |
left | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
0 | left | 0 | 0 | 0 | 0 | 0 | 16 | |
0 | 0 | left | 0 | 0 | 0 | 0 | 256 | |
0 | 0 | 0 | left | 0 | 0 | 0 | 4096 | |
0 | 0 | 0 | 0 | left | 0 | 0 | 65536 | |
0 | 0 | 0 | 0 | 0 | left | 0 | 1048576 | |
0 | 0 | 0 | 0 | 0 | 0 | left | 16777216 | |
Frame # | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Code |
Right Movement |
right | 0 | 0 | 0 | 0 | 0 | 0 | 2 |
0 | right | 0 | 0 | 0 | 0 | 0 | 32 | |
0 | 0 | right | 0 | 0 | 0 | 0 | 512 | |
0 | 0 | 0 | right | 0 | 0 | 0 | 8192 | |
0 | 0 | 0 | 0 | right | 0 | 0 | 131072 | |
0 | 0 | 0 | 0 | 0 | right | 0 | 2097152 | |
0 | 0 | 0 | 0 | 0 | 0 | right | 33554432 | |
Frame # | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Code |
1 Frame Jump |
Jump | 0 | 0 | 0 | 0 | 0 | 0 | 12 |
0 | jump | 0 | 0 | 0 | 0 | 0 | 192 | |
0 | 0 | jump | 0 | 0 | 0 | 0 | 3072 | |
0 | 0 | 0 | jump | 0 | 0 | 0 | 49152 | |
0 | 0 | 0 | 0 | jump | 0 | 0 | 786432 | |
0 | 0 | 0 | 0 | 0 | jump | 0 | 12582912 | |
0 | 0 | 0 | 0 | 0 | 0 | jump | 201326592 | |
Frame # | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Code |
Theoretical Hold Values |
hold | 0 | 0 | 0 | 0 | 0 | 0 | 4 |
0 | hold | 0 | 0 | 0 | 0 | 0 | 64 | |
0 | 0 | hold | 0 | 0 | 0 | 0 | 1024 | |
0 | 0 | 0 | hold | 0 | 0 | 0 | 16384 | |
0 | 0 | 0 | 0 | hold | 0 | 0 | 262144 | |
0 | 0 | 0 | 0 | 0 | hold | 0 | 4194304 | |
0 | 0 | 0 | 0 | 0 | 0 | hold | 67108864 | |
Frame # | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Code |
Jump Holds From All Frames |
jump | hold | 0 | 0 | 0 | 0 | 0 | 76 |
jump | hold | hold | 0 | 0 | 0 | 0 | 1100 | |
jump | hold | hold | hold | 0 | 0 | 0 | 17484 | |
jump | hold | hold | hold | hold | 0 | 0 | 279628 | |
jump | hold | hold | hold | hold | hold | 0 | 4473932 | |
jump | hold | hold | hold | hold | hold | hold | 71582796 | |
1 | 2 | 3 | 4 | 5 | 6 | 7 | Code | |
0 | jump | hold | 0 | 0 | 0 | 0 | 1216 | |
0 | jump | hold | hold | 0 | 0 | 0 | 17600 | |
0 | jump | hold | hold | hold | 0 | 0 | 279744 | |
0 | jump | hold | hold | hold | hold | 0 | 4474048 | |
0 | jump | hold | hold | hold | hold | hold | 71582912 | |
1 | 2 | 3 | 4 | 5 | 6 | 7 | Code | |
0 | 0 | jump | hold | 0 | 0 | 0 | 19456 | |
0 | 0 | jump | hold | hold | 0 | 0 | 281600 | |
0 | 0 | jump | hold | hold | hold | 0 | 4475904 | |
0 | 0 | jump | hold | hold | hold | hold | 71584768 | |
1 | 2 | 3 | 4 | 5 | 6 | 7 | Code | |
0 | 0 | 0 | jump | hold | 0 | 0 | 311296 | |
0 | 0 | 0 | jump | hold | hold | 0 | 4505600 | |
0 | 0 | 0 | jump | hold | hold | hold | 71614464 | |
1 | 2 | 3 | 4 | 5 | 6 | 7 | Code | |
0 | 0 | 0 | 0 | jump | hold | 0 | 4980736 | |
0 | 0 | 0 | 0 | jump | hold | hold | 72089600 | |
1 | 2 | 3 | 4 | 5 | 6 | 7 | Code | |
0 | 0 | 0 | 0 | 0 | jump | Hold | 79691776 | |
Frame # | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Code |
Holds From A Jump In Previous 7 Frames |
hold | 0 | 0 | 0 | 0 | 0 | 0 | 4 |
hold | hold | 0 | 0 | 0 | 0 | 0 | 68 | |
hold | hold | hold | 0 | 0 | 0 | 0 | 1092 | |
hold | hold | hold | hold | 0 | 0 | 0 | 17476 | |
hold | hold | hold | hold | hold | 0 | 0 | 279620 | |
hold | hold | hold | hold | hold | hold | 0 | 4473924 | |
hold | hold | hold | hold | hold | hold | hold | 71582788 |