

Quake 1 ported to Flash - jfd
http://www.silvergames.com/game/quake-flash/

======
tumult
Given Flash's atrocious performance profile, I'm surprised and impressed that
this works at all. That being said, it chews an entire core on my computer to
render the game at about 20fps, and the audio is nearly a half-second latent.
Another way of looking at this is that Flash bytecode on a Core i7 today has
caught up to half of where native bytecode on a Pentium I was 14 years ago.

~~~
nrr
Even more bizarre is the fact that this runs on my Turion64 X2-whatever
running at 2.0GHz exactly how Quake originally ran on my 90MHz Pentium clone.

I feel like I've just jumped back 13 years.

~~~
petercooper
In another 13 years there'll be a version written in Ruby that feels the same
too.

~~~
dpcan
in 6 months it will be re-written in JS/HTML5

------
jasonlbaptiste
Talk about nostalgia. I remember being 10 or 11 and playing Quake. I thought
it was just absolutely amazing. I had also just gotten into the internet. The
curiosity I had back then still exists, which is a good thing. The same
feeling that we're just getting started still exists, even though things are
so much more advanced.

------
mixmax
Wow, does that bring back memories.

------
rms
What is preventing a dramatic speedup in Flash performance?

~~~
erik
My understanding is that the flash bytecode interpreter's performance is
reasonable. Unfortunately the actionscript compiler does no code optimization.
But this quake demo uses alchemy, which is LLVM based and offers significant
performance gains.

The biggest bottleneck is rendering. When displaying flash content, your cpu
has to render every pixel of every frame. The flash player vector capabilities
are pretty extensive. Supporting image rotations, resizes and alpha
transparency can require multiple cpu passes.

The obvious answer to this problem is GPU rendering. Adobe has made some
efforts in this direction, but it doesn't look like it will happen any time
soon. There are many issues that make this transition difficult. Backwards
compatibility, cross platform compatibility, and reliability are a few that
come to mind.

~~~
chipsy
haXe does some additional optimizations over the Adobe compilers; however, the
real performance difference in the Alchemy-based code comes from its original
nature as C code: it works with bytes, not the AVM2 type system. You can
access these special "fast ByteArrays" from both AS3 and haXe - haXe makes it
a little more convenient - but in both cases, you're essentially writing C
from a language that doesn't have C's features. (Alchemy has some
interoperability features, so it's not a total one-or-the-other equation, at
least.)

Rendering is the bigger performance culprit, anyway.

~~~
pfedor
So where's the source code for this port? I couldn't find it.

------
bep
Quake 1 port to silverlight: <http://www.innoveware.com/ql3/QuakeLight.html>

------
est
DOOM+Heretic+Hexen on AVM2:

<http://www.newgrounds.com/portal/view/470460>

------
carbocation
42fps on timedemo demo1 in FF 3.5.5 / Win7 Home Premium on a laptop i7 720.
Felt perfectly smooth though.

