Archive

Monthly Archives: August 2012

 

 

 

Oh wow I can’t believe it’s over.

I’m pretty hyper despite being exhausted. I actually got in a lot of what I wanted to get here: the animals breed with each other, successive generations mutate slightly, and successful creatures survive and breed while the less efficient ones die out. Now, they’re all stupid and vegetarian, but I’d say that’s pretty good for a weekend’s work.

 

I don’t know if I’m ever going to work on this project again, but it was a hell of a learning experience and it should make for a truly excellent portfolio piece. I hope following my progress on this has been interesting for you guys. I’ve kind of lost all perspective and utterly destroyed my brain with caffeine and adrenaline at this point.

So yeah. If anyone wants to try out the game, it’s available here. If you’re a programmer and are interested in the source code, that’s all uploaded here. My entry is up on the LD site here: voting is only open to other entrants, but you can see how well I do if you’re interested.

If you’re sick of LD updates, well,  I have good news and bad news. The good news is, regularly scheduled essays will resume on Friday– the bad news is, the first one will almost certainly be a post-mortem of this project and experience.

Advertisements

7:30am. About 10 hours left.

I am incredibly tired.

The absurd scope of this project becomes more apparent with each step I make. This is a concept better suited to a thesis assignment than to a 48 hour competition. It’s absolutely apparent at this point that it’s super unlikely I will manage to meet even my more modest goals.

And yet, I am proud of what I have achieved here.

The creatures wander around. They perceive each other, follow their allies, avoid their enemies, They eat, they breed, they die. The terrain is procedurally generated using layered perlin noise, and though it’s not perfect by any stretch of the imagination it is nevertheless pretty good for thirty or forty minutes work. Water and grass are added based on the heightmap thus created. Creatures consume the grass, and without it they will eventually die. They drink the water as well, but not enough to lower the level or anything. If they go into the water too deep for too long they will drown. They move more slowly uphill, which is lucky for them because before that a lot of them were starving in the mountains.

If I had the time, I could turn this into something really special.

That may or may not happen (right now I’d just as soon never look at it again). However, I’m proud of what I achieved here on a technical basis alone. Lots of people like to play up Flash’s slowness and clumsiness, but on my system I have 800 creatures with basic AI wandering around and perceiving each other and it runs fairly consistently at 30 frames per second. Many of the techniques I’ve developed here I will, I’m certain, be using in future projects. Altogether, even if I dropped the whole thing right now and gave up on developing this any further, I still think this would have been time incredibly well spent.

You can check out a working version of this thingy here. Give it a little while at the start to generate the terrain, since that’s a slow process, and try looking at the full screen version for a better idea of what’s going on. The animals are in 8 species with 100 animals per species to start with: note how they will quickly begin to gravitate towards others of the same species and away from potential enemies. Food is stripped away slowly but where they travel will become browner. These critters are too dumb to swim to shore, so you can watch entire populations die out by swimming into lakes.

There’s no mutation yet unfortunately, which undermines the entire concept of natural selection. This is the main concept I’d really like to get into the simulation that isn’t in there now, but I’m just now starting to realize what a truly tremendous amount of work it would be to realize it the way I want to. So, that very likely won’t happen. So it goes.

My brain feels kind of mushy. I’ve been slowly improving on what I had last night, trying to fix the multitude of little problems that came up. Well, it’s better anyway.

 

After much tweaking and noodling around, the damn dots finally recognize each other and group up. I could probably spend the entire remaining 20 hours or so polishing up and improving this behavior, but I think it’s better to turn my attention elsewhere and try to see if I can get any gameplay up in this.

So yes, it’s that time again: Time for the traditional Ludum Dare lowering of the expectations! Current plan is to get it set up with some terrain, food, water, etcetera. Animals will eat, shit, die, all that good stuff. The role of the player will be to strike down select animals to help maintain the health of the overall ecology. Much as with the original hunter concept, but easier to program in 20 hours.

So yeah. Wish me luck.

Okay wow. It’s about 6am. I’ve basically been programming for 10 hours straight and I have… well, not a lot to show for it. Yet.

First off: Man I didn’t make this easy on myself. In order to model things the way I imagined them, I needed to make a huge architecture of stats for each creature. Actionscript 3 doesn’t support enum for some dumb reason, so I needed to name indices for each of these stats manually. Then, I made vectors of multipliers to determine how each stat will affect each other stat- NONE of which is actually being used yet.

So what do I have to show for it so far? DOTS! BEHOLD!!!

They actually do chase each other around a bit now, which meets my minimum requirements for the day of having some creatures which interact with each other. Not exactly what I’d hoped for, but I spent a lot of time laying additional groundwork.

What sort of groundwork you may ask?

So far I have:

1) A Creature class with 34 unique statistics, most of which I have a pretty good idea of how to implement. The mechanisms for these statistics interacting with each other is IN PLACE, but uninitialized.

