changeset 463:6d55ac73bc6f

moar text.
author Robert McIntyre <rlm@mit.edu>
date Thu, 27 Mar 2014 20:46:36 -0400
parents bb81cef09ad7
children 8bf4bb02ed05
files thesis/cortex.org
diffstat 1 files changed, 51 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
     1.1 --- a/thesis/cortex.org	Thu Mar 27 20:18:51 2014 -0400
     1.2 +++ b/thesis/cortex.org	Thu Mar 27 20:46:36 2014 -0400
     1.3 @@ -433,14 +433,63 @@
     1.4     engine as a base and modify it to accomodate the additional needs
     1.5     of =CORTEX=. Video game engines are an ideal starting point to
     1.6     build =CORTEX=, because they are not far from being creature
     1.7 -   building systems themselves. 
     1.8 +   building systems themselves.
     1.9     
    1.10     First off, general purpose video game engines come with a physics
    1.11     engine and lighting / sound system. The physics system provides
    1.12     tools that can be co-opted to serve as touch, proprioception, and
    1.13     muscles. Since some games support split screen views, a good video
    1.14     game engine will allow you to efficiently create multiple cameras
    1.15 -   in the simulated world that can be used as eyes. 
    1.16 +   in the simulated world that can be used as eyes. Video game systems
    1.17 +   offer integrated asset management for things like textures and
    1.18 +   creatures models, providing an avenue for defining creatures.
    1.19 +   Finally, because video game engines support a large number of
    1.20 +   users, if I don't stray too far from the base system, other
    1.21 +   researchers can turn to this community for help when doing their
    1.22 +   research. 
    1.23 +   
    1.24 +** =CORTEX= is based on jMonkeyEngine3
    1.25 +
    1.26 +   While preparing to build =CORTEX= I studied several video game
    1.27 +   engines to see which would best serve as a base. The top contenders
    1.28 +   were:
    1.29 +
    1.30 +   - [[http://www.idsoftware.com][Quake II]]/[[http://www.bytonic.de/html/jake2.html][Jake2]]    :: The Quake II engine was designed by ID
    1.31 +        software in 1997.  All the source code was released by ID
    1.32 +        software into the Public Domain several years ago, and as a
    1.33 +        result it has been ported to many different languages. This
    1.34 +        engine was famous for its advanced use of realistic shading
    1.35 +        and had decent and fast physics simulation. The main advantage
    1.36 +        of the Quake II engine is its simplicity, but I ultimately
    1.37 +        rejected it because the engine is too tied to the concept of a
    1.38 +        first-person shooter game. One of the problems I had was that
    1.39 +        there does not seem to be any easy way to attach multiple
    1.40 +        cameras to a single character. There are also several physics
    1.41 +        clipping issues that are corrected in a way that only applies
    1.42 +        to the main character and do not apply to arbitrary objects.
    1.43 +
    1.44 +   - [[http://source.valvesoftware.com/][Source Engine]]     :: The Source Engine evolved from the Quake II
    1.45 +        and Quake I engines and is used by Valve in the Half-Life
    1.46 +        series of games. The physics simulation in the Source Engine
    1.47 +        is quite accurate and probably the best out of all the engines
    1.48 +        I investigated. There is also an extensive community actively
    1.49 +        working with the engine. However, applications that use the
    1.50 +        Source Engine must be written in C++, the code is not open, it
    1.51 +        only runs on Windows, and the tools that come with the SDK to
    1.52 +        handle models and textures are complicated and awkward to use.
    1.53 +
    1.54 +   -  [[http://jmonkeyengine.com/][jMonkeyEngine3]] :: jMonkeyEngine3 is a new library for creating
    1.55 +        games in Java. It uses OpenGL to render to the screen and uses
    1.56 +        screengraphs to avoid drawing things that do not appear on the
    1.57 +        screen. It has an active community and several games in the
    1.58 +        pipeline. The engine was not built to serve any particular
    1.59 +        game but is instead meant to be used for any 3D game. 
    1.60 +
    1.61 +
    1.62 +   I chose jMonkeyEngine3 because it because it had the most features
    1.63 +   out of all the open projects I looked at, and because I could then
    1.64 +   write my code in clojure, an implementation of =LISP= that runs on
    1.65 +   the JVM.
    1.66  
    1.67  ** Bodies are composed of segments connected by joints
    1.68