My new documentation site and about where I'm heading :)

Show off your project created with Hollywood
User avatar
Allanon
Posts: 732
Joined: Sun Feb 14, 2010 7:53 pm
Location: Italy
Contact:

Re: My new documentation site and about where I'm heading :)

Post by Allanon »

A video showing the included examples and some features of the G2D library

YouTube video
User avatar
airsoftsoftwair
Posts: 5433
Joined: Fri Feb 12, 2010 2:33 pm
Location: Germany
Contact:

Re: My new documentation site and about where I'm heading :)

Post by airsoftsoftwair »

Quite impressive! Don't forget to post the news to other sites as well to spread the word about this great library!
User avatar
Allanon
Posts: 732
Joined: Sun Feb 14, 2010 7:53 pm
Location: Italy
Contact:

Re: My new documentation site and about where I'm heading :)

Post by Allanon »

Thank you Andreas! I will do, but first here is another shot of another work with the GLGalore plugin (not yet release and not yet completed) :)
The video is a bit laggy due to my laptop but look at the fps counter on the top-left corner :D

YouTube video
User avatar
airsoftsoftwair
Posts: 5433
Joined: Fri Feb 12, 2010 2:33 pm
Location: Germany
Contact:

Re: My new documentation site and about where I'm heading :)

Post by airsoftsoftwair »

Very impressive! There'll be a new GL Galore version soon with 64-bit support for Windows, Mac OS and Linux!
User avatar
Allanon
Posts: 732
Joined: Sun Feb 14, 2010 7:53 pm
Location: Italy
Contact:

Re: My new documentation site and about where I'm heading :)

Post by Allanon »

That's great!
Any chances to see GL Galore on Pi-like boards?
User avatar
airsoftsoftwair
Posts: 5433
Joined: Fri Feb 12, 2010 2:33 pm
Location: Germany
Contact:

Re: My new documentation site and about where I'm heading :)

Post by airsoftsoftwair »

Yes, the next version will include support for Linux ARM but on the Pi there's currently only an experimental GL driver which is not active by default. But it seems to work just fine.
User avatar
Allanon
Posts: 732
Joined: Sun Feb 14, 2010 7:53 pm
Location: Italy
Contact:

Re: My new documentation site and about where I'm heading :)

Post by Allanon »

Hi!

Here is another request made by @Bugala who was searching for a particle system for the Hollywood's Layers Engine, and I had a library ready for this task. He has asked to put it public so everyone can benefit from it.
I took some time to polish a bit the source code and to write some examples.

INTRODUCTION
The LSprite library is a toolset that uses Layers or Double Buffer technic to bring to the coder an easy to use sprite system, including a a nice particle engine. It supports layers (I mean display levels or planes), it is full supported in Double Buffer mode while with layers it has some limitations.
During the development I've switched to the GLGalore version because of the performances, in fact using OpenGL they are far better than the stock rendering libraries.
Said that, you will understand why the documentation is quite poor and some features are missing.
If there is interest I can backport the missing parts from the GLGalore version to this one, let me know if someone is interested.


Image

WHAT CAN DO THIS LIBRARY?
As said it features a sprite engine able to handle animations, paths, particles, custom actions (recurring or associated with timeouts), and so on... below you can see what functions, objects and methods it offers:

Sprite Engine Object
- pSpriteEngine:Create()
- SEObject:All_DrawOrdered(offsetx, offsety)
- SEObject:All_DrawUnorderedLayered(offsetx, offsety)
- SEObject:All_DrawOrderedInv(offsetx, offsety)
- SEObject:All_DrawUnordered(offsetx, offsety)
- SEObject:All_DrawUnorderedInv(offsetx, offsety)
- SEObject:FindSpriteByName(SpriteName)
- SEObject:YSort_Set(value)
- SEObject:Free()
- SEObject:All_Translate(x, y, Layer)
- SEObject:All_AttributesSet(Attributes, Layer)
- SEObject:All_AttributesAdd(Attributes, Layer)

