Re: Thoughts on the current state of affairs within olity
Andrew Plotkin <erkyrath <at> eblong.com>
2006-06-07 18:14:21 GMT
On Tue, 6 Jun 2006, Artifex wrote:
> On the front-end, the picture is not so pretty. The developer is
> currently locked into a single technology, and a single solution.
> Gamut with SVG and ECMAScript is your one and only option. For the
> current selection of games, this option has proven more or less
> sufficient, and games like Fluxx and Aquarius even go beyond the
> call, pushing the limits of the environment to their edge. Sadly,
> however, that edge is the line, and pursuing anything beyond that
> line becomes a near impossible task.
(We discussed this on devchat on Tuesday afternoon, so most of what I'm
going to say here is what I said then.)
I think things are not as utterly limited as that. There are SVG widget
sets in progress. (And the fact that there are still portability problems
between SVG libraries is not an issue for as long as there's only one SVG
Volity client!)
What we've found, in the past year, is that the Volity client is the
weightiest piece of software in the system. I think that's inherent to the
problem of writing a Volity client. That is, a second Volity client (even
one based on a web browser rather than a stand-alone application) would
also be a whole lot of work.
Now, most of that effort has *not* gone into the SVG interface. One of our
original plans was to have an XHTML/Javascript game interface, co-equal
with the SVG/Javascript one. This got sidetracked when we were unable to
find a free XHTML Java class that supported JS. (Flyingsaucer, which we
are using for the Finder and Help windows, does not support JS.)
XHTML should be the easiest way to manage game interfaces (including
buttons, selection lists, text input, etc.) Particularly if XHTML and SVG
can embed each other -- which should be possible.
Unfortunately this definition of "easy" doesn't include the fact that the
library isn't there yet. (Yes, I have seriously considered writing a JS
bridge for Flyingsaucer and donating it. I haven't gotten there yet.)
(Similarly, Shae mentioned SMIL animation, but Batik doesn't support SMIL.
The Batik project pages are ambivalent whether it ever will.)
> Sure, SPARK is a bit of a step in the right direction, and the
> carto.net code is a good leap... but we are still putting ourselves
> in an environment where it takes 30+ lines of javascript and 5-10+
> lines of SVG just to put a button on the screen, and have it do
> something when you click it.
sXBL is already supported by Batik
(http://www.w3.org/TR/2004/WD-SVG12-20041027/binding.html). This lets you
put most of that work into a library, effectively, and invoke it easily
where needed.
> What is there to be done? I suppose that we must tackle a
> fundamental question of "What is Volity, really?" Is it the game
> server libraries and bookkeeper code? Is it the underlying protocol?
> Is it the end-user application? Is it all of these things together?
> Is it none of them?
We've always said that Volity is the protocol.
> I would like to see a pure AJAX implementation front-end. WPF?
> XUL? Heck, why not have a front-end that provides an environment for
> OpenGL based UI files scripted with Lua? Pygame scripts as UI?
It would be great if these things existed.
However, we (and I'm just talking about the core Volity team here) have to
consider where we are and what are resources are. If I come in tomorrow
and say "Okay, AJAX-based web browser client. I'm on it. Somebody order me
a pizza" then I estimate it would be four-to-six months before I had
something functioning on the level that Gamut is now. (I know last night
you expressed the opinion that it would be less work; but this is my
estimate.) We would, to a large extent, be starting over.
At the moment, we can't afford to start over. The least-effort path to
making new UI technologies available is to embed them into Gamut, as they
become available. We can afford that. In the meantime, we can work on
other parts of the system (like the website, and more SVG games).
Sticking with Gamut, and thinking in terms of more Gamut modules, also has
the side advantage -- which is a big one right now -- of "one client for
all games". It is legal under the Volity protocol for a client program to
only handle a subset of games (or a single game). But the Volity
*network* (volity.net) gains value fastest if everybody can play
everything. I think it would be dumb for us to split that right now.
(Another point: AJAX/browser stuff is here now. But what will be here in
six months? As a general principle, I'd rather be ahead of the curve than
playing catchup.)
We hope -- we *really* hope! -- to reach the point where Volity is ticking
along by itself, and we can focus on long-term plans. At that point, we
will certainly reconsider all the technologies we're using. That point is
not now.
But again, when I say "we", I mean myself, Jason, and Andy. If an AJAX
client project forms up, we'd be thrilled.
--Z
--
--
"And Aholibamah bare Jeush, and Jaalam, and Korah: these were the borogoves..."
*
Making a saint out of Reagan is sad. Making an idol out of Nixon ("If the
President does it then it's legal") is contemptible.