Tag: Marketplace

z3d Engine for GameMaker Studio

z3d is a fake-3d engine designed for simplicity, efficiency, performance, and ease of use. Full documentation + demo included.

In a 2D GameMaker room, x and y coordinates are used for positions in the 2D space. 3D requires a third variable for the third dimension, z. In the z3d engine, x and y are used to represent the “floor” plane as viewed from a top-down perspective, from a forced perspective that gives the viewer a full view of one side and top of objects, while z is used for altitude.

GameMaker Marketplace

Full Documentation

iMprOVE_WRAP 2.0 released

My GameMaker extension iMprOVE_WRAP has been updated with a new release to 2.0.0.

iMproVE_WRAP is an extension for GameMaker: Studio that provides a number of new functions that improve upon the built-in GML function move_wrap().

iMproVE_WRAP is an extension for GameMaker: Studio that provides a number of new functions that improve upon the built-in GML function move_wrap(). It allows you to define the range in the room where the wrap takes place, and draw the instance on both edges of the wrap, as well as detect collisions on both edges of the wrap.

Version 2.0.0 adds two new functions:

  • draw_sprite_wrap()
  • draw_sprite_ext_wrap()

And makes improvements to the existing functions as follows:

  • boundary wrap drawing occurs at the corners of the wrap range (8 phantom drawings rather than 4) when do_wrap_h and do_wrap_v are both true.
  • the collision functions iw_collision_wrap() and iw_collision_wrap_map() incorporate do_wrap_h and do_wrap_v parameters, and only perform collision checks where they are needed. The functions still return all potential collision variables so that there is never an undefined value, even where collisions are not checked. (Unchecked collision locations return noone.)

You can get it at the YoYoGames Marketplace or Itch.io.

Full documentation.

GameMaker: Marketplace vs. itch.io: comparison

After two years of selling assets on the GameMaker: Marketplace, still in public beta after all this time, I am less than impressed with the experience.

Development of the marketplace website, as well as the integrated features in the GameMaker: Studio IDE, have not been forthcoming. Initially the news of the Marketplace excited me, and it seemed that the future of GameMaker was bright and full of promise. But two years later and almost nothing has changed with the way the Marketplace works — and it works poorly, I’m afraid.

Plagued by a terrible bug which causes the IDE’s My Library interface to become unbearably slow to load when a large number of assets are purchased from the marketplace, sales have ground to a halt. Worse, it seems that no one is interested in spending any money in the Marketplace.

In over two years of selling assets at the Marketplace, I have grossed just slightly over $100 in sales, lifetime, of which YYG take a 30% cut, leaving me well under the $100 minimum in order for them to release any proceeds to my account. I’m currently seeing “sales” of my free assets at a rate of 2-5/day, and maybe once a month or so I’ll see a sale of one of my paid assets.

I’m not advertising aggressively, and there are certainly marketplace sellers who are doing better than I am, with more impresive wares than I’ve produced, but I don’t think that quality doesn’t seem to be the problem; I have a number of free assets, and they’ve done comparatively well, with several hundred downloads to date each. The paid assets, on the other hand, have sold in the single or low double digits.

GameMaker has had a long history of being an inexpensive software intended for use primarily by students, and these users as well as hobbyists have howled over the price increases to the main product; even when GM8.x went from $25 to $40, there was much complaining. The lesson seems to be, “Don’t expect to ever make any money from such tightwads.”

Mind you, I don’t think I’m entitled to sales, but it is certainly frustrating to put effort into something for such meager reward, and it’s demoralizing to see how little effort YYG have put into improving the Markteplace experience since they went public with it.

Although YoYo Games have tried to transition into a more professional tool by adding numerous features over the past 6 years, it seems that lately development has stagnated. No one really knows when the long-awaited, so-called “GM:Next” (aka 2.0, currently in non-public beta) will be out. No one’s really talking about what’s going on behind the scenes, and with their roadmap no longer available, it’s been extremely frustrating to wait for months and months with only the occasional minor bugfix patches for 1.4 being released.

