It's called "Yarns" and is, in essense, a 2D machinima creator.
For those who may not know, "machinima" refers to movies made in game engines.
The final product is (or will be) a sum of many parts. My attention has thusfar been focused on three important aspects: a character creator, a costume creator, and an animation editor.
This is the character editor. I'm building the interface to be keyboard-control only, so I implemented a ring menu to keep things tidy, neat and quick. As is (hopefully) obvious, the currently selected icon is the double-helix, which is the character's sex and skin color. All the "sex" variable really does is decide whether the character has boobs, but that may change later. The color box is highly subject to many changes, but you get the idea of what it does.
Using the other icons, you can change the character's nose, ears, eyes, mouth, hair (and hair color) and costume. The save icon is also already implemented; it allows for both saving and loading. I decided to keep the character editing and costume editing seperate so that characters could have costume changes that would not affect the rest of the character.
This is the costume editor. Currently, the "gloves" icon is selected. Please note the filenames listed in the scrollbox. When the editor is loaded, it places all of the filenames in a certain folder into a table, and then that larger table is sorted into several smaller ones based on string matches in said names. The same is true of the body parts in the character editor.
For that reason, anyone can add any graphics they wish by simply placing appropriately named png images in folders in their "Yarns" save directory (all of which Yarns creates at loadup). "Yarns" is being designed with extreme extendability as a top priority.
Also, notice the "_replace" at the end of the filename for the currently selected glove. This tells Yarns not to draw the character's hand while the current costume piece is loaded. That way, for example, you can have a character with short sleeves (therefore, the rest of the upper arm should be drawn), but you can also have long sleeves or costume pieces (such as the skeletal arms) that either cover the entire limb anyway or simply need the arm to be hidden.
There's another modifier on filenames, which is "female_". That's used for filenames on shirt graphics that are female alternatives (with breasts) to otherwise identical shirt graphics with an otherwise identical filename. Selecting the "female" sex in the character editor automatically loads the female version of the costume file's shirt if a female version exists.
The rest of those icons change the shirt (including the torso, upper and lower sleeves), pants (including the torso, upper and lower legs), shoes, mask, and hair (seperate from the character's regular hair in case the costume needs its own; simply leaving "None" selected for the costume will keep the character's hair unchanged). As before, save/load is already implemented.
Last but not least is the animation editor in its very early stages. So far, all I've implemented is the ability to select sliders for body parts and push them to alter rotation on the appropriate body part. Above you can see that I've twisted some of the parts around to demonstrate that it's functional. It has also demonstrated to me that I need to adjust the way some of the limbs are "pinned" together.
The editor will also include a frame selector (to which I'm planning to add a layer of onion skinning). Any adjustment to a slider will create a keyframe for the adjusted part inside that frame, and any unkeyed frames in between will interpolate (or "tween") the part's position between keys. There will also be a function to reset individual sliders inside a frame and delete the key.
I also intend to have an optional "auto-loop" function with an adjustable frame number so that during a chosen number of frames after the last key in the animation, all parts will interpolate back to their positions just before frame 1 so that things such as walk loops will be much easier and smoother.
I will also need to come up with a file format for animation, but I need to get everything else implemented before I can work out something efficient that won't require a lot of change.
Down the road:
The next few aspects of the program will be a set editor, a prop editor, a scene editor, and playback mode.
The set editor will be a very simple tile map editor for building backgrounds.
The prop editor is going to be a system that will allow the player to select a graphic out of a "props" directory and assign actions to it which will be passed as parameters to standard functions in the Yarns code. These will, for example, change the prop's graphic, play a sound effect, or move the prop.
The scene editor will be a system to tie everything else together. You'll be able to choose actors and place them where you want them, as well as selecting the set and placing props. You'll also be able to set the characters to move around and choose their animations.
Playback mode will be similar to the scene editor but will not include any of the GUI elements; it will simply play the scene.
I don't intend to even try to have video output since there are so many good freeware video capture tools (such as CamStudio).
Do I need help?
Yes I do! I have only actually created the bare minimum of graphics so far (for the purpose of testing implementation), and I really have little to no clue when it comes to programming. My code is sloppy and (I suspect) not highly efficient. If someone would like to help with optimization, I'd be willing to accept said help so long as any changes are well documented and well explained so that I can still read my own project's code
I certainly wouldn't say "no" to anyone who wishes to work toward implementing other modes, either.
tl;dr
Yeah, I guess I got carried away. But since you're still reading, here are my formats for characters and costumes, respectively:
Code: Select all
eyes=eyes_Default-Green.png
costume=Casual.txt
skincolor=10
sex=Female
nose=nose_Pointed.png
mouth=mouth_Red-Lipstick.png
haircolor=20
fhair=fhair_Brushed-Parted.png
Code: Select all
bss=ss_Cotton.png,19
shirt=shirt_Cotton.png,19
bsp=sp_Boxers.png,7
pants=pants_Elastic-Band.png,7
fss=ss_Cotton.png,19
fsp=sp_Boxers.png,7