Simple Sprite Object
These are sprites with a single frame.
- SimpleSprite:Create(engine, name, layer, attributes, filters, image, hardware, brushflag, islayer)
- SimpleSprite:CreateFromText(engine, name, layer, attributes, filters, text, textattrs, textfont, textstyle, textcolor, hardware, extraheight)
- SSObj:ActionAdd(name, atype, func, args)
- SSObj:ActionRemoveAll()
- SSObj:ActionRemove(name)
- SSObj:PathSet(Nodes, Loop, EndEvent)
- SSObj:PathSetNode(NodePos)
- SSObj:PathSetNodeNext()
- SSObj:FadeInvert()
- SSObj:FadeClear()
- SSObj:FadeSet(StartFade, EndFade, Time, Pulse, EndEvent)
- SSObj:ZoomInvert()
- SSObj:ZoomClear()
- SSObj:ZoomSet(StartZoom, EndZoom, Time, Pulse, EndEvent)
- SSObj:RotoSet(StartRoto, EndRoto, Time, Loop, EndEvent)
- SSObj:Update()
- SSObj:Draw(offsetx, offsety)
- SSObj:Hide()
- SSObj:Show()
- SSObj:Move(x, y)
- SSObj:Translate(x, y)
- SSObj:AttributesSet(Attributes)
- SSObj:AttributesRemove(Attributes)
- SSObj:AttributesAdd(Attributes)
- SSObj:Clone(CloneBrush, Hardware, IsLayer)
- SSObj:Free()
- SimpleSprite.Collisions.WithMouse:Set(OnCollision, OnCollisionStart, OnCollisionEnd)
- SimpleSprite.Collisions.WithMouse:Clear(OnCollision, OnCollisionStart, OnCollisionEnd)

Complex Sprite Object
These are sprites with a multiple frames an d multiple animation sequences.
This object includes all the SimpleSprite's methods.
- ComplexSprite:Create(engine, name, layer, attributes, filters, animations)
- CSObj:AnimStop()
- CSObj:AnimResume()
- CSObj:AnimStart()
- CSObj:Update()
- CSObj:AnimFrameNext()
- CSObj:AnimFramePrev()
- CSObj:AnimSetSequence(sequence, EndEvent)
- CSObj:Draw(offsetx, offsety)

Particle System Object
- ParticleSystem:New(engine, layer, emitter, gravity, textures, partinfo, Rate, Active, IsLayer)
- PS:EmitON()
- PS:EmitOFF()
- PS:Move(x, y)
- PS:Free()

Particle Object
- Particle:Create(PartSys)
- Part:Update()

INCLUDED TESTS as functions
TEST_01_Particles_And_Layers()
Shows how you can build a particle system using layers, here it is to have a quick idea:

Code: Select all

  /**** EXAMPLE 01 *********************
   * Using Particle System with Layers *
   *************************************/
   
  ; Enable the layers system
  EnableLayers()
  
  ; Create a Sprite Engine
  Local se = pSpriteEngine:Create()
  
  ; Disable Y Sprite Sorting
  se:YSort_Set(False)
  
  ; Load 2 brush we will use as particle for the first system (ps)
  Local bid1 = LoadBrush(Nil, "resources/blob.png", { LoadAlpha = True })
  Local bid2 = LoadBrush(Nil, "resources/blib.jpg")
  
  ; Now we create 3 particle systems
  Local ps  = ParticleSystem:New(se, 0, { x = 400, y = 300, Rate = 40, Quantity = 1 }, { y = 0.01, Velocity = 0.01 }, { Brushes = True, Items = { bid1, bid2 } }, { Life = 3000, LifeVar = 2000, Scale1 = 1, Scale2 = 0.1 }, 15, True, True)
  Local ps2 = ParticleSystem:New(se, 1, { x = 250, y = 300, Rate = 9, Quantity = 1 }, {}, { Brushes = False, Items = { "resources/blib.jpg" } }, { Life = 2000, AngleVar = 40, Angle = 10, Roto1 = 20, Roto2 = 90, Scale1 = 1, Scale2 = 5 }, 20, True, True)
  Local ps3 = ParticleSystem:New(se, 2, { x = 150, y = 300 }, {}, { Brushes = False, Items = { "resources/nuvola.png" } }, { Life = 1000 }, 10, True, True)

  ; This interval is needed to update constantly the particles
  Local rendering = SetInterval(Nil, 
                      Function()
                        ; Attach one particle system to the mouse pointer
                        ps.Emitter.x = MouseX()
                        ps.Emitter.y = MouseY()
                        
                        ; Updates all defined sprites
                        se:All_DrawUnorderedInv()
                       
                      EndFunction , 15)
  
  ; Wait for events until ESC key is pressed
  While Not(IsKeyDown("ESC"))
     WaitEvent()
  Wend
