Slashdot Mirror


First Person Shooter - Under 100KBs of Code

Cariad Ilmara writes "For those of you old-timers who spent days & nights trying to get your code fit into 64Kb, here's the first beta of .the .produkkt's next FPS: .kkrieger. Moderately beautiful, what's impressive is it can fit inside the UT2004 readme. The demo is 96Kb zipped. All textures are procedural and generated at startup. Screenshots available here, here, here, here, and here. You still need a relatively recent computer (~1.4Ghz, 512MB RAM) and a DirectX8 GPU (Windows required)."

38 of 741 comments (clear)

  1. awesome... now only if they'd do this for linux by Anonymous Coward · · Score: 0, Interesting

    that's awesome!

    1. Re:awesome... now only if they'd do this for linux by dustmote · · Score: 3, Interesting

      awesome... now only if they'd do this for linux

      I would think that it might be kind of difficult to move this code across platforms if it's optimized that much, wouldn't it? ------didn't RTFA

      --


      -1, "1337" speak
    2. Re:awesome... now only if they'd do this for linux by rogabean · · Score: 2, Interesting

      just thinking here.. but if it's DirectX 8 based then Wine should be capable of running this. Would most likely need a bit more in the way of system requirements, but might run. Will give me something to test out when I get home tonight.

      --
      "why don't you just slip into something more comfortable...like a coma!"
    3. Re:awesome... now only if they'd do this for linux by flatface · · Score: 2, Interesting

      It uses DirectX. And Windows binaries are larger than Linux ones. Don't get me wrong, I use Linux almost exclusively-- I wouldn't mind an extra few kb bloat to run it, just as long as it runs. I've been drooling over Farb Rauch's stuff for a while now.. Only if they released their source.

    4. Re:awesome... now only if they'd do this for linux by cubic6 · · Score: 2, Interesting

      Does Minux have X, OpenGL, and suitable other libraries? This game isn't a standalone work. It makes extensive use of DirectX, and you'd need some pretty heavy support code to make it run on something else. The main "coolness" is the procedurally generated textures. In most games, textures, sounds, and models take up the most space. Code isn't that big.

      --
      Karma: Contrapositive
  2. 2K raytracer by ggambett · · Score: 5, Interesting

    Not as impressive, but there's a software raytracer with shadows and recursive reflection which generates .PBM images - in 2K of C source, with no libraries required.

    http://www.mrio-software.com/2k_raytracer.php

    1. Re:2K raytracer by Prothonotar · · Score: 2, Interesting

      It compiled to 10310 bytes on my system. Dynamic library dependancies were as follows: libstdc++.so.5, libm.so.6, libgcc_s.so.1, /lib/libgcc_s.so.1, libc.so.6, /lib/ld-linux.so.2

      --
      "Every man is a mob, a chain gang of idiots." - Jonathan Nolan, Memento Mori
    2. Re:2K raytracer by HoppQ · · Score: 3, Interesting

      begin-base64 644 raytracer.ps
      JSFJT1BTQy0xOTkzICUlQ3JlYXRvcjogSEFZ QUtBV0EgVGFrYX NoaTx4eHh4
      eHh4eEB4eC54eHh4eHgueHgueHg+IAovQy9uZW cvZC9tdWwvUi 9ybGluZXRv
      L0UvZXhwL0h7e2N2eCBkZWZ9cmVwZWF0fWRlZi 9UL2R1cC9nL2 d0L3Ivcm9s
      bC9KL2lmZWxzZSA4CkgvQS9jb3B5KHomdjRRWC Y5M3I5QXhZUU 9ab21RYWx4
      UzJ3ISFPJnZNWWE0M2Q2cjkzck1ZdngyZGNhIU QmY2pTbmpTbm pqUzNvIXYm
      NkEKWCY1NVNBeE0xQ0Q3QWpZeFRUZDYycm14Q2 5UZFNTVDBnJj Eyd0VDU1Qh
      JiFKMGcmRDEhJnhNMCFKMGchbCY1NDRkQzJBYz k2cmEhbSYzQQ pGJiZ2R29H
      U25DVDBnJndEbWx2R29TOHdwbjZ3cFMyd1RDcF MxU2Q3b3Y3VW s3bzRRa2R3
      ISZNdmx4MVM3b1pFUzN3IUohSiFRJjcxODVkCl ombHgxQ1M5ZD luRTQhayZY
      Jk1ZNyEmMSFKIXgmamRuamRTM29kUyFOJm1teD FDMndFYyFHJj E1ME54NCFu
      JjJvIWomNDNyIVUmMDc3N2QKXSYyQVkyQTc3Nm RkVDRvUzNvU2 5NVkMwMFZW
      MFJSUjQ1RTQyMDYzck56JnY3VVgmVU96RiFGIU ohWyY0NEVUQ2 5WbiFhJjFD
      RE4hWSYwTQpWMWMmajJBWWRqbU1kampkIW8mMX IhTSl7KCApVC AwIDQgMyBy
      IHB1dCBUKC8pZ3tUKDkpZ3tjdm59e2N2aX1KfX soJClne1t9e1 19Sn1KCmN2
      eH1mb3JhbGwvbW92ZXRvL3AvZmxvb3Ivdy9kaX YvUy9hZGQgMj kgSFt7W3td
      c2V0Z3JheSBmaWxsfWZvciBZfWZvciBzaG93cG FnZQo=
      ====

      That's the same thing corrected (the original was mangled by slashcode) and base64-encoded, which doesn't care about extra spaces inserted by slashcode. Decode with uudecode(1) or something else.

      --
      My sig will be released in 2015 third quarter. Rating pending.
  3. No Directx 8.1? by RichM · · Score: 5, Interesting

    For those of you who don't have a GPU with pixelshaders, you can try the original which started the whole thing, the 64kb fr-08: http://www.theproduct.de/

  4. Amazing Screenshots by william_lorenz · · Score: 2, Interesting

    These screenshots are amazing. Does anyone know more about the fact that "textures are procedural" and how they're able to use this method to compact things down into such a little distribution?

    1. Re:Amazing Screenshots by 3Suns · · Score: 2, Interesting

      I believe it's a trick borrowed from the demo scene. In extremely size-critical styles of demo, such as 64k intro, coders create textures, models, and even music at runtime, rather than storing these as bitmaps, vector lists, or midi/mp3. Usually they are created with some fractal-type function.

      I assume the models, levels, and sounds for this game are pregenerated and stored in some efficient format. Textures are pretty easy to generate with a fractal.

      What impresses me most about those screenshots are the really cool lighting effects. It appears they have implemented realtime shadows, luminance maps, and other really difficult techniques.

      --

      -3Suns

      ~~~~
      The Revolution will be Slashdotted
    2. Re:Amazing Screenshots by AnwerB · · Score: 2, Interesting

      There's a nice 23-page pdf of an (iterative fractal) procedural textures examples at:

      http://www.uno.edu/~SAGES/presentations/Riddleof th eSphinx.PDF (warning: huge 1.9MB pdf file).

      There's also an example in the file of fractal compression of topographic maps. Something like this could be used to provide any level of datail to a surface, as long as you knew the statistics of the texture, and defined some 'binding points'. So you just need to fill in the rough details of the mountain, not the actual matrix defining it:

      E.g. 1000m high at [55,-92], 0m at [444,17], 0m at [-90,200], Hausdorff dimension 2.3 (Alps), or 2.15 (Rockies).

      The file also list some example uses for the fractal texturing methods, such as background noise generation for missile tracking, stock market fluctuation simulations, expected word frequency in written text, lung destruction patterns from smoking, percolation, etc.

  5. There's a book by Guy-Lecky-Thompson... by tcopeland · · Score: 5, Interesting

    ...Infinite Game Universe: Mathematical Techniques that talks a lot about how to have a varied game universe while keeping size requirements under control.

    One of the techniques he discusses is using a psuedorandom number generator to create game objects and attributes and such, and shipping the game with a couple of pregenerated seeds to start up the generators. He uses the game Elite a lot in his examples, and anyone who's played that game knows what a good job they did in that regard.

    It's an interesting approach, especially when contrasted with WAD files.

    1. Re:There's a book by Guy-Lecky-Thompson... by GigsVT · · Score: 2, Interesting

      Nethack et al do the same thing. It's cool that they are random from game to game, but once generated, they are persistant.

      Back in the day, Telengard for the commodore did this too, except it made the levels very huge, and the same from game to game, so that the level was always the same for everyone, but it was never stored anywhere, it was only generated from the "seed", which never changed.

      --
      I've had enough abrasive sigs. Kittens are cute and fuzzy.
    2. Re:There's a book by Guy-Lecky-Thompson... by cubic6 · · Score: 3, Interesting

      Another great game that used a lot of mathematical methods was Daggerfall. It had a world so big that it would take something like a week of real time for your character to walk across it (not using fast travel). All the wilderness parts were fractally generated, so everywhere looked unique without having to pregenerate the layout.

      --
      Karma: Contrapositive
  6. Great Compression by DrugCheese · · Score: 3, Interesting

    I remember a friend of mine showing me the winner of this compression contest, it was like an 24kb download and it was 12 minutes of good music and graphics scrolling around the screen. Blew my mind.

    Anyone know what I'm talking about? Cause I've searched and can't find it anymore.

    --
    *DrugCheese rants*
  7. Proof that real programmers do still exists by Jason+Straight · · Score: 2, Interesting

    I thought we were all nearly extinct from the Visual Armageddon!

  8. Re:Amazing by antime · · Score: 2, Interesting

    It's a demoscene product, made by the group farbrausch.

  9. Real-time generated textures by PingKing · · Score: 5, Interesting

    According to the readme, the texture-maps are generated in real-time:

    We do .not. have some kind of magical data compression machine that is able to squeeze hundreds of megabytes of mesh/texture and sound data into 96k. We merely store the individual steps employed by the artists to produce their textures and meshes, in a very compact way. This allows us to get .much. higher data density than is achievable with normal data compression techniques, at some expense in artistic freedom and loading times.

    The problem with this, of course, is that it requires major computational power, and you're limited with the type of textures you can produce. It's probably a case of this program specifying 'bumpy metallic texture' or 'smooth stone texture' on the fly.
    I remember the old flight-sim 'Strike Commander' would generate the game's maps during installation based on fractals. It used take AGES... this program generates many more megabytes of graphics on the fly... very impressive.

    --

    Patriotism - the last resort of scoundrels.
  10. Re:64 Kb by grub · · Score: 3, Interesting


    Back in school we had a 6502 development kit. We had to flip a 8 switches (bits, this had a staggering 256 bytes of memory) to set the address and another 8 for the data then hit a button to load the data into RAM. Once it was all done we set the address toggles to the start point of the program and hit an execute button. The output was 2x 7 segment LEDs..

    I seriously almost bought one for home to tinker with but it was a few hundred dollars and I was a starving student..

    --
    Trolling is a art,
  11. Elegance by PhotoGuy · · Score: 2, Interesting
    Wow, flashback to when elegance in programming was far more common, and bloat was far less programming.

    I worry about newer generations of coders, never having known elegant, lean, efficient, and useful code, from the major bloat that comprises most software projects today.

    Items like this, are truly things of beauty, and only becoming more rare.

    --
    Love many, trust a few, do harm to none.
  12. Pfft by l33t-gu3lph1t3 · · Score: 2, Interesting

    So, zipped, it's 96KB. Whoop-dee-doo-dah-day. Running, it consumed an obscene amount of system resources on my PC. How on earth does it require 512MB RAM and 128MB framebuffer? There seems to be an awful lot of duplication of texture, geometry, and code going on here...

    --
    ------- "From bored to fanboy in 3.8 asian girls" ----------
  13. Re:Libraries by John+Harrison · · Score: 4, Interesting

    I did something similar using OpenGL. It is a 3D asteroids game in which the action occurs in 3d, not in a 2d plane. The zip file for it is about 102 kb, but most of that is because I included glut.dll so that people wouldn't have to hunt it down. Oh, and by using OpenGL I have been able to run it on Windows, MacOS, and Linux.

  14. Doesn't work by TeXMaster · · Score: 1, Interesting

    Crashes on my Windows XP box. (BTW, when first writing this comment, Slashdot complained I was too fast ... looks I need some of those pills to last longer?)

    --
    "I'm never quite so stupid as when I'm being smart" (Linus van Pelt)
  15. What if it *did* install Linux? by NotQuiteReal · · Score: 4, Interesting
    Maybe not this time, but it seemt to be just a matter of time before someone comes up with Linux "scum-ware", a la Gator (or whatever it is called now) and its ilk.

    1) get your cool geek game advertised on slashdot.
    2) lots of people download it and run it.
    3) bury some obfuscated language in a 30 page EULA [well, 30 pages that only show up 5 lines at a time in a tiny un-resizeable window]. The gist of the "I agree" button is that your machine will bootstrap into a nuke-and-pave Linux installation!

    Ok, this is tongue in cheek, but seriously, do the slashdot editors evaluate things like this for viruses or other mal-ware? Where's the checksum of the one they checked?

    Who downloads mysterious 100K executables and runs them on a live machine? [heh, especially from Germany, I mention this only because the last two unprotected Windows machines put on the net by some hapless aquaintences of mine were running German FTP sites so fast you'd think they were configured that way out of the box.]

    --
    This issue is a bit more complicated than you think.
  16. Re:Libraries by jon3k · · Score: 2, Interesting

    Should we consider the size of the operating system in that too? What about the hardware drivers?

    So every application is the size of it + all dependent software?

  17. Yawn.. here's a 5kb FPS by RenHoek · · Score: 3, Interesting

    Seen this?

    http://www.the5k.org/description.asp/entry_id=946

    It's a winner of the 5K contest. A Wolfenstein in Javascript in just 5 kilobytes.. Now THAT is small ;)

  18. Re:wow by Chilliwilli · · Score: 4, Interesting

    No so much a compression algorithm as a way of procedurally generating textures. Theoretically using this technique a games company could ship a game and the user could decide at the other end what size and detail they want their textures to be. This would have benefits as the textures would be scalable to suit users hardware and only one set would need be distributed in a small vector/algorithm/macro form. If more game distribution was moved to online electronic form then this would certainly be something worthy of consideration by the developers.

    --
    Cure cancer.. and stuff! www.team45.info
  19. Re:Why are they all set in dark machine rooms? by silicon+not+in+the+v · · Score: 2, Interesting

    I am totally with you about the darkness thing. (Forget the butterflies, though.) I'm not a big FPS gamer (mainly because I didn't want to shell out the money for the top-of-the-line video cards they need, and I don't have a lot of time to get good enough at them to play online.) I recently downloaded and played the demo of Half Life to see how it was since I heard so much about it. I could barely play it on a Saturday afternoon because even with the brightness settings in the game turned all the way up, the stinkin' hallways were still too dark to see very well in. I could play pretty well at night because there is dim stuff there to be seen if you are playing in the dark. I haven't played a lot of other ones, but Doom and Descent were decently lit. Is this an on going trend of games getting darker and darker? Pretty soon, every video card is going to have to be sold with a pair of night vision goggles to actually be able to see the games you play.

    --
    We may experience some slight turbulence and then...explode. -Capt. Mal Reynolds
  20. The point? by SmallFurryCreature · · Score: 4, Interesting
    Well howabout that this thing took less time to load then any recent FPS I played?

    Also there may be a model for selling software online rather then on CD/DVD. Obviously this game would cost a bit less to host then say the 5CD farcry.

    Also don't forget more portable solutions. Laptops or PDA's and other gadgets. They got extremely limited storage but my old calculator could hold this one. Not run it but hold it :)

    Mostly however this is just a tech demo. Showing that you do not need a massive wad of textures just to make a nice looking game.

    --

    MMO Quests are like orgasms:

    You may solo them, I prefer them in a group.

  21. Re:You're right... by Zangief · · Score: 2, Interesting

    Using SDL would still make sense if you are developing a windows-only game. The simplified API would lower your costs, both in time and money. Although you give up a little power in exchange for that, so it may only make sense if you are a indie developer.

  22. Re:Explanations! by WWWWolf · · Score: 2, Interesting

    As I'm one of the guys responsible for this game, ...

    Tammo "kb" Hinrichs

    Oooo, it all suddenly makes sense. You were the one of the guys who ported Second Reality to C64, right? Can't stop amazing people with smaller and smaller things, eh? =) Great work!

  23. Re:Why are they all set in dark machine rooms? by retro128 · · Score: 2, Interesting

    I'm with you there. Well not necessarily regarding the butterflies and Bambi prancing happily though the meadow, but I'm talking about open environments. There is very, very, very little of that in games for some reason. Everyone still has Doom syndrome where they make you run though a maze for the entire game.

    It's probably why I liked Beyond Good & Evil and Giants so much.

    --
    -R
  24. Best support for audio and gfx? by Ayanami+Rei · · Score: 2, Interesting

    I would really have to argue that... clearly you've never programmed against ALSA or OpenGL in Linux with properly supported hardware (which is a good slice of stuff available today, if you're willing to support the occaisional binary driver). There really isn't a difference, just familiarity with the APIs.

    Hell, demoscene coders would have killed for something like ALSA 6 years ago. Thank god for Sahara Surfers, if you know what I mean.

    The demoscene loved the Amiga. Now they love the PC. TBL managed to get their demo engine working on Linux and Windows (which is quite impressive). So what evidence do you have to support your opinion?

    (and I'm not expecting that anyone write a 3d demo in Linux, especially if they want a wide audience of gawkers... but IMHO it's much easier to write a 64k demo (especially if it eschews 3d in an old school stylee) in linux with the simple APIs than it is with Windows and DirectX. I can see myself doing the former, but I'd struggle with the latter.)

    --
    THIS THING CAN TURN ON A DIME, MACROSSZERO STYLE ALSO FUCK BETA, ~NYORON
  25. Re:I'll sum up by Anonymous Coward · · Score: 2, Interesting

    I agree with you save the last paragraph.
    Linux is faster, and that includes 3D graphics. There are some issues with sound latency, dependent on configuration, but they might be over by now, I'm not running a late distro.
    Direct3D would not make 3D graphics any faster on linux, do you even know what you are talking about?
    Oh, IAAGP (I am a game programmer).

  26. Re:wow by Pxtl · · Score: 2, Interesting

    Amen. Those shots just startled me. When I read the description, I was expecting something like Cube (wouter.fov120.com/cube). Cube was super-high efficiency - small engine, simple mapping system, simple networking. Cube used jpegs for textures - fsck quality, I like small games. It was a good idea. But this game is gorgeous. It shows how much graphical power DX comes with out-of-the-box.

  27. More Wow! by Ch_Omega · · Score: 4, Interesting

    For those interesting in something else from the same people, check out this 64k demo which among other things, includes detailed 3d-models of nude women. :)

  28. Re:wow by LoRdTAW · · Score: 2, Interesting

    "Theoretically using this technique a games company could ship a game and the user could decide at the other end what size and detail they want their textures to be."

    This definatly would be an excellect idea. Think about it when you buy the game you could specify low rez 128x128 textures for a low end machine or 512x512 high rez or even bigger for cutting edge systems. and maybe throw a few variables in there to make shure the textures come out a little different for each person so the game is never the same on any two machines. And of course the first time the textures are generated they are written to disk as a cache so a user doesent have to wait hours to generate hundreds of textures or have gigabytes of ram. Could also apply this system to vary skin textures on models so all the in game characters never look the same. You could also generate more then one wood texture in a scene so the wooden floor in an old mansion will look totally different throughout the entire mansion and not just a repeat of the same texture over and over. would require allot of power but pc evolve so fast that in a few years we might be downloading games under 10 megs in size that generate all terrain, models and textures on the fly so the game never looks the same but always plays the same (maybe that can be dynamic too!).