I finally decided to check out alternative marketplaces, and have been very favorably impressed with itch.io. Itch.io is easy to sign up for and use, and much more flexible than the YoYo Marketplace. The only downside being that you can’t integrate itch.io assets with My Library (although, with it’s current buggy and awful performance, it’s not much of a loss) but at least My Library notifies you when updates are available for assets you own.

Itch.io allows me to set prices to whatever I want, or whatever the buyer wants, create bundles of assets for sales, and schedule these sales to start and end at defined times. None of these features are to be found in the YoYo Marketplace. Itch.io seems to be more for finished games, but there are also assets for game developers, and other types of things for sale, such as digital books and music. Best of all, itch.io only takes 10% of your gross sales (and they allow you to change that figure if you wish). The diversity of the itch.io store means of course that only a fraction of shoppers there will have any interest in GameMaker extensions, which may prove to be a downside. As well, their store is populated by thousands of great games and other high quality goods, many of them offered for free, so while the barrier to entry is technically low, the expectations of the customers of this marketplace may be high.

Itch.io’s analytics also provide me with better information than YYG. With YoYoGames, they consider you, the publisher, to be a “third party” to sales through their store, and therefore they do not share your customer’s personally identifiable information with you, so you can’t contact your customers. Itch provides the email address, so you can engage your customers, for example notifying them when an update is released, or when a new product is available.

In all, they’re basically eating YoYoGames’ lunch in terms of e-commerce user experience, both as a publisher/seller and as a customer. YYG really need to get it together and catch up with the competition, and soon.

mmap mini maps 1.2 released

Today mmap mini maps 1.2 was released on the GameMaker Marketplace. It’s a really great asset, which ads a powerful, configurable, easy to use mini map system to your GameMaker: Studio project. I’ve spent dozens, if not over a hundred hours developing this asset to the highest quality, and am selling it for just $4.99.

Experience the Live demo in HTML5.

New features:

  1. Vector arrows: configuration option allows moving blips to have an arrow drawn to the map screen showing the direction and relative speed.
  2. Edge blips: configuration option allows distant objects that are out of range to be drawn at edge of map screen, showing the direction to the distant object.
  3. Sound support: configuration option allows for sound effects to be played when a sonar pulse is emitted, or when a radar blip is refreshed.
  4. Room, View Borders: configuration option draws a border to the map screen, showing the edge of the View or Room boundary.
  5. Documentation updated: Includes a new section showing example code to make setting up your oMmap easier than ever before.

Bug fixes:

  1. I noticed that the functions that I had added to the mmap_mini_map.gmez extension are not working. I’m not sure why they are not working, but I have replaced the .gmez functions with Script resources for now, as these do work. This is a temporary workaround, as the Scripts don’t have autosuggest support to tell you what arguments the script takes. Once I have figured out how to get the functions working again, they’ll be converted back. Additional functions to support the oMmap object will be forthcoming at that time. They were planned for 1.2.0, but were held back due to this issue.

mmap mini maps is back in the GameMaker Marketplace

I’ve re-published the mmap mini maps over at the GameMaker Marketplace. The new version, 1.1.6, fixes the bug of the missing mmap constants — this time the right way, replacing the earlier workaround that I had supplied a few days ago.

Building the asset package the way I needed it was not obvious, but with the help from some GameMaker Community Forums users, I was able to learn the correct method to get the constants added to the package.

Two ways to build a Marketplace Asset

GM:S has two ways to build an Asset.

The more visible method of the two, and the one I had used at first when building my Asset, is to use the Package Manager, located in the Marketplace Menu.

Using this method, you can only build an asset which includes “project resources” — Sprites, Sounds, Backgrounds, Paths, Scripts, Shaders, Fonts, Time Lines, Objects, Rooms, or Included Files.

