Posts Tagged Evolution

Meatpiling

Who wants an insight into the debugging process? Nobody? Well you’re getting one anyway.

‘Meatpiling’ was a survival strategy, caused by a bug which was fixed in hotfix 3, where hundreds of giant carnivorous blobs would converge in a small location and survive by eating each other. The name comes from the gigantic corpses that served as the food source for the entire mass. It was a horrific conglomeration of living and dead biomass: the pinnacle of evolution!

Which can only be defeated by a ragtag group of Very Attractive Scientists and a firetruck full of Product Placement!

Logically, this shouldn’t be possible. Carnivores can’t get energy without eating herbivores, who in turn can’t get energy without eating plants, but The Mass was almost entirely carnivorous, and stationary. There was no way should have been able to feed itself, yet it was such a viable survival strategy that almost every simulation seemed to converge on this end result. The logical conclusion was that there was a bug in there somewhere.

And thus began the bug finding endeavour, a heroic tale heroism and courage, uniting the world and saving the- no okay it was long and boring.

I started by studying the creatures. In addition to being giant fat carnivores with an energy capacity that would rival a medium sized star, they were social and amorous, and had a very high attack damage.

“Aha!” I thought, excited and slightly aroused by the prospect of solving the bug simply by looking at it, “Clearly The Cause Of This Problem Is Attack Damage! Onward, To Victory And Pie!”

My assumption was that when a creature attacked and killed another creature, the corpse was accidentally gaining energy. The logic behind this is simple: when a creature attacks another creature, any health lost is converted to biomass (meat).

Attack Damage = 100
Health Before Attack = 10 Biomass Before Attack = 0
Health After Attack = -90 Biomass After Attack = 100

Since hP is no longer used when a creature is dead, the resultant corpse has 90 more energy than the original creature.

I checked the code for attack damage, and sure enough it was subtracting the full amount of attack damage, without regard to how much was left. So I fixed this by subtracting/adding whichever was smaller of Attack Damage and Total Health, dislocated my shoulder trying to pat myself on the back, and loaded up the simulation just to make sure it was fixed.

Guess what happened next?

WHY U NO DISSAPPEAR???

After a bit more research, I determined that not only was Attack Damage not the problem, it was never a problem in the first place. You see, when a creature dies, any remaining health and energy is dumped into biomass. So the negative 90 health in the above example was being added to the positive 100 biomass, resulting in a correct value of 10 biomass. My actions hadn’t actually made any difference.

This still left me with a problem: if it wasn’t attack damage, what was it? Where was all the extra delicious meat energy coming from?

I adopted a new approach, one I’ve used in the past. I have a function called “RecalculateGlobalEnergy”, that generates the Mega joule statistic next to the ‘environment’ by adding together all the creatures health, energy, biomass and all the tree, corpse and ground energy. By peppering the game code with this function, turning off photosynthesis, and watching for when the energy content increases, I can spot exactly when positive energy leaks like this one occur (negative energy leaks are harder to find, but are also less dangerous: you can’t make a survival strategy out of losing energy).

This should have worked. It really should have. Unfortunately, things are never that simple.

See, floating point digits can store 7 unique digits. This can be expanded to store numbers with more digits, but you lose precision at the lowest level to rounding errors.

The environment The Mass lived in had an energy content with 8 digits.

This meant that, due to rounding errors, the lower end of the energy content number would jump up and down by a few units, resulting in loads and loads of false-positive increases. Separating the genuine increases from the false ones was more difficult than it should have been.

I experimented briefly with reducing the number by only looking at meat energy, and turning off eating plants entirely. Unfortunately, the number was still more than 7 digits.

So I adopted yet another new approach: reduce the energy content the nasty way. I already had a genocide button (“K”, for anyone wondering), and I went and added some new functionality to clear the corpses (“L”).

For anyone keeping count: by this stage the game runs at less than 1 fps due to recalculating the Global Energy dozens of times each frame, hits a breakpoint a couple of times per frame in debug mode, the creatures can no longer eat or interact with plants, and I was holding down K and L to make them die and erase their corpses from existence.

I managed to get the energy content down to 7 digits and save the map, then I reactivated debug mode. The game barely-ran for quite some time, before hitting the breakpoint with a positive increase of more than 400 energy. Got you.

