Procedural Programming- The Secret Behind Spore
Posted by
CmdrTaco
on Sun Aug 05, 2007 11:30 AM
from the i-thought-it-was-crack dept.
from the i-thought-it-was-crack dept.
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."
This discussion has been archived.
No new comments can be posted.
Procedural Programming- The Secret Behind Spore
|
Log In/Create an Account
| Top
| 277 comments
(Spill at 50!) | Index Only
| Search Discussion
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.

Well, no (Score:5, Funny)
(http://www.ucblockhead.org/journal/ | Last Journal: Thursday November 14 2002, @03:24PM)
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]
Due date (Score:4, Insightful)
(http://stuckinthecube.blogspot.com/)
Re:Vaporware (Score:4, Informative)
(Last Journal: Tuesday September 13 2005, @03:45PM)
Can one use PP (Score:3, Funny)
--
captcha: uncouth. Quite.
not really (Score:3, Funny)
Eh? (Score:5, Informative)
Ad for Bona Fide Reviews (Score:5, Funny)
(Last Journal: Friday December 05 2003, @03:51PM)
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)
(Last Journal: Monday August 23 2004, @11:14AM)
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.
Crap alert (Score:5, Informative)
Re:Crap alert (Score:4, Insightful)
(http://marshonsmacs.blogspot.com/)
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.
bzzt, wrong. (Score:5, Interesting)
(http://inoshiro.com/)
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).
Re:bzzt, wrong. (Score:5, Insightful)
(http://rustyp.freeshell.org/ | Last Journal: Tuesday April 29 2003, @09:22AM)
* 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: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.
Inifinite Creates? (Score:5, Insightful)
(http://slashdot.org/~eldavojohn/ | Last Journal: Tuesday October 16, @03:26PM)
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: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:Inifinite Creates? (Score:5, Insightful)
(Last Journal: Monday September 06 2004, @05:06PM)
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 :)
Procedural Generation? (Score:5, Informative)
(http://asger.grunnet.googlepages.com/)
Yeah. IOW, this is a new low. (Score:5, Insightful)
(Last Journal: Wednesday November 22 2006, @04:38PM)
want to be "evolutionary"? (Score:5, Interesting)
(http://www.solussd.com/)
All you need to read is this sentence... (Score:5, Insightful)
That pretty much captures how well the author understands programming.
Re:procedural generation anyone? (Score:4, Funny)
Article Sucks (Score:5, Insightful)
(http://jlarocco.com/)
That article is terrible. It reads like a 9 year old trying to explain something he doesn't understand.
Reminds me of Elite... (Score:4, Informative)
(http://tomcopeland.blogs.com/)
Functional (Score:5, Interesting)
(Last Journal: Thursday December 08 2005, @04:33PM)
Its not new but still cool.
http://en.wikipedia.org/wiki/Functional_programmi
The review is by communications majors (Score:4, Funny)
(http://home.cfl.rr.com/diehardanddragon/)
Of course, it'll be smaller and faster than Objectionably-oriented software....
mark
The unexplored realm of dynamic content... (Score:5, Interesting)
Arbitrary bits of advanced player interacton placed by the game developers, instead of the game dynamically (via smooth code) allowing you to do what you want within a believable universe.
For example "special abilities" that are meant to be challenging, interesting and dynamic. (Climb up two walls facing each-other, for example). Sounds good? Unfortunately, the designers just place arbitrary 'two wall climb' points in the maps themselves, and to make things extra lame, any place where you can use a special ability stands out like a sore thumb, just to rub in the fact that it is arbitrary. Artificial limitations appear because you find a place where you should be able to use a special ability, but the designers just didn't make it possible on that wall because it could be used as an exploit. They sell the game as having a realistic world, but these arbitrary abilities make that world completely unbelievable: This is a world where the laws of physics change based on where you stand.
It's like that plot-hole movie, where at one point they have a big laser cannon that can fight off alien invasions, but in the next scene they have no defences because it would be "bad form" to use the laser cannon in two scenes.
Sadly, this sort of junk happens everywhere:
Every game on the face of the earth advertises dynamic content in one form or another, and almost all of them fail miserably. Why?
With games I design, I strive to avoid this by doing what those games won't dare to do. Flexibility is key here, and it is really not that hard to achieve! It is the difference between designing your game around the dynamic content, or designing the dynamic content around the game. (It may also be the reason I have yet to release anything).
Arbitrary things are fun, but only when coupled with 100% user controllable variables. Two of my projects rely on a system where everything in the game world is created dynamically around a small number of settings that blend together in every aspect of the presentation. These variables procedurally control appearance, audio presentation and actual gameplay behaviour in a weighted manner, where each value has unique properties. This means everything is unique, but at the same time tied to a consistent set of rules.
What I found rather quickly just by pondering it was that this made for an experience that was too predictable in the sense that the player could really easily figure out the dynamics of the actual game. The world becomes reliable and believable, which is good for that exploration mechanic (where the player can actually learn 'the world' instead of 'the game'), but it is too simple to figure out. Thus, I throw in some fun little arbitrary events that happen with certain magical combinations, and it's much more exciting! The difference between m
Re:The unexplored realm of dynamic content... (Score:4, Funny)
creates created? (Score:3, Funny)
Procedural Programming- The Secret Behind Spore (Score:3, Funny)
Yes I noticed poster tagged the article "wrong."
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)
(http://www.martianfrontier.com/ | Last Journal: Wednesday January 15 2003, @01:04AM)
Re:Typo in summary (Score:4, Funny)
Re:Typo in summary (Score:4, Funny)
Re:Typo in summary (Score:5, Informative)
Not really procedural programming (Score:4, Insightful)
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]