csanyk.com

video games, programming, the internet, and stuff

YoYoGames discontinues sales of GameMaker for Mac

YoYoGames announced yesterday that they have discontinued sales of GameMaker for Mac (the GM7-based IDE for Mac OS X, not the build target module for GameMaker: Studio to allow building games for Mac OS X).

I don’t expect that this move surprises or disappoints many. This version was long out of date and did not include features from the 8.x and Studio 1.x sequences of the product, and had languished while YYG focused its resources on the success of GameMaker: Studio.

YoYoGames stressed that users who already own GameMaker for Mac are still supported and can install and use the product that they already own.  YoYo say that they are still committed to supporting development on the OS X platform with a future release of GameMaker: Studio, but the expected release date for this is as yet unannounced.

One would hope that with the ending of sales for the old version, the replacement product might be coming soon.

It’s good to see YoYo communicating its intent with the product like this. The announcement was clear, addressed possible misconceptions, and came through an official outlet.

 

 

GameMaker EULA restricts developer creativity

[Editor’s Note: After a busy year or so of low posting frequency, during which I started but never completed many articles, I’ve been going through my old drafts, working to complete old articles that still hold relevance. So this is an old topic, though not out of date, which I started writing in May of 2015, and I don’t mean to stir up new debate over it, but it’s worth being aware of.]

YoYoGames has restrictions in the EULA for GameMaker which states in essence that users agree to allow YoYo the authority to determine whether a game produced by the user is in line with their moral standards, and the right to terminate your license if they wish should you produce something they deem objectionable, without explicitly spelling out what counts as objectionable.

An April 2015 discussion on the old GameMaker Community forums raised this issue, but is now hidden due to the closure of the Suggestion Box subforum, but still available through the Internet Archive’s Wayback machine.

To summarize the discussion, YYG don’t seem to be actively policing their policy, nor are they specific in explaining their standards for acceptable content in games. They seem to be treating the EULA clause as something they can invoke if they so choose, but not actively evaluating published games to ensure they don’t violate it.  And currently they seem to be pretty lenient about what they deem acceptable — for example, they deem Hotline Miami to be clear of violating their standards. Accordingly, I don’t read YYG as bad actors here.

But this does give rise to what one would have to do in order to cross the line with respect to YoYo’s standards, and why have them in the first place. It seems the answer to the latter question is to allow YYG the contractual authority to nix a license more or less arbitrarily, in order to make clear that they do not have any relationship with a developer who they deem too offensive. Which is to say that if a game produced with GameMaker were developed and it generated negative publicity for YoYo, that’s probably ultimately what their standards boil down to.

YoYoGames motivation seems to be that they (understandably) do not wish to be associated in any way with a game that someone else develops, if that game is “deeply offensive” (whatever that means — it varies from person to person what offends them). Considering that many games these days address topics which many might find “controversial”, and thus may be offended by, it gives a developer pause.  And even those games that are not exactly controversial routinely depict subject matter which upon a moment’s reflection make us wonder why they’re not considered offensive.  A huge proportion of videogames depict violence in a casual, matter of fact, even joyous manner.  But most games would be instantly get a Mature Audiences rating if they depicted nudity, even if the context isn’t sexual.

It’s tough to say what the guidelines are for producing a game that is free of these concerns, and YoYo weren’t very interested in stating their guidelines explicitly.  “Use common sense” seems to be their question-begging non-answer.  Common sense falls down in controversial cases precisely because they are controversial.  There’s undoubtedly a whole classification of things that are offensive to marms and nuns but that teenage boys think is fine, but the only answer that matters in this case is, “is what’s considered offensive by YYG?”  Debating “what is too offensive?” is an endless quagmire but “What does YYG consider too offensive?” is something that can have a start and an end to it, and is probably a succinct bulleted list, which people may be free to disagree with or not as they choose, but still helpless to change.

I surmise that there are things that are commonly topics addressed by the medium of videogames, such as violence and war and crime that are not included in the “truly offensive” category, but that a game could step over the line by being too explicit in its depictions of these things, or by appearing to advocate for doing these things in real life, or by appealing to the player’s “prurient interests” in such depictions.  The “common sense” approach seems to be a way for YoYo to say, “We don’t want to say because it’d probably just give horrible people a to-do list, but if everyone could avoid things such as explicit torture, rape, and so on, that’d be great.”

Still, the fact that someone else can tell me what I can or can’t put into a game that I’ve designed, is inherently offensive to me. I think it unlikely that I’d produce something that would cause YoYo to take notice and strip me of my license, but the fact that they can, and that they think that it’s right for them to have such power, is offensive to me. To me, there is a boundary where their responsibility ends and my responsibility takes over, and I should be responsible for my creations; once the tool they’ve produced is in my hands I don’t need their sense of responsibility for their creations to encroach upon my creativity.

