comparison thesis/cortex.org @ 463:6d55ac73bc6f

moar text.
author Robert McIntyre <rlm@mit.edu>
date Thu, 27 Mar 2014 20:46:36 -0400
parents bb81cef09ad7
children 8bf4bb02ed05
comparison
equal deleted inserted replaced
462:bb81cef09ad7 463:6d55ac73bc6f
431 build =CORTEX=. Doing so would lead to a system that is impossible 431 build =CORTEX=. Doing so would lead to a system that is impossible
432 for anyone but myself to use anyway. Instead, I use a video game 432 for anyone but myself to use anyway. Instead, I use a video game
433 engine as a base and modify it to accomodate the additional needs 433 engine as a base and modify it to accomodate the additional needs
434 of =CORTEX=. Video game engines are an ideal starting point to 434 of =CORTEX=. Video game engines are an ideal starting point to
435 build =CORTEX=, because they are not far from being creature 435 build =CORTEX=, because they are not far from being creature
436 building systems themselves. 436 building systems themselves.
437 437
438 First off, general purpose video game engines come with a physics 438 First off, general purpose video game engines come with a physics
439 engine and lighting / sound system. The physics system provides 439 engine and lighting / sound system. The physics system provides
440 tools that can be co-opted to serve as touch, proprioception, and 440 tools that can be co-opted to serve as touch, proprioception, and
441 muscles. Since some games support split screen views, a good video 441 muscles. Since some games support split screen views, a good video
442 game engine will allow you to efficiently create multiple cameras 442 game engine will allow you to efficiently create multiple cameras
443 in the simulated world that can be used as eyes. 443 in the simulated world that can be used as eyes. Video game systems
444 offer integrated asset management for things like textures and
445 creatures models, providing an avenue for defining creatures.
446 Finally, because video game engines support a large number of
447 users, if I don't stray too far from the base system, other
448 researchers can turn to this community for help when doing their
449 research.
450
451 ** =CORTEX= is based on jMonkeyEngine3
452
453 While preparing to build =CORTEX= I studied several video game
454 engines to see which would best serve as a base. The top contenders
455 were:
456
457 - [[http://www.idsoftware.com][Quake II]]/[[http://www.bytonic.de/html/jake2.html][Jake2]] :: The Quake II engine was designed by ID
458 software in 1997. All the source code was released by ID
459 software into the Public Domain several years ago, and as a
460 result it has been ported to many different languages. This
461 engine was famous for its advanced use of realistic shading
462 and had decent and fast physics simulation. The main advantage
463 of the Quake II engine is its simplicity, but I ultimately
464 rejected it because the engine is too tied to the concept of a
465 first-person shooter game. One of the problems I had was that
466 there does not seem to be any easy way to attach multiple
467 cameras to a single character. There are also several physics
468 clipping issues that are corrected in a way that only applies
469 to the main character and do not apply to arbitrary objects.
470
471 - [[http://source.valvesoftware.com/][Source Engine]] :: The Source Engine evolved from the Quake II
472 and Quake I engines and is used by Valve in the Half-Life
473 series of games. The physics simulation in the Source Engine
474 is quite accurate and probably the best out of all the engines
475 I investigated. There is also an extensive community actively
476 working with the engine. However, applications that use the
477 Source Engine must be written in C++, the code is not open, it
478 only runs on Windows, and the tools that come with the SDK to
479 handle models and textures are complicated and awkward to use.
480
481 - [[http://jmonkeyengine.com/][jMonkeyEngine3]] :: jMonkeyEngine3 is a new library for creating
482 games in Java. It uses OpenGL to render to the screen and uses
483 screengraphs to avoid drawing things that do not appear on the
484 screen. It has an active community and several games in the
485 pipeline. The engine was not built to serve any particular
486 game but is instead meant to be used for any 3D game.
487
488
489 I chose jMonkeyEngine3 because it because it had the most features
490 out of all the open projects I looked at, and because I could then
491 write my code in clojure, an implementation of =LISP= that runs on
492 the JVM.
444 493
445 ** Bodies are composed of segments connected by joints 494 ** Bodies are composed of segments connected by joints
446 495
447 ** Eyes reuse standard video game components 496 ** Eyes reuse standard video game components
448 497