Tag: YoYoGames

GameMaker Studio 2 impressions: Object editor

The most notable change in the Object Editor is that sub-windows are “chained” to the main form, in what YoYoGames is calling “Chain view”.

GMS2 Object Editor

The idea is that different parts of the Object editor should all be visible, not overlap each other, connected visually.

The main Object window shows the object’s basic properties: the Name, Sprite, Collision mask, and Visible/Solid/Persistent/Physics properties, as you can see. Chained to it are the object’s Events, and the Code Editor (or DnD Editor) will be chained off of the Events sub-panel. If your object happens to be a Physics object, or has Parents or is a Parent, then the Parent and Physics sub-panels will also chain themselves to the main Object editor form.

GMS2 Object Editor chain

This takes some getting used to, and occupies quite a lot of space on screen, which for users with smaller displays can make it a problem to work with Objects inside of a Workspace.

Fortunately, Object Editor windows, like any other window, can be broken out of the main GMS2 window and maximized, to fill up the entire screen if desired. Users will either love or hate Workspaces and Chain View windows, and if you’re one of the ones who hates them, you’ll need to get used to breaking the editor out into its own window and maximizing it, as this seems to be your only recourse for now. There’s a few Preferences in the Text Editors section that will make this easier for you, should you want to configure them:

GMS2 Text Editor Preferences

The GameMaker Community Forums have been very active in discussing the UX issues created by the new UI, though, so don’t be surprised if YYG do make a few changes in future updates.

DnD or GML?

The Object Editor comes in two flavors: Drag-n-Drop (DnD) and Code Editor (GML). Which variant you get is currently determined when you create a new Project, but you can switch at any time. Most users will probably prefer to create GML projects and work in the code editor, but beginners, younger users, and non-programmers may prefer the DnD option.

Probably the most important feature of either variant is its interface for defining actions in your Object’s events.

I’ll be focusing mainly on the GML version, since that’s what advanced users will use. But briefly, Drag-n-Drop has been completely overhauled in GMS2.

The new Drag-n-Drop system

Vastly expanded in GMS2, there are now DnD equivalents to just about every function in GML. Unfortunately, this means that there are vastly more icons needed to represent all of these new DnD actions, making them harder to learn. Similar to Chinese or Japanese, where every written word has its own symbol, there’s a DnD icon for every GML function. While it’s reasonably easy to pick up a DnD library with a small number of actions, this quickly becomes unwieldy as the number of actions grows. Unfortunately I expect this will have the undesired effect of making DnD too complex to use for beginners and non-programmers, making it questionable how valuable the DnD system will be in the future. Learning to code by typing out instructions isn’t that hard, and is arguably the better way to learn in the first place. But it’s nevertheless true that for certain people, they feel intimidated by programming or typing, and an intermediary step of using DnD like “training wheels” until the new user has an understanding of GameMaker’s fundamentals and is ready to move on to GML, has been one of GameMaker’s defining features.

In GMS1.x and earlier, DnD Actions were iconographic representations of special GML functions that started with action_ for example, action_set_hspeed(number). These functions were mostly redundant, being equivalent to other GML functions and expressions, for example hspeed = number;

The action_ GML functions are obsolete in GMS2, and are no longer needed. DnD Actions can convert directly into GML with a single menu command. This is a one-way conversion, and should help users who want to “graduate” from DnD programming to GML programming. Formerly, in previous versions of GameMaker, there was no way to convert DnD to GML code, other than to manually re-write everything. If you try to convert GML into DnD, rather than a sequence of DnD actions, you’ll get your GML code wrapped up in an Execute Code DnD Action, and the Object Editor will switch to DnD mode, allowing you to continue programming with DnD actions. While not particularly useful for advanced GMS users who are already familiar with programming in GML, it’s a nice improvement to the way the DnD system works.

GML Code Editor

The new GML code editor is still somewhat rough, but shows promise of numerous improvements. Indenting is standardized, to 4 spaces per tab by default, although this is configurable, and there are subtle guidelines showing where tabs will align to in the background. Row lines are numbered, again configurable if you don’t want to see them.

GMS2 Code Editor

The most obvious difference is the new color coding for syntax. This may take a bit of getting used to, but at first I found that my code looked very rainbow-y, and I found this to be somewhat of a distraction at first, but after a few days I found that I had adjusted. Every color is customizable, if you want to bother with that.

Auto-completion and hinting is improved in the new editor. All project variables, macros, etc. are included, not just the built-in GML keywords.

GMS2 Code Editor AutoSuggest

The completion hints at the bottom of the Code Editor window are very helpful to remember all the arguments that must be provided to a function, in the right order. And for any scripts which you author, if you use JSDoc commenting, you can provide hints for your own functions as well.

GMS2 Code Editor Completion Hint

Rough Edges

Cursor navigation keys are either different from standard Windows text editors, or else not yet fully implemented. I’m accustomed to, and very reliant upon, using Home|End|Page Up|Page Down|Shift|Control|Arrows to move the cursor about the window, to select text, and for copy/pasting. In the GMS2 code editor, these keyboard shortcuts do not all work as expected, which can be pretty annoying.

In most text editors, Home and End keys will make the cursor jump to the 0th or last position in a row, or if Ctrl+Home|End is pressed, the 0th or last position in the file. Presently, Home and End do not appear to be supported at all in GMS2.

The Arrow keys move the cursor around the document one character at a time, and if Shift is held down, the characters that the cursor passes over are then selected. Holding Ctrl down will speed the cursor up, moving it a word or a paragraph at a time.

For some reason when selecting text using Ctrl+Shift+Arrow, with the horizontal arrows, the selection gets “stuck” at the beginning/end of a row, and will not advance beyond that unless Ctrl is briefly released. This is a relatively minor annoyance, but should nonetheless be corrected. Normally, Ctrl+Shift and the Left or Right Arrow key will select to the next word, and will wrap lines if it reaches the end of a line.

