Staryu Trek
|
Posted on 10-08-24 05:29 PM |
Link | #101701 |
|
So, you're new to hacking Super Mario 64 DS. And you want to make your first custom course, level, stage or whatever you call it. But where do you start? Designing levels for a 3D game like SM64DS is a different thing than designing levels for a 2D game like Super Mario World or New Super Mario Bros. This tutorial, spanned out across multiple posts because the chapters are going to be long, details the most important aspects of creating a SM64DS level. Table of contents 1. The main concept
2. Missions and gimmicks
3. The level's model
4. The collision map
5. Object placement
6. Cheese fixing
7. Playtesting time!
Chapter 1
The main conceptSo, you want to make a custom level. First thing you need to do, is think about what theme your level will be having. Here are some nice themes to use:GrasslandA common theme in Mario games, and usually the theme of the very first level, including SM64DS's Bob-Omb Battlefield. But you don't necessarily have to use this theme for the first level. A SM64 romhack I played had the first level be a swamp level.SkyA theme found in lots of platforming-heavy levels. Since the sky is the limit, you can really let your imagination go all-out! It will always turn out better than that lame Rainbow Ride anyway...Water/BeachMany people hate water levels, so if you're making one, do make sure it's GOOD! Therefore, beach theme is often used, like in Newer Super Mario Bros. DS (that's a 2D hack though), to create a mixture of on-land platforming and underwater... swimming. But... the music is always excellent and you can really hit the bull's-eye aesthetics-wise!Snow/IceLoved for their aesthetics, hated for their slippery physics, wintry levels can be both a delight and a pain-in-the-ass for players. Many wintry levels in 3D Marios feature slides, something you can really release your creativity upon!LavaA must in Mario games. The focus will mainly be on careful platforming over the boiling hot lava. Keep in mind Koopa Shells, Metal Wario and lava boosts can make the level ridiculously easy, so read the "Cheese fixing" chapter when it gets posted!
Of course, countless other themes exist, like desert, savannah, tundra, city, ruins, cave, ghost house, forest, jungle, space, cyber etc. And you can also combine two themes, like how Galaxy combined lava and ice in Freezeflame.
After determining the theme, now it's time to think up what your level is going to look like! I suggest drawing concept arts on paper - I always do that.
What is your level's centerpiece? Is it a towering mountain, an idyllic sea, a castle, a giant palm tree, a huge ravine etc. etc.
What to avoid:
• Flatness. This is Mario. You can't let the player NOT jump! Create some height variation with bridges, rock formations, slopes, you name it!
• Blandness. Lots of SM64 romhacks have the towers-in-the-sky-and-a-little-bit-of-grassland theme in their levels, which is just too rectangular, too linear, too... bland! Make your level varied and use varying kinds of shapes.
• Linearity. Even if you're making a Super Mario 3D Land-like hack, you should at least include some hidden nooks and crannies where the player can find 1-Ups or easter eggs. That was chapter one of my tutorial. Next time: missions and gimmicks! |
Staryu Trek
|
Posted on 10-10-24 05:53 PM |
Link | #101713 |
|
Chapter 2:
Missions and gimmicksThis chapter is about the Power Star missions and the gimmicks involved. Every main course has eight Power Stars, seven of which are mission Stars, the other is the 100-Coin Star. Secret courses and the hub can also have maximally eight Stars each. But how will the player obtain these Stars? If you want to make an enjoyable hack, you'll have to have as much variety as possible when it comes to how Stars are obtained.The missionsThe mission is what you should do to spawn or access the Power Star. Examples in the original game are:
• defeating a boss;
• collecting a certain amount of MacGuffins (5 Silver Stars or invisible secrets, 8 red coins);
• pressing a switch that spawns a Power Star and racing to the Star before it disappears;
• triggering three or four switches (treasure chests, book switches) in the correct order;
• completing a platforming challenge;
• using a specific character's abilities;
• winning a race against an NPC;
...etc. Without modifying the game's code, the kinds of missions are limited, so how to make all missions different when you have dozens, maybe one hundred or more Stars in your hack (something Nintendo failed IMO)? That's where gimmicks come in play!The gimmicksNearly every mission in the original game had a gimmick. Take Pole-jumping for Red Coins for example. Collect eight Red Coins, but... do it while jumping from moving pole to moving pole! This gimmick also fits well the mechanical/industrial theme of the course it appears in. Of course, not every mission needs a gimmick, for example if you hide the Red Coins in tricky-to-reach places, it'll be challenging enough for the player to not be lame. Do always balance out the gimmicks: place more complicated gimmicks in later-game courses. The following objects often make for nice gimmicks: moving poles, ! Switches, power-ups, moving platforms, Thwomps, pushable boxes, Koopa Shells etc. The level's geometry can also play a huge part in a gimmick, like hangable ceilings, Vanish Luigi fences, wind, mirrors... you name it! How to make a good level model, you'll learn in the next chapter.
Don't troll the player, unless you're making a troll hack. Putting three pipes of which two lead the player into an instakill hazard and one leads the right way for example, only makes your hack less enjoyable, not more difficult. It doesn't make you a good level designer, only an asshole. So avoid trolly gimmicks at all costs.
You will always get bonus points if you use a gimmick that's fitting for the level's theme, like tornadoes in desert levels, sliding in snow levels and cannons in airship levels (sorta done in Rainbow Ride, though that's a sky level). And don't make the gimmick tedious, like having to use Wario underwater (Metal Wario aside) or waiting an hour on a flying freaking carpet. Many romhacks do gimmicks better than Nintendo, so if you need some inspiration, play some 3D Mario romhacks. Next time, the level's model! |
Staryu Trek
|
Posted on 10-12-24 05:52 PM |
Link | #101719 |
|
Chapter 3:
The level's modelBefore you continue, please get to know your modelling app a bit. I won't give tips on how to model in a specific program. Just know that DS models are made out of triangles and quadrangles (faces or polygons) oriented in 3D space (triangles are recommended) and that textures are 2D images mapped onto the faces, like a wallpaper.
The DS's screen can only show 2048 triangles at once, so try to limit your triangle count to maximally 4000; if it's below 2048, it's perfect. Circles in SM64DS are often modelled as octagons; cylinders as octagonal prisms.
Textures should be 8, 16, 32 and rarely 64 by 8, 16, 32 and rarely 64. Not too many textures and don't map them in a way they repeat like 100 times on a single face. That glitches up the DS.
Each face can only have one texture, so if you want to map a window, tree shadow, arrow etc. onto an already-textured face, you should create a rectangular (triangulated) plane parallel to the face 0.005 m in front of it (assuming the scale of your level model is perfect. If you don't know, just make a simple base model, import it into SM64DSe, scale it with the Game Scale setting on the left using the Mario figure as a reference, import it into the ROM, then export again. Then load the model in your 3D editor again and it should now be the right scale) and map the shadow, arrow etc. texture onto it. (Have I already advised to ALWAYS use PNGs as textures? JPG sucks.)
By default, you want most faces to only be visible when viewed from one side, so make sure all ground faces face upwards, all ceiling faces face downwards etc. And if it's not that way, flip the normals of the incorrectly-oriented faces in your 3D editor: that reverses their orientation. If you want certain faces to be double-sided (like a fence or something), be translucent or have an animated texture, make a separate material for them so that other materials with the same texture won't be affected.
Solid colours can be made by mapping all vertices of a face to one pixel of the texture.
Some people first make the entire model and then texture it - don't do that! It makes it very likely to overlook faces, so map the textures every time you create a few faces.
Make sure the textures on each face align - especially with brick or animated textures, any misalignment is easily seen!
Vertex painting can make for some nice shading effects and is necessary to create depth, and therefore unmissable - imagine falling into a pit because everything is unshaded and you couldn't see any depth!
Vertex colours and diffuse colours don't combine - if you want solid colours, just use textures as mentioned above. Once your model is done and imported into SM64DSe, you can go to the Materials tab of the model importer and define two-sidedness and transparency (opaque is 31, half-transparent is 15, invisible is 0) of all materials. Oh yeah, and always check "Vertically flip all textures" under General. Once you're finished, click Import, then Model. But you're still not done! Now you have to open the level again, click on "Texture animations" and depending on the version, a different texture animation editor will appear. No matter which version you use, first delete all existing texture animations. Having any animations reference a now-non-existing material crashes the game (oh yeah, and if you're replacing a level with multiple areas (like Hazy Maze Cave) or Castle Grounds, first export an XML (level backup) of an unedited Bob-Omb Battlefield and import it into the level you're replacing, then import your custom model).
If you want to animate any texture, in SM64DSe Ultimate, select a material in the texture animation editor, then click "Create animation" and... manually input how the texture shifts every frame. Yeah. Can't help you make it any less tedious, but at least it's easy.
Once you're done, click Save. You have now imported your custom level model! But more needs to be done before it's playable. Next time: the collision map! |
Staryu Trek
|
Posted on 10-24-24 07:27 PM |
Link | #101781 |
|
Chapter 4:
The collision mapWhat is a collision map?
A collision map, also called a KCL in SM64DS hacking, is a model like the level model you learned to make in the previous chapter, but instead of determining what should be shown on-screen, it determines how the player character interacts with the different surfaces in your level. The KCL is a separate thing from the level model, so faces can be in a KCL that shouldn't be in the level model and you can exclude faces from a KCL that are present in the level model.
Examples of different collision types are:
• water collision (player can swim in);
• lava collision (makes player Lava Boost upwards and deals damage);
• slippery collision, always makes the player slide off);
• unslippable collision (think the pillars in Shifting Sand Land);
• death plane (placed at the bottom of levels the player can fall off);
• Vanish Luigi transparent (watch out with this one - it may cause unnecessary cheese);
• crawl-transparent (only lets the player through if crawling).
And of course many more! Take a look at the CLPS data document (don't worry if you don't know what CLPS is; I'll explain it later in this chapter) in Shugabush's signature. I might edit my post later to directly link to the document. This document lists all of the different collision types. Don't worry about more complicated stuff like wind IDs yet; if you want to find out how that works, I suggest looking at the paths in the water at the beginning of Tall Tall Mountain. Texture actually means what sound the player's footsteps make (4 is default).
And just know that for every collision type you plan to place in your level, you should assign a material, like with textures in the level model. BTW, I suggest copying your level model and editing it for making the KCL. Give them names that directly refer to their collision type. Exclude any faces overlaid on top of other faces (shadows etc.), as leaving them in the KCL might cause screwy collision that impedes the player's movement. Double-sided faces don't exist in KCLs, so place two faces with opposite orientation 0.01 m apart instead - look at Castle Ground's and Lethal Lava Land's KCLs for reference. The former features a fence the player cannot stand on; the latter features a fence the player can stand on.
Do not allow the player to swim away from under a water face - if the player can swim away from under a water face, make sure another water face is right below the player. If you don't want Mario to Wall Kick off the level boundary, make it so that the angle between the boundary and the "floor" in the 3D editor is over 90 degrees. The level boundary should make every part of the level the player is supposed to be in, is inside of a solid container, so make sure the level boundary has a ceiling too!
Poles don't need to be solid; there's an invisible pole object for that.
Once you've finished your collision map, save it as a .dae file and open your ROM in SM64DSe. Click the level you want to import the collision map of and click the button that says "Edit collision map". Click Load>External model and select your collision map model. You see a table with the material names. You can now assign numbers to the collision types. Make screenshots of the entire table - you'll need them. Press Assign, then Import>Collision map. Close the window and click "Edit level" in the editor's main window. Click the CLPS button. In the window that now appears, you can set the collision types' specifications. The collision types are listed as the numbers you entered. So open the screenshots and the aforementioned CLPS document and assign the right values to each collision type (and remove any extraneous slots if there are more collision types in the current CLPS than in your custom collision map).
Self-explanatory, but one word of advice: camera behaviour type 6, combined with setting Camera through walls to 1, is the best! No screwy camera anymore!
When you're done, press Save, close the editor, and... wait for the next chapter. Yeah, we're still not done! Next time: object placement! |