Gmmovie Dll - Extended Audio And Video Playing!

Here's my newest DLL: the GMMovie DLL. This DLL allows extended possiblities of playing audio and video files in your games (although i don't really reccommend it for audio files, there's better DLL's for that.) It includes functions to show them (audio files are blank) either in your game or in an external popup window. This DLL won't pause your game while its playing, great for trailers, etc that may do other things while playing a cutscene. It's a little hard to explain, just download it and try it out! Its only 21kb. Download here: http://ravotus.nfshost.com/GMMovie.zip It's just in its beta stage right now so it may have bugs. Also I kinda hurried through the help file so if you find any errors please report them also. Ok well enjoy! One thing: This uses MCI so you could do it directly from Game Maker. However, I am not sure about speed imporvment but this is also easier and is well documented. Generally things with DLL's are faster so I think this could be faster but I'm not sure. Just please don't go around saying you could do most of it with MCI. If you know you can, then go make your own scripts, etc.

you know whats funny? for a long time people complained about the crappyness of gamemakers movie player, and now they got a dll that fixes the minor problems (i know from what i told Nintendofreak88 that there are also things you cant do from the mci commands in gml) and from what ive seen its a ton easyer to use than mci commands. just thought id say that.

Thanks for the great comments guys! As far as the dvd thing goes, Shaltif, I think that would be fairly hard. I think you could access the data on a dvd like any other drive in C++ or Assembly, but I'm not sure. I can check on that a bit more.

You are doing nothing wrong, i used it for a hile, the problem is i know how to do all of these with MCI_command, so i gave up, maybe thats why a few people arnt using it, maybe if you added something extra to it that MCI_command() cant do more people might download it.....

REPORT FROM SERBIA ABOUT GMMovie Dll...Hi...I try this thing...Work wery good,but???Now look this: *.vob some *.avi-es playing well, mpeg2/3(DivX2 and DivX3) playing well...I took about video formats...But any format with harder compresion,playing tooooo quick ,without sound...I was trying everuthig,but I can't solved this problem.I't is posiblle , to inplement subtitle in moovie, only if you play movie on GM window and put some place for subtitle down...My question is...Why this playing so slow. I was try on Win98(AMD 500 Mhz-terrible ; AMD 2000+ playin very bad... with one bug...After couple minutes picture come smoutlles...And just look what procesor do...98 - 100% ocupate with this dll...)Similar things was repeat on other OS (WIN 2000 ; WIN XP-Pro ; )...On every of these OS procesor work with maximum own resources...Why???, And How to limit this to 20 - 30%...Thanks !!!

P.S. I have not my site but...If you interesed i can send to everyone my own ZMAJ Player who work only with this dll...With subtitles,of course...Everuthing is on my language but I hope you will understand the code...Of course any messages of player you can changing on script "srpske_poruke"if you translate these messages on your language...All program with free code is about 1Mb on zip format...

Very nice. I've tested it within a GM game, and it opens and autoplays nicely in any coordinates/size given. And the game continues playing as well. (I haven't checked it with views[] yet, but I think it should be able to handle that correctly.)

Two things I noted:
(1.) It does not auto 'close' when the video ends.
(2.) It does not 'follow' an object when given dynamic x,y coordinates. (eg. GMMovie_SetPosition(sampleMovie,mouse_x,mouse_y); )

It starts at the relative coordinates and stays there during the step event. This would be nice if it could be allowed - so we could have 'animated' videos come floating in. (eg. Powerpoint).

Question: Will it work with dynamic SetSize()? I haven't tried that either - so we can 'scale' the video as needed. Useful.

Glitch: When I skip the question "Do you want to open it in a new window?" And allow it to play directly if file exists, then the video opens (for 1 frame - or duration of LOADING of the movie file!!) at its original size, and THEN resizes and sits itself in the x,y coordinates I had defined ) and causes a glitchy jump. Not good if we are to play ingames movies. Cannot show something 'jumpy' onscreen whenever a video is to be played. (eg. Mech Commander 'comms' (mission transmissions) chatter in a specified view while game is being fought!)

Please set it to 'load' in background if possible.

