Not logged in, Join Here! or Log In Below:  
News Articles Search    

Submitted by Nedelcu Nicusor, posted on January 03, 2002

Image Description, by Nedelcu Nicusor

Those shotz are from the Nytro engine,NRUN demo player and NytroGene demo-editor . This demo-system is implemented on top of OpenGL, coded with BCBuilder 3 (wich rulez at RAD) . The engine is plugin based , a plugin may be a effect, a special object, a importer etc.

It uses OOP for good hieracly of classes. The engine is feeding from plugin modules; the plugins are not individual like in 3DSMAX, they are packed into a special DLL file (.nym) wich contains the exported plugin classes.

So the system is superscalar, u can add new plugins. The demo-editor, NytroGene has a treeview with the demo's objects: Materials, Textures , Sounds , Musics, Scenes (Objects, Lights, Cameras, Effects); a scene is in my own format (.n3d), a converter from any virtual scene format is provided in the Toolz menu, anyway until now I've wrote the ASC and the 3DS importer plugins. Each scene has a timeline, each object/camera/light/effect has tracks, those tracks controls object's properties, so the posibilities for animation are many; every object has properties like in Visual Basic. The music u can play is from any format, and can be syncronized with the demo. After a demo was made, it will be packed into a .npak file wich can be played with NRUN, and the .npak is deployed with that player for viewing. The demo editing is interactive, Flash-like...

Well that's all for today. Ah...almost forgot, free SOURCES , for any kind of use..


Image of the Day Gallery


Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.

January 03, 2002, 05:10 PM

Nice work... modular and everything... and free sources... :)

Happy Codin'!


January 03, 2002, 05:14 PM

Excelenta treaba!



January 03, 2002, 05:31 PM

Very cool ;) Nice work!



January 03, 2002, 06:37 PM

I like the idea of the plugins. Does is has any performance
pitfalls?! Am I right that plugins work this way: Let the
engine load any plugins into memory. Maybe a dll or a script or bytecode. (dll == bytecode??)
Then call a Init function. And the plugin will handle the rest. because the engine couldn't know how the plugin works, right?
And at the end the engine can maybe call a shutdown function of the plugin

Maybe someone can answer this message I've posted

Jeff Olson

January 03, 2002, 07:40 PM

A dll(dynamic linked libaray) isn't bytecode, think of it more as when you compile something and you include(think c/c++ here) say printf(bad example, so what :)), the compiler goes and links what it needs from the libaray with printf in it and then compiles a standalone executable. Whereas a DLL is a dynamix link meaning that when the program is compiled, it knows exactly what to send to it and how to use it, but until its used its not directly tied into the source code, so it knows where to look and what to send it and the code just does its thing. This allows you to update the dll but not have to send the entire program again.

Whereas the concept of bytecode is that its usually compiled into a code form that can be read by anything else which is then interperted of what its trying to do. Any example of bytecode would be Java. What you write and compile(and i use that term loosely) in Java is usable on any other platform because the program isn't set to handle only one platform or os, but because its a generic form of data it can be interpurted at runtime.


January 04, 2002, 03:08 AM

Nice, but _very_ buggy (at least on my system, which is normally very stable) and it made my system unhibernatable after giving me 5 nice crash dialogs when I tried to move one of the splines in the editor.. :(
(I'm using XP)

ps. After doing a reset I could perfectly hibernate again (can't live without that feature :).

Frans Bouma

January 04, 2002, 04:04 AM

No offence, but this isn't all new. Demopaja by Moppi Productions is a similar toolkit also with plugins, an editor etc.

Still a big amount of work though :) DemoGL alone (demosystem without a guibased editor) is 30.000 lines, I don't dare to think about the amount of lines this system will be :) I truely hope for you someone will use it for a big production: the 'demoscene' is still not eager to adopt demosystems made by others, 'Not Invented Here' is still a big issue, even when not having a reliable system means not releasing a demo at all. Demopaja is mostly used by Moppi itself, DemoGL by some french guys en swiss dudes, but both not in large productions so mainstream adoption of the system is not accomplished. Perhaps you'll succeed in that :) I'll have a look at your system and code later today.


January 04, 2002, 04:16 AM


Very impressive, and I live IOTDs with source.

Just a side note, in max you can put multiple plugins in the same DLL.


January 04, 2002, 04:35 AM

I've moved the download at , also download the GROOVE-O-MATIC demo, made with the editor, play it. U also can Files->Unpak it in a directory and open the project.


January 04, 2002, 04:43 AM

I shall say that the editor is first for me, for creating my demos, I've posted here for those who want the sources, and for those who want to implement a plugin system in their engine or another application, I am aware there are some bugs, of course they are, I didnt optimize it because of the lack of time, and because the project is more personal than public, I dont want you to use it, just take the sources if u want and study them, so the project is a experiment. That's all. 10x for the replies. ;)


