Codebase Analysis
Questions
When evaluating software, quality is 50%, and community is 50%.
In general we should be looking for the biggest community. The one with 2x as many developers will win, unless both have achieved critical mass.
Any codebases we use we will want to be able to program in a Mono language. (Reasons for this do not fit into the margin) Finding managed bindings is a part of the development.
Codebases
NASA Robotics code
http://www-robotics.jpl.nasa.gov/news/newsStory.cfm?NewsID=69
http://claraty.jpl.nasa.gov/man/software/modules/algorithms/index.php
Let's put this code in our repo
GNU Scientific Library
All C, but so big it gets its own section: http://www.gnu.org/software/gsl/
We could use this code as a source for us.
Huge reference of everything about games
http://www.gamedev.net/reference/
Math (Wolf-Dieter)
Requirements
Here is a set of math functions that the torcs robot needs. http://keithcu.com/wiki/index.php/Image:Unitlinalg.cpp
We also need support for splines. The code above doesn't use operators, and our code should to be more natural-looking. We should be binary compatible with torcs, and we can change it to match our data structures.
We also need neural network code for some learning required by the driving robot.
Codebases
Quickgraph: http://www.codeplex.com/quickgraph
Mogre pure C# classes http://www.ogre3d.org/wiki/index.php/MOGRE_pure_.NET_classes
NPack: http://www.codeplex.com/NPack
dnAnalytics: [1]
http://www.nuclex.org/weblinks/Programming/Math
AForge AI Library written in C#
Math, Image processing, neural networks, machine learning, and vision. (We won't be using his vision code...) There is a decent amount of traffic on the forums, and the releases have thousands of downloads. The guy is from Latvia and has linked-in profile says he is looking for consulting work: http://www.linkedin.com/pub/4/410/A72
http://code.google.com/p/aforge/
Article about library: http://www.codeproject.com/KB/recipes/aforge.aspx?display=Print
Computer Vision
http://en.wikipedia.org/wiki/Category:Computer_vision
http://en.wikipedia.org/wiki/Computer_vision
http://www.intel.com/technology/computing/opencv/overview.htm
http://en.wikipedia.org/wiki/OpenCV
Found a .Net wrapper! http://code.google.com/p/opencvdotnet/
To get it to work with mono, use the opencvdotnetnewcore directory
Intel's code written in C++ in 1999-2000. Not too much going on with it, but it was used by Stanford in the Darpa Grand Challenge. It has code that should be thrown away, but it is comprehensive. I think we should start with it, especially that there is a .Net wrapper
OCR: http://code.google.com/p/tesseract-ocr/
Motion Planning
Great background doc, with lots of links: http://www.red3d.com/cwr/steer/
PDF from our Mercurial repo: [2]
OpenSteer: http://opensteer.sourceforge.net/doc.html
OpenSteer port to C#: http://code.google.com/p/opensteerdotnet/
Another port: http://www.codeplex.com/SharpSteer/
Motion Strategy Library, http://msl.cs.uiuc.edu/msl/
Motion Planning Kit, http://ai.stanford.edu/~mitul/mpk
Darpa contestant (will try to get the code) http://www.torctech.com/services/software.html
http://www.umich.edu/~driving/sim.html
Urban driving simulator http://portal.acm.org/citation.cfm?id=1296777
Simple doc: http://www.gamedev.net/reference/articles/article1125.asp
Game libraries
(Jeko) Mono Tao Framework http://taoframework.com/
Ogre
Ogre: http://www.ogre3d.org/ A good and popular one with a big online community. Used by many "serious" project, it is well documented. A friend of mine worked with and recommended it.
http://www.ogre3d.org/wiki/index.php/OgreDotNet (Supports mono, not that used)
http://www.ogre3d.org/wiki/index.php/MOGRE (Popular, doesn't support Mono)
Huge list of Ogre Links
http://www.ogre3d.org/wiki/index.php/AssemblingAToolset
http://www.ogre3d.org/wiki/index.php/OGRE_DCC_Tools
http://www.ogre3d.org/wiki/index.php/Libraries
http://www.ogre3d.org/wiki/index.php/Projects_using_OGRE
Ogre GUIs
http://www.ogre3d.org/wiki/index.php/Comparison_of_GUIs
Others
(Jeko) More: http://www.freeprogrammingresources.com/gamelib.html
Scene Editor
(Jeko) http://icarus.sourceforge.net/
Physics Engines
The physics engine we will use is likely this: http://www.ode.org/
There are .Net wrappers we will use so we can program in C#: http://sourceforge.net/projects/odedotnet
PDF intro: http://www.ode.org/slides/parc/dynamics.pdf
API overview: http://www.ode.org/ode-latest-userguide.html
Physics Simulations
PlayerStage
We also need a physics simulator GUI to play and step through simulations. Here is a robot simulator: http://playerstage.sourceforge.net/index.php?src=gazebo
Monobotics Robotics (and Vision) Simulation GUI
http://www.monobotics.ic.uach.cl/
Removed from consideration
Open Scene Graph
http://www.openscenegraph.org/projects/osg/wiki/About/Introduction
http://www.openscenegraph.org/projects/osg/wiki/Community/LanguageWrappers
I've been using openscenegraph for 2 years (that was 2 years ago) and it has been a pain! Lack of documentation and a few bugs. However it is quite popular, it is still not very mature. Its good points however: there are many import of 3D formats supported and it offer good real-time performances.
Jag Engine
http://www.jadengine.com/index.php?title=Main_Page
All in C#, but going through a rewrite, and they don't have a community yet.
Delta 3-D
Delta 3-D http://www.delta3d.org/
Small community
PLIB
Portable game library: http://plib.sourceforge.net/whats_inside.html Features: sound effects, music, a complete 3D engine, font rendering, a simple Windowing library, a game scripting language, a GUI, networking, 3D math library and a collection of handy utility functions. Each library component is fairly independent of the others - so if you want to use SDL, GTK, GLUT, or FLTK instead of PLIB's 'PW' windowing library, you can.
This is a cool component for people making simple games, but we don't need most of it, and the stuff we do need isn't that powerful or popular. Torcs uses it, but that will change :-)
Irrlicht
Irrlicht: http://irrlicht.sourceforge.net/, also has .Net bindings
http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?t=18125&highlight=
http://www.blitzbasic.com/Community/posts.php?topic=73978
Looks like a good engine, but some have complaints about it: it is less pluggable, less powerful, etc.
Axiom Engine
http://axiomengine.sourceforge.net/wiki/index.php/Main_Page This is a port of Ogre that is clean, rich, and supports Mono. It doesn't have the community of Ogre and Irrlicht. Using a native C# component is awesome, but using something with a community is more important.
Mono Xna
http://code.google.com/p/monoxna/
This is missing a lot
Racer.nl
http://www.racer.nl/, nice looking, source code available but not open source (restrictive license). (Website is down...)
Ultimatestunts.nl
http://www.ultimatestunts.nl, require art work to look better. The track format supports junctions. There isn't as big a community as around Torcs.