Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

Tokamark for 3D space simulator

Nick P
2008-08-12
2013-05-02
  • Nick P
    Nick P
    2008-08-12

    Hi everyone!

    We are a team of enthusiasts that want to build a online 3d space sim. We a currently in a dilemma of choosing the right physics engine for our needs. (we would deal with lots of moving object that collide)

    By our calculations we would use about 40.000 objects in one location (EVE analogy of space regions)

    I know this number of object is really huge and computing all collisions is too costly, but we figured out we don't need to realistic collisions, we don't need to simulate friction between objects, what we would need from the physics engine is to:

    -   allow using lots of objects
    -   allow speeds of 10 km/s (and even more), so i guess it should have some advanced CCD (continuous collision detection) for this to work fine
    -   compute the coordinates of objects in a double frloat format (our worlds will be really huge, like solar systems  and we need precise location of objects in space, single precision float is not enough)
    -   very simple collision model, no need of realistic interaction (no friction needed)

    Does Tokamak allow such things, or maybe someone could help me with this task?
    (i didn't find any documentation about limitations of Tokamak)

    Thanks in advance.

     
    • manthrax
      manthrax
      2009-01-31

      Hi. Sorry for the late response.. AFAIK Tokamak doesn't do CCD internally. If you require it, and can't roll your own broad phase collision detection using raycasts, then ODE, Havok, or Newton physics sdks might be a better fit.
      I've personally used Tokamak mostly for car, plane, and ragdoll simulations, and seen it used for puzzle games and FPS style projects.

      If your collision needs really are as simple as you describe, you could probably do a broad phase collision pass with your ship/units bounding radii projected along thier velocity vectors (capsule/capsule test).
      Based on the results of this, you could then perhaps populate some tokamak simulator(s) on the fly, to resolve the near scale collisions on a case by case basis, or just fake something up yourself.

      R.E. Double precision -
      AFAIK Tokamak relies on floating point , trading precision for speed, and also may(?) also use reduced precision floating point, as well.
      One commonly used technique is to store your universe coordinates in whatever space you chose, and then apply a global transform to get them in and out of the simulator coordinate space.

      Having said that: you could probably globally search and replace f32 in the tokamak source tree to be f64, and run Tokamak in double precision, without too much hassle ;)( ymmv ) but if you decide to explore this, please let us know !

      Cheers!

       
    • manthrax
      manthrax
      2009-01-31

      I wanted to add: I just ran across an *excellent* benchmark app, by Adrian Boeing, linked elsewhere on this site, that compares a number of the available engines.

      His site is here:

      http://www.adrianboeing.com/pal/benchmark.html

      And the app is here:

      http://www.adrianboeing.com/pal/files/PAL_Benchmark_Demo.zip

      Unzip it and run palDemoMark.exe from the win32_bin directory.