Good websites and/or books to learn game algorithms? [closed] - algorithm

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

Related

Can I find another course similar to this UC Berkeley course [closed]

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 have been looking online to learn how the current crop of web applications manage their data, on both the server side and client side.
Like, I'm intrigued by Google Suggest, personal recommendations based on my "likes", etc.
So, while I searched for content where I could learn such data structures and algorithms, I came across this course provided by UC Berkeley - http://extension.berkeley.edu/cat/course460.html
The description of this course matches exactly with what I really want to learn.
Study the algorithms that provide the
power behind many of the most
effective Web applications. Where do
the phases come from for lists like
Google suggests? What techniques can
generate personal recommendations? How
do social networking, mash-ups, and
mixed-media sites select and
categorize similar groupings of binary
content? In this course, you gain a
solid understanding of current
algorithms and data structures for
search, recommendations, groupings,
classifications, and combinations of
classifiers.
However, there seems to be no way to find more details about this course.
Can someone here help me find a book / online course / site where I could learn more on this subject ?
Rex Griffiths and I just launched a video podcast about all this stuff this week. You can find it over at http://StatCasts.com. We should bring along the funny as well as teach something. You can follow us on twitter (#StatCastsCom), where we try to link to cool things we're seeing on this front in real time, or just go to the show. We'll have a lot of links for other people's stuff. Plus, Rex and I are both active developers and have quite a bit of open source software that we give away for this kind of thing.
There is the Stanford Course on Machine Learning which is really interesting, but a little hard to follow without some of their offline discussion.
Outside of courses, you could look at software packages or books and the communities that surround them. They tend to fill in the gaps about this sort of thing. So, here's a list of some what's out there:
Mahout, a machine learning library for Hadoop. There's a Manning book out on this as well. This is a good solution if you want to learn how to do this stuff with Big Data.
Modeling with Data, a great book by Ben Klemens who works at the Brookings Institute and explains a really good foundation for this kind of thing.
Weka and a book called Data Mining. This is a great way to get involved without getting lost. Weka has an easy-to-use interface that isn't much harder than a spreadsheet to use.
The R language is an amazing place to go for this kind of thing. You'll usually find anything analytical you want to do in this package. I have a few books kicking around here for that. The R Book is my favorite, though it's a bit expensive.
Octave is the GNU response to MatLab (commercial software). They both have incredible resources behind them.
I think Ben Mabey put together a pretty good pinboard full of good teaching links for this kind of thing.
Finally, my stuff is Fathom, an open source framework for solving these kinds of problems and http://openmobi.us, a website that implements the Fathom library for people that want to get straight to it. With those projects, I'm trying to make it easy for people to get involved with building their own models and using them for their businesses or education.

Good tutorials to understand Domain Specific Languages (DSLs) from the scratch , to start a survey thesis [closed]

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 12 months ago.
Improve this question
My thesis topic is about Domain Specific languages in general, I want to focus on design or implementation for external or internal DSLs but I can't even think or start because I am facing problems with understanding the concept of DSLs ..
I have read and collected so many papers and surveys about this issue but all of them I consider as advanced.. I need a good tutorial ( for beginners ) to understand the whole concept and phases for DSLs from the scratch ..
I have read the first chapter for DSL by Martin Fowler , Fowler started with state machines and hard programming codes from the first page of his book and the problem is that I am not very good in programming in general, I have no experience, my thesis will be a survey about DSLs with no programming work. Until now I don't know what to focus on because the survey should be specific on on area like designing techniques or comparisons in designing or implementing , but because I cant get the big picture I can't even decide. Any suggestions about this issue also I will really appreciate that.
Please help me and thank you very much. I always look at the questions and answers in this great website and I believe that I will find a solution for my nightmare problem here!
Thanks a lot
Nat
This book is Bible for DSL's in my opinion. This book used to be free when it was in draft. You can also find other learning resources there.
Go through this post to find successful DSL's. This post might help you in identifying various flavors and various domains where they are being used.
It will be a lot of work for you if you want to understand it, so if you are not skillful with programming, learn it or choose easier thesis.
I wrote my thesis about model driven software development and domain specific languages withouth even a basic knowledge about modeling etc. It can be done, but I spent much time reading (which I enjoyed).
For the most basic introduction I would recommend se-radio.net podcast episodes 5 and 6 (...and there are many more about more advanced topics on MDSD/DSLs).
I'd read James Neighbors thesis, after reading his executive summary. He's the guy that defined the terms "domain analysis" and "domain engineering" in the context of defining "domain specific languages". And he shows a program generation system, Draco, that generates an astonishing variety of complex application codes based on these ideas. (The thesis is a lot more readable than you might expect, but expect to see some real code!).
You can read some history on this topic, too, and once again, how those who don't know their history are doomed to repeat it.

Resource for learning Algorithms for non-CS/Math degrees [closed]

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.

Tool or formula for calculating man-hours required for a project [closed]

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 3 years ago.
Improve this question
Is there a tool or a formula for calculating man-hours required for a certain project? Either by specifying the details, either, even better, input the sources and have it calculate a measure of how many man-hours were put into the project.
Edit:
I often hear about big projects, with components built in parallel by numerous groups, that they took a couple of thousand man-hours to complete, but they were finished in just x days... probably an argument supporting the teams' efficiency... so I think it might be possible to at least estimate these measures. I am convinced that efforts were put into making these estimations automatic, and even though they might not reflect the actual time invested in the project, at least I'd like to know that the "state of the art" is in this kind of endeavour.
There is a whole science to this called Function Point Analysis.
Read through this introductory article.
Or try the Wikipedia article for more references and external links to follow up.
This technique is based on looking at the functions which are to be implemented in the software, and assigning a point count to them. Then you plan on how many points can be achieved per day to figure out a schedule.
There are also techniques that lean more on psychology which involve asking people to estimate the time of of individual tasks in a project with best, worst, most likely, cutting their estimates in half and padding out the end of the project with an unspecified buffer time which can be used for late running tasks, only if needed. This works by giving the developers a short timetable for results, but promising management/customers a longer timetable. It's called Critical Chain Project Management and has been used with success in defense projects.
Introduction to Critical Chain
Wikpedia article
Estimating the man-hours for a new project is more about experience than formulae. When I started programming there was this notional "10 lines per hour of debugged code" that was the yard stick but that figure varies hugely based on the type of code, the language and the experience/skill of the software engineer.
I suggest that you search the internet for articles on estimating software development projects, one example of such an article would be this How to estimate a software project in man-hours?. But it's by no means definitive but does demonstrate the complexities involved.
As for looking at some code and estimating, you might as well stick a wet finger in the air and guess. Only the programmers involved would know and even then I suspect the answer wouldn't be accurate. At the end of the day it's an estimate, not a quote or a fact, and as such often open to wild variations.
Unfortunately general the answer is no -- there is no, ready to use, formula to calculate man-hours for software project.
However, software project estimation, is a huge problem and there are a lot of ways to deal with it.
Many solutions are described in Steve McConnell's book Software Estimation: Demystifying the Black Art.
Steve's company offers also some resources and tools (some of them are free) which help to estimate software project.

Where to learn about enemy game algorithms (like Starcraft/Warcraft)? [closed]

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.

Resources