One standardized native file format for each different purpose, including one for plain text, one for still 2D images, one for still 3D scenes, one for compressed files, one for sounds, one for databases, etc; where all file formats contain a header that simply and unambiguously identifies the file format, and are entirely open formats (e.g. not restricted by patents, etc); and where all specifications can be downloaded from the same place, by anyone, for any reason.bewing wrote:Just ONE format? I agree with you in theory that it would be preferable, but what about compression and animation? I've always been telling myself that at the kernel level it would be necessary to support 2 at minimum. One for the static full-size bitmaps, and one for everything else. And choosing the format for the second was probably going to be even harder than the technical details of the first.
I haven't thought about 2D animation much yet. My first thought is that it'd be good to use morphing, so that you can generate a virtual frame that's part-way between one frame and the next (e.g. so that a 30 frames per second animation can be displayed flicker-free on a monitor with a 80 Hz refresh rate, or so that you can play the animation in slow motion without the animation becoming "jerky", or at any speed you like really). Of course morphing could be done by splitting an image up into triangles, then using a table to describe which triangles in "frame n" become which triangles in "frame n+1".
A "scalable triangle image" file (which hasn't become a native file format yet, but includes the standardized header that all of my native file formats share) that describes 12346 solid triangles costs 298056 bytes. Using my current native file format for compressed files, this compresses down to 131260 bytes. Of course this might be very good or it might be very bad, depending on how much detail those triangles describe.
Cheers,
Brendan