I'm in the planning and learning stages of building a facebook game. For the past year my foremost question has been, "Flash or HTML5?". Rather than try to decide the answer to that, I thought I would give the markets for both some more time to mature and learn how to design the game and how to manage the server element.
Over the last year I've devoured thousands of pages of text concerning game development and business development, along with getting a solid footing in AS3, python, php, C# and javascript. So, I'm most interested in picking a system that is best for the job rather than, for example, starting off assuming the game logic will be in python because that's what I enjoy most.
The game is at its core a strategy game and I plan to use many mobile phones extensively in addition to the standard facebook "invite all your friends" features. The graphics won't be flashy and will in most places be rather flat because of the thematic elements, rather than 3d isometric like farmville or other flash facebook games.
So from a technological perspective HTML5 doesn't have any real advantage that I can see over flash, and neither does flash have any real advantage over HTML5. If you see that one has a clear advantage over the other then I would be happy to hear that in your comments.
I have five primary questions that I need your opinion on:
1) Which platform makes better sense for building a facebook game considering the future market trends?
2) Which platform has better inherent elements to help prevent cheating? (like flash being compiled into a .swf vs javascript being in plain text)
3) Which platform would be most attractive to the best game development talent for future hires?
4) Which platform is easiest to take technology from one game and use it for other future games? (like developing isometric graphics in flash)
5) Which platform is easiest to develop with a team?
Here are some thoughts. Please consider them opinions rather than facts - I'm sure I forgot something, or other people might think differently. I'm hoping for a fruitful discussion, because I believe your questions are important and worth exchanging opinions on ;)
It's hard to predict the future, but considering that the HTML5 standard will not be final within the next couple of years, and that Microsoft's browsers are way behind (only the newest IE beta supports HTML5), developing exclusively for HTML5 seems like a big risk to me. It makes a lot of sense for iOS and Android devices, because both Safari's and Chrome's Webkit implementation are pretty far along. But if you want to distribute your game to "regular" PCs and laptops, too, I wouldn't want to do HTML5 without a fallback solution. In short: If you can afford it, do both, if not, go with Flash (it works everywhere except on iOS).
I'd say both platforms have about the same vulnerability issues: The user downloads a large part of the game to the client computer. You can use obfuscation tools and encryption, but with some determination and effort, the code can be decompiled and/or analyzed to find loopholes for cheating. You can never be completely safe on a client computer, so the only "real" safety mechanism is to keep most of the game logic on your server. This is, however, not always possible, because of performance and capacity limitations. Plus, you will always need a client application of some sort, so at least the possibility of tampering with the communications channels will remain. Use all possible precautions you can think of, stay alert, have some routine methods of checking irregularities (plausibility checks, reporting of unusually high scores, etc.), and be ready to react quickly, when something odd happens. You should do that on all platforms, really.
Both HTML5 and Flash support vector graphics, which is a good basis for hires. In this field, Flash has one major advantage, in my opinion: It offers a decent IDE for creating keyframe animations. I'm sure Adobe is working on an SVG export function, which will allow animations created with Flash to be used in HTML5, but there isn't one yet. And I don't know any 2D animation tool that can export SVG animations. (If anyone else knows one, please comment!)
If you design your program architecture to be modular and extensible, you should have about the same possibilities on both platforms. The only major difference is that in HTML and JavaScript, your source files are also your end product: All resources (HTML pages, JavaScript files, images, CSS files, etc.) are available as individual files, and anyone in your team could replace things on an FTP server without interrupting other program parts. In Flash, source code must be compiled, and resources are often packaged directly into the resulting binary files. So whenever, say, an image changes, you would have to re-deploy the Flash binaries - unless your project is programmed to load resources externally. Be sure to decide on a strategy for resource management early on, and based on not only technical requirements, but also on workflow needs.
Successful team programming, in my experience, is not so much a question of the programming language used. With modern tools, you can set up useful team utilities like versioning, unit testing and continuous integration for just about every platform there is. I would try to go for a platform that most of the people I work with understand and/or are well-trained in (if there already is a core team, for example), or one that I myself am comfortable enough with to at least be able to follow up with the development process. It also depends on the kind of talent you can find and afford. It all comes down to this: What good is even the best technology when you don't have the people to use it efficiently?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With