Game Loops



  • This WTF is a kind of "mini tutorial" posted on the "GameDev.net" forums. You have to read it for yourself.

     http://www.gamedev.net/community/forums/topic.asp?topic_id=450508&PageSize=25&WhichPage=1

    This is how you can make a loop go on forever.



    for(;;)



    forever loops are useful only when you have another loop that is nested between it. The number of nested loops doesn't matter.



    Example:

    for(;;){

    while(condition){

    do something

    }

    }



    But you want to end the loop or do the loop over again.



    You use the break; or continue;



    Example:

    for(;;){

    while(condition){

    do something



    continue;

    }

    break;

    }



    While you don't have to use the continue; statment you should always use the break; in a forever loop.



    Other alternatives would be abort;



  • Really?

    How about:

    for(;;)

    {

      MovePlayer();

      if(PlayerDead()) break;

      UpdateScores();

      MoveAIPlayers();

      if(PlayerDead()) break;

      MoveMissiles();

      if(PlayerDead()) break;

    }



  • @GettinSadda said:

    Really?

     Maybe you did not read the original post:

    "forever loops are useful only when you have another loop that is nested between it"



  • @sirhegel said:

    @GettinSadda said:

    Really?

     Maybe you did not read the original post:

    "forever loops are useful only when you have another loop that is nested between it"

    Ah, so all those forever loops I have written for years must be the useless kind!

    😉 



  • @GettinSadda said:

    Really?

    How about:

    for(;;)

    {

      MovePlayer();

      if(PlayerDead()) break;

      UpdateScores();

      MoveAIPlayers();

      if(PlayerDead()) break;

      MoveMissiles();

      if(PlayerDead()) break;

    }




    Pretty much the right idea. The general way it's done is an infinite loop that runs on the clientside input, network i/o, process data, output, repeat and on the server side network i/o, process data, repeat. In single player games it's pretty much the same minus the network loop. In a loop that's moving that fast there's no reason to check three times if the player's dead. 😉



  • What I find really funny about that thread, is the number of people who believe that even infinite loop should have a termination condition.

    ...Well I know that "infinite loop" is just an idiom, but still it just makes me smile:)

     

     



  • There IS an application for actual infinite loops as far as I know: Microprocessor programming, where the "abort condition" is that the processor gets cut off from power 🙂



  • @PSWorx said:

    There IS an application for actual infinite loops as far as I know: Microprocessor programming, where the "abort condition" is that the processor gets cut off from power 🙂

    You have a funny definition of "infinite". On that subject, I have a potion I'll sell you that'll give you infinite life (till you die). Say, $100? 😉
     



  • lol, alright, alright, alright. But you have to admit, from the point of view of a virtual being that lives inside the processor, it actually ... ok, I'll stop now...



  • I remember being impressed with Ada because you could write an infinite loop without a faked up condition. The idea being that in Ada the typical infinite loop would normally be terminated by detonation.
    --Larry Wall


Log in to reply
 

Looks like your connection to What the Daily WTF? was lost, please wait while we try to reconnect.