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
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!?
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
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
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/
awesome... now only if they'd do this for linux Hell, It wouldn't be all that much code to port.
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
here: http://sebaplus.free.fr/prog3d/demoscene.htmli s one is especially impressive: http://sebaplus.free.fr/prog3d/fr08v101.exe
Th
wolruf@gmail.com
I know you are being funny, but this program seems fairly DirectX dependent. Maybe if it was OpenGL?
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.
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
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!
"this was statically compiled and includes all the fonts, and 3d libraries in the download!" :P
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
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)
Mirror... http://catsdorule.torpedobird.com/slash/
Would be about the same if we are talking about graphics. There is no noticable difference in code size for DirectX and OpenGL with appropriate driver with all extensions. Both Nvidia and ATI are shipping OpenGL drivers with all extensions realized in hardware, giving OpenGL about the same functionality as Direct3D. But there is no sound in the OpenGL. Don't know what are standart sound library for Linux...
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.
I'd imagine that you don't even want to try going down that road here. :)
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
Off the top of my head OpenAL, I know it's used by NWN and some of the old Loki games. Whether that makes it a standard or not is a whole other question.
Good people do not need laws to tell them to act responsibly, while bad people will find a way around the laws-Plato
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.
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.
Yeah, I agree, but it would be a good bit over 96k
if it was relying solely on good old openGL
640Kb was enough after all!
"If God created us in his own image we have more than reciprocated." - Voltaire
Using SDL may be "absurd" if you want to write a Windows-only game, but it isn't absurd if you want to make it crossplatform. Whether you will admit it or not, SDL/OpenGL is a standard that many (good and fast) Linux games have been based on.
"THERE IS NO JUSTICE, THERE IS ONLY ME." -Death
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!"
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?
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 =
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 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.
The download isn't slashdotted... it's so tiny. My transfer was done before I'd decided where to save it.
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.
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)
The standard sound library for Linux 2.6 is ALSA. Games usually talk to it through OpenAL (see sibling) or SDL, the simple directmedia layer. SDL basically provides all the functionality of DirectX except Direct3D, whose functionality is provided on Linux via OpenGL (as you know.)
"You're right," Fisheye says. "I should have set it on 'whip' or 'chop.'"
Hell, It wouldn't be all that much code to port.
Really? Gonna port DirectX 9 to Linux during your lunck breaks, are ya?
Downmodding is the refuge of the weak. Don't downmod, make a better argument!
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.
procedural texture generation has been used for quite a while in the demoscene in the size optimized competitions(most common are 256 bytes, 4 kb and 64kb) (i guess the first stuff you could call procedural tex generation are plasmas which are basically images where you have a formula like color = sin(x)*cos(y)) it's no strange coincidence as it's by one guy of farbrausch the demoscene was started back when commodore was new by groups who cracked games and added small messages in the cracked games. later however the scene became independent of cracking and started to create stuff for fun. there are parties on a yearly basis like Breakpoint(former Mekka and Symposium), Assembly, The gathering, Dreamhack, Evoke etc.. the scene is mainly in central europe and scandinavia
OpenAL is also used by UT2004.
Eat the rich.
Yeah, I agree, but it would be a good bit over 96k
if it was relying solely on good old openGL
Why exactly would OpenGL implementation be larger?
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,
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.
Serious Sam
Those who can, do. Those who can't, consult.
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!
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.
noiz2sa - SDL
Aleph One - SDL/OpenGL
BZ Flag - OpenGL
Egoboo - SDL/OpenGL
PoopemUp - SDL/OpenGL
Neverwinter Nights - SDL/OpenGL
Not to mention all the Loki titles that used SDL (heck, didn't they develop it in the first place?): Myth, Rune, Civ3,Sim City 3000, Tribes 2, Alpha Centauri, and so on
Don't forget the billion or so Doom/Quake/Wolfenstein 3D ports/spinoffs.
If I have been able to see further than others, it is because I bought a pair of binoculars.
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.
... 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
it is written by the same guys ;)
fx! kicking and screaming
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.
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.
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.
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.
Don't ya think they should port it over to minux instead? For those who do not know: minux=1.44 mb version of linux. Meanwhile, distributions like Mandrake are taking up 8 cds AND 1 dvd
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.
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.
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.
Yeah, I didn't catch that. Like you said, a few kb one way or another aren't going to make a whole lot of difference. I was thinking they had somehow managed to get all of it into that space, and the thought of doing that and preserving portability caused my two-volt brain to blow a fuse. But like I said, I should have RTFA. :)
-1, "1337" speak
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
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!
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.
DirectX has code for sound, input, music, etc. OpenGL does not. OpenGL is tiny in comparison.
Karma: Contrapositive
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
Having a clue is also very helpful.
Great! Now I can download X-Windows, FireFox, and all the other applications I use rather than having them all easily accessible with an installation program on a CD in a local drive!
Backup not found: (A)bort (R)etry (P)anic
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
Direct X and HARDWARE dependent. This thing won't even run on my laptop (unhandled exception) which is just a touch under the specifications.
My lack of God, it's Trotsky!
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.
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.
i think the poster meant more to point there were no linux version and that sucks :)
If you look like your passport photo, you're too ill to travel. - Will Kommen
"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++
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).
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
openal for the sound & music and glut for input.
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.
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.
...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
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
Last time I used it Glut only gave you keypress events. For a game you want keydown and keyup events. Glut would be completely worthless for games.
Try out fish, the friendly interactive shell.
glutKeyboardFunc(keyboard) - Keydown
glutKeyboardUpFunc(keyboardUp) - Keyup
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!
Actually, GTA3 is nothing more than the original GTA with better graphics and sounds, minus motor bikes and minus multiplayer.
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.