Ludum Dare #24 : Evolution -- Log

Andrei Marks · August 25, 2012

Theme: Evolution


  • I have an old idea I can use for this. Essentially, it's a time control puzzle game where you control the fates of a number of different species on a playing field. You're allowed to scroll back and forth through time freely, and occasionally intervene in the time stream. And your end goals are to have a certain number of a certain type of species or a particular sort of individual or whatnot.
  • I have an older idea, which would be a nice play on Lamarkian evolution. It involves family bloodlines, but it would probably require more art than I'm able to do, whereas the above is a little more abstract and doable for me.
  • I'm going to spend the next half hour eating and trying to brainstorm a little bit more.
    • Plant growing game?
    • Putting together a cell?
    • Immunology
    • Hmm...I guess in my head I keep leaning toward the simulation idea. I think I'll run with it.
  • Time Control Evolution Simulation Puzzle Game.
    • What is the game?
      • It's a "simulation" puzzle game.
      • You have a scenario, in which you are the god-like watcher, or scientists, or overlord.
      • Within the scenario are creatures. They'll just be boxes for now.
        • The boxes come in different flavors (species). When like meets like, they reproduce with variation. When dissimilar boxes meet, they fight, and the winner survives.
        • Boxes have different traits: strength, health, speed, whatnot. I'll have to come up with a bunch of mutation parameters as well.
          • Sprint, jump, fly, carnivore, herbivore, extra armor, horns, claws, etc.
        • Let's just go with three different species which emphasize different strengths.
      • Play consists of a set length of time in which the boxes simulate their actions based on initial states.
      • Player can simulate backwards and forwards in time. They can occasionally reach in and change the course of history by changing the positions of creatures or interacting somehow (increasing mutation chance, maybe?).
    • What is the goal?
      • It's an open-ended puzzle game. Each level the player will be given a task. Maybe eliminating one species or causing a certain species to reach a certain population point. Accessing an area or achieving a certain mutation. That sort of thing.
    • How does the player control the game?
      • Time slider. Go back or forth through time. Player can see how everything plays out.
      • Intervention. The player is allowed to change the position of creatures, either to encourage or discourage meetings. Perhaps the player only has a certain number of times they can do that per level.

10:19. Break.


      • Information look-up. Hovering over a creature allows the player to view a creatures "stats." Is it strong/weak/fast/slow/age/etc. Has it accumulated any mutations, etc.
    • Playing field:
      • Originally was thinking 3d space, but I should explore 2d options.
      • Scratch that. I want 3d space for jumping/flying etc. I think what I mean is a more rigid movement structure. So, rather than heading off straight at whatever angle, the creatures would only head off in set rows or columns.
  • Meh fuck it let's just start making the game. I have an idea for the most simple puzzle/tutorials, let's implement those:
    • Getting a cube to a certain target position.
    • Getting a cube to reproduce.
    • Getting cubes to eliminate other cubes.
    • Gathering food?
  • Going to Unity.
  • Okay...updating Unity.
  • So, starting with programming: targets:
    • Create a simulation space in which you increase/decrease a time variable.
    • Create a cube archetype, properties include:
      • color (species)
      • health
      • speed
      • special properties?
      • movement function.
    • Movement functions are going to be key. They say which direction the cubes will go. Will they go straight, left right, diagonally, etc.
      • I could tie motion to chess pieces, or even make the whole game about chess...
      • Here's a question. Should the motion be discrete, i.e.  movement occurs in steps, square by square. Or should the motion be smooth?


10:58pm – Programming

  • Create a script that makes a board. Just using cubes for now. I can combine the meshes into a single thing later if nec'y. That's done.
  • Art direction: go with chess board feel?
  • Art direction: Also want the sun to orbit round and round the world, creating shadows. Work on that later.
  • Input direction: give the player dragging directions. LookAt the currently clicked thing.


11:29 – Programming

  • Board is done, but should I start with discrete or smooth movement?
  • Ah, make a cube first.
  • Need to also determine a way to seed the initial states. It'll be a level manager script that will spawn creatures based on a set of initial positions.
  • Art Direction: give the cubes eyes, haha.


12:02 – Programming

  • Okay, super basic cube spawning done.
  • Now, put in the time controls. Have that basically in.
  • Now, hook up the lone cube to movement. Okay, did it very simply, just forward.
  • Art Direction: a glow to indicate the cube you're currently focused on?
  • Input Direction: Should work on camera controls, swivel and focus.


12:32 – Programming

  • Four F Simulation...potential name? In any case, good for tutorials. Go in this order: feeding, fighting, fleeing, fucking?
  • Let's work on plopping down multiple cubes at different rotations.
  • Problem, making things move along the local axis.
  • Hmm. Current issue is making things move forward (outside of just translation). Hahaha, nevermind. I was mixing up Vector3.forward and Transform.forward.
  • Tutorial structure?
    • Teach camera motion.
    • Teach target position manipulation.
    • Teach target rotation manipulation.
  • Art direction: For interventions, arrows?
  • Programming direction: program in camera motion.
  • Programming direction: different size boxes!

1:00 Stop Work.

