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)."
amazing
impressive compression algorithm !
that's awesome!
While it is impressive to write something like this in such a small binary, the "Application" as a whole is MUCH larger. The obvious dependancy on DirectX alone makes the entire app > 20MB.
"When life gives you lemons, don't make lemonade. Make life take the lemons back!" -- Cave Johnson
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
My website
Sure would be nice if programmers around the world would at least follow this guys lead a little bit. I'm so sick of bloated software. For example - CD Writing software for windows. Does anyone need or even want all the dang crap that comes in those?
Don't Tread on Me
A produkt made by .the .produkkt won't run in KDE!?
don't tell me this was statically compiled and includes all the fonts, and 3d libraries in the download!
I was about to make a torrent for the game, but then i realized the torrent would probably be bigger than the file itself ;)
Suddenly, I'm taken back to the days of Doom, where I can fit a FPS onto a floppy disk. Sweet.
And it's still too much for my computer.
Absolutely incredible. But I can't find any links to information on .the .produkkt here? Or on Google. Anyone know who these guys are? Is this open source or commercial release?
I got the .zip file and it is .exe (sigh).
"Take that Lisa's beliefs!" - Homer Simpson
where they'll have an article about a crappy game no one wants to play, but just as a way to look at all the recent advancements, but looking at the screenshots it actually looks like a decent game, I might go investigate further and get a copy once the fires are out from the servers after a good /.'ing.
Cool stuff though, I'm always amazed at how efficient people can make software, and this is a prime example of it.
Buy Steampunk Clothing Online!
Old timer? 64 Kb?
For my first paid programming gig, I had to stay within 8 Kb. You young whippersnappers with 64 Kb had it easy!
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/
HD space is cheap right? So if this advancement increases development time and cost, it is a tech achievement, but... i guess... whats the point?
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?
Im sure this will spark off the obitious "In my day comments" Well your day didnt have sweet 3d gfx!
...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.
The Army reading list
I thought that the whole 64kb was more of a memory limitation instead of harddrive limitation. I would imagine this program takes up a bit more than 64kb of your memory when it starts generating all these texture. Still cool nonetheless.
relying upon Mesa, the nv driver, and the linux kernel would be any better? It would still weigh in over a meg then.
Do we only impress the critics when we write to bare metal?
(of course not, because then you're criticized for having hardware lock-in. You just can't win)
Omniscent, is the first level of Descent (you remember, the first 360degrees shooter) in 4kb (4096 bytes) with music and textures. Non-playable, but still really cool. It was released in 1997.
So they've optimized it down so amazingly well the zip fits in 96kb, but the thing still needs half a Gb of memory to run? Interesting.
Personally, I'd rather go for a 512Mb package that runs on a 96kb box, but I'm odd like that.
"I Know You Are But What Am I?"
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*
I am very impressed with the code size, the screenshots, and the possibility that this might actually be real. My problem is that when I try to open it I get, pno0001.exe has generated errors and will be closed by Windows. You will need to restart the program. An error log is being created.
;)
Reminds me of that fake emulator that was released, and hyped here, a couple years back.
I am pretty certain that this window would be about 96k of code
YES! They finally released.... Duke Nukem Forever!
*jumps for joy*
*looks again*
Oh shit. Wrong program. Damn you, 3d Realms!
here: http://sebaplus.free.fr/prog3d/demoscene.htmli s one is especially impressive: http://sebaplus.free.fr/prog3d/fr08v101.exe
Th
wolruf@gmail.com
Can someone post a link to a torrent?
It's taking forever to download . . .
So they've kept the game's source ~100k compiled? That's still a *lot* of source.
They use DirectX, so a lot of the complexity in graphics processing (and hence file size) is external to the executable.
They still definitely need to set up the worlds, and keep track of all the data, AI, collision, etc..., but that can easily be done in under 50k lines, especially for a demo with a few stages at most.
Informative?? It unzips to exactly 96k.
It has crashed for every person that I know that has tried to run it. Look out it's a trojan! hahahahah.
This thing is a feat of programming, but its small size belies that fact that it requires a mammoth rig. Procedural textures? Great if you want to needlessly minimize your software so it will fit on exactly the kinds of devices that won't be able to run it.
http://theproduct.de/ was the first thing I thought of when reading this article. It was a demo in 64 that otherwise is as you described.
these guys are actually a part of the demoscene. They have done quite a lot of spectacular demos and intros. They can be found here. This was a release from the 96k game competition of this years breakpoint demoparty held last weekend in Bingen, Germany.
fx! kicking and screaming
The instruction at "0x00000000" referenced memory at "0x00000000". The memory could not be "read".
In Windows 2000 Profesional
Ok, I'm not saying this isn't impressive, but since it's using everything included in DX8.0, it's not really fair to say it's that small. I mean, look at it another way...If you built a mod for UT2K4 that was 150k would you be jumping up and down? No, because it requires > 1GB worth of stuff to be downloaded first. In the end though, that's still some pretty tight programming
I thought we were all nearly extinct from the Visual Armageddon!
This game is dynamically linked to DirectX, which is a large program library. 3D Winamp visualizations are also small, because they don't have much rendering code in them either, but they're also not optimized very well (like a *real* engine such as Quake 3 or UT2004). Just because *your* "hello, world" is statically linked to the C++ library and mine isn't, doesn't make mine better because it's smaller.
And procedural textures? The demo scene guys have been doing this for ages.
This has left me underwhelmed.
Vote for global prefs bug
100K is the executable size....it's zipped but not compressed
They have obviously gained with the zipping:
Packed: 97,256
Unpacked: 97,280
It's quite obvious the original assertion is misleading since it's zipped and it's smaller!
---- Take the Space Quiz!
I bookmarked your site, and will visit again some time. But please, in your next release, allow me to invert my mouse.
Note to self: No more arguing with the faithful.
According to the readme, the texture-maps are generated in real-time:
.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.
We do
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.
1. Downloading... very fast, as you'd expect. 2. Installation... very simple, just unpacks to one readme file and one executable. 3. Documentation... brief, note that DirectX 9.0 is required (not 8.1 as mentioned in the story). 4. Running... brief: "Instruction at 0x000000000 referenced memory at 0x000000000". Conclusion: I can make the same functionality in an even smaller package.
Sig for sale or rent. One previous user. Inquire within.
I'm impressed!
I know someone said hard drive is cheap...so no big deal. But bandwidth ain't...
If any of this tech can be incorporated for compressing video and interactive displays we could bring such things as videos or games on demand much more quickly.
The issue isn't storage space for watching a movie. A PVR/TiVo has the room. The issue is download wait. If you can cut that download down by a 1/10th the size, + the 10 times increase in bandwidth over the next 5-10 yrs. You will have a 100 fold performance increase. More than enough to make DOD (Download On Demand) feasible!
step one) download the file
step two) extract the junk
step three) look at the extracted file size
my computers too crappy to run the exe, but a quick check says the executable really is ~96k.
_maybe_ that extracts into another one, but i think its my lack of dx9 that caused a crash instantly.
Have you ever tried to zip a binary file?? Ratio of the compression is less than 1%; in the case of kkrieger:
Compressed: 97256 bytes
Uncompressed: 97280 bytes
24 bytes were compressed, which makes the compression ratio 0.0246% percent of the original... And then add the readme file, which is 5k..
I don't know what generation procedures they used, but "the textures are procedural" means that there are no graphics files in there, and that an algorithm creates the textures at runtime. As a simple example, you could write an algorithm that made a checkerboard image in only a few lines of code. That code takes up only a handful of bytes, whereas the texture graphic itself would take up hundreds of kilobytes, even compressed. You could also look at it as the difference between an equation, and a graph of the equation.
I'm curious to know if the maps are procedural, too.
Yeah, code is, probably, a lot more than 100K, but an executable itself is way under 100K, and that is *after* you unzip an archive:
/tmp/dnloads/kkrieger-beta.zip /tmp/dnloads/kkrieger-beta.zip
$ unzip -l
Archive:
Length Date Time Name
97280 04-11-04 23:45 pno0001.exe
5504 04-11-04 21:20 readme.txt
102784 2 files
--AP
I used to work at a tattoo shop, and a girl came in and wanted the source to Wolfenstein 3d tattoo'ed on her arm...
If you think that's something,you should see her compiler!
ha ha.
stuff |
so what kind of frames per second can I get with the Nvidia GeForce 6800 Ultra and this game?
We're not all linux users here man, chill.
This is the sig that says NI (again)
Only all my levels consisted of solely untextured empty boxes. And there was no HUD.
Just played it through, awsome amount of architecture and content they've fitted into such a small face. However, I'm getting screwed up shadows, despite meeting the requirements (1.4ghz athlon, 512 ram, gf4 ti4600) :/
Mirror... http://catsdorule.torpedobird.com/slash/
Yeah NS. I've never used linux in my life. Just because it's "geek news" doesn't mean it has to be fricking Linux every bloody article....
Trust slashdot to kill a website hosting a 96k file.
try here and here or for a complete list here
Farb-Rausch do some nice demos... worth checking out.
If it's 96kb how come it's taking so long to download...
What the hell is it with the tradition of dark foreboding metal enhanced settings?
I want a FPS game set in a sunlit mountain meadow with birds & butterflies flitting about.
So I can see the blood....
TDz.
news for NERDS Stuff that matters, where does it say linux bs only? correct me if i'm wrong, but I dont think so.. heck, you should post this everytime they talk about a book, OSX, BSD. everything. please waste more bandwidth and braincells.. hopefully both of yours will runout before the rest of ours
You obviously have no knowledge of anything linux. Nice troll.
1.6Ghz Athlon, 512MB RAM, ATI 9200SE (128MB) 1024x768 - looks great! runs about 2fps :\
This comment does not represent the views or opinions of the user.
So the game requires a PC with:
1.4 GHz Processor
512 MB Ram
96 kb HD Space
Well at least my computer meets one of those requirements!
Are you serious?!
Discover Elite now!! Check out this page, maintained by one of the original creators Ian Bell and this Elite resource
10
01
You may have to scale and tile it a bit.
-- Proud descendant of semi-nomadic cattle-herders.
DirectX would be a perfect name for a graphics library for X windows?
I don't even know her!
Thanks, I'm here all week.
It reminds me of this guy who wrote a snake game for Linux that compiles to under 1500 bytes. It really does work.
Get your own free personal location tracker
You know, I used to get away with using a P233 until about two years ago.. now its like I need a 2.5GHz box anytime I touch something..
AMD AthlonXP 2200+ 1.8GHz
512MB DDR Memory
GeforceFX 5200 Dual-out VGA
Game runs laggy as shit. Looks nice though, amazing graphics, but laggy as shit.
I've left to find myself. If you happen to see me, please, keep me there until I return.
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.
The author(s) are basically trading off processing power for hard drive memory space. I once had the idea of the opposite: a FPS with minimal processing power put huge memory requirement.
Basically, the approach could be to pre-generate all possible game screen and show the right one to the player depending of his actions. So for example, I could generate a graphic file of the player looking in a particular direction, then another image with the same player but 1 pixel to the right of his previous position, etc. etc. In game time, I could then simply show the relevant graphic image to the player depending of his XYZ position and heading.
Granted, such scheme present a lot of problems, especially when you take account player "shots", or ennemies. Also, this would probably be very IO/memory intensive. But the actual "game code" would be greatly simplified.
I used one of those too, only it was in a computer class at a summer camp. Output was one row, 8 "digits". I was about 12, and the instructor put a lot of numbers on the board for us to load (via switches) into the machine. The we hit the execute button and it said, "What are you looking at froggy-face?"
the persephone levels are quite like that.
Conservatism: The fear that somewhere, somehow, someone you think is your inferior is being treated as your equal.
640Kb was enough after all!
"If God created us in his own image we have more than reciprocated." - Voltaire
To have a FPS in less than 100 megs is truely amazing.
Ban the bloat.
I am Bennett Haselton! I am Bennett Haselton!
On my 2.8 GHz machine, the demo took a full minute to load.
Check out:t looks beautiful on an accelerated-X Linux box.
http://freshmeat.net/projects/sunplasma/
I
76K compressed download, again textures (trees and landscape) fractal-generated at compile-time.
"I bless every day that I continue to live, for every day is pure profit."
if you took the code for say, half life, and ignored all the textures and maps, how big would that be? it seems to me that this release was an exercise in procedural graphics generation, not in code optimization.
nt
HI O WISE PRINCE. WHT TOOK U SO DAM LONG?
If only I were logged in and had mod points...
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" ----------
Yeah, yeah, I know. Go ahead and ruin a simple, explanatory example by pointing out that yes, a checkerboard could actually be stored as data smaller.
I should have picked a two-axis gradient.
= 9J =
Use Vim!
Seriously tho, what is the massive fasination of something that produces all the code for you includes everything in the know universe just incase you may want to use it and producers uber bloatware>
Oh yeah? When we wrote code on IBM Mainframes, we had to stay within 4k - and we liked it!
</oldtimer>
The society for a thought-free internet welcomes you.
Can't verify this at my work computer, but it's worth noting that there's more to zipping than compression; even in already-compressed or otherwise difficult-to-compress situations, it's the ubiquitous Windows equivalent to tar, after all. If there are multiple files in the archive, the download is already easier. If not, well, a few bytes of compression is better than none; considering the stated demands of running the thing, the time to decompress is trivial.
NB: YMMV. IANAL. Take the above with a grain of salt.
I used to say the same thing, but finished by using the extensions of CD-writing software. For instance,
my Nero is very good at converting home videos into VideoCDs (I use this feature quite often).
The executible unzips to the same size as it's archived form because it's packed with some form of executible compressor (UPX-like). Looking in the executible indicates that instead of code and data secrions, there's one monolithic section called "kkrunchy". A google search only lead to a single result suggesting that it is, infact, a file compressor and does cause trouble (memory access restrictions within XP/2000).
DeMe
it is the equivalent of outlook-excel-whatever-macro-virus for slashdot readers :)
Tube 256 bytes intro [www.256b.com] only needs DOS.
I am running an optimized XP Pro system with the latest patches, 2.4 GHz, 1 gig of ram, ATI Radeon 9700, and it runs like dogshit. It crashed my computer and I am not going to try it again.
You can do it in 2 bits if your engine supports brick tiling;)
So I guess this is impressive, especially if it's taken more as a contribution to the demoscene than to gaming. But what I think is far more impressive is that a game like Starflight which included hundreds of planets, dozens and dozens of hours of gameplay, an equal number of conversations and text and hundreds of objects, all fit into 2 5 1/4 disks (360K x 2). In 1986. And while exceptional, Starflight is merely representative of the amount of efficient coding that had to go into early game creation. Kkrieger, and more so older classics like Starflight, should serve as examples to modern developers who seem to be bloating their code.
There was a ground-breaking demoscene entry a while back called FR-08 written by a group called Farbrausch. It was 64kB and to my knowledge, was the first 'public' program that used procedural texture generation. (I forget which demoscene party it was entered in...)
.product" it does seem kindof a strange co-incidence ;)
Is this written by the same guys? Since FR-08 was also called ".the
That 96k contains all the scene data. It isn't just the engine. Why would you be impressed if they wrote their own graphic engine? How would you take advantage of hardware accelleration. Sheesh! Write a tight program that uses OpenGL/DirectX and you get criticized for not using assembly tuned to bare metal. Write aseembly tuned to bare metal and you get criticized for having a program that only runs on specific hardware (or doesn't take advantage of hardware acceleration).
-matthew
"THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
The fact that it is only 96kB is really nothing to laud, considering that most assembly programmers could fit a basic raytracer in under 4k of code - provided that all textures and layouts were read from disk.
So the fact that they fitted all the textures and layouts into the other 92kB is "nothing to laud"?
Variable name length has nothing to do with the resulting binary size.
It was *very* impressive and worked on this machine without any problems, was a bit slow though. This is a Pentium-M 1.7GHz with 1GB and DirectX9, required roughly 300MB Ram.
Not to belittle the man's efforts, but a raytracer is *incredibly* simple, algorithmically... hell, I could (and did) write a basic one that renders the classic reflective sphere on a checkerboard (with shadows) in an afternoon. Sure, making it small requires a few tricks, but, honestly, I've seen much more impressive things.
:) And yes, Saturn had shadows.
Sphere on checkerboard, two mirrored spheres, and fractal-textured picture of Saturn. Each of the above in one (long) first-year lecture, on a TI-81 graphing calculator (which has 2k of memory for all programs total). Greyscale implemented using one-dimensional error-diffused dithering for all of the above.
I miss my TI-81. I'll dust it off again when I finally kit-bash a holder for D cells on to it (it eats 4 AAAs in about 9 hours when running rendering code).
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)
right here Assembled on x86 Linux, the binary is 8 KB. Since it's in assembly it probably won't work on anything but x86 anyway...
I have this tiny game too. I use game.dll and the `only' function I run is
:D
run3Dgame();
Kidding aside - That's a nice pice of work
The maps *are* procedural, but more interesting is that all the characters are, too.
The initialization is pretty simple. It starts off with a few cells dividing and mutating, and pretty soon simple creatures are evolved. These keep evolving and then they discovery metalurgy, and eventually they make some cool guns. Then the program introduces another alien race that was running in a different simulation, and gets them to try to fight. At about the right time, it'll stop the whole simulation and put you in the game.
Incidently, that's how the maps are made prodedurally. The cool thing is that every time you play, the creatures and maps are totally different.
HIV Crosses Species Barrier... into Muppets
errrr... not counting all the OS and support libraries :-(
the preceding comment is my own and in no way reflects the opinion of the Joint Chiefs of Staff
I basically have the exact specs it requires on my gaming rig and it just hardlocks it with a blackscreen. Oh well would have like to see it.
If you wanna get rich, you know that payback is a bitch
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.
Leave my junk alone!!!!
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
Raytracing? What exactly have you smoked?
.kkrieger audio programmer .de
I won't allow myself the time to dismiss your "arguments" on a detailed level, but:
* Why is the game SO dependent on the graphics card then?
* Why do you talk about missing lighting effects when there's a full phong lighting model with several light sources and stencil shadows everywhere?
* Why do you think you know ANYTHING of the used algorithms? Did you already reverse engineer the whole game?
* Timer interrupts? ON WINDOWS? Come on.
Please. "I have no idea how this all works, but I hate them" would really have been less hassle to type
kb / farbrausch
game programmer at Inverse Entertainment,
Apparently, they are using the same method as in their 64K demo http://www.theproduct.de/ :
.not. have some kind of magical data compression machine that is able to squeeze .much. higher data density than is achievable with .kkrieger is not written in 100% assembler/machine language. Not even nearly. Like the .kkrieger was mostly written in
From the readme file
- We do
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
normal data compression techniques, at some expense in artistic freedom and loading times.
-
vast majority of game projects being developed today,
C++, with some tiny bits of assembler where it is actually advantageous (notably, there
are a lot of MMX optimisations in the texture generator).
All I have seen in the top modded threads are pretty much "this sucks", "I could do better", "those var names suck" etc. Personally, I am quite impressed, and i'll bet that most of you, deep-down are too. If you think that you COULD do better, then why didn't you? Why aren't you the one who made the app? Ah, and that's just it... ripping on the work other people did, be it MSFT, Real, or some individual is easy and doesn't take much work.... Grow up, we're not 6 years old anymore.
I post this in reply to a few of the responses I've gotten, not just the parent post.
- I'm not impressed with the 96kB executable size. As far as executables go, it is small for a Windows app, but it still dwarfs the animated demos which have a limit of 4k.
- It seems to me that the point of writing this game was not to produce the smallest useful binary, but rather to illustrate a particular method of reducing binary size by producing textures at runtime rather than compile-time.
That said, the real story is not the size of the executable, but rather the value of the tradeoffs made to produce it. I don't find this particularly remarkable. The coders made a tradeoff; they exchanged a smaller exe size for a lower runtime performance. So what? How is this any different from what every other coder has had to do at one point in their career?I wish these guys had actually made the exe larger, because /. would focus instead on the technique used to compress the textures, rather than its small size. Maybe instead, someone would comment on how the 96kB exe actually runs faster because the whole executable image resides in the processor's cache?
The society for a thought-free internet welcomes you.
I know it was a joke, but I thought I'd point this out for the curious. Yes, 2004 is big, but it ships with 80 player characters and over 100 maps.
Serious Sam
Those who can, do. Those who can't, consult.
A real man licks his own genital.
The first cheats are already available on KaZaa.
sarchasm: The gulf between the author of sarcastic wit and the person who doesn't get it.
America's Army
Aliens vs. Predator
Descent 3
GLTron
Heavy Metal
Mutant Storm
Neverwinter Nights
Unreal Tournament
Unreal Tournament 2003/2004
Vega Strike
These are all games that use both SDL and OpenGL. Many more use either one or the other.
http://www.angelfire.com/games/ultimateblaster/
Lasers Controlled Games!
.. like .. "been there done that", and "it's not that impressive" .. For crying out loud, that's impressive work guys! I ran it in a ATI 9600 and was impressed .. it seemed very close to DOOM 3 in 100 Kb, the lighting efects, the game play (yes it's good if you think about the 100 Kb) the textures (ok that they are procedural), and the models were great. One of my room colleges in my office had the same attitude and i felt like spanking him for those type of comments .. (;)
I fuse with Mercer every single day...
Read the readme.txt, dude.
.not. want to claim that the techniques we used to develop .kkrieger are new inventions. Its rather a selection of useful operations and their parameters to optimise the results."
"The concept of the texture/mesh generators was developed by fiver2. We do
Looks like we all owe Bill Gates an apology. 640K is enough for anybody!
Here's a first person shooter in 5k of code
www.wolf5k.com
As I'm one of the guys responsible for this game, let me explain a few things.
First, to all the people saying this is senseless etc.: Please watch every second story posted on
Then, a few clarifications:
Hope that clears up a few things...
Tammo "kb" Hinrichs
Farbrausch Consumer Consulting
freelance audio programming guy for
shocked that our server is still alive.
The load bar finishes and then i get a blue screen...
;)
what a great game
My UT2k4 was a DVD containing 6 CDs, installed (not including libraries already on the system, such as directX), was about 5G. Wow.
Course, it has lots of levels, and net gameplay, options, multiple skins, etc. But still. Wow. Wish I had a windows box here to try out this here game.
WOW Simply put I have not been so impressed with 96kb in a looooooooooooooooooooonnnnnggggggggg time I think stuff like this shows how rich and full this world is with intelligence, keep up the great work guys if you ever complete and sell this you've got my money :-)
Later
... that every alien spaceship/moonbase/post-WWIII Earth is devoid of the technology to do LIGHTS?!?
I am impressed by anyone that can get a 3D engine into that small a piece of code. You can make the argument that because it's linked to DX that it's actually hundreds of megs large. I don't agree... I could then make the claim that EVERY piece of software that makes use of an OS's API calls is really hundreds of megs big. That's clearly a bogus argument, and I don't think linking to a given library nullifies this achievement.
But still... Can we get some LIGHTING in that thing?!? Doesn't even have to be dynamic, I'd be perfectly happy if you increased the overall gamma a bit. I mean, the graphics, what I can see of them, look excellent, Why not bring them out in the light more?!?
*
Omnytex Technologies - Where dreams and software unite
K&G Arcade - 26 games in one, a unique blend of action, adventure and humor
Invasion: Trivia! - Trivia, with a very sick twist!
Electro - The premiere electronics tool for PocketPC
If a pion (n-) collides with a proton in the woods & noone is there to hear it, does lamdba decay into the source pa
There is no texture in that file, only code to generate it. This was done before.
No GNU has been Hurd during the making of this comment.
Did you notice minrt_comments.cpp in the zip file? Same file, but with actual comments. Variable names are explained. The snipped you pasted becomes...
// Read screen width and height // Read number of lights and spheres
// For each light // Read position
// For each sphere // Center // Radius // Color // Reflection // Allocate the frame buffer. Init to zero to perform antialiasing.
// For
// i-th sphere // i-th light
// Read a float from stdin
// Read a point
int main (void)
{
char b[99];
int W=GN,H=GN,i,n;
nl=GN;ns=GN;
_f x,y;
F(nl)
RP(LI)
F(ns)
{
RP(SI.c)
SI.r=GN;
RP(SI.l)
SI.f=GN;
}
char* s = new char[(n=W*H*3)];
memset(s,0,n);
Some weird macros are used:
#define F(T) for(i=0;i<T;i++)
#define FV(V,T) for(V=0;V<T;V++)
#define SI sp[i]
#define LI lt[i]
#define GN atof(gets(b))
#define RP(P) {P.x=GN;P.y=GN;P.z=GN;}
It's not really that bad.
--grendel drago
Laws do not persuade just because they threaten. --Seneca
By the same guys that made this game.
Many graphics systems, when passed an image without any indication of a palette, will assume a linear gray ramp.
Fortunately I was born after they realized that 640kb would be enough for anybody.
Im not here now... Im out KILLING pepperoni
Well, this is rather disappointing. The game works with neither wine (transgaming CVS build) or winex3 (prebuilt binaries). You'd think that something this simple would run. I wish, I wish I hadn't paid that stupid fee to transgaming. I'm canceling my subscription to them as the CVS build works better for me anyhow.
Yes, I found this comment only after I posted mine.
No GNU has been Hurd during the making of this comment.
Noctis (http://anywherebb.com/noctis.html) is less than 1mb but lets the player explore a whole galaxy. It's an interesting game where you have total freedom to fly anywhere and do anything. No fighting, just exploration.
It doesnt work! whats up with this?
./pno0001.exe ./pno0001.exe: Permission denied ./pno0001.exe ./pno0001.exe: cannot execute binary file
%
bash:
% chmod 777 pno0001.exe
%
bash:
% bash pno0001.exe
pno0001.exe: pno0001.exe: cannot execute binary file
%
What directX? Does this use openGL or software? what lib of sdl do you need?
So, what is the secret code to open a spreadsheet? ... Anyone? ;-)
On a certain level, I agree with you that alot of software today is way more bloated than it needs to be.
On the other hand, I think it's wrong for a game developer to focus on the disk space footprint as a primary goal. Every book and evey intstructor will tell you to make your code work and then optimize. When you start off with the intent to make a totally optimized piece of software, you can often times limit its scalability. Furthermore, if UT2k4 was delayed 6 months because the developers wanted to make the install take 200MB as opposed to 2GB they would make far more enemies than slashdot-reading codemonkies.
Also, keep in mind that game developers often have to keep a close eye on memory footprints (especially when developing for a console with 24-64MB of RAM for video, data, and sound).
Just the fact he would use the timer's interrupt to handle independent events shows he's never done any real-time programing. The latency alone would kill you.
Anonymous Cowards suck.
01
10
The key difference between a Programmer and a Senior Programmer is that one of them is Mexican.
Yep, when I first started playing SC2 I thought that they completely ripped off Starflight and its sequel, but SC2 was just so good that you couldn't help but love it.
When the guys at Toys for Bob started their sourceforge remake of SC2, I emailed them and asked them about the connection. They responded that starflight was inspiration for SC2, and that the lead designer for SF (Greg Johnson, also of Toejam and Earl fame) and Paul of Toys for Bob had been good friends for a while. Greg Johnson did some voice acting on the 3DO version of SC2, so there's obvioulsy a connection.
The humor in the Starflight series is also similar, if much more subdued and not as overt. Still, if you enjoyed SC2 and are willing to endure some pixelation and the hassle of getting it to run in DosBox or something, the starflight series is still quite a playable game. Great plot too.
this fan site and Underdogs should get you started.
btw, further down the tangent. as well as being classic and early examples of efficient code, the same is true of SF and SC2 being quite early examples of the open ended gameplay GTA3 "pioneered." Nothing new under the sun.
I should think before I post. If you want to forgo the dosbox hassle, a barely modified Starflight was also released for the genesis. you know, if you want to "scour" the "garage sales" for the "cartridge."
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.
which will be about 128k
Which is double the file size! Why don't you just go ahead and ship this on DVD-ROM? Geez. Think of the bandwidth, won't you?
But no easier to blast something then actually take the time to test it.
MMO Quests are like orgasms:
You may solo them, I prefer them in a group.
My hardware and software includes (I know, not the latest and greatest, but not a slouch either):
Clearly, I meet the 'minimum requirements'... according to the game's accompanying readme.txt, the minumum requirements are:
supporting pixel shaders 1.3, preferably with 128MB or more of VRAM.
These requirements were not kidding... the game runs extremely slowly on my hardware. It was chugging along at, I'd guess, 10-15 frames per second (I'm not sure what resolution it was running at or color depth, but I run Windows at 1024x768x32bpp). The game was ok looking, visually, in some aspects was better looking than the original Unreal game, in others, not as good. Gameplay was not particularly exciting... though, at 10-15 frames per second, it might not be anyhow, but I only played it for about 2 minutes.
After 2 minutes, the game crashed and crashed Windows as well... Probably a result of it being 'beta' software, but nevertheless, a rare occurence on my particular Windows XP PC. As noted above, it's been over 2 years since anything caused Windows XP to crash on me! Not sure if my hardware was overwhelmed, the game being buggy, or if DirectX just killed it, but that's what happened. If you have a computer, less than 1 year old, with the latest hardware and loaded with RAM, this game will probably work for you. It doesn't work too well for the minimum requirements (in my experience, YMMV).
Interesting that they can pull this off in such a small package and trying out to see how it works for you. My $0.02.
-Joe
If we're all god's children, what's so special about Jesus? - Jimmy Carr
I wonder if you're referring to an assembly program I wrote to generate Sierpinksi triangles in 76 bytes. But please note, those 76 bytes included calls to DOS interrupts, which is an API in the same fashion that DirectX is an API.
Really. It ran a bit slow on my FX5200/2400+/512MBDDRRAM but I'm still shocked. Really, it's amazing. Makes you wonder why UT2K4 needs a DVD.
Perhaps it should say.. "Under 100k of ZIPPED code". Either way, it's impressive though.
It was a first person spaceship/shooting application that came buried in NW and I think was meant for "testing" IPX connectivity. Vector graphics, network play (of course), played well on a 386 and was under 30k. We played that thing for hours ...
"I hate to advocate drugs, alcohol, violence or insanity but they've always worked for me" - HST
I wrote a short (one line) DOS .bat file that plays glquake...
c:\quake\glquake
See. No problem
It's cool to have a game this small, but I think I'd give up another 500-1000 bytes to have an inverted mouse. :)
And what if you determine your performance bottleneck is an architectural flaw made very early on in the design process? Oops, redesign time.
This is just a pathetic try to avoid slashdotting. Cowards, I say!
Im doing a project where mere "helloworld" application is taking about 160Megabytes of source code and other resource files .... AND the target machine has 8mb of memory.
Evidently it doesn't like XP, i get XP bitching about maybe loosing data, and then that's it. no nothing. might have to download it at home. It's just a shame my pc at home is only a 1200.
Sorta scrapin the bottom of the barrell performance wise, (perhaps)
Life is like a box of chocolates, you never know when your gonna get food poisoning.
I know programmers who can't write HelloWorld.cpp with such hard limitations.
this is totally sweet. Thanks!
ps- I figured out the radar too.
Who is this Anonymous Coward character, how does he post so much, and why is he always such a whore?
First, as others point out, it's only "gratuitously" zipped, and expands to not much more than the zipped size. This implies the code is compressed in the file by some kind of executable packer.
I don't see how that's any less impressive than generating the textures at runtime. Why draw a distinction between procedurally generating textures, and decompressing a compressed representation of the code? Both are "nifty tricks."
well, not that small but this one here also looks quite nice:
. html
http://graphics.cs.uni-sb.de/~morfiel/oasen/index
Dunno what it is rendered with (and what hardware requirements) but the images are quite nice
How is this offtopic? Short maybe, but perfectly relevant...
You misinterpreted that. I discussed the difference between a basic raytracer and a more advanced graphics engine to lend fairness toward the coders. Yes, a basic raytracing engine could be fit into a 4k executable, but not without sacrificing the more esoteric graphics effects - as I explained. If the goal of the coders had been to produce the absolutely smallest exe, they've failed by a long shot. But I don't think this was the case. Rather, I think they successfully demonstrated an alternative form of compression in which the data was regenerated at runtime by an executable set of instructions, rather than merely reading and applying a transformation to existing data. And that is worth talking about.
I kind of hate to see this, but it irks me that people will worship this kind of thing - an FPS in under 96kB! How cool! Really. How many times have you heard of game reviewers rating games based on .exe size? Does it even matter? (I've got plenty of FPS games that come in under 96kB. Yes, they suck. Who cares? - the point of a game is to have fun, not marvel at the small size of the executable!)
The society for a thought-free internet welcomes you.
I have only read the moderated comments above this one up until now, and most of them were just bullshit.
:)
Anyway.
I would just like to say that I've been following your group's releases for a few years and I keep on getting surprised everytime I see them.
Keep up the damn good work.
PS. You people who complain should check out some stuff from the demo scene at some point. These guys kick ass. You don't. Deal with it.
Never had problems fitting my games in less than 4K on my VIC 20 in the '80s
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
I believe you were looking for
http://www.iancgbell.clara.net/elite/
The site has many different versions of it for several platforms. And unlike that googlespam site, it doesn't try and get you to pay for something that's free.
"Cause even Trolls love Rock & Roll"
I totally agree with your post.
A couple of days ago I executed an MD5 hash and it was more functional than this.
Years ago I was thinking of writing a ray-tracer in 1 bit. But, I couldn't decide if I should write it in Java or C#.
Then I picked up my copy of "The Zen of Assembly Language", but unfortunately a little too swift so the dust cloud that that generated kept me from entering my parents basement for a couple of days.
"The Zen" is truly the a great piece of work, although I don't really know why we would need to use these new fangled 16-bit CPUs.
But back to the subject, let's walks through how this game could be done SOOOO much better:
A "basic" raytracing algorithm is very simple - you simply map a texture over a wireframe model and then scale the result by dividing the x and y dimensions by the z distance.
That's right. That's EXACTLY how a raytracer would work, if there ever was one. I think for this one we should also implement tracing the actual rays, to add to the effect. Btw, I've got a nice wireframe model sitting in my backyard that can be used for this. Again, I think this really can be done in 1 bit.
Basic FPS gameplay would involve loading your device handlers (mouse, keyboard, etc...), and writing a response loop.
I think we can safely say that with mouse, keyboard, speech synthesis, speech recognition and a couple of other run of the mill devices this could be done in 2 bits, give or take 1.
Asynchrous gameplay (i.e., enemy moves as you stand still) can likewise be handled by chaining the timer interrupt (18h? IIRC) to your "enemy movement" code.
What can be more simple than chaining an interrupt to the "enemy movement" code that appeared out of thin air? But because it deals with interrupts, maybe 2 bits??
I bet with a Z80 we could bring it down even more, but let's not get ahead of ourselves. It's better to keep the system requirements low. So far we can do this in a 74HCT04.
Collision detection, etc, could simply be brute-forced by plotting the vector of the expelled projectile until it collided with another object.
I have a question about this. Do you think we should also use radiosity on the projectiles? Because my plotter doesn't support that, and I'd hate to waste the ink. Well, let's round it off, say 3 bits. That gives us a target of 8 bits total.
There. We're practically done. What are these guys smoking. This can be done in 8 bits, on a 74HCT04.
[/sarcasm]
Sir, you are a fucktard. Your last experience with Assembler (yes I call it Assembler, not Assembly, sue me) seems to predate the invention of the 8086 CPU.
I actually write assember for a living, and I can tell you that what these guys do is amazing. They are squeezing the last drop out of the space. These are the people that _write_ books like the Zen of Assembly (which is in serious need of a predecessor).
Also of note is that with linux you can set up a fullscreen game as one of your X Session managers (or even a runlevel), thus freeing up all the resources that would be taken up by window managers, desktop environments, etc. When logging in you can use the session menu (of many display managers) to tell it to run the game instead of KDE/Gnome.
I'm only typing this because I'm forced to.
I downloaded and got it working, but I can't seem to play anything. I end up in a certain room with the camera spinning, but there is never any guns or control given, just watching the camera.
I see it says press M1-M9 to change spawn points, but I'm not sure what that means. I have 768 Ram, GeForce3 Ti 500, on XP. Sounds stupid, but what do I do to start playing?
But the main chunk will be all the textures, sounds, models and maps that add to a massive amount of data.
(one uncompressed texture in 256 x 256 in 24 Bit color takes 192 kilobyte alone). As even really good compression algorithms won't compress all that data down to 96K, you'll need to calculate it algorithmically - which is quite difficult if you want it to look as good as the screenshots show it.
while (!asleep()) sheep++
The whole last paragraph was complete bullshit.
I mean, he gives such excellent arguments as "...since Windows is the best way to get the max out of gfx and audio hardware without compromising performance."
I'm not aware of how Linux makes your compromise performance. His post sounds like it a plagery of some page on microsoft.com. He gives no proof what-so-ever. He just says it, and snaps his fingers "Make it be so".
Exactly.
Nobody would argue that functional defects can't be introduced at design time -- clearly, they can, and given the expense of fixing a design flaw late in the dev cycle, good software engineers put a lot of effort into getting the design right. (Unless they're using an 'agile' process, which simply isn't appropriate for larger projects.)
Why are problems with resource consumption (CPU and storage) any different than functional defects? Why do so many people adhere to the dogma that you shouldn't think about performance until late in development?
Yeah, every book and every instructor may say "optimize last", but only neophytes who've never worked on a real software project of any size take it to mean "don't think about performance at first".
... and unreal tournament - SDL/OpenGL.
Why are you personally offended? Are you one of the authors? I know nerds, but...
Size don't really matter when it comes to games on CD-ROM. I think this sort or engine is more suited for the web because of it's small size its easily downloadable for use with web commercials/banners and/or 3D web games. Alot better than earlier engines for the web (name of them slipps my mind atm though, did'nt SGI have a web-based 3D engine waaaaay back).
It's been 17 seconds since you hit 'reply'!
I have a GF3 card. It has Doom III-quality graphics, and it did not run on my machine: it crawled at 1 frame per second.
If you go back in the history of games, the game 'Lord of Midnight' was one of the most impressive ZX spectrum games: 48000 different screen, and each screen had different things to play with...the ZX spectrum had 48K memory, by the way.
Another impressive game was the original Elite. In only 48K, there were thounsands of planets to visit.
a FPS using my name.
Yes, yes, I know, krieger in Deutsch means warrior.
Raytracing has absolutely nothing to do with wireframes. Maybe you're thinking of 'raycasting', which is similar but still not the same. But then you start talking about rendering the scene back-to-front, which has nothing to do with either technique.
"Chaining the timer interrupt" is like something I'd say if I were interested in making something sound more complicated than it really is to someone who had no idea what I was talking about. Besides that, you don't get timer interrupts in Windows programming (nor any other protected-mode operating system, I'd assume).
Based on those 2 things, I'd assume that you've got no clue what you're talking about. And how does an 81-byte fractal program compare in any way to a primitive 3d game engine?
--Jeremy
Jesus was a liberal
Had you actually completely read his post, you would have noticed that kb was the audio programmer for the game.
Anybody complaining about the game should try to make a more impressive one. If you can't, you have no right to complain.
I certainly can't. I'm in awe of the achievement. I've only seen one other 96kb game as good: Tsunami 2010, available at www.ainc.de
Have a look Here, here and who could ever forget...Sheeeeeep Cuuuuull!!!!.
You'd think you could add code for that to keep below the 100k mark...
In the game I get stuck after I enter the large 2-story room that contains the first monsters bigger than the ones you can kill with 2 shots. The door opens and I see a new gun, but there is an invisible force field of some kind and neither me nor the monsters can get through it.
I tried shooting it, but I can't get through.
Has anybody gotten past this?
Lots of people said it crashed their system or ran slow, but it worked find on my Barton 2500@10.5x215 with a Radeon 9600 Pro and 512MB RAM.
Do a "netstat -aon" while the game is loading. (The -o switch only works under XP, not 2k). The initial progress bar is simply the game downloading the bulk of its binary/data from an application server (192.67.198.49) somewhere in Germany.* * This statement is a lie.
Don't worry. It doesn't run under Windows, either. (Using XP)
Nice try. No matching PIDs. No bandwidth usage when ran. No connections to any server period from firewall logs.
You could of at least posted some fake results or something like that.
And yes, .the.product is (for the better part) playable under Linux with Wine's DX8 wrapper, if you don't mind the music being a tad out of sync.
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. :)
www.asshats.org/64kb.exe
is another earlier demo this group released...very impressive. 64kb 3D environment exe demo.
Yep, there's text here. I'm a lier.
...Millions of downloads and still no /.ing!
like a *real* engine such as Quake 3 or UT2004
Hello Mr. Clueless-modded-insightful. What is listed as a requirement for Quake 3? That's right, Open GL. UT2004 doesn't explicitly require DirectX9.0b if you're willing to run in software emulation mode, but don't kid yourself and try it without. And since when does a static linking to DirectX9 take 5 CD's?
Games take a lot of space because they are full of detailed 3d animated models, extra-large textures, and lots of sound and music. None of that comes from DirectX. These guys have managed to use some cool tricks to create detailed models and images on par with a lot of what is released today and do so in under 100k. That's pretty darned impressive.
If your "Hello World" is dynamically linked to a C++ library, and mine procedurally generates a novel titled "Hello World" of comparable quality to a Tom Clancy book, my "Hello World" is just cooler.
Of course, mr. Repugnant_Shit, you are a troll. But someone modded you up for reasons unknown, and as such a little explanation was in order.
The ______ Agenda
and when I compile my "hello world" program it creates a 129kb executable!
If the textures are generated when the game loads, then I suppose each of the textures has a short "key" to its design and then the game generates the texture based on that. The first thing that makes me think of is how that means huge modding capability. I don't know how the level data is stored but if it were to be made modular then this game would make a great engine for smaller-scale shareware games or even a few well-done commercial "total conversions" or the likes.
This isn't just a demo, it's fucking art. Nothing short of art.
These guys consistently put together tightly coded, artistics pieces of material that not a single contributor to this discussion could have done no matter how long they had available to them.
Yes, they used DirectX. Who cares. No, the game isn't a commercial effort. But it's tiny. And it looks awesome. And on good enough hardware it runs perfectly.
This is the programming equivalent of carving a portrait into the top of a needle.
So what if it doesn't run on Linux. Who said it was supposed to? It doesn't use OpenGL, that's their personal choice. Just respect it for the phenomenal level of expertise required to produce something like this. For the innovation, skill and effort they must have poured into 96KB of data.
Personally, I'd love to come close to this level of skill in anything, let alone something this difficult.
I was a video game reviewer for a zine, I could probably not program anything more than a tic tac toe game. I don't think many movie reviewers could make a movie. I've done published book reviews but have no near-time expectations of writing a book.
I too am in awe but my inability to replicate their work on my own does not disqualify me from criticising it.
"I was a video game reviewer for a zine,"
Oh, well there's a hard to come by credential!
I Browse at +4 Flamebait
Open Source Sysadmin
How about it?
I couldn't even exit the game,
I had to kill it.
This is really interesting to me; as I went ahead and read the website before reading any of these comments.
Something like this could be easily adapted so that you can ship small (er?) patches for your games so that they are narrowband friendly? Of course it would take a little while to actually extract the contents, but in the end it would be less time than actually downloading everything in a zip file.
Neat design guys, keep up the good work!
I'm f#$king magic!
Righteous post, dude. Where are my mod points when I need them?
A tech demo that doesn't do anything even remotely special from a technical standpoint that takes more time to start up (even on a top-of-the-line machine) than any sane person would want to spend actually "playing" it? WOW!!!!!!! HOW DID THEY DO IT?!?!?!?!
Dawn was amazing. Azure is truely a legendary 68k coder. I saw it live on The Party when it was released. Gee.. I'm getting all nostalgic here.
I am quiet proud of the writing I did. We were a serious zine with representatives at e3, we got all of the games given to us in advance by publishers. It was Well-Rounded Entertainment.
At least he can spell.
All I want is a kind word, a warm bed and unlimited power.