KB Tester utility helps you see what value to check for when a key is pressed.

KBTester is a utility/demo I made to help out with coding your keyboard_check routines. It is born out of frustration and necessity for handling certain inputs from a very fundamental input device for computer games, the standard keyboard, which are not supported out of the box.

If you program keyboard input in your games, you’ll find that, for most keys on a computer’s keyboard, you can use vk_constants and ord(letter)… but for some odd reason YYG didn’t create a vk_constant for every key on the keyboard, and don’t plan to. Not only that, but there are certain keys that don’t return the right value for ord() to work with keyboard_check.

For example, say you want to check if the period key is pressed. You might think that you can do keyboard_check(vk_period) but to your surprise, there is no vk_period constant defined in GML. So, then it must be that you need to do keyboard_check(ord(“.”)) only… it doesn’t work!

That’s because ord(“.”) returns a value of 46. But for some reason, if you want keboard_check() to return true when the period key is pressed, you need to check for the value 190. Why? Why are certain keys on the standard keyboard treated as second-class citizens? Because, sadly it’s not in YYG’s vision to improve keyboard support.

To paraphrase a certain “Evil YoYo Games Employee” who commented on my suggestions for ways the current keyboard support badly needs to be improved:

<paraphrase>Why should we improve keyboard support when you can just research what codes map to your keyboard keys, make an extension that has a few constants in it, and then hope that these will work with all keyboards and all target platforms? Just code it once and then put it up on the Marketplace. Now that the marketplace exists to provide stopgap coverage of GM:S shortcomings, we don’t have to pay our own programmers to fix those holes anymore.</paraphrase>

So, I guess we’re supposed to figure out the numbers and then code some constants for the missing vk_constants, and use those. This, despite the helpfile recommending against using hardcoded numeric values in keyboard_check because you never know if it’ll work on the target platform if it’s not Windows/Mac/Ubuntu:

NOTE: These functions are designed for Windows/Mac/Ubuntu desktop platforms only. You may find some of the in-built variables and constants aren’t valid on other platforms and many of the functions won’t work on mobiles.
Now, each key is normally defined by a number, called the ascii code, and you can directly input this number into these functions and they will work fine… But, as it’s a bit difficult to remember so many numbers and the relationship that they have with your keyboard, GameMaker: Studio has a series of constants for the most used keyboard special keys and a special function ord() to return the number from ordinary typed characters (either letters or numbers).

The implication is that, YYG seem to be saying, “Despite the promise of GM:S to be a development environment that supports multiple target platforms, we didn’t see the need to ensure that your code will run the same on all target platforms we support, or all region/localities, or with all keyboard layouts. After looking into it we decided it was too hard for us to deal with, so we’re passing it along to you to figure out for yourself. So just be aware that these may or may not work on all platforms, and that’s all the info we’re going to give you about that. You’re on your own to figure out how to solve keyboard input from any platforms that don’t work with our keyboard input functions.”

Well, for whatever reason, YYG doesn’t provide FULL keyboard coverage between ord() and vk_constants, and it’s not in their vision to address this shortcoming, so I guess you’re going to have to go out and find some reference that will tell you what numbers represent what key, and then hope they still work.

In the meantime, you can use KBTester, press a key, and get the answer without having to hunt the info down on the internet and hope it’s correct. If you’re having trouble getting keyboard_check to work, and need to verify that the magic number you’re using is indeed the right one, you can run KBTester. Press the key you want to use, and KBTester will tell you the value that GameMaker sees when it is pressed.

Recipe: really good very cute boyfriend stir fry

When I’m cooking at home, I like to do stir fry dishes in my wok. Recently I have been doing this, and have been finding that I have been feeling extra-well, and more energized on days after I have the following for dinner.

So maybe it’ll help you too. It is easy to make, reheats well, and you end up with an amount of food that you can turn into about four or five good meals.

really good very cute boyfriend stir fry

Ingredients:

  • rice
  • tofu
  • broccoli crowns
  • white onion
  • green onion
  • canned water chestnuts
  • canned baby corn
  • snow peas
  • crimini mushrooms
  • baby bean sprouts
  • sesame oil
  • teriyaki sauce
  • hoisin sauce
  • soy sauce

Equipment:

  • Rice cooker
  • Wok
  • wood spoon
  • large pot with lid

Preparation:

Rice.

Start the rice first, because it takes the longest. Depending on the type of rice you use, it will take a varying amount of water and cook time, so I can’t get too specific on this. Just watch carefully the first few times you’re cooking the rice and learn what works with a specific variety.

Some people say you should soak and rinse the rice before cooking. I don’t really bother with that; just a couple minutes of soaking, while I’m chopping the vegetables, and no rinsing.

Press tofu.

