Archive for February, 2009

iPhone : Pharos IV / X-Plane Racing

Posted: February 27, 2009 in Games
Tags: ,

Plasq presents Pharos IV: Assault, a 3D space combat game for iPhone, at an introductory price of 99 cents (a Lite version is also available).
Meanwhile, a new X-Plane declination has been unveiled for iPhone (also for desktop), X-Plane Racing. It adds racing goal (follow a path delimited by rectangular overscreen elements), played in multiplayer mode. These features will be added later in other X-Plane versions.

As the exact release date of Atlas editor isn’t known yet (we hope a beta version will be available in the meantime) and that it should be provided for free, we wonder wether the source code will be open sourced (using LGPL ?), and wheter some extension mechanism will be provided (as with Eclipse extension points). We could then gain access to UI objects without having to load the produced CIB archive, and create more easily an MDA editor part : definition of business objects, remote services, interactions (binding to source events – that is views actions – through dynamic enhancement, in the runtime, of delegate handlers).
We would then benefit from a full client application graphical editor.

UPDATE : Cappuccino team responded that Atlas will not be open source (at least its code, but we still wait confirmation about it being free or not. A Lite version could be released for free, with a full featured one being charged later). An extension mechanism through plugins has been confirmed, and will be provided for free. Then it paves the way for a wide market, like Eclipse did : open source and/or free plugins, then more evolved versions (commercial). Despite Atlas being actually focused on UI design, an MDA extension (plugin) could fill the other client application areas, and a Bespin like code editor part (also as a plugin) could allow to add/modify code (that is without any files, as classes can be generated and enhanced directly in the runtime).

As I had supposed, 280 North team presented an Interface Builder like editor (named Atlas) that runs directly on the browser (is a Cappuccino application). We can watch a webcast here.

As with IB, Atlas focuses on UI and bindings, and produces a CIB archive.

A dozen of days ago I had a very close idea (complementary in fact), an MDA editor also made as a Cappuccino application running directly on the browser. I thought about that when reading an article about objj_allocateClassPair and other Objective-J runtime APIs. The editor would be able to generate application code from the graphical model (that is code that calls remote services, using CP2JavaWS bridge), by dynamically adding code to the Objective-J runtime (through some test button in the MDA editor). I wrote notes and started to thought about a generic javascript function that wraps the required code for calling a remote service method (that is retreiving a CP2JavaWS service proxy from an endPoint, and then passing the arguments to the proxy). That generic function could then be referenced multiple times as a method_imp of a Method object (added dynamically to the methods_list of the also dynamically added class). It would end with a Method object for each action defined on the model.

Atlas is the tool that was lacking for demos (as IB isn’t available on Windows), and nib2cib tool even added some break to the development cycle. An article is still available at Ajaxian. The tool is expected this Summer (we hope by the end of Spring).

I wonder how/if Google and Adobe will catch up, It will be hard work.

Apple provides the first public beta of Safari 4, here. It brings a new javascript engine, Nitro, announced as 4.2 times faster than Safari 3 engine (and close to two times faster than the upcoming Firefox 3.1), and also adds support for HTLM 5 (audio and video media tags, database storage), CSS Animation, CSS Effects, CSS Canvas and CSS3 Web Fonts.
A new display mode, Top Sites, shows the most visited sites through an animated channels-like grid, that reminds Core Animation demos. History and bookmarks pages can now be browsed using a Coverflow like mode. These effects require a Quartz Extreme compatible graphic card (Radeon AGP 16 Mb or GeForce 2MX in Leopard). Global zoom is also included (was present in WebKit nightly builds). As with Chrome, tabs can now be displayed on top of the window, to gain space vertically. Finally Safari obtains 100/100 in the new Acid3 test. Full details can be found here.
The last security update must have been installed.

Cappuccino members stated that they will be showcasing at the FOWA Miami (23-24 February) next week and going to be making a pretty big announcement in the process, so stay tuned ;).
As you’ve probably noticed, development on the main branch has not been that active in the last couple of weeks because we’ve been busy preparing for this thing.

Some important upcoming features have been listed recently for the next version of Cappuccino : revamped text engine (including shadows), display modes, themes. So what bigger other announcement can we expect ? :

– Apple will adopt Cappuccino for its next RDA (MobileMe, etc.) applications ?

– A GWT like generation tool will be unveiled for Cappuccino (however it would conflict with CP2JavaWS dynamic approach) ?

