Java Version of Super Star Trek

I built a version of Super Star Trek in Java. This version of the Star Trek text game is based on the work of the SST2k project.

Star Trek, a text-based computer game, has a long history. It originated back in the 1970’s and there have been many variations of it since then. According to the Wikipedia article on the Star Trek text game, the SST2k project started in 2005. It is based on the C port of Tom Almy, which was done in the early 2000s.

srs-with-enemy-ships

Original SST Source Code

Example of Game Play

A bit of game play is shown below. Remember that this is a text-based game. The player is prompted for a command. The player enters a command and something happens in response. Refer to the SST documentation page for the set of commands for SST.

Briefly, here’s what is going on. your ship is the E in the scan view; stars, an asterisk (*), empty space, a dot (.); and enemy ships are represented by a K. The sequence we see below is a short range scan, followed by automatic phaser fire directed at any enemy ships in range, and then another short range scan. Note the changes in condition, energy, shields, etc. as the battle progresses.

srs-with-enemy-ships

phaser-fire-on-enemy

srs-with-enemy-and-damage

My Modifications

My goal was to see if I could build an Android app based on the game. I found that there were a few things that I thought would make the game experience better.

The first thing I changed is what you see with a short range scan (SRS). The original game shows the quadrant you are in, no matter your sector position within the quadrant. I changed it so your ship is always in the center of the scan. You see the ship (E) and four sectors away. The effective viewing area of SRS is a 9 x 9 area, rather than the 10 x 10 area of the original. You can see that in the figures (above). Dashes are shown in row 10 and column 10, indicating that no information is available about those sectors. The end result is more realistic view of space. The ship’s scanner has the same range in all directions.

Placing the ship at the center of SRS is a significant change to the game.  What you can see, which enemy ships are nearby, and how you move to far away quadrants are just a few of the aspects of the game that change.

The original game had another feature that I thought made the galaxy a bit hard to understand. Each time you entered a new quadrant, the positions of what was in the quadrant changed. The counts were invariant — same number of stars,  number of enemy ships, number of bases — but the locations changed. I put in an option so that even the old style game can be played with nonrandom quadrants.

To support these two changes, I changed how the game sets up and changed what information is stored to preserve the state of the game. To support nonrandom quadrants, there is no choice but to generate the contents of space at the start of the game.

Commands I introduced or modified for the wglxy variation of the game include:

  • LRM – long range move.
    A command like “lrm 3 5” moves the ship to quadrant 3 5.
  • PHASERS S – phaser fire, directed at a specific sector.
    A command like “pha s 200 4 8” directs 200 units of phaser power at sector 4 8.
  • MINE – Mine crystals from the planet you are orbiting.
    The original game requires that you be on the planet, having gone there via a shuttle. In my variation, mining just happens as long as you are in orbit.

You will also note the addition of one device to the original set of devices. To go along with the LRM move command, I added a new device to avoid landing on an existing star or blackhole when you move into a quadrant. I called the device a “collision avoidance device”. If it is functioning properly, the ship can jump to a different quadrant and not have to worry if it will be destroyed as it arrives. If it is damaged, the ship runs the risk of being destroyed.

I added a new way to set up the the game with preset quadrants. A preset file can be used to indicate the positions of stars, blackholes, planets, bases, and enemy ships. That means that the same game be played more than once. It’s also useful to compare one person’s performance against another.

The start up for a game asks you to choose the length of game, difficulty level, and which variation of the game you want. My variation is the “wglxy” variation. Variation “plain” matches pretty much what was in the SST2k code of March 2012. Variations “almy” and “fancy” are more like “plain” because I have not finished adding all the features from the Sst2k code.

sst-start

Java Source Code

The Java code I built is based on a clone of the SST2k, as of March 2012.

Current version of the Java port is available as a zip file on the Sst download page at Wglxy.com. As described above, the Java code is not a 100% match of the code. Some features have not been completed, and some new features have been added. This code compiles and runs inside of Eclipse Indigo, with Java 1.6 as the compiler.

(Update on February 4, 2016: There is a newer zip file on the Wglxy.com Super Star Trek page: sst-space-war-160204.zip.)

The C code from Sst2k is also accessible on the Sst download page at Wglxy.com.

Acknowledgements

According to the SST2k documentation page, the project contributors are David Matuzsek, Paul Reynolds, Tom Almy, Stas Sergeev, Don Smith, and Eric Steven Raymond.

All of us who are fans of the game are grateful for the work you have done on the original game and for the recent work to preserve and improve the game.

 

About Bill Lahti

Bill Lahti is an indie game developer. Latest project: an exploration game. Recent game: Hop, Skip, and Thump, a simple abstract strategy game. Other iOS and Android games: Double Star II, Wing Leader, Gomoku League.
This entry was posted in Game Design, Java and tagged , , , , . Bookmark the permalink.

13 Responses to Java Version of Super Star Trek

  1. Pingback: More Mobile Enemy in Starship App | More Is Not Always Better

  2. Pingback: Update – Java Version of Super Star Trek | More Is Not Always Better

  3. Pingback: New Code for Super Star Trek | More Is Not Always Better

  4. Will says:

    Great ! Thank you for doing this

    • Will says:

      BTW, I am not versed in Java so I tried in the console “java Sst” / “java Game” with Java 1.8.0_25 installed. I deep dived into the Java source and I could not find the main function (except in the Game Reader util file). How do I start the game ?

  5. Will says:

    Thank you !

  6. Hutch says:

    After loving the Android version to death, am going to download the java version for my pc.
    Would update my review of the Android version on Google Play, but it appears to be locked?

    Thanks for all your efforts —Hutch

    • Bill Lahti says:

      Glad you liked the Android game. How far did you get in the game? Did you find and destroy the aliens’ home planet?

      Interesting that the review is locked. I thought people could edit and update a review. Maybe you have to be on the same device where the game is installed.

      For the PC, you might be disappointed. The Java code here on this blog is the old text version of the game.

  7. Pingback: Reimagined Space Game for iOS and Android | More Is Not Always Better

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.