Back in May '98, a group of five people found themselves a small office in Eastleigh and, under the guise of a new company called "io Productions", started work on a new game. Based around sheep herding.
Bear with me.
Originally our concept was more of an advanture-ish game where the player controlled a man and, indirectly, his dog, exploring landscapes to find animals to gather up and pen. The concept needed a bit of work, but we discussed having different setting (English countryside, Alpine valley, Artic wastes, etc.) with different animals in each. The idea of not directly controlling the animals that were your main objective was pretty novel at the time, and we spent a few months writing an initial test 3D engine for DirectX (I really was not a 3D coder at the time, so I remember having a lot of fun writing that!) and just getting 3D models from 3dsMax, via an ASE textual export format, through a parsing utility and into the game. Fortunately, although I had minimal experience with actually writing a renderer, 3D object placement and movement routines were a completely different kettle of fish - and a kettle I didn't find too complicated, so that side of things (placing the character on the ground, getting him to wander about and tilt, based on gradients... you know, the basic expected stuff) wasn't too tricky.
With a basic demo of things under our belt, John went looking for funding, and Infogrames stepped up, interested.
Farmer Blow and Shep the dog are herding a docile flock of sheep across an English meadow. How tranquil. This is pretty much how the the game was originally conceived.
Obviously back in '98 computing power was nowhere near what it is today, so poly counts and texture sizes were low by today's standards, but I think the artists did a great job with the landscapes and different animals.
I remember there was quite a bit of juggling of our concept between departments in Infogrames at the time. The game concept really didn't fit any pre-defined genres, so it's not surprising that the various departments really weren't sure how to place us. For us, though, the end result was that we ended up skewing our game in one direction and then another every few months as another department took a look. Thinking back now, I'm not too sure we had that definite an idea as to how to get from our initial concept to a full blown game anyway (i.e. what every level would be, how the difficulty curve would work, what the impetus behind continuing would be for the player, etc.), so I can see where these suggestions came from.
The project never did get completed and released. Two years on, and our five-man team had swollen to ten in house (4 artists, 3 programmers, 1 designer, 1 tester, and John managing the lot of us) as well as a contracted audio guy, contracted 3D engine guy, and lots of support from Infogrames staff. The game had turned into more of an on-rails animal-collection / checkpoint / puzzle / strategy game, an interesting combination of a lot of ideas, where the player started in a level selection hub (actually, a cute English airport setting), travelling to the various locations around the world to herd up animals that had become displaced from their natural habitats. It's a shame it never got completed as a lot of people put a lot of effort into it, and I think even now its concept is still filled with potential.
Shep was the main character for controlling the sheep. Farmer Blow was more of the action guy, opening gates and such. Here we see the our first checkpoint - an influence of the 'racing' direction the project took.
But it wasn't all English countrysides. We wanted an interesting range of locations even from the start, so here we find Shep herding some ostriches on Easter Island. Later on the stone heads shot lightning bolts from their eyes at passing creatures.
As mentioned above, I was really not at that time a 3D engine guy. With the engine in place, actually dealing with everything in 3D spacial coordinates? - fine! But actually throwing the polys and textures around? - not something I was too comfortable with back then. As a result, it was with a little relief that when we moved into proper full-scaled funded production of the game, we got someone else to deal with the 3D engine coding.
Obviously, this being pre-2000 and all, the poor artists had pretty small poly counts and texture allowances to work with, but nonetheless they always managed to come up with great end results. Each of the characters had a wide variety of animations, characters were split into sections and blended at runtime so it would, for example, ensure the farmer's feet stayed fixed to the angled surface he was walking on whilst his upper torso stayed generally upright; Shep's head would bark regardless of the body animation he was in; ... all basic stuff, I know, but you'd be surprised how a game looks when these things aren't there.
"Sit!" Farmer Blow could command his dog to perform several actions, such as here where Shep is just crouching so as to not startle the ostriches.
A closeup of the animal models again. The purple arrow is pointing in the direction we should be moving these creatures.
One of the key initial areas of my work when we went into full production. I think I must have completely rewritten the animal AI 3 times during development. Generally this was because the game had skewed in a slightly different direction, so, for example, to keep the pace up in the newer more frantic direction we were heading the animals had to be more tightly packed and less prone to wandering off.
Sidenote: Is it just me, or is it occasionally quite therpeutic to rip the guts out of game and replace them. The AI stuff I ended up rewriting was pretty heavily linked to almost every source code file we had at the time, so I remember several really late nights where, having ripped out the old AI, not a single file would compile any more. It's almost like ripping out someone's spine and replacing it with a newer, cleaner one. Terrifying if it's goes wrong, but...
Each type of animal had a bunch of characteristics (speed, intelligence, grouping tendency, weight, ferocity... originally, we had predators in the game, such as wolves, that the farmer would need to defend the animals from - that was a feature that was lost early on) that would affect their AI, both when being herded as well as when being left to do their own thing.
For each landscape, we generated some routing-assistance data (basically, which triangle was connected to which other), and Farmer Blow and Shep used this a lot in their movements. The player could directly control the farmer, but the dog was controlled by commands (stop, bark, circle to the left of the current herd, circle to the right). As a result, Shep often needed to be able to AI-route himself to where he was needed. We used a modified A* algorithm for this, and I know that when Slick came on board and took over the farmer and dog controls (along with the majority of the Dreamcast porting), he had a lot of fun getting this working right... Maybe "fun" isn't the right word.
Haha - I just remembered - I can't believe how much time, discussion and frustration went into one of our methods: "Face_UpDownOrLevel". All it needed to do was, from a certain perspective, determine if the triangle that was being referenced was going up, down, or staying level. I can't even imagine now why it was such a pain to write - looking at it now, it's only about 30 lines long, but sheesh, did it cause some frustrations!
Another fun area of coding for me was the camera AI. Now, camera coders in 3D games generally don't have a nice time - either their cameras work perfectly, in which case no-one ever comments on them (as is the way with things that just work in the backgrounds) or they catch on things and the coding gets lambasted. Fortunately, the camera code here wasn't hugely complicated - most of the gameplay was outside, so there's lots of space for the camera to do its thing in, and generally all the camera had to do was keep the current herd and the current primary character (the user generally controlled the dog or the farmer at any one time) on screen. If the secondary charcater was around, it would try and include them too, but that was about it. Of course, it did have its sticking points once we started some of the inside levels (such as one level that was inside a volcano), but generally it seemed to work okay, of which I was quite pleased.
Not everything was peaceful across the various landscapes, however. One of the fun enemies was an innocent looking stone block that would occasionally sprout legs and claws and turn out to be a menacing giant hermit crab - getting too close to this could kill your animals.
And in the snowy tundra, these polar bears had a tendency of gathering up snow and throwing massive snowballs at your animals, which could prove quite fatal.
All the levels setups and effects were script driven. This was a combination of animal, checkpoint, pickup, fence, and pen placements as well as the placements of the unique features for each level. These ranged from openable gates, geyser spouts, roaming tornadoes, flocks of bats that obscured the camera view, crumbling platforms, moveable lifts, snwoball-throwing polar bears, buses driving down the roads, killer whales leaping out the surf to eat animals, stone heads shooting lightning bolts from their eyes, even a fire-breathing dragon! All of this was accomplished through some pretty basic scripting ideas and an in-game level editor. Quite a lot of effort went into this so the basics of a lot of the levels could be generated without too much programmer intervention. Time well spent, I think.
Here we're driving the animals towards an ice covered slope. On it, the penguins would flop onto their bellies and slide down at high speed (I think you got bonus time if you get them to fly off the ramp at the end).
The level designs were very impressive, as you can see here from an in-game-editor shot.
The levels themselves were all scripted in text files, but using the in game editor you could pause the action, plonk down test animals, id landscape tiles (useful for setting pens and adding fences), find out spacial coords (if you wanted to add new pickups or animals in the scripts).
Magnetism pickup in full effect. It only lasted a small amount of time, but with this on the animals would run after the player and his dog instead of running away. Useful for gathering back up a scattered pack.
One of the earliest levels created was an Alpine valley level. It got scrapped in later game redesigns, but originally it had a lot of plumeting drops and steep slopes, as well as a bridge suspended high above the landscape. Of course, as traversing this with a herd was going be part of one of the levels, there was always the chance that the player or one of the animals would fall over the edge. Because of this, I ended up writing character physics code. This was in the days before complex physics engines, so I was quite delighted when it turned out that physics engine made a fun skiing / sliding game. Okay, so maybe not an entire game, but one of the artists quickly threw together a long ski ramp / tube level where the farmer and a bunch of penguins could slide and ski their way down to the bottom. It was quite fun, but didn't really fit the feel of the game we were going for. Some of the aspects of it did end up in the final game though, such as ice slopes on the arctic level that animals would slide down, and other such minor features.
There were some pretty perilous drops on some of the levels. Fortunately, the animal AI meant the animals didn't stray too close to them ... unless you were stampeding them, of course.
Water geysers that would spurt out of the holes in the gorund at regular intervals. Could be annoying as not only could it mean animals you were trying to herd could be thrown into the air, but so could your dog or farmer!
One of the other original features (at the time) that had a lot of time spent on it was the audio. We were working with the newly released DirectMusic API (which came out with DirectX 6.1) with the intention that different animals would have different musical tracks assigned to them and depending on how close to the camera and their level of activity, they were all the associated tracks of everything in the level would combine together to give a blended musical score that moved about in volume and 3D location to represent what was happening at any particular moment. Zim spent a lot of time on the audio and I think it sounded really good. Again, unfortunately, change in game direction meant that there wasn't too much variability for this any more (as the game was less explorative, there was less possibility of having features fade in and out), so it ended up being somewhat underutilised, which was a shame.
Another features that was added rather early on, but then sidelined as development progressed, was the idea of various multiplayer modes. Again, lots of time was spent on game synchronicity (think back to what kind of internet connections we had in '98 - we couldn't just send tons of data between the players frequently), and some cute ideas for multiplayer game modes got suggested (e.g. a 'football' game where each player had a 'goal' pen at their end of a pitch and controlled a man and dog each and with a handful of animals on the pitch they scored points each time they herded one into the opposing goal). Again, the work on this was pushed into the background, however, as the game's direction changed.
Stampeding elephants made the screen shudder with their pounding footsteps. As you can see, animals weren't limited to their native environments. Troubleshooter Blow would sort things out though!
That elephant sure looks startled! More great modelling by our artists.
Penguins in the desert!? What were we thinking...
Watch out for that edge Shep! Losing the herd could be a real setback if farmer or dog ended up falling off an edge to the ground below.
Yes, that a cow-sphinx. Well, what else were you expecting?
The desert level had some really dramatic lighting and shadowing on it.
The background hemispheres were all vertex coloured, not textured, so sky scenes like this took a lot of work by the artists!
And on the various levels there were times you'd play in the day, and other times you'd play at night. The moon on this level gave a great reflection in the sea, I remember.