(And yes, I’m aware I could have filtered out the false positives by only looking for larger increases, but I didn’t know at the time how large an individual increase would be. For all I knew, the false positives were the increases)

The end result: it had nothing to do with carnivory, energy content or attack damage. The energy increase happened during reproduction. When a mated/non-virgin creature reproduced, I’d forgotten to subtract energy from the parent when giving it to the child. Effectively, mated creatures could give birth for free.

The meatpile was an orgy.

I didn’t want to google for an appropriate image, so here’s a creature looking unimpressed.

The worst thing about this particular comedy of errors? If I’d paid closer attention at the start, I could have worked it out myself. Amorousness, the behavioural tendency that makes creatures decide to mate, was extremely high in every creature in the pile. I mistakenly assumed it was a side effect of being in such close proximity to each other, not the reason they were converging.

So quite often, that’s what Species is for me. A comedy of frustrating, painful errors that, at the end, results in a nothing more than a slightly more accurate, slightly more interesting, simulation of evolution.

And you know something? It’s totally worth it.
Qu.

“There are things in this world: dark, terrible things, that should never be googled.”

, , , ,

3 Comments

Mocking Richard Gunther

Okay, so normally I approach the slightly more difficult denialist arguments and try to give them the benefit of the doubt, so as to constructively critique them and address the fundamental misconceptions that resulted in them, as well as to comment on actual concerns in science communication and on some of the more unintuitive and interesting results of the theory of evolution. [deep breath] But

… sometimes I read something that breaks the stupid barrier so hard the air-molecules in front of it fuse with it and cause a multi-megaton explosion, and I just have to laugh at it, and share it with friends so they can laugh at it, and broadcast it via gravitic waves from a repurposed orbital EMP cannon to finely control the vibrations of every smooth surface on the planet so every sentient being on earth including the reptiles that live thousands of kilometres under the earth can laugh hysterically at it. This is the sort of stupid to which the only real responce is snark: snark so dense that it collapses into a snarkularity and causes the snarkpocalypse, which I’m proposing as an ending for a Darker And Edgier cover of Dr Seuss’s The Cat In The Hat. So here’s an article from Richard Gunther of Living Waters Ministry, Ray Comforts official cartoonist and easily one of the dumbest creationists I’m aware of. Seriously, this guy puts Comfort, Hovind and Ham to shame. He’s in a whole league of his own.

Fair warning, the following makes no attempt at being constructive, persuasive, unbiased or even fair. It is written solely as an exercise in sadistic mockery of the eminantly mockable. And I am going to thoroughly enjoy writing it.

I will, however, refrain from commenting on the HTML layout of his site. Some targets are just too easy.

HeaddeskCount = 0;

A while ago I drew a cartoon as a joke, with the picture of hairy primate and the words to the effect: “If we come from apes, and if apes were “fitter”, then how come there are still apes?”

That would be this cartoon:

Richard Gunther is a professional cartoonist.


(Attribution: Richard Gunther, Living Waters Ministry)

Have you ever wondered what you’d get if you gene spliced an orang-utan, a horse, and a goldfish? Well now you know.

And in answer to the question, an analogous question: “If Australians are descended from Europeans, why are there still Americans?” (The answer, of course, is “Because We Find Them Amusing”)

It was a rather confusing question, unless you followed the assumption followed by Darwin, that the “fittest” would survive – as opposed to the “unfittest” which would become extinct.

HeaddeskCount = 1;

Firstly, Mr Gunther, Thomas Huxley came up with “Survival of the Fittest”. Darwin wasn’t too keen on the term, and would probably have used twenty times as many words anyway.

Secondly, SotF is a 150 year old oversimplification. Everyone else moved on, why didn’t creationists?

Thirdly, Microsoft Word says “unfittest” isn’t a word.

This joke was drawn and written for its humour, not its accuracy, because of course it is downright silly to argue this way.

Alright, fair enough. I suppose it was pretty funny, in a “laugh at the mentally disabled creationist” sort of way… wait, no, that’s not funny at all. But then again, since when are cartoonists expected to have a sense of humour anyway?

