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-11 A busy week with “real” work. A by-product (which isn’t Endogine-related, but I’m posting it here anyway) is the WebStats page: http://www.endogine.com/Tools/WebStats/Index.asp

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.