Endogine
By Jonas Beckeman
This page is no longer being updated. More recent
info can be found in this
CodeProject article
Some Endogine-based projects:
OpenBlackBox
PaintLab
Sometimes
there will be a shockwave player error after loading one of the examples. It’s
probably related to Xtras not being initialized properly, and it usually goes
away if you reload the page.
!!!!
A few of the Shockwaves (TestEditors1 and Paint) may crash your browser.
This seems to be related to the latest Shockwave player not being 100%
backwards compatible. They do work with player version 8.5.1. though.
!!!!
The player unstability, the
Yahoo toolbar issue, the incorrect installer instructions at Macromedia’s
download page (hey, XPsp2 has been around for a year!) and the fact that very
little interesting has happened with the Director product the since version
8.5, are some of the reasons I’m creating Endogine. After I’ve ported it to
.NET I’m finally going to leave the Macromedia world behind!
The more people we are
building this library, the quicker we can get out.
Quick links
C# version:
http://www.endogine.com/CS/index.asp
WebStats:
http://www.endogine.com/Tools/WebStats/Index.asp
Media Manager Xtra:
http://www.endogine.com/Tools/MMX/Index.asp
Endogine Paint:
http://www.endogine.com/Tools/Paint/index.asp
Log
Expected update: 2005-??-??, ResManager update, put/move/delete sprites on “the
stage” (implementing a generalized version of the Platform game level editor).
2005-08-01 I have discontinued
all Director development of Endogine, all effort is now put into the C#
version. I hope to have a decent beta in october, but v1.0 will have to wait
until I’ve ported it to .NET/C# 2.0 (and learned to take advantage of the new
feature set). After 1.0 I’ll work on adding a sound system and extensions for
managing 3D scenes (using a 3D engine such as Irrlicht or Axiom), enabling the
same animation/scripting/editing as the 2D sprites have.
2005-06-23 Update of C# Endogine, and a
new page for it: http://www.endogine.com/CS/index.asp
2005-05-30 Update
of WebStats. Most
importantly: Added hidden shockwave movie that detects RAM/Video/etc.
2005-05-29 Update
of C# Endogine.
A simple test version based on Direct3D is up and running.
2005-05-25 Update of WebStats – better
database, easier deployment, new visualisation
(graphs) page.
2005-05-22 Porting of Engogine to C# has
started. I’m considering three alternate routes for the first implementation –
GDI+, DirectDraw, or Direct3D. I’ve experimented with the two first, and I have
a simple prototype that has both implemented so I can switch rendering mode. 3D
is more complicated but obviously the way of the future.
2005-05-11 After a long holiday and some
other projects, I’ve finally gotten around to do some
optimizations of the core engine: a dirty rects system and many minor
improvements. Dirty rects don’t work so well with quads (rotated/skewed/etc sprites)
at the moment, but I’ll get to that. I’ve added three different rect
optimization algorithms to choose from, and more can easily be added.
2005-02-
2005-02-04 First test of Media Manager
Xtra at http://www.endogine.com/Tools/MMX/Index.asp
2005-02-01 External Media managing
system has come quite a bit. The application forced me to update old member
managing code – now I have a nice class hierarchy for member management.
Member.Bitmap derives from Member.ImageBase which derives from Member.Base etc.
IO classes are also much better now. A first version should be ready by the end
of the week, provided my other assignments don’t grow too much.
2005-02-01
Continuing to work on the Adobe SDK case, trying to get info from them and
other people developing PSD-related products. No luck yet.
2005-01-28 Started writing a MIAW Xtra for
managing external scripts and media. It continually checks the casts against
the external files and sync them. New/modified members
are detected and exported to file, and new/modified files will be imported. N number of backups are kept for each file.
2005-01-28 Added
classes IO.FileStream and IO.BinaryReader. I’ll adapt my file format readers so they inherit
from these classes, extending datatypes from basic Int32 etc to structs, IFF
chunks, Flash chunks and more.
2005-01-27 Began writing some wrappers
for FileXtra4 and FileIO that mimics .NET classes [System.IO].FileInfo,
.DirectoryInfo, .Directory, and also a System.Type.String class for string
manipulation.
2005-01-27 Trying
to get Adobe to tell me what I’m allowed and not allowed to do with the SDK. It seems I can’t make any of my parser
code public. I could even be restricted from creating a freeware psd importer/exporter
to go with my paint tool...
2005-01-25 Wrote some wrapper classes
for the ADO Xtra with .NET-like interfaces. Will be used in
search/group/filter interfaces for Resource and Scene Graph Managers.
2005-01-24 Wrote a prototype Photoshop
.psd file parser. Used together with freeware command-line tool psd2png it
gives much more control over importing psd files into Director than PhotoCaster
(effect layer settings, layer opacity and modes, etc). I consider adding
support for exporting to psd from Endogine and Paint (select a number of
sprites for export, and they will be created as layers in the psd file)
2005-01-23 Updated lots of old code to
.NET-lookalike.
2005-01-21 Painter update
2005-01-20 Painter update
2005-01-20 Lots of small changes in core
engine + adjustments towards .NET in Forms (widget) library.
2005-01-18 Painter
update
2005-01-17 Screen buffer
redraw works properly after resizing an Endogine MIAW
2005-01-17 Painter update
2005-01-16 Painter update
2005-01-16 Added prototype Scene Graph
dialog – with this, you can browse all the sprites in the scene hierarchy.
Ctrl-click on a sprite node, and the Property
Inspector for that sprite comes up. This will become a powerful tool later on,
and together with the Animation editor system, it will replace Director’s Score
window.
2005-01-16 The work
with renaming classes like their .NET counterparts continues
2005-01-14 Reinstated the Property
Editor (prototype). Ctrl-Shift-click on any sprite in any movie, and the PI pops up. Most of the properties are editable (even if the UI
is pretty bad and buggy), so try rotating, blending, and stretching the sprites
in the examples!
2005-01-13 Painter
update
2005-01-12 Painter update. Also moved
Painter-related stuff to a new page, http://www.endogine.com/Tools/Paint/index.asp
2005-01-11 Changed
script names and structure to be more in harmony with .NET
2005-01-10 Painter update
2005-01-07 Painter update
2005-01-05 Div. Updated my Shockwave
preloader system with a tool that modifies a template .htm/.asp/.aspx file (its
embed tags etc) so the preloader movie gets the correct size, color, title etc.
Links have changed because of this.
Let me know if you’re interested in the
preloader system, if so I’ll make a tutorial. And don’t be alarmed by the ugly
loader gfx, it’s easy to put whatever you want instead of the red bar/texts.
2005-01-04 Painter update
2005-01-03, Flash parser: Added a
section about the Flash parser I’ve started writing.
2005-01-03, Painter
update
2005-01-02, prototype
Resource Manager (cast replacement). Incorporated into Paint, for
selecting brush bitmaps.
2005-01-02 Animation/score editor:
spline editing inside editors. Added possibility to have Time
as a dimension in editors. Added option to test interface
to animate sprites or 3D models. See TestEditors1 below.
2004-12-28 Painter update
2004-12-26 Painter update
2004-12-26 core engine modification:
replaced Effect Sprites with Render Plugins architecture
2004-12-23 Painter
update
2004-12-22 Updated the Platform game:
reinstated the level editor (shift-E while playing)
2004-12-22 Added a Particle test. Shows
the overhead of the Lingo in Endogine’s current sprite engine, but also that
it’s easy to create your own quick’n’dirty sprite system to use together with
Endogine.
2004-12-21 Painter update
2004-12-20 Added Painter test in Source
section
2004-12-20 Added a ColorMultiply Effect
Sprite to the Outlines demo
2004-12-17 First draft
A project aiming at replacing Director’s
sprite engine, score, text member, paint window, parts of the Flash Xtra, and
the castLib window, among other things. A few features:
- hierarchical node structure – sprites
have parents and children. Like Flash, but more flexible.
- an animation
engine which can animate any parameter within any object.
- a budding Widget library (for creating
windows with menus, scrollbars, buttons, sliders etc)
- renders to 3D textures/planes and
images, as well as the stage
- supports rendering plugins – lets you
implement your own inks or special effects in Lingo.
- functionality to convert standard
Director movie scores to the proprietary animation format
The core engine is near completion
functionality-wise, but not optimized. The features in the list above will be
open-source.
Other parts, such as Paint tools,
Resource Manager (the replacement for the castLib), advanced graphical
animation editors may or may not be commercial products.
Within 3 months, I hope to have beta
functionality.
Within 1 year, I hope to have a C# port.
This is the main objective of the whole project, to create a multimedia/game
IDE for C#.
All documentation
and code is in pre-alpha test stage.
Background, feature overview,
intentions:
http://www.endogine.com/doc/Endogine.pdf
Simple code examples explained:
http://www.endogine.com/doc/GettingStarted.pdf
Technical details on how the system
works:
http://www.endogine.com/doc/Technical_Overview.pdf
To get information about updates, new
features and fixes, or if you want to contribute to the project by testing,
writing new widgets etc, contact me at info(at)endogine.com
Test shockwaves with source
All tests use the
core engine castlib (110 kB in .cct format)
The
core engine castlib is not available at this time for download. Contact info(at)endogine.com to get a copy. Until I have decided on some interface
matters (handler names, calling conventions etc), I don’t want the source to
spread outside my control.
Sprite + animation (4,5
kB)
http://www.endogine.com//sw/MiniTests/Test.htm
Source:
http://www.endogine.com/src/Test.zip
Effect sprites: Outlines and Multiply (4,1 kB)
http://www.endogine.com//sw/MiniTests/TestOutline.htm
Source:
http://www.endogine.com/src/TestOutline.zip
Effect sprites + event handling (arrow
keys to steer, SPACE to shoot) (7,7 kB)
http://www.endogine.com//sw/MiniTests/TestGame.htm
Source:
http://www.endogine.com/src/TestGame.zip
Some widgets (10,4
kB)
http://www.endogine.com//sw/MiniTests/TestWidgets.htm
Source:
http://www.endogine.com/src/TestWidgets.zip
Animation/score editor prototype (11 kB)
http://www.endogine.com//sw/MiniTests/TestEditors1.htm
Source:
http://www.endogine.com/src/TestEditors1.zip
This prototype lacks a lot of GUI: for
example, add/remove keyframes, add/remove sprites, tools for setting editors
axes (which property of an object they correspond to), double-click to start
editing a childclip – but I’ve completed the important programming of the
system.
2D animations created with this tool can
be rendered to a standard Director movie score, so those that feel
uncomfortable with a complete switch to the Endogine for their Director work
can still benefit from it. (Things that Director doesn’t support, like locZ
animation, will not be exported)
Painter tool test (57 kB)
http://www.endogine.com/sw/MiniTests/Paint.htm
More info, examples
and files at http://www.endogine.com/Paint/Index.asp
Particle test (7 kB)
http://www.endogine.com/sw/MiniTests/TestParticles.htm
Source:
http://www.endogine.com/src/TestParticles.zip
The Endogine is not very optimized. This
can be seen in this example, where the exact same animation is played, first
using the standard Endogine sprite, then a “quick’n’dirty” sprite. But, even
after optimizing, an Endogine sprite will always be a bit slower than a quick’n’dirtly
sprite. A full-featured sprite has many more things to consider and test for
each frame.
In the C# version, this will not be a
big problem even with tens of thousands of sprites, because the logic in the
engine will be something like a thousand times faster than the Lingo version.
Of course, that’s no help for Director
developers. But since the Endogine is so flexible and modifiable, you can
design proprietary quick’n’dirty sprites to increase framerate when needed.
Like in the example above: the quick’n’dirty sprites mix perfectly with the
“real” Endogine sprites (fps counter and button).
2005-01-03:
Flash parser test (34,5
kB)
http://www.endogine.com//sw/MiniTests/ReadFlash.htm
Endogine should support as many formats
as possible, so users can feel safe in knowing that the animations, shapes,
bitmaps and models can be used in other programs as well. I’ve started with SWF
(I have some problems with curve rendering as you can see in the example
above), but other possible areas are SVG, U3D, X3D, PDF, Illustrator, PSD. I
will almost certainly not add support for the scripting languages in formats
like U3D and SWF, though.
If you have any experience in parsing
SWF and want to help out, please contact me. I don’t even have the Flash
program to create test files with, so my progress is a bit slow…
Even if some SWF things won’t be
available through this parser, like video/sound and scripting, you will have
far more control over the bitmaps and shapes. You can individually modify any
vertice or bitmap, even while the animation is playing. When the file is
imported, it’s converted to standard Endogine sprites and animations. (In the
C# version, video/audio can be supported as well. Lingo is just too slow)
Design program rant:
There are many similarities between a
PDF or InDesign document and how sprites are arranged
in Endogine, so it’s probably not that complicated to create some layout
program functionality on top of it.
I would really like to create a fusion
of Director + Illustrator +Flash + InDesign + Photoshop + some simple 3D world
editor. There is so much common functionality on the 2D graphics side that they
shouldn’t have to be different programs.You should just bring up different tool
sets when you want to work on different aspects of your project.
An beta version of a game made with an
earlier version of the engine:
http://www.jobe.nu/Pub/Test/Platform/Loader.htm
While playing, press Shift-E to bring up
the editor. It works best when in Author or Projector mode, but I included it
here for fun. Use Help on the menu for some (old and outdated) instructions.
NOTE 1: In this version, I’ve tried
different optimization techniques. One is cranked up too hard, making graphics
disappear from time to time.
NOTE 2: The robot help animation at the
start menu is an example of the clip player showing an animation ripped from a
Director movie.
An artist made the animation with
Director’s traditional score, then I ran the ripping script which created a
field member with the “score” data, and finally, in the game, I assign this
data to a clip player. This clip can be moved around, rotated etc just like any
other sprite.