TEST_02_Particles_And_DoubleBuffer()
Shows how you can build a particle system using the Double buffer

TEST_03_SimpleSprite_And_Layers()
Shows how to build a particle system and a simple sprite using layers

ABOUT THE INCLUDED EXAMPLE
The included example shows in details how to build a particle system (as requested by @Bugala), all parameters are commented and explained.

DOWNLOAD
Download the library from here

This library is FREE but donations are welcome, especially if you need more docs, examples and backporting of the new features added in the GLGalore version.
It would be a great help for me if you could consider the possibility to support me on Patreon, I've updated the rewards adding more stuff!
My treasure box isn't empty yet, stay tuned! :D
User avatar
airsoftsoftwair
Posts: 5433
Joined: Fri Feb 12, 2010 2:33 pm
Location: Germany
Contact:

Re: My new documentation site and about where I'm heading :)

Post by airsoftsoftwair »

Very interesting project, looks great!
User avatar
Allanon
Posts: 732
Joined: Sun Feb 14, 2010 7:53 pm
Location: Italy
Contact:

Re: My new documentation site and about where I'm heading :)

Post by Allanon »

Hello all!
I've published a video showing my DemoEngine for Hollywood, you can see it here :
https://youtu.be/m5IrJiZzEDo
The quality is not very high because my notebook is not fast enough to run the demo showcase and the recording software at the same time so I've reduced the demo frame rate.

I've used this library to make a demo for the IndieGO! campaign, here is the demo running on a Raspberry Pi3 :
https://www.youtube.com/watch?v=b54VqHmwBOo

List of classes and methods available at this time:
CLASS DEng

Code: Select all

    .MakeGradient(colorlist, steps)
    .MakeCopperBar(params)
    .MakeGradientTable(colorlist, steps)
    :new()
    :init(params)
    :setClearColor(ARGB)
    :draw()
    :objectAdd(object)
    :objectRemove(object, free)
    :objectCleanup()
    :objectSwap(object1, object2)
    :stackPushUp(object)
    :stackPushDown(object)
    :stackShiftUp()
    :stackShiftDown()

CLASS DEng.Twister

Code: Select all

    :new(params)
    :draw()

CLASS Deng.Plasma

Code: Select all

    :new(params)
    :update() - called by :draw()
    :draw()
    :free()

CLASS DEng.BMFont

Code: Select all

    :new(params)
    :free()

CLASS DEng.BMFText

Code: Select all

    :new(params)
    :draw()

CLASS DEng.Shape

Code: Select all

    :new(params)
    :draw()

CLASS DEng.Brush

Code: Select all

    :new(params)
    :clean()
    :hsplit(size)   Return a table of brush objects
    :vsplit(size)   Return a table of brush objects
    :hvsplit(size)  Return a table (matrix) of brush objects
    :free()

CLASS DEng.RainbowLine

Code: Select all

    :new(params)
    :draw()
    :free()

CLASS DEng.Starfield

Code: Select all

    :new(params)
    :draw()

CLASS DEng.ScreenBuffer

Code: Select all

    :new(engine, params, objList)
    :draw()
    :free()

CLASS DEng.RotoLines

Code: Select all

    :new(params)
    :draw()

CLASS DEng.Hyperspace

Code: Select all

    :new(params)
    :draw()
    :free()

CLASS Deng.Waves

Code: Select all

    :new(params)
    :draw()

CLASS Deng.C64Raster

Code: Select all

    :new()
    :draw()
    :free()

CLASS DEng.Checkers

Code: Select all

    :new(params)
    :draw()

CLASS DEng.DotScroller

Code: Select all

    :new(params)
    :draw()

CLASS DEng.MCircles

Code: Select all

    :new(params)
    :draw()
    :free()
At this time the library is available under request (free for Patreons, asking a pay-as-much-as-you-like for all the others), the documentation has not been written yet because I'd like to know if there is interest before starting to write docs.
So if you are interested let me know!
User avatar
airsoftsoftwair
Posts: 5433
Joined: Fri Feb 12, 2010 2:33 pm
Location: Germany
Contact:

Re: My new documentation site and about where I'm heading :)

Post by airsoftsoftwair »

That's very cool, the return of the demo maker! I think this product could be marketed as the first demo maker on the Amiga that is RTG-compliant and doesn't bang the hardware :)
Post Reply