Procedural Programming- The Secret Behind Spore 277
imashoe writes "Ever wonder how Spore works under the hood? The game seems to be insanely huge and how is it that there can be an infinite amount of different creates created in the game? The answer is Procedural Programming."
Well, no (Score:5, Funny)
Re:Well, no (Score:5, Funny)
Package: spore
Versions:
1.0
Description Language:
File:
Dependencies:
1.0 - dukenukem3d
Re:Well, no (Score:5, Insightful)
I guess you meant Duke Nukem Forever. [wikipedia.org]
Re: (Score:2)
Vaporware (Score:3, Insightful)
I remember first getting excited about in-game videos of spore something like two years ago. It's starting to feel like we're getting nukem'd again.
Re: (Score:2)
Due date (Score:4, Insightful)
Re: (Score:2)
Re: (Score:2)
When Duke3D was released, the engine was a fair bit behind its main competitors but it was fun because of the detailed artwork (especially the huge, complex levels) and the main character's one-lin
Re: (Score:3, Interesting)
By the time they were anywhere close to beeing done UT2k3 was out, so they decided to use Unreal Engine 2. As far as i know they either use the updated Unreal 2 Engine (and inherited the fixes from UT2k4) or are working with Unr
Re: (Score:3, Funny)
Heavily modified or not it's not really that big a deal since it's heavily not here yet
Re:Vaporware (Score:4, Informative)
Re: (Score:2)
Someone with a subscription needs to tag this story Vaporware.
I'm not sure which would be worse ... to nukem (is that a verb?) or to "Master of Orion 3"-em (wonderful ambition but painfully dull to play).
Spore seems like one of those projects that, if it remains vapor too long, should spark some "Linus of gaming" to start an open-source take on the whole thing. What I love about the concept of Spore is that its so modular - add some standards and it should be possible to share all the bits and pieces o
Can one use PP (Score:3, Funny)
--
captcha: uncouth. Quite.
not really (Score:3, Funny)
Re: (Score:2, Funny)
Re: (Score:3, Funny)
Eh? (Score:5, Informative)
Ad for Bona Fide Reviews (Score:5, Funny)
Boy: You got Perl in my Spaghetti Code!
BONA FIDE REVIEWS: our content makes as much sense as our ads.
Re:Eh? (Score:5, Informative)
The talk about procedural versus object-oriented programming is moronic bs.
Re:Eh? (Score:4, Insightful)
Re:Eh? (Score:4, Informative)
Yeah, that would be something interesting to talk about. Whoever wrote the article probably isn't the man to do it though. Did you ever play Kreiger? http://www.theprodukkt.com/kkrieger#20 [theprodukkt.com] They managed to cram a 3D first person shooter into 96k. It relies heavily on procedurally generated content.
Re: (Score:3, Interesting)
Re: (Score:2, Funny)
Nah. Procedural programming is indeed what made a project of this complexity possible. Just try to program Spore in line-number Basic, I dare you.
Crap alert (Score:5, Informative)
Re:Crap alert (Score:4, Insightful)
An excellent example of a little knowledge doing a lot of harm. It reads well enough that my non coding tech friends could read it, and then tell me I'm a fuck-gnut for not using a procedural language...
Still, I'm going to assume that the eds know what they're doing and are actually just trying to get an argument blaring on this no news sunday.
Functional Programming (Score:2)
The comments about Civilization are particularly annoying.
bzzt, wrong. (Score:5, Interesting)
It's all about repeated iteration over a particular type of finite automata with a particular string.. Easily done if you've taken your 3xx/4xx graphics an theory classes, but perhaps past what most technology reporters are capable of.
So, to summarize:
* C is an example of procedural programming.
* Haskell is an example of functional programming.
* L-systems are an example of procedural content generation (content generated by a procedure, in a deterministic fashion).
Thank you! (Score:3, Informative)
Re:bzzt, wrong. (Score:5, Insightful)
* C is an example of procedural programming.
* Haskell is an example of functional programming.
* L-systems are an example of procedural content generation (content generated by a procedure, in a deterministic fashion).
* Marshmallows do funny things if you lower the pressure enough.
* Cheeseburgers are often considered delicious
* Like the above comments, programming language type is a red herring. Procedural content generation is a misnomer. It just means that the content is mostly programatically generated on the fly instead of being simply rendered.
It's all about repeated iteration over a particular type of finite automata with a particular string.
And then then string is the content, isn't it? Interesting point here is that this is something of a continuum. You could make your procedures more complex, and then require less content to produce the something. On the other hand, you could go the other way and have absolutely every piece of content actually be written in your programming language.
When you think about it that way, it becomes a lot more obvious.
You're talking about whether most of the work is going into the content creation, or into the rendering engine.
If most of the work is in the engine, it's really easy to make lots of new kinds of content since you don't have to do as much work to make the content. However, making a powerful engine sure requires a lot of work, doesn't it? You have to make your engine handle absolutely every special case that you could ignore if it wasn't normally applicable to a very specific content instance.
Re: (Score:3, Interesting)
Starflight I and II were written in Forth, using a custom compiler. Here is some old design documentation [geocities.com] from Starflight.
It's interesting stuff.
I am in fact recreating the game (or, rather a game much like it using entirely original content) using many similar algorithms.
Check out my webpage. [outerspacecrew.net]
Re:Crap alert (Score:5, Insightful)
It's not that they're wrong that Spore is innovative this way(assuming it's ever more than vaporware), but rather that they do an exceptionally poor job of describing the way it works...The distinction here isn't between gated logic trees and 'actions', it's between static and dynamic content.
Re: (Score:3, Informative)
I think that part of the issue here is that they've both confused the concept of procedural programming(...) with procedural generation then proceded to give a better description of the first.
Exactly. And procedural generation isn't hard to understand (at least conceptually), he could just have given a brief on fractals, since they are a well-known example of procedural content generation. A tiny piece of code generates a nice-looking picture. And regardless of how much you zoom in, it never becomes pixelated, as new content is generated on the fly. The Mandelbrot set is an excellent example.
Re: (Score:2)
What is "procedural" about Spore is its game and interface design. Much of it is conceptually procedural. It is comparable to the sort of parameterization that you might find in a 3D design tool (Solidworks, Inventor, etc.)
I'm almost certain that it is implemented mostly in C++ and other modern, mostly OO languages.
Re: (Score:2)
Here's a Wikipedia linkie [wikipedia.org]. And yup, you've guessed it, there's a picture of Spore.
Re: (Score:3, Funny)
Re: (Score:2)
Fixed!
hype (Score:2, Insightful)
Inifinite Creates? (Score:5, Insightful)
I think you meant to say 'seemingly infinite' or 'infinite for all intents and purposes.'
I've tried to think of mental exercises to challenge people with a concept of something being infinite. For example, if you had an object of infinite mass with no gravity, would it be possible for us to exist alongside this infinite object?
Infinity has interesting properties and I challenge the use of 'infinite' in this summary. The article uses cautious words:
For the purposes of speculation, what would be the best way to give a user a seemingly 'infinite' number of states? Well, the obvious choice (and what random number generators on computers seem to favor) is to use time. Time is infinitely divisible (although the representation of that depends on decimal precision) and it is (seemingly) never ending. So one would base the resulting states in the game off of when a user entered input. It is still very easy to show that this is a many-to-one mapping. You can divide time down to a small enough unit that they are technically different moments yet the hardware that captures the analog input cannot discern between them.
I think that this concept of 'infinite' states is desirable to gamers. And it's the states that you find yourself in in a game that were clearly not thought out by the developers that makes a game special. When you have a large freedom of configuration pitted against players with that same freedom, you have the core success behind real time strategy games where players would build cities and armies and pit them against each other.
I don't think this claim can ever be made when a digital machine is being used. I guess you could design a program that would adjust to the size of the machine and extrapolate the amount of precision it used to measure the moment at which the user clicked the remote button and then stamped this number on the create's forehead (or some other form of uniqueness). But, I do not know enough about how the CPU acquires the time stamp. If it's a quartz crystal, this is only accurate to the number of vibration the crystal makes per second with electricity pumped through it. I have good reason to believe you will always encounter some theoretical issue or barrier when trying to achieve truly infinite implementations. Best to leave that word where it belongs: in mathematicl proofs and scientific theories.
Re: (Score:2)
Yes. Because for there to be an infinite object that would necessitate that the Universe be infinite. Now I am aware that the infinite object should completely fill the infinite universe.
However infinite + 1 = infinite. So in that "+ 1" there is room for me. It could be argued that there should also be an infinite amount of empty space left over in the infinite universe
Actually.. (Score:2)
Re: (Score:2, Insightful)
This may not be as true as you think. Planck time [wikipedia.org] is the shortest amount of time that has any meaning.
Re:Inifinite Creates? (Score:5, Insightful)
The word infinite gets abused quite a bit.
I agree ... but you really need a good catchy word for "cannot have all possible states represented even if you harnessed every grain of sand in the universe".
According to one of the talks, a Spore world is about an 80K data structure when compressed. 2^640000 is a really big number. My fuzzy back-of-the-napkin count gives something like 2^240 hydrogen atoms in the universe. I think hard math either needs to learn to share the word infinite or it had better file a trademark :)
Re: (Score:3, Funny)
Re: (Score:2)
Re: (Score:3, Insightful)
Re:Inifinite Creates? (Score:5, Funny)
Why do you bother typing in these comments? No one thinks you're any smarter now than they did before reading your message. If anything, they think you don't have a sense of humour.
Re: (Score:2)
Re: (Score:2)
The obvious (Score:2, Insightful)
Procedural Generation? (Score:5, Informative)
Yeah. IOW, this is a new low. (Score:5, Insightful)
Re: (Score:2)
He is (and he's the submitter, of course), and he amended a note to the bottom of the article saying so.
It's still bloody hard to read, though.
want to be "evolutionary"? (Score:5, Interesting)
Re: (Score:2)
Re: (Score:2)
All you need to read is this sentence... (Score:5, Insightful)
That pretty much captures how well the author understands programming.
Re: (Score:3, Interesting)
That is NOT procedural programming (Score:2, Redundant)
Article Sucks (Score:5, Insightful)
That article is terrible. It reads like a 9 year old trying to explain something he doesn't understand.
Re: (Score:3, Insightful)
wtf (Score:2)
Reminds me of Elite... (Score:4, Informative)
Re: (Score:2)
Re: (Score:2)
> maps, but it wasn't infinitely generated.
Yup, I think the trick was that it was generated with fractals, which was why they could have so many systems and planets and such in 16K of memory.
There's a little blurb about Elite in the preface of Infinite Game Universe; it's kind of funny when it says something to the effect of "a DOOM WAD file can be as large as 2MB"! Now we can generate [rubyforge.org] those same WAD files with interpreted scripting langu
Functional (Score:5, Interesting)
Its not new but still cool.
http://en.wikipedia.org/wiki/Functional_programmi
Re: (Score:3, Informative)
Not infinite, finite (Score:2, Redundant)
There will at most be 'a lot' of different combinations.
Re: (Score:2)
People don't realize that a computer is just a container for a state. all the abstract layers of software and OS and whatnot are just a mechanism to move it to the next state.
Procedural programming (Score:2)
Of course - since many today tend to do object oriented programming (for good and bad) the procedural programming may seem "fresh" for some.
And there are other programming areas that can be considered too;
The review is by communications majors (Score:4, Funny)
Of course, it'll be smaller and faster than Objectionably-oriented software....
mark
I read the Fine Article (Score:2)
The author can't be talking about procedural programming in the classic sense. On a re-read, I suspect that "procedure" is somehow equivalent to "action". Especially the part about building weapons from components.
The implication is that "Spore" (whatever that is) has a calculus of action. Which (almost) makes sense. I imagine (again, back to the weapon example), that a cartridge contains "x" grams of explosive, that yeilds a force, acting on the ballistic compone
What?! (Score:2)
As for procedural programming... I'm not sure how it would be possible to write an interactive multi-player procedural program without using the concept of an object. Especially when there is customization at the level that Spore claims to have. I really think perhaps the author of the arti
Re: (Score:2)
Comment removed (Score:5, Interesting)
Re:The unexplored realm of dynamic content... (Score:4, Funny)
creates created? (Score:3, Funny)
Re: (Score:3, Funny)
Sounds rule-based. (Score:2)
From the description, this doesn't sound like procedural programming. It sounds like a rule engine. One of those things where there are rules that fire if the current situation meets all the preconditions. Multiple rules can fire simultaneously, and you need conflict-resolution logic to to choose which one to use when there's a conflict. If rules fire that want to set both "turn=right" and "turn=left", then some priority system or random choice has to pick one. And some hysteresis may be needed to preven
Ugh (Score:2)
Procedural Programming. Would that be like... (Score:2)
Who cares?!? (Score:2, Funny)
Why do you abuse my games so? - Will Wright
misinformation anyone? (Score:2)
It's sad and troublesome to witness Slashdot plastering (posting?) this article.
It talks against the editors and the site in general.
Where's the "Bury" button? (Score:2, Funny)
Procedural Programming- The Secret Behind Spore (Score:3, Funny)
Yes I noticed poster tagged the article "wrong."
El-Fish (Score:2)
it would generate unique animated fish of uncountable variety, and show them swimming around, and you could breed pairs together to generate realistic children and such...
I tried running it on a 486 once, unfortunetly, it was so much faster than the system is was designed for, it didn't work (first thing on program startup was a benchmark, seeing how many minutes it took to generate a fish... since it took less than one minute, it crashed with a divide by zero)
The article in a nutshell (Score:4, Funny)
The article already removed from bonafidereviews (Score:5, Informative)
Something not good going with slashdot choice of article lately.
Article pulled (Score:3, Informative)
Re:Typo in summary (Score:5, Funny)
Re: (Score:2, Insightful)
Re:Typo in summary (Score:4, Funny)
Re:Typo in summary (Score:4, Funny)
Re: (Score:2, Insightful)
Re:Typo in summary (Score:5, Informative)
Not really procedural programming (Score:4, Insightful)
Re: (Score:2)
Re:Attention Procedural Programmers (Score:5, Informative)
Spore
Terrain synthesis/generator - Terragen [planetside.co.uk]
Renderman shaders [renderman.org]
Procedural animation [wikipedia.org]
Practical procedural modeling of plants [td-grafik.de]
Procedural planets [baddoggames.com]
Re:procedural generation anyone? (Score:4, Funny)
Re: (Score:2)
Another good misconception from the article:
I checked my mind. It was boggling.