Game Development Community

Theora problem

by David Murray · in Torque Game Engine · 04/24/2006 (5:56 am) · 3 replies

Hey,
I'm having some trouble with Theora playback in TGE. In the world editor I have an invisible GuiTheoraCtrl 800x600 over the world editor GUI. There is a trigger in the world editor which sets a file to play in the TheoraCtrl when the trigger is entered.
http://www.garagegames.com/mg/forums/result.thread.php?qt=41433

This works fine but the Theora file is jumpy. The framerate slows right down. Is this due to Torque rendering the background behind the TheoraCtrl?Is there a way to stop the world editor rendering while the video is playing?Or is it simply a filesize issue - the theora video is 30 MB!?

#1
04/24/2006 (6:35 am)
Unfortunately you can't stream a theora video file like you can with an audio file (which means all the work is done in the loading of the mission as opposed to on the fly in game). Therefore that 30mb theora file of yours is responsible for your slowdown.

I suppose when you trigger the video to play you could run this cmd
$timescale = 0;  //completely stops the game timer (pause)
That shouldn't affect the video and will prevent a drop in frame rate. Just set it to true, ie '1', to restart the game. You would probably need to run a schedule (according to how long the video lasts) in order to know when to activate that cmd.

Alternatively and much easier would be to flag the timescale to '0' upon entering the trigger and reset it to '1' when the video is finished playing and flagged as 'done'.

I haven't tested this but in theory it should work, let me know how you go.
#2
04/24/2006 (8:19 am)
Thanks for the quick reply Tim. I've tried the $timescale method before. It improves the playback of the video slightly but it fails to realise when the video is finished and $timescale = 1; doesn't work. How does the time conversion in Torque work?Would I have to schedule it in milliseconds? The video is about 1 minute 20 seconds.
#3
04/24/2006 (8:25 am)
Yes, 1000 = 1 second. So 1 min 20 would be 80,000.

I can't think of an easy way around your problem if the old timescale trick isn't going to work.