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 mini maps 1.1 released

Version 1.1 of mmap mini maps has been released. It is available at the GameMaker Marketplace.

New Features:

  1. Radar, Sonar sweeps can now be drawn in the room as well as on the radar screen.
  2. View[0] border can now be drawn to the mmap screen.
  3. Room border can now be drawn to the mmap screen.

Live Demo (HTML5)

Full Documentation

Latest Google Chrome changes break HTML5 applications built with GameMaker: Studio

Users who browse this site with Google Chrome will have noticed that the HTML5 demos and games that I have built in GameMaker no longer work in the latest version of Chrome. I became aware of this fairly recently, but until yesterday I had hoped that it was just a problem with the configuration of my primary computer, as the problem did not seem to be evident on my other computer that I do testing with. Unfortunately, after updating that computer to the latest build of Chrome, I found that the problem is more widespread.

This thread on the GMC forums explains what to do if you’re a programmer who has an HTML5 game that needs to be patched in order to fix it with the latest Chrome. I have yet to try this on my own games, but will be experimenting in the near future. Presumably, YoYoGames will be updating the GameMaker: Studio build for HTML5 to rectify the problem in an upcoming release, and once done, re-building the game will also fix the issue.

txt spk is teh new cursive

Every so often it comes up in the news on a slow day that concerned parents are all butthurt due to schools stopping teaching cursive penmanship. Usually this is accompanied by concerned parents who are all butthurt that kids these days are texting fiends who use no grammar or spelling or punctuation or capitalization.

So it occurred today as I was writing out a check that cursive writing is just fast printing. Once you get the hang of making legible block letters one at a time, you get tired of the tedium of making them, so you start to hurry. So the first thing that happens is the letters get sloppy. You don’t always lift the pen off the paper cleanly when you finish each character, resulting in lines joining the letters, and loops where you finish one stroke and begin the next, and so on. When you do this quickly, and have an experienced hand at it, it even looks graceful, although often it’s harder to read than block print. By the time we get to writing our signature for the zillionth time, we may well have consolidated all the letters into a vague squiggle with a large first letter, and you can tell what the words are supposed to be more by their general shape than by positively identifying each letter one at a time.

This hurried script for expediency’s sake is *backwardly* taught to 3rd graders as “penmanship”. They slowly learn how to draw perfect cursive letters one at a time, then join them together to make words, and they do it all very carefully and it looks awful until they stop thinking about each stroke, and make music out of it, the way a neophyte musician learning an instrument can’t play a tune decently until they forget about the micro muscle movements that make up technique, and just play.

If kids were just taught block printing and given a writing workload heavy enough to necessitate haste, they’d discover cursive naturally, without undue pain and struggle. People these days don’t have good handwriting any more only if they don’t need to, because they hardly ever exercise the skill.

So what is txt spk? It’s a hurried way of typing, usually on a constrained input device like a 12-key pad. It’s so laborious to enter text into such an input device, that instinctively you start taking shortcuts, abbreviating words, often in creative ways, creating acronyms and so forth to save you a keystroke or five. It gets the point across effectively and efficiently in a medium where each keystroke is a pain, and sentences themselves are constrained to the length of an SMS message.

So, concerned guardians of culture who bemoan the loss of cursive and the rise of txt spk are blindly fearful of the new generation taking the same approach to communicating faster and applying it to a different medium.

That’s all it is.

I find this silly, since I’m getting close 40, and completely fluent in txt spk as well as l337, since I’ve embraced technology and use them frequently, just as I am fluent in standard English. It’s not a generational thing. It’s a matter of what medium you use, and needing to get things done quickly.

U ppl r dum.

kthxbai.

Mmap 1.0 released

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

MMapIcon200x200

Features:

  • 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

Documentation

Buy it at the GameMaker Marketplace

Return of the Popup

More than a decade ago, the internet userbase (all of humanity) resoundingly rejected popup windows. Popups became a popular method for scumbag web sites to serve advertisements and malware to visitors. They annoyed, they took up system resources needlessly, and they were generally unwanted. The lowly popup was the bane of the IE6 era, and many countermeasures were employed to block them, culminating in browsers adopting default settings to block popup windows and to require the user to approve popups on a per-domain basis.

It’s 2014, and popups have been returning thanks to javascript. Now, instead of popping up a new browser window and loading an entire webpage, popups have become ajaxy, serving an html fragment inside a FancyBox or similar javascript construct. They tend to serve up nags to Like, Share, and Follow the host site, rather than display advertisements for the ad network sponsoring the site, but they are no less annoying, and a stop needs to be put to them. It’s pervasive with clickbait “viral” websites, which are themselves annoying to begin with, due to the way they craft their teasers in often misleading ways. But these modal javascript annoyboxes need to go. Especially on mobile browsers, where the close button frequently doesn’t work well, they harm the user experience on web sites that use them.

