• 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!

OFFICIAL Open Sourcing Extensions

rwkay

GameMaker Staff
GameMaker Dev.
We’re proud to announce that we’re Open Sourcing the extensions we provide through the GameMaker Marketplace.

Fresh new extensions:


Other extensions:

Open Source means that we publish all the code required to build each extension from scratch. All the source code will be made available, so you’ll be able to see how it’s built, build a debug version and instrument, replicate, and fix issues.

All our repositories are released under the Apache 2.0 License.

You can fork these repositories and build them yourself. If you have any bug fixes (or even feature additions), you can submit Pull Requests that we’ll review and work with you to complete.

Any bugs and feature requests can be submitted using the ‘Issues Tracker’ on Github for the appropriate extension.

Releases will be available through the Github ‘Releases’ section, and we’ll still be updating the Marketplace, too.

We’ll continue to update these extensions as new features are added, and hope you'll work with us and the community to improve the GameMaker ecosystem!

We’ll update this post with links to the latest versions over the coming weeks.

Russell
 
Last edited by a moderator:

JeffJ

Member
Very cool, I can only applaud this.

Any chance Spine implementation would be open sourced as well at some point?
 

rwkay

GameMaker Staff
GameMaker Dev.
Very cool, I can only applaud this.

Any chance Spine implementation would be open sourced as well at some point?
Unfortunately that is not an extension as currently it is part of the IDE, the Compiler and the Runtime (both JS and C++).

Russell
 

gnysek

Member
I've just checked Polish translation https://github.com/YoYoGames/GMS_Language_PL and it should be rated 10/10 on IMDB as best comedy :D Thins like "head of the hall", "sprinters", "bank assets redactor", "water steam" are among best ones :p

As it seems to be automatically translated, will be there rules how to fix/make pull requests into that repository? I would love to fix at least contest sidebar, so it makes better bad first impression.
 

rIKmAN

Member
This is a good step forward for GM and users if it's managed right.

Maintained by YYG with additions from the community = great.
Neglected by YYG with the burden put onto the community for upkeep because "the source is on github to fix yourself" = a lot of broken extensions, not great.

Regardless, I love how YYG have been open to working with the community on things like this, the recent staff additions etc - long may it continue!
 

AIO1

Member
10/10
Maybe with all this information we will now be able to create better extensions ourselfs or help to improve existing ones :)
 

SnoutUp

Member
Step in the right direction, but are you planning to add more of these in the future? Unity Ads comes in mind as one of the most popular, yet hardest to keep up to date, extensions.
 

Appsurd

Member
I made this extension recently with the latest Unity Ads SDK :p
You can find it here, and here is the documentation.
I really appreciated your efforts to make an extension, which is really helpful for all serious mobile developers! But the main purpose of this move is to have high-quality and updated extensions for many years to come, which is difficult to guarantee if there is only a single developer (you) making the extension. For that reason, I appreciate Yoyo's new approach, but it's yet to see whether they will respond quickly to reported bugs / upgrades made by GM users.
 

SnoutUp

Member
I made this extension recently with the latest Unity Ads SDK :p
You can find it here, and here is the documentation.
I appreciate the work, but I already spent over $50 to acquire all of the Unity Ads extensions on the marketplace at one time or another. None of which are up to date now (one might argue that such abandonware shouldn't be kept in the marketplace), so I have trust issues. And yours don't support iOS, from the looks of it.

There has to be a better way.
 
Last edited:

gnysek

Member
But the main purpose of this move is to have high-quality and updated extensions for many years to come, which is difficult to guarantee if there is only a single developer (you) making the extension.
You think that there's more than one developer sitting on each extension in YYG for full-time? I rather think that they put one person from time to time if update need to be done (mostly after someone reports that it's not working, in less cases ahead of time), and as YYG doesn't seem to offer any Unity ads ATM (didn't found any extension in marketplace, or any article in helpdesk, same for roadmap). It wouldn't mean it would be better in any way, except that it would be free and someone could make a pull request with fixes, and it can be used even if before YYG accept it and merge into main repository, so there's a chance of community-fix if not for quick official patch.