Overall - fantastic. MUCH needed by the GM community. Thanks. And keep up the great work.

SSNautilus, the first suggestion can be done easily already. Just check it's progress in a step or alarm, when it is complete (or 100% done) then you can use the close function.

The video your seeing is actually it's own window being cast over or embed into the GM window. If you ever noticed, if you right-click a video being played, you get the MCI default video options.

You probably could get away with making your own "dynamic" set position if you knew the window_handle of the video window. Then using some WinAPI manipulation, have the video move. I'm not sure tho if that would work when "inside" the GM window.

I never noticed the glitch you spoke of. Try setting it's position, size, etc before playing the file. This should fix that "glitch".

As for loading in the "background", I don't see that being possible...

Specify a video file (much) LARGER than 50x50. You'll see that a window first appears which is BLANK and is much larger, and then it switches to the 50x50 size. Basically, it stays blank till the file is completely loaded. This should be done in the BG - preferably without causing any 'hiccups' in GM.

Now take look ...If you simultaneosly play GMMovie_Play(movie) (only video...very important thikg is to set volume to 0 GMMovie_SetVolume(movie)) and sound separately thrySXMS.dll (SXMS_C_Play) you will be ablle to watch DivX format movies...

Also very important is to put volume back (to 1000) after finising moviethry GMMovie_SetVolume(1000,movie)becouse when you set volume to zero(0)you set on main mixer of your computer WAVE out to zero(0)

Of course you mast to have some DivX codec(I have last Divx-pro and ffd-show)

I was sad before that DivX movies run to faaaast and without soundThis is simply solution to catch the rabit...!!!???Gretings from ZMAJHttp://zmmaj@hotmail.com

[quote name='Nintendofreak88' date='Nov 1 2004, 01:28 PM']Thats interesting although I've already played movies encoded with the DivX codec on GmMovie without SXMS... But yeah you have to have the codec.I am just think...Does nobody know how to wrote one dll for DivX format...I don't know C++ even tip,but someone who knows C++ culd seehow that work on everu LINUX sites...They have all on free code...(even I have free DivX code wroten on C ++)but I don't know how tousing them on GM...

Ehh...sorry to say it but.. it sucks..at least for me.
Okay,I'll state my reasons.
-It just summons mci commands
thus if you lack codecs,you can't play movies
-Some mci commands do not work
-If you right click on the movie a context menu appears
with the mci actions
-The cursor it's shown
-When you zoom in then sometimes you can't zoom out.
-There's no command to add a movie control/slider?

It extends GM in an area that is still lacking, and that is all that matters

Actually, a few of your "points" can easily be corrected.

If you lack the codecs, you can easily get them. The internal GM video functions also require the user to have the correct codecs installed. So this isn't really a factor, since your only alternative to display video is GM itself, which has the same issue.

So far, all the MCI commands I've tested worked fine. I'm using this in my SXMS Player 3.0 and done quite some testing with it. If you could explain which functions aren't "working" I assume NintendoFreak88 (and myself) would greatly appeciate it.

This has been taken care of (in a future release). I'm not sure if NintendoFreak88 released this version yet or if he is still making updates, but the user will have the ability to "shut off" this default menu.

It depends on the "enviroment" whether the cursor being shown is a bad thing. In my media player, having the cursor display is a plus. Having the cursor display isn't a huge problem. If the user wants to see the image, just move the cursor aside, that simple.

I haven't had any issues with the zoom feature, and I've done many tests with it. Could you explain in more detail how you caused this issue to occur?

You can easily make your own "controls" or "slider" in GM. The nice thing about this dll is that it actually gives the ability to have the video display in the actual GM window. And by using the return functions, you can easily make your own "interface". In the SXMS Player 3, you control the video the same way you control all the other media, so the video having it's "own" controls or slider would look out of place. (Just an example)

Conclusion:

So I wouldn't go as low as saying "it sucks". Instead, try something a little more contructive (ex: It's a good idea and it has potential, but here are a few points I thought could be improved) or something of that nature.