Take the tofu out of the container, and press it between two plates with a weight on top. This will squeeze out excess water, resulting in firmer tofu. After pressing for about 20-30 minutes, you can cut it into cubes. You can get away with less press time if you want, but less than 10-15 minutes is not recommended.

Chop vegetables.

Chop the different vegetables up into bite-size pieces. If you want you can save some time by buying pre-sliced vegetables. I usually get pre-sliced mushrooms, water chestnuts, and baby corn.

For the green onions, you just want the pieces to be about a quarter of an inch long.

The water chestnuts and baby corn come pre-sliced in cans, but you’ll need to strain them.

Cooking

Note: With a few exceptions, I don’t really bother with measuring ingredients. Learning to cook isn’t about following precise steps exactly every single time. It’s about exploring and experimenting and being observant and understanding.

Measuring makes it easier to repeat a result, but only if the ingredients are constant. The thing with vegetables and other ingredients is, they’re not very constant. They vary depending on season and freshness.

So the amount of oil or sauce or temperature or cook time that might be good for one session might not work for another, or according to your taste.

You develop a feel for this over time. Vary and experiment until you feel like you know what you’re doing and know what works for you. Use your eyeballs and your head. Use your tongue. This recipe will tell you what I look for when I’m cooking and how I estimate, not how to be scientific and rigid with your cooking method.

  1. Start the rice cooker about 10 minutes before you start cooking the rest of the vegetables.

    I’ve found the type of rice I usually cook takes about 20-25 min to be done, and the wok items take about 10-12 minutes or so to do.I use a rice cooker that I bought at a drug store for $10 like 17 years ago, nothing special (but it’s a really well made and well designed appliance and I’m happy with it).

    Some people use super fancy rice cookers made in Japan, that cost $150+ and use sophisticated sensors and computer programming with AI and fuzzy logic to do perfect rice every time with no fuss. There’s nothing wrong with that. At all. The Japanese know WTF they’re doing with their rice. Someday maybe I’ll buy one myself.

    With my rice cooker, it just has a setting for “warm” and a setting for “cook”. It’s supposed to switch automatically to “warm” after the water boils off. I’m not sure how it knows to do this, I expect maybe it’s by weight but who knows.

    But usually it’s wrong, so I have learned to watch it and flip the switch manually. I just need to keep an eye on it, checking on it after about 15 minutes to see how much water has evaporated.There’s a narrow window (maybe a minute or two, tops) between the water boiling away and the rice at the bottom of the pan starting to burn. That’s what you watch for. When the rice is done, the water should be boiled away leaving moist steamy grains of rice that may stick together or not depending on the variety and whether you washed and rinsed it.
    Sometimes, I see little holes in the rice, that look almost like someone took a bunch of chopsticks and stuck them in the rice, then pulled them out when the rice firmed up enough to stick that way. These holes are created by the streams of steam bubbles coming up through the boiling water. You don’t see them until toward the end when the rice is ready, and they don’t always form. But if you do see them it’s a good sign that the rice is ready.

    My rice cooker has a second stage to it, a basket that goes on the top of the cooking bowl, which you can steam vegetables, dumplings, or other food in. I put the broccoli in here. If your cooker has this feature, you can do that too, if not just stir fry it in the wok.

    Broccoli is done cooking when it is still bright green and stiff and crunchy. It is overdone when it starts to wilt, turns a darker green with a brownish tinge, or gets mushy. Basically, you just want the broccoli to be hot, not to break down the cells of the plant that make it crunchy and crisp.

    Fortunately it takes about the same amount of time to steam the broccoli as it does to cook the rice. But you may need to pull the broccoli a little early. Just lift the lid and check on it after about 10 minutes and see if it looks good.

    I don’t put anything on the broccoli while it’s steaming, just let it steam on its own. After it’s done steaming, I’ll throw it in the wok for a few seconds to a minute, taking care not to overcook it, to get some flavor from the sauces and oil.

    As soon as the rice cooker is set up and going, I turn my attention to the wok and the vegetables.

  2. Throw some sesame oil into your wok, and ignite the burner under it. Gas stove top is the only way to fly here. A “splash” of oil, enough to coat the cooking surface and leave a slight puddle is sufficient. You’re not deep frying, so you don’t need to cover the ingredients in oil, you just need enough to keep them from burning to the cooking surface of the wok. As you run through adding the different ingredients, you may need to add a little more oil at times.

    Tilt the wok so the oil flows over the entire inner surface, as close to the edge as you can get without spilling the oil. Then put the wok on the burner and let the oil flow back down to the center and get good and hot. If it starts smoking, it’s ready, but it’s also ready before then. It only takes a minute or so to heat up good and hot. Woks are made from thin metal that heats up quickly, and don’t retain the heat very long. It should be hot enough to start cooking very quickly.

  3. Now, cook the vegetables and tofu in the wok. Wait, tofu’s a vegetable too, right? Whatever, just cook the vegetables.

    Starting with the thickest, sturdiest vegetables, working my way down to the flimsiest, I cook each ingredient with a little bit of teriyaki and hoisin sauce, and throw on a little soy sauce as well.

    The sauces help flavor the food as well as keep it from drying out while it’s cooking in the oil. Oil heats up much hotter than the boiling point of water, so it can really dry out food from the outside in and turn it crispy. That’s what deep frying is all about — drying out the surface of the food, making it crispy. But with stir frying, you want to preserve the moisture in the food, and just give it a light coating of oil so it won’t stick to the wok. The oil helps transfer the heat into the food. But you don’t want it to dry out or it will burn. So you add a little sauce to help balance moisture and add flavor.

    It’s easy to use too much sauce, but there’s no strict guideline on how much to use. When I first started my wok experiments, I used too much, and my food didn’t taste like the food it was, all I could taste was the sauce. Now, I use less, and it flavors the food, the sauce doesn’t mask the food and become the entire flavor.

    You don’t want a deep pool of sauce at the bottom of the wok that the food is boiling in; you want a coating of sauce that you can stir the food in.

    Soy sauce is the most watery of the three, and adds moisture to the food while also adding a salty flavor. Teriyaki is sweet. Hoisin is sweet and a little hot. I find these blend well together, but you can experiment with other types of sauces. Fish sauce, oyster sauce, sate sauce are all worth looking at, as well as others.

    If you want to you can also toss in other spices, such as ginger or dried chili peppers, or whatever else you want. These can add even more flavor. But resist the temptation to overwhelm the dish with these flavors. Strong spicy dishes can taste great, but if you dial back and let the spice accent the food flavor rather than smother it, it’s even better.

    I know lots of people like to flip and toss and catch their food with the wok, and this is considered the correct way to use a wok, but I don’t find this to be all that necessary. I just stir it with a large flat wooden spoon/spatula thing, and it works just as well, without risk of spilling the food or straining my wrist. If you enjoy flipping the food around and being a showboat, knock yourself out.

    The purpose of stirring the food is to move it around so it doesn’t stick to the wok and burn. Also it helps even out hot spots so that everything cooks to an even temperature. Also it helps distribute the spice and sauce over the whole surface of each piece of food. Also, it helps the food flip over so it gets cooked from all sides, not just the side it happened to land on when it landed in the wok. And if you’re cooking more than one ingredient together, it helps them to mix. That’s it.

    As each ingredient is cooking, I sample a piece every now and then to see how it’s doing. Once it’s done how I like it, I transfer the food from the wok to the pot, and put the lid on it to keep things warm. I work my way through the ingredients, doing the thicker, sturdier foods first, and cooking them longer, and the lighter ingredients last, cooking them briefer. Items like baby corn, water chestnuts, onions, mushrooms, and tofu all take longer, several minutes, and can be done together if they fit in the wok, or done separately if there’s too much. Broccoli takes long too, unless it’s already steamed, in which case it just needs a short bath in the sauces. Items like spinach leaves, green onion, and baby bean sprouts don’t take long at all, and can be thrown in toward the end for a minute or less.

    Tofu is done when it starts to brown on the edges and develop a bit of a skin. If it’s not pressed enough to remove enough moisture, it may not brown on the edges or develop a skin, so keep that in mind. If you want to, you can do meat instead of tofu: chicken, beef, shrimp, or something else. Be sure to cook chicken thoroughly.

    Once all the ingredients are done, mix them up in the pot and then scoop it out and serve with the rice.