I can understand that having open source free extension is better than having paid one only, and since you spent lot of money on extensions that aren't up to date you're little angry (did you contacted their owners to ask if they gonna update them? marketplace offers contact with developer, I've received some emails that way), but I wouldn't assume that @AIO1 makes a bad code or abandons it, without seeing this code and seeing it not updated for a long time.
 

AIO1

Member
I appreciate the work, but I already spent over $50 to acquire all of the Unity Ads extensions on the marketplace at one time or another. None of which are up to date now (one might argue that such abandonware shouldn't be kept in the marketplace), so I have trust issues. And yours don't support iOS, from the looks of it.

There has to be a better way.
I know your feel. I had the same issue with UnityAds extensions and after learning how to do it from scratch myself, I can only say that most of them were just copies of others without a deep understanding on what they were doing. There is no need to inject things or anything, some of them introduced even random functions that they never used. Also, Unity is discontinuing soon banners and they all kept old references to banner functions that are outdated and gave no revenue (even if an ad was shown).

The better way would be to learn yourself how to create it. If you think you don't have time to learn or if you don't found anything, you can always grab one of the extensions that you own and try to look at the source Java code (located in the extension folder and then in \AndroidSource\Java). To create it yourself, you only need to create a Java file, get the Unity Ads SDK placing it in \AndroidSource\libs and read this very carefully to understand what you have. I strongly recommend you to have a look at other GMS extensions to inspire you on all the things you can do in Java since there isn't much documentation online. Use for example the Facebook or Google Play extensions as reference.

I've done only Android because I'm not interested in iOS at all and I'm not developing anything for iOS currently, I was interested in updating an specific game I made just for Android.

I uploaded an extension in the market with a lot of documentation in it with a price I considered for my effort of learning and solving the issue for Android myself. I could have just kept it for myself and thats it. In a lot of scenarios, this is what normally happens, people don't even share what they make because of the laziness of writing documentation.

As @gnysek mentioned in the next post to yours, I totally agree, they don't have someone 24/7 working on extensions, they are focused on the engine itslef.
Think of all the stuff that is constantly changing in the market and that you need to update in order to be competitve against other game engines.
Unfortunately, they can't spend a lot of time on extensions.
Because you need Unity Ads extensions it doesn't mean that everyone needs it, there are other alternatives like AdMob, so yeah, I'm pretty sure this is not a top priority extension to make for Yoyo right now.
This topic isn't about Unity Ads Extension, but if you need any guidance, fell free to contact me :) I'm always willing to help others.

Coming back to the topic of this thread, In my opinion, I think they are doing a great job and I hope they keep it up.
Open sourcing these extesnions help users understand how the inner working for extensions work in GMS and also it might open the doors to higher quality extensions in the market, or to more people making them because there are more references to learn from. Currently making an extension for GMS is quite a journey since there isn't a lot of documentation on what you can do.
Open sourcing these extesnions is a very good step in promoting the support from the community and creating a bigger base of extensions and knowledge of the engine. I still think another step they should take is actually showing the community how to work with more complex extensions in GMS, I've seen things in the Steamworks extension that they open sourced that I didn't even knew about and didn't find information of it elsewhere, you can create mostly any GMS data type from an extension :O

Great job YoYo, keep up the good work :)
 

efeberku

Member
I know your feel. I had the same issue with UnityAds extensions and after learning how to do it from scratch myself, I can only say that most of them were just copies of others without a deep understanding on what they were doing. There is no need to inject things or anything, some of them introduced even random functions that they never used. Also, Unity is discontinuing soon banners and they all kept old references to banner functions that are outdated and gave no revenue (even if an ad was shown).

The better way would be to learn yourself how to create it. If you think you don't have time to learn or if you don't found anything, you can always grab one of the extensions that you own and try to look at the source Java code (located in the extension folder and then in \AndroidSource\Java). To create it yourself, you only need to create a Java file, get the Unity Ads SDK placing it in \AndroidSource\libs and read this very carefully to understand what you have. I strongly recommend you to have a look at other GMS extensions to inspire you on all the things you can do in Java since there isn't much documentation online. Use for example the Facebook or Google Play extensions as reference.

I've done only Android because I'm not interested in iOS at all and I'm not developing anything for iOS currently, I was interested in updating an specific game I made just for Android.

I uploaded an extension in the market with a lot of documentation in it with a price I considered for my effort of learning and solving the issue for Android myself. I could have just kept it for myself and thats it. In a lot of scenarios, this is what normally happens, people don't even share what they make because of the laziness of writing documentation.

As @gnysek mentioned in the next post to yours, I totally agree, they don't have someone 24/7 working on extensions, they are focused on the engine itslef.
Think of all the stuff that is constantly changing in the market and that you need to update in order to be competitve against other game engines.
Unfortunately, they can't spend a lot of time on extensions.
Because you need Unity Ads extensions it doesn't mean that everyone needs it, there are other alternatives like AdMob, so yeah, I'm pretty sure this is not a top priority extension to make for Yoyo right now.
This topic isn't about Unity Ads Extension, but if you need any guidance, fell free to contact me :) I'm always willing to help others.

Coming back to the topic of this thread, In my opinion, I think they are doing a great job and I hope they keep it up.
Open sourcing these extesnions help users understand how the inner working for extensions work in GMS and also it might open the doors to higher quality extensions in the market, or to more people making them because there are more references to learn from. Currently making an extension for GMS is quite a journey since there isn't a lot of documentation on what you can do.
Open sourcing these extesnions is a very good step in promoting the support from the community and creating a bigger base of extensions and knowledge of the engine. I still think another step they should take is actually showing the community how to work with more complex extensions in GMS, I've seen things in the Steamworks extension that they open sourced that I didn't even knew about and didn't find information of it elsewhere, you can create mostly any GMS data type from an extension :O

Great job YoYo, keep up the good work :)
They should have someone to keep android and ios, libraries and extensions up-to-date. Or at least they should update them every 6 months. I know lots of users who gave negative feedback just because of this.
 