It’s tough to see why YoYoGames would be associated with a game that was developed by someone else, even if they happened to use GameMaker. One reason might be their logo is used as the default splash screen and application icon when a game is built with GameMaker.  These are removable by the developer, but are often left as-is by amateur developers. But there, a simpler remedy would be to compel game developers to remove YYG logos from games that they do not wish to be associated with at their request. Or, if YYG wanted to, they could ban games that they deem unfit from being sold or otherwise distributed through their online store, while not taking away the developer’s liberty to release the game through other means, or to continue using GameMaker to develop other games.

YoYo declined to change the policy, taking a “take it or leave it” attitude, and then closed the forum topic to quash further discussion.  It seems to be the YoYo forums general policy to kill topics when moderators deem that further discussion is “pointless” since they are firm about not changing their minds. Obviously that’s not the case, as there may be much to discuss whether or not YoYo change their minds, and getting YoYo to change their minds is not always the aim of discussing some topic on the forums.  Really, it’s about stopping discussions that may lead to users expressing views deemed critical or negative to YoYoGames, which they (wrongly, in my opinion) feel is harmful or threatens their brand.

Which, since it’s their forum, that’s their prerogative, but I can’t say that I like or agree with the practice. And now that they’ve restricted access to that particular forum, the topic is no longer visible. And this is one of the reasons why I have my own website where I can exercise my right to free speech without censorship.

Appreciating MegaMania

Megamania, published in 1982 by Activision for the Atari VCS and designed and programmed by Steve Cartwright, is one of the all time great video games, and is a standout on the Atari 2600 console and in the vertical fixed shooter genre. Inspired by the Sega arcade game Astro Blaster, but vastly better, it is an extremely well refined shooter for its time, and is a fun and challenging game to this day.

Above: Astro Blaster, an 1981 arcade game by Sega that bears some resemblance to Activision’s 1982 hit on the Atari VCS, Megamania.

Astro Blaster had many features, including digitized speech, that made it technically impressive for its day, but the design did not integrate the features particularly well, making the game overly complicated and clunky. By comparison, Megamania offers a stripped down, almost poetic experience, with elegant symmetry and proportions. Far from a ripoff of an original game, if anything it’s a refinement. Megamania expresses its beauty through minimalism and an elegant orderliness to its structure. This game is all about action and motion, and the original version just gets these things right. There is a rhythm to the game that a good player will develop a feel for, and learn to use to his advantage.

A major hit for Activision on the 2600, Megamania was later ported to the Atari 5200, and Atari 8-bit computer line, but the original remains the best play experience despite modest graphical improvements in the later releases. I’ll be discussing the original VCS version of the game for the rest of this article.

Due to the hardware limitations of the 2600, the player is permitted only one shot on the screen at a time. The player can steer the shot with their ship as it travels upward, giving them the ability to guide their missile into the target. Somehow, despite their varied and erratic motion, the enemies often seem to line up just right so that if you’re in the right position and have the right timing, your next shot will rapidly find your next target, enabling you to clear the wave quickly and resulting in great satisfaction. But if you’re off target, the same proportions of speed and distance that line up your shots on target will cause you to miss frustratingly. It’s an elegant symmetry that provides both challenge (when the player’s timing is off) and reward (when it is on) with the same few, simple mathematical relationships, giving the game a subtle beauty.

The object in Megamania is to survive wave after wave of zany household objects that come at you from the top of the screen, as you shoot up at them for points. Your ship has an energy meter that slowly winds down, providing a time limit to complete the wave; when you complete a wave, your remaining energy meter is converted to bonus points, then refills, and the next wave begins. The waves repeat in cycles, in the following order: Hamburgers, Cookies, Bugs, Radial Tires, Diamonds, Steam Irons, Bow Ties, and Dice.

megamania enemies

There are two variations in the play mechanics, having to do with the way your shots behave:

  • In variation 1, the ship will fire continuously as long as the fire button is held down, and the shots are steerable, moving in line with the player as the player moves. This generates the rhythm that makes the game so fun, as I will show with some detailed explanation to follow.
  • In variation 2, the player must press the fire button each time to fire a shot, and the shot moves vertically only; once it leaves the gun it cannot be guided by the player.

Variation 2 requires more hand-eye coordination and greater attention from the player, and is therefore much more challenging, but I find that the feel of the game is not nearly as immersive as when you are able to steer your shots. In variation one, you feel at one with both your ship and its missile, and while you steer your shots to hit your target, you must simultaneously dodge to keep your ship safe. This creates an inherent conflict that causes the player to constantly be making decisions at a subconscious level. In variation 2, once your shot is launched, you have no further influence over it, and can only watch until it hits something or leaves the screen, leaving you only to avoid enemies and their fire until you can fire again yourself. And since there is no auto-fire in variation 2, the subtly clever timing that results from the relationship between the distance and position of the enemies, their speed, and the speed of your missile, is lost.

