Okay people guess what!! I’ve finished my cut-scene player for blender games!!! It allows you to play REAL movie files (AVI’s, MPEG’s etc.) from any point inside a blender game, which means no more slow, tedious animated-UV-texture-on-plane cut-scenes!! It only works on Windows at the moment but a Linux version is in development.
Its simple for any blender user to use, even those who don’t like to fiddle with python. Once you’ve set it up in your game using the simple step-by-step instructions included, you simply put the name of the movie file you want to play in an object property and run one simple python controller!! Long cut-scenes can be annoying if you can’t skip them, so FMV-ed allows players to skip the cut-scene using the Esc key, or pause it using the space bar.
You can download it from Edit: link changed, see bottom of post
Let me know what you think, and comments, suggestions, problems etc, post them up!
Thank you very much. It’s guyz like you that keep developing tools and improvements for Blender that make it possible for the rest of the artistic community develop their creativity and skill base. Good on you, and i look forward to trying out your FMV cut sceens in my games!!!
this is excellent! i didnt think this day would come so soon thank u!
one bug ive found… my res is 1024 x 768, when i save an exe at fullscreen and 640x480, the movie plays in the bottom right corner, mostly cut off, its not playing centered… is there any way you could fix that?
Yeah this is one problem with it i never thought of - it won’t display properly if the resolution of the movie file is greater than the screen resolution set by the blender exe. I could get my program to change the resolution its self then change it back again, but you’d need to somehow tell it what resolution blender is running at, and I’m not sure how to change the screen resolution in VB anyway. :-? Any1 know how to do this??
OOOOOOOOH! I’ve been waiting for somthing like this to come out!
I haven’t used it yet, but I’m sure it’ll work wonderfully.
One question: In the readme, does Blender/Game EXE mean the Blender EXE, the saved runtime EXE, or both?
Thanks again!
it won’t display properly if the resolution of the movie file is greater than the screen resolution set by the blender exe.
the movie im playing is only 320x240, and the res is 640 480 so no real resizing necessary, its just the centering that needs the fixing… is there a way to do that?
oh, one more bugger =( again, at full screen play, the movie is not ALWAYS on top… sometimes it sneaks behind the blender game and continues to play… in regular play its always on top though, any way to fix that as well?.. oh if u could fix these 2 bugs, this player would be the ultimate!!! :o
Option Explicit
Private Declare Function EnumDisplaySettings Lib "user32" _
Alias "EnumDisplaySettingsA" (ByVal lpszDeviceName _
As Long, ByVal iModeNum As Long, lpDevMode As Any) _
As Boolean
Private Declare Function ChangeDisplaySettings Lib "user32" _
Alias "ChangeDisplaySettingsA" (lpDevMode As Any, _
ByVal dwFlags As Long) As Long
Const CCDEVICENAME = 32
Const CCFORMNAME = 32
Const DM_BITSPERPEL = &H40000
Const DM_PELSWIDTH = &H80000
Const DM_PELSHEIGHT = &H100000
Const CDS_UPDATEREGISTRY = &H1
Const CDS_TEST = &H4
Const DISP_CHANGE_SUCCESSFUL = 0
Const DISP_CHANGE_RESTART = 1
Const ENUM_CURRENT_SETTINGS = &HFFFF - 1
Private Type DEVMODE
dmDeviceName As String * CCDEVICENAME
dmSpecVersion As Integer
dmDriverVersion As Integer
dmSize As Integer
dmDriverExtra As Integer
dmFields As Long
dmOrientation As Integer
dmPaperSize As Integer
dmPaperLength As Integer
dmPaperWidth As Integer
dmScale As Integer
dmCopies As Integer
dmDefaultSource As Integer
dmPrintQuality As Integer
dmColor As Integer
dmDuplex As Integer
dmYResolution As Integer
dmTTOption As Integer
dmCollate As Integer
dmFormName As String * CCFORMNAME
dmUnusedPadding As Integer
dmBitsPerPel As Integer
dmPelsWidth As Long
dmPelsHeight As Long
dmDisplayFlags As Long
dmDisplayFrequency As Long
End Type
Private Sub Option1_Click(Index As Integer)
Dim x&, y&
Select Case Index
Case 0: x = 800: y = 600
Case 1: x = 1024: y = 768
Case 2: x = 1152: y = 864
End Select
Call SetScreen(x, y)
End Sub
Private Sub SetScreen(ByVal x&, ByVal y&)
Dim Result&
Dim Dev As DEVMODE
Call EnumDisplaySettings(0&, ENUM_CURRENT_SETTINGS, Dev)
Dev.dmDisplayFrequency = 90
Dev.dmFields = DM_PELSWIDTH Or DM_PELSHEIGHT
Dev.dmPelsWidth = x
Dev.dmPelsHeight = y
Result = ChangeDisplaySettings(Dev, CDS_TEST)
ChangeDisplaySettings Dev, CDS_UPDATEREGISTRY
End Sub
Hmmm… it should center itself automatically, thats what I designed it to do. I haven’t tried it at that resolution tho, so maybe it doesn’t self-center properly at that resolution. :-? As for it ‘sneaking’ into the background, it shouldn’t do that unless you ALT+TAB it. I suppose I should make it appear ‘always on top’ tho. any1 know how to do this?
Thanks for the code S_W! Its a bit confusing tho, you seem to declare loads of variables you never end up using. :-? Have you actually got that workin? or is it just somethin you can’n’pasted from a tutorial?
agrif: Sorry for the confusion, the Blender/Game EXE directory means the blender EXE directory if you’re running it through blender, or the games EXE directory if you’ve compiled your game to an EXE.
Right I’ve got a fair bit of coursework to get done for uni by the end of the week, so i’ll get workin on improving fmv-ed after that.
so sorry, but i have another question. When i ty to use your script, it says “A requires .DLL file, MSVBVM60.DLL, was not found”. Do i need this or is my computer just being weird?
Thanks much for the script!
Yeah FMV-ed requires the VB6 runtimes to be installed on your computer. I didn’t include this in the readme file because I assumed that most modern windows systems would already have them. You can download them here (3.5MB):
If you didn’t already have the VB6 runtimes then you might also need to download the Windows Media Player OLE Control which FMV-ed uses. I’ve uploaded it here (378kb):
Do you mean WMV’s? Yep it can, it can play anything that Windows Media Player can play. and yep it works with EXE games, just follow the instructions in the readme file.