Up or Down Arrow will move the cursor up or down a row, and with Ctrl+Shift held down, should move up/down to the next blank line. This is standard behavior in pretty much every text editor I’ve used in Windows, or Mac OS for that matter, but it is not the behavior in GMS2 at the time of this writing. I am hopeful that this will be addressed before the end of the Beta.

But by far the biggest thing that users are complaining about in the Community Forums has been the way the IDE wastes space in its default configuration, due to the way Workspaces and the Chain View UI work. Fortunately, breaking out the Code Editor into its own, maximized window is an easy workaround to this problem, and largely addresses it to my satisfaction.

Apart from these issues, I like the new UI for the Object Editor, and the Code Editor very much.

GameMaker Studio 2 licensing is de facto subscription-based

Today I had a bit of a reminder, of something that has been gradually coalescing for some time. And since it got my attention, I thought it might be a good time to talk about some specific things, and some far-ranging points as well.

It started innocently enough… I launched GameMaker Studio 2 today, and got an error message:

GMS2: license expired

I clicked Retry, and was prompted to log in with my YoYo Account. I supplied my credentials, and…

GMS2 authentication failed

Something must be wrong with their authentication backend for the IDE, perhaps? My login credentials allow me access to the website, so I know that my credentials are good. I logged in there, and reviewed my license, and my license duration says “permanent” although at the moment apparently there’s something wrong and my license is “expired” according to the software.GMS2 permanent license

I eventually got in by doing a password reset. I’m still unclear why I was able to authenticate to the YYG website, but not GMS2, using the same known-good credentials, but resetting did the trick. I’m back in.

All’s well that ends well, right?

Implications

“OK, so what? What does that all mean, and why should I care?” you might ask.

What it means is this: Despite the label saying so, my product activation isn’t permanent. At the very least, it’s subject to YoYoGames continuing to exist, and having their licensing service up and running, and contingent on my software refreshing some authentication token periodically.

If that can’t happen any longer, for whatever reason, then I lose access to the software that I paid for. And that’s disturbing!

(To be fair, this had been the case under GMS1.x as well, all along, although previously in GMS1 license activation wasn’t explicitly tied to a user authentication. GMS1 users had to have a network connection in order to refresh their product license, which needed to happen about once a month.)

Moreover, although YYG have been quiet about it, all the groundwork is laid for them to switch to a subscription-based model, at a point when they decide the time is right. My guess is that probably this will happen a few years from now, once the consumer software market has accepted SaaS — if and when that happens. I believe it is more “when” than “if”, at this point. The average consumer doesn’t care or understand enough to make it a matter of “if” any longer.

We could quibble if we wanted, but what I’m getting at is that what YYG call a “permanent license” I will call a “permanent subscription.” The license is activated by virtue of the account authentication, and if this ever breaks or is revoked, the software is not usable.

The vendor controls the version numbers, so they can play the game that when they want to break the promise of permanent licensing, all they have to do is release “GMS3” which will be a new product, and thus not bound to the old licensing terms in the way that 2.1 or 2.9 or 2.x would have been. YYG have already done this — they amended the terms of the GM:S Master Collection license, which originally had a provision entitling users who purchased Master Collection to all new versions and modules that YYG released, without qualification; later this was changed to “within the 1.x sequence”. So Master Collection owners would have to pay for GMS2 when it came out.

That’s the thing with these license agreements; the vendor can change them at any time, and users have little choice but to go along with it. This is a major reason why I view click-through agreements as false contracts. In real contracts, one party cannot change the terms of the agreement on a whim, without the consent of the other party. In the world of click-through license agreements, this happens all the time, and users have little choice but to accept it, or stop using the product. Very often, users aren’t even aware of the terms, before or after the change. It’s almost meaningless to the user, because they have so little say, so little power, that there is little to no benefit to them in understanding the agreement that they supposedly are agreeing to.

So of course YoYo would amend a previously stupidly over-open agreement to close a loophole and provide necessary limitations. Of course, that’s just the way business is. Businesses need to make money, and if they don’t make money, they stop existing. Restaurants may offer free refills, but if you go back the next day they make you buy a drink again. But you have to be careful when promising things that are unlimited, permanent, or infinite. The reality is, nothing like that ever exists. Customers should know better than that. It doesn’t stop them from complaining when they discover that in reality there are limits, impermanence, and finities.

To be clear, I don’t mind paying for new versions when they are released, just as I don’t mind buying a new car when my current car is worn out and needs to be replaced. I fully recognize that paying the company for new products enables it to continue developing those products, and I want to support that. But I want to own the car that I own! I don’t want to have to buy a new car every single year, regardless of how much use I have gotten out of my car, or how well the car still works. I don’t want to lease or rent a car, or pay a taxi service to drive me about when I need to go somewhere. I don’t mind that these are all options — I simply believe that consumers should be able to choose freely what makes the most sense for them, the choice that provides them with the greatest value.

Subscription-based GameMaker: someday

Nevertheless, it seems very plain that at some point in the future, YYG intend to switch to a subscription model. This could be the day all casual game developers will be done with GameMaker. I expect that YYG are well aware of this, and will be very careful about how and when they do it. Just as it makes little sense to pay for a gym membership that one only uses a few times a year, it will be hard to justify subscribing to GMS as a software as a service if the service is not used often enough. YYG will want to retain those users.

Well, perhaps they’ve thought of that as well. In Help::About, there’s an interesting statistic that they display for you, counting how long you’ve been running the IDE:

GMS2 time in IDE

Potentially, then, this means that YYG are in a position to offer GMS2 on a metered basis, charging users not on a subscription basis, but on a consumption basis. This could feasibly make it affordable for casual users to pay for the software hourly, and if they use it enough, it could then cap the cost and cut over to a subscription for the whole year.

Let’s say YYG’s business target is to extract, for example, $100/customer/year on average from all users. Professionals will pay considerably more, in order to gain access to “pro” features that they need to do business, such as additional build targets, access to the Marketplace, etc. Pro users are their “bread and butter” so they focus on delivering products with features that will attract and keep the pro segment of the market happy.