Just because one thing came from another does not mean the originator must be gone – just because humans are “fitter” than apes does not mean that apes ought to be extinct. A simple illustration of this is found in dog, or cat, or rabbit, or hen, or pigeon, or horse breeding. The original stock is still with us, while the offspring, hybridised and modified through careful breeding, is also with us. There are also many examples of very “unfit” plants and animals, such as the panda which lives almosty exclusively on bamboo, or the koala which likes mainly eucalyptus. Most unfit” yet they survive.

HeaddeskCount = 2;

There’s a pretty big difference between “specialised” and “unfit”. I’d like to see you survive solely on Eucalyptus, Richard! (Actually, I really would, that would be awesome)

The only reason panda’s and koala’s are ‘unfit’ these days is because we’re destroying their natural habitat faster then they, as extremely specialised animals, can adapt.

Unfortunately, when this cartoon about the humans and apes was posted on a website, it drew a great deal of flak, as several people took it as a serious comment. On the one hand I am pleased to see that there are some intelligent people ‘out there’ in etherland, who know some facts about breeding,

“Breeding”? I assume he meant to say something like “ancestry” or “population dynamics” (or, azathoth forbid, “evolution”), but… “breeding”? Now I’ve got a mental image of Zombie!Gunther staggering about moaning “breeeeeedddinnnnggg”…

(I suppose it makes sense: he certainly has no desire for brainz)

and I must admit I was slightly flattered that anyone would even notice my little cartoon, but on the other hand I was disappointed that the humour in the work was not taken as just that. Humour, satire, irony and other forms of amusement are not supposed to be taken as seriously as, for example, a scientific statement, or a statistical comment.

“If the world is really made entirely from cheese like creationists believe, then what type of cheese is it?”
“Ummm… creationists don’t actually believe the…”
“CAN’T YOU TAKE A JOKE?!”

HeaddeskCount = 3;

It reminded me of a joke I read, where a little kid asked his Dad “If God made us, and we are apes, then God must be an ape too!” Very logical, and based on the original premise being true, quite consistent, but funny, because the whole question is based on a silly premise.

Alright, so if we assume Gunther is claiming this joke is analogous to his, then the “silly premise” in question is… what? A rediculous caricature of the theory of evolution?

Something doesn’t add up here. Why would a creationist make a parody of a strawman caricature of evolution? I could understand a evolutionist making that parody to mock creationists, and I can understand a creationist making a parody of evolution itself, but in this case we’ve got a creationist parodying a creationist strawman?

Or maybe Richard is just backpedalling because he realises his original cartoon was somewhere between neurodeficient-tapeworm and concussed-housefly on the IQometer.

So taking up this view that it is a good thing to be logical, and consistent with an original premise, let us see where the Darwinian view leads, if we follow it through: Darwin saw Mankind as the product of millions of years of slow development, an increasing trend, from lower to higher levels of intelligence and complexity – a development which he claimed was a normal part of living things.

Well, leaving out the ‘lower to higher’ aspect, which is just silly, (increased complexity and intelligence are merely byproducts of our improved ability to survive), yes. Evolution progresses slowly, over millions of years.

Apply a logical progression to this: If this premise is true we should see:

A continuing improvement in average human phisique, health and resistance to biological opposition over time,
A continuing increase in average human intelligence, and technology,

HeaddeskCount = 4;
HeaddeskCount = 5;
HeaddeskCount = 6;

Okay, see, the one part I left out, because it was silly? That’s the part you’re focusing on, Richard. Also, you seem to have forgotten the ‘millions of years’ part.

Also, when did human technology start reproducing biologically? You’ve been holding out on me, technologically industry! I want my biotech!

We do not see any of these things. The trend is the other way. Darwin’s theory of evolution upward doesn’t fit the real, observed world.

False Attribution: “Darwins theory of evolution upward” actually refers “Richard Gunthers utterly moronic caricature which he thinks is an accurate description of evolution.”

HeaddeskCount = 7;

Health? Humans are increasingly beset by new diseases (small pox, malaria, cholera, ‘black death’. etc)

,
Black Death? The black death is a new disease? BWAHAHAHAHAHAHAHA!!!

The other “new diseases” there would still be lol worthy even without the black death, but… oh my goodness, that’s hilariously idiotic.

I’m subtracting a Headdesk just for that.

HeaddeskCount = 6;