NOT include-able are Extensions, Macros, Game Information, or Global Game Settings. It’s a good idea to understand the rationale for not including these, and how YYG intends for GM:S users to work around these limitations:

  • It makes sense not to be able to include Extensions, because building an Asset is building an Extension, and Extensions are not designed to be nested.
  • Macros cannot be included, but I’m not clear on why. Perhaps because it’s not easy to separate built-in Macros such as GM_version and GM_build_date, and importing these would create conflicts?
  • Game Information is a deprecated legacy feature which YYG seems to be phasing out. No longer can Game Information be displayed at runtime when a game is playing. So it really only serves to exist as a readme file that you can access from within the GM:S IDE, when working on the project. The same information you might put in here is better added to an Included File.
  • Global Game Settings includes a number of fields that are developer-specific, and should not be shared, such as advertising account credentials, Facebook App ID, etc. There are some settings that would be nice if they could be included in an Asset package, such as HTML5 graphics settings, and options for Use New Audio Engine and Short-Circuit Evaluations, but if your Asset depends on such settings, the only option is to document that in your user manual so that users of the Asset can be informed of how they will need to set up their project.

The other way to create an Asset for the marketplace is to build an Extension. Right click on the Extensions folder in the Resource tree of a project, and Create Extension. Then right-click the newly created extension and Add Placeholder. The purpose of a “placeholder” is vague, but what it allows you to do is define Macros which reside at the extension level,which is done one at a time, in an interface that is different from the project-level Macros editor, and even more of a pain to use.

You can also add Functions to the Extension placeholder. You can add a code file, such as exported scripts in .gml format, or a .dll, .js, .dy-lib, etc. and then define Functions which hook up to the code file.

Once the Extension is defined, you can create an Asset out of it, by logging into Marketplace, and then right-clicking the Extension, and choosing the Create Asset Package option. Creating the Asset Package this way is much the same process as creating an Asset Package from the Marketplace menu, with the exception that the Extension that you right-clicked on will be included with the Asset Package.

Why there isn’t a simple way to include an Extension in the Package Manager build process, I don’t know. I guess the answer ultimately is that this is a new feature in GameMaker, and still in beta. The UI design is rough, inconsistent and not as obvious as it could be. Hopefully this will be addressed as the features are refined. But, for now, it is what it is, and game developers who use GM:S will just need to be aware and familiarize themselves with the differences between these two methods of building an Asset Package.

mmap mini maps asset temporarily withdrawn from GameMaker Marketplace

Well, they SAID it’s in beta.

I’ve been struggling with updating my mmap mini maps asset pack in order to fix a bug that I discovered with it. Since I’ve been unable to do so, I’ve elected to temporarily withdraw the product, rather than continue selling a broken asset. I’ll have it back up as soon as I can get it fixed, but I don’t know how long that may take, due to problems I’m having with the tools.

First, the bug. In the mmap mini maps package, there was supposed to have been a collection of Macros (what used to be known until recently as “Constants”), which I used to assist with programming the Mmap object. When I built the Asset Package, I failed to realize that these Macros did not get included. Without the Macros defined, the project doesn’t work.

One workaround would be to add the macros manually. They are documented completely in the user manual that I wrote. I can also furnish a .txt file that can be imported, to save the data entry. If I can’t get the tools to cooperate, that may end up being the solution I go with for the short term.

It was not obvious due to the way the package builder works, and I didn’t notice it in testing because I tested it by bringing the package into the same project that I had used to build it in the first place.

Lesson learned: Build the package in one project. Import the package into a fresh project to test.

Betas gonna beta

When you build an asset package in GameMaker: Studio, you start by taking some project that you’ve been working in, and then going through the Marketplace Package Manager to build a Marketplace Asset using resources from the project. However, the interface that YoYoGames have built is still very beta. It is unstable, resulting in error messages and crashes. But the greater issue is that the design of the interface, and the workflows it supports, is also rather poor and unrefined at the moment.

When you build your Marketplace Asset Package, you are presented with a Package Builder that allows you to select resources from the project and add them to the package. But the resource selection options are not complete. You can’t select Macros. They just aren’t even there.

