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
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.
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
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.
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?
...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
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*
Hey guys, I don't get whats the big deal? I downloaded a ton of these 85 to 150KB ".exe" games off kazaa yesterday. They never seem to run though...
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?
It's not the saved space that's the issue here, it's the efficiency of the code. If I made a 500 mb text editor (and called it ms word 2003) then that would be inefficient.
Can someone post a link to a torrent?
It's taking forever to download . . .
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.
It's simple why you need a semi-powerful machine to play this. It generates the textures at startup. I'm assuming it'd take a pretty powerful machine to generate textures like these screenshots, with such small code to work with in the first place.
As a comparison. Think of SETI@HOME. A very very very small file. Yet, it can take 4 hours or more to process on what is considered a fast machine. Same dealio with this.
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
It's a demoscene product, made by the group farbrausch.
True, but this still seems like something designers should try more often. In fact, this seems like a very good argument for DirectX -- since its pretty much required to play most modern Windows games, it is a Windows standard, and it comes with recent versions of the OS, you and I are most likely to already have it. This is in contrast to my admittedly minor attempts to get games going under Linux, as each game seems to use a different toolkit/library that needs to be dowloaded separately and which have names like dvsdl-1.62.78 (all right, I made that up). Don't want this to sound like anti-Linux flamebait, but there is something to be said for Microsoft's ability to force a single, simply-named and -numbered standard library.
[SIG] It's like putting a moose in the blender -- a recipe for disaster!
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!
> so, what does this really advance?
:)
/. posts reek of techno-ludditeness (-luddetery?) to me.
Their claim to m4d sk1llz?
I remember a time when posters on slashdot enjoyed tech coolness for the sake of coolness. I'm probably growing old and grumpy, but lately too many
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 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.
Is that with or without the easter egg flight simulator?
Yes Francis, the world has gone crazy.
(And yes, being a suspicious puppy, I did look at the network traffic while it was starting up just in case it was downloading on the fly...)
But 64K? Pah! There were more fun games in 16K - I mean, who can forget 3D Monster Maze and JetPac?
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?
The point is not the size, features or technological advance at all. It's just sort of a proof-of-concept, if you like. It doesn't do rendering on it's own, nor does it have support for various graphic chips (all that is provided by DirectX), but it does have its own engine and all the model data and textures (mind you, it still includes all the textures although they are procedural, it just means that they are in forms of functions). And that is impressive.
Can't try it myself yet, but I'm already amazed. Btw, to those who wonder where's the source etc, these things are usually not handed out. Demo/intro scene is more about competing with each other and the secret's of the trade are not given away!
People pointing out DirectX dependency are missing the point.
The 64kb was actually a limitation of early compilers that needed to keep the entire address space of a program inside of 64k. It was called the small memory model, I believe, and all the code and pre-allocated memory for variables needed to sit inside that 64k (but dynamic allocated variables could reside on the heap in excess of that 64k.)
Glonoinha the MebiByte Slayer
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.
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.
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.
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
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.
640Kb was enough after all!
"If God created us in his own image we have more than reciprocated." - Voltaire
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.
Right! It reminds me of the business of creating N-ingredient recipes (3-ingredient or 4-ingredient, typically): the trick is to define as many things as possible as "staples" (salt, flour, butter, sugar), so that the ingredients can be "salmon, oregano, and bread crumbs" or something.
But just like the N-ingredient case, it's not really cheating. People really are likely to have those things already in their kitchen, and people really are likely to have the supporting libraries around their hard drive. And any attempt to optimize for size has a certain appeal in these days of increasingly bloated code.
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!"
On my 2.8 GHz machine, the demo took a full minute to load.
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" ----------
Please be sure to stick to standard Slashdot etiquette. In making a joke about accidentally messing up your system, it is customary to truncate the last bit of the message and terminate with [NO CARRIER] or some sort of +AT code.
Applying to your situation would give us:
Do you see? That's instantly at least 1337% funnier. Remember this trick for next time.
Ydco co
I did something similar using OpenGL. It is a 3D asteroids game in which the action occurs in 3d, not in a 2d plane. The zip file for it is about 102 kb, but most of that is because I included glut.dll so that people wouldn't have to hunt it down. Oh, and by using OpenGL I have been able to run it on Windows, MacOS, and Linux.
Lasers Controlled Games!
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.
Nevertheless, for a FPS to weigh less than half a gig these days is rather impressive.
The half-life executable and client and server dlls puts it up at several megabytes. perhaps over 10 megabytes, but I don't have a copy of it around to check, atm. This is 100kilobytes including generated music and textures. It requires very skilled coders to save byte after byte in every inch of the code. These guys have been making great 64k demos for a long time. Just a couple weeks ago I was thinking, "gee, why doesn't someone stick some mouse control, a gun, and collision detection in one and let me shoot stuff?" And my wish has been granted.
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
However, it does affect the size of the source code, which is what I was trying to minimize. Same thing with the #defines, which the preprocessor expands anyway...
My website
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!
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.
OpenAL is also used by UT2004.
Eat the rich.
Should we consider the size of the operating system in that too? What about the hardware drivers?
So every application is the size of it + all dependent software?
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.
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!
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.
... 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
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
they are actually the same group of people.
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.
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.
I believe his point was that the DirectX library handles a lot of the work that went into the bulk of the size of pre-3d accelerator games, such as Wolfensein 3D and Doom I & II. So, he's starting out with an advantage in size.
Anonymous Cowards suck.
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.
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.
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.
>> Don't forget the whole Windows System, that is required. DirectX and the application won't work without the windows base system (or maybe wine...)
It's much worse than that. I actually tried to install one of these things. Turns out the damn thing requires a computer, too! Lying bastards didn't tell me that I need space on my desk for a monitor, neither! I'll tell you this much. I never had any of these problems with my WebTV!!
Ryosen
One man's "Troll, +1" is another man's "Insightful, +1".
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
Hahahahahah That is so Funn[NO LAUGHTER]
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
"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.
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
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. :)
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
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.