| Game Name: | Sheep Herder 3D |
| Development Team Members: | - Katherine Hayton
- Sean Duggan
|
| Game Genre: | Sports / Puzzle |
| Brief Description: | Sheep Herder 3D is a sheep herding game. Surprisingly, this is not an entirely innovative choice of genre; there are numerous games available that model sheep herding. However, most of them are simple 2D Flash games, "coffee break" games that are to be played for a few minutes at a time. We intend to provide a more full-bodied game. And, as the title suggests, we plan to provide a 3D experience for the gamer. The basic conceit of the game is that you have a herd of sheep at point A. You want to get them to point B, preferably entirely intact. Therefore, the game could be said to fall into the "Save 'em up" genre popularized by Psygnosis's Lemmings although we feel that it is closer to Psygnosis's Creepers in that the primary interface is not directly manipulating the creatures themselves, but rather adding objects to the world to influence the sheep. |
| Game Story / Objective: | The objective is simple. You, as a godlike creature, want to get your sheep from point A to point B. The catch is that even sheep have free will, so you ned to find ways to convince them to go where you want them to go without directly manipulating them. Your primary method (and the only one implemented in this demo) is the sheepdog, who you direct by giving waypoints. |
| Game Mechanics + Controls: | The game is currently entirely driven by the mouse. Clicking a point on the terrain will add a new waypoint to the sheepdog's path. Right-clicking will remove the closest waypoint. The sheep will try to move away from the sheepdog but herding will override this instinct at further distances. |
| Technology: | Our most significant technological advance is the herding algorithm. While it is, at its heart, a very simple algorithm, it took a lot of tinkering with it to refine it to look mostly realistic. |
| Aesthetics: | We tended towards simplicity in the graphics. The world is largely composed of you, your sheep, and your sheepdog. The models were created by Katherine, as was the look of the world. |
| Three Greatest Challenges: | - Herding - Getting this to work right was, in many ways, a pain. First, the sheep would run in circles. Later, they kept getting stuck in each other. It took a lot of little tweaking in the parameters, as well as a few algorithmic changes, to make the herding work as smoothly as it does.
- Collisions - Getting the collision checking of Panda3D to work was a combination of trial-and-error and a lot of looking at examples. Initially, the sheep wouldn't move (turns out they were colliding with themselves). Later, we had issues with collision boxes randomly flashing due to the ground colliding with the sky. Eventually, we ironed it all out.
- User Interface - Initially, we had a palette dropdown from which you could select tools. First, we had trouble getting the menu to act separate from the rest of the world; it triggered collision detections just like all of the other objects. Then, well, we wound up with significantly fewer tools to work with. In the end, we removed the menu entirely so that the user can enjoy a more intimate environment with their sheep.
|
| Three things that went right: | - Herding - For all that it was one of our biggest technical problems, herding turned out very well. The sheep cluster believably and they scatter convincingly before the sheepdog.
- Graphics - Katherine did an excellent job of populating the world with believable models. I was worried that the models might turn out a bit stiff, but both the sheep and the sheepdog look a lot like the real thing and they move convincingly. I was worried about the sheep when they herded, since the original model required spherical sheep (cue engineering joke) but they turned out very nicely.
- General Fun - Sheep herding seems like a tough sell for kids raised on MMPORPGs and FPSs, but it's an amazingly addictive little game. I think it's the fact that you don't have direct control which makes it so much fun. Playing doesn't require hair-trigger reflexes or rigid tactics, just constant attention to the sheep and a general idea of where to move the sheepdog next.
|
| Three things that went wrong: | - Scheduling - Both Katherine and I had a fairly rigid class schedule such that we were seldom able to meet with each other. Furthermore, our respective homework loads restricted the number of hours we could put into the project and resulted in a lot of intensive last-minute coding sessions. Ultimately, it turned out fairly well, but I feel like we could have done much better if we had scheduled things out better.
- Tool / Framework problems - We had trouble getting collision detection working, as mentioned above. Part of the problem was our lack of understanding (and occasionally lack of official documentation) of the Panda3D collision classes. The other problem we encountered was that the version of Maya in the labs did not allow us to export complex collision shapes, which forced us to build collisions using simple shapes.
- Level Design - Levels were left off until the last day whereupon they became hardcoded in. The sad thing is that the level structure is so simple that we probably could have created text files with levels in them very easily. However, that would have taken an additional hour we didn't have due to prior scheduling problems.
|
| Lessons learned and/or things that you would have done differently: | - Scheduling - I know it's not a technical problem, but really, this was one of the biggest lessons learned. Even a little application like this requires scheduling and coordination if you want it done right.
- Level Loading - We need to build in basic functionality like level loading at the beginning so that it doesn't risk being scraped at the last moment because we spent all of our time tuning algorithms.
- Tool Learning - I know that I wound up solving a lot of problems by means of finding code others have used and pasting it in. There are still aspects of collision detection which I don't understand at all. I wish that I had spent more time learning the fundamentals of Panda3D so that I could better understand how the code works.
|
| Screenshots: | The herding algorithm used is based on real-world herding behavior. Namely, in the real world, herds form primarily because every animal is seeking to be at the center of the herd, where they are most insulated from predators. This can be easily modeled by having each animal look at the n closest creatures around it, and then move towards the center of that group. An example can be seen below. The red circle is the sheep we are calculating for. The green circles represent the six closest sheep to the given one. The location which the red sheep would head for is indicated by the arrow:

A screenshot of the C# herding concept application can be seen below. Form Buttons were being used as placeholders for the sheep and there was no collision detection:

Pictured below is a scene which employs the old sheep models and the carousel panda for a sheepdog:

A similar scene, but with the updated models:

Title Screen:

Showcasing Katherine's beautiful rolling landscape:

|
| (Optional) Download: | If you would
like to make this game available to download / open source then you can
feel free to link to it here. Note that this is not required for the
project report. Also, you can update this after the course is done.
Sheep Herder 3D - Panda3D Source Code |