Programs by Samson W S Chan

Last update: 

ST3d Engine (2002 - present)

This is my a 3D engine, being developed along with Air Raid. The G3D engine is good but old and lacks some functions to compete with other commercial engines. First, I'm going to add the fuctions which is not in G3D first before getting into what G3D is providing.

Modules Status  
DirectInput with tactile and force feedback support Almost done but require some refinements It's a combined library of DirectInput and Immersion Foudation Class. DirectInput only supports force feedback device, so I need IFC for tactile feedback (mouse) and IFC provides a better editor to make effects.
Sound engine with 4 speakers and EAX support In progress The old G3D only supports 3D sound using 2 speakers (by altering the volume and frequency of each channels).

Air Raid (2002 - present)

Normal View

Zooming to have a better shot (an idea from sniper in Ghost Recon)

In network game, you can see your buddies shooting

More buddies (1 dead on the right side)

Free camera view from the sky (I'm going to add fighter view and bomb view)

We have the theatric widescreen view again

(click on the picture to enlarge it)

A working title. A new probject from the same company of Extreme Vegas. I have high expectation on this game as finally I can have full control over the program design. I have many ideas on this game like tactile and force feedback capability, a lot of screen effects and other cool stuffs.

A new game shell is being built. The first version of this game shell will be a C++ wrap of the G3D 3D engine and I will add my own implementation using Direct3D later.

I had made some mods made to the G3D 3D engine:

  1. Add 2D sprites support on top of 3D environment. This means polygons can be added to the screen by 2D (relative) position on the screen, instead of 3D positioning, using orthogonal projection. This is how the user interface was done and the screen can remain the same no matter what screen resolution it is. Some other games are still using 2D fixed size bitmap on top of 3D rendered screen for the user-interface, the problem is on higher resolution the user-interface components are getting smaller.
  2. Add support to change the color of the world on the fly, e.g. to black and white or color blending. This is an requirement of this game because my boss want a black and white version.
  3. Add support of alpha blending actors (semi-transparent actors)
  4. Add support for 32-bit mode and resolution higher than 1024x768.
  5. Remove the annoying error message if GLIDE driver is not found

Some proposed mods:

  1. Environment effects, e.g. raining, snowing and etc.

Extreme Vegas (2001 - 2002)

Click the title or here to go to the company web site. Here are some screen shots I made (click on the picture to enlarge it):

Casino Entrance

Chat with others in Multiplayer World

Widescreen and first persion view

Casino Map near the entrance

The mall is a maze, you will get lost

Using GOD mode, you can go anywhere

Widescreen shot of the Poor Game Room

A corner of the Rich Game Room

Character Selection Menu. Preview window is 3D and others are 2D
(2D and 3D Mix)

Blackjack (2D)

Craps (2D)

Roulette (2D)

Slot - Sinemut (2D)

Slot - Double Crown (2D)

Slot - Wrath (2D)

It is a combination of 1st-person or 3rd-person view 3D game, simulation game, multiplayer casino game and internet chat room. The world is persistent (the same server is running all the time) and user can join and leave the world any time to play games and meet with other people.

Click the caption to go to the web site and see their screen shots if they are still in business. It is my first job after Master graduation in US and the first industrial game I had particpated in. It is a great experience. Before that all the home-made games I had done I had to do the graphics myself which is the most time-inefficient task since I am not a good computer graphics designer. This time I could work with several professionals in 2D and 3D graphics design. I did enjoy in working with this game.

The game first started with its online Java sibling which only consists of several 2D games. This 3D version is using G3D 3D as the 3D engine.

Snake (2001)

Screen Shots from Palm Emulator

3 different sizes are available in this game

160x160 is the actual screen resolution of my Palm IIIxe


A classics game in 80s found in Atari or Apple //. I am writing this game to resemble the one in Nokia cellar phones. The reason to write this game is that it is easy to write, it does not involve complex screen art which is time consuming and I can put some new functions for practice, e.g. 2 players mode which uses infrared communication and user customized arena which involves database record management.

This game is still under development but you can download a playable but incomplete version here

One attractive thing in programming Palm OS game is that it uses techniques similar to those in Apple // which is my favourite machine. Nowadays, many programmers rely on the sophisicated third party libraries in writing games, e.g. DirectX, GLIDE and etc. Though they are convenient and make use of the compoment reuse paradigm which I totally agree, the programmers are now less talented and the effort in game developmenet has been shifted from programming to art design. Palm OS does not provide any sophisicated function for game programming. The programers have to write their functions or borrow from others to achieve efficient screen play. More techniques are required like EOR, ORA drawing. It is more challenging.

Valentine (2001)

Starts with an Angel moving from left to right

... and from right to left ..zzzzzz

Hearts are coming out

... more hearts

My big heart

My first Palm OS program. It is a short animation for Valentines Day written for my love. It requires Palm OS 3.5.

You might notice there is an empty period between 1997 and 2001. It is sad that during this period I am occupied by a boring job and school works at USC. Some programs had been written. E.g. some perl script, Java Servlets the job at Reuters and for the classes I was the teaching assistant, a distributed recording server at Hewlett-Packard Laboratories, Palo Alto, CA and etc. However, nothing specific I would like to mention here.

Period (1998-2001)

I went to have my graduate studies in Unversity of Southern California. Not much self-programming done, but some interesting school projects:

  1. Realtime cross-platform video conference system
    - project of a mutlimedia system research course
    - using Java, Java Media Framework with RTP
  2. Music Theory 101
    - project of Mutlmedia System Design course
    - an interactive Director 7 software for learning music theory

Distiributed Mutilmedia Recoding System Prototype (1999)

I developed this when I was a summer intern at Hewlett Packard Laboratories, Palo Alto. It involves a lot of Java and Javascript programming and the latest technology DVD+RW. Not much to mention at this point as I had signed the non-disclosure agreement.

Period - Reuters Asia Pte Ltd (1996-1998)

The dark period of my programming history. Despite the systems we developed in this company, nothing significant programming had done, though I did crack Raiden II and Baku Baku after quiting cracking for years, by request of my friends.

Video On Demand (1996)  

This is my final year project for my Computer Science studying in the Chinese University of Hong Kong. It is a 2-group project and each group consists of 2 members. My project partner is April, Lo Ming and supervised by Dr. John Lui.

The project intends to build a small Video On Demand system using existing low end PCs. It uses a client and server model. The QNX server, QNX is a real time UNIX-based operating system, is responsible for sending video data to client on request. Client programs run under DOS 6.2 or Windows 3.1. The client machines are equipped with RealMagic Lite MPEG card for decoding and displaying MPEG stream. 

Our group worked on the server's VOD Server, VOD File System, MPEG Packetizer, client's main program. 

VOD Server receives requests from client and retrieve the request MPEG block suing VOD File System. The VOD File System uses special tecniques to enchance disk retrieval speed using SCSI devices. MPEG Packetizer packetizes the MPEG stream into a number of packet which contains useful information for different VCR functions and stores them into storage device using VOD File System. 

The client provides a number of VCR functions for the user includes play, stop, pause, fast-forward, fast-reverse, screen capture and etc. It requies programming the RealMagic Lite MPEG card using the poorly documented and function-limited RealMagic API. 

The other group developed a VOD Protocol based on UDP for the frame transmission between client and server. 

The VOD System supports both Audio MPEG stream, Video MPEG stream and Audio-Video MPEG stream. 

The project acquired me a lot of programming experience as well as how to work under harsh condition. Although I gained many things from it, they could not compensate what I lost. 

StrikeTech Columns (1996)

My favorite Mcdull background

... and it's scrolling....

another background

all the screen effect and rendering was written in Assembly

It took a year (I was studying in collecge, not much time to do programming) to build the 2D engine using Assembly for the core and C for other non-critical functions. This was my first and the only complete VGA Mode-X game which involves low-level video card register programming. Click here for detail about this game.

For other experimental and incomplete games, please click here

HKVTech Virus Killer (1994) 

A virus killer to kill the virus HKVTech Virus which is written by HKVTech. This virus was first discovered in Hong Kong and spreaded quickly through BBS. The characteristics of this virus is that, at specific time, it will overwrite the CMOS setup causing corruption to password field of AMI BIOS

Nice to Meet You v3.1 Virus Killer (1993) 

A virus killer to kill the virus Nice to Meet you v3.1 which is written by Ming. This virus was first discovered in Hong Kong and spreaded quickly through BBS. This virus does no harm to computer. However, the intention of this virus seems to be hacking BBS since it will try to append menu code to RemoteAccess BBS system's menus so as to activate Doorway. 

QC Columns (1992) 

A simple Columns written for Society of Computer Studies for Queen's College 130 Anniversity Open Day. It is also the ancestor of StrikeTech Columns. 

HandyMag (1991) 

A pop up menu driven electronic magazine viewer first written for Horizon '90, a bulletin published by Society of Computer Studies of Queen's College. This issue is also the only electonic version of Horizon so far. HandyMag was later modified to provide inlined graphics support. 

SLVD Virus / SLVD 2 Virus (1991) 

It is an experiment. Don't worry, it had never been released. A simple virus which works only on MSDOS .COM files. It modifies the head of .COM and appends itself at the end. It will not aggressively search through the harddisk for .COM, it is too easy to be discovered. Once, a infected .COM is executed, the virus routine will be remained resident in memory. Whenever a healthy .COM is executed, it will be infected. The infected .COM can be completely cured except for some boundary cases. It is just for fun so it will not causes any corruption to system or disk, only some annoying effect on screen will be given periodically. 

SLVD 2 is a minor bug fix version. Due to some .EXE format file is named as .COM, SLVD will modify it as a normal .COM file and cause the infected file not executable. It is fixed by not infecting any .COM with a .EXE header. 

Abacus (1990) 

An abacus simulator completely written in 6502 Assembly. It provides pull down and pop up menu for user to manipulate the abacus and do simple arithmetic calculations. It is the program I like most so far. I had applied screen scrolling, AND-OR image drawing, page flipping and etc techniques to this program. It runs under Apple ProDos and autodetects the presence of 64K extended memory and uses it as RAM disk. 

Human Evolution (1990) 

It is an animation written completely in 6502 assembly and runs under Apple //e with Apple ProDos only since it uses 64K extended memory for sprites storing. It mainly consists of 2 parts, the main body and data control files. The main body reads in the data control file and does all the animation like sprites moving, background changing/scrolling and etc. The data control is just a text file which contains control code. In fact, the main body can be treated as an interpreter. It also uses page flipping, AND-OR drawing to achieve smooth animation. 

Invader (1989) 

It is the classic game Invader and the idea is translated from TI Invader of TI 99/4A home computer, however, this game hadn't been completed. I have written aliens moving, cannon shooting and most other parts. What I had not written was the scoring par t since I only wanted to practise graphics handling in this game like sprites moving, EOR drawing, bombardment checking and etc. It runs under Apple DOS and written fully in 6502 assembly. 

QuickType (1988, 1988, 1989) 

QuickType is a typing game like typing invader but the words move from right to left. There is 3 version of it and all are exercise for me to practise a new computer language learnt. The first version is written in 6502 Assembly for Apple ][, the second is in IBM Quick BASIC and the third is in C language for PC.


Download Center 

Palm OS

  • Valentine
    A short animation for Valentines Day (general version)
  • Snake
    A classic game still under development


World Wide Web

  • My simple JavaScript to enhance the home page
  • Guest Book
    A flexible guest book CGI written in PERL

Virus Killer 



  • Baku Baku
    Haven't done such kind of cheating for a long time