These features are by and large attractive to non-professional users as well, and especially to students and other users who have aspirations at turning professional at some point. Cultivating future pro users is very important to the continued success and growth of the product. So YYG will do well to subsidize the student/apprentice developer with professional aspirations.

But a lot of game developers are not releasing games professionally. YYG know this very well. YYG know that casual game developers won’t go for paying an annual subscription that amounts to $100/year. That amount sounds like a lot of money to many people. Many of their users still complain about YYG raising the cost of GM8.x from $25 to $40, and then introducing GM:S at a $99 price point. A lot of GM:S users still only use the free version of the software, and likely will never willingly spend any amount of money on it. YYG know that some users may only use GameMaker for a few hours a year, perhaps amounting to a few days of total usage at the most.

And yet, if you amortize a cost of $100 over the course of a year, it’s just about $0.27/day. In the early 1980s, people would pay quarter just to play one arcade game for a few minutes. $0.27/day sounds much more reasonable than $100/year, even though it’s the same amount. YYG can tap in to the casual developer market as a revenue source by softening the psychological barrier to paying $100 all at once.

So, to bring them in as paying customers, YYG can provide a metered pay option, and if they decided to charge $100/year for the software as a subscription, and to create a perception of “value” for the $100 annual expense, maybe they charge $1/hour or $1/day or $10/month for metered users — something higher than the “bulk” rate of $100/year, but something still reasonable that a casual developer will (perhaps grudgingly at first) accept. At $1/hour, a heavy user would hit 100 hours quickly, and at that point they would be better off cutting over to the annual subscription model (and if YYG wants to keep customers happy, that cutover should happen seamlessly), but a casual user who maybe puts in a weekend game jam or two a year will come close to 100 hours of use in a year, and YYG can still extract close to their goal, by hitting them with the metered cost.

And maybe this is even good. The videogame marketplace is choked with free product produced by, it seems by now, millions of developers, very few of whom are able to make significant income at it. Maybe the barriers to enter that market are too low right now, resulting in glut and pain and low quality products. Maybe easiest to use tool with the largest number of users should be priced out of the reach of people who aren’t really serious and really talented, enough to be able to create truly viable games. Maybe there’s some silver lining to that.

I’m not against YoYo making money, and if this keeps their lights on so they can continue to develop the product, then good for them…

But…

In the pre-SaaS subscription days, software companies would generate the revenue they needed by scheduling a major release to occur (roughly) annually, and sell permanent licenses for that version. More or less users felt forced to upgrade annually in order to stay current, and the vendor would offer an upgrade discount to soften the blow, as well as provide new features, improved user experience, bug fixes and support as the incentive to buy into the annual upgrade.

The crucial difference was that software activation was permanent, and wasn’t dependent upon a service that needed to be up and working. This meant that users could opt not to upgrade, if they didn’t feel that what the vendor was offering was worth upgrading. Often, causal users would choose to remain a few versions behind, rather than pay for the upgrade. In some cases, this was due to not liking the direction the vendor was taking with the product, and very frequently it was due to the fact that software bloat meant that older hardware had a hard time running the latest version of a product, but could run an older version very fast.

The downside of course was that permanently activated licensed software was prone to piracy, and over the years the sales lost to product activation circumvention has been a vast, but literally uncountable figure. Software developers know this and network-managed licenses tied to accounts that are ultimately in the control of the vendor seems to be the final solution.

YoYo have not announced any plan to actually switch to a subscription model, but all the infrastructure is in place for them to switch to it at any time, and I expect that they will at some point. The writing is pretty much on the wall at this point. That day may not be in the near future, but it is probably inevitable that it will happen. Even if it doesn’t happen, users’ “permanent” licenses are anything but, so long as the user must authenticate to YYG’s product activation service on a regular basis, and may be subjected to termination if YYG deems they have violated ToS or EULA provisions. Or if YYG decide they want to stop supporting some old version of the product. Or if they go out of business, or get hacked, or whatever else.

To be clear, it’s not that I have a believe that YYG want to “screw” their customers; it’s that they have the power to do so, whether or not they ever actually exercise this power. No user wants this hanging over their head, and most tolerate it only because they’re unaware, and those who are aware tolerate it only so long as they aren’t bitten by it.

To be sure, it will never be the case that all GameMaker users will agree with every move that YYG will make with the product, and every time they do anything, there will be some users who will complain. Sometimes, some of them will have a valid point, that they are being screwed. Companies inevitably screw customers when it is not profitable to serve them.

My point is, historically it’s always been possible for disgruntled users to continue using the last version of the product that they were happy with. And for now, this continues to remain the case. Only, as of now, it only continues to remain the case for as long as YYG elect to allow it to.

Evolution of the status quo?

And, really, End User License Agreements and Terms of Service Agreements have always held such provisions, haven’t they? Users who do not agree with EULA/TOS are supposed to not use the software. Only, this was less enforceable before use of the software was tied to an account that you have to authenticate. This created both slack which allowed the users to get by even when they didn’t agree to every last term in an agreement, and tension when vendors could discern that agreements were not 100% adhered to, and felt that this was harmful to them.

That unresolved tension is in a slow process of snapping, and it’s the users who are bound to lose. I can say this with certainty, because software users are like any group of consumers, and consumers are averse to becoming organized an acting in solidarity, while businesses can only remain in business by being organized and being focused. Sure, on occasion people may raise their collective voices loud enough to be heard on issues like Network Neutrality and SOPA, but this is always a precarious, ad hoc affair, where the public’s interests are protected at the last minute, as though by a miracle. Companies can afford to play a long waiting game, and like a constrictor snake, squeeze a little bit further each time, never relaxing, until the prey is exhausted and expires. The bottom line is this: computers and software are becoming increasingly more like appliances, and less like tools. The only recourse users have is to stop using; if enough users do that, then they can kill a product. Of course, killing a product in no way creates a better, or more agreeable one. All user “victories” end up being pyrrhic in this sense. So in the end users are still screwed in a “take it or leave it” proposition. At a certain point, the only freedom attainable is to be your own programmer.