So how do you add Macros to a Package? By adding them to an Extension, supposedly. There’s an Extension Builder built into the GM:S IDE, as well as this new Marketplace Package builder. I’m presently unclear as to the relationship between Extension builder and Package builder, but the end result of a Package is that you get a package that is ready to be uploaded to the Marketplace as an Asset, and when you download Assets that you’ve purchased from the Marketplace, it installs itself in your Library, where you can add it to a project, where it… becomes an extension.

The Marketplace asset-extension has whatever resources you had added to the Package — sprites, scripts, objects, sound effects, fonts, included files, timelines, shaders, you name it… just no macros.

But if you build an GMEZ extension using the Extension Builder interface, things are very different. I can create an Extension, add a “placeholder” to it, where I can define Macros (one at a time, which is horrible, like each Macro is its own asset in the tree), and I can add a code file, which can be .gml, javascript, a dll, a dy-lib, or java. And I can define Functions which access the code residing in the code file, providing an interface between GM:S and the functions provided by the extension.

And the documentation shows a similar resource picker for handling both importing resources from a completed Extension into the Project, and for moving project resources into an Extension that you’re authoring. But, for some reason when I am in the Extension Builder, it’s one-way only, I can import from the Extension to the project, but not from the project to the extension.

So when I build an Extension, the only things I can put in it are Macros and Functions and Code files. And when I build a Package, the only things I can put into it are project resources other than Macros and Extensions. So I can’t add Macros to an Extension, then add the Extension to the Package. And I can’t add project resources to the Extension Builder. So there’s this impasse that I can’t figure out how to work around.

It could be the documentation is just out of sync with the version of GM:S I’m running, or it could be there’s some serious design bugs in GM:S currently, or it could be I completely misunderstand both the documentation and the user interface, and am missing something that will become apparent to me eventually.

I’m a bit frustrated now, and very tired of banging my head against a wall trying to figure out how to make it work, so I need to step away from it for a short bit.

Thoughts on the GameMaker Marketplace experience so far

GameMaker Marketplace has been available to Early Access users for a little over a month now. I think it’s a good time to talk about the experience.

I first heard about the Marketplace in July 2nd, and was very excited by the prospect.

I got to work on putting an account together and developing my first product. I put my first store asset, mmap mini maps, up on 7/20, priced at $4.99. I wasn’t sure what to price it at, but considering the amount of hours that I put into it, for someone needing a mini map for their game this would save them dozens of hours, and time is money so it seems like a very good value. So far it has sold only one copy, but I’m still happy to have made my first dollar.

It’d be easy to feel disappointed, but I’m not surprised, really. I’ll download anything that looks interesting for free, but the moment you put a price tag on something I hesitate. Unless I have an immediate need, and unless I know for a fact that this asset will work for my need, and I don’t feel like I can build it myself easily, I’m unlikely to pay for something. And I don’t think other developers are too different in that regard.

Winds of change

With the announcement of the Marketplace, one worry I had is that it could have a chilling effect on the GameMaker Community, in that people won’t be as open with sharing their code as they were prior to the Marketplace launch. So far I don’t see that happening, but it’s still early.

It does take quite a bit of effort to take something from a quick example on a forum post to a full-blown product, so I expect the forums will continue to be a place where people share code with each other, and perhaps the best things from the community forums will get developed further into commercial-quality assets for the marketplace. That would be good.

On the other hand, if everyone thinks that their code is valuable and that they can make money from it, maybe they won’t want to share it in the community forums, lest someone else “steal” the code and turn it into an asset before them, and try to make money off of it. Money/greed serves as a disincentive to community cohesion. So rather than put the idea out there at all, and get vital feedback from the community that it’s desired, or how to improve it, the greedy dev builds it in secret, and uploads a product to the marketplace that is inferior to what it could have been had the community collaborated on it openly. That would be bad.

People are very giving and friendly when they see the value of helping each other by sharing what they know, and I generally find this value to be greater than that of money. The $3.50 that I’ve earned by my one sale so far of mmap mini maps isn’t going to make a great difference in my life. But if I think about all the code that has been shared on the GMC forums that I’ve learned from, that has made an amazing difference. The knowledge I’ve gained from hundreds of hours I’ve spent on the forums is a treasure. The $3.50 I gained from perhaps a hundred hours of developing mmap is a pint of beer. The experience I gained from writing it is worth far more than the money I’ve earned from it. Putting a price on some things devalues them.

