Description of The 1991 IEEE CS National Programming Contest

Description of The 1991 IEEE CS National Programming Contest

Post by ahmed h al-meh » Tue, 22 Dec 1992 14:41:45


      Description of the 1991 IEEE CS National Programming Contest


Many people have asked for either a description or a copy of the
contest driver from last year.  Unfortunately, the master tape was
corrupted and its immediate backup was stored incorrectly.  For some
time, we have been unable to locate the automatic backup, however, we
recently found it.  Included here is a description of the game "Gobble"
which was used as the virtual world in the 1991 National Programming
Contest.  It bears few technical resemblances to the 1993 NPC, but the
"team effort" aspect of the game is important to note and will be

At present, we are very busy trying to finish the 1993 NPC code to meet
our deadline of January 30th for a mock contest needed to playtest the
world, and we do not have time to massage the 1991 NPC program and
release it.  We are sorry about the inconvenience and hope that this
description will serve to illustrate how the contest driver worked.

npc.ece's internet address has recently changed to .
Mails that were sent to npc on Dec. 18 may have bounced. Please mail
them again.  We apologize for any inconvenience.

-Dave Taylor,
 1993 NPC Chair


"Gobble" description-

  The game contestants had to create players for was called "Gobble".
It was basically a capture-the-flag game.  The object was to get one
of your players to the middle of the screen, pick up the turkey, and
return it to your side.  On each team were three players, Ma, Pa, and
Squirt.  Ma was very strong and was armed with a frying pan which could
be swung very quickly but had a short range, and she moved slowly.  Pa
was almost as strong as Ma, but he was armed with a hoe which has a
slightly longer reach but less power than a frying pan; he was slightly
faster than Ma.  Squirt is the weakest but fastest player, armed with a
slingshot which takes a long time to shoot but has an infinite range.
If a player is hit enough times (depending on his strength), he or she
will pass out temporarily and recuperate his/her strength.  There is no
way to kill another player permanently, and the turkey could not be
killed.  Furthermore, the person carrying the turkey cannot shoot and
moves at half speed.

The world looked like this:

 |                                                        |
 |                                                        |
 |                  BB                                    |
 |                 BBBB                                   |
 |                  BB                                    |
 |                 ______     _______                     |
 |                |                  |                    |
 |___             |                  |                 ___|
 |p  |            |                  |                |  p|
 |o M|            O                  O                |M o|
 |r P|            O        T         O                |P r|
 |c S|            O                  O                |S c|
 |h  |            |                  |                |  h|
 |___|            |                  |                |___|
 |                |______     _______|                    |
 |                                                        |
 |                               BB                       |
 |                              BBBB                      |
 |                               BB                       |
 |                                                        |
 |                                                        |


  M = "Ma" starting position
  P = "Pa" starting position
  S = "Squirt" starting position
  T = Turkey starting position
  O = Window- can see through but not walk through or attack through
  B = Bush- can walk through and attack through but not see through
  | or _ = Wall- can not walk through, see through, or attack through

The characters (Ma, Pa, Squirt, Turkey), the bushes, and the weapons'
areas of effect were modeled as circles.  The walls of the house,
windows, and the porch areas were modeled as rectangles.  The world
coordinates were 2D "floating point"- it was not a matrix-based game.
A point reflected a pixel position on a Sun workstation (resolution =
1152x900) for convenience.

  Each character had a specified attack range, attack rate, attack
strength, "hit points", and movement rate.  The players wrote
individual clients which controlled each player on their team.  The
game processes (in UNIX) were laid out as follows.

\_________/ ------------------------.
  .------+--------+------------> \______/ <---------+------+---------.
  |      |        |                                 |      |         |
  v      v        v                |  |             v      v         v
 ____   ____   ________            |  |            ____   ____   ________
/Ma 1\ /Pa 1\ /Squirt 1\      .----'  '----.      /Ma 2\ /Pa 2\ /Squirt 2\
\____/ \____/ \________/      |            |      \____/ \____/ \________/
                              v            v
                            _____       ________
                           /Sound\     /Graphics\
                           \_____/     \________/

The heartbeat process provided ticks to the server and served to time
the rate at which the game turns were processed.  The sound and
graphics servers were given the complete state of the world so that
they could illustrate it and do the sound effects on workstations
separate from the ones with the character processes to give them all
the CPU.  The server sent different information to each client,
depending on what it could see in the game.  It also took commands from
the clients such as "move to X,Y", "attack at X,Y", and "pick up/drop

Technical information-

  All communications was through TCP/IP sockets to insure that data was
not lost and to enable a game to be played on four machines with the
clients of one team on one machine, the clients of another on the
second, the graphics and sound on a third, and the server and heartbeat
on a fourth.  Although the original intent was simply to spread the
load around, this provided an interesting side-effect.  If one of the
processes on one team used too much CPU time, the other processes on
the team suffered, providing a potentially useful balance in the game.

  All code was written in C, and the client interfaces were in C.  The
graphics used the Sun pixrect library, using the full screen as the
playing field (256-color), and the sound used the Sun's internal 8kHz
speaker.  The socket communications were in ASCII and used the
fprintf() and fscanf() functions to communicate.  The background tiles,
animation tiles, texture maps, and starting/ending movies were all
drawn by hand and digitized.  All artwork was scanned in on a Microtek
flatbed scanner on a Macintosh and were retouched using Adobe
Photoshop.  The sounds were digitized from several sound effects CD's.
The music was performed live and digitized.


1. 1993 IEEE CS National Programming Contest Addendum 2


            1993  IEEE CS  National Programming Contest [Addendum 2]


This is the second addendum to the IEEE CS National Programming Contest
announcement posting.  First a correction; MIT is in Cambridge not in Boston.

A quick update on prizes.  We got our first prizes in due to a generous
donation from Hewlett Packard- three HP 48SX scientific calculators and
three HP calculator printers.  As we receive more prizes, we will keep
you posted.  

We have received several letters from European schools asking for the
definition of "undergraduate."  As we have loosely defined it, it means
persuing a Bachelor of Arts degree, Bachelor of Science degree,
or its equivalent.  If you are unsure of your status, please send us

The deadline for applications is still December 30.  Please drop us a note
if you have any trouble submitting an application by this date.

Thank you.

Ahmed H. Al-Mehdi,
NPC Applications  

2. ToolTalk hell...

3. 1993 IEEE CS National Programming Contest [Addendum]

4. anyone know how to eject and load the cdrom drive from within a c++ program????

5. 1993 IEEE CS National Programming Contest Notice

6. IBM Thinkpad 755CSE Mwave sound support in Linux?

7. 1995 UT IEEE CS National Programming Contest

8. Redhat 7.1 & recompiled kernel

9. IEEE CS National Programming Contest [Addendum3]

10. 1993 IEEE Computer Society National Programming Contest

11. 1995 U Texas IEEE Computer Society National Programming Contest

12. 1995 U. Texas IEEE Computer Society National Programming Contest