HomeUser Control Panel (unavailable in archive)ForumsTutorialsArt GalleryResourcesMaps

My Cinematic system WIP

09-06-2007, 04:19 PM#1
MaD[Lion]
im making a cinematic at the same time as im making a system for it.
I wanna know what you guys think about it from the vJass code below.
The code is a few seconds cinematic, actually the beginning of my cinematic.

The custom wait has an accuracy of 0.01 second.

EDIT: Updated code in my cinematic, so you can see more of it's accuracy

Collapse JASS:
//! runtextmacro NewScene("Scene1")
    call SmoothCam_ChangeFog(TerrainFog.Create(2000,8000,1,200,160,255),0)
    call ShowInterfaceForceOff( GetPlayersAll(), 0.00 )
    call PlayCameraSequence.Play(PlayCam[0],Player(0))
    call SetUnitAnimationByIndex(YoungMan.M.Particle.Unit,5)
    call SetUnitTimeScale(YoungMan.M.Particle.Unit,1)
    //! runtextmacro Wait("3")
    call OldMan.MoveWalk(GetUnitLoc(gg_unit_h000_0014),0,0,10,290,3)
    //! runtextmacro Wait("3")
    call SetUnitAnimationByIndex(OldMan.M.Particle.Unit,0)
    //! runtextmacro Wait("2")
    call PlayCameraSequence.Play(PlayCam[1],Player(0))
    //! runtextmacro Wait("2")
    call PlayCameraSequence.Play(PlayCam[2],Player(0))
    //! runtextmacro Wait("7")
    call PlayCameraSequence.Play(PlayCam[3],Player(0))
    //! runtextmacro Wait("1")
    call OldMan.MoveWalk(GetUnitLoc(YoungMan.M.Particle.Unit),-450,0,10,290,0.8)
    //! runtextmacro Wait("0.8")
    set OldMan.M.vA.z = -0.08
    call OldMan.MoveTo(GetUnitLoc(YoungMan.M.Particle.Unit),150,0,3)
    call OldMan.PlayAnimation(9,1.133,1)
    //! runtextmacro Wait("0.5")
    call OldMan.StretchAnimation(20)
    //! runtextmacro Wait("1.5")
    call SetUnitFacingToFaceUnitTimed(YoungMan.M.Particle.Unit,OldMan.M.Particle.Unit,0)
    call YoungMan.PlayAnimation(10,1,1)
    set YoungMan.M.vA.z = -0.2
    call YoungMan.MoveTo(GetUnitLoc(OldMan.M.Particle.Unit),-220,0,0.5)
    //! runtextmacro Wait("0.2")
    call OldMan.StretchAnimation(0.5)
    //! runtextmacro Wait("0.3")
    set OldMan.M.vA.z = -0.5
    call OldMan.MoveTo(GetUnitLoc(gg_unit_h000_0015),0,0,1)
    call OldMan.PlayAnimation(6,1.4,0.5)
    //! runtextmacro Wait("0.25")
    call PlayCameraSequence.Play(PlayCam[6],Player(0))
    call OldMan.PauseAnimation(1)
    //! runtextmacro Wait("1.25")
    call SetUnitAnimationByIndex(OldMan.M.Particle.Unit,0)
    call SetUnitTimeScale(OldMan.M.Particle.Unit,1)
    call YoungMan.MoveWalk(GetUnitLoc(OldMan.M.Particle.Unit),-80,0,4,290,2)
    //! runtextmacro Wait("0.25")
    call PlayCameraSequence.Play(PlayCam[4],Player(0))
    //! runtextmacro Wait("1")
    call OldMan.PlayAnimation(7,1.167,3)
    call PlayCameraSequence.Play(PlayCam[5],Player(0))
    //! runtextmacro Wait("0.75")
    call YoungMan.PlayAnimation(1,1.167,1)
    //! runtextmacro Wait("0.2")
    call OldMan.PlayAnimation(6,1.4,0.5)
    call YoungMan.MoveTo(GetUnitLoc(OldMan.M.Particle.Unit),80,0,0.5)
    call OldMan.MoveTo(GetUnitLoc(YoungMan.M.Particle.Unit),-200,0,0.5)
    //! runtextmacro Wait("0.5")
    call YoungMan.PlayAnimation(2,1.133,1)
    //! runtextmacro Wait("0.2")
    call OldMan.MoveTo(GetUnitLoc(gg_unit_h000_0014),0,0,1)
    call SetUnitFacing(OldMan.M.Particle.Unit,CorrectAngle(GetUnitFacing(OldMan.M.Particle.Unit)+120))
    //! runtextmacro Wait("0.2")
    call SetUnitFacing(OldMan.M.Particle.Unit,CorrectAngle(GetUnitFacing(OldMan.M.Particle.Unit)+120))
    //! runtextmacro Wait("0.3")
    call SetUnitFacingToFaceUnitTimed(OldMan.M.Particle.Unit,YoungMan.M.Particle.Unit,0)
    //! runtextmacro Wait("0.3")
    call SetUnitFacingToFaceUnitTimed(YoungMan.M.Particle.Unit,OldMan.M.Particle.Unit,0)
    call SetUnitAnimationByIndex(OldMan.M.Particle.Unit,0)
    call SetUnitTimeScale(OldMan.M.Particle.Unit,1)
    call SetUnitAnimationByIndex(YoungMan.M.Particle.Unit,5)
    call SetUnitTimeScale(YoungMan.M.Particle.Unit,1)
    //! runtextmacro Wait("1")
    call ShowInterfaceForceOn( GetPlayersAll(), 1.00 )