The alternative is for vendors and users to respect and support one another. To the extent that this happens, I guess we can say that software-based service companies will be successful. But really, I strongly suspect that users, much like medieval peasants, can tolerate a great deal of oppression and famine before they will revolt. So the existence of a market for software is not by itself sufficient proof of a free or happy market.

EULA/TOS agreements have for a long time now been treated as though they are contracts, even though the reality is that they fall short of being a true contract in numerous ways. Oftentimes, software usage agreements have provisions which are not legally enforceable, but including them is a “nice try” on the part of some lawyer who seeks to erode the public’s rights in some way that allows corporations to consolidate their power over the individual. Very often these “nice try” measures go unchallenged, and once they’ve been around for a while, there’s precedent for them, and suddenly they’re seen as “valid”. They go unchallenged, because users could ignore them without penalty, and pressing the matter in the courts was expensive and risky at best, not because they’re accepted. But by not challenging them, over time they become accepted and normalized.

I’ve never been happy about this state of affairs. Even as a kid, I could always smell something rotten about the idea that you could buy something and not actually own it, but only the limited right to use it under certain specific terms, which you could only agree to or not, with no provision of negotiation. It creates an unequal relationship where one side has nearly all the power, and the other side has very little, other than to boycott.

For this reason, I’ve always felt that licensing was a bogus business model, and that software should be owned outright by a customer who purchases it, with all rights that are implied by that statement. This belief comports much better with the values of the Free Software movement than it does with commercial software, and so for many years I’ve preferred to use Free software. For the most part, though, I’ve been a pragmatic believer in “best tool for the job” and if that meant the best software was commercial/licensed, then ok, but if it was Free/Libre software, then so much the better.

Wider ramifications

I see developments like this taking place in the world of commercial software, and in response I feel more strongly drawn to Libre software. But I don’t think that Libre software is necessarily the right use model for all software development, and I also don’t think that Libre software can protect all users freedoms.

For example, it’s difficult to see how a libre use model would work for entertainment software or art software. Where the point of the software is to provide a very author-controlled experience for the users to enjoy, certain software freedoms may not work. For example, the right to modify and redistribute modified software would mean, effectively, that companies could prey on indie developers who release an innovative game who assume all the risk of creating a novel experience, only to have it ripped off by a company who does very little innovation or risk taking, but positions themselves to exploit the creative work of others. Certainly, some user freedoms are important to preserve, such as the right to port an experience to other hardware, to create archival backup copies, and so forth, but I don’t necessarily feel that all user freedoms must be granted by a developer who is using software as an artistic medium, where the fact that the product is, contains, or uses software is incidental to the product being sold as an experience. It is fun, and allowable, and good, to enable users to create mods of games, but not a requirement or necessary in order for that software to be considered a work of merit. And playing a modded game is not the same experience of playing the original game.

And Libre software doesn’t protect all freedoms: we’ve all seen Libre software used in ways that abuse users rights. For example, much of the internet runs on a platform of Libre software, but provides a closed service to users which does not respect user freedom. I am only able to use Facebook, under Facebook’s terms; I can’t stand up my own Facebook service, which I might modify and redistribute. This despite Facebook being built on a stack of Libre software such as Linux, Apache, PHP, most of which are licensed under terms that say that users have the right to modify and distribute changes made to them, but that the source code must be distributed if the changes are distributed.

Web sites get around this by never distributing — “serving” the software is not “distributing”. You don’t install the source for Facebook on your computer and manage your own Facebook installation; Facebook is a service that you visit, on Facebook’s computer, and log in to it to use Facebook under Facebook’s terms. I’m not just picking on Facebook, they just happen to be the biggest website in the world right now. But pretty much every website ever has always worked this way: you can consume the service it provides, but you can’t own the software that provides the service, can’t install it on your own computer, can’t modify it to work the way you want/need it to, and are therefore subject to the terms under which it is offered by those who do own the service. And so, users are subject to these terms. And their data is collected, harvested, and used in ways that benefit the harvesters, not necessarily the users, and sometimes in ways which harm the users, or are counter to users’ interests.

The Libre software movement recognized a lot of end-user rights that are important, anticipated a lot of ways which those rights may be attacked, eroded, and compromised, but it failed to adequately safeguard all user rights against all possible attacks.

One could argue that by not doing so, it enabled the commercial internet to flourish into what is has become today. And while that’s true, that’s not an all-good proposition.

GameMaker Studio 2 impressions: Preferences

Looking at the Preferences in GameMaker Studio 2 for the IDE, we have a lot of them, and they are logically grouped, and well-organized. Most of the preferences allow customization of cosmetic look-and-feel and UI behavior options.

GMS2 Preferences

The IDE is very customizable. Most of the configurable preferences come pre-set to defaults that make sense, and I don’t see much need to change them, but it is good that you have the control to change them if it suits you. I’m sure YYG anticipated that users would have countless nitpicky complaints about anything in the IDE that they couldn’t configure, and so wisely saw fit to give us the option to make ourselves comfortable. These options are by and large very straightforward and fairly dry to drill through, so I don’t see the need to go through them in depth here. The online manual has all the detail you need.

One very notable change from 1.x does merit mention, however:

  • There is no longer a backup folder. The old “save the n most recent backups” method of source control that was the only option available in GM8.x dsays, and carried over to GMS1.x, is gone completely from GMS2. Using a real version control system, such as git, has long been available, and is what everyone should use, but this does make version backups a bit more advanced for complete newbies. Nevertheless, it is now the only way to go.
  • Source-control integration doesn’t appear to be enabled yet in the GMS2 beta, or if it is I haven’t found it, so if you do want to use version control during the beta, you will have to manage the repository management and file check-in externally to the IDE.