How[sic] Intellect? Increasingly discoveries of ancient civilizations are revealing that those people were actually brighter they we are in many ways (i.e. huge monuments made of incredibly heavy stones, the antikathera, astronomical knowledge, metal-work, more complex languages, etc.

Yep. The people who built great big lumps of triangular rock to bury their dead leaders in were totes smarter than the engineers and experimental physicists who built a perfectly circular tunnel of vaccum under france and italy and just used it to discover the Higgs Bosun. And the zodiac is waaaaay more advanced than hubble. And metal work? I’ll bet the engineers who just landed a rover the size of a mini on another planet with a parachute/hovering VTOL skycrane combo would never have thought of heating up iron.
Any more insights, Professor Gunther?

No, seriously, is he seriously arguing that our intellectual level has followed a downward trend since the bronze age using examples from technology to prove his point? I would understand it if he was using writing and philosophy: that would at least make a certain level of sense, albeit sense not backed up by evidence. But technology?

HeaddeskCount = 7;

Are humans improving ‘morally’? Not at all – we have had more than 5000 years of continuous war, raging at least somewhere on the planet, including the more recent two world wars, a holocaust, and many examples of genocide – some going on right now. Peace on earth? Right now there are millions of people living under oppressive military regimes, or dying of sickness, hunger and/or are in the grip of poverty.

Yeah, and a large percentage of the world population now believes that war, slavery, racism and discrimination is wrong and lives in peaceful democratic countries, where our opinions, beliefs and freedoms are protected and we are all (theoretically) given equal ability to influence how our countries are governed. WE’RE WORSE THAN WE’VE EVER BEEN.

HeaddeskCount = 8;

So this is the opposite to the path set by Darwin’s theory? According to him, evolution for humans is all up and up,

Also according to Darwin according to Gunther: the moon is an eyeball of yog sothoth’s pet unicorn, humans are secretly being controlled by the koala-bear hivemind (but it’s okay because they only want hugs), and germs are actually the tears of fairies who have lost their wings.

HeaddeskCount = 9;
HeaddeskCount = 10;

but the reality is down and down. Humans are not smarter, healthier, better. They are either much the same or much worse. Darwin was dreaming.

HeaddeskCount = 11;
HeaddeskCount = 12;
HeaddeskCount = 13;
HeaddeskCount = 14;
HeaddeskCount = 15;

All I can think of right now is that quote from The Castle: “Tell ‘im he’s dreamin’!” It’s possible I may have just given myself a concussion.

But there is one last thing to note: one huge and obvious difference between that ape I drew and the average modern human is that apes don’t have an inherited sinful nature.

Bonobo’s have sex for pleasure and chimps eat each other.

If humans really did come from primates, they too would be sinful, but they are not. They have no moral awareness at all.

Several species of apes grieve for lost loved ones, and are capable of altruism.

That makes humans more likely to be special creations, by a moral God, than merely animals – something Darwin apparently refused to notice.

Yep, because Darwin was absolutely incurious about the natural world and didn’t spend decades of his life studying every detail he could find prior to publishing his theory. No, instead he “refused to notice” basic creofacts and wrote On The Origins Of Species after a drunken night on the town, during which he proposed to a 200lb dock-worker and accidentally set fire to his beard. Twice.

HeaddeskCount += 8986;

Although, credit where credit is due, it can’t be easy for Richard Gunther to transmit these essays to us across the 5th dimension from the parallel universe he apparently inhabits.

“Pro-tip: never try to hug a koala. Seriously. Furry bastards have claws and a temper.”

, , , , , ,

2 Comments

Species 0.4.1

… is Released!

Heeeellllooo…

Download the game here: Species ALRE Official Website

From the Development Thread:

Developments

Gene Splicing
Radiation Gun
Highlight Colour Filters (basic implementation)
Ultra Time Acceleration (deactives rendering, runs at the maximum speed the computer can handle)
Q/E to make the camera Rise/Fall. (It’s like maaagic)
Head animation and movement. (To make them look like they’re actually thinking. Makes them seem a lot less brain-dead)
Eye animation and movement. (as above)
Animated Cloud Plane.
Tree’s waving in the breeze. (These two should make the Time Accelleration actually feel like Time Accelleration, as opposed to simply putting all the creatures on meth)
Better Looking Corpse/Meat Models (Steaks! Delicious bloody raw steaks! How can they resist evolving into carnivores now?)
Fake Shadows
Basic Ambient Noises (placeholder sounds: check back for a hotfix for them later this week)
Export Creature function
Import Creature function
Mutation Map – Feature Model
Mutation Map – Feature Texture
Mutation Map – Body Covering
Mutation Map – Colour Pattern
Update the Mod Maker to acknowledge new Mutation Maps.
Mark Perception Target. (Head animation already made the creatures a bit easier to read: showing the player what the selected creature is targeting should improve that even more)
Remake the Eyes (Eyestalks and eyelids and light sensing pits!)
Remake the Eye textures (Lenses and Compound Eyes!)
Autorestart option for Mass Extinction (in the Options Menu)

Fixes

Creatures not wandering even though they say they are. (LIIIIIEES!)
Creatures spinning endlessly in circles around tree’s. (Clearly they’re attempting to rob the planet of it’s rotational momentum. They must be stopped)
Game crashes at some point when you set the population cap to 2000.
Autosave closing any open UI tabs. (My bad guys, I should have fixed that one before release)
Creature’s heads rotating into their own bodies (mostly fixed, still happens occasionally though)
Creatures looking in the wrong direction in the Creature Details Panel.
Fake shadows visible through cliffs.
Fake shadows not orienting to ground properly.
Remove Creature Thumbnails. (currently they’re being taken at birth for every creature on the map, which costs performance. It would be better to take one solely for whichever creature is currently selected)
Deforest the area outside the border
Automatically detect if the player’s graphics card can’t handle Pixel Shader 3.0 and/or > 2048×2048 textures
Deal with all of the AI problems that Mark Perception Target made painfully obvious
Bind the Up, Down, Left and Right keys as secondary movement controls for people who don’t have qwerty keyboards.
Option to save as BMP files, for systems that don’t support saving to PNG (assuming that’s what’s causing the loss-of-terrain problems some people are reporting)
Check Biomass Bar for possible Memory Leak (No way to test it, but I have made sure it won’t try to draw more than 150 scale sprites)

Report any bugs here. (or leave a comment below)
Discuss the release here.
Make suggestions for 0.5.0 here.

You think you know me? You know nothing.

, , , , , , , , ,

1 Comment

I am not making an MMORPG, But…

Okay, first things first.

Species Alpha 0.4.1 comes out in a week, on Sunday 15th July.

Check the still-ongoing development thread for info on what it contains: over here I’m just going to say “gene splicing and head animation” and leave it at that.

Now on with the show…

I was originally going to keep this planned feature a secret, since I’ve never done anything like it before, but Skylimit preempted me in the comments by simultaniously coming up with a fairly similar idea. I would call that memetic convergent evolution if I was trying to be thematically pretentious, but since I’m still trying to maintain the illusion that I don’t think I’m smarter than everybody else I won’t.

Anyway, the feature is, quite simply, Online Multiplayer.

Now before I go any further, I want to draw everyone’s attention to a particular archetype/stereotype. On many games programming forums, there will be a few new threads with a title like “help me make my game”, or “my game idea” or something equally vague. They will often be the first post by this particular user, (and in many cases the last) and will consist of something like this:

“i have a game idea for a great game I want to make its an MMORPG and wil make lots of mony but I don’t know how to program what do i do plz help”*

And it is always, always, an MMO. I don’t know why, and I’m not even going to try to guess.

I mention this archetype so that I can say: this is not me. I know my limitations, and a genuine MMO is fairly well beyond them. What I’m suggesting for Species is not so much a way to play the game with other people as a way to expand the creatures world by connecting one border of your map to theirs and allowing creatures to wander fom yours to theirs, thus ‘combining’ your CPU power.

It’s at this point that I get excited, because this grid of connected worlds utterly demolishes the biggest restriction we have on the game: performance. Suddenly, the world of Species can be as close to infinite as makes no difference. We go from petrie dish to planet in one hit! And with some sort of multiplayer map view, you could see how the descendants of creatures from your world are doing other worlds, and in the overworld in general.

My plan is to connect the borders directly: essentially making it so that, to the creatures, there are no borders at all. There won’t be any ‘migration’ routine or any decision on the creatures part to go to the next world over: they’ll just cross the edge in the course of their usual wandering and appear in your neighbours world. I like this idea because it means you’re not just connecting standalone worlds and allowing them to pass creatures to each other: you’re actually expanding a single, gigantic world.

And then my excitement starts to die down as I consider the problems this poses.

On the immediate, border-to-border scale we’ve got time accelleration. Imagine a world running at 10x connected to a world running at 1x. Things turn into an episode of Dr Who at the border.

This problem isn’t too bad, though, compared to others. What about players connecting and disconnecting? This is the equivilent of huge chunks of terrain, and all the creatures and vegetation in them, appearing and disappearing with no warning.

So far we’ve come up with four solutions, none of them ideal:

Static. This mode ensures the player can keep their world and their position in the overworld, no matter what.
– – When a player disconnects their world ‘freezes’: creatures can no longer pass into, out of, or through their world.
– – The advantage is that the overworld as a whole remains static across multiple sessions: perfect for small, organised simulations, where you can turn all machines in the network on at the same time.
– – The disadvantage, obviously, is that entire chunks of the map can vanish and become impassable if someone shuts the game off.

Dynamic Player. This mode sacrifices player persistance to enable a large, semi-static overworld.
– – When a player disconnects, another player on the network (someone at the ‘edge’ of the overworld) or an incoming player automatically loads and begins simulating their world.
– – The advantage here is that a large, disorganised network can still run a relatively controlled and scientific simulation.
– – The disadvantage is that you as the player won’t be able to call any particular world or species your own.

Dynamic Overworld. This mode keeps player persistance and prevents impassable grid squares by turning the overworld into a constantly-shifting and changing environment.
– – When a player disconnects, someone else on the network (probably a neighbour) has their entire map picked up and moved into the vacant spot. (this may initiate a cascading shuffle, since someone else may now have to occupy their spot)
– – The advantage is obvious: the player gets to keep their map across multiple sessions and also connect to a large, disorganised network.
– – The disadvantage is the effects mobile terrain. A particularly lucky map could move halfway across the overworld, seeding it’s creatures into other maps the whole way.

Virtual Overworld: This mode treats the overworld not as a 2d grid of terrain, but as a web of connected nodes.
– – When a player disconnects, rather than their neighbours being physically shuffled about, only the links are re-arranged, with the nodes being pulled into position by a web-physics simulation similar to what the Mod Manager has.
– – The advantage’s are similar to the Dynamic Overworld option, with the overworld being less mobile: rather than shuffling world bits about, the borders will just grab onto each other and tie the web tighter together. And when they re-connect, they can return to the same spot and connect to the same neighbours.
– – The disadvantage is that it can’t be represented as a ‘planet’ of contiguous terrain anymore. If you’re having trouble visualising what I mean: which square is connected to the north-east corner of square 8 in the far-right diagram above?) As a result, rather than zooming out to some sort of impressive satellite view showing mountains and forests and rivers, we’d need to display the web of connected nodes.

