# HG changeset patch # User Robert McIntyre # Date 1395967596 14400 # Node ID 6d55ac73bc6fc7860f3943588fa202ed8be942e1 # Parent bb81cef09ad7579f86c0032eefe4ab9b0a36f1f4 moar text. diff -r bb81cef09ad7 -r 6d55ac73bc6f thesis/cortex.org --- a/thesis/cortex.org Thu Mar 27 20:18:51 2014 -0400 +++ b/thesis/cortex.org Thu Mar 27 20:46:36 2014 -0400 @@ -433,14 +433,63 @@ engine as a base and modify it to accomodate the additional needs of =CORTEX=. Video game engines are an ideal starting point to build =CORTEX=, because they are not far from being creature - building systems themselves. + building systems themselves. First off, general purpose video game engines come with a physics engine and lighting / sound system. The physics system provides tools that can be co-opted to serve as touch, proprioception, and muscles. Since some games support split screen views, a good video game engine will allow you to efficiently create multiple cameras - in the simulated world that can be used as eyes. + in the simulated world that can be used as eyes. Video game systems + offer integrated asset management for things like textures and + creatures models, providing an avenue for defining creatures. + Finally, because video game engines support a large number of + users, if I don't stray too far from the base system, other + researchers can turn to this community for help when doing their + research. + +** =CORTEX= is based on jMonkeyEngine3 + + While preparing to build =CORTEX= I studied several video game + engines to see which would best serve as a base. The top contenders + were: + + - [[http://www.idsoftware.com][Quake II]]/[[http://www.bytonic.de/html/jake2.html][Jake2]] :: The Quake II engine was designed by ID + software in 1997. All the source code was released by ID + software into the Public Domain several years ago, and as a + result it has been ported to many different languages. This + engine was famous for its advanced use of realistic shading + and had decent and fast physics simulation. The main advantage + of the Quake II engine is its simplicity, but I ultimately + rejected it because the engine is too tied to the concept of a + first-person shooter game. One of the problems I had was that + there does not seem to be any easy way to attach multiple + cameras to a single character. There are also several physics + clipping issues that are corrected in a way that only applies + to the main character and do not apply to arbitrary objects. + + - [[http://source.valvesoftware.com/][Source Engine]] :: The Source Engine evolved from the Quake II + and Quake I engines and is used by Valve in the Half-Life + series of games. The physics simulation in the Source Engine + is quite accurate and probably the best out of all the engines + I investigated. There is also an extensive community actively + working with the engine. However, applications that use the + Source Engine must be written in C++, the code is not open, it + only runs on Windows, and the tools that come with the SDK to + handle models and textures are complicated and awkward to use. + + - [[http://jmonkeyengine.com/][jMonkeyEngine3]] :: jMonkeyEngine3 is a new library for creating + games in Java. It uses OpenGL to render to the screen and uses + screengraphs to avoid drawing things that do not appear on the + screen. It has an active community and several games in the + pipeline. The engine was not built to serve any particular + game but is instead meant to be used for any 3D game. + + + I chose jMonkeyEngine3 because it because it had the most features + out of all the open projects I looked at, and because I could then + write my code in clojure, an implementation of =LISP= that runs on + the JVM. ** Bodies are composed of segments connected by joints