//! runtextmacro EndScene()
09-06-2007, 04:37 PM#2
Toadcop
OWNING ! GODLIKE ! HOLYSHIT ! AWESOME =) well btw the Chaos ball looks sexy ^^. well gj. when will be a demo ready ?
09-06-2007, 08:05 PM#3
Silvenon
GetPlayersAll() == bj_FORCE_ALL_PLAYERS :P, also it's more efficient this way:

Collapse JASS:
local player p = Player(0)
//! runtextmacro NewScene("Scene1")
    call SmoothCam_ChangeFog(TerrainFog.Create(2000,8000,1,200,160,255),0)
    call ShowInterfaceForceOff( bj_FORCE_ALL_PLAYERS, 0.00 )
    call PlayCameraSequence.Play(PlayCam[0],p)
    //! runtextmacro Wait("3")
    call OldMan.MoveWalk(GetUnitLoc(YoungMan.M.Particle.Unit),-650,0,10,290,3)
    //! runtextmacro Wait("3")
    call SetUnitAnimationByIndex(OldMan.M.Particle.Unit,0)
    //! runtextmacro Wait("2")
    call PlayCameraSequence.Play(PlayCam[1],p)
    //! runtextmacro Wait("3")
    call PlayCameraSequence.Play(PlayCam[2],p)
    //! runtextmacro Wait("6")
    call PlayCameraSequence.Play(PlayCam[3],p)
    //! runtextmacro Wait("4")
    call ShowInterfaceForceOn( bj_FORCE_ALL_PLAYERS, 1.00 )
//! runtextmacro EndScene()

I don't understand, what Chaos balls?
09-06-2007, 08:19 PM#4
Captain Griffen
Sexy. Someone finally made use of the idea of accurate 'waits' in some form.
09-06-2007, 10:27 PM#5
MaD[Lion]
silver: didnt you think it takes more time to write tat thing? :)

edit: and your jass example will cause error too
09-06-2007, 11:36 PM#6
Anitarf
Quote:
Originally Posted by Captain Griffen
Sexy. Someone finally made use of the idea of accurate 'waits' in some form.
Yes. "Finally" *cough*
09-06-2007, 11:59 PM#7
MaD[Lion]
Remember your cinematic system use custom functions to add actions into a list of timing. which means people need to know the function names or have to look it up.
Here you can call natives/functions directly ^^

---

My cinematic... ehm... i mean my Systems will allow many nice things, not only for cinematic, but for normal games too.
For cinematic it will have fancy stuff never seen before ^^
09-07-2007, 06:51 PM#8
Silvenon
Quote:
silver: didnt you think it takes more time to write tat thing? :)

I'm talking about efficiency here.

Quote:
edit: and your jass example will cause error too

Of course it will cause errors, there is no function or endfunction anywhere. If you want to play that way, your sample would cause errors too.

And Anitarf, nice coughing :)
09-07-2007, 08:43 PM#9
MaD[Lion]
my sample wouldnt cause error :)
At least i dont get any in my WE ^^

And about effeciency, we know its more effective your way but film makers dont care about that, only the system makers do. And my system is effecience enough so the artists/users wont need to think about memory leak, but can focus on the art itself ;)
09-07-2007, 09:00 PM#10
Captain Griffen
Aside from avoiding leaks, performance in cinematics isn't called for - it's basically a non-issue, especially trigger wise.
09-07-2007, 10:37 PM#11
MaD[Lion]
agree with griffen, since in cartoons sometimes the fps is 15 or even 10, and still its entertaining
09-08-2007, 02:10 PM#12
Silvenon
Quote:
Originally Posted by MaD(Lion)
my sample wouldnt cause error :)
At least i dont get any in my WE ^^

Grrr, your sample would cause errors! There is no function/endfunction in your sample, the error would be something like "statement outside the function". I just copied your sample and modified it a bit, so I don't quite understand how mine can cause errors (which it does, of course) and yours can't (yours does two, because you didn't post the whole code, that's why it's called a sample).

Quote:
Originally Posted by MaD(Lion)
And about effeciency, we know its more effective your way but film makers dont care about that, only the system makers do. And my system is effecience enough so the artists/users wont need to think about memory leak, but can focus on the art itself ;)

You said that only system makers worry about efficiency and you're making a system, so what the hell is your point?

Anyways, you obviously didn't pay attention on Anitarf's coughing, nor my comment on your camera system saying what Anitarf's said also (well, he didn't actually say anything, but a link is worth a million words).
09-08-2007, 02:36 PM#13
Alexander244
The following would presumably be fine (but we can't know unless we see the textmacro):
Collapse JASS:
//! runtextmacro NewScene("Scene1")
    local player p = Player(0)
    call SmoothCam_ChangeFog(TerrainFog.Create(2000,8000,1,200,160,255),0)
//...
09-08-2007, 04:15 PM#14
MaD[Lion]
alexander is right :)
The textmacro take care of all the function declarations and cleanups.

SO Silveron, too bad but my sample wouldnt cause error, and it's the whole code in a fresh new trigger file.
Too bad the error message you talk about would appear in your sample... *cry*
And about effeciency, this isnt a thread about my system, its about how the code looks, the system isnt posted here itself ^^ So ur offtopic too
09-08-2007, 04:49 PM#15
Anitarf
Well, let's say you wanted to tweak your cinematic after you watch it and you want OldMan.MoveWalk to be called half a second later, while all other actions should be called at the same time like they are now. You would have to change a whole lot of waits.