Horrible Places
by Daniel Buckmaster · 08/02/2009 (9:17 pm) · 10 comments
It’s been a while since I last blogged, and I was announcing a rather exciting thing: my replacement of the stock Player movement code to make way for something hopefully more realistic and exciting. That’s still simmering away, with most of the main changes done, but needing fine-tuning, tinkering, and finishing touches.
I’m frankly not ready to show it yet – and that’s not even anything to do with the lack of an example character with the right animations and such. (That reminds me of another project I talked about a while ago and never mentioned again – the scripted animation manager is still alive, I promise!) But I’ve been pondering something for a while, and I thought I’d tell people about it to see if they were excited.
I was playing a lot of Stalker a little while ago, which inspired me to recreate that sort of environment in Torque. Something with a little ambience, like ths:
From Stalker: Shadow of Chernobyl
But my project at the moment doesn’t really require any of that specific content, so I figured I’d make an environment pack out of it, if my produce turns out good enough to sell. The pack will be showcased in a demo level. I was thinking of styling the level around a little abandoned hamlet on the edge of a forest in the hills. The level would be based around triggers to show off cool things, like ambient noises, swarms, and a gravity storm. Here’s the list of art I want to include in the pack:
-Two or three ruined houses
-Grass sprites, healthy and dead grass, in low and high resolution
-Several dead trees and several spooky-looking live trees
-Several dead shrubberies?
-A double-handful of detail objects like weather vanes, kitchen utensils and outdoor tools, and furniture
-Assorted warning signs and fences
-A few wild animals
-Two skies and assorted clouds
-Terrain and textures, of course
But an environment pack alone isn’t much good if you want a Stalker-style setting – I imagine a lot of stuff going on in that setting that would require code changes. To that end, I’ll also be making a code pack as well, adding some extra functionality to the engine to allow you to create nightmarish environments. Before I go on, I should mention that the code pack will be free, but the environment pack will be charged for. Why? I most likely won’t be using any of the art assets I make in my game – its setting just isn’t right for the environment I want to create right now. However, I will be using the code in my game. What does that include? I see it this way: if I’m giving something to the community that I won’t be using myself, I’d like to receive something for the effort. On the other hand, the things which I will be using will be their own reward. Also, I like packs that include code, but I have no need for the art in them; this way, people who want art can get just the art; people who want code can get just the code, and user their own art.
Anyway, a code pack. I thought the following things would be useful:
Global, dynamic gravity and wind
Both the gravity and wind in a level will be managed as objects in the Mission Editor. Scripts can set the strength and direction of wind and gravity in real-time. Also, the wind makes noise. (Note that water blocks will not be affected by gravity, I'm pretty sure :P.)
More things that hurt you
I’m not quite sure how I’ll manage this, but eventually both particle emitters and precipitation will be able to do damage to things they collide with. Also, if this isn’t already possible, I’d like to add some more dynamism to precipitation, allowing you to turn rain on and off, vary the strength, etc. Fog layers will also be able to do damage to characters who enter them.
Breathing
A breathing system linked to a GUI control makes walking underwater that much more stressful. It also kicks in when you’re in a fog layer that will damage you and can be fully script-controlled for other situations. I don't know whether to include simple swimming code, but I'll think about it.
Swarms and flocks
Swarms of insects and flocks of birds are provided as example uses of a new swarm class based off the fxSwarm resource.
Dynamic sky and sun
Both the sky and sun can be altered in appearance in real-time. This doesn’t include moving the sun, just changing its colour and brightness. The sky can dynamically change the images used for each of its six sides and cloud layers, with a time delay and blending.
Lightning
Lightning can do damage, and will cast light where it strikes. If it doesn’t do that already. I need to do some research.
Spooky eyes
Not an amazing feature, but I’ve always wanted to add some spooky eyes in the bushes that disappear when you look at them. This can be extended to objects that do all sorts of things while your back is turned.
Fauna
What horrible environment is complete without packs of roaming wild dogs? That try to bite your knees off?
Ambient sound
This is a tentatively planned feature, a ‘wouldn’t it be cool?’ sort of thing (along with spreading fire). The idea is for interior instances to play ambient sounds when players move around in them – creaking floorboards, ringing metal, etc. These could be synchronised with the player’s footsteps, or played semi-randomly, given time delays and variation, linked to certain materials in the interior, and whatever else I can think up.
Other stuff
I plan on integrating and making use of a few resources, such as Thomas Lund’s message router system, and Orion Elenzil’s radial force physical zones.
You could call this WarEngine code pack 1, because I've always intended for these sorts of features to be included in the WarEngine.
Now, I know I’ve made some big plans like this before, and not much has been produced. I’d like to think this is the start of me getting organised. Anyway, the real purpose of this blog is to gauge interest for a combined pack like I described – a free code pack with environmental features, and a priced content pack with a sample environment making use of the code changes. Do the code features seem useful? Would you like to see an environment in the style I’ve described? If the interest isn’t there, I may as well not bother with the environment pack, and just focus on the coding work. I’d also like your opinions on whether a big code pack is the way to go, or whether I should release each separate piece as its own resource. I’ll be implementing it in a modular way at any rate, so you can pick and choose pieces – it’s just the format of its release that I wonder about.
Thanks for reading.
Oh. Just in case this blog wasn’t long enough already, I’ll give you a little update on all that stuff I was promising last time. I am still working on it, but not actively. I’m in a rather tricky situation in real life, with the family moving countries and myself figuring out university – the upshot it, I’m programming on a netbook, which can’t run games worth a damn.
Right. The stuff I promised.
Basically, I’ve decided to curtail my use of springs somewhat. While they’re useful for legs (I think I’ve got them just where I want them, in that regard), they’re not so hot for arms. So for mantling, I’ve come up with a solution that I really should have thought of ages ago. What is mantling? It’s a jump. So why not make the player jump to mantle? Same thing with vaulting. Combined with a body animation, IK for the arms to look pretty, and there you have mantling.
I’m also looking at having an animated collision hull to account for multiple stances, rather than having to process multiple hulls for each character. Because if you think about the case where a player jumps at a ledge and connects with it halfway up his thighs. At the moment, my collision hull only covers the body. So that’s a miss. The leg springs only start at the knees, so that’s a miss as well. I can’t extend the collision hull downwards, because then if the character crouched, their hull would be touching the ground and the springs wouldn’t get a say in it. So I’d like to be able to animate the bottom of the hull, instead of adding another separate hull for the upper legs.
If I can find a way to optimise multiple-hull collision, though, that would be my preferred option. It’s more intuitive and provides some useful functionality, like having different collision responses for different hulls.
Then once I figure that out, I have to finalist my changes to the OrangeGuy and actually create all those damn animations. Fun, fun, fun.
Okay, that’s really all. Bye now.
What? No Toni? The poor guy must be shattered.
Sorry for the dearth of images.
I’m frankly not ready to show it yet – and that’s not even anything to do with the lack of an example character with the right animations and such. (That reminds me of another project I talked about a while ago and never mentioned again – the scripted animation manager is still alive, I promise!) But I’ve been pondering something for a while, and I thought I’d tell people about it to see if they were excited.
I was playing a lot of Stalker a little while ago, which inspired me to recreate that sort of environment in Torque. Something with a little ambience, like ths:
From Stalker: Shadow of ChernobylBut my project at the moment doesn’t really require any of that specific content, so I figured I’d make an environment pack out of it, if my produce turns out good enough to sell. The pack will be showcased in a demo level. I was thinking of styling the level around a little abandoned hamlet on the edge of a forest in the hills. The level would be based around triggers to show off cool things, like ambient noises, swarms, and a gravity storm. Here’s the list of art I want to include in the pack:
-Two or three ruined houses
-Grass sprites, healthy and dead grass, in low and high resolution
-Several dead trees and several spooky-looking live trees
-Several dead shrubberies?
-A double-handful of detail objects like weather vanes, kitchen utensils and outdoor tools, and furniture
-Assorted warning signs and fences
-A few wild animals
-Two skies and assorted clouds
-Terrain and textures, of course
But an environment pack alone isn’t much good if you want a Stalker-style setting – I imagine a lot of stuff going on in that setting that would require code changes. To that end, I’ll also be making a code pack as well, adding some extra functionality to the engine to allow you to create nightmarish environments. Before I go on, I should mention that the code pack will be free, but the environment pack will be charged for. Why? I most likely won’t be using any of the art assets I make in my game – its setting just isn’t right for the environment I want to create right now. However, I will be using the code in my game. What does that include? I see it this way: if I’m giving something to the community that I won’t be using myself, I’d like to receive something for the effort. On the other hand, the things which I will be using will be their own reward. Also, I like packs that include code, but I have no need for the art in them; this way, people who want art can get just the art; people who want code can get just the code, and user their own art.
Anyway, a code pack. I thought the following things would be useful:
Global, dynamic gravity and wind
Both the gravity and wind in a level will be managed as objects in the Mission Editor. Scripts can set the strength and direction of wind and gravity in real-time. Also, the wind makes noise. (Note that water blocks will not be affected by gravity, I'm pretty sure :P.)
More things that hurt you
I’m not quite sure how I’ll manage this, but eventually both particle emitters and precipitation will be able to do damage to things they collide with. Also, if this isn’t already possible, I’d like to add some more dynamism to precipitation, allowing you to turn rain on and off, vary the strength, etc. Fog layers will also be able to do damage to characters who enter them.
Breathing
A breathing system linked to a GUI control makes walking underwater that much more stressful. It also kicks in when you’re in a fog layer that will damage you and can be fully script-controlled for other situations. I don't know whether to include simple swimming code, but I'll think about it.
Swarms and flocks
Swarms of insects and flocks of birds are provided as example uses of a new swarm class based off the fxSwarm resource.
Dynamic sky and sun
Both the sky and sun can be altered in appearance in real-time. This doesn’t include moving the sun, just changing its colour and brightness. The sky can dynamically change the images used for each of its six sides and cloud layers, with a time delay and blending.
Lightning
Lightning can do damage, and will cast light where it strikes. If it doesn’t do that already. I need to do some research.
Spooky eyes
Not an amazing feature, but I’ve always wanted to add some spooky eyes in the bushes that disappear when you look at them. This can be extended to objects that do all sorts of things while your back is turned.
Fauna
What horrible environment is complete without packs of roaming wild dogs? That try to bite your knees off?
Ambient sound
This is a tentatively planned feature, a ‘wouldn’t it be cool?’ sort of thing (along with spreading fire). The idea is for interior instances to play ambient sounds when players move around in them – creaking floorboards, ringing metal, etc. These could be synchronised with the player’s footsteps, or played semi-randomly, given time delays and variation, linked to certain materials in the interior, and whatever else I can think up.
Other stuff
I plan on integrating and making use of a few resources, such as Thomas Lund’s message router system, and Orion Elenzil’s radial force physical zones.
You could call this WarEngine code pack 1, because I've always intended for these sorts of features to be included in the WarEngine.
Now, I know I’ve made some big plans like this before, and not much has been produced. I’d like to think this is the start of me getting organised. Anyway, the real purpose of this blog is to gauge interest for a combined pack like I described – a free code pack with environmental features, and a priced content pack with a sample environment making use of the code changes. Do the code features seem useful? Would you like to see an environment in the style I’ve described? If the interest isn’t there, I may as well not bother with the environment pack, and just focus on the coding work. I’d also like your opinions on whether a big code pack is the way to go, or whether I should release each separate piece as its own resource. I’ll be implementing it in a modular way at any rate, so you can pick and choose pieces – it’s just the format of its release that I wonder about.
Thanks for reading.
Oh. Just in case this blog wasn’t long enough already, I’ll give you a little update on all that stuff I was promising last time. I am still working on it, but not actively. I’m in a rather tricky situation in real life, with the family moving countries and myself figuring out university – the upshot it, I’m programming on a netbook, which can’t run games worth a damn.
Right. The stuff I promised.
Basically, I’ve decided to curtail my use of springs somewhat. While they’re useful for legs (I think I’ve got them just where I want them, in that regard), they’re not so hot for arms. So for mantling, I’ve come up with a solution that I really should have thought of ages ago. What is mantling? It’s a jump. So why not make the player jump to mantle? Same thing with vaulting. Combined with a body animation, IK for the arms to look pretty, and there you have mantling.
I’m also looking at having an animated collision hull to account for multiple stances, rather than having to process multiple hulls for each character. Because if you think about the case where a player jumps at a ledge and connects with it halfway up his thighs. At the moment, my collision hull only covers the body. So that’s a miss. The leg springs only start at the knees, so that’s a miss as well. I can’t extend the collision hull downwards, because then if the character crouched, their hull would be touching the ground and the springs wouldn’t get a say in it. So I’d like to be able to animate the bottom of the hull, instead of adding another separate hull for the upper legs.
If I can find a way to optimise multiple-hull collision, though, that would be my preferred option. It’s more intuitive and provides some useful functionality, like having different collision responses for different hulls.
Then once I figure that out, I have to finalist my changes to the OrangeGuy and actually create all those damn animations. Fun, fun, fun.
Okay, that’s really all. Bye now.
What? No Toni? The poor guy must be shattered.
Sorry for the dearth of images.
About the author
Studying mechatronic engineering and computer science at the University of Sydney. Game development is probably my most time-consuming hobby!
#2
-Price... not on my budget :P. Maybe when I get a job. Or if lots of people buy my pack ;)
-Licencing, I want to be able to distribute the tools to support modders
-It's just not necessary for a hobbyist
Anyway, I would fully support anyone who did want to port my code upwards - I believe that's easier than writing it for T3D in the first place then porting downwards. I just wouldn't be able to help them much ;P
And about Stalker, you're totally right - no other game I've played had so much atmosphere everywhere you went. The game had its faults, but they certainly weren't to do with the level design!
So, with regards to fauna, how complicated would you like it? I was thinking of writing a class similar to AIPlayer, but with more logic built in (a finite state machine), simple animation handling, etcetera. It would be suitable for enemies like you encounter in Stalker - wild dogs, mutants, and maybe even something like a Bloodsucker (but they're pretty simple, really :P).
The FSM would cope with basically resting, wandering, hunting, attacking and fleeing. There'd be some personality members to tweak the transitions to these states, and lots of script callbacks to allow you to do things like make the creature leap, howl, change states or do other things script-side.
08/03/2009 (2:12 am)
No T3D for me, because:-Price... not on my budget :P. Maybe when I get a job. Or if lots of people buy my pack ;)
-Licencing, I want to be able to distribute the tools to support modders
-It's just not necessary for a hobbyist
Anyway, I would fully support anyone who did want to port my code upwards - I believe that's easier than writing it for T3D in the first place then porting downwards. I just wouldn't be able to help them much ;P
And about Stalker, you're totally right - no other game I've played had so much atmosphere everywhere you went. The game had its faults, but they certainly weren't to do with the level design!
So, with regards to fauna, how complicated would you like it? I was thinking of writing a class similar to AIPlayer, but with more logic built in (a finite state machine), simple animation handling, etcetera. It would be suitable for enemies like you encounter in Stalker - wild dogs, mutants, and maybe even something like a Bloodsucker (but they're pretty simple, really :P).
The FSM would cope with basically resting, wandering, hunting, attacking and fleeing. There'd be some personality members to tweak the transitions to these states, and lots of script callbacks to allow you to do things like make the creature leap, howl, change states or do other things script-side.
#3
If you need help with any porting, let me know. I'll gladly help out! Hopefully a Torque 3D port would get you the funds to be able to license it sooner - I can't wait to see what you'd do to Torque on that platform!
08/03/2009 (3:59 am)
@Daniel, I really can't wait to see more info about your player movement changes (and the scripted anim manager!).If you need help with any porting, let me know. I'll gladly help out! Hopefully a Torque 3D port would get you the funds to be able to license it sooner - I can't wait to see what you'd do to Torque on that platform!
#4
08/03/2009 (9:59 am)
It would be nice if the Players gun shots scarred the animal/beast like in real-life and a state machine with all the behaviors would be nice.
#5
Everything you mention sounds awesome! Asset pack with optional/free code pack sounds like a great idea.
There was a wildlife pack from 3d-Diggers that had adjustable needs/wants for the different critters. The animals would wander in search of food and would sleep. Some would flee from people, others would attack and even hunt players and/or other critters. Despite how simplistic it was, there was a great amount of variation available from a few simple rules.
And about the lightning. So long as your using TGE, check out the weather lightning as opposed to the regular lightning. It has the capability of flashing the scene... but I believe it simply highlighted the clouds. You could probably predict the strike point and create a short lived light there. At one time I had figured out the trick to using strikeTextures but don't recall the setup for it. That was much more better looking than the procedural lightning effect.
When the time comes, just like Konrad I would offer to help port things over to Torque 3D.
And hope we hear more about your player setup and animations without such a wait next time ;) Nah, I know, just keep at it and you'll find yourself ever closer to a finishing point.
08/03/2009 (11:33 am)
Just say no to Toni! ;)Everything you mention sounds awesome! Asset pack with optional/free code pack sounds like a great idea.
There was a wildlife pack from 3d-Diggers that had adjustable needs/wants for the different critters. The animals would wander in search of food and would sleep. Some would flee from people, others would attack and even hunt players and/or other critters. Despite how simplistic it was, there was a great amount of variation available from a few simple rules.
And about the lightning. So long as your using TGE, check out the weather lightning as opposed to the regular lightning. It has the capability of flashing the scene... but I believe it simply highlighted the clouds. You could probably predict the strike point and create a short lived light there. At one time I had figured out the trick to using strikeTextures but don't recall the setup for it. That was much more better looking than the procedural lightning effect.
When the time comes, just like Konrad I would offer to help port things over to Torque 3D.
And hope we hear more about your player setup and animations without such a wait next time ;) Nah, I know, just keep at it and you'll find yourself ever closer to a finishing point.
#6
Anyway, are you thinking TGE or TGEA for this? I'll drop you an email, maybe we have some common aims.
08/03/2009 (11:36 am)
@Daniel, I love the spooky eyes idea, especially the bit about them disappearing when you look straight at them. That's exactly the kind of quirky touch that made Shadow Of Chernobyl a work of genius, like the poltergeists in the underground labs. I've lost count of the hours I've spent playing that game.Anyway, are you thinking TGE or TGEA for this? I'll drop you an email, maybe we have some common aims.
#7
With regards to T3D, I don't know how much I actually would use it, given that my project at the moment is not making use of it. But certainly in the future, I'd like to see what it has to offer.
OmegaDog: I was intending to make a weaponless demo level, so you'd actually have to avoid the dogs and stuff ;P. But I was also thinking about including a shotgun image, so I think I'll go with that so I can demonstrate how to make sounds scare the animals.
Michael: The animal stuff sounds like exactly what I want to do. I'll see what I can find out about it, but I've got a lot of ideas already.
Thanks for the lightning info - I haven't done any research on it yet, so thanks for the head-start. Adding the ability to use strikeTextures sounds like a good aim as well.
Thanks to you and Konrad for offering to port this, I'd love to work on that *eventually* ;)
Adrian: Good to know someone will appreciate that feature! I've always loved the idea of doing something like that, but I didn't know whether it was kind of a random luxury that isn't too useful to people. Either way, I hope the packs will include enough other stuff that random luxuries are welcome, instead of being questionable uses of my time :P
I'm only a TGE licensee at the moment, so I'll definitely be making the pack with that engine in mind. I do intend to upgrade to TGEA soon, though, and port the packs myself, if nobody else wants to take that load off my hands ;P. Anyway, I'd love to hear from you!
Thanks for the feedback, guys! It's very encouraging... and probably exactly the motivation I need to really finish off my Player stuff.
08/03/2009 (4:12 pm)
Konrad: Okay, seems I need to get back to work on that! I'll be in my temporary permanent home (:P) soon, so I'll have access to a decent computer. The Player stuff is really what I'm most excited for at the moment, so you can be assured I'll be getting right onto it.With regards to T3D, I don't know how much I actually would use it, given that my project at the moment is not making use of it. But certainly in the future, I'd like to see what it has to offer.
OmegaDog: I was intending to make a weaponless demo level, so you'd actually have to avoid the dogs and stuff ;P. But I was also thinking about including a shotgun image, so I think I'll go with that so I can demonstrate how to make sounds scare the animals.
Michael: The animal stuff sounds like exactly what I want to do. I'll see what I can find out about it, but I've got a lot of ideas already.
Thanks for the lightning info - I haven't done any research on it yet, so thanks for the head-start. Adding the ability to use strikeTextures sounds like a good aim as well.
Thanks to you and Konrad for offering to port this, I'd love to work on that *eventually* ;)
Adrian: Good to know someone will appreciate that feature! I've always loved the idea of doing something like that, but I didn't know whether it was kind of a random luxury that isn't too useful to people. Either way, I hope the packs will include enough other stuff that random luxuries are welcome, instead of being questionable uses of my time :P
I'm only a TGE licensee at the moment, so I'll definitely be making the pack with that engine in mind. I do intend to upgrade to TGEA soon, though, and port the packs myself, if nobody else wants to take that load off my hands ;P. Anyway, I'd love to hear from you!
Thanks for the feedback, guys! It's very encouraging... and probably exactly the motivation I need to really finish off my Player stuff.
#8
08/03/2009 (6:21 pm)
Sounds great will keep a lookout for your next blog!
#9
Shakey breaky if donkey, as they say in the Zone
08/04/2009 (5:15 am)
@Daniel, dropped you an email to your gmail early yesterday evening, let me know if you didn't get it - adrianw.uk@googlemail.comShakey breaky if donkey, as they say in the Zone
#10
I've been doing a little more thinking about what sorts of environments people might want to create with a code pack, since they won't necessarily be going for my Stalker-inspired isolated-hamlet-with-supernatural-goings-on. That led me to think of a few new features:
Player movement changes per material
Mud and snow will be able to slow characters' acceleration and limit their top speed. Hopefully I'll be able to get the same effect working for vehicles. Also, quicksand?
Dangly bits
I'd already planned to create some simple, non-networked soft-body physics for the WarEngine. This could be applied to hanging foliage, ropes and chains, etc. However, I wonder whether it'll be a particularly useful feature for many people - and if it is, they may have already gotten it with the GMK or another physics library implementation.
Ice
Ice is placed like a WaterBlock, but it can be walked on. I'd also like to make it breakable.
I also realised, after playing a little with the engine (running at at least 1 FPS... fantastic), that changing the sun colour requires a relight. For some reason I thought this wasn't the case. Since background relighting is a little beyond me, I think I'll be cutting the dynamic sun feature from the pack - but the dynamic sky will hopefully remain.
You can ask Adrian about dynamic sun lighting ;)
Shakey brakey if donkey, indeed.
08/04/2009 (9:34 pm)
Adrian - replied, sorry for the delay.I've been doing a little more thinking about what sorts of environments people might want to create with a code pack, since they won't necessarily be going for my Stalker-inspired isolated-hamlet-with-supernatural-goings-on. That led me to think of a few new features:
Player movement changes per material
Mud and snow will be able to slow characters' acceleration and limit their top speed. Hopefully I'll be able to get the same effect working for vehicles. Also, quicksand?
Dangly bits
I'd already planned to create some simple, non-networked soft-body physics for the WarEngine. This could be applied to hanging foliage, ropes and chains, etc. However, I wonder whether it'll be a particularly useful feature for many people - and if it is, they may have already gotten it with the GMK or another physics library implementation.
Ice
Ice is placed like a WaterBlock, but it can be walked on. I'd also like to make it breakable.
I also realised, after playing a little with the engine (running at at least 1 FPS... fantastic), that changing the sun colour requires a relight. For some reason I thought this wasn't the case. Since background relighting is a little beyond me, I think I'll be cutting the dynamic sun feature from the pack - but the dynamic sky will hopefully remain.
You can ask Adrian about dynamic sun lighting ;)
Shakey brakey if donkey, indeed.

Associate OmegaDog