Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 4 years ago.
Improve this question
I would like to learn about games (strategy) algorithms especially about how do
enemies algorithms works ?
Is there any good place for beginners?
There are many aspects for AI in strategy games, but keep in mind that there is a big difference between Realistic AI and AI that makes a game fun to play. Cheat where you can while not making it obvious to the player that the enemy is cheating.
AI Game Programming Wisdom books
http://www.aiwisdom.com/
AI Game Programming Wisdom
AI Game Programming Wisdom 2
AI Game Programming Wisdom 3
AI Game Programming Wisdom 4
Also gamedev.net has a huge collection on AI articles and a good forum with lots of information. (http://www.gamedev.net)
Game Programming Gems feature a section on AI as well, but when AI is what you want, go with the AI Game Programming Wisdom books.
Here is an overview on RTS specific articles: http://www.aiwisdom.com/ai_genrerts.html
Also look at Pathfinding, possibly some neural networks / genetic algorithms when you want to play with that, although it might be a bit overkill when you're just starting out.
Firstly you need to learn about AI. Secondly it comes down to designing an algorithm that has the computer compete against a human player (it has goals and actions to complete the goals)
This may be a good start.
Wow, that's quite the question.
I'd start with the O'Reilly book, 'AI for Game Developers'.
Also explore the Game Programming section on Amazon.com. There's a lot out there on strategic computation, game theory, random responses, etc.
For beginners, I'd really recommend Mat Buckland's Programming Game AI by Example
It is very easy to follow and I've found that it provides an excellent starting point for Games AI.
However, as the posters above have previously said, the field of game AI is incredibly broad and more and more academic AI techniques are being introduced as the hardware advances. The AI Game Programming Wisdom books are very, very good, detailing techniques from various real world examples.
For beginners Udacity is a great place to start. It provides many on-line courses for free. The Algorithms and Introduction to AI courses may be particularly useful in this case.
Once you have a basic understanding of algorithms and AI you can move to more advanced resources.
Related
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 9 years ago.
Improve this question
I want to improve my programming skills, when I participate in some programming competition I feel that every challenge is so tough that i can not solve it,I have good knowledge of coding but I fell to decide the algorithm needed to solve particular problem for that can anyone tell me which books to read
I would suggest first to get comfortable with programming language of your choice. Once you have confidence on your language and Data structure, you can proceed confidently for any programming challenges. Make a habit of writing complete code with all edge cases handled on a sheet of paper rather than simple pseudo code for your practice session.
Now to solve algorithmic problem first to grasp elementary algo functioning via book or online resources. If you are using coreman (good book for algo) then you might want to understand basic concepts of different sorting techniques, heap, queue, hashing, greedy and dynamic algorithm. For some topic i would recommend to research online as well - like dynamic programming and hashing. Almost 70-80% interview questions are either hashing or DP based. Then look for major examples and their solution for these algorithm. Once your mind will set up you would be able to think quickly for any algorithmic problem.
Introduction to Algorithms by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest , Clifford Stein is a good one to start with.
Covers almost everything, from graph theory to geometric algorithms and all related data structures, furthermore they use the commonly used "Big O" notation to indicate the efficiency of the algorithms explained. Most of the time multiple algorithms are presented for the same problem, together with their advantages and disadvantages.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking for code must demonstrate a minimal understanding of the problem being solved. Include attempted solutions, why they didn't work, and the expected results. See also: Stack Overflow question checklist
Closed 9 years ago.
Improve this question
I have a N person game where each person has a set of M discrete strategies. I know from the theory that at least one mixed strategy Nash Equilibrium exists.
Can someone please tell me how do I find one of those equilibrium points by numerical simulation?
I can not find in the book any explanation of how to simulate. I just need the basic direction.
I asked this question in math.stackexchange but decided to ask here as well in case this is the correct place for algorithms.
Thank you.
It depends of the game you have, in some case it is not possible and in other (2xN zero-sum games, potential game) it can be costly.
If the game has a pure Nash Equilibrium then the Fictitious play algorithm of Brown then then improved by Berger can find it [G. W. Brown, Iterative solution of games by fictitious play, MIT Press, 1998 and Berger, Brown's original fictitious play, Journal of Economic Theory, 2007]. A stichastic version of it has been proposed by Smyrnakis & Leslie [Michail Smyrnakis et David Leslie, Stochastic Fictitious Play using Particle Filters to update the beliefs of opponents strategies, 2008]. You can browse the wikipedia page at first : http://en.wikipedia.org/wiki/Fictitious_play.
If you are looking for a mixed NE it is even more tricky and some learning algorithm can be quite bad while others are better. I personnally like the book of Cesa-Bianchi and Lugosi, Prediction, Learning and Games, http://homes.di.unimi.it/~cesabian/predbook/. Other people like also Nisan's Algorithmic Game Theory.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
I'm planning to invest some time every week studying data structures and algorithms.
Do you recommend: "MIT Introduction to Algorithms, 3rd Edition" by Cormen, Leiseson, Rivest and Stein?
AFAIK this book is legendary but I don't know its target audience.
Is this book suitable for my purpose? or it is for academic studies? is it loaded with heavy math?
For Java I recommend Algorithms in Java, Parts 1-4 by Robert Sedgewick. And the companion book Algorithms in Java, Part 5: Graph Algorithms by Robert Sedgewick.
For general studies I also have the Introductions to Algorithms books, it is a good general reference. This Algorithms, Fourth Edition by Robert Sedgewick looks good as well, but probably covers a lot of stuff already in the previously mentioned books.
For Clojure, you will probably need to get a Functional based Algorithm book. Pearls of Functional Algorithm Design looks like it might be a good companion to a the more general procedural books.
It has a fair amount of math and mathematically oriented material, but most of the math isn't all the "heavy" (though, of course, definitions of "heavy" vary). It is fairly academic -- if your interest is primarily in learning algorithms from a purely practical viewpoint (e.g., what algorithm to apply in a given situation) it may be rather overkill for your purposes (though I don't have an immediate recommendation of anything that's dramatically better for that kind of use either).
The Algorithm Design Manual by Steve Skiena
You'll probably find this book useful - it has very little emphasis on theory but a lot on the how/what/where/why without delving into too much of math. The author talks about the applications from his experience - so you get to see a practical bent. A light read but a LOT to read!
Introduction to Algorithms is a very good book. You can read the book and follow the video lecture series available at AcademicEarth.org.
But if you want to learn it with a specific language (C, C++ or Java), you can pick any of the data structures and algorithms books by Mark-Allen Weiss, Robert Lafore or Robert Sedgewick.
I read Computer Algorithms by Horowitz and Sahni, its quite easy to follow with enough examples and pseudo codes.
In addition to Cormen, I'd recommend reading Purely Functional Data Structures, if you're using both Java and Clojure.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I've been asked to recommend a resource (on-line, book or tutorial) to learn Algorithms (in the sense of of the MIT Intro to Algorithms) for non-CS or Math majors. Obviously the MIT book is way too involved and some of the lighter treatments (like OReilly's Algorithms in a Nutshell) still seem as if you would need to have some background in algorithmic analysis. Is there resource that presents the material in a way that developers who do not have a background in theoretical computer science will find useful?
I think the best way to learn algorithms are through the various competition sites.
USACO - my personal favorite, as it gives a clear path through the material
TopCoder - already mentioned
Sphere Online Judge - great if you want to work in another language other than C/C++/Java
As far as books, the best single intro I've seen for the non-math specialist is Data Structures and Algorithms. It takes you through an algorithm line by line and shows you how it decomposes mathematically, something CLRS's otherwise excellent analysis section is a little less clear on.
Skiena's Algorithm Design Manual is also excellent, as is his Programming Challenges, which is essentially a tutorial through the Valladolid Online Judge.
Honestly, though, I think the single most helpful thing a beginner can do is to implement the various algorithms -- merge sort, say, followed by Quicksort -- and time them against variously sized inputs. Create a spreadsheet with a graph that shows their growth over time. Very few non-specialists will have the patience or the know-how to set up a recurrence relation and solve their way through it. But you must understand the effect of, say O n^2 growth over time, and there's no better way to learn this than to watch your own program blow through its memory stack. :)
I say this as a non-CS, non-math programmer who has spent a good couple of months wrapping my mind around algorithmic analysis.
I'd go for the Algorithm Design Manual, by Steven Skiena. It's very readable and starts with the basics in an easy-to-understand way. For example, it explains big-O notation very well. The emphasis is on practical application, which is a big bonus for beginners coming from a non-theoretical field.
The second half of the book is a reference of common algorithm problems and practical approaches to their solutions. I found it invaluable as a learning aid, and now as a reference.
I'm not sure which MIT book you're referring to, but the canonical text is CLRS. I don't think it really assumes any background besides high school math.
Personally, I found doing TopCoder algorithm competitions over the course of the past few years to be the best way for me to learn common algorithms and put them into practice. Perhaps you should try the same. Whatever you do, I suggest that you spend a lot more hands-on-keyboard time implementing things you learn than head-in-book time, because that's the way to really internalize different techniques.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
I'm interested in learning video game algorithms. (For iPhone particularly, but generally as well. I assume certain concepts are the same.) I am best off (personally) learning from a book but websites are useful too.
What has helped you learn game programming algorithms and concepts?
EDIT:
As per request, I'll clarify the types of algorithms... I was looking for any algorithms really, but I guess I was interested in (top-down view) platformer algorithms, but, now that you mention it, Seth, I do wonder about chess...
EDIT2:
I'm making this a Community Wiki due to the nature of the question.
I am interested in 2D platformer algorithms at the moment. I would like to remake an old video game (a personal favorite, publisher now defunct.)
I'd recommend Realtime Collision Detection by Christer Ericson ( Director of Tools and Technology at Sony Santa Monica Studios - aka God of War ) - despite the title it covers a wider range of approaches than just collison detection including - data structures and algorithms for modern games development.
A lot of computer games coding is also simply good old-fashioned coding i.e data structures + algorithms so don't forget the two classics:
The Art of Computer Programming by Donald Knuth
Programming Pearls by Jon Bentley
There are also some excellent on-line R&D references on games development by many studios such as:
Mike Acton's Blog
Insomniac's R&D Site
Valve's site
DICE's site
There's some information atGamestruction which is a stack exchange based site, or you could ask this question there too.
You could try GameDev.net, DevMaster.net or Gamasutra for various game development resources.
There are various games development wikis including ones at GameDev.net and DevMaster.net and one at GPWiki.org
I don't think there is any one definitive source for game development algorithms, there are so many different ways to approach game development even within a single genre.
The best advice I can give it to learn by playing with existing technology, get a hold of some game frameworks and go through their tutorials. I don't know of many for iPhone but you could look at the Torque Game Engine or Ogre3D for PC based technologies. Microsoft's XNA Framework is also an excellent starting point for console development. Any of those will give you a good idea of the basic structure of a game project and some of the core algorithms like pathfinding, collision detection etc.
If you'd rather read book though, I always recommend the Game Programming Gems series, last I looked they had six or seven volumes but they all contain collections of articles on all aspects fo game development.
Best of Game Programming Gems
These titles are a few years old, but have updated versions at this time. Pay attention specifically to the computational geometry content.
Andre LaMothe - "Tricks of the Windows Game Programming Gurus"
http://www.amazon.com/Andre-Lamothe/e/B000ARBG92/ref=ntt_athr_dp_pel_pop_1
and
Corment, Leiserson, et. al. - "Introduction to Algorithms"
http://www.amazon.com/Introduction-Algorithms-Thomas-Cormen/dp/0072970545/ref=ntt_at_ep_dpi_2
Artificial Intelligence in Game Design
Math and Physics # gamedev.net