Game Development Community

What's next for Walkabout?

by Daniel Buckmaster · 03/13/2013 (4:01 am) · 21 comments

img69.imageshack.us/img69/8023/walkabouttitle.png

Greetings all! It's been ages since I've blogged about anything Torque-related (or at least, it feels like it!) and even longer since I updated Walkabout. A lot has happened since then - most obviously, Torque 3D going open-source! I now feel slightly shady for selling a commercial addon to an open-source project...

The Future

Like with jetpacks?

Yes, I'm here to talk about The Future. Where can I take Walkabout from here? I have tons of ideas, but I need help deciding! Below are a few of my favourite ideas, but I'd love to hear people speak up. If you own Walkabout, what would make you use it more? If you don't, what would make you buy it?

imageshack.us/scaled/landing/689/covergenerated.jpg
You may not have realised, but Walkabout can badly generate cover points for you.

  1. Detect water zones and adjust pathfinding as necessary. This means making use of some of the current options to enable/disable characters being able to walk through water. Ideally, I'd also have a 'swimming' mode that creates navmeshes across the water's surface instead of underneath it.

  2. Automate character animations when traversing off-mesh links. For example, if you have an off-mesh link through a window, you could specify a climbing animation - or a head-first dive, F.E.A.R. style! This would, unfortunately, require additional art in the kit...

  3. Automatically update the navmesh when you move objects around in the editor. I'd love to basically be able to lay down a navmesh and build it, then as I continue the edit the level, the navmesh automatically responds to objects that I create and move around. Walkabout already includes the ability to update the mesh based on objects being added and deleted, but I'd need to modify the editor to get callbacks for when objects are picked up and dropped.

  4. Make it work better with bigger meshes! This is a constant concern, though I think it's a conquerable problem.

  5. Improve the cover-point generation. At the moment it... sort of works, and it's not too bad in very predictable environments. But throw it something like the rocks above and it has a bad time. Of course, you can always add cover-points manually in the World Editor, but who wants to do that?

  6. Vehicle control for AIPlayers. Enough said.

The Present

There have been some minor problems reported in Walkabout's official help thread. Unfortunately I've been unable to actually live up to the thread title and help, but now I'm back and ready to hop to it. Some way of tracking known issues publicly might be a good idea to look into! I also want to try setting up a private repository so people can get beta access to what I'm working on, if there's any interest in that. The codebase as it stands seems robust, and now I can look forward to improving it and tightening it up even further.

One of the ways I'm improving Walkabout is by upgrading the Recast Resource. I'm working on an updated version that will be pull-requested and hopefully rolled into MIT3D.

Already, while trying to live up to the T3D Committee's demanding standards, I've been able to make the debug renderer more efficient and made redundant some changes to T3D's primitive renderer that I used to massage the interface with Mikko's Recast code into the shape I wanted it. So that will be ported back to Walkabout.

Thanks for reading!

And, as always, you can get Walkabout here.

About the author

Studying mechatronic engineering and computer science at the University of Sydney. Game development is probably my most time-consuming hobby!

Page «Previous 1 2
#1
03/13/2013 (5:17 am)
Welcome back! :)

My vote would go on;