Open Letter to Smart Phone Manufacturers

Dear Smartphone Industry,

I don’t need a bigger screen, OK? I need a screen that will fit comfortably in my pocket. My front hip pocket to be exact. The dimensions of the Samsung Galaxy S5are about as big as I can go. Really, the S2 was more comfortable.

I don’t need a thinner phone. I need a phone that feels comfortable in the hand.

I don’t need a thinner phone. I need a phone with ample battery, such that I don’t need to charge for several *days*, despite heavy use of the device. If you made the phone phone that was inch thick, and all that extra space was battery, and I could go a week without charging, that would be AMAZING.

While we’re at it, I would also really like intelligent battery management. I would like apps that need to use the network to not talk to the network directly, but talk to a network handler, which will determine if/when to allow the data to be transmitted. I can then configure the network manager to either not allow any transmission (like airplane mode; saving maximum battery), or allow all transmissions at any time (fastest response but lousy battery), or burst mode (leaving the transmitters off most of the time, but waking up and reconnecting every N minutes, sending/receiving data that has accumulated in that time, or when I request it).

Lastly, tell network providers to quit bundling apps with their phones. I don’t want or need so many of them, and there’s no way to uninstall the ones that are baked into the firmware. I can figure out what I need and install it. If I’m upgrading or migrating from an old phone, it should carry all that stuff over, with all my settings and data anyway. There’s no need to bundle anything. Just provide me with a bare phone.

