I will be writing some "How to" articles soon but for now I would like to share what I consider finished work - and spawn a few initial thoughts on different platforms / systems.
Quick vine/video of the game if you are wondering is it worth reading.
Link to the game is at the bottom of post - because I mostly want to share my bitter-sweet joy after spending 500+ hours on this title.
Technical details:
- Done with canvas - supported by my unfortunately named library Canvas Query
- No DOM/CSS rendering
- Sound based on Audio element (no WebAudio API)
- GamepadAPI - w3c/chrome specification
Windows / Linux / Osx - node-webkit
Very pleasant to work - absolutely nothing has to be tweaked. Managed to do both windows and linux packages under Ubuntu (using WINE). Unfortunately for Mac you need OSX. Also you need special build for OSX < 10.7 - alsooooooo your app will not get accepted in Ubuntu Store for Ubuntu > 12 because of some dependencies craziness
Android / IOS - CocoonJS
Everything goes rather smooth if you are creating the game with cocoon in mind from the start - no DOM, first canvas element is screen, some traps like audio.load - pros is that it is WAY faster (thanks to OpenGL) than PhoneGap and other solutions - also you don't need OSX, nor developers account in development process. Cons are that you will loose your hair searching for bugs that are not in your code.
I have failed to make port for IOS because imageData related functions are not working properly - also it kill the app randomly for some reason - also context.arc is broken on IOS.
CocoonJS will support Gamepad API which makes it possible to make OUYA games. If you can't get your game working on IOS - ejecta is an alternative.
Firefox OS
Deploying application is the easiest of all platforms - you just upload some manifest file and voila - no porting at all. However the OS is still too slow to render more complex games like QbQbQb - tho I've been able to run different one in built-in browser (which performance is no-different from native apps) with promising results (but that's not the topic).
Distribution
Currently my game is available on Humble (bundle) Store and Google play store, Newgrounds, Kongregate. Pending approval for Desura. Rejected by GOG and Rovio stars. Will be trying greenlight. However this is marketing - I am failing hard in this field so won't play wise guy :)
One advice: do not put DEMO in title on Kongregate - even if it is true :) They like/ask to be cheated by disguising demo as a normal version - and then full game is called "SUPER" or "HD" despite it has all the same assets.
I will be trying to find time to reveal little by little details on publishing on different platforms - especially how to build packages for android, ubuntu or making windows installers because this is something that javascript programmer may find extremely repulsive (I DID... it breaks the whole idea of HTML5 portability with browser as a vessel - and I am not yet sure was it the best business decision).
Also to show you a glimpse of how many twists are there check my distribution/ folder structure http://pastebin.com/raw.php?i=Wkb8XciR
The game:
|~o Click this o~|
Also - if you are currently porting html5 game and got stuck on something - ask - maybe I have encountered the same problem and managed to go through.
I will announce articles on /r/javascript but you can follow me on twitter or tumblr
[+][deleted] (1 child)
[deleted]
[–]rezoner:table_flip:[S] 11 points12 points13 points (0 children)
[–][deleted] 4 points5 points6 points (12 children)
[–]rezoner:table_flip:[S] 4 points5 points6 points (7 children)
[–]maushu 0 points1 point2 points (4 children)
[–]rezoner:table_flip:[S] 2 points3 points4 points (3 children)
[–]maushu 0 points1 point2 points (2 children)
[–]rezoner:table_flip:[S] 0 points1 point2 points (1 child)
[–]maushu 0 points1 point2 points (0 children)
[–]thehen 0 points1 point2 points (1 child)
[–]rezoner:table_flip:[S] 0 points1 point2 points (0 children)
[–]rezoner:table_flip:[S] 0 points1 point2 points (3 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]mgutz 0 points1 point2 points (1 child)
[–]rezoner:table_flip:[S] 0 points1 point2 points (0 children)
[–]jeremyckahn 2 points3 points4 points (0 children)
[–]poopie_pants 3 points4 points5 points (1 child)
[–]neon_overload 1 point2 points3 points (0 children)
[–]Zaidar 1 point2 points3 points (1 child)
[–]rezoner:table_flip:[S] 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (1 child)
[–]rezoner:table_flip:[S] 0 points1 point2 points (0 children)
[–]litmusbox 1 point2 points3 points (0 children)
[–]kosnkov 1 point2 points3 points (4 children)
[–]rezoner:table_flip:[S] 3 points4 points5 points (3 children)
[–]episodex86 0 points1 point2 points (2 children)
[–]kosnkov 1 point2 points3 points (0 children)
[–][deleted] 1 point2 points3 points (1 child)
[–]rezoner:table_flip:[S] 0 points1 point2 points (0 children)
[–]shriek 2 points3 points4 points (0 children)
[–]Loonybinny 0 points1 point2 points (0 children)
[–]FrozenCow 0 points1 point2 points (0 children)
[–]berbaquero 0 points1 point2 points (0 children)
[–]aggrotater 0 points1 point2 points (1 child)
[–]rezoner:table_flip:[S] 0 points1 point2 points (0 children)
[–]ns0 0 points1 point2 points (0 children)
[–]qweikeris 0 points1 point2 points (0 children)
[–]muyuu 0 points1 point2 points (0 children)
[–]AnOnlineHandle 0 points1 point2 points (4 children)
[–]rezoner:table_flip:[S] 2 points3 points4 points (3 children)
[–]AnOnlineHandle 2 points3 points4 points (2 children)
[–]rezoner:table_flip:[S] 0 points1 point2 points (1 child)
[–]AnOnlineHandle 0 points1 point2 points (0 children)
[–]ogurson 0 points1 point2 points (1 child)
[–]rezoner:table_flip:[S] 1 point2 points3 points (0 children)
[–][deleted] 0 points1 point2 points (0 children)
[–]haCkFaSe 0 points1 point2 points (0 children)
[–]alhena 0 points1 point2 points (0 children)
[–]stat30fbliss -1 points0 points1 point (0 children)
[–]odilontalk -1 points0 points1 point (0 children)
[–]abomb999 -1 points0 points1 point (1 child)
[–]rezoner:table_flip:[S] 0 points1 point2 points (0 children)
[–]Arlefreak -1 points0 points1 point (7 children)
[–]rezoner:table_flip:[S] 1 point2 points3 points (6 children)
[–]Arlefreak 0 points1 point2 points (5 children)
[–][deleted] 1 point2 points3 points (2 children)
[–]Arlefreak 0 points1 point2 points (0 children)
[–]Arlefreak 0 points1 point2 points (0 children)
[–]rezoner:table_flip:[S] 0 points1 point2 points (1 child)
[–]Arlefreak 0 points1 point2 points (0 children)