gnysek

Member

AIO1

Member
They should have someone to keep android and ios, libraries and extensions up-to-date. Or at least they should update them every 6 months. I know lots of users who gave negative feedback just because of this.
Yeap... and even worse, games that can't be updated anymore becasue of old SDK. I did the Unity one myself because I couldn't update my game due to having an old Unity Ads SDK.
 

efeberku

Member
I think that since they are open source now, it shouldn't be a problem anymore, even is something became outdated, they will either fix it before we notice, or ASAP after first reports.

A good example: admob got update 11 days ago cause iOS SDK got some new options: https://github.com/YoYoGames/GMEXT-AdMob/commit/8b062498e36503a4674914cadb890ecefabaa94c
Yeah extensions are OK for now. But they still need to update the gradle and the core engine etc themselves. Official updates every 6 months for these would be very nice.
 

xDGameStudios

GameMaker Staff
GameMaker Dev.
Brilliant.
Mobile utils with the camera function... 10/10
Mobile utils is a extension pack each component Camera/Gallery/Image (Crop/Resize)/Share is a separate extension. We are doing this because there are a lot of permissions required to allow some tasks and we want the developer to be able to select which functionality he wants in. So this is a extension pack that will grow over time.
 

AIO1

Member
Mobile utils is a extension pack each component Camera/Gallery/Image (Crop/Resize)/Share is a separate extension. We are doing this because there are a lot of permissions required to allow some tasks and we want the developer to be able to select which functionality he wants in. So this is a extension pack that will grow over time.
Yes, I understand. There are lots of things involved to permissions. It's a very nice extension to have these utilities for mobile all in one place.
 

AIO1

Member
Game engine users having to learn 2 additional programming languages and platforms just so show an ad in their mobile release is not a better way.
A little correction: "Just to show a Unity Ad"*
You have other extensions available in the market which support showing ads.

Also, knowing more than one programming language isn't that big of a deal and actually is quite useful.
A game engine won't always have a full solution pack for you in one place.

Imagine you want to make a sort of Mario Maker game and you want to have all levels created by the users available across all platforms. You will have to do something outside of the engine which probably requires some web knowledge and DB knowlege.
I'm developing a puzzle game like this and for this scenario you need for my case to know apart from GML, SQL and C#.

Even in GMS itself you have more than one language.
If you want to do advanced shader stuff you need to know one of these: GLSL, HLSL or GLSL ES.
If you want to do advanced extensions for Windows, Linux or MacOS C++
If you want to do advanced extensions for Android, Java is the way (and maybe you also need C++)
If you want to do advanced extensions for iOS I think u need to know Swift (and maybe you also need C++)
 

Mool

Member
I learnt, that its mandatory to know how to write extensions or you need more time to find working/not outdated ones. Its also good for bug fixing to know what is going on.

I really suggest learning to make extension, because its not that hard, at least not for ad providers. If you can code in gml, then I swear, that you can learn to do simple ad extensions in 2 weeks. (java/objective C)

In case someone needs ironsource for free for android/iOS. Then let me know. In ironsource you can implement UnityAds or other networks: Look here

Its also pretty popular: https://www.appbrain.com/stats/libraries/ad-networks
 
Last edited:

DigiChain