– An Objective-C server will be presented (with session management and database connections pool) ? Cappuccino team was interested by a CPCoding implementation of JSON/Objective-J conversion in CP2JavaWS, in order to allow an Objective-C server implementation.

– a new graphical editor (Interface Builder like) done using Cappuccino, running directly on the browser, that allows to test applications by dynamically generating (adding) classes (business objects, views, etc.) to the Objective-J runtime (using objj_allocateClassPair, etc.) ? It would allow some of on-browser MDA development by graphically defining business objects, services and interactions (that is my second idea following CP2JavaWS, and that MDA editor could generate code that uses that bridge for remote services calls…)
We can also now edit Objective-J code using the recently on-browser Bespin editor (based on Canvas), that could trigger a CPApplication launch by registering the appropriate observer event.

Following GWT, Cappuccino opened the path for web 3.0. Common JSP taglibs libraries (RIA web 2.0) are deprecated (JSF RichFaces, ADF, etc.), and the newly announced JSF 2.0 version is only a slight evolving. RDA applications (RWA if the container is a web browser) then access directly to the server’s services layer (application or business layer, depending on the required workflow and transaction management), and the presentation layer (MVC) is moved on the client side (Cappuccino uses Next/Cocoa AppKit). Calls to remote services are made using a bridge framework, a proxy, that is either specifically generated (when using GWT), or a generic dynamic one when using CP2JavaWS (uses the Objective-J runtime forwardInvocation method as there isn’t yet a Cappuccino implementation of NSProxy class. However these dynamic features are far more powerfull and easy to use than Java dynamic proxies). On the server side there is no more need for a servlet, a sole servlet filter can be used (also allows to set url mapping), that is the solution that was retained for CP2JavaWS.

The interesting point with filters is that we don’t set anymore a dependency (such criticism was made on Struts, that requires to subclass a servlet, ActionServlet). Someway filters can be seen as interfaces. We can then even add classic servlets declarations (Struts, Spring MVC) to the application, and attach the CP2JavaWS filter (for example) to these. That filter will determine what requests it should manage, and will forward other requests to the filter chain (up to the classical servlet). We will then be able to invoke application layer services from multiple client technologies : classical (html produced from JSP tags rendering) and RDA (dom/javascript based like Cappuccino). Such configuration will also help when migrating applications and/or during maintenance operations.

Then why using a J2EE server anymore ? Its servlet/jsp container isn’t so much relevant (we don’t use jsp), and the interesting remaining stuff is the various connectors (JDBC, JCA, asynchronous messages channels). Even sessions management could be done in another technology (we could imagine an Objective-C based server side, that idea was suggested by Cappuccino members).

What about the messages format ? JSON seems the growing one, as it is easy to learn, despite its lack of support for namespaces and cycles (have to be managed manually – by a non standard way -, the case in CP2javaWS). In fact that format wasn’t intended to exchange complex objects graphs, nor contracts (WSDL and SOAP were conceived with these goals in mind). JSON is only a simple text representation of a javascript objects graph (we can even use eval() on such string to get the javascript objects). In CP2JavaWS documentation I introduced some discussions about JSON limitations and possible extensions. However the greater benefits (in terms of ease of development) when combining Cappuccino with a bridge solution like CP2JavaWS overcome its limitations. Moreover CP2JavaWS still manages heterogeneous collections elements, and nested ones (and soon cycles). When themethodSignatureForSelector method will be implemented in Cappuccino, we will be able to check for passed method’s arguments with a contract (Objective-J protocol/interface that will be specified when getting the proxy).

While doing some search about Roland V-Piano new PHA-III keys technology (progressive keys motion sensor, instead of only two states), I discovered that patentMOTION SENSOR FOR A PIANO KEY MOTION ANALYSIS SYSTEM, that was filled in 1996 by a french person, and was published in 1999 (see also here, 1995). We can then wonder if Roland owns a previous patent about the same principle.
We can indeed find an old Roland patent (from 1974 !), that seems to cover basic two states mechanism, but also states : During the time required for this movement a previously charged capacitor discharges and the voltage remaining on the capacitor is applied to circuitry which varies the volume of the output tone accordingly.
In a commercial Roland PDF about the new LX-10 digital piano (that was announced also during the NAMM 2009, but that uses the older PHA II Progressive Hammer Action), we can read something about the 6.946.594 patent. This one doesn’t seem published yet bowever, as it is often the case (Apple only recently released the hundreds of patents that cover the iPhone and multi-touch user interactions).