118 comments

[ 3.3 ms ] story [ 211 ms ] thread
If you're using Firefox and can't see the promotional game for this on about:home yet, go to about:home and open up the Web Console. Run "gSnippetsMap.clear()" and then clear your cache. When you refresh about:home, you should download the promo. Otherwise it should hit all Firefox users' about:home page within the next 24 hours.
Did you create Osmos, the game?
Nope! Sheer coincidence that my username is similar.
> Otherwise it should hit all Firefox users' about:home page within the next 24 hours.

That's a massive promotion for Humble. Wow.

More like massive promotion for about:home page :)
Hard link to the Humble Bundle snippet is here: https://snippets.mozilla.com/show/4606/
(Only works in FF.)
uhm seems to be working on chorme for me
Ah! Was told it might lead to a 404 in Chrome. Good to know it doesn't.
It won't 404, but that page was made by copy-pasting the source code of about:home from Firefox, including some image paths that are only valid on Firefox. I was too lazy to make it better since it's not _really_ meant for public consumption (it will 404 once this snippet is disabled in a week, for example).
Works fine even in Opera 12
Amazing!

Anyone knows where I can find the source code of it?

There's a repo where I drop the source code to about:home snippets: https://github.com/mozilla/snippets

This one in particular is at https://github.com/mozilla/snippets/blob/master/gaming-snipp...

I've been trying to see if I can get ahold of the non-asm-jsified version of the game code (I run the snippets service but I didn't make this snippet), but it's not clear if I will get it or not.

Ty

If you managed to get the actual non-asmjs source code plz let know (reply here is good enough) :)

I just played the nice little game on about:home. But shooting is extremely tricky since I need to keep suppressing my hjkl muscle memory.

Update: that game seems to be a demo of Voxatron in the bundle.

OK, so how does it work. Native code compiled to asm.js somehow?
Yes, the ports use emscripten to convert to JavaScript/asm.js.
Do you know how much overhead it introduce? I'm curious.
Unity just launched a benchmark that can help answer that,

http://blogs.unity3d.com/2014/10/07/benchmarking-unity-perfo...

It does run somewhat slower in a browser compared to native, but the difference is really not very big.

To put it another way, the differences between browsers are about the same size as the difference between the fastest browser and native. So it's in the right ballpark.

Programs might run a third as fast, but most of these games are not so taxing as to even use a third of a modern computer's resources. So they work fine in the browser.
Did you try the Voxatron one?
Yep, although my computer is fairly advanced, so maybe that would not work so well on a slow computer.
That's a great package, but what I don't get is why the "mozilla bundle" name if this works just as well on Chrome?
Some of the money is going to the Mozilla Foundation.
And two other charities involved in advancing the open web: Code Now and Maker Ed.
Which is not a charity BTW, they're a non-profit but they make a lot of money from Firefox and the Mozilla Corporation is run like any other company.
Lots of charities make a lot of money and are run like any other companies. As far as the IRS is concerned, Mozilla Foundation is a charity since it is a 501c3.
Some of what you pay goes to the Mozilla Foundation by default.
My guess is that, while the games technically run on chrome, they require the asm.js optimizations that only Firefox has atm in order to run at a decent speed.
I just played the demos in Chrome on the website and they run really well, except Dustforce which has a warning on it about only working well in Firefox.
Mozilla is a nonprofit whose goal is to promote the web. So it is very important that this runs well on Firefox, Chrome, and on all other modern browsers - if it didn't, this would be pointless for Mozilla to do.

Mozilla helped out here, but the goal is to show that games on the web can be fun, and of course that means anywhere the web can run, in any browser.

edit: the distinction is also noticeable in that this is the Humble Mozilla Bundle, and not Humble Firefox Bundle.

Well, Mozilla is Humble's partner for this bundle, receiving a cut of the revenue, and asm.js is their work.

Plus, Chrome users can benefit from Mozilla's work, too, just as Firefox users may appreciate Google. It's the "Mozilla Bundle", not the "Firefox Bundle", after all.

