Stories
Slash Boxes
Comments

News for nerds, stuff that matters

Slashdot Log In

Log In

[ Create a new account ]

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.
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.
Display Options Threshold:
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)

    Given that I've only seen videos of someone else playing "Spore", I have to say, no, I don't wonder how it works. I wonder when the hell it'll be done.
  • Can one use PP (Score:3, Funny)

    by Anonymous Coward on Sunday August 05, @11:37AM (#20122393)
    to generate one meaningful article about it? since apparently it's good at increasing noise by putting out fluff pieces as this one.

    --
    captcha: uncouth. Quite.
  • not really (Score:3, Funny)

    by clubhi (1086577) on Sunday August 05, @11:39AM (#20122421)
    Actually I never even heard of Spore.
  • Eh? (Score:5, Informative)

    by MrSteveSD (801820) on Sunday August 05, @11:39AM (#20122427)
    I really feel like the person who wrote the article doesn't know what he is talking about.
    • Ad for Bona Fide Reviews (Score:5, Funny)

      by thegnu (557446) <thegnu@gmail. c o m> on Sunday August 05, @11:47AM (#20122511)
      (Last Journal: Friday December 05 2003, @03:51PM)
      Girl: You got Spaghetti Code in my Perl!
      Boy: You got Perl in my Spaghetti Code!
      BONA FIDE REVIEWS: our content makes as much sense as our ads.
      [ Parent ]
    • Re:Eh? (Score:5, Informative)

      by mmacdona86 (524915) on Sunday August 05, @11:51AM (#20122567)
      Yes, the distinction that they are probably trying to make is that between procedural or algorithmic content generation and the more common situation where content is created individually by artists.

      The talk about procedural versus object-oriented programming is moronic bs.
      [ Parent ]
      • Re:Eh? (Score:4, Insightful)

        by TheGeneration (228855) on Sunday August 05, @01:00PM (#20123247)
        (Last Journal: Monday August 23 2004, @11:14AM)
        The biggest fault with that article is that the author doesn't take into account who his audience will be. If you are going to write an article on the "breaking news" that the creators of Spore have gone to the future year of 1987 to use Pascal to write a mutliplayer online game, well... chances are the only people who will want to read your article are programmers. So don't bother trying to explain Ryu's fireball to us, we got that back in 1990 when Ryu spit out his first fireball in front of our eyes. Instead give actual details that are worth reading to your potential audience.
        [ Parent ]
        • 1 reply beneath your current threshold.
      • Re:Eh? (Score:4, Informative)

        by MrSteveSD (801820) on Sunday August 05, @01:31PM (#20123559)

        Yes, the distinction that they are probably trying to make is that between procedural or algorithmic content generation and the more common situation where content is created individually by artists.


        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.
        [ Parent ]
        • Elite by mcvos (Score:2) Monday August 06, @07:51AM
    • He doesn't. And this isn't news. by Arthur Grumbine (Score:1) Sunday August 05, @12:06PM
    • Re:Eh? by tundra_man (Score:3) Sunday August 05, @12:12PM
    • Re:Eh? by ultranova (Score:2) Sunday August 05, @01:55PM
      • Re:Eh? by nebosuke (Score:1) Sunday August 05, @03:42PM
        • Re:Eh? by bateleur (Score:2) Monday August 06, @09:03AM
      • Re:Eh? by Gideon Fubar (Score:1) Monday August 06, @01:45AM
    • Re:Eh? by Bega (Score:1) Monday August 06, @07:50AM
    • 2 replies beneath your current threshold.
  • Crap alert (Score:5, Informative)

    by VeryProfessional (805174) on Sunday August 05, @11:39AM (#20122429)
    This article reads like pure garbage. Procedural programming [wikipedia.org] simply refers to any form of programming in which procedure calls are made... ie. any mainstream imperative programming language. Does anybody really believe that games fill up multiple DVDs because there are too many IF statements? Editors, wake up please.
    • Re:Crap alert by Scotland Tom (Score:1) Sunday August 05, @11:46AM
    • Re:Crap alert by jaguth (Score:1) Sunday August 05, @11:47AM
    • Re:Crap alert (Score:4, Insightful)

      by el_womble (779715) on Sunday August 05, @11:49AM (#20122549)
      (http://marshonsmacs.blogspot.com/)
      I think the author was confused. What they actually meant was functional programming. In fact I know the author was confused. How did they not make the connection that the 4 CD PS1 games had a lot of FMV?

      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.
      [ Parent ]
      • Functional Programming by ucblockhead (Score:2) Sunday August 05, @11:57AM
      • bzzt, wrong. (Score:5, Interesting)

        by Inoshiro (71693) on Sunday August 05, @01:55PM (#20123781)
        (http://inoshiro.com/)
        They meant procedural content generation, like L systems [wikipedia.org], used to make believable looking plants that grow and change over time.

        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).

        [ Parent ]
        • Starflight? by PCM2 (Score:2) Sunday August 05, @04:32PM
        • Re:bzzt, wrong. by kaizokuace (Score:1) Sunday August 05, @05:03PM
        • Thank you! by quax (Score:3) Sunday August 05, @06:16PM
        • 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).
          To continue the summary (and clarify):
          * 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.
          [ Parent ]
    • Re:Crap alert (Score:5, Insightful)

      by geeknado (1117395) on Sunday August 05, @11:53AM (#20122605)
      I think that part of the issue here is that they've both confused the concept of procedural programming(and I'd be shocked if most games weren't programmed procedurally) with procedural generation [wikipedia.org] then proceded to give a better description of the first.

      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.

      [ Parent ]
    • Re:Crap alert by Lemmy Caution (Score:2) Sunday August 05, @12:51PM
    • Re:Crap alert by TrappedByMyself (Score:3) Sunday August 05, @02:24PM
    • Re:Crap alert by shadowcode (Score:1) Sunday August 05, @03:58PM
    • 2 replies beneath your current threshold.
  • hype by BrandonBlizard (Score:2) Sunday August 05, @11:41AM
    • Re:hype by BarneyRubble (Score:1) Sunday August 05, @12:27PM
  • 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 word infinite gets abused quite a bit.

    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:

    Procedural programming essentially shrinks the technological world, allowing us to fit a lot more information in limited space, and allowing this information to interact in near infinite ways.
    The basic theory of how one would store infinite states of data instantly disqualifies any device I know of. Computers, game systems, etc. are ultimately storing data in a binary on/off form. You can story many bits of data and come up with many states very quickly. You cannot, however, store an infinite amount of states on a finite amount of bytes. There's just no way to do it. A very large amount of different states? Of course. But not an infinite amount.

    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.
  • The obvious by Anonymous Coward (Score:2) Sunday August 05, @11:43AM
  • Procedural Generation? (Score:5, Informative)

    Perhaps the author is confusing Procedural Programming with Procedural Generation [wikipedia.org]?
  • want to be "evolutionary"? (Score:5, Interesting)

    by SolusSD (680489) on Sunday August 05, @11:49AM (#20122535)
    (http://www.solussd.com/)
    use a functional programming language. prove mathematically that your functions are correct. and technically, it should be fairly easy to write compilers that automatically thread the program due to the nature functions are written in a functional programming language. i encourage everyone, especially the writer of this article, to read up on it. Haskell (a programming language) is a good place to start.
  • by Anonymous Coward on Sunday August 05, @11:49AM (#20122537)
    "The basics of sequential programming are all object oriented."

    That pretty much captures how well the author understands programming.
  • That is NOT procedural programming by Bin Naden (Score:2) Sunday August 05, @11:51AM
  • procedural generation anyone? by Xavier CMU (Score:1) Sunday August 05, @11:53AM
    • by thefear (1011449) on Sunday August 05, @12:19PM (#20122867)
      From TFA:

      So why can't this be used in games like spore? Well in games with so many options, the IF/THEN list becomes so long it becomes scrambled. Several calls to previous points in the list are made and the whole thing gets disorganized
      Its not just the title, the entire article is written like that.
      [ Parent ]
  • Article Sucks (Score:5, Insightful)

    by jlarocco (851450) on Sunday August 05, @11:55AM (#20122627)
    (http://jlarocco.com/)

    That article is terrible. It reads like a 9 year old trying to explain something he doesn't understand.

  • Procedural Programming ? by jfclavette (Score:1) Sunday August 05, @12:02PM
  • wtf by loconet (Score:2) Sunday August 05, @12:04PM
  • Reminds me of Elite... (Score:4, Informative)

    ...that is, this game [mobygames.com] which had an "infinite" universe. The book Infinite Game Universe [amazon.com] has some good discussions of this sort of thing, too.
  • Functional (Score:5, Interesting)

    by hey (83763) on Sunday August 05, @12:06PM (#20122737)
    (Last Journal: Thursday December 08 2005, @04:33PM)
    *Functional* programming sometimes seems like magic. Maybe that's what they are talking about.
    Its not new but still cool.
    http://en.wikipedia.org/wiki/Functional_programmin g [wikipedia.org]
  • The first thing I had to think about was: by sveard (Score:1) Sunday August 05, @12:23PM
  • Not infinite, finite by Paralizer (Score:2) Sunday August 05, @12:30PM
  • Procedural programming by Z00L00K (Score:2) Sunday August 05, @12:39PM
  • who literally know *zip*. I just dipped my toes in the article, and lines like "procedural programming is ... object oriented..." snapped any suspenders of belief I had in the article.

    Of course, it'll be smaller and faster than Objectionably-oriented software....

                mark
  • I read the Fine Article by ratboy666 (Score:2) Sunday August 05, @12:43PM
  • What?! by TheGeneration (Score:2) Sunday August 05, @12:56PM
    • Re:What?! by Mr. Picklesworth (Score:2) Sunday August 05, @01:16PM
      • Re:What?! by Mr. Picklesworth (Score:1) Sunday August 05, @01:20PM
      • Re:What?! by init100 (Score:2) Sunday August 05, @04:44PM
    • Re:What?! by Abcd1234 (Score:2) Sunday August 05, @06:16PM
      • Re:What?! by TheGeneration (Score:2) Sunday August 05, @08:10PM
    • Re:What?! by Ritchie70 (Score:2) Sunday August 05, @06:49PM
      • Re:What?! by TheGeneration (Score:2) Sunday August 05, @08:18PM
        • Re:What?! by Abcd1234 (Score:2) Sunday August 05, @08:27PM
          • Re:What?! by TheGeneration (Score:2) Monday August 06, @01:21AM
  • by Mr. Picklesworth (931427) on Sunday August 05, @01:02PM (#20123267)
    Ah, this reminds me of my favourite thing to be annoyed by in games; the basis of all evil in game design!
    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:
    • "Explore strange new worlds!" - The catch is that exploring consists of being teleported to very small segments of these worlds consisting of a hedge maze and a bunch of enemies. The only thing you get to explore is your weapon.
    • "Build your own ____" - In other words, arrange blocks into a predetermined pattern to create the same thing as everyone else. (Maybe you'll get to choose from a list of 12 colours. Exciting).
    • "Fashion your own tools and equipment!" - ...from a list of about six buildable items. Good luck sticking together the "right" ones. (No, you can't poison an arrow or a sword, you can only poison a dagger!)
    • "We have precisely 100 things you can do!" - The stupidity speaks for itself. They are admitting that the experience is a cookie-cutter experience, in the sense that what you are about to play is a duplicate of what everyone else is going to play. Thus, it is pointless.
    • "Become a hero" - Become an arbitrary number. Hero #1241148. Level 70, just like all the other heros. Every "skill" has 100% beside it. Great.

    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
  • Just defining their algorithm by ls671 (Score:1) Sunday August 05, @01:15PM
  • creates created? (Score:3, Funny)

    by Afecks (899057) on Sunday August 05, @01:18PM (#20123435)
    A little help please? Does anyone have a slashdot-editor-to-enlgish translator?
  • Sounds rule-based. by Animats (Score:2) Sunday August 05, @01:29PM
  • Ugh by the eric conspiracy (Score:2) Sunday August 05, @01:54PM
  • Procedural Programming. Would that be like... by exp(pi*sqrt(163)) (Score:2) Sunday August 05, @02:04PM
  • Who cares?!? by IonOtter (Score:2) Sunday August 05, @02:14PM
  • misinformation anyone? by cabazorro (Score:2) Sunday August 05, @02:43PM
  • Where's the "Bury" button? by Doolwind (Score:2) Sunday August 05, @02:50PM
  • by Cafe Alpha (891670) on Sunday August 05, @03:06PM (#20124299)
    ... and COBOL

    Yes I noticed poster tagged the article "wrong."
  • El-Fish by Kaenneth (Score:2) Sunday August 05, @03:34PM
  • Vaporware... by Fuzzums (Score:2) Sunday August 05, @03:38PM
  • RTFA editors by crayz (Score:2) Sunday August 05, @04:47PM
    • 1 reply beneath your current threshold.
  • Nice example for procedural content generation by zaibazu (Score:1) Sunday August 05, @05:04PM
  • The article in a nutshell (Score:4, Funny)

    by Dormann (793586) on Sunday August 05, @05:04PM (#20125147)
    • Programs use if statements
    • The more complex the program, the more if statements
    • FF7 filled 4 CDs with if statements
    • Spore is even more complex than FF7
    • Spore must be using some new programming paradigm
    • I'm confused about what the paradigm is or what it's called, but I'm sure it uses fewer if statements
  • It's Actually Functional Programming... by lloy0076 (Score:1) Sunday August 05, @05:10PM
  • Terrible. Just terrible. by Luke Dawson (Score:1) Sunday August 05, @05:19PM
  • Confusing use of terminology... by rdean400 (Score:2) Sunday August 05, @05:28PM
  • Five bucks by amccaf1 (Score:1) Sunday August 05, @06:10PM
  • "To explain this fuller..." by Torodung (Score:2) Sunday August 05, @07:22PM
  • Author makes it clear enough by rcastro0 (Score:1) Sunday August 05, @08:06PM
  • See Spore in Action Next Friday by dannyastro (Score:1) Sunday August 05, @09:34PM
  • by S3D (745318) on Sunday August 05, @11:45PM (#20127215)
    The link form TFA no gives:

    We appreciate the honest feedback and correction regarding the content of this article. While it was well intentioned, it was inaccurate and for that we apologize. Accordingly this article has been removed.

    Something not good going with slashdot choice of article lately.
  • National TV by iarkin (Score:1) Monday August 06, @01:16AM
  • Article pulled (Score:3, Informative)

    by gatesvp (957062) on Monday August 06, @02:26AM (#20127793)
    Well fellow /.ers, the article was pulled (anyone have an original for laughter purposes?) I'm oddly proud of the /. community for successfully cleaning cruft from the vast sludge of the internet. If only with could do this stuff for mainstream media... like any of us bother any more :)
  • Article withdrawn by ivan_w (Score:1) Monday August 06, @07:55AM
  • From the comments linked in article by HouseArrest420 (Score:1) Monday August 06, @08:24AM
  • Ever wonder how Slashdot works under the hood? by saddino (Score:2) Monday August 06, @09:55AM
  • call it by rastoboy29 (Score:1) Monday August 06, @12:21PM
  • Procedural Programming by ShakaUVM (Score:2) Tuesday August 07, @02:19AM
  • Re:Typo in summary (Score:5, Funny)

    Yeah who here is sick and tired of crates being everywhere in games. I hardly ever see crates in my day to day.
    [ Parent ]
    • Re:Typo in summary by Anonymous Coward (Score:2) Sunday August 05, @11:58AM
      • Re:Typo in summary (Score:4, Funny)

        by Anonymous Coward on Sunday August 05, @12:07PM (#20122747)
        I kept jumping up, punching this one crate, just waiting for the gold coins or extra man to come out. Instead, one of the loading dock guys just chased me away.
        [ Parent ]
    • Re:Typo in summary by Anonymous Coward (Score:2) Sunday August 05, @12:51PM
      • Re:Typo in summary by freyyr890 (Score:1) Sunday August 05, @01:06PM
        • Re:Typo in summary (Score:5, Informative)

          by Anonymous Coward on Sunday August 05, @01:14PM (#20123375)
          Uhh... No. A 3D cube has six faces. At any given time, at most 3 are visible in a 2D projection of a 3D scene. It takes two triangles to represent a square face (many 3D toolkits "really" only using triangles underneath). So, 6 triangles. So, the original poster was correct, you lose, do not pass go, do not collect 200.

          [ Parent ]
        • Re:Typo in summary by IBBoard (Score:1) Sunday August 05, @01:15PM
        • 1 reply beneath your current threshold.
    • Re:Typo in summary by aichpvee (Score:1) Sunday August 05, @03:44PM
    • Re:Typo in summary by GodfatherofSoul (Score:2) Sunday August 05, @07:06PM
  • Not really procedural programming (Score:4, Insightful)

    by markov_chain (202465) on Sunday August 05, @11:58AM (#20122659)
    More like rule-based, event-driven programming. This is what happens when people don't get a proper technical education.
    [ Parent ]
  • Re:Attention Procedural Programmers by mini me (Score:1) Sunday August 05, @12:11PM
  • Re:Attention Procedural Programmers by Mr. Picklesworth (Score:2) Sunday August 05, @01:24PM
  • Re:Attention Procedural Programmers (Score:5, Informative)

    by mikael (484) on Sunday August 05, @01:37PM (#20123609)
    Procedural generation [wikipedia.org]

    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]
    [ Parent ]
  • Re:Procedural... by Tim Browse (Score:2) Sunday August 05, @02:38PM
  • Re:For those who still wonder... by Lord Kestrel (Score:2) Monday August 06, @03:55PM
  • 19 replies beneath your current threshold.