With regard to GMS2’s default preferences, I found very few things that I wanted to change. But there were a few that were important to me:

  • One of the changes that I made was to set “Disable IDE transition animations” to true. While the IDE transitions are nice eye candy, I prefer things to be as fast as possible, and watching the Object editor open up and seeing the Workspace scroll to its location is time wasted, to me. Others might find it helps them to remain visually oriented to leave the animations on.
  • Another was to enable “Automatically Reload Changed Files”. If I work on an sprite sheet using an outside editor, or edit a code file in notepad for some reason, I want those changes to be reflected in GMS2 automatically.
  • The other thing I did was disable showing the background image in workspaces. While pretty, I prefer a plain, uncluttered background of solid grey. You can also set a different background image if you so desire.

Skins

There are two IDE skins, Dark and Light. Dark is the default, and I find that I do prefer it. Light is a bit too light for me, as it has a pure white background, rather than a light grey.

If it were light grey, I might prefer it over the Dark skin. One thing I did like about the Light skin is the code editor’s colors for syntax highlighting, which feels a bit more muted than the bright, rainbow-y colors in the Dark theme.

Fortunately, these colors are all customizable individually, if you want to tune them.

Will we have the capability to author our own skins, or add additional skins? I don’t normally want to spend a lot of time on cosmetic customization, but it might be nice for some to have the capability.

Room for improvement

It would be nice if the code editor settings could be saved collectively, to a profile document, and then loaded, so that you could export them and share with other users, and so you could avoid having to carefully re-set every setting one at a time if you need to reinstall or something.

Indeed, it would be nice to save the entire IDE’s configuration options as a profile, so that I could then switch between different IDE profiles as desired, allowing me to rapidly reconfigure GMS2 for different types of projects, for example I might find that if I’m doing a game that uses 3D graphics, I would want different settings for the Room Editor than I would want to use in a 2D Isometric game, and so on. I can see myself wanting to set up specific settings for grid sizing and snapping in both the Room Editor and in the Image Editor for different types of projects. If I’m maintaining multiple projects, switching back and forth between them, this would be a must-have.

The preferences you set are stored in %appdata%\GameMakerStudio2\[user id]\local_settings.json — this file is human readable, easy to backup, edit, share, and swap if you so desire. This has to be done manually, for now, but it’s my hope that YYG would give us some UI in the GMS2 IDE to save/import/manage preferences as a profile.

Game Options and Configurations

Outside of the File>Preferences dialog, we also have Game Options and Configurations, which is where we find settings that are project-specific. If you’re not sure where to look for some setting, ask yourself: Am I trying to change something in the IDE, or in the game I’m building? If it’s the IDE that you need to change, look in File>Preferences. If it’s some game setting, look at the Options or Configurations branches of the project resources explorer.

A few important things to point out with the project specific Options and Configurations, especially for users coming from GMS1.x:

  1. Room_speed is no longer a thing in GMS2. Instead, there is a setting under Main Options – General, for Game Frames Per Second, which is a global replacement for the old per-room speed. The default is 30.
  2. The default draw color for the project is also configurable here. I’m used to setting this in GML using the function draw_set_color(). To be honest I don’t know why YYG decided to make this a setting, perhaps just to make it simple for Drag and Drop users to find it, but whatever the reason, it’s here.
  3. Interestingly, there are some timekeeping settings here, as well, that allow you to automatically keep track of the Project Start date, Project Use Time, and the DateTime when the Project Last Changed. Potentially, this could be used for billing users for the use of GMS2, if YYG decided to change their business model to something subscription-based, or metered. It’s also neat for if you are trying to track how many hours you have put into a project — although, the time tracked is simply how long GMS2 has been running, not necessarily how long you’ve been actively using it — if you went away for a break and left it up and running, the meter is still counting.
  4. You can find settings for project GUID and author here as well.

In addition to General options, there are also platform-specific options for your game project. In the GMS2 beta, we only get to see the ones for Windows, but I expect users who have purchased additional build targets will find options for each of them here.

For Windows, we can set our display name, project name, version number, company, copyright statement, Graphics options for interpolation, fullscreen, window and mouse cursor, and a few other options. These are much as they were in GMS1.x.

GameMaker Studio 2 impressions: IDE/UI

The biggest change in GMS2 is the new IDE. Completely re-coded and largely re-designed, it has some things in common with the old IDE, but overall it has been re-organized and updated in many ways.

GMS2 IDE

Every form in the UI is dockable, and can be moved around into whatever layout works best for you. This is great. Even better, you can pop out any part of the IDE into its own window, which means that you can spread your IDE out over a few display screens if your computer is set up this way. GMS1.x didn’t play nearly so well on multiple displays.

The resource tree is probably the most familiar element of the new IDE. By default, YYG have positioned it at the right side of the screen, presumably to follow other development environments such as Microsoft Visual Studio. It’s a simple matter to drag it and dock it to the left side of the window if you prefer the GMS1.x way.

Workspaces

Probably the biggest change to the IDE is the introduction of Workspaces. These are tabbed regions where you can dock different forms, so you can organize your project in a way that makes sense to you. For example, if you have a set of objects that are related to each other, you may want to set up a workspace where those objects can be arranged together. You can have as many workspaces as you wish, and you can name them something meaningful. This helps greatly to reduce clutter, and should improve productivity as you can leave workspaces set up and switch between them at will, without having to re-arrange windows and forms all the time.

I love the idea, but after using them for a few weeks, I’m convinced they have some serious issues that need to be addressed.

Workspaces can get very spread out, and this implies scrolling a lot. There is a new shortcut, ctrl+T, which will help you navigate the project more quickly than scrolling:

Another navigational shortcut is to middle-click on a resource name in the code editor. Doing this will take you to the resource’s editor window.

A major problem with Workspaces is that the Workspace region only fills a small section of the GMS2 window. Dockable regions at left, right, and bottom make the Workspaces area relatively small compared to the size of a maximized window.

Inside the Workspace area, you have (potentially) multiple Editors open. Certain Editors use Chain View (see below) which spreads out the sub-editors visually, in a way that takes up quite a bit of space, and will all but certainly require you to scroll, both vertically and horizontally, in order to see the whole thing. Vertical scrolling can be done by mouse wheel, but horizontal scrolling is done by CTRL+Clicking in an empty region of the workspace and dragging, which is slow and awkward.