Member
The latest review for the Admob extension on the marketplace states:
My game has an android package name that includes capital letters, however, this extension reports to Admob all letters in lowercase. This causes Admob not to recognize my app properly.

If this is the case will there be an update to fix it? My android package names also contain capital letters so I am unable to use this version of the extension.
 

xDGameStudios

GameMaker Staff
GameMaker Dev.
The latest review for the Admob extension on the marketplace states:
My game has an android package name that includes capital letters, however, this extension reports to Admob all letters in lowercase. This causes Admob not to recognize my app properly.

If this is the case will there be an update to fix it? My android package names also contain capital letters so I am unable to use this version of the extension.
The discription is very broad and I don't really undertsand what is the error you are seeing.
Please send us a bug report with the problem you are experiencing.
If you can attach the project that shows this problem.

Thank you,
Francisco (xD)
 

DigiChain

Member
I haven't actually attempted to use the latest version of the Admob extension - but was worried about updating to it because of this review.
My game has an android package name using capital letters (in the format of: com.webaddress.MyGame) and uses the previous version of this extension without issues.

I agree the review is a bit vague about the issue.
I'll file a bug report if i have issues too.
 

tjuven

Member
Step in the right direction, but are you planning to add more of these in the future? Unity Ads comes in mind as one of the most popular, yet hardest to keep up to date, extensions.
I would also love to see an open source extension for Unity Ads. It's by far the best ad solution, in regards to technical support/features and monetization wise, in my opinion.
Also in my experience the most revenues comes from the iOS platform, in my case double or sometimes even triple the amount compared to google play.
 

Mert

Member
Hey everyone! Just letting you all know that we extended our list yet again.
  • Firebase (NEW - all available modules, this includes the new Firebase Performance Monitor, also available through the marketplace)

Thank you,
Francisco Dias (xD)
Could you please include image sharing into the Mobile Utils. Even a GML Surface to Android Image Share Intent would be very beneficial for a lot of people.
 

xDGameStudios

GameMaker Staff
GameMaker Dev.
Looking at the extension itself it is already possible to share images... the MIME type image and the path to the image/file to share. You will need to save the surface into a file first.
1668095422951.png

Could you please include image sharing into the Mobile Utils. Even a GML Surface to Android Image Share Intent would be very beneficial for a lot of people.
that would be simple but would make the feature doable in Android and not work on iOS.. since the extension is supposed to work on both platforms eaqually we need to compromise there.
 

Mert

Member
Looking at the extension itself it is already possible to share images... the MIME type image and the path to the image/file to share. You will need to save the surface into a file first.
View attachment 51984



that would be simple but would make the feature doable in Android and not work on iOS.. since the extension is supposed to work on both platforms eaqually we need to compromise there.
Yes, I checked that one. Just want to say, what is being done there is just amazing.

I should've written better 😅 iOS apps can share images between apps as well. I originally wanted to make a system where a player can share a .gif to social media. (This gif is created with Game Maker's native functions). As far as I know, these gifs can only be saved to app local storage, and this extension cannot pick it from there.

I may be wrong about this, or it may already happen with another technique. Would be nice if there's a such system really

Edit : A workaround could be encoding the image for base64(GML does support that if I know correctly), and this can be sent through. I'd need to check that
 

xDGameStudios

GameMaker Staff
GameMaker Dev.
I originally wanted to make a system where a player can share a .gif to social media. (This gif is created with Game Maker's native functions). As far as I know, these gifs can only be saved to app local storage, and this extension cannot pick it from there.
You should be able to do it... the extension will copy the gif to the external storage before using it. So you should be good.
 

Mert

Member
You should be able to do it... the extension will copy the gif to the external storage before using it. So you should be good.
Checked it, the default example works okay.
However, I just copied the Share module and tried to feed my files (and also tried your files as well) but I got the following error
GML:
something wrong - java.io.FileNotFoundException: /storage/emulated/0/YYGif.gif: open failed: EACCES (Permission denied)
82nd line of the MobileUtils_Share.java (Edited the Log line a little bit to see the error, that's not in the original code)
Java:
try
{
    copy(localFile,extFile);
}
catch(Exception e)
{
    Log.i("yoyo","something wrong - " + e.toString());
    return -2.0;
}
 

jzavala

GameMaker Staff
GameMaker Dev.
Hi @Mert we excluded "requestLegacyExternalStorage" from the Share extension to avoid duplicated symbols,
If you only are using the Share extension just remove '_' in this tag YYAndroidManifestApplicationAttributes_ in the Android Code Injections
1668374524328.png
 
Top