2) The creatures can perceive each other and react accordingly, running towards creatures they believe to be their own species (based on color) and running away from others. The fear and skittishness levels of each species will determine the severity of their reaction, but right now all of these dots are statistically identical

3) An efficient method for breaking the play area into grids so that the creatures don’t need to iterate through the entire entity list to perceive each other. I haven’t done this method before, since it was easy enough to just brute force it in the past, but since this game will have thousands of entities (ideally) it seemed vital. It was surprisingly easy! I will be reusing this technique in the future, I’m certain.

Tomorrow’s tasks: Implement terrain, food. Make creature behaviors more robust. Create player interactions with world (probably will be going with hunter model). Possible additions: scrollable map, basic graphics, sound effects, menus.

It has begun!

105 minutes ago the theme was announced: Evolution.

Fuckin’. Lame. Or so I thought. There’s already tons of games based on evolution, I thought. One could argue that basically every RPG is themed around evolution to some degree, and obviously the Pokemon games and their many imitators and proteges are inspired by that idea. This was what went through my mind in the first minute or two.

But. Is that really the case?

There’s a few ways the word evolution has been used and misused. I’m not going to get too deep into that right now because it would take a lot of energy and anger to do the topic justice and I need to save some of that energy for, you know, actually making my game project. The upshot is this, though: How many games are about the actual process of evolution, of natural selection to fill a niche?

Honestly? Not many.

So yeah. My first idea was some sort of platformer where the more you used certain skills the better they get and the less you used other skills the weaker they’d get, forcing you into a sort of metagame where you’d try to develop a well rounded character to get past obstacles. This is certainly closer to the ideals of natural selection than, say, Pokemon, but is hardly true to the process.

Also, I’m pretty sure other people will be doing basically that same idea, so that makes it less appealing.

That idea only lasted in my head for a few minutes before I decided that I’d prefer to try to hew as closely to the idea of evolution via natural selection as possible. So. Here’s my current idea:

We have a world with randomly generated creatures. They have stats in different areas, such as their tendency to follow or avoid each other, approach or avoid other species, graze or hunt, etcetera. Each associated stat has a trade off of one sort or another, such as size making a creature hardier but making it require more food. These groups of species would breed, with random number generators affecting these stats to one degree or another. Over time, natural selection should let these animals fill niches, which alone should be fun to watch.

I’m still deciding exactly how this will play out, but I think the watchword will be equilibrium. I imagine the player as The Hunter, a creature that feeds on other creatures for sustenance and to become strong. The stronger the creatures The Hunter eats, the stronger she becomes, so it is in her best interest to make sure there’s a strong population of animals. However, the more strong they are, the greater a threat they can pose to The Hunter, so she must maintain balance between the different populations to keep them from wiping themselves or each other out while still giving them as much reign to grow as possible.

This is the basic idea.

For tonight, my goal is simply to get a population of creatures up and running and hopefully interacting with each other to some degree. I would like to see some varied terrain for animals to be differently adapted to– which actually suggests a different more toy-like game where the player can redefine the terrain to see how that changes the behavior and evolution of the species occupying the land. Also pretty interesting.

Which would you guys prefer to see?

Hey. We’re going to be interrupting our regularly scheduled essays for MOTHERFUCKING LUDUM DARE.

If you’re not familiar, Ludum Dare is a 48 hour game making competition, challenging designers to create a whole game over a weekend. I’ve participated before, but not recently, and the last time I tried didn’t really pan out. However, I’m feeling pretty good now, so I intend to make this a success, and to make a better project than my previous one.

So. I’m going to be mirroring all of my LD blog updates on here to chronicle the journey, and there should be at least one per day, Friday, Saturday, and Sunday, as well as probably writing a couple of essays about my experience creating the game and my thoughts on the other entrants.

Super excited! Regular essays will resume next Friday (the 31st).

It’s been interesting to observe the ongoing shitstorm about sexism and misogyny in games as it pulses through the loosely knit ‘gamer’ community, particularly from the perspective of someone who agrees to some extent with people on both of the major ‘sides’ of the debate. What I think is particularly interesting is that I seem to be one of very few people who aren’t on one side or the other, either claiming video games are fine the way they are or calling out sexism at any provocation.

Actually, I’m going to digress a moment to talk about the ‘Girlfriend Mode’ debacle. For those who aren’t aware, a developer for Borderlands 2 was describing the ‘Best Friends Forever’ skill tree, a skill tree based on a less twitch aiming skill oriented play-style, and referred to it as ‘Girlfriend Mode.’ A substantial portion of the internet then aggroed on this for reasons which, honestly, I don’t fully understand. And, lest anyone claim that this is due to ignorance, I’d suggest you consider the point that the only worldview which could perceive that as sexist is purely heteronormative. I alluded to this in a tweet but, yeah, it bears repeating.

This wasn’t what I wanted to talk about though. I wanted to talk about the sheer anger and self-righteousness I’m seeing from both sides and, more specifically, how disgusted I am that there are two ‘sides’ here rather than like-minded folks trying to find solutions.

This mindset is pervasive. Read More