This topic is an unauthorized attempt to create comprehensive instructions for using the BuildSkin application. It is also a place to discuss these Instructions - without hijacking the file's comments section.

I've nominated myself without the original programmer's blessing to write these instructions. As such the only thing that I believe I can do is place these instructions - once completed and/or abandoned (defined as 90 continuous days of not responding to comments) by me - as being the copyrighted material of the programmer, Mevordel. At which point Mevordel can do anything he wants with it - hopefully include it in the next version's archive.

Once everything is said and done, and the task is completed, all rights go to Mevordel anyway. Regardless of my status in any manner whatsoever. Period.

Anyone participating in commenting in this, or any other Instruction 'thread(s)', should be aware that they are, in effect, forgoing all rights to their comment with regards to inclusion, exclusion, specific quotation or generalized paraphrasing, citing sources, etc. Despite the legal mumbo-jumbo, nothing truely negative is intended, just trying to be accurate. Anything said here might be used in some way in the Instructions and you give your blessing (and comments!) freely with that in mind.

I had trouble using this program. Mainly because it's usage assumes a working knowledge of it's predecessor (UIBuilder) that I simply do not have. So I'm going to share what I learn as I attempt to teach myself this application. Hopefully it won't take too long or be too difficult.

But I must admit that I don't really know what I'm doing. Assuming I actually create a skin with this application, it will be a first for me, ever.

However, writing documentation is not something new to me. Not that I have some grand list of credits on my resume. Just that it is not a new endeavor. Despite this, I could really use some help writing these Instructions. While it is not a particularly complicated program, it covers materials, knowledge and skills that I do not have readily available.

So, please... anyone who knows the subject in general, or BuildSkin (or UIBuilder) specifically, chime in with corrections, tips, warnings, etc. Particularly if it is something that I miss or just get wrong.

The only thing I ask is you change your message's Title to something like "Correction: Introduction" or "Tip: The Application Interface" or the equivalent. This allows reader's to follow the Instructions thread without getting lost in any other comments here.

Once new information, tips or corrections are presented, I will either edit the original message or include it in a future message, as deemed appropriate.

Before we go any farther, something has to be clarified. The BuildSkin application is a programming assistance tool designed to help remove some of the tedium - not to mention aggravation - involved in creating a functional skin. It does not, will not, and can not do all of the work for you.

How it can assist your efforts is by keeping your art assets (small images that make up the skinable interface) along with the XML code (that specifies the positioning of these images) organized. This makes it possible to create small changes at a time, to a single interface element, save it and be able to use it at a later time. Kind of like creating sub-routines or functions in programming. They're re-usable material.

These elements allow you to build a large skin a piece at a time. Then, once all your pieces are complete, you can put them all together and publish a complete skin. Another option is creating variations on a skin. Perhaps you want to create a fancy and minimal version of your skin. Or, perhaps you need to add another screen resolution due to lots of requests.

Another issue is taking advantage of other people's moments of genius. Maybe some other user has created an interesting skin or effect and released it as a stand-alone mod. You can take that element (art and XML) and place it within BuildSkin. Thereafter you could include that element in another skin. (Keep in mind that you must have the creator's permission in order to release or publish anything that contains their content.)

Regardless of which way you plan to use BuildSkin, it is much easier to mix and match various interface elements to create a unique skin.

Last edited by Modnar : 11-22-2011 at 02:12 AM.
Reason: Failed to include Title

The first thing that you need to understand about using BuildSkin is the application's interface. Starting it for the first time, you're kind of overwhelmed by all of the stuff on the screen. Don't sweat it too much because it is not as difficult as it seems.

It might not be obvious at this point but there are three areas within the application, these are:

Preview Area: The top portion of the application window, where it says "No Preview", is the preview area where you can see the results of your art and programming efforts.

Program Menu: Although it doesn't look like a normal program menu that you would see in your standard Windows application, the far right column is exactly that.

Skin Properties: The top half of this column is where you provide some basic skin information to BuildSkin in order to use it's features.

Help: The bottom half provides information normally found on a program's Help menu. It includes copyright info, a link to the webpage and program options (not currently working - can be manually entered via text editor).

XML Code Selection: The remaining portion of the screen (the bottom left), is where you will be doing the majority of your work within BuildSkin. These are a series of drop-boxes / combo-boxes, grouped by interface element type (interface elements, Panels, NPC Dialogs, etc), where the names of various XML programming code file names are listed.

These different areas of the screen can be seen quite easily if you run the application in a full screen / maximized window. The different areas will actually pull farther apart from each other - making the parts more obvious.

The Program Menu
Lets take a closer look at the Program Menu portion of the interface. This will be the very first portion of the program that you will use when creating your own skins.

Name: This drop-box contains a listing of all skins that you've used BuildSkin to work on. Since this is the first time you're using the program there are no skins listed yet. Although you can enter any name you want it should be noted that a unique name of 25 characters or less is mandatory for each skin you wish to create. While you can enter a longer name in the SkinDefinition.XML file, the LotRO client will only display 25 characters within the Options>UI Settings>Misc>Current User Skin field. Similar skins, with long names that differ only at the end, may get shortened in a way that does not allow telling them apart. For instance:

