What is cobosoda?

Cobosoda is a physics simulation modeled after Soda Constructor. Cobosoda allows you to build moving automations out of masses (joints), springs and muscles.

News

(04-14-2008) Sorceforge project opened Cobosoda on SorgeForge

(03-16-2008) Port complete. Presented at barcampnyc3. Project fully revived! Grab the java source below

(08-21-2007) Reviving a dead project for anyone who wants to play...

(??-??-2004) I ported the simulator to java..

(07-20-2003) I've been playing with cobosoda again. You can build it in cygwin now. I think I'm going to make it into a windows screen saver.

(05-05-2001) Cobosoda 1.0 is finished and includes utilities to evolve models using genetic algorithms.

Installation

The C++ version is deprecated (good luck building it anyway - glut no longer works that way). Use the java version below. I build it in eclipse. Ymmv.

Download

Using Cobosoda

Load it up and click File..Open to open a .def file. The format of these files is below. To start evolution click File..Start Evolution. It will ask you where you want to save winners, pick a directory. Every 10000 mutations it will save and restart from the original model.

Creating Cobosoda Models

The cobosoda world defintion file contains both the information about the environment and the definition of any models contained in that environment. The syntax is as follows:
	# This is a comment
	keyword                 value [value]...
The following keywords are recognized:
	gravity <value>:
		Defines the force of gravity in m/s^2
	
	springk <value>:
		Defines the spring constant of each spring in N/m
	
	mass <value>:
		Defines the mass of each joint in kg

	jointcount <num>:
		Defines the number of joint definitions to follow (ignored in java version)

	joint <x> <y> <fixed>:
		Creates a joint in x meters to the right, and y meters up.  If fixed
		is non-zero then the joint will not be subject to external forces.

	spring <a> <b>:
		Connects joint 'a' to joint 'b' by a spring.  The joint number is the
		order of creation starting with zero.

	muscle <a> <b> <frequency> <amplitude> <offset>:
		Connects joint 'a' to joint 'b' by a muscle.  Muscles oscillate at the
		specified frequency and offset with the specified amplitude.  For 
		example a muscle with frequency of 1, an amplitude of 1, and an offset 
		of 0 would artificially contract and expand completely once per second.

	name Model Name
		New in java version.  Name your model.

License

Cobosoda is (C)2008 Justin Day and is released under the GNU Public License.

Contact

Questions? Comments? Are you working on this? Email reverse("vt.pilb@nitsuj");