# xEricx

Member

684

1. ## Should all of the agent's rays be of the same length?

but the jerky movement still occurs with a slower turn rate, as shown in the last video. Could the following line cause a problem: avoidance -= agent.Velocity; I ask because it is not included in the OpenSteer source code but causes the agent to move way too fast without it. [/quote] Well, steering shouldn't make you accelerate over your maximum velocity. Everytime I've written a steering component (it's been a while though, so I might be missing some details) I made it return 2 things: 1) heading 2) braking factor The braking factor can be optional, depending on the feel you want to have. In the examples you showed, you just need to modify the heading of your cube. If I understand correctly in the code you posted destForward is steeringForce? If so, from what you posted you only use it to calculate a turn angle, how would it make the agent move way too fast? Have you tried clamping your velocity to your max velocity?
2. ## Should all of the agent's rays be of the same length?

It's always fun to "reinvent the wheel", but you can use existing "wheels" as a reference. Check out OpenSteer, it solves the dynamic avoidance problem and way more: http://opensteer.sourceforge.net/ Cheers
3. ## AI help for a game?

By asking such a broad question you had to expect broad answers... AI is concepts, so the type of code it's being developed for doesn't change a thing... As for massive 3-D complicating games?! well, it all depends on the game and which needs the project has. I guess a Massive Multiplayer Online Tic Tac Toe game would have the exact same AI your Console App can have, if you figure out how to search on the internet how to develop something as simple as TTT AI in the first place...
4. ## Neural Networks book for newbies.

Probably because the name sounds cool, like genetic algorithms
5. ## Neural Networks book for newbies.

The most simple book I've seen on this topic must have been Mat Buckland's AI Techniques for Game Programming You can start by giving his website a look: http://www.ai-junkie.com/ann/evolved/nnt1.html Hope this helps
6. ## Random fly movement

Keep it simple... like ApochPiQ suggested, go with splines or simple steering behaviors. Unless you're aiming to create a fly flight simulator, I don't think you have too much time to waste on this.
7. ## Scripts

This sounds a bit simple for a scripting engine. If you want examples of "professional" use of Lua, if I remember correctly WoW uses it for all of its plug ins... also the Far Cry PC demo shipped with all the scripts available in a zip file (I'm pretty sure it's a mistake)... but you can still check out how they handled things. See it more as inspiration than as a tutorial.

9. ## fingerpaint

I never developed for iOS but this should be one of the basic event you can handle and it's for sure in the documentation... did you search for more than 30 secs before posting here?
10. ## What kind of AI is used here?

In this case it's easy to see that they're using predefined spawning patterns following paths. You can spot that by the fact that every time the level is played, the same thing happens, there is no variation whatsoever, and the way the player moves doesn't affect what the enemies are doing. The only "decision making" there is where to fire...
11. ## Multi Array Directx C++

You have no speed or storage advantage in not using a contiguous block of memory. Simply wrap it with accessors that return [x + y*width] and you'll be easily be able to access it with x and y... I don't see why you need a 2D array.
12. ## XY Map class

Part of your problem (i didn't read the entire code) is that your TileNum should be something like X + Width * Y; Also, when you reserve your array you can then simply index it so when adding new tiles you'd use the same X + Width(Xsize) * Y to access elements of your vector. Hope this helps
13. ## Machine Learning with Multiplayer games

Exactly... and most Game Designers, as you stated, want to keep control over the NPCs so for most "professional" games, it's not an option. As for your point about "dumb opponents", keep in mind that most studios would let QA play with the game for a while, and package with the game whatever data came from this learning phase, so they would probably start off as quite good opponents. It's just too risky to rely on learning for a production that costs millions...
14. ## C++ macros

Avoid macros where possible.
15. ## Using arrays to create enemies...

If I can suggest something, as rip-off said, use a std::vector... but most importantly, use a data driven approach to place your enemies. XML could be a good option (check Tiny XML, that's quite easy to use)... I know this might not be "beginner friendly", but you'll see the benefit quite soon You'll be able to use your XML for many more settings and it will be easier when you'll decide to configure your Enemies (sprite, behavior, etc...) Hope this helps
16. ## *Confused* Pathfinding Approach

I'm sorry but I fail to understand how that's helping? I really don't see how you're handling mass, acceleration, speed or gravitation. One problem I see with that is that you need to simulate the movement during the pathfinding to have a proper cost for your node. This will most likely be too expensive.
17. ## *Confused* Pathfinding Approach

If you're in free space with shapes to avoid, take a look at steering behaviors, you might not even need path finding... http://red3d.com/cwr/steer/
18. ## *Confused* Pathfinding Approach

This will most likely not solve your problem, but might help out. What you need to understand, is that A* is nothing more than a shortest path algorithm that uses an heuristic to orient the search in a graph. Nothing more. What you CAN do, is have your heuristic take into account external factors, such as your speed, gravity, etc... and come up with different costs for each node of the graph. If you want your pathfinding to be fully 3D, your graph topology will need to reflect that... look into octrees. What's common is that you will tag EDGEs between nodes with a cost, so to move from node A to B, it costs 4 for example... if you have an obstacle that slows you down, make sure an edge goes through it and make its cost higher, like 6. Therefore, if it's shorter to avoid the whole thing, the path returned by A* will do it, otherwise it will go through the obstacle. I would advise that you first master pathfinding before trying to add parameters like your mass, acceleration, speed and gravitation. Hope this helps Eric
19. ## Recommended Ai Books And Sites

If I can add to this: http://www.cgf-ai.com/products.html William Van Der Sterren's web site (he's known for his terrain analysis) http://red3d.com/cwr/steer/ Craig Reynold's "Steering Behaviors For Autonomous Characters", useful for anyone implementing steering http://generation5.org/ The website is pretty much dead but it still contains tons of interesting articles http://www-cs-students.stanford.edu/~amitp/gameprog.html Amit Patel's page on game programming, contains interesting information on path finding
20. ## GDC AI Summit

Good job with the summit Dave, it was nice meeting you!
21. ## AI library

If you're asking this question maybe you lack knowledge about the field and are thus, unfit to write such library?
22. ## Steering Behaviors: Wandering problem

I don't mean to sound rude, but have you actually tried to debug your code? Step through the instructions and see what happens to your variables? You normalize WanderTarget, which means that it will be at exactly 1 unit from origin, you then scale it using a radius and add an offset to its X value (as Steadtler pointed out). If you read your return value line, you're substracting a LOCAL offset with a WORLD position. Seems like you should only be returning TargetLocal. Edit: Also you're normalizing a vector that could be of length 0 if Number or WanderJitter is 0...
23. ## Difference between hInstance and hWnd (and now other questions)

I'm not familiar with OpenGL but I'd assume an OpenGL typedef'd unsigned integer
24. ## Assassin's Creed

Thanks and good luck for the Assassination :) I'm not even that far in the game... hehe Camera systems for a 3rd person game can be a pain in the a**... especially when the player can go anywhere he wants :(
25. ## Assassin's Creed

Quote:Original post by Talroth May we ask what part of the work you did? (and are we likely to get an answer for it?) I mostly took over the camera system... redesigned parts of it and made it data driven. The end result is not as I would have wanted it but we had short time constraints. As for the article, its not going to happen as I resigned from my position at Ubisoft last week, so talking about their technology would be a big no no :( **Edit, didn't mean to take all the credit for the system...**