Another problem is the Dockable areas in the GMS2 window. These do not update contextually according to which Workspace you’re in, or what Editor you’re in. If you open the Room Editor in one workspace, the Room Properties will appear in the Dockable area at the left side of the GMS2 window. Switching to another workspace and opening up a Sprite, the Room Properties are still there in the left Dock, where they are useless for the current context, and serve only to distract and confuse, and take up valuable screen real estate that could have been used to present the Sprite Editor UI and/or provide a larger portion of the screen to display the sprite canvas. Fixing this should be a simple matter of showing/hiding the appropriate panels in the Docks for the current context you’re working in. Whichever editor has focus, its Dockable panels should be the only UI visible (apart from the Menu bar and Resource tree).

Maximizing an Editor should make it fill out the entire visible area of the Workspace. And whenever an editor has focus, its entire form should fit on one screen/workspace area without the need to scroll the workspace. I’m fine with a scroll bar within an Editor, for example if I’m in a really long code file in the Code Editor, or if I’m zoomed way in on an Image in the Image Editor. But I don’t want to have to scroll about the Workspace just so I can see from one end of an Editor to the other. I really don’t want to scroll around looking for different editors that are floating about in the Workspace. I would much prefer a tabbed interface where I can easily switch between tabs. Workspaces could be better implemented as groups of related tabs.

The worst part is when you go to open a code editor. The code editor is used in three situations: 1) when working on a Script resource; 2) when coding Events in the Object Editor, and 3) when editing Room Creation code in the Room editor. In the Object and Room Editor use cases, the Code Editor is chained to its parent editor. The code editor is almost never entirely visible in the visible area of the Workspace pane, meaning that very often the right and bottom of the Code Editor will be out of frame, and necessitate scrolling to see. So you’ll often be unable to see the ends of your longer lines of code, and the helpful code tips that appear at the status bar area in the bottom of the Code Editor will also be out of view. This is awful, and needs to be addressed. Code Editing is a primary activity in GMS2, and when doing it, the Code Editor deserves a maximized view, with minimal distractions surrounding it.

I believe the issues with Workspaces are fixable, but as they are now, they’re a bit of a disaster. I find that they make it easier to get lost, and I spend a lot of time flipping between them and scrolling, hoping to find what I’m looking for. They navigational shortcuts may be helpful, but they don’t come second nature to me, and so far I find that they’re so unfamiliar that I have to shift my mental focus form the programming task I’m working on to “how do I navigate to the bloody resource I need to look at?” which takes me out of “The Zone.” They make a 2048×1152 screen seem small and cramped.

Chain view

Another major new feature is called “chain view”. This is a new view for forms that have several sub-forms. For example, the Object editor has a main form that allows you to set the Object’s properties, and then if you add Events to an Object, these are managed in a sub-form that is chained to the main form. From there, Actions are in a sub-form that chains off of the Events sub-form, with a separate tab for each Event’s actions. This keeps related forms together, making it easier to see relationships between different open windows, and reduces clutter. They do spread out more, since the sub-forms do not overlap each other, and this takes some getting used to.

Menu and Tool bar

One thing that can be a little weird, and takes some getting used to, is the Menu bar. Depending on what form you have focus on, the Menus that appear in the main window’s menu bar will change.

For example, if you’re in the Image Editor, the main window will receive some Image Editor menus, to the right of the Help menu, and not in the Image Editor form.

Open the Image Editor, and some additional menus will appear in the menu bar.

Open the Image Editor, and some additional menus will appear in the menu bar.

This felt weird to me, at first, when the Image Editor is sharing the main window with whatever other forms you have open — I expected all controls specific to the Image Editor to be contained within the Image Editor’s form. However, if you break the Image Editor out of the main window and into its own window, it feels right.

Quick import your Asset files

Importing sound and image files into GMS2 is easier than ever. Just drag a file icon, or even a folder, into the resource tree, and the file will automatically be imported into the project, and a resource created for it.

Nice!

There is a lot more to cover in the IDE, but rather than make this article too long, I will be covering them separately in future articles focusing on the various Editors: Sprite, Image, Object, Room, etc.

Keyboard shortcuts

I won’t list them all (look in the manual, under Quick Start) but these are some of the most important/useful shortcuts, which everyone should know and use.

  • F5 – build and run the project.
  • Ctrl+T – Opens the Goto window to search the workspaces.
  • F2 – In the resource tree, rename the selected resource.
  • Ctrl+K – In the code editor, comments out the selected text. (Ctrl+Shift+K to un-comment.)
  • F2 – In the code editor, opens the code snippets menu.

UPDATED – YoYoGames Marketplace EULA now allows Creative Commons licensing

Update: It turns out that it has always been possible to link a Marketplace asset to another EULA; I had never noticed this before!

YoYoGames apparently has added Creative Commons licensing to their standard EULA for purchases made through their Marketplace with the Creative Commons Attribution-ShareAlike 2.0 Generic license.

The old GameMaker Marketplace EULA is still in use for some assets:

GameMaker EULA (old)

Assets sold under the Creative Commons license show a different EULA:

YoYoGames now uses Creative Commons licensing on the GameMaker Marketplace

Oddly, though, YYG have set up the checkout so that people purchasing assets for GameMaker Studio can make a donation to Creative Commons during checkout. At first, I thought that this was a donation to the asset maker, which would effectively allow a “pay what you want” model for free assets. But after clicking the Donate Now button, it became evident that it was for donating to Creative Commons, the organization that created the Creative Commons licensing. While I’m glad to see the Creative Commons organization getting support this way, it’s a bit confusing at first to someone who just wants to pay for their marketplace purchase.

Creative Commons licensing is a great idea and is exactly the right fit for the purpose here. I’m thrilled to see YoYoGames using CC licensing as another option in addition of their own license.

GameMaker Studio 2 impressions: Pricing

[Rather than posting a long article that takes days to organize, I’m opting to do short-form posts that focus on a narrow aspect of the new GameMaker. This means more frequent, smaller posts, which will hopefully be more timely and more digestable for readers. For more articles in this series, just follow the GameMaker Studio 2 tag.]