And tell network providers that they must roll out security updates in a timely fashion (days, not months) so that users aren’t left vulnerable. Frequent, more granular updates rather than one or two monolithic updates before support for my handset model is dropped entirely, would be great.

Thanks,

The Case for GameMaker, and a defense of criticism

In recent weeks, I’ve been fairly outspoken and critical about the velocity with which YoYoGames have been delivering change in their core product, GameMaker: Studio, since being acquired by PlayTech.

In response to this, Twitter user and fellow GameMaker developer @doppp pointed out that my remarks about YoYoGames’ failings with GameMaker of late serve as an anti-sales pitch for my GameMaker assets:

Well, I suppose that’s a fair point to make.

I gave @doppp my short answer: if you’re already using #GameMaker and are happy with it, there’s no reason not to purchase assets that look useful.

A long answer demanded more space than I can put into a tweet, or a series of tweets.

So how can I simultaneously ask people to pay money for the assets I’ve created while criticizing YoyoGames?

Criticizing isn’t bashing. Or negative.

When a problem is real, pointing out that it exists and that something needs to be done about it is NOT being negative. People like to say that it is, but it isn’t! Ignoring problems and acting like they don’t exist is worse.

As a user, I’m entitled to criticize the product, to say what I like about it as well as point out problems and ask the developer for remedy. Why? Because I’m a user! These are my experiences! That’s why.

Also, GameMaker is closed source, so I can’t freely modify it to better suit my needs. That’s why.

And because I paid for a license. That’s why. I paid for a Master Collection license, which costs around $800.

To be sure, even a user who’s never spent a dime on GameMaker can have a valid opinion about it. And the fact that I’ve spent money on a license doesn’t make my opinions more valid. But it does show that I have a larger stake in the product than does someone who hasn’t.

My time is valuable, I’ve sunk quite a bit of it into GameMaker, and I want GameMaker to continue to improve and be successful.

I’ve been using GameMaker since version 8.1, for a good six years now. I was an early adopter of the GameMaker: HTML, and GameMaker: Studio. I purchased a Master Collection license for Studio in order to have full access to every feature the product offered or would offer. I’ve contributed technical review to two published books on GameMaker.

I have the experience to offer valid opinions on it. Does that mean I know everything, or am right about everything? Of course not. But it does mean that my opinions are not uninformed.

Software development doesn’t happen in a vacuum. Developers depend on users to make it known what their needs are and what their pain points are. Providing this feedback in a useful and productive manner is a valuable service, and developers ignore stakeholder input at the peril of the product they’re producing.

Obviously, any company has limited resources and can’t do everything that every customer wants, and YoYoGames is no exception. But it’s still necessary and important for their customers to provide feedback. I haven’t once felt that the employees of YoYoGames resented my feedback. They may not always agree with it, and that’s fine. I respect them, while at the same time striving to make the best case for the validity and importance of the feedback that I offer to them.

Let’s be clear: We all know that there are pros and cons to any product. The cons are negative. Acknowledging that they exist, pointing them out, and discussing them isn’t negative.

OK but it’s not fair to slam YoYo in public. You’re hurting their reputation and their sales. Therefore, you cannot say you like them.

First, I would dispute that my public comments re: YoYo are “slamming” them. I do my best to offer fair and valid criticism. And doing so publicly is actually my last resort, something I do sparingly and reluctantly.

I’ve actually provided feedback to YoYoGames in a number of ways over the years. I submit bug reports. I engage with YoYoGames support. I post suggestions on the official community forums. All of this gets read. Generally speaking, the bug reports and support requests are handled well. Bugs that turn out to be real issues get prioritized and fixed.

The situation with the My Library bug that I’ve been publicly vocal about, has not been handled well. After submitting a support request and opening up a bug report for this issue, I’ve waited well over a year, and seen no remedy to the problem, other than a suggested workaround to deactivate some of the Marketplace assets that I own, until the performance My Library becomes reasonable. This is not a solution, and even as a workaround it’s not very good. YoYo needed to address this issue as soon as it came to light, and they didn’t.

Fortunately, subsequent to my article appearing in public and getting some significant exposure, YoYo Community Manager Shaun Spalding started a discussion in the new Forums asking people for what they’d like to see done with My Library. I take this as a sign that they’re listening and starting to take steps in the right direction. Would that it were sooner, but at least it’s happening now. Maybe that discussion wouldn’t be happening if I hadn’t sounded off about my frustrations. Sometimes you need to speak out.