There are two things I would like to see in a future release, and that is the ability to set the video to fullscreen with a function call rather than having to set the video's size to match that of the screen and set the window (GM's or it's own) to "Ontop". And the ability to switch from embeded to it's own window (and vise versa) on the fly.

A very good job NintendoFreak with the current product. I am happy to say it works great in my media player setting. Now if I can just get DVD support to be just like this movie dll

Lol thanks for the nice comments Shaltif and for defending me (I owe ya one!) I really didn't think people cared about this anymore. I might release the new version (or add some more stuff) if people are still actually interested
(shaltif I might try to get that other stuff done for you anyway.)

Hey , the dll is great , it has good use !! I'using it i my RTS game , but I have a question :
Can you please tell me if it is possible to make a dll that lets you play avi files in the background , in sead of using large gif files ?

okay.. not anyone wants this dll for a media player, so the cursor is a minus to me(While I was playing Resident Evil 2 [commercial game] yesterday I noticed that in videos no cursor was shown?)

When I opened a clip of Silent Hill I zoomed and zoomed in and I wasn't able to reach the main options anymore so to Play Stop n Stuff.

That the in-built Video Player of gm needs the codecs too,yes that's true.but why then don't you make a dll that it doesn't need them,it just supportsinternally mpeg,avis,wmv and any other format just like the jmod dll?

Plus I don't need the context menu when I right click on the movie.

Ah, yes a detail on your dll's version information you write:'Gmmovie dll for Gamemaker'I don't think anyone wants to show to people that the game was made with GM?Isn't this one reason that people register?(To get rid of the gm logo?)

okay.. not anyone wants this dll for a media player, so the cursor is a minus to me(While I was playing Resident Evil 2 [commercial game] yesterday I noticed that in videos no cursor was shown?)

When I opened a clip of Silent Hill I zoomed and zoomed in and I wasn't able to reach the main options anymore so to Play Stop n Stuff.

That the in-built Video Player of gm needs the codecs too,yes that's true.but why then don't you make a dll that it doesn't need them,it just supportsinternally mpeg,avis,wmv and any other format just like the jmod dll?

Plus I don't need the context menu when I right click on the movie.

Ah, yes a detail on your dll's version information you write:'Gmmovie dll for Gamemaker'I don't think anyone wants to show to people that the game was made with GM?Isn't this one reason that people register?(To get rid of the gm logo?)

It is very hard to make something that doesn't require something to already be installed on the operating system. Heck, if the user doesn't have directX, your kinda in a bind already. Most software requires that you have the pre-installed componets for it to work. Codecs are no different. If the user doesn't have the things required, they either 1, don't use the software, or 2, update so they can use the software.

This is why the thing called "minimum requirements" was created, it tells the user what they require in order to use the software. It's up to the user to have the requirements, don't limit your games based on the lowest end computers around (but don't go making your game for the highest spec computers either). Most people will have the codecs, and if not, well, they might have issues playing the GM game anyway, since GM isn't the fastest thing on older end computers anyway.

For your last note, he can put anything he want's in his version information. Also, most people I know always display (usually in the credits tho) that their product was made in GameMaker. Which they should, since a lot of credit to the completed project was cause of the hard work by Mark Overmars.

But again, I understand your point. However, just consider that most of your "clients" are probably not going to check the version information of the dll's that come with your program (let alone knowing what GameMaker is or even caring if it's made by it) You make it sound like a bad thing that you mention that your program was made using GameMaker...

Anyway,Keep up the excellent work NintendoFreak88, on this and other dlls/projects. Now go make a DVD dll, mwahaha...ok, I guess that would be to much to ask

[quote name='Shaltif' date='Nov 5 2004, 02:48 AM'][quote name='kio' date='Nov 4 2004, 10:14 AM']okay.. not anyone wants this dll for a media player, so the cursor is a minus to me(While I was playing Resident Evil 2 [commercial game] yesterday I noticed that in videos no cursor was shown?)

Sorry Brandon But EVERU OS have some DirectX who comes with OSwhen I say ever i did'nt think WIN98...WinMe have DirectX-7And so on Xp have built on DirectX 8 ,and Microsoft alredy have on site DirectX 9cThat is a fact...