The sound effects, while rudimentary, are strong, and fill the game with noise from start to finish, despite being limited to your laser shot, enemy destruction, the energy meter countdown and refresh, and player death. The enemies, rather than explode, disappear with a brassy, synthesized “clang!” , while you fizzle away into nothingness when you are hit by a missile or collide with an enemy. The effects are blaring, loud and harsh, but with the volume turned down low they serve well.

The wave cycle in Megamania is particularly well paced, with a fantastic challenge curve, and a structure that reminds me of a sonnet or a fugue. Certain waves (metaphorically) “rhyme” with others, being similar in their motion patterns. Patterns established in earlier waves are elaborated upon in subsequent “rhyming” waves.

The odd-numbered waves (Hamburgers, Bugs, Diamonds, and Bow Ties) all move horizontally from left to right across the screen. In the first cycle, their motion is constant, while in the second and subsequent waves, their motion pauses periodically for a few seconds, then suddenly accelerates before settling down to normal, and then repeats. Starting with the Bugs wave, the horizontal scrolling waves add a vertical undulation to their motion, which becomes more pronounced with Diamonds and Bow Ties. Diamonds and Bow Ties “rhyme” further with each other by having a “winking” or “spinning” appearance. These are the easiest waves to clear, as the enemies pose no collision risk to the player, who can only be destroyed by enemy shots or running out of energy in these levels. As the first, third, fifth, and seventh levels in the wave cycle, they provide a breather between the more challenging waves. Each odd-numbered wave may be seen as an elaboration of the previous in the series: Hamburgers move horizontally; bugs move horizontally, and with a slight undulating vertical dip; diamonds move horizontally, have a more pronounced dip, and spin; and bow ties move horizontally, have the most dramatic undulation, and spin.

The even numbered waves all feature objects that pass vertically through the screen.

Wave 2, cookies, introduces the player to vertical motion gradually, as the cookies move primarily horizontally, while doing a two-step drop periodically, and reverse their horizontal motion as well. Cookies move in unison, all moving left or all moving right at the same time. Wave 4, radial tires, kinetically “rhymes” with cookies, but the radial tires dip more quickly, and the wave introduces a more complex motion where alternating rows of tires move left or right simultaneously. These levels are particularly dangerous, as in later cycles they descend increasingly rapidly, but a skilled player will learn, after the panic subsides, to make small, economical moves, and let the shots line up and rapidly take out strings of enemies quickly. At this point the levels remain challenging, but reliably beatable by a skilled player. You’ll die quickly if you get out of rhythm and fail to clear out enough enemies to give you adequate space to dodge, or if the computer gets lucky with one of its shots, but if you’re on your toes and in the zone you should be able to clear these waves with only an occasional death.

The next two even-numbered waves are of special difficulty, although their unique patterns do not “rhyme” with each other.

Wave 6, Steam Irons, uses a deceptive and tricky pattern. Three columns of steam irons descend, pausing and then sweeping irregularly from side to size at a speed that is very difficult for the player to track, as they seem to deftly weave right around your shots, and then descend again. The spacing of the formation is such that the player must shoot out at least one from each column, or else that column becomes an unbreakable chain when the column reaches bottom and wraps around to the top again, providing insufficient space between the rows to allow the player to squeeze in and get a shot off. If the player fails to take out at least one steam iron from each column, it is guaranteed that he will die at least once before completing the wave. The interesting thing about wave six is that it is the one wave in the entire game where the behavior pattern never varies, no matter how many times the player cycles through the game, the steam irons always move the same. Despite the lack of increasing challenge, the behavior is so frustrating and erratic that players often ascribe a sinister artificial intelligence to the steam irons. They are a constant threat to the player, no matter their skill level.

Wave 8, Dice, are special in that they are the only wave that is always the same color, yellow, no matter how many cycles the player completes. Dice are also unique in that they are the only objects that do not fire any shots at the player, and are therefore dangerous only due to collisions. Yet this is more than enough to make dice the most challenging wave to survive. The first dice wave is also the only level in the game where the objects move straight down. While their speed in the first cycle may seem overwhelming, their simple vertical motion makes it a fairly safe level. Simply stand your ground beneath a falling pair of dice and shoot, and your shot will surely find its mark, protecting you. But in the second and subsequent cycles, the dice move horizontally as well, in rows that alternate left and right, and create an almost bullet hell-ish level where dodging takes a great deal of finesse. The player has to move constantly on the dice levels to avoid fatal collisions, making it the most strenuous and challenging level, a climactic finish to the wave cycle. A skilled player can still beat the level without getting hit, but it requires great concentration and timing.

