70 lines
2.6 KiB
Plaintext
70 lines
2.6 KiB
Plaintext
Pond is a reimplementation of Tom Poindexter's 1985 game CROBOTS. Google has
|
|
(with the author's permission) updated the game to be playable by a new
|
|
generation of programmers.
|
|
|
|
Differences between Pond and CROBOTS:
|
|
|
|
* Theme
|
|
CROBOTS features robots fighting in a battlefield. Given today's diversity
|
|
priorities, a different theme was needed. The reimplementation features
|
|
rubber ducks in a pond.
|
|
|
|
* Battlefield size
|
|
Height and width of battlefield is 100m x 100m instead of 1000m x 1000m.
|
|
Since speed and damage/health go to 100, scaling the pond's size to the same
|
|
magnitude makes for a cleaner API. This was not possible in CROBOTS since
|
|
integers were the only data type, whereas JavaScript has floats.
|
|
|
|
* Scan resolution
|
|
CROBOTS scans in a direction with a resolution of +/- n degrees. Pond scans
|
|
with a total resolution of n degrees. The only difference is that Pond's
|
|
resolution number is double that specified in CROBOTS.
|
|
|
|
* Failed scan
|
|
CROBOTS returns 0 for a scan that failed to detect another player.
|
|
Pond returns Infinity.
|
|
|
|
* Impact damage
|
|
CROBOTS gives a flat 2% damage to robots colliding with a wall or another robot.
|
|
Pond gives up to 3% damage, proportional to the speed at impact.
|
|
|
|
* Blast damage
|
|
CROBOTS gives 3%/5%/10% damage to robots within 40m/20m/5m of an explosion.
|
|
Pond uses a proportional formula ((1 - r / 4) * 10) which is similar (after
|
|
accounting for the 10x decrease in battlefield size), but slightly increases
|
|
the value of accuracy.
|
|
|
|
* Swim
|
|
Because of the rubber duck theme, 'swim()' has been added as an alias to
|
|
CROBOT's 'drive()'. Pond supports 'drive()' as an undocumented function.
|
|
|
|
* Stop
|
|
Pond introduces a new function 'stop()' that is the equivalent of
|
|
'drive(0, d)', where d is the current driving direction.
|
|
|
|
* Health
|
|
People are more used to games having 'health' (more is better) rather than
|
|
'damage' (less is better). Pond introduces 'health()', with 'damage()' being
|
|
an undocumented function.
|
|
|
|
* Trigonometry
|
|
CROBOTS has top-level sin/cos/tan/atan functions that use degrees.
|
|
Pond adds these to the JavaScript Math object as Math.sin_deg/Math.cos_deg/etc.
|
|
|
|
* Constants
|
|
Various constants such as acceleration rate, robot-missile speed ratio, etc are
|
|
tuned differently. These differences are not intentional.
|
|
|
|
Google is indebted to Tom Poindexter for inspiring so many young people to
|
|
learn about programming through his game. We hope to continue this success
|
|
with Pond. As with CROBOTS, all the code for Pond is open source.
|
|
|
|
The original DOS-based CROBOTS game may be found here:
|
|
http://crobots.deepthought.it/home.php
|
|
https://github.com/tpoindex/crobots/
|
|
|
|
--
|
|
Neil Fraser
|
|
Google, California
|
|
August 2014
|