A recent discovery from old backups revealed something long forgotten: I really developed a version of Elite for…. that’s right… Emacs text editor.
It was over a decade ago, during 2001 – 2003. Source files have dates May 2003 and after that all development ceased and everything was forgotten until I found the backups. I still have the domain and web site: elite-for-emacs.org.
This does take me back… There were two reasons why I made Elite for EMACS. The first was that I found C-source for original Elite trading, published by Ian Bell. And the second reason was that I was really into Emacs editor at the time and I had chosen my side in the holy war of editors. Over time, however, I’ve changed sides and I’m mostly backing Vi-editor and I don’t remember much about Emacs anymore (maybe that makes me a traitor…?).
So how do you make a game for a text editor? Because Emacs uses Lisp and I was into Lisp coding as well at the time. I still remember a little about Lisp and the code that I wrote all those years ago.
All the source of Elite for EMACS is available here: https://github.com/samisalkosuo/elite-for-emacs. Everything is as I left it over a decade ago. Source code license is the MIT license for my own code but full copyright of all original C code belongs to Ian Bell and David Braben. And I emphasize, I make no claims whatsoever to have written original C code or to hold copyright or to license them in anyway. I only translated the code to Emacs Lisp and really, really make no claim of any kind to the original code. If in doubt what code belongs to me and what not, compare original code with Lisp code. Also any names/etc. from Elite/Frontier or from any other source are from Elite/Frontier or any other source and I make no claims that they are mine. If you know that something is from Elite/Frontier or other sources then they are and they are not mine.
There are two versions of Elite for EMACS, in the GitHub they are elite-for-emacs-V1 and elite-for-emacs-V2. During the development of V1, I must’ve got bored with UI or something and then started V2 with totally different, shell-like, UI. But I never did much of V2 and it was in very early phases when I ceased all development.
Thousands of lines of LISP code make interesting read, and nostalgia made me dreaming of continuing the development but that will not happen. The code will remain as it is. At the time of writing, the code seems to be working with current Emacs version (GNU Emacs 24.5.1).
Reading the code shows that I had interesting ideas for the game :-). Excerpt from the README file:
Features - 8 galaxies, 256 systems in each galaxy - Trading - Combat - Combat status, legal status and reputation - AI Commanders trading/roaming/procreating in galaxy 1 - Combat graphics/animation - Window & widget based user interface - Delivery missions - Passenger transport missions - 1 special mission Notes Functional equipment: -missiles -fuel scoops -front lasers -large cargo bay -energy unit -galactic hyperdrive Reputation is gained when successfully completing missions. There are currently 64 AI commanders in the galaxy 1,other galaxies are not yet available for AI commanders. Commanders trade and roam galaxy following simple rules. AI commanders can also procreate with each other. Player can also have offspring with other commanders (of opposite sex).
Did you notice “procreating” :-)? AI commanders and player can have offspring. I wonder when that will be available in Elite: Dangerous…
I had lot’s of other ideas as we can see in the following excerpt from the todo file:
-ai commanders -todo rules for trading, combat, multiplication -kwisatz haderach -equipment, laser, -trade history -ships log, planets visited etc -combat -people -random effects in universe -bulletin board, includes missions etc -message board, includes messages -send email to other commanders -d&d character lisp version + add to some stations command where commander can test him/herself, like tarot card reader -missions, delivery, thief, assassination, detective missions (find person etc -special missions, each special missions result is something unique like navy galactic hyperdrive, system destruction, etc. -reputation -stickman animation w/ right on commander -thargoids, war, invasion -elections?, elect galaxy governor, universe president? -what this would affect? -a few candidates, right,center,left parties? each have different agenda -conspiracies that affect for example prices of some product -buy new ships -stealth device, expensive, no one sees, allows users to travel without combat -ships from elite/frontier -restructure code, file per state (..-commands-common.el, -commands-docked.el,etc) -dynamic universe -planet economy/government changes -todo rules -market changes based on productivity, bought, sold -market prices fixed for 30 days, then price check based on bought/sold
I also had plans to do online multiplayer:
-server hold market info, change market prices once per real time hour or somethin like that -server hold commander info -server has variable and calculations is done always on the client -todo easy/transparent upgrade to new version when commander struct changes (1st version done 19.2.2003) -message board in systems -local,galactic,universal messages -"message" command to users can send local messages -galactic/unviersal message only for me -email -list of commanders, ranking of commanders -versioning so that multiple elite versions can exist at the sametime.. -to be considered: competitions in online, first who visits every system gets elite-for-emacs.org email
Here are some screenshots from the game:
Playing Elite for EMACS after twelve or so years made me smile. A reminder of days long gone…
Welcome to the Elite Federation of Pilots.
Piloting Cobra MkIII, you are now one of The Few in The Eight Galaxies.
All pilots strive to Elite, few succeed and most die.
Pilot your Cobra MkIII with honor.