« || »

Quake port to Flash has been released

It seems that a programmer named Michael Rennie has released a Flash port of Quake. I say “it seems” because yes, there is a port but I could not find any more information about it. And neither did I find the source code.

Anyways, here it is: http://www.quaddicted.com/engines/files/quake-flash.swf
Apparently the shareware is bundled inside. You can mouselook by holding the left mouse button.
I hate Flash and am not posting for visitor whoring so it is not embedded. Just open the file with your Flashplayer-using browser.

PS: I totally missed that the Quake Silverlight port was released too. Thanks Randy! (Yay, more proprietary browser crap :P )

Update: The source is available at http://github.com/mkr3142/QuakeFlash/


19 Responses to “Quake port to Flash has been released”

  1. s_a_j_t Says:
    24.11.2009 23:48

    Pointless!

  2. dreadlorde Says:
    25.11.2009 16:15

    I fucking hate flash. >:(

    And Silverlight sucks even more.

  3. Dooley P. Says:
    25.11.2009 18:30

    Fact that he did it though… that’s impressive to me.

  4. Metlslime Says:
    27.11.2009 08:54

    Actually that’s awesome because now anyone with a flash-capable browser can play quake. Now, if we can get it to play maps and mods… Of course with only shareware monsters, you’d probably need to repopulate some maps.

  5. Dave Says:
    27.11.2009 16:06

    Really impressive technical demos. My reading of the page marred only by the inevitable anonymous trolls casting doubt and hatred purely because they couldn’t do any better themselves.

    s_a_j_t – some people just like making ports for fun, doesn’t need to have a point. Friend of mine once ported Elite to Basic – why? Why not?

    dreadlorde – you’re either under the age of 15 or over the age of 50. Either way shut up. What would you have them write a web port in? Javascript? Please… You could be a Java advocate of course, but Java people are a very strange breed who think the whole world would be better in Java; the whole [largely non-techy] world meanwhile looks upon those people saying “Pity the fools… [a la Mr T.] what is this Java none-sense anyway? Nevermind I don’t care.”

  6. Spirit Says:
    27.11.2009 17:47

    Relax Dave. I too wholeheartly hate Flash (Silverlight thankfully is niche). And I too think this is pointless. Seeing this as a tech demo is kinda cool but apparently not even the source is available. So fuck it. :)

    From what I know you are not allowed to use Quake’s Shareware data to do anything useful with it. Which is why Baker’s SyncQuake (or what it was called) ain’t legal and never took off.

  7. Bad Sector Says:
    27.11.2009 22:06

    I saw this a couple of days ago and i had a hard time focusing my thoughts for a while. I was very impressed by it. Having tried to write a few engines in Flash for games (i don’t really like Flash – i prefer Java for the much superior and faster VM – but sadly the whole webgames network is built around it and anything other than Flash is a dead-end if you want to distribute your games), i was always considering this kind of 3D in Flash nearly impossible.

    This port (and the Doom and Hexen ports also) are made using Alchemy, a C/C++ compiler that writes Flash bytecode. Alchemy requires Flash Player 10 because it uses some AVM2 opcodes which are available only there and allows much faster memory accesses.

    When i was making RayFaster 2 (http://www.badsectoracula.com/peponi/rayfaster2/ this one) FP10 wasn’t yet released so i used the Flash Player 9 API. Until i had RF2 to a point where it was possible to proper render the world, items, walk around and have some sort of interaction FP10 had already been released.

    I don’t use the Flash IDE (i don’t even have it), but i use haXe, an opensource compiler that creates (among other stuff) SWF files and uses a Java-like language. Its a 100% programming environment (no timeline nonsense). When FP10 was out, haXe quickly added the new API *and* an API for accessing the new opcodes (it basically maps the API to a single instruction per API call). Some people reported that it was much faster so i decided to check it with RF2′s code. However since i was using mostly the FP9 API and i used the FP10 opcodes only in a few placed i didn’t saw any real improvement.

    So i thought that doing real 3D in Flash would be impossible (speed-wise) without support from the VM itself. I knew that Adobe had ported Quake using Alchemy before, but at the video it looked a bit slow and in a small resolution.

    So i totally didn’t expected the performance at the above SWF and this is why i was so impressed. I was at work when someone gave the URL for it to me and when i saw it, i was saying repeatedly for a while stuff like “this isn’t happening”, “this is impossible”, etc – one of my coworkers asked me what is wrong and i couldn’t explain :-P.

    Basically i was trying for weeks in endless days and nights to get a little more performance from AVM2 to draw a few extra pixels (framebuffer access – no calculations – is *the* slowest operation in FP9) and i used a 256×192 resolution doubled to 512×384 (later i used 640×480 again with double 320×240 resolution but added some “HUD” borders around to touch less pixels).

    And then this came and shuttered everything :-P.

    Now, of course, since it *does* exist it proves that it isn’t impossible to do better (and in normal resolution) 3D in Flash. So my next step was to revisit the memory API in haXe that allows the use of AVM2′s Alchemy opcodes.

    Well after using only these instructions to fill the framebuffer i actually managed to fill a whole 640×480 framebuffer with 24bit color texture mapped horizontal spans with about 100 parts per span (sub-spans) four times at about 60 fps. Now it doesn’t look as impossible as before, but it feels like i’m programming at a level a bit higher than assembly (i have a huge memory array which i can only access using these opcodes and i have comments with structure layouts and offsets for each structure element…). But on the other hand haXe doesn’t try to be C/C++ and fits with the player’s event-driven model much better (i think Alchemy breaks the code in steps and uses a timer to execute it as if it had the whole process as its own). Also the haXe compiler generates faster bytecode than Adobe’s compiler so i might even be able to get faster results than Alchemy.

    Anyway, i still consider this port a very impressive thing and i’m thankful for its existence because otherwise i would still think that doing better 3D (or even just not using double pixels) was impossible in Flash :-)

    Of course i still wish Java was in Flash’s place and i could use JOGL. Although in the meanwhile i would be grateful if Adobe added some OpenGL ES support in Flash…

  8. dreadlorde Says:
    27.11.2009 23:56

    Dave: My age doesn’t matter. I wouldn’t have done a web port because it’s useless, just like QuakeLive. Java/C++/C# all suck just as much, if not more than flash; as they all encourage bad programming design and make things 100x more complicated than they need to be.

    ‘Do one thing and do it right’.

  9. s_a_j_t Says:
    28.11.2009 05:17

    Dave – Glad to see you agree with me. I do pointless stuff for fun too :-)

    –Anonymous

  10. Bad Sector Says:
    28.11.2009 18:17

    @dreadlorde:
    A bad programmer doesn’t need a language to encourage him write bad code, he can do it in any language. A good programmer doesn’t care what the language encourages, he’ll write good code in any environment.

  11. dreadlorde Says:
    28.11.2009 23:53

    You can’t polish a turd.

  12. Bad Sector Says:
    29.11.2009 03:50

    You don’t watch Mythbusters do you? :-P
    http://www.youtube.com/watch?v=hBj6PonX14A

  13. Baker Says:
    29.11.2009 03:51

    Eh? Can’t leave this weird and wrong comment untouched …

    “Which is why Baker’s SyncQuake (or what it was called) ain’t legal and never took off.”

    That was purely GPL, no shareware data. I never liked it, lost interest in it and never talked about it. There was no attempt to make it “take off”.

    It was and is absolutely legal.

  14. Spirit Says:
    29.11.2009 09:58

    Baker, sorry. I meant http://www.quakeone.com/freequake/en.html

  15. Baker Says:
    29.11.2009 12:51

    There was no intent to do anything against the license with that. It installs all the shareware files and the shareware license agreement says the files can be hosted provided they are in a compressed format.

    It never worked out because the 6-7 shareware maps aren’t very popular for multiplayer and most established players refused to play with such a limited set of maps.

    One idea was to add custom maps to the set of independent downloads, but Todd Hollenshead when I inquired about this said it was not permitted.

    And that was the end of the idea to include custom maps. And the shareware maps didn’t have wide player appeal or usefulness.

  16. Baker Says:
    30.11.2009 12:53

    Source code was released and an SVN exists:

    http://github.com/mkr3142/QuakeFlash

  17. Spirit Says:
    30.11.2009 15:40

    Weee, seems like I completely screw up then. Sorry. :-)

  18. David Bandel Says:
    22.09.2010 13:53

    There’s really no logical reason to *hate* flash. If it has some problems then they are no more numerous or debilitating than the problems of any other medium for this type of content delivery.

    It’s fast, client-side, and has lots of support on the web. Lots of support resources.. what more could a developer ask? AS3 is a high level language akin to Java or C#.

    I would imagine it’s the “must build a brand new game engine from scratch in ASM to make a game worth bragging about” idiots who have a problem with Flash.

    So what if it bypasses some of the learning curve associated with graphics programming and completely circumvents the need for much in the way of game engines?

    Tools that make the job better and easier to do are bad?

    No…

    People who hate flash are bad.

  19. Spirit Says:
    22.09.2010 15:02

    The biggest problem (for me) is that it is not free. Imagine if you could only run Java with a proprietary non-free interpreter or be forced to use a specific C# compiler.

Leave a Reply