Screen Resolution: This drop-box contains several standard monitor screen sizes - the exact same sizes you find your graphics card supporting. LotRO has several default resolutions and if the skin you're building has a resolution dependent component, then this is the manner in which to limit your work to that resolution only. Leaving this field blank means your work is resolution independent. Optional.

Toolbar Base Width: The toolbar within LotRO is placed at the bottom center of the game - whether in windowed or full screen mode. However, internally this is accomplished by specifically setting the screen resolution size and performing a simple calculation. Optional.

Load: Pressing this button will load (or re-load if previously saved) a skin into BuildSkin. Use caution with this button as their is no warning message - you could lose any unsaved work if you accidentally click on this button. A unique skin name, entered in the Name field, is mandatory.

Build/Update: This button saves the various skin elements specified in the XML Code Selection portion of the program into a "SkinDefinition.XML" and "SkinDefinition.Buildskin" files within a folder with the skin's name. These files are saved on your hard drive into C:\Users\<username>\Documents\The Lord of the Rings Online\UI\Skins\BuildSkin\<skin name>. Again, there is no warning so if you make an error and click this button any previous version will be overwritten.

Edit Manually: This button, in conjunction with the Program Options settings (explained below), will load your preferred XML Editor program and pass the SkinDefinition.XML file to be loaded.

Delete: This button, once clicked, immediately destroys the entire skin listed in the Name field. The skin's folder and all material within is immediately deleted without sending a copy to the Recycle Bin. Thus accidentally clicking this button leads to irrevocable data loss. You've been warned.

The Help Menu
Immediately below the Program Menu, this portion of the program isn't used frequently, but it does contain some vital information.

BuildSkin on LotROInterface: This line of text is an internet URL link which, when clicked on, will load the BuildSkin page on the LotROInterface.com website in your browser.

About / Copyright Info: These lines of text provide some basic information regarding the program. Strangely, there is no version number shown so you can determine which version of BuildSkin you're running.

Program Options: Although not currently working, this function should allow users to establish their preferred program settings when implemented in a future version. These settings can be entered manually through any text editor within the file "BuildSkin.conf". This file contains a variable on each line in a specific order, as shown below:

Path to text editor: This line contains a full file path to your preferred text editor. If you do not explicitly set this, it should default to Window's Notepad location. For example: C:\Windows\Notepad.exe

Most recently selected skin: This line contains the last used skin name, as set in the Name field when the program was last closed, is kept here to automatically appear when BuildSkin is next used.

Available resolutions: For resolution dependent skins, this is a comma separated listing - without spaces - of all available resolutions. This must contain any valid game resolution including both the x and y max values. For example: 800x600,1024x768,1152x768,1280x720

Available toolbar widths: For resolution dependent skins, this is a comma separated listing - without spaces - of all available widths (x co-ordinate) only. For example: 800,1024,1152,1280

Use explicit defaults?: This line only contains the word "True" or "False" (without quotes) to indicate ...UNKNOWN...

Auto-load last skin on startup?: This line only contains the word "True" or "False" (without quotes) to indicate whether the last skin used is automatically loaded when BuildSkin is next started.

Last edited by Modnar : 11-23-2011 at 11:52 PM.
Reason: Name limit added

First off: On the whole, I think you did a pretty good job of documenting the program. Plus, it always helps a bunch too see it through a fresh pair of eyes. So thank you.

However, there are a few things that I can supply more details about:

1. The resolutions aren't really optional. Yes, you can leave them blank, but that completely leaves out (aka resets to default) the parts of the skin that require a resolution, like the toolbar.

>>> I am working on a way for the program to automatically calculate the toolbar width, so we can remove the toolbar resolution option. This would also make a resolution required.

2. Overwriting / Deleting: that was the intended operation - to update an existing skin, it replaces it with the new version. For deletion, I (as a programmer) do not know how to send things to the recycle bin. I didn't put confirmations, because those are always extremely annoying after the first few hundred times .

>>> I guess I could put an option to show confirmations - that wouldn't be too complicated to implement. Also, if you have just deleted a skin and its last configuration is still there in the option boxes, you can just click build to remake it.

3. Version Info: I had completely forgotten that!

>>> That will be there starting with the next release.

4. The Unknown Option: Explicit defaults. That controls whether or not the contents of the Default.xml file are placed in the skin. Its original purpose was to provide some stability over minor UI changes, but I can't upload the default files per LotroInterface rules, so it isn't really useful.

>>> I would take it out, but that would mess up all current config files. Then again, I could re-purpose that line to set the confirmations.

To anyone who has been waiting for this project to be continued, I want to apologize. While it was my intention to take some time off, to get through the Holidays, I had expected to post more at the beginning of the year.

Despite appearances, I did not abandon this project. Unfortunately all I got for Christmas was a catastrophic electrical system short - I've lost everything but my hard drive and chassis / case. A friend of mine is more of a hardware guru than I am and when I couldn't figure out what was wrong, I asked him to take a look. However, neither of us had replacement parts, making testing ridiculously slow.

By combining bits and pieces of older computers, I've cobbled together something I can use to communicate. Although I don't even know if this computer can run LotRO.

But I did want to stop in and let everyone know that it is my intent to continue this project.