SNK Trick Member
Joined: 31 Jul 2003
|
1. Posted: Sat Dec 04, 2004 12:36 am Post subject: |
|
|
Perhaps I could be of some assistance. However, creating a theme, depending on what you want, can be an extremely time-consuming process. It's not difficult, but it's far from easy. Despite what you may hear, it's not often that a themer takes a request for a theme, as they're usually interested with their own thing or have their other things in life to attend to. I'll try to give you an idea of how themes work. There are several things to keep in mind of creating a theme.
First of all, you will want to have an idea of what your theme will look like. My best suggestion here is to draw out an idea for every screen. This is so you have an idea of what you want in terms of design and possibly color.
Next, you will probably want to adjust the graphics. What most people don't realize is that the size of the image doesn't have to be the same exact same. It can be any size as long as the pixel sizes are even-numbered, recommendedly in a multiple of 4. This is to ensure quality. If you create an odd-numbered pixeled image, whether it be the X and Y value, the program will extend the graphic so that the pixel size for that dimension so that it's even-numbered, which will reduce it's quality. An example of this is the song banner in the default themes. Graphics are located in the Graphics folder and BGAnimations folder.
Assuming the graphics are done right, the most important thing about creating a theme are the metrics. This is located in the BGAnimations folder and the metrics.ini file in the theme folder. This is where most people get lost, and while I can't make you a themer in an hour with this really brief "tutorial", it might give you a slight idea of how things work.
Most themers have a little bit of knowledge of C++, so if you don't understand that this may be more difficult to understand. Particular screens or sometimes items with advanced attributes are cased in brackets (ie. [ScreenSelectDifficulty] or [LifeMeterBar]) and within them are specific items. The items are basically the items in the graphics folder, and the commands are the placement, animation in and out for that graphic. The only problem is that one item could be more than one graphic (ie: The life frame and oni life frame will be in the same location).
Let's use an example, in [ScreenSelectStyle], let's look at the object "Explanation" Here's what it will look like in the default theme.
ExplanationX=480
ExplanationY=170
ExplanationOnCommand=addx,400;bounceend,0.5;addx,-400
ExplanationOffCommand=bouncebegin,0.5;addx,400
While not all items will have the exact same attributes, most will. Now you might wonder, what exactly is the "Explanation" graphic? For some objects it will be obvious, sometimes it won't. But you'll have to use your head. The screen is "ScreenSelectStyle" and the object is "Explanation", so you'll have to look in the graphics folder for that file. Sure enough, there's a graphic called "ScreenSelectStyle explanation" in the graphics folder. Take note that it's written in a .png format, and that's the image format you want to use. The .png format is one of the best, allowing transperancies and excellent compression.
But let's look at the commands here.
ExplanationX=
ExplanationY=
ExplanationOnCommand=
ExplanationOffCommand=
The first two have to do with where the object will go on the screen. X and Y values are what they seem. With X, at 0 is at the left, 640 on the right. With Y, 0 is at the top, 480 at the bottom. Despite what resolution you're in, you're going to work with a 640x480 area. Now with the placement, you're telling where the CENTER of the image goes. Let's say you have an image that's 320x240 and you want the top left corner of the graphic to be on the upper left corner of the screen. Most people would assume you'd put zero for both values. If you did that, the center of the image would be on the corner and only 160x120 will be visible. So if you wanted this to be correct, X value at 160, Y value at 120. It's possible to use negatives, but I only recommend it if you plan to use the On/Off Command to make it appear onscreen.
ExplanationX=480
ExplanationY=170
Looking at that, the object appears on the mid-right, mid-upper area of the screen.
The On and Off commands are basically the animations. The On Command is when the object appears onscreen, and the Off Command makes an object go offscreen. There are several commands you can use here, but if anything is typed incorrectly, either one of two things happen. A, the object doesn't appear at all or appears incorrectly, or B, the program will crash.
Let's walk through this. We'll start with the first animation.
ExplanationOnCommand=addx,400;bounceend,0.5;addx,-400
The program reads commands left to right.
The "add" command tells the graphic to move in one direction. You can use "addx" or "addy" and use positive or negative values. Here, it's telling the graphic to move 400 pixels to the right of its original position.
Next is the "bounce" command. You can use "bouncebegin" or "bounceend" Since we're using bounceend, it will make it act as if it's coming in and stopping. There are other animation commands, like linear and accelerate and decelerate. Take note of the value at the end. With other commands, this can mean opacity/transperancy, color, or in this case, time. Values with time are counted in seconds. But with these movement commands, you're telling what type of animation you want and how long it will last. After that, you add details to say what you want done.
In this case, we use another add command, but notice the value is the opposite of the first. You have to do specific things in this order. If you do something like, "addx,400;addx,-400;bounceend,0.5" it won't work.
So what this will do in the end, is that the image will start 400 pixels to the right of its original position, and move 400 pixels to the left so that it appears the item comes onto the screen from offscreen, and that will take 0.5 seconds.
Notice the semicolon (;) This is used to seperate commands when another is going to come after it. It is not necessary to have it after the last command.
That was just the OnCommand. We'll look at the OffCommand.
ExplanationOffCommand=bouncebegin,0.5;addx,400
You want to use the OffCommand to make things disappear from the screen. In this case, we use similar commands to make it act almost like the OnCommand, but we're using it to make the item go away. The last time we used bounceend, and now we're using bouncebegin. This is the opposite of the previous animation. Instead of making a bouncing stop, it will bounce and then go. The add command is back, telling us that the item will move 400 pixels to the right offscreen with a 0.5 second duration. It's pretty simple.
The BGAnimations are where some of the fun really is. Here is where you use more advanced animations, but you can use all sorts of graphics you want and backgrounds. If you look at themes like Techno Fiend (wink wink), FoonMod and Trance Machina, the animated backgrounds usually come from this folder, although it's possible to reroute to another specific folder. The same commands are used, but you have more control over the matter. Like the items in the graphic folder, these must also be even-numbered dimensions. Things are also different, as you don't use On and OffCommands, but just Commands, also, you must specify which graphic is used, what type of graphic it is (object, tiles, particles, stretch to cover screen). With these, you use graphics within the specific folder, as it won't rely on the graphics folder like the normal metrics.
Lastly, some hinters. If there is anything in the theme you don't want to change, BGAnimations, specific metrics, graphics, folders: Delete them. When the program can't find something, it will revert to the default theme to find it if it needs it. This will save memory and speed of the theme. With things in metrics.ini, say you want to keep the DifficultyOnCommand in ScreenGameplay the exact same, delete the entire command so that none of it shows (ie: Delete the "DiffucultyOnCommand=(blahblah)"part and not just the stuff after the equal sign).
The best way to get familiar, if that was too complex, is to grab a theme, play in windowed mode alongside the metrics and study them. Like a computer, the best way to learn it is to spend time with it. Even the most detailed theming tutorial won't make you a themer.
Even if you want to get another themer to create your theme, there can be problems. They might not give you what you want, they may accidentally put some of their tastes into it, and so on. What most themers will tell someone is if they want a specific theme to do it themselves, because that's what they did. There will always be design conflicts and that's not fun to work with. If you have a vision for the theme, it's best that that vision gets into the theme and not someone else's that might not be the same or worse. A lot of people request themes, and I can't remember one where someone accepted unless they wanted to create that theme already or for themselves. Themers are also people with lives and refuse to be anyone's puppets.
I hope this has given you a slight idea with how themes work. The way I learned to theme was just to dissect all the themes I downloaded and used that knowledge to create my theme. With that said, good luck. |
|