Aeon

From DoomWiki.org

Aeon is the in-development scripting language for the Eternity Engine.

History[edit]

Historically, as a fork of SMMU, the Eternity Engine started with the FraggleScript language. The limitations of this language led to the decision to replace it with a full-fledged, off-the-shelf alternative. The first choice was Small, adopted in 2002.[1] FraggleScript was removed on September 25, 2002,[2] and a first implementation of Small with limited scope took its place a few days later.[3] Progress in extending this implementation to interface with more and more of the Doom code was slow but steady for several years[4] and implementation was finally declared complete for the Eternity v3.33.00 release on May 27, 2005.[5]

However, some of Small's design decisions started to prove problematic. The fact that it is a compiled language, so Small scripts would be present in compiled form (and their source potentially lost), a problem similar to that of Hexen's Action Code Script, but more acute due to Small's greater complexity.[6] The decision to drop Small was taken when it surfaced that its bytecode was not portable between 32-bit and 64-bit architecture. Other alternatives, such as Lua[7] or Python,[8] were then considered, before eventually settling on JavaScript, by integrating the SpiderMonkey virtual machine.[9] By 2012, Small support had been effectively, even if inadvertently, removed from the engine.[10]

The idea of using JavaScript was eventually abandoned after Samuel Villarreal's experiments with the embeddable version of the SpiderMonkey interpreter in the KEX 2 engine for use with Turok: Dinosaur Hunter proved unsuccessful, suffering from massive lag spikes concurrent with passes through the virtual machine's obsolete mark-and-sweep garbage collector. This left Aeon temporarily without a target language and the project was placed on the backburner as a result.

Progress on Aeon implementation was quite slow. After James Haley (Quasar) became a full-time employee of Nightdive Studios, time available for further Eternity Engine development was dramatically reduced, and much of the effort was concentrated on smaller tasks that could still be accomplished during a reasonable timeframe. Eventually, Max Waine (Altazimuth) took over further development of Aeon, now targeting the AngelScript language, which is also utilized within the KEX Engine.[11]

References[edit]

  1. Quasar (18 September 2002). Eternity officially to use Small scripting language!. Doomworld forums. Retrieved 12 January 2023.
  2. Quasar (25 September 2002). Eternity compiled without FraggleScript, time to put in Small!. Doomworld forums. Retrieved 12 January 2023.
  3. Quasar (27 September 2002). Small to go into Eternity tonight, no later. Doomworld forums. Retrieved 12 January 2023.
  4. Quasar (29 April 2004). A "Small" Bit of Progress. Doomworld forums. Retrieved 12 January 2023.
  5. Quasar (27 May 2005). Eternity Engine v3.33.00 Released. Doomworld forums. Retrieved 12 January 2023.
  6. printz (31 March 2008). Small script decompiler?. Doomworld forums. Retrieved 12 January 2023.
  7. Quasar (16 March 2008). Considering Lua. Doomworld forums. Retrieved 12 January 2023.
  8. Kate Fox (22 October 2012). "python-branch." GitHub. Retrieved 12 January 2023.
  9. Quasar (8 October 2010). Aeon Branch Development Thread. Doomworld forums. Retrieved 12 January 2023.
  10. Quasar (28 May 2012). "Somehow EE_NO_SMALL_SUPPORT has been enabled in the project I've been using and so that code hasn't been compiled for a long time now. I have no idea how this happened and AFAIK it was not intentional.". Doomworld forums. Retrieved 12 January 2023.
  11. Altazimuth (8 May 2021). "aeon-docs." GitHub. Retrieved 12 January 2023.