The other problem is that some of this conflicts with other idea’s we’d had. We had considered building the AI facility/science lab that will serve as the player avatar into the crater walls. This neatly solves the problem of the buildings and nursary taking up space and getting in the road of the wild creatures, means I don’t have to implement per-creature collision for them which is a performance bonus, and it looks cool. Unfortionately, if the overworld is meant to be contiguous, the crater has to go (at least in multiplayer), which means we’re back to the original, relatively boring idea of dumping the science base in the middle of the map.

Actually, even if it’s not contiguous, we’ll still need to ‘connect’ the map to it’s neighbours somehow so that there’s at least an explanation for where the disappearing creatures at the border are going. I’m pretty sure the blind legless slugblobs aren’t quite capable of scaling the crater walls.

I’m actually in need some suggestions here: this is all very much long term stuff (we haven’t even worked out the design style for the science base yet: all I’ve got in my notes is “somewhere between jurassic park, NASA, and a volkswagon-factory”), but it’s presenting some interesting design challenges. How do we reconcile the need for an open overworld with the need for overworld stability? Where do we put the AI complex and nursary? How many roads can a man walk down?

Any ideas?
Qu

*footnote: In the interests of keeping this post constructive and not just laughing hysterically at the n00bs: if the archetype above sounds like you (minus the lack of grammar), here’s a few suggestions:

