Mercurial > cortex
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