I've noticed alot of newcomers ask the same question;"How do i make completely new blocks/bgos/backgrounds without replacing the existing ones?". and so I will attempt to explain that and reasons why you might or might not use them in this guide. mind you, this is as someone with 13 Years experience with SMBX in general. perhaps it is biased, but everyone has opinions! and they stink! as such i don't claim this to be end all be all word, but my opinions laid out in a guide like fasion. first though, i will cover some topics of related nature.
- Custom Range -
If your unfamiliar with the custom range, it is a range of ids for "completely custom" assets to replace. not every type of asset uses it. you can read a
bit more on it here.
- Things without a Custom Range and Why -
- Players or characters: there is no framework for custom characters or even multiplayer compatibility at this time (beta 5 patch 2)
- Powerup: there is no framework built-in for custom powerups at this time (beta 5 patch 2).
perhaps you'd be interested in this though?
- Tile, Scenery, Path, Level, Musicbox (overworld items): there is no framework for anything on the overworld at this time (beta 5 patch 2)
- Level Backgrounds: by default, there are 65 backgrounds. i don't begin to understand how you'd use them all in one episode, let alone a single level. that coupled with
the very powerful built in background customization via background2-#.txt, there's little need for one in my humble opinion.
- "Replacing" blocks/BGs/BGOs/NPCs/Ect on a per-level or per-episode basis -
say you wanted a custom graphic over something default. like say, smb3 wood block (block-1). you'd make your custom graphic into a png called block-1.png. then save or move said png to
your episode or level folder. be sure to refresh the editor (through f5 or otherwise) to be sure it will display it! if you need further advice on it,
you may find some good resources here.
- "Completely Custom" assets: How & Why -
How
to make use of the custom range for a "completely custom" asset, you will need to setup an editor side config (.ini), the graphics for it (.png), and optionally if needed the gameplay config (.txt). .txt is generally less needed then the other two, but matters if the object in question need differing behavior in-game (such as turning a
solid block into a semisolid block). preamble out of the way, you would start an editor config ini by copying ones found in <X2 install>/data/_templates/. then you edit it as needed.
here is a sort of guide that touches on it a bit.
Why
- Blocks: because .txt is usually enough and there are well over 1000 to replace, there's only a few reasons i see to make anything on the custom range with them. limitations or code. main limitation blocks have is animation frames. anything below id 639 that is already animated (? blocks for instance) can't have it's frames config altered. so custom range is a good fit for new animated blocks. though blocks in general can't have animation over 32 pixels in height per frame. (
or you could use this if you'd rather to get around that.) as for code, you can attach code to a block for any reason really via block-###.lua files and is fairly useful for things like
spawnzones or some such. i will not be covering that here however. should you actually run out of the default ids (how???) custom range is a fine use then.
- NPCs: completely custom NPCs are generally purely for making a non-existent NPC, well, exist. I have no quarrels with this use as it's more or less the reason custom range exists. again I will not cover that here.
see emral's tutorial series if it peaks your curiosity.
- BGOs: txt configs and the built in image-base size loading the editor has
should be powerful enough to make any BGO overwrittable with little fuss. some BGOs have an action, like lineguide or terminus BGOs, thus i recommend avoiding those for decorative replacements. but! custom range
is useful in a shared project setting. say your team has all the default BGOs replaced with a custom graphic in a level. the custom range provides a good way to implement
more once you've ran out of the default ids.
- Effects: custom range Effects usually compliment custom range NPCs. due to how things work, you can't really swap a custom range effect in for a default one. so these usually get the most use via lua coding to some degree.