2016-05-01

Magic Fighters

In 2004 I was playing a lot of games like Gauntlet II and Pokémon (first generation). This was also a period in which I started writing games on my graphical calculator. This resulted in some dungeon crawlers and text based battle games, one of which was Magic Fighters. Recently I decided to recreate this game in Java.

Five screenshots from the game 'Magic Fighters' written in Java.
In 2004 I wrote the turn-based battle game in TI-BASIC, the easiest language available on the TI-83 Plus I owned. Not much later, I also tried porting it to MS-DOS, by writing a new version in QBasic. I can't remember finishing that game, but I did create a colourful ASCII-based interface (I cannot call '╦' and '▓' text, can I?). After digging through many of my backups, I found two versions on a floppy drive, and discovered why I never finished a game in QBasic:
10 SCREEN 0: COLOR 0, 0: CLS : SCREEN 0: COLOR 0, 1: PLAY "O4T200L8CDECDEL2F"
38 LOCATE 8, 29: PRINT "�����������������Ļ": LOCATE 9, 29: PRINT "�{Magic��Fighters}�": [...]
54 SCREEN 0: COLOR 0, 0: CLS : SCREEN 0: COLOR 4, 1
57 LOCATE 9, 25: PRINT "�������������������������Ļ": LOCATE 10, 25: PRINT "�{Magic Figh [...]
90 LOCATE 16, 26: INPUT "Enter your choice (1,2,3)", X
100 IF X = 1 GOTO 370
110 IF X = 2 GOTO 124
120 IF X = 3 THEN STOP
122 GOTO 54

Basic is awful xD I also found a lot of documentation on paper, including a transcription of the complete TI-BASIC code for different versions, which allowed me to reconstruct the game.

Both versions featured battles of two fighters having hitpoints, a level, a collection of weapons and shields. Before each battle, the opponent was generated based on the statistics of the player, to ensure each new opponent would be roughly as strong as the player. In battle, each turn the player would select one item from its inventory (a menu system) to use in the next round of the fight. After that, the computer would do the same, and the round would be played. Each weapon and shield had its distinct effects on the opponent and its attack or defence. If the player defeats the computer, his level would rise. As the level rises, more and more of all shields and weapons become available to the fighter and the battles change.

In my little project of rewriting this game in Java, I created the game as described above, with little adjustments. Most shields and weapons have the same effects (including offensive/defensive strength) and the menu system has been preserved. For the nostalgic effect, the width of the game is almost the same (20 columns instead of 16), as can be seen above in the five screenshots side-by-side. I couldn't help myself and re-introduce a challenge/tournament in the game. It had been in the game up to version 3.1, but was replaced by single matches in later versions. I did shrink the tournament a little though: 8 opponents instead of 500.

Click here to download the game. Just unzip it and run the jar. You do need to have Java 8 or later installed to run it. You can find the source code on BitBucket. One of the original guides and transcriptions I used in the reconstruction process, can be found here.