The other situation I’ve been vocal about was the poorly handled migration to the new community forums. Here, YoYo should have done a better job of explaining to its users what was going on. They didn’t, and after two months of waiting with no official word about what was happening, I felt it was necessary to state the reasons that this was unacceptable. The only place I had available to do this was in public.

Brand management, community relations, and customer service are extremely important, and it was very distressing to see YoYo failing so badly at it. It was entirely appropriate to express serious concerns over the future of the product.

Bottom line, YoYoGames exists in public. It’s fair to talk about public things in public. Whether or not YYG’s hands are tied to talk about their product in public, the public is going to talk about their product. The best way to get people to say good things about you is to be good, and to fix things when you are not good.

Overall, YoYoGames have been very good owners of GameMaker. I’ve yet to see reason to believe that PlayTech is a good owner of YoYoGames. I don’t know what goes on behind the scenes, so I can’t say for sure, but it feels to me like YoYo was doing more, better, sooner before they got acquired. That may or may not be true, but that’s how it appears to me.

OK but if your criticism of YoYoGames is true, then why should I sink any money into GameMaker development when it has these problems?

Well, that’s something everyone has to decide for theirself, but of course that answer won’t suffice here.

Ultimately it’s YoYoGame’s job to persuade you that their product is worth your time and money. But definitely, customer testimonials are strong persuasion.

Look, every product has flaws. People who are enthusiastic about products tend to talk a lot about ways they could be improved. That doesn’t mean they don’t like the thing they’re talking about. Far from it!

I used to recommend GameMaker perhaps more enthusiastically, but always conditionally. I still do, actually, but now it’s with a bit more conditions. It’s a fine tool, that doesn’t mean it’s right for everyone.

Why buy into GameMaker? Whether in terms of time or money, GameMaker is great if:

  • You want to do rapid prototyping and get something up and running quickly.
  • You want to do 2D game development of relatively small, simple games. (Sure, GM:S can handle larger projects, but there are other tools to consider when your project scales above a certain size.)
  • You want a simplified developer experience without all the headaches of more complicated tools.
  • You have no experience developing software and want to express your creativity with a tool that won’t overwhelm you with its complexity.
  • You need or want access to the features that a paid license unlocks.
  • You feel appreciation for the work YYG have done so far and want to contribute to that success financially.

I used to say that GameMaker is worth considering for game developers with professional aspirations, because since I started working with the product at version 8.1, I saw consistent, rapid releases of impressive new features that expanded the capability of the tool, year after year.

I’m not saying that now, because in the last year I can’t think of anything new that they’ve introduced since the PlayTech acquisition, and professional developers depend on their tools to continuously improve. Here’s a timeline showing what YYG have delivered during the life of GM:S so far:

Late 2010/2011:

  • GameMaker HTML5 (essentially a beta of GM:S that built only to HTML5)

2012:

  • GameMaker Studio launches.
  • Windows 8, OS X, iOS, and Android build target
  • GM:S available through Steam
  • Publish games to Steam Workshop

2013

  • Tizen build target
  • Ubuntu build target
  • YoYo Compiler
  • Networking
  • Shaders

2014

  • Physics
  • GameMaker: Marketplace
  • GameMaker: Player

2015:

  • PlayTech acquisition (February)
  • Then-CEO Sandy Duncan says they expect to release GM:S 2.0 “sometime in 2015”
  • Universal Windows Platform (UWP) build target (November)
  • Roadmap goes dark.

GM:S 2.0: originally planned a release sometime in 2015; as of August 2016 it’s still in closed beta. Delays happen, and often for good reason. It’s plausible that the delay in this case has to do with the acquisition by PlayTech, as being acquired is often disruptive to operations, but I don’t know what the reason is.

2016:

  • New forum software goes live (after nearly 3 months delay while old forum in read-only archive state).

So, unless I’m missing something, apart from UWP, basically nothing new/major in the last 2 years, coinciding with their acquisition by PlayTech. Just bugfixes. That’s not nothing, but that’s not major, either.

That could be a coincidence, I suppose. It could be that not much was delivered in 2015 due in part to the transition of ownership, but also due to so many new features being part of the new codebase that makes up 2.0, and 2.0 being delayed. But it does seem like their velocity of delivering major new features has slowed, especially compared with 2012-13.

My point in saying all that is not to be negative, but to present evidence. If YYG were delivering with the same velocity they were in 2012-13, I’d be very happy and recommend them without reservation. They don’t seem to be, and that’s a concern. They’re no longer talking about what their future plans for the product are, and that’s a concern. They had a very visible failure to deliver the new forums, and didn’t handle the community relations around that well, and that’s a concern.

The product is as good as it’s ever been, and it’s never been better. Can I use it now? Absolutely. Do I like using it now? Apart from My Library, yes.