10:26 – Programming

  • Ideas:
    • Art Direction: Add eyebrows to the eyes.
    • Programming Direction: time should definitely be integer-based, scale it for the smoothing effect.
    • Art Direction: "Mutation" intervention = purple spotlight?
    • Art and Sound Direction: Particle effects for eating food, fighting, mating, whatnot.
    • Art Direction: Different shades?
    • Level Design Direction: proceed through the game immediately, or no?
    • Game Design Direction: additional mutations = becoming poison, changing direction/scope of the movement function.
    • Game Design Direction: should definitely limit direct intervention to rotation.
    • Game Design Direction: should environmental intervention be allowed?
  • Focus on controls for now.
    • Make the camera center properly, and pick a good angle for it.
      • Okay, I've got the camera centering on bounds properly, but haven't yet decided how to programmatically set the optimal height. Possibly allow the player to control it?
      • Work on mouse click/drag rotation. Okay, we've got rotate for now, worry about altitude/limits some other time.
      • Now work on resetting the focus on objects. Should simply recenter the camera rotator and

Brunch 11:12

1:00 pm – Programming

  • Some thoughts on balancing the experience. Make sure that there are consequences for, say, wiping out a species or gaining a new ability. Or maybe not.
  • Work on camera focus.
    • Got the switching.
    • Hook up the follow.
    • Then work on lerping. On focus change.
    • And perhaps add the focus indicator? This will do for now, possibly do a Material swap in a future version.
    • Follow focus.
2:06pm --Programming
  • Now I want to put in some intervention code.
    • First, need a visual indication of the direction a cube is facing...eyes.
    • What's the best UI element for spinning something? Do we need a UI element? why not just click on something and drag it, much like the camera orbit?
  • Art direction: how to make the eyes follow the camera?


2:41pm – Programming / Design

  • Making a "Rotation arrow" in Photoshop. Yeah, forget that for now, looks terrible. Just going with the cylinder. Focus on this stuff later, focus on the mechanics first.


3:13pm – Programming

  • Get that rotation/intervention in.
  • Fix time next (make it incremental).
  • Figure out intervention measurement mechanic, or save that for later?
  • Programming Direction: Would help the experience if the camera zoomed in properly.

3:43 – Programming

  • The rotation/intervention mechanic will not be as simple as I'd like. I need to be recording WHEN interventions happen. For that, I should institute the new time system. Done.
  • Hmm, I've got down moving a step at a time, but it makes movement choppy. Two solutions: lerp or make the timeSteps super small and speed up how the inputs get changed? Went with latter.
Nap + Dinner
6:44 -- Programming
  • Okay, I think I've solved the timestep issue. There's incremental steps and non-frame limited steps.
  • Next, what's the best way to solve interventions?
    • Need to record what happens on each step. Need to record original state and changed state.
    • How to store this information?
    • My first inclination is an array of change events.
    • Just have it be exactly that. Change event objects that store the original state and the changed state.
    • Ah, not just interventions, though, need to include fights, births, deaths, etc.
    • Well, is it better to store these things in the creatures themselves? Let's try this one first.
    • Again, how to store the info, how to access it? Obviously it will be based on timestep
    • Urgh, this is a really tough problem. Implemented event class template, as well as a system that contains an event controller and a system for having creatures execute their events when necessary. The problem is what happens if a player zooms by an event, or multiple events? That information has to be taken into account and put into the final state.
    • Woot! Got it to work, at least in the case on interventions.
?:?? -- Started work again after 5 minutes or so. Currently 9:57;
9:57 -- Programming
  • Okay, now that interventions are working, I want the creatures to start dying.
    • Implement a health property:
      • Should it be related to size?
      • Should it be inversely related to size?
  • Before that, added skybox + sand texture, temporarily at least. I think greenery will show up nicely against sand.
  • Hmm, a bug in the ExecuteEvent() code. Seems to be missing a ....woot! fixed it.
  • Haha, just spent a lot of time cruising.
10:53 -- Breaking Bad Break.


  • Hmm, 21 hours left. Forget game design for a moment, and just implement some stuff.
  • You want health for the creatures, make health.
  • Make the health decrement with each step, increment if you go back in time.
  • Art Direction: on death, eyes x out and death.
  • Sound Direction: on death, death sound.
  • Programming Direction: how to manage birth and death?
    • Just deal with death for now.
    • Should it be a turn off collision/renderer etc.? or freeze and take it out of the game? Going with former.
  • Next up: feeding? Should it just restore health, or should it improve stuff? Simpler option is just restoring health.
    • Ah yes, set maxHealth as well.
    • Oh...and I suppose I have to create plants that feed the things.
12:50 programming
  •  Forget making the grass look pretty for now, just put in the functionality.
  • Art Direction: As you walk through the grass, you see the plus food.
  • Need to remember to clear everything if an intervention happens before a previous intervention. No longer relevant.

3:05 am programming

  • fuuuuuuuck. Time for a paradigm shift.
  • I've been stuck on this feeding incrementing decrementing crap that I'm almost on the point of giving up. There probably is a solution but it would be super painful figuring out how it works.
  • How about you can't simulate back in time, you can only simulate forward?
  • I could simply traits, add way more, and then just let things run forward. Pause at most.

Sleep am

10:48– Programming and art

  • Okay, really have to make sure I move along now, less than 10 hours to wrap this up.
  • I think the new direction simplifies things drastically, I just have to make sure this works.
  • Really need to make sure I'm switching directions every half hour, or else I'll never get the total package done.
  • Things to work on:
    • Art: question mark when looking for food.
    • Food detection behavior. Okay, pause for now.
    • Do the reproduction behavior. Which will include the genetic component.
Argh, didn't finish because I switched directions with less than 24 hours to go. But what I've got now is way more fun than what I was imagining. I'll keep working on it tonight.









Twitter, Facebook