Codebase Analysis: Difference between revisions

From SpaceElevatorWiki.com
Jump to navigationJump to search
No edit summary
 
(58 intermediate revisions by the same user not shown)
Line 1: Line 1:
I will outsource the wrapping and porting as much as possible, but we will likely be involved in some stitching of things together. Once we have done the wrapping, we can hand off the work to other people. I'm sure that the Mono people would love to have a wrapper for PLIB. We can  approach both PLIB and Mono to find people with time.
= Questions =
When evaluating software, quality is 50%, and community is 50%.


'''Background info on computer vision'''
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.
http://en.wikipedia.org/wiki/Category:Computer_vision
 
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
 
Others: http://www.codeplex.com/NPack/Wiki/View.aspx?title=What%20are%20the%20Alternatives%3f&referringTitle=Home


http://en.wikipedia.org/wiki/Computer_vision
dnAnalytics: [http://www.codeplex.com/dnAnalytics/SourceControl/DirectoryView.aspx?SourcePath=%24%2fdnAnalytics%2ftrunk%2fsrc&changeSetId=11544]
----
'''Motion Planning'''


Motion Strategy Library, http://msl.cs.uiuc.edu/msl/
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


Motion Planning Kit, http://ai.stanford.edu/~mitul/mpk
http://code.google.com/p/aforge/
----
'''Driving simulators'''
Darpa contestant (will try to get the code) http://www.torctech.com/services/software.html


http://www.umich.edu/~driving/sim.html
Article about library: http://www.codeproject.com/KB/recipes/aforge.aspx?display=Print


Urban driving simulator http://portal.acm.org/citation.cfm?id=1296777
== Computer Vision ==
http://en.wikipedia.org/wiki/Category:Computer_vision


Steering code: http://www.red3d.com/cwr/steer/, http://opensteer.sourceforge.net/doc.html
http://en.wikipedia.org/wiki/Computer_vision


(Jeko) Quickgraph: http://www.codeplex.com/quickgraph
----
'''Vision:'''
http://www.intel.com/technology/computing/opencv/overview.htm
http://www.intel.com/technology/computing/opencv/overview.htm


Line 29: Line 60:


Found a .Net wrapper! http://code.google.com/p/opencvdotnet/
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
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
----
----
'''AForge AI Library written in C#'''
OCR: http://code.google.com/p/tesseract-ocr/
Image processing, neural networks, machine learning, and vision. 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
 
== Motion Planning ==
Great background doc, with lots of links: http://www.red3d.com/cwr/steer/
 
PDF from our Mercurial repo: [http://keithcu.com/cgi-bin/hg.cgi?raw-file/8f459ea784e1/docs/gdc99steer.pdf]
 
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


(Jeko) http://code.google.com/p/aforge/
http://www.umich.edu/~driving/sim.html


Article about library: http://www.codeproject.com/KB/recipes/aforge.aspx?display=Print
Urban driving simulator http://portal.acm.org/citation.cfm?id=1296777
----
(Jeko) Mono Tao Framework http://taoframework.com/
----
'''Driving ''and'' 3-D Game engine:'''
http://torcs.sourceforge.net, uses PLIB. See quality comments above.


http://www.racer.nl/, nice looking, source code available but not open source (restrictive license).
Simple doc: http://www.gamedev.net/reference/articles/article1125.asp


http://www.ultimatestunts.nl/, require art work to look better. The track format supports junctions.
== Game libraries ==
----
(Jeko) Mono Tao Framework http://taoframework.com/
'''Math:'''
=== Ogre ===
(Jeko) NPack: http://www.codeplex.com/NPack
(Jeko) Others: http://www.codeplex.com/NPack/Wiki/View.aspx?title=What%20are%20the%20Alternatives%3f&referringTitle=Home
(Jeko) dnAnalytics: [http://www.codeplex.com/dnAnalytics/SourceControl/DirectoryView.aspx?SourcePath=%24%2fdnAnalytics%2ftrunk%2fsrc&changeSetId=11544]
----
'''3-D Game engines:'''
Do we start with PLIB or one of these? There are many but these look like the top candidates. Please investigate and make inline comments:
----
'''Ogre''': http://www.ogre3d.org/
'''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.
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.
Line 62: Line 99:


http://www.ogre3d.org/wiki/index.php/MOGRE (Popular, doesn't support Mono)
http://www.ogre3d.org/wiki/index.php/MOGRE (Popular, doesn't support Mono)
----
=== '''Huge list of Ogre Links''' ===
(Jeko) http://code.google.com/p/monoxna/
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
 
http://www.ode.org/users.htm
 
== 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/About/Introduction


(Jeko)http://www.openscenegraph.org/projects/osg/wiki/Community/LanguageWrappers
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.
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 ==  
(Jeko) More: http://www.freeprogrammingresources.com/gamelib.html
http://www.jadengine.com/index.php?title=Main_Page
----
(Jeko) http://sourceforge.net/projects/odedotnet
----
(Jeko) http://www.nuclex.org/weblinks/Programming/Math
----
'''OCR:'''
http://code.google.com/p/tesseract-ocr/
----
 
== Removed from consideration ==
Jad 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.''
''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/
Delta 3-D http://www.delta3d.org/


''Small community''
''Small community''
----
== PLIB ==
PLIB, Portable game library: http://plib.sourceforge.net/whats_inside.html
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.
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 :-) ''
''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
Irrlicht: http://irrlicht.sourceforge.net/, also has .Net bindings


Line 102: Line 163:


''Looks like a good engine, but some have complaints about it: it is less pluggable, less powerful, etc.''
''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
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.
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.''
''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.

Latest revision as of 08:50, 14 July 2008

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

Others: http://www.codeplex.com/NPack/Wiki/View.aspx?title=What%20are%20the%20Alternatives%3f&referringTitle=Home

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

http://www.ode.org/users.htm

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.