But does it have a bright future? Is it going to be what I’m going to want in three or five years? I have no idea. They stopped publishing their Roadmap, so I literally have no idea. I presume they’ll continue to be around, but I don’t know what new features they’re planning, or approximately when to expect them. I don’t know that they’ll continue maintaining what they’ve built so far, or if they’ll neglect features as they’ve neglected the My Library feature. It does raise cause for concern.

Let me be clear: I fully expect that GameMaker will still exist 5 years from now. But I don’t know how much better it will be from today. And I think there’s some reason to be concerned that it won’t be as improved from 2015 in 2020 as it was from 2010 to 2015.

So, bottom line, if you have GM:S now, and use it, and like it, there’s no reason not to spend a small amount of money on extensions or other assets that look like they’d be interesting or useful to you. Just watch how many assets you keep active if you own a lot of assets.

If you’re new to Game Development and considering purchasing GM:S, or one of its competing alternatives, I don’t know what to tell you. GM:S is still great for beginners, and the Free edition is a great tool to start learning with. The free edition certainly is worth checking out. But as far as purchasing, you’ll have to decide for yourself based on how well you like it, and what your own impression is of the product’s future.

I like GM:S for a lot of reasons, but there’s good reasons to consider other tools: Unity3D, or Construct2, or Godot Engine, or something else. As for spending money on the Professional edition, it’s a maybe, downgraded from a recommended.

What could turn that recommendation downgrade around?

Well, right now it’s a wait and see game to see what happens with 2.0. If you haven’t paid for 1.x yet, it may be smart to hold off until we find out whether 2.0 delivers the greatly improved experience with the IDE, or if the IDE rewrite turns out to be a bust. I have high hopes, and I’m eager to find out.

On the other hand, there are plenty of risks? Will 2.0 drastically change GML, such that Marketplace assets all break and need to be rewritten? Will the improved room editor be a dream to work with, or minimally improved? What new features will be coming with 2.0? It’s worth waiting and seeing.

On the other hand, if you’re already invested in 1.x, and are using it, then sure, you know what you have and that it’s good enough for you right now. Go ahead and spend some money on extensions that other GM:S users have developed.

The Math: doing business on itch.io vs. GameMaker Marketplace

Following up on my previous post comparing itch.io vs. the GameMaker:Marketplace, here’s some math that explains the difference in costs for selling an asset through each store.

YoYo Marketplace Itchi.io
base price  $1.99  $1.99
store’s cut  $0.60  $0.20
paypal’s cut  $0.36
net income  $1.39  $1.43
net income % of gross 70% 72%

As can be seen, the transaction fees are not included in itch.io’s cut, while they are included in YoYoGame’s cut.

For low-cost assets, this eats up much of the 20% difference between YYG’s 30% cut and itch.io’s 10%, resulting in just a 2% difference after the per-payment transaction fees are factored in on a $1.99 asset. A difference of 2% may not sound like much, but in business that’s actually huge.

The gap only widens with more expensive assets:

YoYo Marketplace Itchi.io
base price $19.99 $19.99
store’s cut  $6.00  $2.00
paypal’s cut  $0.88
net income  $13.99  $17.11
net income % of gross 70% 86%

For assets that are priced higher, the cost of transaction fees will be less of a factor, meaning the advantage of itch’s service model will only grow as the sale price increases.

In the end, it will come down to which marketplace is more effective at generating a volume of sales that makes publishing there worthwhile in the first place. With the current glitch affecting the performance of My Library, causing “large” purchase manifests to take several minutes to display in GM:S, it seems to punish GM:S users for purchasing a lot of assets, and this would seem to concede the edge to itch for now. I keep hoping that YYG will fix this bug, but I’ve been waiting over a year since I first reported it.

But clearly, there’s a need for transaction costs to go lower in order for low-cost items to be worth selling. I’ve been waiting for a viable micropayment system for going on two decades now, though, and nothing seems to be going on in that realm. (PayPal does offer a micropayments option to merchants, at $0.05 + 5% per transaction, but it does not appear that this is an option through either itch.io or the GameMaker Marketplace, and this fee schedule replaces ALL transactions paid to the account in question, not just microtransactions, so it’s not really an ideal solution.)

Of course, you can also adjust the cut that itch.io takes from you to as low as 0% if you want, but it seems fair to allow them to have something for the benefit they provide you, so they can keep operating. Bottom line, a 10% cut for the services that itch provides is a very good deal compared to what you can get elsewhere.

Itch.io also offers greater flexibility with payouts, allowing sellers to have access to their money immediately after every transaction if they wish, or to receive a periodic payout. YoYoGames holds seller’s income until it reaches a minimum amount of $100 before you can get paid, so essentially you get paid in $100 chunks, and YYG may end up holding up to $99.99 of your earnings indefinitely. Two years on, and I’m still waiting to collect my first payday from YYG — I’m a little over 3/4 of the way there now.