a) Start small. You’ll learn a lot faster making a 2D game or a mod for another game, and you’ll screw up your large project less in the long run because you’ll make all the beginner mistakes in the small project, rather than in the large.

b) What programs you should be using depends on how keen you are and how much prior experience you have. If you’ve never programmed before in your life, try making a simple Pong clone in Macromedia Flash or Game Maker, or better yet in Visual Studio’s Windows Forms Designer (that will also introduce you to Visual Studio, which will help later). You can do it in an afternoon (there’s loads of online tutorials around), and it will at least give you a very basic idea of what is involved. If that goes well, grab a copy of Vistual Studio and decide what programming language you want to learn. I like C#, but really, the similarities are more important than the differences. If you can program in one language, you can learn to program in most of them.

c) If you’re already a programmer, or you’ve done (b) and decided this programming stuff doesn’t seem too hard, you’ve got a few options: use/mod an existing game engine (if you’re making an FPS, you might as well start with the Crysis world editor or the Unreal Engine), download a genre-independant game engine (I’ve heard good things about Unity), or download a framework like XNA or even just native DirectX and build your own engine. Which way you go depends on how keen you are: if you want complete freedom and are willing to pay for it with increased time and effort, go straight for XNA or DirectX. If you’re happy to be somewhat restricted, but get your game out months in advance, go for a pre-existing engine.