Nickeled and Dimed

The other worry that I have had about the Marketplace is that these assets will end up costing more and more in the long run. Not in terms of prices going up for individual downloads, but from the aggregate total of all the little things that cost $1-2. The cost of a GameMaker license has always been a good value. GM:S provides a very good basic framework for game development, but now in addition to that cost, there’s all these asset packs that we might “need” to buy in order to have features that a game developer “must have” in order to make a pro-quality game. Don’t such features belong in the core product? Some of them, at least?

And, if YYG does decide to incorporate features that were first implemented in some very popular marketplace asset, what then? I imagine the asset’s developer will feel as though they were effectively working for YYG for very, very cheap, and may not appreciate their revenue maker becoming redundant. YYG will have to take care not to alienate developers, perhaps by licensing/buying the the rights to well-developed assets that they wish to incorporate into the core product.

I really want to see the core GM:S product contain all the features that I need to build a high quality game easily — not to have to buy the core product, and then accessorize it with endless add-ons that individually cost $1-2, but in aggregate end up costing as much or more than Studio itself.

Healthy ecosystems should support a healthy core

Another problem I foresee is that all of these “accessory” assets will be of varying levels of quality, will not be maintained by their developers forever, will not be designed to work with each other, will not offer as fast performance due to being programmed in GML rather than C++, etc. What the marketplace does is multiply the number of developers who are developing (extending) GM:S. By doing so, what we collectively risk is that our efforts will be chaotic, and unmanaged, resulting in a lot of waste, poorer overall quality, and all the other things a lack of good management causes.

I’ve seen this with the WordPress ecosystem, as well. Themes and Plug-ins become abandoned, whether due to unpopularity, developer disinterest, or whatever, and the sites that use them end up stuck on some old, outdated version, looking for a suitable replacement. The WordPress ecosystem overall is healthy, vibrant, successful, due to its large userbase, but there are an awful lot of plug-ins that I’ve had to stop using because the developer quit supporting it. Fortunately, I’ve always been able to find a replacement when I’ve needed to, but it does become a pain to have to select from among a number of popular plugins, which is the best fit for me, and then make sure that it integrates well with everything else on my site.

This makes me think that a better way to have a large scale community of developers contribute to a code ecosystem is the open source model. It’s a very different business model from the one YYG currently develops GM:S under, and YYG has stated many times that they will never open-source GameMaker, but be that as it may, imagine if the IDE, the runner, and the GML language itself were open-sourced so that the community of developers could commit code to the core product, rather than be limited to extending it and creating reusable assets for projects. Granted, the vast majority of GameMaker users probably aren’t competent C++ programmers. So the idea isn’t particularly workable.

But the idea that the best Marketplace assets should somehow make it into the core product is one that has great appeal to me. Perhaps “best of Marketplace” value bundles could be converted to native code, merged and integrated into the core GM:S product, and sold as +$99 add-ons for Professional, or part of the Master Collection suite, the revenue from which would be shared among the contributors. I’d love to see a “Best of Social Media”, “Best of IAP”, “Best of Advertising”, “Best of Analytics”, “Best of Physics”, “Best of 2D Platforming” collection arise in a few months or years. That could be really cool.

The value proposition: saved time vs. lost expertise

You don’t have to buy Marketplace assets, of course, since you can still develop your own projects, but now we have a dilemma to consider: develop from scratch at the cost of your own time, or save time by spending money to buy a ready-made asset? Most of the time, the time saved by buying a reasonably-priced asset from the Marketplace will be more valuable than the money spent for the asset.

But which is truly the more costly option? Buying the asset pack gets you the feature now, so you’re buying time. You can also buy things that are beyond your capability or understanding, which is a great value since it enables you to do things you couldn’t otherwise figure out how to do. And you’re probably buying quality, assuming that the developer of the asset pack has been at it longer than you, and is doing it better than you would have, although this is not guaranteed.