A great feature that itch.io offers but the GameMaker Marketplace currently doesn’t is bundle sales. Bundle sales can help by cutting many payment transactions for multiple assets down to one. I offered my four paid assets in a bundle at a 33% discount, and so far all of my sales through itch.io have come this way. Such an option would be a welcome improvement to the GameMaker: Marketplace.

The death of (open) Instant Messaging?

Instant Message services were a Big Thing in the 1990’s and early 2000’s. Everyone seemed to use them, and all the wannabe big players on the internet were offering some form of instant messaging. AOL, Yahoo, MSN, Google, you name it, everyone had a service. It was a great way to contact friends, as well as continue conversations started in real life with recent new acquaintances.

There was much competition among the providers to see who could get everyone to use their client and their protocol. Users understandably didn’t want to have to install and run a half dozen different clients to do the same exact thing with all these different services, so naturally they rebelled and gravitated toward open source clients that supported multiple protocols, perhaps not with all the bells and whistles, but well enough to conduct basic text-based instant messaging with their contacts.

Many of these were closed protocol services, meaning that they were intended to work only with a proprietary client, which (tried to) force users to connect to the service with the official client. There were numerous open protocols competing for users as well, and open source multi-protocol clients, which mainly promised a better user experience (with no advertising) and often better privacy, and other useful features such as chat logging and a plugin framework that allowed greater customization and extensibility. gAIM, initially an open source implementation of the AOL Instant Messenger, later morphed into a multi-protocol client that rebranded itself pidgin, to avoid confusion with the AOL-trademarked AIM. There were also Trillian and ICQ which offered similar open source clients with multi-protocol flexibility.

For several years the closed services fruitlessly tried to lock out these open source clients, forcing people to update frequently to keep compatible. Eventually service providers relented and gave up the arms race to lock out the open source clients, and things settled down and became peaceful for a time.

Then came Facebook. The rise to dominance in the social media sphere resulted in a decline of other messaging services. For the last however many years, I’ve mostly used Facebook messages, because that’s what everyone seems to use anymore. Social applications go where the users are, and facebook has the users. I can’t remember the last time anyone has attempted to contact me through my AIM account, and I’ve never really used YahooIM or MSN Messenger, although I technically have accounts because they came for free with a Yahoo or MSN or Hotmail account. I also use gmail chat sometimes, but also with diminishing frequency.

So, when I bought a new laptop back in March, it wasn’t a high priority to set up my pidgin accounts right away. I only got around to trying it just this last weekend. I do a lot of fb chat on a daily basis, but I just used the desktop website for that, and didn’t really notice anything missing by not logging into the other services.

All of a sudden, I can’t use most of my accounts through pidgin.

  • My AIM account has an SSL error when I try to connect through pidgin.
  • The Yahoo IM service is being shut down soon as part of Yahoo’s continued decline into irrelevance.
  • My google accounts warn me that the login is insecure, and recommends that I not allow it. I take my google account security seriously, so I heed this warning. I’m unclear if there’s a way to use pidgin to connect to gTalk securely, but I haven’t really looked into it as yet; if I need to I have the Google Hangouts app installed on my phone, and I can use the gmail web client to chat with people. It’d be nice to have everything in one place, and I’d like that place to be pidgin, but at least I can still access the service.
  • Facebook seems hellbent on closing off instant messaging services to Messenger only. I’d rather never talk to any of my friends ever again than be forced to use Facebook Messenger. The only other reliable method of messaging through Facebook remains the full desktop website; mobile crashes when I try to use it for messaging from an actual mobile device. And FB nags me to try Messenger whenever it thinks to. On my smartphone, Facebook wants me to install Facebook Messenger, which I DO NOT WANT. They started locking out mobile website users of their messaging feature, such that my browser crashes if I try to access the feature through m.facebook.com. I switched over to Trillian for Android, which worked for a few weeks, and now it too has issues. At first I noticed that I could not receive incoming messages that had hyperlinks or images. Now, I can’t even send plain text, although I can still receive it. Hopefully this is something the Trillian developers can work around, but it is looking like FB has resumed the arms race to lock out independent clients from accessing the service.
  • Livejournal has always embraced openness with its messaging, using XMPP for its protocol. So it works well with pidgin still, and out of the accounts I accessed through Pidgin it seems to be the last one standing. But it was never a popular IM option even when LJ was one of the top social media sites, and LJ has been a ghost town for years.

My assumption is that proprietary services want to force you to use the official clients so they can shove advertising down users’ throats, and so they can completely control the user’s client-side experience, including sideloading non-optional unwanted software (what we’d normally just call malware if the purveyor wasn’t a big corporation who feels entitled by EULA/TOS to do whatever they want to their users).

