Why HTML5 is the best platform for rapid game development
austinhallock.com
austinhallock.com
Given this imbalance, when I was at a recent employer, I suggested that exposing OpenCL or CUDA within the browser could lead to some really cool games and web apps. I was soundly shut down. Right around the same time, WebCL was announced: http://www.khronos.org/webcl/.
But it doesn't seem like it's moving particularly fast, sigh...
Fastest rapid game dev is with Flash, and nothing has come even close to it (just poke around game dev jams).
Now, if you need mobile support, go with HaXe, it has HTML5 target too. As well as native iOS and Android and much more.
Not to mention that I think writing something like a scene graph in JS would make me rage.
But sure, if all you want to do is draw some lines and bitmaps on the screen, no problem.
The whole game is built upon SVG, CSS3 (transform3d) and CoffeeScript and it works pretty fine, even on the iPad which is also the target platform. The limiting factor with this combination is the number of DOM elements. We are currently considering to render our racing tracks as a single image so we can remove the several SVG paths we currently use for this.
If you want to take a look you can find the source on GitHub[1] or play the game[2]. Currently only Chrome and iPad are supported. But that's only because we haven't added all vendor prefixes yet.
[1] https://github.com/stravid/slotcars [2] http://slotcars.herokuapp.com/
The gain in productivity wins hands down against the mess of having JavaScript+HTML+CSS working the same way across browsers and OS.
I would argue it. The speed with which you can develop simple games has much more to do with how well you understand the platform itself (its tools, libraries, capabilities) than what the platform is.
I'm not saying platforms and languages don't intrinsically affect your pace. They do. But it also depends a lot on what you're doing. One language lets you write a web server in an hour; another allows fast and robust mathematical analysis. Writing a fun game in 24 hours is such a pliable goal that you could clear it with, say, a graphing calculator, an industrial robot, or a Word macro. To say nothing of languages people actually write games in!
A lot of the points the author is making in favor of HTML5 are simply not true.
No Compiling - Languages like flash can build while you and work and compile in under 5 seconds. This is also not a compelling reason to choose a platform, and no intelligent person has ever chosen a platform based on how fast it compiles.
Easy Testing - HTML5 is no easier to test than anything else. Perhaps having to connect a device to test would be an exception. Simply not true.
It's not a plugin - This is irrelevant. If we're talking about browsers, flash has more penetration than HTML5 does right now. So which is worse -- a plugin that 99% of PC users already have, or an executable installer that needs to be run in order to update or change to a browser that supports canvas?
You can rapidly prototype with many languages. I am not arguing against HTML5 at all. Infact, I believe it is probably the future of casual web games. I am only arguing against this poorly written article. The author actually claims that HTML5 is better because of the "hype" around it. Give me a break.
The only final thing I will say is that javascript is a shitty language to write anything like a big game in. If you know anything about CS fundamentals, then you can't refute this fact.
My biggest draw towards developing games in HTML5 is that it runs natively in (almost) all browsers.
One of my favorites to participate in is Ludum Dare. This past LD, I used HTML5 to develop my game. It was the first major project in which I used Javascript and Canvas, and the code could've been better, but I managed to quickly develop and prototype a game I'm proud of within 72 hours[1].
The biggest issue with HTML5 isn't the speed of development, but rather the fact that it's not a mature technology yet. I still haven't ironed out some issues with sound and resource loading that works consistently between Chrome, Firefox, and Safari.
1. "assuming you’re with the rest of us in the 21st century" - that's pretty insulting to the millions who can't afford a smartphone.
2. "it’ll run from your phone’s browser" - but only if it's WebKit.
With HTML5 you have to deal with many serious faults that do not exist when working with many other platforms. HTML5 canvas doesn't feature the ability to turn off anti-aliasing, HTML5 audio has only one channel per instance, has latency issues and is inconsistently implemented, JavaScript has many various faults, performance leaves something to be desired, you cannot do things that are common in most games like going fullscreen or grabbing the mouse, and overall it just feels like you have to wrestle with your web browser to write a game on top of it.
It is convenient to simply link a game to someone and let them play without manually downloading it, but is it really worth hacking around all these issues? Like the web browser was designed decades ago to share formatted text and images, we should design a modern, open browser that makes sense for video games. Perhaps something that combines the best qualities of web gaming and Steam, and distributes data through decentralized P2P?
Doodles are stored as JSONP: http://doodles.s3.amazonaws.com/d2/5iSFn-ME/8qp73zuBe.js
This json renders in canvas as the page loads like these amazing drawings: http://doodleordie.com/profile/underwearhero
We want to make a native mobile app because we've heard that HTML5 is slow enough to frustrating. I tried a Lua-based framework and it was fun to use but the resulting drawing too was too slow to be usable because every line had to be created as a new object, instead of Canvas-like pixel manipulation.
This strikes as an incredible double standard for appreciation that permeates the article top to bottom. I do understand why the poster is so enthusiastic for developing games rapidly in HTML and went about it cutting some corners when having to compromise. But enthusiasm is just that, doesn't make said games any good by default or the plat to magicly be mature to the point it should.
My personal opinion is still that Flash is a better platform for games, at least right at the moment. I have nothing against HTML5, although I'm not a big fan of JS as a programming language. Undoubtedly ads and such should move to HTML5/JS. I'm still not convinced about it for games yet.
Not as big as Flash portals obviously but people love playing the games
I like JS. I'm learning how to use some of its first class functions, and it's really cool! But honestly the only reason I'd play any of those games is because they're written in an interesting technology... not because they were actually more fun than the stuff written in flash.
There's a lot of potential, but the platform isn't quite ready yet.
...that's one of his arguments why HTML5 is the "best platform". I wish he would have gone more into detail how he defines "best" as his understanding of that adjective doesn't seem to take into account that more mature platforms have some benefits too. For instance, maturity.
I listed various other arguments for why I feel it's the "best" out there right now. I think the strongest arguments however are the two games in < 24 hours each.
you should probably substantiate that, at least in the article if not here, as you have not given any reason for why this would be true (I have no idea if it is or not).
It may well be, but nothing of what you wrote in the article supports this.
EDIT: let me clarify:
* Mobile Support (large support is not speed of development)
* No compiling (the only thing that seems somewhat related. Many things don't need to be compiled this days though)
* It’s not a plugin (irrelevant to the speed of development, at most a distribution issue)
* It’s not controlled by a single corporation (irrelevant)
* More active development (doesn't make you faster)
* HTML5 games get more attention (irrelevant to your speed)
If you meant "wanting to support gaming in mobile and desktop quickly html5 is the best solution" then it could make sense.
- Want to port your game to a new platform (game console? embedded device?) - just get webkit/mozilla/<your favorite open source browser> to compile. Although this is no small task, in many cases it can be easier and way faster than rewriting the code for an entire game. not to mention this mandates one port per console, rather than one port per game per console. N^2->N time savings :D
- Not being controlled by a single corporation is incredibly important. Take iphone games: want to update your game to use some newly released feature of the sdk? Get ready for 1+ weeks of waiting for approval. Notice a low-level bug in the sdk? ha-ha, have fun talking to Apple's technical support. These are the obvious reasons, there are a million-and-one examples as to how limited access can slow down - and even halts - the game development process.
That's all I have time for now, I'll try and think of some more later
Edit: too/to
Take flash, which is evil in a plugin and controlled by a cruel corporation and runs on unicorn blood. You will still be able to create a game in 24 hours and put it on the market, people do it all the time. No ipad? Sure, read the end of my previous comment.
Also, while this is still irrelevant (cause the statement is that html5 is better than all the others, but there are plenty of open source things), I don't see how finding a bug in the iOS sdk is any different than finding a bug in a browser's canvas implementation. You work around it in both cases cause you can't control your users software setup.
And the fact that iOS apps have to go through an approval process bears no weight in the generic statement that a proprietary platform causes slow time to market.
As for your last point though... lolwut. iOS was just an example, the same is true for consoles, other app markets, etc. iOS apps bear "no weight" in the statement that a proprietary platform causes slow time to market?! iOS is one of the largest and most developed-for proprietary platforms, which makes it a great example, which means it absolutely does bear weight -- and a lot of weight at that -- in a statement that generalizes proprietary platforms. </semantics>