6 ms·
Show HN: Ejecta, A Fast, Open Source JavaScript, Canvas Implementation for iOS
- soapdog 14y agoI purchased ImpactJS after picking the "Creating HTML5 Games" book about it. I was really surprised with the quality of the toolkit and how responsive the developer is. I think it was the best investment I made this year and I can't wait to release some games.
- city41 14y agoI'm very happy with impact. It's well designed and easy to extend. After quite a bit of exploring different frameworks and engines (including writing my own), I think impact is my long term game dev solution.
- deleted 14y ago[deleted]
- dsirijus 14y agoPretty cool. What about the support for Android, any plans for that?
- phoboslab 14y agoThis project is very much iOS specific. It's written in Objective-C and uses JavaScriptCore (Apple's JS engine). So porting this over to Android would be a lot of work. But have a look at CocoonJS; it's cross platform (but closed source): http://ludei.com/tech/cocoonjs http://ludei.com/tech/cocoonjs
- kylebrown 14y agoI was curious about that too. With android support, it would be a good alternative to Corona (use js instead of Lua). For iOS, an added benefit of is that JavascriptCore uses Nitro, unlike UIWebView.
- jevinskie 14y agoJSC as used by an app store app does not use Nitro. As the post stated, JSC is a private framework and the only way to use it in an approved app is to import the source into your project and build a copy of JSC that is bundled with your app. Since the JSC that you use is contained within your executable, iOS doesn't allow the write and execute permissions in memory that would be necessary for JIT.
- grimboy 14y agoAny actual benchmarks?
- phoboslab 14y agoI haven't done any formal benchmarks. A quick test with 1000 sprites runs with 60fps on the iPhone4s. Also try loading this in Mobile Safari and compare it to the video: http://www.phoboslab.org/crap/bezier/ http://www.phoboslab.org/crap/bezier/
- rabidsnail 14y agoThe word "Ejecta" sounds dirty. I feel weird just typing it.
- antidaily 14y agoYou're probably not old enough to have had a walkman?
- dj2stein9 14y agoThis looks like a great way to build iOS games in HTML5. If he could to get this to work as an Android project it could be used to build games for OUYA.
- phoboslab 14y agoThanks for the great response so far! I also wrote about some implementation details of the Canvas API and the challenges with OpenGL in my blog: http://www.phoboslab.org/log/2012/09/ejecta http://www.phoboslab.org/log/2012/09/ejecta
- mrspeaker 14y agoThanks very much for open sourcing this. Keep up the good work - everything you post is great... great information, and great code. Thanks again!
- evmar 14y agoHave you seen Plask? (http://www.plask.org/ http://www.plask.org/) What are your thoughts on it? I guess it doesn't target OpenGL, but I imagine it's pretty fast already...
- acron0 14y agoBugger. There goes my pet project. Nice one phoboslab!
- programminggeek 14y agoImpactJS is a fantastic tool and Ejecta solves a real problem in a smart way. Phobos Lab does awesome work.
- firlefans 14y agoThis guy is a hacker in the truest sense, I read a blog post over a year ago about him tinkering away on this. It didn't seem he'd take it this far. It's a great achievement and I'm glad he's been insightful enough to keep it free.
- yesimahuman 14y agoI used Impact two years ago on something and I was so impressed with the API simplicity and power (not to mention the fact that it ran very well). This guy does great work.
- imaffett 14y agoDominic is amazing at what he does. ImpactJS is such a powerful but simple tool. I love that every release is NOT bloatware, but carefully thought out feature enhacements.
- drcode 14y agoAny plans on making it usable without XCode? (or a Mac, for that matter.) Since the users just write javascript code, as long as you give them a way to insert that code into an app, they wouldn't really need to use the XCode build system at all (I know, app store rules would need to be addressed...)
- imaffett 14y agoDirectCanvas from appMobi (I work there) is based on iOS impact (and enhanced) - http://www.appmobi.com http://www.appmobi.com . No need for a Mac or XCode.
- arturadib 14y agoInteresting! I created Node-Five with a similar goal in mind (low-level graphics and audio from the HTML5 spec): http://documentup.com/arturadib/node-five http://documentup.com/arturadib/node-five Glad to see someone had the same idea for iOS :)
- wsc981 14y agoJust wanted to tell this is some really cool work you've done.
- jaipilot747 14y agoThat the canvas API is implemented with OpenGL is very impressive. CocoonJS [1] (a similar project for Android, as noted in the comments below) seems to have taken the same approach. On a completely tangential note, given that the main desktop browsers now sport hardware accelerated canvas implementations, is there a performance difference in 2D graphics rendered with canvas vs. WebGL? [1] http://ludei.com/tech/cocoonjs http://ludei.com/tech/cocoonjs
- spot 14y agowebgl can be much faster because you can draw many primitives with one call. there's a lot of overhead from js down to gl.
- jaipilot747 14y agoThen what is stopping browser vendors from implementing canvas directly in gl directly, making canvas more or less a wrapper?
- greggman 14y agoCanvas is directly implemented in gl (or directx) in most browsers at this point. WebGL is still faster like the poster above says because you as the programmer an can make optimizations that are not possible with the canvas api like drawing many things with one call. http://blog.tojicode.com/2012/07/sprite-tile-maps-on-gpu.html http://blog.tojicode.com/2012/07/sprite-tile-maps-on-gpu.htm...
- TazeTSchnitzel 14y agoI want this in the browser. Throw away the DOM, and let's just have canvas and JS. Skip loading any HTML or CSS. It would be great.
- erichocean 14y agoThat's pretty much exactly what Blossom[1] is; there's no need to write HTML or CSS. [1] https://github.com/erichocean/blossom https://github.com/erichocean/blossom
- TazeTSchnitzel 14y agoYeah, but I'm thinking having the current W3C APIs.
- wwweston 14y agoIn fact -- why do we even have browsers? If only there were some popular write-once run-anywhere VM, we could pretty easily get away from this weird document-oriented web thing forever.
- TazeTSchnitzel 14y agoYeah, like Java. :P
- SunboX 14y agoReally great work! One question belonging to this, do you know how to used 4x5 ColorTransform Matrices with JavaScript and WebGL/OpenGL? I can't find anything about this on the I-net.
- matthuggins 14y agoAs far as I am aware, ImpactJS is unfortunately only for tile-based game development on canvas. Has this influenced/limited Ejecta in any way?
- kevingadd 14y agoIsn't JS performance going to suffer if it's using a custom build of JSC that can't JIT?
- killahpriest 14y agoNative iOS doesn't have JIT
- kevingadd 14y agoThe browser certainly does. Or is this only an alternative to a WebView in an app store app?
- vicapow 14y agoeven google wasn't able to include a JIT in Chrome for iOS
- mamp 14y agoSafari uses a JIT. Other browsers and UIWebView based applications are not allowed to access the JIT, apparently because it is a security risk. Even lua based apps are not allowed to run luajit because code generation on iOS isn't allowed within apps.
- dutchbrit 14y agoThere's even a massive JIT vulnerability in webkit on iOS at the moment.
- phoboslab 14y agoYes. I wish we could use the JIT – it would make computational heavy stuff way faster. Most games however aren't performance bound by computation, but by drawing. Not having the JIT isn't as bad as it may seem. Also, JavaScriptCore recently features a new "low level interpreter" – still not as fast as the JIT, but way faster than it was a few month ago: http://wingolog.org/archives/2012/06/27/inside-javascriptcores-low-level-interpreter http://wingolog.org/archives/2012/06/27/inside-javascriptcor...
- wklauss 14y agoReminds me of CocoonJS (basically the same idea, also support for Android but closed source). https://vimeo.com/45506217 https://vimeo.com/45506217 Neat in any case. Looks like a nice implementation.
- tlrobinson 14y agoCool. This sounds a bit like Game Closure (http://gameclosure.com/ http://gameclosure.com/)
- vicapow 14y agoApple needs to just buy you out right and include this in safari.
- icemelt8 14y agoThe quicker you guys realize it the better, Flash is the better choice.