January 04, 2002, 04:46 AM

U should download from the GROOVE-O-MATIC demo, play it with the NRUN player, and then u could unpak the groove.npak file with the NG editor , Files->Unpak in a directory, and after that just load the project, and play with it.


January 04, 2002, 04:54 AM

Is true, but I've started the developing before I have discovered DemoPaja, and I saw that DemoPaja is a bit restricted, in my editor u have multiple scenes, arranged very nice in a tree, the property box allows u easy modification, VB-like, and the plugins are very wide-purpose, anyway I dont want to compare it with demopaja, I'm not a demoscene expert, I'm in the scene from sep. 2000 , won a 2nd place , and a 1st place at some demoparties, but that's not the point, is just a succesful experiment, so just load the GROOVE-O-MATIC demo, and u'll see is nice, I'm not counting on super dooper fx, I'm counting on the demo feeling (see Tribes) ;). 10x for the reply.


January 04, 2002, 05:12 AM

Oh, well , didnt knew that, in MAX 2.5 also ?


January 04, 2002, 05:44 AM

I believe that feature has been there from the beginning.

The idea is simple, very much like COM. Instead of fixed functions or classes for the effects/etc the DLL has few functions which return the number of classes inside the DLL and a function which returns each classes descriptor or factory. The descriptors idea is to describe (for example which kind fo class, class name, etc) and create new objects (see ClassDesc in 3dsmax SDK docs, also make sure to see the "Memory Allocation" topic).

When I started working on Demopaja I used 3dsmax's plugin system as basis of my work, and didn't know anything about COM... I wish I had knew, life would be much easier today ;)


January 04, 2002, 06:11 AM

Yes. I know the plugin concept, and class descriptors, I use them in the engine... I'm not a 3DSMAX pro...


January 04, 2002, 06:27 AM

In last few days I have been experiencing some quite nice flashbacks (or more like, been there done that feelings :), etc. First I saw the Anark Studio ( and now Nytro.

It seems that the Anark guys have used and liked their AfterEffects (as I have as well). Just see the documentation (Learning..., Understanding..., I like that Adobe style :). The idea to go straight to 3D is nice too. IMHO The scripting sucks badly in Anark, though.

Nytro was a nice surprise as well. I can see that your philosophy for the UI and the rest of the system in general is a bit different than mine (I come from Adobe/VC++ world and you seem to like Borland(or what ever it's nowadays) stuff, for instance). And the difference may make you feel my Demopaja restricted and uneasy to use just the same way I find Nytro :) It took me many crashes and retries before I got something done. Any way, it's really refreshing to see that other people are working on same kind of projects and I hope we can exchange some ideas in the future.


January 04, 2002, 06:39 AM

Exchange ideas is a good...idea.. :))
Combine the editors to make a advanced one... some ideas from yours , little from me.. anyway is at your service :))



January 04, 2002, 09:24 AM

Hey another romainan, it always amazes me at the broadness of different nationalities on flipcode {hopefully you are romainan and didnt just use ro webspace ;). Very good editor by the way, I like how you made the spline based timeline control, and it looks very promissing, but like others said stikingly similar to demopaja, but i bet it was a good learning experience, and kickass that you released the source, not alot of people do that now a days.


January 04, 2002, 09:32 AM

Roman de la mama lui.

10x , I started developing this before I saw DemoPaja . It is a bit different ; anyway, indeed was a good coding experience, and I am not stopping here. ;))


January 04, 2002, 11:33 AM

Eu sou orgulhoso de seu furo do amor. Mostre-me mais de seu trabalho excelente. Os cavalos estão vindo. Quiet agora.


January 04, 2002, 12:10 PM

the page just gives me an error 404


January 04, 2002, 12:22 PM

The f2s site may be down from time to time... so try later...


January 05, 2002, 07:24 PM

Sorry for being so slow to reply.

Yes, in max when you create a plugin you have to dllexport a few functions, amoung them are these two

// This function returns the number of plug-in classes this DLL
__declspec( dllexport ) int LibNumberClasses();

// This function returns the number of plug-in classes this DLL
__declspec( dllexport ) ClassDesc* LibClassDesc(int i);

So you just return a value higher than 1 from LibNumberClasses() and then return the ClassDesc* for each plugin.

Now max has a naming convension for the DLLs ( DLE for exporter DLI for importer etc ) but that is more of a hint than anything else. There is nothing stopping you from putting an exporter, and importer, a material plugin etc in the same DLL.

This thread contains 23 messages.
Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.