• Hey Guest! Ever feel like entering a Game Jam, but the time limit is always too much pressure? We get it... You lead a hectic life and dedicating 3 whole days to make a game just doesn't work for you! So, why not enter the GMC SLOW JAM? Take your time! Kick back and make your game over 4 months! Interested? Then just click here!
  • Hello [name]! Thanks for joining the GMC. Before making any posts in the Tech Support forum, can we suggest you read the forum rules? These are simple guidelines that we ask you to follow so that you can get the best help possible for your issue.

Discussion Plugins-Support?

C

Chinafreak

Guest
Hello,

it would be nice, if Game Maker supports plugins stuffs (just like developing own GUI/Editor in Unity3D), so I could write as Example my own Workspace/Object Editor which I'm not fan of a Blueprint-Like-From-Unreal.
I wish there wasn't "Drag & Drop" Event, instead of Drag & Drop Event, I would love to use it as Code such like:

Code:
event create{
    ///GML Code
}

event step{
    ///Another GML Code
}
This is just an example for usage of Plugins. But all we do know which your answer we're expecting... ;)
Plugins would be especially interesting for Room Editor which you can create your own tool for Room Editor.

- Chinafreak
 
C

Chinafreak

Guest
Thats amazing! Does plugins work for Workspace, Room Editor etc. (everything) or only part of IDE?

(Edit):
And which language?
 
Last edited by a moderator:

Nocturne

Friendly Tyrant
Forum Staff
Admin
I'm afraid I can give no details on how the plugin system will work... mainly because I don't know myself! I'll see if I can get (and give out) more information, but it may be that YYG do not want to reveal anything more at this point.
 
G

gamible

Guest
I can imagine the customizability plugins would add. In a similar sense to Google Chrome Extensions, YoYoGames wouldn't have to update the engine as much because the users would.

There's just SO much potential! I'm super excited to see if someone will make a Windowed plugin, like classic GameMaker. (I'm not a huge fan of the new WorkSpace tbh.)
 

Mike

nobody important
GMC Elder
The whole IDE is based around a plugin system but we're no where near ready to allow access to this, not least because it requires massive amounts of documentation. So...it's possible, but don't hold your breath. Having it be possible and actually allowing it are 2 totally different things as I'm sure you'll agree.....
 

GMWolf

aka fel666
I made a couple plugins for GMS1.4 (couldn't publish because of EULA, sadly).
Hopefully I'll be able to port those to GMS2!
 

GMWolf

aka fel666
And this plugins you´ve maded is based on..?
A plugin system I worked on that allowed preprocessing of GML.
But when inquiring YYG, they informed me they would rather I not mess with their program.
Shame, cause it was rather cool.
 
C

Chinafreak

Guest
The whole IDE is based around a plugin system but we're no where near ready to allow access to this, not least because it requires massive amounts of documentation. So...it's possible, but don't hold your breath. Having it be possible and actually allowing it are 2 totally different things as I'm sure you'll agree.....
Well, I would understand about massive amount of documentation, but I'm pretty sure that someone will find out how thing works if we have access to plugin system even without documentation. ;-P
Sound good. I hope this will be a thing. :)
 
Last edited by a moderator:
C

CedSharp

Guest
ROFL - I know that you are an experienced coder and all. But, this doesn't mean that someone else can't think out of the box once in a while too. ;)

Want to talk about 'doing it wrong'? Why in gods name is there 107 render state changes in GMS before rendering a single pixel to the screen? I have asked you this quite a few times, but you have avoided the question over and over and over.

The renderer should (with application surface disabled) consist solely of Begin, (Clear - optional), and Present.

I have done this myself, by creating my own renderer for GMS, and absolutely $hitted all over the inbuilt renderer with my 'Catch the clown' remake that everyone believed was fraudulent because the results doubled in framerate.

I must have been lucky in 'doing it wrong then too' ;)
I don't know how gm works. I can't say that what I'll say is true, this is just what I think.

GameMaker is an engine which targets users with little or no experience in game making. For that reason, GameMaker makes sure to do everything possible in the background so that you
don't have to bether even thinking about it and just focus on your game.

With that said, that means GameMaker has to take decisions based on many different contexts. Because of that, it is very possible that GameMaker finds evidences of a specific action,
so it prepares to take that action, and then realizes that instead, it was another action, so it proceeds to stopping doing what it was about to do and prepares for the other action instead.

You could see it like this: Say you see someone sneeze a lot. What is it? Is it a cold? Is it allergies? Is it just a coincidence? you can't guess.
But what if you definitly need to take action NOW. Well you'll have to choose one of those. And if in the end it wasn't that, you'll change your action as you
get more information.

This is how I think GameMaker works behind the scene. For that reason, I think it is perfectly normal for GameMaker to make many different draw calls even if you do only one draw.


NOTE: You mentionned something very interesting: before drawing a single pixel. GameMaker is optimized to ddraw sprite batches, not pixels.
So that brings me to mike's comment: Maybe you are using GameMaker incorrectly. Yes, you made a dll that does what youre doing better... But what if it's because you aren't using GameMaker the way it is intended to be used?


