You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
fluxion 32a6e6b989 contributors list 1 month ago
doc initial commit 3 months ago
files title and planets set to yellow color 1 month ago
.gitignore swim files excluded 2 months ago
LICENSE Fixed LICENSE file 3 months ago
Makefile extensive rewrite of the odyssey script 3 months ago contributors list 1 month ago
odyssey milestones added to the visualisation 2 months ago
odyssey.png added screenshot 1 month ago

odyssey 🚀

|                  odyssey                     |
|                                              |
|    journeys against the dying of the light   |

exciting journeys against the dying of the light


what is odyssey

This is a little game, written in C++ with ncurses, in which you can program a fictional journey to one celestial body of the Solar System. You can choose a destination from this list, sorted by distance from Earth.

  • Moon
  • Venus
  • Mars
  • Mercury
  • Vesta
  • Ceres
  • Pallas
  • Jupiter
    • Io, Europa, Ganymede, Callisto, Himalia, Amalthea, Thebe
  • Saturn
    • Titan, Iapetus, Rhea, Dione, Tethys, Enceladus, Mimas
  • Uranus
  • Neptune
  • Pluto
  • Haumea
  • Makemake
  • Eris

The journey always consists of three parts:

  • leg 1: Travel from Earth to the chosen destination.
  • mission: Stay at the destination for some time.
  • leg 2: Return to Earth.

You can choose to travel with a single spacecraft or instead use a fleet of spacecrafts (maximum 4 for now). If you launch a fleet, the mission at the destination cannot begin until all ships of the fleet arrive there. Moreover, leg 2 cannot begin until all ships have finished working on the mission.

Although you can use this game for any purpose you like, I created it as a purpose tracker. Each fleet is a task that I want to perform (daily or whatever). So, if I want to work hard in two aspects of my life (for example, physical training and music training) for two months, I can design an appropriate journey with a fleet of two spacecrafts. Each day I work on each discipline, I update the data so that the corresponding spacecrafts advance a proportional fraction of the journey.

Fantasy is a great discipline tool, a powerful path to commitment. Sometimes, a little help from fiction gives you a valuable sense of direction.

how to install it

Note: "~/projects" in all following examples stands for your usual location for self-built packages

From gitea

cd ~/projects
git clone
cd odyssey

From a downloaded tarball

cd ~/projects
tar xvzf odyssey.tar.gz
cd odyssey

how to use it

You can call the program from anywhere with the command 'odyssey'. You will enter into a very simple terminal session where you can only type five choices.

odyssey $ ./odyssey
|                  odyssey                     |
|                                              |
|    journeys against the dying of the light   |
[C]hoose existing mission
[N]ew journey
[U]pdate data
[V]isualise journey
[S]how options

>>>>= odyssey [] ==> 
  1. update data: use this to advance in your mission after you have done your daily (or whatever interval) work. You can enter decimal numbers between 0 and 1 for each task. If, for example, you have studied or trained half of what you wanted, you can type an increase of 0.5. This is also useful if you have a task that is composed of subtasks. For example, if a spacecraft is for physical training, this task can be divided in running, force training and stretching. Then, if one day you are supposed to do the three aspects but only do one, you can enter 0.33. Or, if one day you were supposed to run and stretched but you did not stretch, you can type 0.8 or 0.7 or whatever proportion you consider is between running and stretching in terms of relevance for your training. Keep in mind that each advanced unit in the game corresponds to a day in the journey. So, if the journey consists in 100 days, but you don't keep an ideal pace, your journey will correspond to more than 100 days in real life (although in the game it will be exactly 100 days). Be aware of these two different measures of 'day'.
  2. visualise journey: this choice will present you a graphical interface in which you see your progress. You can tweak the code to change colours if you like. I chose default colours with a black-background terminal in mind. To exit the visualisation you can type "Esc" or "q". Ctrl-C works too.
  3. program journey: here you can program a new journey. You can launch as many as you like. Each journey will consist of two files. One with txt extension with all the required parameters and another with dat extension in which we write the current state of the journey. As the files are created in the current directory and odyssey looks for them there -- be sure to start the program at the same location.
  4. quit program: this does not need an explanation.
  5. show options: this will reprint the menu.

how to use it from the commandline

  • Start a new journey with
~/projects/odyssey/files/parameters {journeyname}
  • Update the status of the mission with
~/projects/odyssey/files/update {journeyname}
  • Visualise the progress using
~/projects/odyssey/files/visual {journeyname}

possible extensions

I would like to extend this game as a multi-player game. The increased social pressure would enhance its benefit as a commitment tool. This could be implemented through SSH, ideally through a tilde/pubnix community like or (there are many more).

A rudimentary "multiuser" functionality is already provided, assuming the location of other user's odyssey file is known and the file is world-readable.

For instance: to see kirk's Five_year journey:

~/projects/odyssey/files/visual ~kirk/five_year

| odyssey: 5Year mission. total days = 192                                     |
|E  M       V   C                     J                                       T|
|a  a       e   e                     u                                       e|
|r  r       s   r                     p                                       t|
|t  s       t   e                     i                                       h|
|h          a   s                     t                                       y|
|                                                                              |
|                                                                              |
|                                                                              |
|                                                                              |
|Hernandez leg1= 2/91 (  2%) mission= 0/10 (  0%) leg20/91 (  0%)              |
|Spock     leg1= 3/91 (  3%) mission= 0/10 (  0%) leg20/91 (  0%)              |
|Uhura     leg1= 3/91 (  3%) mission= 0/10 (  0%) leg20/91 (  0%)              |
|Kirk      leg1= 4/91 (  4%) mission= 0/10 (  0%) leg20/91 (  0%)              |

I would like to introduce external attacks to the fleet, happening at random times and places, in which you would need to do extra work in order to recover from the fight. Also, the probability of being attacked would be proportional to the dispersion of the fleet, so that a fleet travelling together would receive less attacks and would recover faster. There could be a chance of being killed, which would terminate the journey. The idea here would be to enhance the harmony between your different tasks. For example, if you have two spacecrafts corresponding to physical training and music training, you want to have an equilibrium between them. This does not mean to work the same amount of hours in each. You decide the proportions, and then update the state of the game accordingly, increasing a whole unit if you have performed all the work that you considered as ideal.

It would be nice to have an easier customisation of colours. Aesthetics is very motivational, so the fancier the visualisation gets, the more motivational it will be, because it will feed your fantasy in stronger ways. Of course, by fancy I mean fancy within the limits of plain text visualisation. And always within the limits of extremely low CPU use.

It would not be difficult to keep a ship's or a fleet's log in this game. This would improve a lot the meditative aspects of it.

Of course, the navigation interface and the visuals could be much improved, but in its current for it is usable, and the main focus should always be in the tasks you want to perform. The game must be a good context in which you grow, but it must remain simple to not consume a lot of mind space.

contributors up to now

samhunter, fluxion, unicorn