Thanks for the comments guys. BTW kio and such, do you have ANY idea how hard most image/sound formats are to decode? For instance, the JPGLib for C++ has about 30 files of 1000 lines each. Mabye if you can find someone with LOTS of time on their hands, but if not, then you'll just have to stick with the formats that MCI allows.

Zmaj, maybe do a spell check next time? (that's took awhile to read, lol).

For DirectX, just update to 9.0c. The only OS that can't use the latest version of DirectX are Win95 and earlier (at least, I know Win95 can only use up to DirectX 7.1 or something like that)

But since GameMaker doesn't officially work under Win95 anyway, that's a mute point.

As for the DivX issue, just download the DivX codec. That isn't much of a big deal. Just state in the Minimum Requirements that the DivX codec is required to view video and/or have a link where people can download the codec from if they don't have it.

Zmaj, maybe do a spell check next time? (that's took awhile to read, lol).

As for the DivX issue, just download the DivX codec. That isn't much of a big deal. Just state in the Minimum Requirements that the DivX codec is required to view video and/or have a link where people can download the codec from if they don't have it.

~Brandon

Well thanks for reading this...My speling is unusefful becouse I dont know English so well...Yes I know everuything, and i alredy have DivX codec...I dont know how to use them in GM aplication...If you know how,please share with as you knowlege...

I have a question, can you make the dll play the movie in the background, and let the user draw sprites over the playing movie ?
Is it possible in any way ? and if it is , please tell me how to do this.THAnx verry much , and I hope you can help.

Well if you tell me how I could get a multi frame movie into a single background... The only way would be to take screenshots of a movie playing then draw them to the background. A process which would be extremely slow.

Actually, I was referring to taking the image directly from video memory and replacing a background with that image each step the video is played.

Then, all you'd have to do is set that BG to the room BG and keep replacing it every step. You can play with sprites, etc on top of it, and you'd never have to worry about the player right-clicking and getting all those options, and you'd have full control over your display of the movie.

You know, something even neater would be if you could make buttons and thingies in GM and have them on top of the video and you could even interactively play a game on top of a video, kind of how they do in Final Fantasy 7 and 8.

NNFreak 88, I have created an example along with Cursor Clip dll!You can display a movie full screen, with no cursor and no right click menu!I will post it as soon as I can!sorry I misunderstood your dll but it needed some second hand for doing the job right.

Still I can't find a good compression tool for avi movies...

You know, something even neater would be if you could make buttons and thingies in GM and have them on top of the video and you could even interactively play a game on top of a video, kind of how they do in Final Fantasy 7 and 8.

Most of that is over my head (i know what you're talking about, though, just couldn't join in. ), however...

Can you control the initial load's coordinates? Or is that the actual problem?

If you could, just throw it way offscreen until the file is loaded (like x=0, y=30000), then have it appear in place with the proper height, width, and so on. That way it would still be doing the same thing, but elsewhere, where it wouldn't be seen.

Again, i may be misunderstanding the problems due to ignorance of the coding involved.

Ok, first, don't topic bump. And secondly, i know about MCI commands and quite frankly I don't care. Thank you and have a nice day.

Truely I didnt realize it was a bump and I apologize for that. (I didnt look at the last post date.) You seem to have thought I was trying to down your dll. I wasnt in any way. I just wanted to tell everyone that it has been possible to do this without a dll for quite some time now, but with some limitations. I really do like your dll and appreciate that you took the time and effort of creating it.

Truely I didnt realize it was a bump and I apologize for that. (I didnt look at the last post date.)

Oh ok don't worry about it.

I just wanted to tell everyone that it has been possible to do this without a dll for quite some time now, but with some limitations.

Well, some don't like it when alternatives are offered to their dll in their own topic, it can be taken as offending. Also, the MCI thing is pretty common knowlage. I plan on looking into ways to improve this in the future (like multi threading).And if you would have read the first post:

This uses MCI so you could do it directly from Game Maker. However, I am not sure about speed imporvment but this is also easier and is well documented. Generally things with DLL's are faster so I think this could be faster but I'm not sure. Just please don't go around saying you could do most of it with MCI. If you know you can, then go make your own scripts, etc.