UPFun and Games

Interactive

Recreation

I used to spend a fair amount of time playing interactive online games. I played on TrekMUSE and TrekMUSH: Among The Stars. Both are, as you have probably guessed, based on a StarTrek® theme.

As I became more proficient in the language used by the MUSE engine which runs the TrekMUSE game, I gave a series of programming lectures to other players about it. I also put together an edited version of a discussion I had with one of the game directors about the parser. Another good source of information is this MUSE manual by Edward Wallace.

I have also started to play around with a MUX and a space engine in my spare time. The space engine is under the GNU General Public Licence, and I co-develop it with Cameron Smith, and feedback from the userbase.

TinyFugue

If you play a fair amount on multi-user servers the TinyFugue client software is something you should take a look at if you run on a unix system. It is one of the most widely used clients, and has a powerful macro language, multiple session support, and logging capabilities.

I have put together a RedHat RPM of TinyFugue for x86 based PCs running Linux. It installs the client software as /usr/bin/tf and the library files into /usr/lib/tf-lib/*. The RPMS and SRPMS I have built for Redhat 7.2 are available.

TF Macro Examples

The status line in TinyFugue's visual mode can be easily customized. For example, the following script is one I use. It is released under the GNU General Public Licence.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; TF Tools
;; 
;; TrekMush: Among the Stars Commands
;;
;; Released under the GNU Public License.
;; Copyright Mark Cooke, 1998. <mpc@star.sr.bham.ac.uk>
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

/def -wMFrl ShieldFreq= \
	/eval /send -wMFrl shield freq $[strcat(rand(999),".",rand(999))]

/def -wMFrl WarpHop= \
	/send -wMFrl warp 1 %; \
	/def -wMFrl -t'[Speed now warp 1.000000]' -n1 -msimple = imp 1

/def -wMFrl -mregexp -t"You have ([0-9]+)/([0-9]+) Body, \
	([0-9]+)/([0-9]+) Endurance, and ([0-9]+)/([0-9]+) Stun." ATS_Health= \
	/set ats_body=%P1 %; \
	/set ats_full_body=%P2 %; \
	/set ats_endurance=%P3 %; \
	/set ats_full_endurance=%P4 %; \
	/set ats_stun=%P5 %; \
	/set ats_full_stun=%P6 %; \
	/test status_fields := status_fields

/def -wMFrl -msimple -t"Endurance fully recovered" ATS_Endurance_Rec= \
	/set ats_endurance_hi=Ccyan %; \
	/set ats_endurance=%ats_full_endurance

/def -wMFrl -msimple -t"Stun fully recovered" ATS_Stun_Rec= \
	/set ats_stun_hi=Ccyan %; \
	/set ats_stun=%ats_full_stun

/def -p5 -h"WORLD MFrl" ATS_Activation_Hook= \
	/eval /set status_fields=%ATS_Status_Bar %; \
	/test status_fields := status_fields

/def -wMFrl -mregexp -t'\[ETA is ([0-9]*) days ([0-9]*) hrs \
	([0-9]*) min ([0-9]*) .*' ATS_ETA_D= \
	/let hours=$[%P1 * 24 + %P2] %; \
	/IF (%hours > 99) \
		/let hours=99 %; \
		/let minutes=59 %; \
	/ENDIF %; \
	/set ats_eta=$[substr(strcat("0",%hours),-2)]:\
	$[substr(strcat("0",%P3),-2)] %; \
	/IF (ATS_Eta_Update =~ "Yes") \
		/kill %ATS_Eta_pid %; \
	/ENDIF %; \
	/set ATS_Eta_Update=Yes %; \
	/eval /repeat -$[%P2 + 60] 1 /ATS_Track_Eta %; \
	/set ATS_Eta_pid=%?

/def -wMFrl -mregexp -t'\[ETA is ([0-9]*) hrs ([0-9]*) min ([0-9]*) .*' ATS_ETA_H= \
	/set ats_eta=$[substr(strcat("0",%P1),-2)]:$[substr(strcat("0",%P2),-2)] %; \
	/IF (ATS_Eta_Update =~ "Yes") \
		/kill %ATS_Eta_pid %; \
	/ENDIF %; \
	/set ATS_Eta_Update=Yes %; \
	/eval /repeat -$[%P2 + 60] 1 /ATS_Track_Eta %; \
	/set ATS_Eta_pid=%?

/def -wMFrl -mregexp -t'\[ETA is ([0-9]*) min ([0-9]*) .*' ATS_ETA_M= \
	/set ats_eta=00:$[substr(strcat("0",%P1),-2)] %; \
	/IF (ATS_Eta_Update =~ "Yes") \
		/kill %ATS_Eta_pid %; \
	/ENDIF %; \
	/set ATS_Eta_Update=Yes %; \
	/eval /repeat -$[%P2 + 60] 1 /ATS_Track_Eta %; \
	/set ATS_Eta_pid=%?

/def -wMFrl -mregexp -t'\[ETA is ([0-9]*) sec.*' ATS_ETA_S= \
	/IF (ATS_Eta_Update =~ "Yes") \
		/kill %ATS_Eta_pid %; \
	/ENDIF %; \
	/set ats_eta=00:00 %; \
	/set ATS_Eta_Update=Yes %; \
	/eval /repeat -$[%P2] 1 /ATS_Track_Eta %; \
	/set ATS_Eta_pid=%?

/def -wMFrl ATS_Track_Eta= \
	/let hours=$[substr(%ats_eta,0,2)] %; \
	/let minutes=$[substr(%ats_eta,3)] %; \
	/IF (%minutes > 1) \
		/let minutes=$[%minutes - 1] %; \
	/ELSE \
		/let minutes=59 %; \
		/let hours=$[%hours - 1] %; \
	/ENDIF %; \
	/IF (0 > %hours) \
		/let hours=0 %; \
		/let minutes=0 %; \
		/set ATS_Eta_Update=No %; \
		/beep %; \
	/ENDIF %; \
	/set ats_eta=$[substr(strcat("0",%hours),-2)]:\
		$[substr(strcat("0",%minutes),-2)] %; \
	/IF (%ATS_Eta_Update =~ "Yes") \
		/eval /repeat -60 1 /ATS_Track_Eta %; \
		/set ATS_Eta_pid=%? %; \
	/ENDIF

/set ATS_Status_Bar=@more:8:Br "_H2H(":5 ats_body:2:%ats_body_hi ":":1 \
	ats_endurance:2:%ats_endurance_hi ":":1 ats_stun:2:%ats_stun_hi \
	")_ETA(":6 ats_eta:5:Ccyan ")":2 @world :1 @active:11 :1 @clock:5 

/set ATS_Eta_Update=No
/set ATS_Combat=No
/set ats_body=10
/set ats_endurance=26
/set ats_stun=26
/set ats_full_body=10
/set ats_full_endurance=26
/set ats_full_stun=26
/set ats_body_hi=Ccyan
/set ats_endurance_hi=Ccyan
/set ats_stun_hi=Ccyan
/set ats_eta=00:00

StarTrek® is a registered trademark of Paramount Pictures, a Viacom company.

Valid XHTML 1.0! Maintained by Mark Cooke
Last Updated: 27-Oct-2002