This is all very early to talk about, and I recognize this, but a lot of people are talking about how much GameMaker Studio 2 will cost.

YoYoGames have put out their “prospective” pricing out on their website:

Currently, it looks like this:

GMS2 pricing GMS2 upgrade pricing

Analysis

First, I am very happy that YYG did not try to go with a subscription-based model with their pricing. This shows that they have listened to their users, nearly all of whom despise the idea of paying a subscription on an ongoing basis for software. For hobbyists and occasional users, it’s not a good deal to pay for a subscription if they’re not going to use it all the time and really get the value out of it.

I find that the costs are basically in line with what I was expecting. Sure, Master Collection is a few more dollars than it was when they released it 6 years ago, but guess what, that was 6 years ago. Stuff gets more expensive as time goes on. That’s how it’s always been

The upgrade discounts are reasonable. 40%-50% off is not bad for an upgrade.

I do question why certain modules are so much more expensive than others. I would rather see the Android/iOS bundle and HTML5 bundle cost the same as the Desktop bundle. The UWP an Console bundles, I can understand somewhat more, as those build targets are of prime interest to commercial game developers who, it’s understood, make money from the games they produce, and it makes sense that they should be willing to pay more for those tools, and if by paying more for them, it helps subsidize the other users, then great.

I’m sad to see no free edition, apart from the Trial edition. Depending on the limits of Trial edition, it could still be viable for hobbyist developers, but it sounds like it’s more intended as an evaluation edition to allow people to decide whether they want to pay for a real edition that can actually build games.

Community Chatter

So, predictably, most people who are talking about it are complaining that the cost is too much. That’s a subjective judgement, and of course everyone wants to pay as little as possible, and get everything for free if that were possible somehow.

Some people think that all software should be free (as in beer). Mostly, these people just don’t have enough money to afford to pay for software. They spend as much money as they have on just getting a new computer, and then they can’t believe that the cost of the software they need to run can more than double the price of the system. I sympathize, because when I was younger I was definitely one of those people, and if it wasn’t for deep discounts on student licenses, bundles that came with new hardware, and so on, I couldn’t have afforded to buy much software.

Fortunately there has always been a lot of good quality, low-cost or free software available, as well. Different products are aimed at different markets. Companies that sell to big businesses charge a lot of money for their software, in part because they can, but also because they need to, because in order to develop they need big budgets and a lot of employees. But some software is the product of a single developer, who doesn’t have all the overhead that a large company has, and they can afford to sell for a cheaper price, or even give away if they feel like it. Additionally, there are developers who feel that they get paid to program, not to sell copies of software, and they can get funded to do a project that someone who has money needs, but then turn around and give away the software as a public good, and as long as the cost of development is met by a few, everyone benefits from it.

GameMaker’s history started out with a single developer, who sold the software very cheaply at first, and always had a free edition, and a paid edition that cost $20-25. Later, as GameMaker grew, it became too much for one person to maintain, and he sold it to YoYoGames, who are a larger company, and who therefore have more overhead and need to charge more in order to cover their costs, pay salaries, continue R&D and support, and turn a profit.

YoYoGames initially raised prices, from $25 to $40, around the time of GM8, and users howled that it was too much. And we can see in retrospect what a bargain it was, and how childish people who complained back then were. GM:S has been considerably more expensive, anywhere from $70-200, although they have continued to provide a free edition. YoYoGames can’t continue to exist if they just give away software for nothing.

And YYG charge more for extra GM:S features, up to $800 for their “Master Collection” bundle which includes everything, including stuff they haven’t come up with yet, later for no additional cost. $800 is very expensive for most people, and unless you’re making money with the software, or are wealthy enough not to care, it’s probably not for you. It’s aimed at companies that can look at the purchase of software as a capital investment that is part of the cost of doing business. And if by charging more to these customers, it enables YoYo to keep costs lower for individuals, students, and hobbyists who otherwise couldn’t afford to buy what YoYo would have to sell it for, I think it benefits everyone.

Maybe low-budget amateurs will gripe about not being able to get all the features, but they do get something.

You also have to compare GameMaker against what else is out there. And there’s a lot else out there. There’s stuff that’s completely free, like vi + gcc, which is very high quality and extremely powerful, but that isn’t necessarily the best option for everyone, because it requires a huge amount of learning and knowledge and work to create games with. In more direct competition are tools that are geared specifically toward game development, such as Unity3D (which is more expensive, and uses a subscription model now) and Construct, and free tools such as Godot, Love, and Defold, which may not be as well supported, well documented, or easy to use. And many others besides these. The bottom line is, if you don’t like GameMaker because of what it costs, you have plenty of options to choose from, many of which are very good.

So for people who are complaining that it’s too much, I don’t have much sympathy for you. It’s very likely that at various points YYG will have sale events, as they’ve had in the past. If you don’t want to pay the release day price, you can probably wait a year or two and hit a Steam sale or a Humble Store sale and get it at a pretty good discount then. By that time, it will be even better, with more polish and more features. In the meantime, if you have GM:S1.x you can continue use it, it will continue to receive support and bugfixes, and 2.x will be ready for you when you decide you can afford it.

GameMaker Studio 2 impressions: Start Page

[Rather than posting a long article that takes days to organize, I’m opting to do short-form posts that focus on a narrow aspect of the new GameMaker. This means more frequent, smaller posts, which will hopefully be more timely and more digestable for readers. For more articles in this series, just follow the GameMaker Studio 2 tag.]

Here’s what the new Start Page looks like:

GameMaker Studio 2 Start Page