d) Don’t try to make games on your own for the money. The AAA industry is already doing that, and they’ve got rediculous budgets to throw at it, so competing with them is useless: if you want a part of that action you’ll have to go sell your soul to join them. And if you want to make loads of money from the indie crowd, ala Minecraft, you're not going to get away with pandering to what you think they want, because they want originality (which is a nice way of saying they don't have the slightest clue what they want until they see it. Seriously, imagine pitching the Minecraft concept to anyone prior to the game being made). If you're going to sell to the indie crowd, then you need to be making games because you want to make games, not for any other reason.

“We will of course be laughing hysterically at the n00bs anyway in an attempt to crush their naive enthusiasm under wave upon wave of sadistic cynicism.”

, , , , , , , , , ,

7 Comments

Why aren’t carnivores evolving?

Here’s a new type of post: analysing the behavior of Species: trying to work out why things are happening the way they are, and using what we learn to improve the mechanics for the future.

Eventually, I’d like to integrate this sort of questioning into the game mechanics themselves: make science itself a game mechanic. As an example: say you want to know what a specific gene does. The game could require you to earn a certain amount of “data points”, or something equally abstract, and then spend them on that gene to discover it’s function. And that would make for a decent game mechanic, encouraging you to earn data points, which I assume you’d get by performing actions like creature sampling. But it wouldn’t be science, it’d be economics. And no offence to economists and EVE Online players, but unless your entire country is falling into disrepair because of too many short-term investments and cuts by the rich and powerful, economics is boring.

Alternatively, you could take a creatures genome, apply heavy mutation to that gene specifically (via a targetable radiation gun or something equally awesome), then clone a creature from that genome and see what’s changed. You could then go back and label the gene. Observation, hypothesis, experimentation and conclusion: that’s science, turned into a gameplay mechanic. And best of all, the reward is the logical result of the experiment: you can now target that feature specifically when you manipulate genetics.

Of course, the game can take care of some of the slower bits: for instance, an ‘autocompare’ between parent and child, which detects and names the heavily mutated gene for you, would keep the game moving better than if the player had to visually inspect for differences, and then go back and type in the function of the mutated gene themselves. Afterall, I’m not interested in data entry, I’m interested in science. (On the other hand, if naming gene functions is your thing, this would tie in well with the ‘naturalist mode’ idea that Reprieve suggested)

Anyway, I’ve managed to go off track before I even got on the track in the first place. I don’t even think I ever even [i]saw[/i] the track: I’ve been doing donuts in the carpark this whole time. Shorter me: I’ll be looking for any opportunity I can to integrate science and gameplay. In the meantime, I can still do science on the game out here in meta-space.

And what I want to know today is: why aren’t carnivores evolving?

Play the game for a bit and the best you’ll probably get are omnivores, despite all the giant piles of delicious meat lying around. Something’s going on: hunting and scavenging should be viable strategies, so why don’t carnivores survive?

Part of this is simply the power of stupid. Creatures are often too dumb to seek out plants, let alone other creatures, let along dead other creatures. Rest assured I’m working on this for 0.4.1, and future versions will have significant AI improvements on top of it.