I've sunk countless hours into FTL, this bundle is worth getting for that alone.
Agreed, FTL is a rich and fun game where death is permanent and even a successful game could take little more than an hour, but the game still easily provides weeks worth of enjoyment.
Super Hexagon will make you waste time like never before as well... Until you finish it. It really is something, the end is like a firework.
This is awesome! I love web games but the crap to quality ratio is really bad. It's hard to find good games. I hope Humble Bundle continues to create curated list of web games, not just 3D ones.
If you have recommendations for quality web-based games (I'm particularly interested in side-scrollers or RTS games) please let me know.
Some of these games use data files for user save data - what's the story with them? Do they migrate with, say, Firefox sync?
I believe the Humble Player handles this for many of these games.

From the related article about the process of porting Aaaaaa to asm.js;

"Lastly you’ll want to think about ways to allow your data to persist across multiple browsers on different machines. Gamers don’t always sit on the same machine to play their games, which is why many services allow for cloud save functionality. The same goes for the Web, and if you can build a system (like the wonderfully talented Edward Rudd created for the Humble Player, it will help the overall web experience for the player."

https://hacks.mozilla.org/2014/10/unity-games-in-webgl-owlch...

I did a quick read of the above link. Does it imply, for this bundle, that users have to be connected to play these games (due to the larger sizes and also to use the game save function)? To put it in other words, can users do a one-off download and play these games offline wherever and whenever they want to?
Don't know about game saves but a quick check in offline mode and playing works once downloaded. The data is stored in IndexedDB, which allows for storage up to 50MB before permission is required.
With all these impressive advancement in browser technology, it looks like supporting non-qwerty keyboards in games is still a struggle. Or maybe developers aren't aware of the problem since no matter how big the game is, something as basic as keyboard controls is sometime completely wrong (at least on azerty keyboards). I don't know much about videogame development, but is it really difficult to somehow detect the user keyboard?
I don't believe you can actually identify what the keyboard layout is in a browser. But I agree, key bindings should be configurable. Im an old ESDF quake player.
PC games like Unreal, Half-Life 1 and Quake 3 made the WASD a defacto standard. With a minor difference that HL1 used the Ctrl for crouch, the others mapped it to C. To this day many games use the HL1 or Unreal (as default) key mapping. Interesting that many DOS era racing games don't use the cursor keys for steering (e.g. Grand Prix series), instead some (weird) letter keys, probably due keyboard hardware limitations (not recognising two key strokes next to each other).
I am a bit surprised that ESDF (used in Tribes 2) hasn't caught on. It gives you more (and more uniform) keys around to use for special functionality.
On the other hand, it makes it a bit harder to hit shift and ctrl (crouch and run for certain games), which are usually the most important keys after directions and space for jump.
Thankfully good games let us rebind them. I play with ESDF, and if the game needs a separate sprint button, I'm likely to have it in A, where it's as close as it can be. Z is often a good key for crouch. I find these easier to reach than shift & ctrl in the WASD arrangement. And my pinky can still reach ctrl, shift, caps and tab if needed.
Time is a finite resource and even more precious for small/indie developers. Maybe they could write something to detect keyboard layouts (though I am not sure they could) or they could do what the other poster suggested and have configurable key layouts.

The problem is every second working on something that really matters, to what, <1% of the population is something that you aren't working on that is more important. Not to mention the extra overhead of testing and maintaining that system. It might be a valid gripe with a AAA game dev but complaining about your fairly rare corner case is just picking nits.

> The problem is every second working on something that really matters, to what, <1% of the population is something that you aren't working on that is more important

It's fairly breathtaking chauvinism to assert that keyboard layouts are relevant to less thatn one percent of the population.

Less than one percent of their audience, of course, not less than one percent of all computer users.

Is it still chauvinism if the game was only written in English in the first place?

Almost every German gamer (PC games are a big deal here) is willing to play games in English. Almost none of them have QWERTY keyboards.
I guess on the bright side there, to my knowledge Z & Y are not commonly used keys for PC games, and never as a primary key (like WASD).

(I gather Germany is mostly QWERTZ)

In platformers and shmups, it's common for arrows, lshift, z, x, and maybe c to be the only buttons used to control the character. Voxatron, for example, defaulted to this control scheme, but that game has very configurable controls.
Ah, goes to show what kind of games I don't play much of.
Sure, but French keyboards are generally AZERTY, which breaks the WASD layout. Some countries also use QZERTY, also breaking the WASD layout.
What bugs me is that game developers seem to have standardized on WASD, whereas ESDF is more natural for those who touch type.
This may surprise you, but there are people who speak more than one language in the world, and the keyboards on their PCs are set up for only one of them.
Most of the people I know (myself included) who speak multiple languages have multiple keyboard settings installed in their OS.

The problem is that game API's often map keys to hardware keys and not to the characters that OS sends them.

Still, every serious game (be it indie or not) should allow you to rebind the keys. Unless it's a quick-hack project there is no excuse to skip on that. I don't buy the "every second counts" argument at all. If you can't spare time to implement the key binding inside the game, let the user edit a config file or something similar.

I'm curious. Might it be that the multiple languages you're thinking of use different alphabets?

I ask because that's (in a way) a much simpler situation to deal with. If you're dealing with different alphabets then you will notice from the first keypress if you need to change the keyboard layout.

In contrast, when switching between AZERTY and QWERTY, you might not notice that you're using the wrong keyboard layout until you have finished typing two sentences with three silly typos.

A similar problem occurs on mobile operating systems if you use the same layout for different languages but have autocorrect turn off. You might finish two sentences and notice the spellchecker 'corrected' five words. This is because there is no visual indication as to what language your keyboard is set to (on iPhone the language is displayed only for about two seconds after you switch keyboards).

I'm using US English and Serbian (Latin) keyboard all the time. The difference is that US one has W,Q,X and Y, and the Serbian one has Š,Č,Ć,Đ and Ž. Except for Z and Y all other characters have the same position (QUERTY vs QUERTZ).

I'm also using Hungarian which is also Latin and has Ő,Ú,É,Á and Ű. The other keys are the same.

Since I have three quite similar layouts, I always have to be careful which one is currently active.

And I'm also using Serbian Cyrillic which is completely different alphabeth.

Interesting.

In Belgium we use a version of AZERTY that's optimized for Dutch and French. Naturally, it works great for English too. That is one reason why the notion of switching keyboard layouts when switching between languages with the same alphabet struck me as odd.

Nowadays I use an Apple US-QWERTY keyboard. It can be annoying when I need to enter diacritics, but it's great for programming. I never switch between keyboard layouts.

Typing characters like [, ], /, \ with Serbian Latin keyboard requires using Alt or Shift key. I'm used to that (for about 2 years now), but many of my programmer friends still use US keyboard while programming and switch to Serbian layout for the other uses.

If you switch between programming and something else often, it can become a PITA to switch the layout all the time.

That smug self-righteousness doesn't suit you. I suggest you try on something slightly more humble.

The question is not 'do they exist'. The question is, 'how many'? More specifically, how many are in the target market? It is unrealistic to expect shoestring-budget indie games to cater to every person on the planet.

Anything intended as more than a 5 minute gimmick should have configurable controls anyway IMHO. That, to me, settles this debate right there, at least when it comes to games. Yeah, it would be nice for browsers to recognize the keyboard, but no wait, that's still not really useful, because then you still need to be able configure your keys, and once you have that, browser recognition of the keyboard layout would just make it possible to set a smart default config - which would be cool, don't get me wrong, but I wonder if this is really that big of a "pain point" right now.
How many hours does it take to make a game?

Now how many hours does it take to implement a basic usability feat such as rebindable keys?

I agree that if you're spending a week or two to mash up a shitty excuse for game, then the fifteen to thirty minutes to make keys rebindable might be prohibitive. I hope this is not indicative of indie games' quality today, but if it is, then the people in this thread are right to criticize these games for it.

I'm pretty sure though that most real (indie or not) games aren't slapped together in a week. No, you're spending hundreds of hours at a minimum on design, code, assets, testing, marketing, all that. Even if you needed a few hours to make the keys bindable (unlikely unless your code was horrible spaghetti to begin with), it's still going to be far below 1% (bullshit figure) of total development time.

I can assure you that more than 1% of people would find it a useful feature. In Europe alone you have a few hundred million people who are almost guaranteed to have a keyboard layout different from US-QWERTY. As far as games go, we're in the same market even if English isn't our native language.

Even in the English speaking Americas you have people who happen to use a layout other than QWERTY. And you have people who use e.g. split ergonomic keyboards (with or without QWERTY), on which some bindings are just unusable. For example, the Kinesis Advantage Pro is contoured such that the fingers sit naturally in the home position. Index finger on F. In this position, ESDF is very usable. WASD is completely unusable. Even on a contourless split keyboard some bindings need to be changed because it's hard to reach for the other side of the split (the other hand is using the mouse).

Then you have some left-handed people who use the mouse with their left hand...

And whatever happened to user preference, God forbid? You can have a perfectly normal keyboard and a standard US-QWERTY layout, and you can still find that you would prefer to play the game with different bindings.

Really, bindability is basic usability and it's not hard to implement. It wasn't a problem in the 90s, not even for small indie shops. Yes, a few developers forgot or neglected to do it, usually out of ignorance. But they never gave these bullshit excuses about time and money and oooh every second counts...

I am baffled by your 1%. Just lookup AZERTY.
That 1% figure is hilariously wrong, but I agree with your point. Indie game dev is hard. If you "waste" too much time early on doing "the right thing" for tasks that can wait like localization, your game might not make it off the ground. So most accomplished English-speaking indie devs assume English and QWERTY layout to start because it's one less thing to think about while you're trying to get a barebones game running.

The less defensible outcome is when the QWERTY assumption remains 'til the end, and the devs just want to ship the damn thing already, so the proper alternate keyboard layout/non-360 controller/etc. support gets cut and the burden is pushed onto the users. This sucks, but is somewhat defensible because if you are a gamer in France or whatever, you are probably used to needing to switch your keyboard layout or rebind your keys in the same way that English players of Japanese PC games are used to needing to use a Japanese locale, or that people with non-360 controllers are used to needing to use an XInput wrapper: we hate it, but we've already dealt with the problem once, so doing it again isn't a big deal.

> we hate it, but we've already dealt with the problem once, so doing it again isn't a big deal

Some of us hate it and just don't play these player-hostile games. I think that games that are meant to be played will respect the player and treat her dearly. Games that exist just for the buck though... oh well.

Would you really not play if they give you the option to rebind keys? I've jumped through many worse hoops trying to play Japanese games that I was under no delusions of being the target audience for.
If they don't give me the option to rebind keys...

I used to jump through hoops myself. For example, I rebound keys in some older Touhous by disassembling and modifying the binary.

These days I just can't be bothered. There are more games than I could play in a lifetime, so I have plenty to choose from. And if/when game developers treat me like shit (whether it be with DRM or something else), I'm principled against playing their game. "Go away, you're not our target audience, we don't care about you."

I try to focus the little time I have on games whose authors really want everyone to play and enjoy. The more effort they put into that, the more attention they deserve. If they respect my freedom, that's better still. And that is my idea of humble. I hate how the word is used to market a bundle of games on sale...

Truly caring about the player is one field where the indie scene could really shine, compared to the big corps who mass-produce big titles for the biggest market. Unfortunately even the indies seem to have other priorities.

Totally agree. As a Colemak user, nothing irritates me more than key bindings that assume qwerty. If games don't either work with the physical keys (scancodes rather than character codes, I guess?), then at least let me rebind the keys, otherwise I can't play the game.
Maybe you could switch to qwerty while playing the game? Many operating systems have some way of quickly switching layouts for multilingual users.
Maybe that's not the right solution? Switching to qwerty and back everytime you play the game is a pain, you should only have to configure your controls once.
Also, some gamers multitask. I guess it might be possible to have the layout switch automatically depending on which window is in focus.. but it's a pain in the ass nevertheless.

And switching to a layout you don't normally use absolutely sucks for e.g. in-game chat.

It's not the right solution, it's a sad workaround.

Things get harder still if you need to rebind keys because of the physical arrangement of the keys on your keyboard. In this case, you might have to create a custom layout for each game.. screw that.

I guess it might be possible to have the layout switch automatically depending on which window is in focus..

Windows does this. Its horrible. It also doesn't remember what window has what layout between sessions, so you have to manually set the layout each time. If the game is a fullscreen game its even more effort because if you alt-tab out, it is no longer the focused window (and therefore changing the layout does NOT apply to the game.. frustrating).

In windows (I play a lot of games on windows), switching between keyboard layouts is extremely painful because its per application and not global.

That is, if I want to change the keyboard layout for GameX, I must start GameX, minimize it, change keyboard layout (and hope that it applied it to GameX - often it does not), maximize GameX.

Alternatively, I have to remove Colemak as a keyboard layout and set qwerty as the only layout. This is even more effort.

Basically, in windows, changing keyboard layout to play games is not a viable solution. Believe me, I've tried. I don't play those games anymore...

(comment deleted)
Nightly and Aurora Firefox builds actually support the "code" field on keyboard events, which lets JS know which physical key was pressed on the keyboard. For example, when a Dvorak user presses the key that would be W on a QWERTY layout (for moving forwards in a game), you'll get a keydown event with e.key == "," and e.code == "KeyW".

I'd really like to know what the spec status on that is, and whether other browsers implement it.

Seems like it could be a clever way to solve the issue for players, but probably makes developers on those other keyboards quite miserable.
a prompt training the game controls could be quite simple... "PRESS THE KEY YOU EXPECT TO BE UP" step 2: "PRESS THE KEY YOU USE FOR FIRE"
I've seen some FPSes get the player's preferred control mappings in a really subtle, cool way: ask the player to perform some actions very early in the game (often as part of a "training" sequence), and configure the controls however necessary to make the user's input correct.

For instance, in Portal 2, to check whether the player wants inverted controls:

http://youtu.be/niE5oiRs7pY?t=45s

That does sound clever but I don't understand your example; in this case, would moving the mouse either way go the intended direction?
It makes more sense for consoles / controllers. Although I am sure /someone/ uses inverted mouse controls. It could be disabled in the PC version also.
Inverted Y (vertical axis, i.e. up/down view) is a very popular setting for simulation games and FPS games on PC. It's popular enough that games with >100k players will get bad press and >20 forum complaints (even when the forum is hard to find!) over it, and many more than this will simply not play/buy the game.

In other genres / types of games, especially where you don't control exclusively one character / vehicle from a fixed first/third person viewpoint, it is drastically less common.

I'm guessing whichever direction your move the mouse, the game looks in the correct direction for you to obey the instructions, and that mapping is then persisted.
It really isn't that hard to add configurable key bindings to a game, just laziness on part of developers.
There's no such thing a lazy game developer. Dev time is zero sum. Sometimes devs prioritize incorrectly. It happens. Calling them lazy is itself not just lazy but also ignorant.
As a dev myself who has an input system that supports stuff like this I can have the opinion that anyone who doesn't do it is lazy, because it didn't take me that much time at all to get it working.

>There's no such thing a lazy game developer.

The quality of some indie games out there really point in another direction, but if you wanna argue that these games don't have to uphold to a certain level of quality on the most basic stuff like key rebinding systems then I guess I can't stop you.

Just share your games with us and you will get a plenty of useful feedback. It must be one of those multi-million titles - so exciting!
You're right. Most devs who do not implement this are not lazy. They are ignorant.
>> Pay more than the average of $4.56 to unlock!

I find that to be an interesting idea, since the average will only increase over time.

Not necessarily, people can pay less than average, they might not be interested in the "unlockable" games.
Will it? As I understand it people can pay $0.01 and just get everything else and no steam keys.
Not necessarily, because I assume not everyone buys the unlockables, so the average could move downwards, too.
I've bought a number of humble bundles and have noticed that there is generally a steady rise in price over the first day of a bundle being announced. For example when I bought this bundle the unlock price was $4.18.

What works well for them is including another "premium" title at about twice the opening unlock price; Democracy 3 for $8 in this case.

I'd guess that the unlock price will rise to around $6 over the course of the day.

Does anyone know what javascript libraries they're using for games like voxeltron?
Not sure if this is what they're using but there is VoxelJS[1] - it has a very healthy plugin ecosystem so you can get a functioning game up and running quite quickly.

http://voxeljs.com/

VoxelJS is really cool, but not quite really suited to building something like Voxatron. You could however probably use straight ThreeJS, or go lib-less and roll your own WebGL system.

These games are all compiled from native languages to asm.js.

For some reason the Aaaaaaa! for the awesome game has the screen blank out after a short while. I'm using Nightly, so that is probably expected. Anyone had similar problems?
Try having the web console (Ctrl+Shift+K) open and see if you get any hints there.
I'm getting a bunch of error. Main error seems to be out of memory exception (6 tabs take 1.2GB).
Oh sweet there is a WebGL version of Osmos, loved that one on mobile a few years ago.
Anyone else unable to rename crew members in FTL? I can press backspace to delete characters in names, but not letters to add characters! (Firefox, OS X)
I'm just glad Mozilla found an easy way to remind me that I like them and should give them some money.