This forum is read only and just serves as an archive. If you
have any questions, please post them on github.com/phoboslab/impact
1 decade ago
by aarocka
Ok, through a lot of research, trial and error, and by pure dumb luck, I finally found a good way to package your impact games for any device.
Mobile
Ok so we all know about Ejecta for iOS, but there some alternatives. For those who are mainly building things using webgl 3d stuff, there is
EjectaGL. There is also
AppMobi, but it kinda sucks in the iOS department but is suposedly good for Android and many other platforms, excluding desktop(chrome apps don't count). I have also heard about
PhoneGap and
Appcelerator Titanium. The main problem I have heard about Titanium is that they have very poor canvas performance and lackluster audio support. I havent tested Phone Gap. Phone Gap and Titanium, they work on all platforms, excluding desktop. Appcelerator Titanium powers Wunderlist which has a Window, Mac, iOS, and Android port. More on that in a sec.
Desktop
The biggest issue with impact is that it needs to be hosted from a webserver due to most browsers having xss protection. This would exclude just providing an html file for a user to open with a browser. Even if we were to do this, most users would just get confused or not have a proper browser. This basically makes packaging it in an air app impossible. That said I kept looking. I heard of
AppJS and
awesomium. AppJS I have very high hopes for, but it is very buggy. Awesomium looks nice, but it costs money if you make over a certain amount. I have not really tested awesomium, but it looks nice. Then I learned that Titanium used to make desktop apps, this is how Wunderlist made its desktop versions. However it had poor canvas performance. Recently Appcelerator stopped development on Titanium Desktop and made it community maintained. This resulted in a fork called
TideSDK. I tested it with Jump and Run and was able to get 60 FPS. It works perfectly and has access to native Mac, Win, and Lin apis.
TL;DR
iOS-
Ejecta &
EjectaGL.
Everything else- Try
AppMobi and
Phone Gap before trying
Titanium.
Desktop- Go
TideSDK or gtfo.
1 decade ago
by dominic
I didn't know about TideSDK; it looks very promising.
Nice writeup. Thank you!
1 decade ago
by lTyl
I was trying a lot of different solutions for creating a desktop application for Windows, Linux and OSX over the past week or so (Tried AppJS, TideSK, Awesomium, node-webkit) and
node-webkit is by far the best that I have tried so far. It has full Audio support and my test application was running at a steady 60 FPS with entities galore on the screen. TideSDK came in second, except it doesn't have support for Audio (As far as I am aware, I couldn't get it working at all) until version 1.4.0, which is currently in development
So yeah, I recommend
node-webkit for now until TideSDK is updated to 1.4.0
1 decade ago
by aarocka
No problem Dominic. Also ITyI, I will have to checkout node-webkit. It looks nice, and if it is powered by chromium, then it will have webgl and hardware accelerated canvas. This might be better than Tide SDK. Plus being able to have node is useful. From what I can tell, Tide is closer to AIR, while node-webkit is closer to AppJS. What I mean is that Tide looks like it's just using webkit. I am not quite sure but that's what it is looking like. Node-webkit looks like its chromium which I hope means V8 js engine. This would mean awesomeness for impact developers.
1 decade ago
by lTyl
After you zip your ImpactJS project and rename it to .nw, as per the node-webkit instructions, you can then combine the archive with the node-webkit binary by using the copy command from the windows command console, like so:
copy /b nw.exe+<name_of_impactJS_Project_Archive>.nw <Name_of_the_Combined_file>.exe
So then when the base nw.exe binary is ran on Windows, it opens your ImpactJS application and it behaves as if it was a native desktop application, and all of your art and audio resources are stored inside the .exe, and not in loose files in the folder. It is easy to get access to those files, but it makes the project folder look very clean overall with no .js, .html and art assets visibly present.
1 decade ago
by aarocka
Thats great.
1 decade ago
by Joncom
Quote from lTyl
So yeah, I recommend node-webkit for now until TideSDK is updated to 1.4.0
Wow! This is exactly what I was looking for.
From my game
Scary Chicken here's a
screenshot running natively in Windows 7.
Thank you for sharing your findings ITyl.
Very nice! Will be looking into TideSDK and node-webkit now for packaging my stuff. Thanks a lot.
Love that screenshot Joncom :)
Any chance there will be something on the level of Ejecta created for Android? AppMobi does not work for me, as all of my games collisions break when trying to use it. I think it is a combination of Directbox2D & the collisions in my game happening between standard Entities & Directbox2d entities. They just don't trigger collisions against each other. The standard implementation of Box2D works just fine.
After determining AppMobi was going to be too much work to re-write everything I switched to Ejecta. I literally had the game running on my device at 60FPS in about 30 minutes. It was so painless! My game recently passed review and is in the
AppStore.
Now I'm wanting to work on porting to Android and I am looking for the most painless option. Has anyone else run into/solved the issue of AppMobi collisions?
1 decade ago
by aarocka
Quote from coreysnyder
Any chance there will be something on the level of Ejecta created for Android? AppMobi does not work for me, as all of my games collisions break when trying to use it. I think it is a combination of Directbox2D & the collisions in my game happening between standard Entities & Directbox2d entities. They just don't trigger collisions against each other. The standard implementation of Box2D works just fine.
After determining AppMobi was going to be too much work to re-write everything I switched to Ejecta. I literally had the game running on my device at 60FPS in about 30 minutes. It was so painless! My game recently passed review and is in the AppStore.
Now I'm wanting to work on porting to Android and I am looking for the most painless option. Has anyone else run into/solved the issue of AppMobi collisions?
Well there is always
Cocoon JS which supports both iPhone and Android. It also supports websockets and many other api's. Actually I kinda forgot to include it into my writeup. Oops. Well anyway, Cocoon JS is actually superior to Ejecta and AppMobi in many ways, the main one being that it supports Websockets and many other DOM objects. The full list of supported
features.
I'd stay away from phonegap. It uses the ios' UIWebView control which is slower than ios' safari browser. In fact, the canvas in unusable on some devices (ipad2, ipad3) in the benchmarks below:
https://www.scirra.com/blog/85/the-great-html5-mobile-gaming-performance-
-----
"PhoneGap unfortunately appears on the whole to be unsuitable for publishing HTML5 games. This is mainly because it is stuck with the system default browser which is usually too slow. On iOS the system browser is Safari which actually performs very well, but when you wrap it up in PhoneGap it drops three times slower on iPad 2, ten times slower (!!) on iPad 3 (using the retina display), and bizarrely for reasons I really struggle to comprehend, is only marginally slower on the iPhone 4S. So the only utility for PhoneGap appears to be for targeting the iPhone. Windows Phone 7 also seemed to take a performance hit from using PhoneGap, so perhaps there are difficult technical issues around putting a browser in a native app."
-----
rant: i was excited when google released their iOS chrome browser. I was hoping that they might deliver a fast hardware accelerated canvas with robust audio support and finally push apple to get their act together with their own safari browser. The party was over when I found out they were using UIWebView.
http://techcrunch.com/2012/06/28/google-bows-to-apple-chrome-on-ios-will-use-apples-slow-uiwebview-to-render-web-pages/
-----
"Apple famously only makes a sandboxed, slower version of its rendering engine available to developers. What’s slowing this engine down is that , for security reasons (at least that’s what Apple says), third-party developers don’t get direct access to Apple’s Nitro JavaScript engine. According to some developers, UIWebView is often up to 3x slower in rendering pages than Safari."
-----
Great thanks, Apple!
1 decade ago
by riceje7
i'd be interested in how much work it was to turn a browser impact game into a desktop app with TideSDK. what steps did you need to take to make it happen?
1 decade ago
by mimik
i recommend node-webkit.
super easy to start with and everything impactjs related just works out of the box.
Easy to male fullscreen aps as well
https://dl.dropbox.com/u/3091827/Photo%202013-01-18%2018%2055%2034.jpg
This thread is amazing. I had no idea I could package my games for the desktop. Major thumbs up.
edit: I checked out node-webkit and so far have bundled my game for osx and windows. The resulting executable winds up being pretty big 30ishmb for windows and 66mb for osx and my game code was only about 1.5mb including assets.
Haven't ran into an error yet but then again it was a pretty straight forward game. I'm really excited about the opportunities this opens up for making HTML5/impactjs games.
1 decade ago
by fulvio
Quote from lTyl
After you zip your ImpactJS project and rename it to .nw, as per the node-webkit instructions, you can then combine the archive with the node-webkit binary by using the copy command from the windows command console, like so:
copy /b nw.exe+<name_of_impactJS_Project_Archive>.nw <Name_of_the_Combined_file>.exe
Thank you!
1 decade ago
by drhayes
@mimik: What game is that? How soon can we play it? Where can we buy it? ( =
1 decade ago
by mimik
Quote from drhayes
@mimik: What game is that? How soon can we play it? Where can we buy it? ( =
:-) it's my next game actually.
Working on it now, yesterday I implemented xbox controls for it.
Got lots of the gameplay down already, still some art and logic left.
works good with node-webkit.
It Will be a multiplatform game.
desktop, iphone,ipad,browser.
Hard to say when, i'm aiming for april.
its a box2d game.
One of the good things about node-webkit is that you can use node.js modules and plugins with it.
Are the Xbox controls simply for playability or does Microsoft publish games wrapped in node-webkit
1 decade ago
by mimik
Xbox controls just because we can and its nice to have support.
for Microsoft i don't know, you can just use there win8 app tools you won't need node-webkit for windows store.
But as a stand alone program you can do node-webkit on win8 no problems there.
never thought about the xbox controls for the game. i'll have to steal that some time :)
1 decade ago
by mimik
No need to steal.
i'ts just html5 gamepad api :-)
works with more than xbox controllers.
1 decade ago
by RockLeo
hi everyone!
I'm sorry to bump this old thread, but It's something I still have a lot of doubts, especially about Android.
I'm really afraid of using CocoonJS, Intel XDK (AppMobi), Titanium and others that seem to be paid in some way.
My main purpose is to have fun. I have no intention of selling my games in any store available. But, I want to be able to install them in any of my friends and family's devices.
Could you guys give me some updates about Android packaging methods?
Thx
PS. I believe that Ejecta and node-webkit still are the best options, right?
1 decade ago
by Donzo
I have not found a good solution for Android.
CocoonJS limits you to < 25mb.
I don't remember the specific problems I had with
Intel XDK or Ejecta-X, but I ended up abandoning my Android efforts.
Let me know if you get something working.
I'm also all ears.
Btw I didn't now that CocconJS had 25mb limit. Is that for the free version?
You have to apply in a form to get that limit lifted in CocoonJs (and to access some other APIs)
10 years ago
by RockLeo
Hi guys,
I downloaded the visual studio 2015 community and create a Cordova Project with it to deploy to Android.
It worked and was very easy to set up the project.
In my phone and in the emulator was extremely slow, so probably I did something wrong in the game.
I'll try the demo game to see how it goes.
@RockLeo
I've never had a game that ran well using Cordova/Phonegap. The windows metro/phone/whatever apps on the other hand run very well.
I strongly suggest you to use CocoonJs for Android. (there are quirks with fonts but those are easily fixable, you only need to hardcode indexes and widthmaps for them).
Quote from Joncom
Wow! This is exactly what I was looking for.
From my game Scary Chicken here's a screenshot running natively in Windows 7.
Thank you for sharing your findings ITyl.
I know I am asking a question on a 3 year old post, but how did you do that, Joncom?
9 years ago
by Joncom
I know I am asking a question on a 3 year old post, but how did you do that, Joncom?
Using node-webkit, which has since been renamed:
https://github.com/nwjs/nw.js/
I mean how did you zip it up? (For ImpactJS)