But it’s not just that. You may have noticed that probably the most viable strategy among the creatures is to find a large tree and just sit there eating it, staying at max energy and pumping out 10 or more babbies until it’s gone, like the Quiverful movement’s vision of the ideal woman.

So why doesn’t this work for carnivores?

Is it just simple math? I’ve been meaning to check the math for this post, but haven’t gotten around to it (and I don’t have the game in front of me right now durn it), but I’m pretty sure it isn’t: meat energy is highly dependant on the life of the dead creature, but everything they eat during their life is converted to meat, so there should be loads of it in each meat pile.

But there’s another factor. You see, creatures have an ‘eat rate’ value, which differs between vegetation and meat. The malleable, delicious, high-protein meat can be consumed much more rapidly than the tough, horrible, inefficient plants.

Seriously. We really appreciate it.

In theory, this serves as a reward: unlike grazing, creatures can get a lot of energy in a short amount of time from meat. In practice, it became the opposite: the above strategy, where creatures maintain their energy at max by eating from one source until it’s completely consumed, works for only as long as the source lasts. And meat doesn’t last much time at all.

This is an interesting phenomenamnicon in it’s own right: the ecosystem actually encourages slow-eating creatures, which is the opposite of my expectations. But it makes the game less interesting and actually discourages evolution, so I believe a few changes are in order.

There are two approaches I could take to this:

– The balancing approach. Consuming meat faster is preventing carnivores from developing, so I’ll make them consume meat slower. I’m not going to take this approach, partly because it’s illogical, but mainly because it utterly and unforgivably violates my primary design goal. I’m developing the environment, not the evolution: I shouldn’t be ‘balancing’ selection pressures to make the things that I find interesting develop. That’s not what the game is about! Aargh!

– The expanding approach. It’s not consuming meat faster that’s preventing carnivores from developing: it’s that I’ve failed to model the animals eating behavior correctly. It’s logically impossible for them to continue to eat when their stomach’s completely full, so why are they doing so? I need to fix that fundamental bug, rather than working within it to achieve outcomes I percieve as desirous.

Of course, I probably won’t be able to fix it immediately. Making them make a new decision when full is a relatively simple thing to implement, but it will lead to a whole bunch of new bugs to test for, and will have significant implications for their survival (making it much harder on the early, blind creatures, and much easier on the sighted random creatures). So I’ll probably hold off implementing it until 0.5.0, which will also implement grazing, a feeding strategy that doesn’t depend on sight and so makes it easier on the starting creatures.

(EDIT) Actually, you know what guys? Screw everything I just said, I’m implementing it anyway. I might as well: it’s not like I’m not fixing AI bugs already, and with those fixes I’ve already completely screwed over the game balance.

(EDIT Mk2) What the flip. The blind starting creatures are surviving better now? How are they… I don’t even… what is this? What the hell even is this? YOUR GOD DEMANDS TO KNOW.

(EDIT Mk3) Okay, it looks like this might be one of those hilariously unintuitive results the Anthropomorphic Personification Of Evolution is so fond of. I could explain what I think is causing it, but that would deprive you guys of the challenge of working it out yourself. So come on: tell me in the comments why they’re reproducing better now that they leave tree’s alone when they’re full! I’ll post what I think is the answer a few days from now.

Cheers
Qu

“Phenomenon”: singular. “Phenomena”: plural. And the “Phenomenamnicon” is a book used to summon a particularly vague eldritch abomination. Geez, it’s not that hard to remember!

, , , , , , , , ,

17 Comments

New Notable Forum Threads

Want more details about features and fixes in the upcoming sub-release? (I’ll try to get it out in a week or two)
0.4.1 Development Thread.

Want more details on the plans for the next big release? (might take a bit longer)
0.5.0 Development Thread

Details about known bugs in the game, and their status (fixed, not fixed, etc).
Known Bugs

(Note: Instructions on how to use the Mod Maker coming soon!)

, , , , , , ,

Leave a comment

A wild forum appears!

www.speciesgame.com/forum

I’m still working on getting the main site up and running (sorry, you’ll have to keep using MediaFire for the downloads), but I’ve got the forums up and running. Welcome to the community!

Unfortunately I’ll be offline for the next 48 hours, so you’ll have to entertain yourselves. Good luck with that.

, , , ,

Leave a comment