1, 3, 4, 5 and 6 (couldn't decide - they are all good options!)

With the use of Walkabout I've added the ability for AI to collision detect what object they walk into and perform an animation such as a hurdle over an object. Far from perfect at the moment - decided on collision detection instead of a raycast for now - not sure on the cost implication this may have in the game with lots of AI. So if you can come up with something better - this has my main vote.

A while back we discussed in the forums; the ability to link two or more nav meshes together with maybe a link. This could be ideal for two terrains on a map, with a bridge and a big fall down into a river. Maybe a solution, if larger Navmeshes are a problem.

I've found changing the tile size on the walkabout settings, it helps when dealing with larger navmeshes.
#2
03/13/2013 (7:02 am)
Tbh Walkabout is already actually something am interested in but so far when lookin on a couple of addons for T3d
it is that they all focus mainly on 1 single thing
and that just prevents me personally from pickin it up.

now that single thing way might come in handy but
lets say you would expand Walkabout to be something more then just a navigation toolkit
along with your possible new features
-add controlable items
-doors
-elevators
and combine those with walkabout - expand it together
add extra behaviour types

i do hope that u get the bigger picture here, so far when i tried to express myself or make suggestions in this community it usually ended up with "This doesn`t fit in it" now is that really true

think twice
as later on the whole thing could be expanded even more
This is not about a make my game button.
#3
03/13/2013 (7:05 am)
Daniel... before I forget.. I couldn't find these scripts in R1 or R1P1...

walkaboutSpawn.cs
walkaboutDynamic.cs

Could you include them in the zip and I'll download it again when you get back to me. Thanks!
#4
03/13/2013 (8:20 am)
Cool stuff, Mr Buckmaster.

Maybe some sort of linking that works a bit like jump but has a dynamic bool for enabling/disabling - eg: locked doors, blocked pathway, etc.

Swimable water shouldn't be too difficult should it? Have the player settings float on the surface and have the navmesh find the water as a mask during navmesh generation?
#5
03/13/2013 (10:44 am)
Oh, and getting cover to work on terrain occlusion might be neat ... if awkward to develop.

I like scones too.
#6
03/13/2013 (3:31 pm)
I currently very much like TAIK, if it was able to work with that?

Number 2, sounds like a killer feature to me!

Number 5, cover points auto gen is really a cool feature too.

And as Steve mentioned cover from the terrain :-D!

Doors and lifts are in most games, so knowing how these things work could really be important to AI.
#7
03/13/2013 (4:49 pm)
I just want ai vehicles. Well, I want everything, but if I'm being forced to choose I'm going with vehicles.
#8
03/13/2013 (9:23 pm)
2, 4, and 5 sound like great additions to this pack Daniel.

I'm looking forward to what you have in store for this pack and I will probably be grabbing a copy at some point once I get back into the game development mood.
#9
03/14/2013 (6:42 pm)
Actually, after some thought I'm leaning towards cover generation. Cover points are a must have these days imo. Give me some cover!
#10
03/14/2013 (8:01 pm)
I would second Dan....cover AND ADD IN concealment.... Cover provides safety from incoming rounds, concealment provides a hiding place, not always safe from bullets.... Think brick walls versus bushes.....

Ron
#11
03/15/2013 (8:41 am)
Quote:
Tbh Walkabout is already actually something am interested in but so far when lookin on a couple of addons for T3d
it is that they all focus mainly on 1 single thing
and that just prevents me personally from pickin it up.

Ah, but what if you get an all-in-one pack that has all of the features you mentioned, but doors don't work the way you like and the elevators are difficult to configure? Then you have a pack that you have to modify (as you may anyway) but you have many systems that may be interdependent. Individual feature packs are better because you can test them separately, tweak them to your liking, then add the next pack.

Walkabout and Sahara, for instance. Both make engine-side changes and if there's a bug it might be hard to tell which pack is causing it. So I can make a new project and add one or the other to readily debug which is causing the issue. In a big, monolithic pack the up-front debugging task is huge.

Personally, I prefer one feature set per pack for this precise reason - I can test and study each in isolation, and when there is a problem I know which feature is causing it.
#12
03/15/2013 (3:30 pm)
Jules: adding custom animations to links could be helpful, for example, if you want characters to play a specific animation when they jump down a ledge. It also allows characters to traverse routes that are only allowed by a link, like windows (since the navmesh will not provide a path through a window without a link).

In terms of linking navmeshes, I'm very tempted to continue some old experiments I was doing in having a 'terrain nav' mesh which was very large and low-resolution, just enough to capture the detail of the terrain. When characters aren't in any other navmesh, they use the terrain mesh. This means they won't fall into canyons or try to walk over mountains that are too steep.

The .cs files you mention were in an early version, and I removed them but I think I forgot to update all the documentation. I was fairly sure I fixed that in R1P1, replacing those files with a tutorial on the relevant features. They didn't really have anything helpful in them. If you can download R1P1 you should have a tutorial that takes you through using the dynamic mesh updating script API.

J0linar: I hear what you say, and stuff like elevators and doors could be a great addition. However, with more and more features it becomes difficult to support the product, and to design it in a very modular way so that people can only use the parts of it that they want. I'll give this some serious thought, but for the moment I do still want to focus all my effort on making the navigation experience as good as possible.

Steve: being able to dynamically enable/disable links is on my internal list. I've yet to decide on a workflow for opening/closing doors and so on, especially since Torque doesn't actually have any support for doors in some standard way. I think dynamic links will be a good first step in that direction.

Terrain cover occlusion is an interesting ides. To be honest, I've never thought about it, but I'll see if I can find some way to fit it into the pipeline. You're thinking of taking cover behind the lip of a hill from people on the other side?

Edward: TAIK support is on my list. It will probably come in the form of a tutorial on how to modify the TAIK files to use Walkabout for navigation, the same as I did with the UAISK.

Dan: to some extent, the AI can already drive vehicles if they're slowish and not too different from how AI characters themselves should move. For example, a large mech/walker would work fine. Dealing with fast vehicles with a turning radius is a bit more difficult, and on second thoughts I might be a bit over my head with that ;P.

Ron: The problem is 'concealment' is a very tricky concept to deduce automatically. Individual games will handle these things very differently. Though I'll look at starting to support that, maybe by making a class for 'concealment points' or adding some meta data to cover points.


I'm surprised there weren't more votes for 3! It's something I've been wanting to do for a long time, but it's difficult (editor code blows my mind), so I might leave it on hold for a while longer.


In other news, I've been playing with NearlyFreeSpeech for webhosting, and I'm thinking of moving my site over there, which will hopefully alleviate those mailing issues!
#13
03/15/2013 (4:24 pm)
Daniel: Thanks - I was more interested in the following;

// Spawn a wanderer who stays within 10 metres of his spawn!
WalkaboutSpawnWanderer(DefaultPlayerData, "0 20 1", 10);

But couldnt see the files in R1, it was in the docs.
#14
03/15/2013 (4:28 pm)
Yep, I never finished implementing that function, and by the time I needed to release I decided it was too much to finish those example scripts! If you're interested I may finish them up and add them back in, or at least release them separately.
#15
03/15/2013 (4:32 pm)
Daniel - that would be most welcome! I'm just composing you an email, as I did come up with my own solution for this, but needed help with getting the xyz working with setPathDestination but had issues passing the position from a variable into a string with inverted commas. (tagged string)

Edit: may have resolved it with single quotes.
#16
03/16/2013 (11:38 am)
@Daniel Buckmaster, thx for considering the door/ lift/ enviroment part
However like some others asked for a TAIK integration howto would be nice and mostly welcome.
#17
03/18/2013 (9:48 am)
Having used it extensively, my biggest issue is getting it to generate meshes on large terrain [#4].

On the subject of #1, swimming would be the next I'd ask for and along with it, flying [yeah I know, that's a toughie].

#5 - goes without saying...

@Dan Webb: I've had it working with land-based vehicles for months - Walkabout isn't the issue as much as writing the vehicle-specific code and scripts to make it work. I have Cheetahs and hovertanks delightfully hunting down my player and fragging them with heat-seeking missiles... Sean Rice and I were just about to try adapting Drive to work with it, but we've held off because we're trying out different engines. There's quite an uphill struggle to get vehicles working well in Torque, and given the time we don't have, we're considering other options... We'll likely release some or all of our aiVehicle code, we're working out how to do that and how much time to put into it...
#18
03/24/2013 (6:23 pm)
I think my biggest issue right now is also generating meshes on large terrain (#4). Currently it likes to run out of memory and crash when it gets too large. While it's possible to get large terrains to work with it, the project gets a lot more complex, so my votes definitely for #4.
#19
03/24/2013 (6:41 pm)
Gibby: yeah, flying is interesting because it's completely off the navmesh. You can do limited flying with off-mesh links that represent 'you can fly from here to here', but actual aerial navigation would need an entirely new method of representing space. I've often thought about it, but I think it's beyond Walkabout's scope for now.

Patrick and everyone: sounds like my first order of business is to get large navmeshes working! Let's see what I can cook up this week...
#20
04/07/2013 (3:24 am)
Patrick / Daniel @ might be crashing when it exceeds the max number of tiles it can store in memory - ran into issues with that, but didnt crash in debug mode.
Page «Previous 1 2