Observations

  1. My display resolution is 2048×1152, and yet the Start Page still doesn’t fit all on the screen without scrolling. Wow.
  2. The top third of the Start Page is taken up by a rotating slide show of images. Personally, I find this annoying. Granted, the Start Page is not a screen I’ll be spending a lot of time looking at, but I just don’t care for the rotating images. I find them distracting. I want a dev tool, not a marketing delivery system. It’s one thing to have the “did you know” tips that provide useful information, and I of course love the news and release notes, but a image that updates every few seconds when I just want to set up a new project is a bit much for me. The images don’t do anything for me, and they take up a lot of space that could be used for something more useful.
  3. Hovering over the rotating slideshow, I noticed the cursor changed to the pointing finger which indicates I’m hovering over a hyperlink. Intrigued, I clicked, wondering what would happen. This is what happened:
    GMS2 Start Page 2Where did Getting Started and Explore go to? How do I get them back? Why did clicking the image at the top of the screen make that happen? It took me a few minutes, but I figured out that if I click the GameMaker Studio logo at the top left of the Start Page, in the transparent ribbon overlaying the rotating slideshow, it puts the Getting Started and Explore sections back.This is really weird navigation. They should just have left and right arrows at either side of the sections, or tabs.

    Start Page UI suggestion

    UI suggestion: Rather than switching between [Getting Started|Explore] and [Tutorials] by clicking on the slideshow or the GMS2 logo, which have no apparent connection to these sections, just use a straightforward left/right arrow navigation system to switch between them.


    Clicking links on the top, which aren’t even obviously links, which have no apparent relationship to the bottom half of the screen, just isn’t good UI design.
  4. I notice Start Page is a tab within the GMS2 window, but I can’t close the tab. What other tabs will appear here when I start using the software?

Vote for GameMaker Studio 2 on Linux

I just created a Twitter poll to assess the interest in a Linux port of the GameMaker Studio 2 IDE.

One of my biggest wish list items for GameMaker Studio is to have the IDE on Linux, so I can stop being a Windows user. I’m on Windows 7 currently, and Microsoft will not support this version forever. Already they have stopped selling new computers with Windows 7. After the way Microsoft treated Windows users who were not interested in upgrading to Windows 10, using unethical, underhanded, and very likely illegal tactics to try to force Windows users to upgrade, I am not interested in ever purchasing another product from Microsoft, and my preferred platform to migrate to would be a popular Linux distro such as Ubuntu or Mint. GameMaker is the only Windows software that is holding me back.

I’ve asked on the GMC Forums if YYG intend to release a Linux port for GMS2, and currently there’s no plans to do so, but they are open to considering it if they see sufficient interest.

In 2014, then-YoYoGames CEO Sandy Duncan had teased us with the possibility that GMS2 would bring an IDE that ran on Windows, Mac OS X, and Linux. Obviously things can change, and a lot of things have changed with YoYoGames since then. Whether or not we see a native Linux IDE for GMS2, it’s still my #1 wish list item for GameMaker.

GameMaker Studio 2 announced

Today YoYoGames released an announcement with some details of the impending release of GameMaker Studio 2.

The biggest news in today’s release:

  1. It appears that they are not moving to a subscription model at this time. YoYo will be selling permanent licenses on a per-module basis for $99 each. There will be upgrade discounts for users who hold a paid license for GM:S1.x, for a limited time. This is very good news for casual users of GameMaker, who would be turned off by a subscription for something they don’t use all the time.
  2. At launch, the IDE will only be available for Windows, but a Mac OS X version of the IDE will go into beta shortly after launch.
  3. No word on a Linux IDE. This was something I had very much hoped would be introduced with GMS2, but at this point at least it seems like there is no plan for it. I really hope that it does happen, so I can get off of Windows.
  4. Confirmed that this is the total re-write that we’ve been waiting on for years, which has been known about for some time. Still not a lot of details on what improvements have been made with the IDE, or whether the GML programming language has changed dramatically. Ideally we’d all like old projects to import into GMS2 and just work, and we still don’t yet know whether they will. There are some significant changes to GML that will impact compatibility with old projects. No doubt this will generate a lot of complaints, but we’d also like GML to add new features and modernize so that it will be more powerful, more easy to use, less prone to bad programming, etc. So this is a balance/trade-off kind of thing. There is a porting guide to help projects that were created in 1.4 migrate to 2.0.
  5. The public Beta for GMS2 begins today, but they are limiting the number of users who have access to the beta for now. At the moment there are no slots available, but YoYo will be adding more slots gradually in the near future.

Additional information

More specific details about changes in GMS2 are available at the YoYoGames Help site.

They’ve brought back a product roadmap! I’m extremely happy to see this.

Deeper dive

Over the last few years, I had been an active contributor on the Suggestion Box subforum in the GameMaker Community Forums. Many of my suggestions were denied, because YYG interpreted the forum as being for suggestions for the 1.x line only.

This wasn’t explicitly mentioned in the forum rules, but came out after numerous ideas that I’d suggested had all been shot down with some mention of “Not feasible in 1.x” and I kept replying, “OK but I don’t care what version it gets delivered in, I still want a GM:S that works this way someday.”

It’s nice to see that one of my suggestions, to have an inheritance system for rooms, has been adopted. Reading the article on this new feature, it sounds a bit more complex than I would have expected, but it is powerful and more fine-tunable.

It should be fun to discover what other ideas from my wish list may have been made a reality in this new version.

GameMaker Studio 2 nearing release

In the last couple of days, YoYoGames have released some teasers that seem to be signaling the immanent release of GameMaker: Studio 2.0. This long-awaited release will overhaul the GM:S GUI, which YoYo have been rewriting in modern C++, and usher in a new era for GameMaker. Beyond that, little is known, as YoYo have been pretty secretive about their plans for the future of GameMaker since being acquired by PlayTech in 2015.

My greatest hope is that GM:S2 will have builds for Mac OS X and Linux. Out of all the software I use today, GameMaker is the last product that runs only on Windows, and I am eager to move to Linux full-time.

It remains to be seen what the release will bring.

Recent purchases of GameMaker who picked it up through the Humble Bundle have been speculating about what GM:S2 will cost. Obviously, a major release isn’t going to be free. It’s typical practice for software companies to sell upgrades to existing users at a substantial discount, so I’m expecting no less.

If YYG do extend discounted upgrade pricing to Humble buyers, most of whom paid around $15, they’ll still be getting an incredible value.