Welcome, Guest. Please login or register.

Login with username, password and session length

 
Advanced search

1411468 Posts in 69368 Topics- by 58422 Members - Latest Member: daffodil_dev

April 23, 2024, 12:50:16 AM

Need hosting? Check out Digital Ocean
(more details in this thread)
TIGSource ForumsCommunityJams & EventsCompetitionsA Game by Its Cover[AGBIC] 3D Sandy Evolution (CANCELLED)
Pages: [1]
Print
Author Topic: [AGBIC] 3D Sandy Evolution (CANCELLED)  (Read 3033 times)
B_ill
Level 0
***


View Profile WWW
« on: June 29, 2010, 04:38:06 PM »



Original Design Documentation
I proceeded to take out to meet you. Responsible for briefing the qualifying tournament. The semifinalists will perform and compete for monthly progress claim Robot Army. Rules after the start signal, which will win over those markers stood out from the earth the moon. May be doing, you will also attack a variety there. Please respond with good offensive skills in the evolution of the I's. Cosmic unity is the first step, please do your best.

Gameplay
3D Sandy Evolution is an artificial life simulation in which the player, representing a robot chosen by the high robot council, must guide an evolving life-form on a planet completely made of sand into becoming a new species. The player competes against other computer-controlled factions as well as against natural disasters like sand storms, sand tornados, sand hurricanes, sand fires, and sand-in-the-pants. The player does not actually exert any direct control over his creations, but can indirectly guide the evolution of the race through the use of spray pheromones to make certain members more likely to reproduce and orbital laser strikes to cull weak members of your species or strong members of the enemy's.
The creatures can also harvest a sort of gas which can be used to purchase more pheromones or power for orbital strikes.

Possible evolutionary degrees of freedom:
Group-iness
Move Speed
Lifespan
Intelligence (Ability to better locate food or upgrade money)
Attack Strength
Defense Strength
Carrying capacity
Turning ability



Technical Implementation Details
Tentatively, C++ with SFML. I've never used it before, but have heard some wonderful things and it seems simple enough. I may resort to XNA if I don't feel like I'm grasping the SFML quickly enough.

I think I may stick to a 2d topology if only to make the math a bit easier on myself. I may attempt a 2.5d environment, but that's on the luxury list for now. I better come up with a reason the name is "3D Sandy Evolution"  Shocked
« Last Edit: July 28, 2010, 09:03:39 PM by Bill N » Logged

Game Programmer and Designer
Latest Release: Chemical Cubes for Android and Kindle Fire (iOS coming soon)
LiquidAsh
Level 2
**



View Profile WWW
« Reply #1 on: June 29, 2010, 04:56:17 PM »

Looks, and sounds cool.  It can be tricky to manage the emergence of Conway's Game of Life into a game.  I've always wanted to see a game succeed at this, and hope yours is/will.  Best!
Logged
Inanimate
Level 10
*****

☆HERO OF JUSTICE!☆


View Profile
« Reply #2 on: June 29, 2010, 05:03:46 PM »

What a great interpretation of the title.
Logged
B_ill
Level 0
***


View Profile WWW
« Reply #3 on: June 29, 2010, 10:14:49 PM »


Woohoo! SFML is alive! Incredibly easy to use, as well. Hand Clap