If we think of the eight waves that make up the wave cycle as a stanza in a poem, then the “rhyme scheme” suggested by the structure of the eight waves is as follows: A, B, A, B, A, C, A, D. The difficulty curve of a cycle is interesting, in that it does not simply progress in a linear fashion, but instead plots two different curves: the odd-numbered waves follow a more linear progression, while the even-numbered waves follow a steeper progression.  This gives the challenge curve a continually escalating trend line while still affording the player a “breather” between two more difficult levels.

megamania difficulty curve

After three or four cycles, the difficulty does not ramp up further, and the game turns into an endurance match to see how many cycles the player can endure.  If you can make it to 999,999 points, the game ends, effectively a killscreen.

One of the more interesting things to realize about the mechanics of Megamania is that (with the exception of the first Dice wave) the horizontal speed of all the enemies in the game matches the player’s horizontal speed. After the first cycle in the odd-numbered waves when the enemies accelerate to double time. The rest of the time, the horizontal speed of the enemy objects always matches the player’s horizontal speed exactly. This, combined with the shot-steering in variation 1 makes tracking the enemy objects easier, since you, your shot, and the enemy all move at the same speed, it is trivial to line up and guide the shot into the enemy on the odd-numbered waves. It also means that if you are behind an enemy, there is no way to catch up. Interestingly, players often don’t realize this, and novices and even moderately experienced players will persist in trying, to no avail, to catch up with an enemy that is just past the reach of their fire. Once you realize that it is impossible to catch up, and stop chasing, the player gains an insight that will lead them to higher skill levels — it is very common for a player chasing an enemy that they cannot possibly hit to accidentally run into an enemy missile, or run out of room at the edge of the screen and get pinned. But once you learn to avoid these two common causes of death, you become better at dodging, and the game opens up and becomes easier.

Another important realization is that the positioning of the enemies often is such that when you connect with a shot to destroy one, your very next shot will also connect with another enemy if you don’t move. It’s very common to chain together “string” of two, three or even more hits in a row, in very rapid sequence. This is key to success, and especially critical on the later cycles on the even-numbered waves, where the falling enemies present a collision danger, and taking a chain of them out immediately when the wave begins is crucial to carving out enough space to enable you to dodge and survive. When you realize this, the game becomes less about chasing aggressively and aiming, and more about being in the right position, and letting the enemies come to you. This is where the auto fire feature of variation 1 comes in to play, as once you have connected with a target, you are likely to hit again with your very next shot, and may start a chain of hits just by holding position and keeping the fire button pressed.

A final note of strategy helps with avoiding being shot by enemy missiles. Only two enemy missiles are capable being on the screen at any given point in time. What’s more, there are only two enemies at any given time who are capable of firing.  If you see an enemy shooting bullets, you should avoid it and concentrate on eliminating the enemies that are not shooting, as they are less of a thread and easier to safely destroy. Don’t go under them when they stop moving, and wait for them to move again before tracking them. Then, take out the shooting enemies when they are moving, by matching pace with them. Enemy shots do not steer, so if you move in sync directly below a horizontally-moving enemy that enemy cannot hit you, and you cannot miss them. The most dangerous time in the odd-numbered stages is when are moving against their motion, from right to left, since this is the only time when you are likely to hit an enemy missiles.

Wrapping a formation of enemies

Another point of refinement that I find interesting is in the way the enemy objects wrap around the edge of the screen. Enemies in Megamania move together in large formations, but the way they wrap around the edge of the screen is interesting.

What I find innovative in this is that it doesn’t matter how large the formation is — looking at the odd-numbered waves, if you don’t shoot any of the enemies, they will form an unbroken chain as the first to appear wrap immediately behind the last. If you shoot a few, leaving holes in the formation, the holes persist and are not closed up — except if you shrink the formation at the leading or trailing edge. When that happens, the formation wraps sooner, closing the gap between the last still-extant enemy in the formation and the first. Thus, when the last Hamburger, Bug, Diamond, or Bow Tie is left in the wave, when it reaches the right edge of the screen, it wraps immediately to the left, rather than waiting for the space taken up by the no-longer-existing members of its formation. This is important because it avoids wasting the player’s time, as the energy meter winds down while no enemies are visible on the screen.

The tight, precise nature of the motion of the enemies makes Megamania a satisfying and exciting play experience, and feels complete despite a relatively small feature set. Megamania demonstrate that refinement and polish matter far more than feature count.

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.

csanyk.com © 2016
%d bloggers like this: