The Rebel Planet - a great looking 3DGS title. Some say it's the best 3DGS game ever. Peter Churness kindly took the time to answer my questions.
Q: Who is creating TRP?
A: The Rebel Planet is actually two projects in one. My partner Tom Hilpert
and I (Peter Churness) have together developed the fantasy world
behind our story. Tom is then taking the world and story and writing
books while I work on creating computer games based on the same fantasy
world and storyline. So, on the game side the project feels largely like
a solo effort. However, that is misleading because of the many many people
who have contributed significantly to the project. The following is a
list of those from the 3DGS community who have contributed to the project:
Blattsalat, Rhuarc, AccessPhenomenon, light_mystic, FrankG, Bernd Schaumburg,
Miguel, Joey, Matt Coles and I’m sure a number of others I’ve
missed in this listing.
Q: Can you tell us a few words about TRP’s
story?
A: The Rebel Planet Series is a fantasy RPG, so shades of the story are
pretty standard to that genre (i.e. our main character Orion just thinks
he’s a normal guy but finds out he’s special in some way and
in the end discovers his significant role in destroying the evil arch-nemesis).
What sets our fantasy world apart and really makes it relatively original
I think is our setting. We’ve set the game in the mysterious world
of Earth’s ancient past prior to the biblical flood of Noah. We’ve
developed a tremendous amount of depth to the fantasy world by writing
up a rich fictional “history of the ancient world” and incorporating
it into the gameplay. The game story also has an underlying Christian theme
concerning the nature and existence of evil and God’s rescue mission
to save humanity. However, the game is not “preachy” and those
who want to just play the game and have fun with it without delving much
into some of the meanings behind the story are welcome and encouraged to
do so.
Q: How did you create the vegetation?
A: I used TreemagikG2 and Plant-Life
which are relatively inexpensive tools you can get at www.aliencodec.com.
Q: What tricks did you use in order
to keep a decent frame rate in your highly detailed levels?
A: What did it for us was breaking down
the larger levels into smaller “sub-levels”. For example, the first
of the game's seven levels is broken down into 10 exterior and 20 interior
sub-levels. Some sub-levels are as small as the interior of a one room house.
Others are
bigger but still of manageable size. Each exterior sub-level is about 10,000x10,000
quants. So the entire first level exterior is comprised of 10 of these exterior
sub-levels connected by portals which load in the next sub-level when you reach
them. And running into the door of a house will load the interior sub-level
of that house.
Q: What type of AI are you using?
A: For pathfinding, the code is
all based off your great Perfect Pathfinding articles of a few issues back
(thanks George!). As for the rest of the AI, I use two “stacks” or “queues” which
keep track of what an NPC is doing. One is a travel stack and the other
is a task stack. These work in concert to keep track of where an NPC is,
where he’s going and what he’s doing. In this way I’ve
been able to create a world in which most of the NPC’s use the same
functions and go about their daily lives independent of the player.
Q: Please name a few freeware / cheap
game development tools that you find to be really useful.
A: Easy Particle 3, FontGenerator, Newton Game Dynamics and I already
mentioned the vegetation tools above.
Q: Could you describe an important feature
in your game and how did you implement it?
A: I mentioned earlier how our levels are broken down into many sub-levels.
Many games do this, Morrowind being one that comes to mind. But something that
always frustrated me about Morrowind was how you would walk into a cave sub-level
and start fighting some creature and then run away exiting the interior sub-level
into the exterior sub-level. Then you could go back into that same cave 10
minutes later and the creature would be at the exact same place where you left
it. For Rebel Planet I wanted to make the world more dynamic than that.
So I’ve
managed to make it so that NPC’s are as free to move about sub-levels
as the player is. If you fight a creature in one sub-level and run away, the
creature will follow you into the next sub-level. Also, NPC’s have a
life of their own. They sleep in one sub-level and go to work in another and
even hang out at the pub after work before heading home for the night. To accomplish
this I’ve implemented a kind of LOD for AI. What this means is that NPC’s
who are in other sub-levels than the one the player is in, can still travel
through their sub-level in real-time and even make decisions, but at a lower
cost to the CPU. For example, if the NPC is not in the same level as the player,
the player doesn’t care at exactly which point between A and B the NPC
is currently at. However, the travel stack keeps track of the exact time at
which the NPC will arrive at point B. But if while the NPC is traveling between
point A and B the player suddenly enters the sub-level, the more detailed AI
kicks in and the NPC will appear at the precise point between A and B that
you would expect him to be given the time that has gone by.
Q:
Please give us a few tips for the beginners.
A: If I had to do it all over again I would definitely have started out with
a smaller project than this one. Rebel Planet will get finished, but its taking
much longer than I thought it would when I started out. So my advice would be
to give yourself a small manageable project that you know you can finish in six
months to a year. Once that is done, move on to something a little bigger. Also,
make use of the amazing 3DGS community we have here. I’ve been amazed at
how eager folks are to help out or answer questions. The community here is 3DGS’ greatest
strength. And finally, never give up. Just keep moving forward. When I get frustrated
at the progress of our game or discouraged that the game is
not looking or playing as good as I think it should, I just look at the status
of the project a year ago and see how far it has come. The only way it has come
this far has been by many many small incremental improvements, but they all add
up over time. Keep moving forward and don’t get discouraged if the progress
seems slow. And now really finally, never stop having fun with it. Once your
project becomes just something you’re trying to finish and not something
you really enjoy, you suddenly lose your creative edge. If you’re not having
fun making it, there’s a good chance people will not have fun playing it.
Thank you a lot, Peter.