Looks, and sounds cool.  It can be tricky to manage the emergence of Conway's Game of Life into a game.  I've always wanted to see a game succeed at this, and hope yours is/will.  Best!
It's not so much like Conway's, which is an example of a cellular automaton, but rather an agent-based model. Think boids (http://www.red3d.com/cwr/boids/), but 2D and in a game.
Logged

Game Programmer and Designer
Latest Release: Chemical Cubes for Android and Kindle Fire (iOS coming soon)
B_ill
Level 0
***


View Profile WWW
« Reply #4 on: July 11, 2010, 05:47:28 PM »

Most of the work so far has been exploring SFML and getting boring framework stuff outta the way.

Highlights of the fun parts:
Code:
Critter::Critter(Critter &mom, Critter &dad)
{
srand ( time(NULL) );

xpos = mom.xpos;
ypos = mom.ypos;

float contribution = float(rand()%100) / 100.0f;

maxLifespan = contribution * mom.maxLifespan + (1.0f - contribution) * dad.maxLifespan;


}
This version of the Critter constructor is going to handle most of the baby-making math. Right now, each attribute is influenced by a random amount from both the mother and the father.


Then, there's the baby-making code itself...this is where the magic (might) happens!
Code:
void magicMomemnt(Critter &mom, Critter &dad)
{
   if ( ((mom.attractiveness + dad.attractiveness) / 2.0f) > (0.5f + (((float)rand()%50)/100.0f)))
   {
      makeBaby();
   }
}

And yes, I'm using rand().
Logged

Game Programmer and Designer
Latest Release: Chemical Cubes for Android and Kindle Fire (iOS coming soon)
B_ill
Level 0
***


View Profile WWW
« Reply #5 on: July 14, 2010, 02:10:33 AM »

Today's crowning achievement: writing some click-detection code that doesn't guzzle processor resources!
Code:
std::list<Critter>::iterator checkClick(int x, int y)
{
for(std::list<Critter>::iterator crit = playerCritters.begin(); crit != playerCritters.end(); crit++)
{
float x1 = (float)x;
float x2 = (float)((*crit).getX());
float dx = x1 - x2;
if (dx < 0)
dx *= -1;

float y1 = (float)y;
float y2 = (float)((*crit).getY());
float dy = y1 - y2;
if (dy < 0)
dy *= -1;

if( dx < 15 && dy < 15)
{
if( sqrt(dx*dx+dy*dy) < 15)
{
count++;
return crit;
}
}
}
return playerCritters.end();



The darker circles have been clicked at least once. The box is still a relic of playing with SFML draw commands  Smiley

I've also come up with an explanation for the 3D part of the title...but you'll have to wait a day or so before the unveiling Smiley
« Last Edit: July 14, 2010, 02:25:26 AM by Bill N » Logged

Game Programmer and Designer
Latest Release: Chemical Cubes for Android and Kindle Fire (iOS coming soon)
Toeofdoom
Level 2
**



View Profile WWW
« Reply #6 on: July 14, 2010, 02:59:35 AM »

Just a heads up - you may get weird behaviour from using srand() in that way. I haven't used it in a while, but the typical idea is to seed it once at the start of the program with the time value, then never call srand() again. For example, if you create 2 critters at the same time with the current code, you will get the exact same random values for both.

Sounds like an interesting game anyway, looking forward to it Smiley
Logged

B_ill
Level 0
***


View Profile WWW
« Reply #7 on: July 14, 2010, 09:50:19 AM »

Just a heads up - you may get weird behaviour from using srand() in that way. I haven't used it in a while, but the typical idea is to seed it once at the start of the program with the time value, then never call srand() again. For example, if you create 2 critters at the same time with the current code, you will get the exact same random values for both.

Sounds like an interesting game anyway, looking forward to it Smiley

Yep, fixed that already  Embarrassed

Although it was pretty cool effect...when I'd start the program they'd all be stacked up on each other and look like one, and as soon as the random tick went off they'd scatter in different directions like an explosion.
Logged

Game Programmer and Designer
Latest Release: Chemical Cubes for Android and Kindle Fire (iOS coming soon)
B_ill
Level 0
***


View Profile WWW
« Reply #8 on: July 28, 2010, 09:04:04 PM »

I actually completed quite a bit of this project, but due to some fortuitous extra vacation time it will not be released Smiley
Logged

Game Programmer and Designer
Latest Release: Chemical Cubes for Android and Kindle Fire (iOS coming soon)
Pages: [1]
Print
Jump to:  

Theme orange-lt created by panic