But then you have to spend time to integrate the asset pack into your product, and learn how it works, possibly modify or extend it in order to work how you need it to for your game, maybe even debug it… does it really save you as much time? Maybe not as much as it seems at first.

And on the other hand, by rolling your own features, you gain valuable experience and expertise, you understand the problem and the solution much better than you would if you simply bolted on an asset pack that does it for you without having to engage mentally and solve the problem. In a way, buying an asset from the Marketplace is like paying someone else to go to the gym and work out for you. The weight still gets lifted, and you save the time so you can spend it on other things, but at the end of the workout you don’t have the muscles. And, lacking those muscles, it leaves you less able to lift more weight that you need to lift. This value that is lost from buying assets is the most important value of all.

On the other hand, you may be able to make gains by studying that code that you purchased, particularly code that solves a problem that you had no idea how to solve yourself, or does so in such a way that you might never have thought of yourself.

Above all, you gain unique flavor and style from doing things your way. If everyone uses the same sprites, or tiles, or code, everyone’s games will end up feeling more generic, standardized, commoditized. For works of art, this is not desirable. Hand crafted resources give a project personality, quirks, and uniqueness.

In any case, the Marketplace is come, and with it, whatever consequences will come with it. It’s a new era for GameMaker: Studio users, and one filled with opportunities limited only by what we can imagine.

Simple Performance Test 1.0 released to GameMaker Marketplace

Simple Performance Test is a stub project to enable GameMaker developers to quickly set up and run performance tests comparing two snippets of GML code to see which is the faster.

Ever wanted to know which way of coding your project will run faster?

Want to understand GML better?

Use Simple Performance Test to compare two blocks of GML code, and prove which is faster.

Don’t guess at which code is better optimized, test it and know!

It’s completely free!

Get Simple Performance Test at the GameMaker Marketplace

Project documentation


Mmap 1.0 released

Mmap is a GameMaker asset pack that provides powerful, flexible, easy to use mini map functionality.



  • Easy to use, Beautifully coded! Source code thoroughly documented, very easy to understand, modifiable.
  • Great performance.
    • 2000-4000 mappable instances in HTML5
    • 10000+ mappable instances in Windows (YYC).
  • oMmap object
  • oMappable parent object
  • Four types of mmap:
    • Basic
    • Radar
    • Sonar
    • Static
  • Identify Friend-or-Foe (IFF) color code system
  • Fully customizable!
    • colors
    • alpha transparency
    • screen size
    • detection range
    • zoomable
    • refresh rate
    • blip tracking
  • Tested on Windows, Windows (YYC), and HTML5 builds

Live Demo in HTML5


Buy it at the GameMaker Marketplace

YoYoGames launches Marketplace (early access)

YoYoGames has opened its new marketplace to early adopters. Now is the best time to get a product up, as there’s not much competition right now.

It seems the going price for most things is $.99-1.99. Some things are free, and larger products cost more. It seems that the marketplace is currently geared toward selling singular assets a la carte, rather than larger bundles and collections. I’d like to see the sellers create bundles for certain types of assets, rather than try to nickel and dime their way to maximized revenue. I’m also curious to see if the marketplace will allow sellers to use a “choose your price” model a la the Humble Store.

All sorts of assets are available, from graphics, sounds, and fonts, to shaders, scripts, and extensions. Not every category offers something yet, but I expect this to blow up quickly as developers rush to market.

I have some mixed feelings about this, but overall it’s a positive development. On the positive side, it enables GameMaker developers to see their work to each other, which should encourage the aspiring professional by providing a way to make money and an incentive to produce. On the negative side, I’m not sure that the community needs such an incentive — there’s a huge amount of freely available stuff that has been openly shared in the GameMaker Community. Creating a marketplace will tend to introduce greed and cause developers to guard their secrets, or at least want to be compensated for sharing them. In the long run, this could prove more detrimental than beneficial.