FancyBox Etiquette for the Scrupulous Web Developer

There are legitimate uses of FancyBox, to display fullsize content in image galleries, for example, or to bring up contextually relevant controls in a web application. But the social share nag needs to go. The little buttons under the headline or at the bottom of the article ought to be sufficient. If people aren’t clicking on them, you don’t need to shove it in their face after a few seconds delay, or they’ve scrolled halfway down the page.

Here’s how to know whether your popup is a good popup or bad popup:

  1. Does the content being served in the popup serve the user’s needs, or is the site asking the user to do it a favor or asking the user to buy something?
  2. Did the user do something to request it, like click a button or link? Or did you throw the popup at them because they have been in the page for more than 10 seconds or scrolled down to read more of the article?
  3. Is the popup enabling the user to do what they came to the site to do? (eg., reading content, view a gallery of images, interact with features of a web app) Or is the site interrupting what the user came to the site to do and asking them to do something else (eg, buy something, donate money, sign a petition, LikeShareFollowSubscribe?)

There’s really not much gray area possible here. If you’re a web developer, stop doing the scumbag stuff, and get back to providing a good user experience to the user.

An appeal to end FancyBox popup abuse

Unfortunately the new popup phenomenon seems to be increasing in popularity, which means that, apparently, they work. If users don’t stop clicking on the Like|Share|Follow buttons when they’re served, we’re only going to see more of them. We need to stand up and say enough is enough.

Therefore, I’m issuing this appeal:

To the masses: stop Liking, Sharing, Following, and Subscribing to sites that try to signal boost through popup social nagging. In fact, stop going to those sites altogether.

To website developers: Stop making use of popup nags. Just stop already. Stop it.

To browser developers: Javascript has become a crucial part of the web, and necessary for many web sites to serve any content at all. But it is also a too-easily exploited vector for external threats to execute malicious code through the web browser, simply by visiting a URL. Come up with a way to selectively and effectively block javascript from running, so that desired features and functions of a site can be allowed while undesired scripts can be left blocked. Let javascript be used in ways that serves the user’s needs rather than the webmaster’s.

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.

performance issues

Update: We’re back up.

If you can read this post, congratulations, it means the site is up.

I’ve been noticing a slowdown with page load times over the past few days, which have been getting worse over time. I am attempting to troubleshoot and resolve with my hosting support. My hosting service has confirmed that they are dealing with an issue, and expect to have it resolved in the next day or so.

Until then, the site may be very slow to respond, or even unavailable at times, and you may get timeout errors or other errors. Hopefully we’ll be back up and running fast again soon.

Could a build farm be coming to GameMaker Studio?

Interesting.

Earlier today, I posted an idea I had to the GameMaker Community Forums Suggestions board: for YoYo Games to provide a Build Farm service to GameMaker: Studio users who would like to build their games for platforms that they do not own.

Currently, while GameMaker: Studio enables users to build to multiple platforms, certain of those platforms have fairly steep requirements in terms of a physical device to connect to in order to build, and even membership in developer programs. Maintaining all these devices and memberships is prohibitively expensive for anyone who isn’t making a living by doing it.

Providing a Software as a Service model for building to remote cloud-hosted virtual devices that are configured and maintained by YYG themselves would greatly simplify the effort required to build to non-Win32 platforms, making it far easier for GameMaker Studio users to reach all of the platforms that GM:S allows them to reach. Suddenly, it becomes feasible for a solo developer studio to release a game on all platforms without having to own a Mac, an iPad, an Android device, etc.

Further, I suggested that once the build farm was up and running, the next logical step would be to allow developers to submit their newly-built games to various App Stores for whatever target they have built to, enabling GM:S users to bring their games to market far more easily. YoYo Games could have their own store, and GM:S users who have accounts with other app stores could connect their accounts to their YYG Store account, which would enable them to submit their games to the other stores very easily.

Shortly after posting my idea, YYG CTO Russell Kay commented “Squirrel!” — which, apparently, means that I’ve suggested something that YYG has plans to do.

I’m not sure how much of the above ideas they are working on, or how closely what they are working on will resemble what I’ve outlined above, but it’s extremely exciting to think that this may be coming at some point in the indefinite future.

Anything that makes it easier and cheaper for a game developer to bring their products to market — without having to handle all the other aspects of running a business — makes it possible for small studios to compete and do business and make money without having to grow and support a full staff in order to handle these functions internally.