And so it goes with the way of all things, that they fade and die as time goes on. It’s a little bit sad to see the old mainstays fading to irrelevance. But mostly annoying that the protocols that are still going strong have been pulling away from the open clients.

NES enters the HDTV era

Old school console gamers appear to be on the cusp of a renaissance as new options for bringing the NES to modern TV in glorious high definition resolutions keep coming out.

I haven’t seen any of these in person, and only one of them is available now, but here’s my impression based on what’s been published about them so far:

AVS by RetroUSB

$185. Pre-order now, shipping mid-Sept 2016.

On paper this looks to be the best of the bunch. This is a real-hardware console, incorporating a NES and a Famicom cartridge slot, built-in 4Score (4 controller ports), power supplied by USB cable, and does HDMI output in 720p. This is pretty much everything you’d want in a NES, all in one package.

It remains to be seen whether RetroUSB will deliver on time, and what the quality of the hardware will be, but this could be the way to go if quality is good. They are an established company and have been producing controllers, adapters, and homebrew carts for NES and other old school consoles for years, so they do have a track record of doing quality work.

Hi-Def NES by game-tech.us

$120+ depending on options. Shipping now.

This is a DIY kit (professional installations available through various 3rd parties for around $85) for original NES (both the front and top loader). You do surgery on your NES and add a daughterboard that gives you HDMI-out.

Designed and engineered by well-known console hacker Kevtris, the Hi-Def NES appears to be a very well done mod, yielding a high quality 1080p image without the lag associated with running a NES through upscalers, and provides many options in firmware to tweak the output to taste, including aspect ratio, scan line, and interlacing adjustments, to ensure you can get your picture just right.

The mod is fairly involved to install, so paying a professional to do it right is probably worthwhile, but going this route makes it a little more expensive than the AVS. As well, the mod doesn’t do anything about adapting Famicom games to play on it, although you can just get an adapter or run Famicom and PAL games through a flashcart, and if you’re a serious enough retro gamer to go for this mod, these are probably already in your arsenal.

Best of all, it’s available now. Game-tech does other mods and repairs of old consoles, although right now they’re focusing exclusively on selling Hi-Def NES, and from watching their youtube channel it’s apparent that they know what they’re doing, have a lot of experience, and really care about old school gaming.

NES Classic by Nintendo

$59.99. Available 11/11/16.

This is an official Nintendo product. It comes preloaded with 30 titles, all of which are worthwhile games, but does not have a cartridge slot, and does not have a way to connect to the internet to download any other games, which are serious downsides for many. It does have HDMI output, and allows you to save your games, which is a new feature unavailable from the original hardware.

It’s considerably cheaper than either the AVS and Hi-Def NES modkit, making it an attractive option to gamers who have never owned a NES and don’t already have a library of cartridges to play. Given the cost in the collector’s market of the top titles on NES in their original format , acquiring such a catalog today starting from nothing would be a very expensive prospect compared to just buying this.

While I don’t expect that this option will hold as much appeal for gamers who still have their collections, it should have some appeal to a broader market.

The csanyk.itch.io store

My itch.io store, csanyk.itch.io, is now live.

Currently, I’m offering a 33% sale for my paid assets, through 8/31/16.

Get the csanyk introductory bundle

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.

YoYoGames: “No roadmap for GM:S. Our Hands Are Tied!”

For a long time, YoYoGames used to publish a roadmap, showing their plan for the future of GameMaker: Studio. Interested parties could look and see what new features were in the works.

Since PlayTech took them over, they’ve taken this information offline.

In a recent Forum conversation, YoYoGames employees Shaun Spalding and Mike Dailly explained that while they wish they could communicate the future of the product, their hands are tied, and when they can talk about things like upcoming release dates and new features, they will.

This is very disappointing to serious GameMaker Studio users. A roadmap is an important document for developers. Software development is all about maintainability. In order to write software that is maintainable, it’s important to know how the tools you are using will be changing over time. Knowing the future plans of the tools can help developers avoid wasting time using features that will be deprecated and removed in the future, or avoid wasting time writing their own implementation of a feature that is planned in an upcoming version. A roadmap also prevents the repeated asking of the same questions, “when is [X] coming out?” or “I suggest you implement [already planned feature].” A roadmap is part of the conversation that happens between a software developer and the users, and not having one harms both the company and its customers.

Most software engineering projects intended to be consumed by other developers have a roadmap. Other game engine developers such as Unity3D and Godot Engine have public roadmaps.

It is my hope that PlayTech will change their policies surrounding information of their products, and allow their employees to engage in open conversation about their products. In the meantime, concerned GameMaker users should speak out and make their voices heard.