Again, I'd like to remind you that this is just guesses, my opinion, and I could be completly wrong.
Please do not take offense if that's the case :p
 

GMWolf

aka fel666
Using a LIB over a DLL isn't going to vastly speedup your code, if your depending on this...your doing it wrong :)
Sooo, why is it everytime we ask for more feature in GM, there is always a workaround available, including using a DLL? :rolleyes:

If we where to do things 'correctly', should we not have types instead of handles, namespaces, access to depth buffers? These are things considered 'correct' these days.
Having to mess with handles, using a single namespace and generating 24 bit color depth buffers in shaders are all considered 'wrong' by most. Yet YYG is quite happy to tell us these are vaible alternatives ^^
And those are just some examples.

Anyhow, YYG are free to use whatever practices they like when developing their software, But dont be supprised when we do something 'Wrong' when using GM.
 

Mike

nobody important
GMC Elder
I said if a LIBcall over a DLL call is increasing frame rate by 14,000% then one of your functions is definitely out, coz a call to a DLL is not that slow -by any means. Static function call, to calling through a register takes "a few cycles" hit. GameMaker will add a good few cycles more to that due to the API interface.... but unless your doing THOUSANDS of calls a frame (and if you are...again...doing it wrong), then you'll never notice.

Your goal should always be to reduce the call over head over a barrier, and if that means doing more on one side or another, and passing/processing the result in one go, thats what you do. And this means the DLL/LIB problem is just gone.

again... LIB->DLL call is not a massive overhead, so if your seeing one - doing it wrong :p
 

Mike

nobody important
GMC Elder
Yeah, this is what I was meaning.... I know that doing stuff in a native DLL may well boost performance of a specific task many thousands of times depending on the task (especially when you start threading it up..), and this is exactly why we have extensions in the first place :)
 

Mick

Member
shame, it being one of the reasons I chose to buy GMS2...
Well, it was pure speculation from my side but the list of things todo is pretty long. This is a feature that should have been implemented early in the GMS2 lifetime in my opinion because both YoYo and GMS2 users would gain from this.
 
C

CedSharp

Guest
Well, it was pure speculation from my side but the list of things todo is pretty long. This is a feature that should have been implemented early in the GMS2 lifetime in my opinion because both YoYo and GMS2 users would gain from this.
I'll try to find the post in question eventually, but I remember @Mike mentioning at some point that the plugin system is already implemented, that gms2 is built based on that plugin system. It's just they didn't make an API or a public access to it yet.
(That might be completely wrong and I might be saying bull💩💩💩💩, please don't take this as a fact, it's out of my fuzzy memory)

I also was looking forward to the plugin system in GMS2. I can't wait to have the ability to create a plugin where I can add, for example, an UI to build text dialogs. Or something as simple as little popups asking a bunch of quick info for generating scripts.
Mmmm... I've stopped hyping about it a long time ago. I'd definitely offer my most valuable time to be a beta... an alpha tester for this feature!
 

Mick

Member
I'll try to find the post in question eventually, but I remember @Mike mentioning at some point that the plugin system is already implemented, that gms2 is built based on that plugin system. It's just they didn't make an API or a public access to it yet.
(That might be completely wrong and I might be saying bull****, please don't take this as a fact, it's out of my fuzzy memory)

I also was looking forward to the plugin system in GMS2. I can't wait to have the ability to create a plugin where I can add, for example, an UI to build text dialogs. Or something as simple as little popups asking a bunch of quick info for generating scripts.
Mmmm... I've stopped hyping about it a long time ago. I'd definitely offer my most valuable time to be a beta... an alpha tester for this feature!
Ok, I hope I'm wrong then, hopefully it will see the light of day sooner rather than later. :)
 
K

Koyan

Guest
Still nothing guy's. . . even in 2.3.1 not even a API support.
 

kburkhart84

Firehammer Games
I'm doing a thing with my input system that is basically the closest I could get to a plugin. It isn't great, but it works better than having to compile a separate executable. Since 2.3, included files are now a thing that is in the datafiles directory in the project folder. You no longer have to add them manually in the IDE, and you don't have to re-import or anything when they get changes made to them. Furthermore, a few versions ago, they added an option to disable the sandbox, allowing you to access files anywhere(anywhere the OS gives permission without admin access anyway). These changes added up to the new way I'm handling configuration for my input system.

I added a #macro, which is simply a string that points to the project directory. It would be nice if they added it as a constant, but I don't see it happening anytime soon.

Then, I have a room(a few actually, all accessed from the first room). This room is basically the GUI and code that controls configuring my input system. The objects can access that #macro, and then directly update and add files for the datafiles folder, and then those files can get accessed by the normal game when it is ran. In my case, there are three ways to get to the room in a build. You can either simply move the room to the top of the room order, you can have one of your own objects go to that room whenever you want(typically right at the start), or you can add an object to the first room of your game that I created that does the same thing. The only glitch with the last option is that if your game's objects manage to go to the next room before my object managed to go to the configuration room, it won't work right.

So yes, this isn't actually in IDE plugin stuff like I've also wanted for years now...but its better than having to have a separate program for this stuff, and you can easily set a #macro and never have to mess with searching in folders to load files since its there in the #macro already.
 
Top