I hope every one had a Merry Christmas/Happy holidays! I apologize that this release took like 4 months to produce, but it's with good reason: it is HUGE. But enough with excuses right? Let's get to the damn changelog (without a spoiler, cuz it deserves to be looked at)
(Items in BOLD are major features/changes)
Fixed opening Project didn't set timeline max value of state correctly
Fixed some rendering artifacts in the sprite view
Fixed play/stop animation tooltip showing "play animation" when it should read "stop animation"
Fixed being able to use the editor controls after deleting a state, causing possible crashes
Fixed bug where an embedding option was not saving to config file
Fixed some text alignments
Fixed bug where you could delete the default blank sprite/sound options in the resource lists
Fixed allowing one to open multiple code view windows
Fixed potential bug where sprite offsets could be adjusted during animation playback
Fixed size of File menu bitmaps being larger than intended
Fixed adding sprite or sound resources of the same name not replacing already loaded ones (instead they are silently ignored; might revisit this in the future)
Fixed allowing spaces in state names; all white space is now cleared from states when entered
Fixed the "play sounds" option checkbox not actually working
Project name now shows up in the titlebar when saved or loaded
Slight change to DECORATE code formatting (one less tab indent)
Reduced size of Code window a bit to accomodate (less screen cluttering)
Lots of code refactoring for cleanliness (still not perfect though)
Added bilinear filtering option to the Settings menu
Removed the minimum 2-frame requirement; states can now be created with just 1 frame (if it is meant to be an empty state with just a flow control: add it into your code manually)
Added mouse scroll wheel zooming and zooming capability
Added data columns to state and resource lists indicating additional information like frame count, dimensions, etc.
Added Undo/Redo system for most editing actions
Added Stencil option to hide parts of the sprite frame that go outside of the visible area
Added a current frame display in the status bar, indicating the current frame number in the timeline
Replaced +/- icons for add/remove frame with new custom ones
Increased range of X/Y offset spinners from +/-1024 to +/-65535 (kinda overkill but hey, it's allowed!)
Added notification in status bar for when a save occurs
Added TEXTUAL, a visual TEXTURES editor/compositor (see information below)
Allowed access to Resource controls without states, due to the new save format accepting this and the introduction of TEXTUAL
Added "Apply Sprite/Sound" buttons to the resource panels to remove the obscure method of utilizing them (though the old double-click ability is still present)
Added an application icon (wowie!)
Added a number of warnings for when potential errors or permanent actions are being taken. These warnings can be disabled in the Settings dialog
Added a sprite previewer that displays above the resource list (can be disabled in the Settings dialog)
Added drag and drop capability for sprites; one can now drop sprite images onto the appropriate resource list to load them
Added a Batch Action dialog which allows (off)setting of sprite offsets or tics across multiple frames at once
Added Copy and Paste actions for single animation frames
Added the ability to export animation states to an animated GIF image via the right-click context menu (with some limitations; see below)
Added an Import and Export options to the menu bar. Users can export loaded resources and custom textures to a .danres file which can then be imported into other projects as embedded data.
Added the ability to import SNDINFO lumps. Danimator will ask for the lump, and then a base directory to search for sound files, then it will parse the SNDINFO and load appropriate sounds with matching SNDINFO entries.
Space = play/stop animation
Ctrl+Space = play from start
Ctrl+S = Save
Ctrl+N = New Project
Ctrl+O = Open Project
Ctrl+Z = Undo
Ctrl+Y = Redo
Ctrl+C = Copy frame
Ctrl+V = Paste frame
Spoiler: What is textual?
Textual is a WYSIWYG TEXTURES editor that is part of Danimator.
While it is no replacement for a dedicated image editing program, Textual opens up a load of possibilities by making it extremely easy to work with ZDoom TEXTURES scripts.
Composite images made with Textual can contain any number of layers and have many different kinds of effects applied to them (within the limits of TEXTURES capabilities of course). If one were patient enough, you could theoretically make entirely new images from many small pieces of other ones. You can even use a large atlas of graphics and crop it down with Textual, which could save time editing.
Spoiler: GIF Export limits
Really the only actual "limits" are that: first off, the image is fully exported for the game's viewport. In the future, the option to crop down the image to a "best size" may be added, but for now, all GIF images will come out 320x200.
Second, the speed timing of the GIF animation may be off slightly. I tried to get this as accurate as I could with maths, but there is only so much one can do when converting from 1/35 second to 1/100 second, not to mention differences in how GIF animation handles timing compared to a game-engine implementation. However, the results still look pretty good:
I have also put together a small package containing 2 samples (at current): the pistol example from the screenshot, and an atlas example with a hand sheet set.
The package also contains a simple documentation guide going over the basic usage of the program and how to navigate it. Click here to download the sample and documentation package
Feel free to leave comments, feedback, bug reports, etc. Or if you'd like to submit a sample to include in the sample package, feel free to post it!
Spoiler: Beta 1 (original) post
So uh, some weird friggin' guy had requested somebody make an animation program. Some suggestions were tossed around, but no real solid program turned up. And while that was only a little over a month ago, I'm sure that same lunatic (and others like him) have been yearning for a program the likes he described for a long time....
Well, the waiting is over with.
Introducing:
Danimator A friggin' animation program!
"But where are the screenshots!?"
Behold: one should be all you need
Spoiler: Screenshot
In all seriousness:
I saw Weasel's request early August and thought "Why not take on the challenge, it could be fun!" I was particularly in the mood as I had been working on GUI applications in C# for school recently, and wanted to do one in C++.
So, let's get into the nitty-gritty. What features does this thing have? Features:
Create any amount of (uniquely named) states, much like your very own Decorate states!
Can play sounds alongside the animations
Import any number of Sprites or Sounds as resources, with supported image formats like png, bmp, tga, and sound formats like ogg, wav, etc.
Modify offsets in real-time by mousing over and click-dragging the sprite, or tweak them precisely with the spin button readouts
Add and remove frames of animation freely to the timeline. New frames will use the previous frame's offsets as a starting point
Change the duration of each frame (in Doom Tics), as well as what flow control will be set at the end of the animation
A simple crosshair for lining up sprites with the center of the screen
"Frame Ghost" (or as some might refer to it as "Onion skinning") allows you to see up to 10 previous frames in the animation (with increasing alpha values that are distributed across each previous frame)
Custom .danproj project files that will hold all your project contents for you
The option to embed sprites and/or sounds into the project files, so you don't have to worry about losing resources and things not loading when you misplace or remove them by accident
View individual states as DECORATE code, or export the whole project as DECORATE code to a file
Download Here from Coding Buff (version: Beta 1b) For 32bit or 64bit Windows Operating systems, requires an OpenGL-capable graphics card
Q/A (or just statements that I can answer)
This thing seems so buggy!
This is very much a beta, so please feel free to leave feedback or report bugs you find. That being said, I also hope this doesn't crash on anyone (it shouldn't).
Is this all, feature-wise?
I still have a massive feature list I will work on over time. If you are curious, these are some things I plan on (in no particular priority or order):
Spoiler:
Drag 'n' Drop onto Canvas to load a sprite/sound into the frame (and likewise for the resource lists)
Motion Tweening/Interpolation
pk3/Zip/WAD file support
Sprite composition and Exportation (as TEXTURES script)
Undo/Redo system (this is pretty important)
Import states from Decorate
Better Aspect ratio guides
Customizable backgrounds and/or background color
Zoom feature
Clean the shit out of the code base
Remove unnecessary libraries
Sprite/sound previews
Additional data colums in lists to show state frame count, sprite/sound size in bytes, etc.
Hotkeys for some faster editing
Right-click context menus for a few controls
Mass offsets (offset multiple frames at once)
I get some kind of missing dll error?
You might need to install the Visual C++ 2013 runtimes. I have included the redistributable packages with the zip file for convenience (in the /redist folder).
I want this on <Insert operating system here>!
That's probably a long ways off, if at all. I don't have a lot of experience on other Operating Systems. It's not entirely impossible though; I do have a Linux installation, and the main libraries I used (SFML and wxWidgets) are both cross-platform. But really, it's not a top priority.
Why not release the source code, then?
In time probably. Right now, I just wanted to get this thing done as fast as possible, and there is a lot of rule-breaking and band-aid fixes in parts of the source (quite shameful, really). The code needs a lot of cleaning up before I feel I can release it for people to try to work through--right now it's just an impossible mess by my standards.
When I start it up and add my first state, I get 2 empty frames that I cannot get rid of? What gives?
I admit: this was just a lazy fix on my end. I cannot set the max value of wxSlider to anything less than 2, so I simply enforced 2 frames minimum for each state. I'll get around to a better way of handling this sometime in the future, I just wanted this released already.
Also, it's advised you look over the output code of the Decorate to correct any oversights or excess frames you might find, although the output is very accurate for what you have in the editor.
These offsets are all wrong! You are a failure!
This is true, but one thing to consider: this program was meant for fullscreen png graphics; no internal offsets, no grAb chunks or anything like that. If you have these in your files, then the offsets that are calculated and produced will not match up in game. I recommend using SLADE or another tool to set the offsets to (0, 0) and proceed to work with Danimator from there.
~~~~~~~
Re: [BETA] Danimator -- "A friggin' animation program!"
Posted: Thu Sep 03, 2015 9:35 pm
by Wartorn
cool program would use again
Re: [BETA] Danimator -- "A friggin' animation program!"
Posted: Thu Sep 03, 2015 9:49 pm
by Xenaero
Damn this is cool.
Re: [BETA] Danimator -- "A friggin' animation program!"
Posted: Thu Sep 03, 2015 10:34 pm
by chronoteeth
this is fantastic!
also even the tic load out actually ends up being easily convertable to EDGE DDF code so this is like useful for any engine it seems
Re: [BETA] Danimator -- "A friggin' animation program!"
Posted: Fri Sep 04, 2015 1:34 am
by Alekv
Very useful, but what about the opportunity to add to the program siting elements HUD, and then display the coordinates as text? It would be easier to create HUD
Re: [BETA] Danimator -- "A friggin' animation program!"
Posted: Fri Sep 04, 2015 5:24 am
by XanderK9
Interesting! I was also wondering of something similar a while ago because I couldn't animate a weapon smoothly enough, especially due to my lack of experience and free time (well, it's more like attention span in that case ).
Re: [BETA] Danimator -- "A friggin' animation program!"
Posted: Fri Sep 04, 2015 10:57 am
by wildweasel
I'm unable to run this, as it needs some kind of Visual Studio debug DLL that I don't have easy access to (MSVCP120D.dll) and isn't included in the packaged redist folder.
Re: [BETA] Danimator -- "A friggin' animation program!"
Use the manual fix download and put the DLL in the same directory as the EXE, see if that works.
Re: [BETA] Danimator -- "A friggin' animation program!"
Posted: Fri Sep 04, 2015 11:19 am
by Theshooter7
wildweasel wrote:I'm unable to run this, as it needs some kind of Visual Studio debug DLL that I don't have easy access to (MSVCP120D.dll) and isn't included in the packaged redist folder.
Huh, I must have uploaded a Debug build by mistake Fixed the link, try again!
Re: [BETA] Danimator -- "A friggin' animation program!"
Posted: Fri Sep 04, 2015 11:39 am
by wildweasel
Cool, this is just about what I was looking for! I'll need to figure out how to add it into my workflow at some point.
Re: [BETA] Danimator -- "A friggin' animation program!"
Posted: Fri Sep 04, 2015 12:06 pm
by Seidolon
This looks really useful. I'm looking to make a program with C++ that allows you to easily create in-game HudMessage based menus, but I've lost focus on that because I am having trouble with simple things like loading images. Could you give me some pointers possibly?
Re: [BETA] Danimator -- "A friggin' animation program!"
Posted: Fri Sep 04, 2015 2:19 pm
by Hetdegon
Seidolon wrote:This looks really useful. I'm looking to make a program with C++ that allows you to easily create in-game HudMessage based menus, but I've lost focus on that because I am having trouble with simple things like loading images. Could you give me some pointers possibly?
Images? How about libsdl/libsdl2? They make it very easy and is very well-documented. I have this old snippet from an early project to load a file as a GL texture (before SDL2, and C, not C++, but should be simple enough to change)
using System;
using System.Drawing;
public class Program
{
public static void Main()
{
Bitmap img = (Bitmap)Bitmap.FromFile("test.png");
for(int w = 0; w < img.Width; w++)
{
for(int h = 0; h < img.Height; h++)
{
Color c = img.GetPixel(w, h);
img.SetPixel(w, h, Color.FromArgb(c.A, 255 - c.R, 255 - c.G, 255 - c.B));
}
}
img.Save("test_inverted.png");
}
}
Re: [BETA] Danimator -- "A friggin' animation program!"
Posted: Fri Sep 04, 2015 7:26 pm
by The Zombie Killer
The ImageMagick API for C++ (Magick++) is what I'd recommend