Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Retro gamer #6

Open
wants to merge 3 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion content/posts/2021-01-03-storiadelpcgaming.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
date: 2021-02-02
title: 'An interview on the history of PC Gaming '
template: post
teaser: 'with Italian production company Storia del pcgaming'
teaser: 'With Italian production company Storia del pcgaming'
thumbnail: '../thumbnails/logo-pc-gaming.png'
slug: storiadelpcgaming
categories:
Expand Down
46 changes: 46 additions & 0 deletions content/posts/2021-09-12-retro-gamer-questionnaire.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
---
date: 2021-09-12
title: 'Questionnaire from Retro Gamer About Worms?'
template: post
teaser: 'How one of the strangest games ever got published'
thumbnail: '../thumbnails/worms.png'
slug: retrogamer
categories:
- history
- worms?
tags:
- pcgaming
---
## Questions from Andrew Fisher for a Retro Gamer Article on Worms?
## How did you start programming?

I entered the University of California at Berkeley as a Physics major in 1965. By the end of my Sophomore year I realized that a Bachelor's degree in Physics is pretty useless. To really make a successful career in Physics one must get an advanced degree, a doctorate degree. About this same time I met a graduate student who was in fact working on the doctorate at Berkeley. To pay for his studies, the University had given a job at Berkeley Lawrence Livermore Laboratory and a programmer. After several years he came to the suspicion that the University wasn't giving him his PhD because they knew they would lose him as a programmer if he actually graduated, and he was too valuable as a programmer to lose. Realizing this, and realizing I probably didn't spend another 6 years years in school, I changed my major from Physics to Computer Science in 1968. In 1968, a group of Electrical Engineering faculty members had transferred to the College of Letters and Science to participate in establishing a Department of Computer Science. This program was pretty theoretical and I included classes on Formal Languages and Finite Automata Theory. I studied Turing Machines rigorously. There were no "programming classes" per se. Being in the Computer Science program did me give an account on the main frame a CDC-6400, one of the fastest supercomputers in operation at the time. It was a 10 MHz 60-bit processor, 64k of 60-bit core memory, 500k of ext. This is the machine I taught myself how to program on. I bought a copy of "LISP 1.5 Programmers' Manual" and taught myself LISP. The CDC-6400 did not have a time sharing operating system at the time, so each compile was manually punched into a deck of cards and submitted as a batch job to the computer center. Sometime later (between 2 and 12 hours later) your deck of cards would be returned along with the printout of the results. I was able to use a required course in predicate calculus (symbolic logic) as an inspiration for my sample program. So I wrote a predicate calculus theorem prover in LISP, on punch cards. It was incredibly difficult and very tedious but I did get it (mostly) working eventually. It turned out to be a very valuable experience, because once you have programmed LISP on punch cards in a batch environment, all other programming environments are easier by comparison. This has been true across 5 decades of programming experience, and 40 some languages.

## How did you come up with the idea for Worms?

In 1982 I was working at Xerox PARC and had access to the world's best personal computer development environment. It had a personal computer with bit-mapped display, a 10MB ethernet, a 2.5 MB removable disk cartridge, high level languages, and 128 KB of RAM. However it did not have color, it did not have sound, and my Xerox got to decide what I could program on it. So in early 1982 I bought my first personal computer. An Atari 800, with 48KB ram and two 88K floppy disk drives. I was looking for an idea for something to program on my new Atari and I remembered reading an article about the November 1971 issue of Scientific American magazine by Martin Gardner about "Paterson's worms". This was the kernel of the idea for Worms? I quickly realized that I could turn into a 4 player game on the Atari. I then realized that it could be made into an interesting territory capture game by having the last worm to lay a trail out of a hex score a point for that hex. As I investigated the sound and graphics capabilities of the Atari 800 I discovered they were an almost perfect match for the game design. For example the moving worms and sprites and missiles, while the grid display is actually character graphics which gave me the ability to change 64 pixels on the screen (an 8x8 character graphic) by changing one bye in memory. The fact that the Antic chip made it possible to offset each text row by half a character made this possible. Perfect.
## What was the most difficult part of the programming?
Learning a bunch of new things at once. Since I had already been programming in higher level languages for more than a decade I wasn't really excited about writing an entire game in 6502 Assembly language. So I found a public domain FORTH, fig-Forth by Bill Ragsdale. Learning Forth, and the Atari Hardware and 6502 Assembly all together were the hardest. Programatically making the Vertical Interrupt routines, all written in 6502 assembly, play nice with the Forth code was probably the most challenging technical part. Waiting for interminably slow Atari 810 disk drives was frustrating. I think it took well over 30 minutes to do a full compile of the Forth Code. It took me about six months of working at home in the evenings and on weekends to get a solid playable demo. Then it took about six months to get official release from Xerox of any possible claim they may have to the works since they were officially my employer during development. (Yes: my biggest expense in developing Worms? besides the Atari 800 was lawyer's fees.)
## I enjoy the way the sounds build up, do you think that is an important part of the Game?
Yes I think the sounds are an incredibly important part of all games, and especially this game since the sounds are all generated by patterns chosen by the user. A good friend, and great musician, and fellow Xeroxer and EA Pioneer, Steve Hayes, help me with the audio. I think it was his idea to use a pentatonic scale which gives the game its oriental sounding flavor.
## Were you involved in the Commodore 64 conversion at all?
Yes I did the Commodore C-64 myself. It was relatively easy because we at EA had already ported the Forth kernel to the C-64 for the 'Cut & Paste' text editor and the 'Financial Cookbook' application.
## Were you honoured to appear in the classic Electronic Arts advertisement WE SEE FURTHER with other famous programmers?
Yes I was very honoured. However at that point none of us were famous. I knew all of their works because I was working at Electronic Arts. So I knew that they were artists and would be famous soon. That advertising campaign was brilliant. EA hired the best rock photographer, Norman Seef, and flew him up to San Francisco. Norman Seef was a doctor in South Africa when he dropped out and moved to Los Angeles to become a rock photographer. You would recognize many of your favorite rock artists in his photographs. He also shot the famous picture of Steve Jobs sitting cross legged in a bare room with a Macintosh in his lap. EA spared no expense on that campaign. I found out many years later that EA spent more on ad placements for that one ad than they did total development cost of all of the launch products combined.
## Did you like the gatefold packaging those early EA games came in?
Yes, yet another stroke of EA marketing brilliance.
## Did you know about the game being reissued in Europe under the alternative name IQ?
Yes I did the port. They wanted it on cassette. I can't believe anyone would wait that long for a game to load. It was bad enough on the C-64 disk drive. It is a funny story about how that port happened and turned out.
## Have you heard of the Nu Wave label that published IQ?
Yes, if that is the company that was being run by Clement Chalmbers.
## Nu Wave’s games were all experimental, do you think Worms/IQ fitted that?
Yes definitely. Nu Wave expressed an interest in publishing the game in Europe. EA was not interested in marketing the game any further anywhere. Worms? was SO different that it quickly became a sort of cult product. Reviewers loved it because it was sooo different and consumers hated it because it was so different. Anyway EA agreed that I could license it. I signed a deal for a small advance and sent the ported code over. That was the last I heard of it until several years later when I got a letter from a British Bankruptcy court saying there were no funds to cover the debt owed to me.
## When did you leave the games industry?
I left the games industry four times. The first time was in 1989 when I left EA to go to Silicon Graphics to help them add multimedia to their 3D hardware and software. I went back in 1992 to join Trip Hawkins again as he was building the 3DO Company. I left 3DO in 1999 in the dot com bubble to join a voice chat start-up, Firetalk Communications. When the bubble burst I went back to 3DO until the wizard ran out of food. I took six months off to study Bioinformatics then rejoined the games industry in its mobile guise with Digital Chocolate in 2004 (YATHGS -- Yet another Trip Hawkins Game Startup. I left the game industry for the last time in 2006 to join Google.
## What made you go back to create Darworms?
When I retired from Box Inc. in 2017 I decided I wanted to learn JavaScript. In 50 years in the industry and having learned over 30 different languages I know that the best way to learn a new language is to write and application in that language. Worms? is a fairly simple game so I decided to use it for my sample application. I also wanted to make it available to more people. I changed the name because I always hated the name "Worms?" (probably the worst idea EA marketing ever had). My original name was "Sumo Worms". Darworms also hints at some planned extensions. It is amazing to me that even though billions of people have access to www.darworms.com fewer people have visited for free than did pay $40 US 1982 dollars for a shrink wrapped floppy disk. The difficulty of getting anything noticed in an evironment where thousands of new products get launched everyday is enormous.
## Do you think there is untapped potential in the game’s idea?
Yes. I have many ideas for extensions. Hooking up a javascript midi player to the moves. Network Play. Genetic Programming to let worms breed when they die together in a cell and evolve the darworms for high scores, or interesting patterns. Make a 3D version. The game is available at www.darworms.com The game is open sourced at https://github.com/dmaynard/Darworms If anyone would like to contribute or collaborate please let me know.
David S Maynard
software-artist.com
@DSMaynard
Binary file added content/thumbnails/worms.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
40 changes: 27 additions & 13 deletions src/components/Contact.js
Original file line number Diff line number Diff line change
@@ -1,42 +1,56 @@
import React, { Component } from 'react'
import { Link } from 'gatsby'
import NewsletterForm from './NewsletterForm'
import React, { Component } from "react";
// import { Link } from 'gatsby'
// import NewsletterForm from './NewsletterForm'

export default class Contact extends Component {
render() {
return (
<>
<h1>Stay in Touch</h1>
<p>
I write about recollections of my career in Silicon Valley, and on my continuing journey of learning new software languages, frameworks, and deployment{' '}

I write about recollections of my career in Silicon Valley, and on my
continuing journey of learning new software languages, frameworks, and
deployment{" "}
</p>

<p>You can also contact me via email or find me around the web.</p>
<ul>
<li>
<strong>Email</strong>: <a href="mailto:[email protected]">[email protected]</a>
<strong>Email</strong>:{" "}
<a href="mailto:[email protected]">[email protected]</a>
</li>
<li>
<strong>GitHub</strong>:{' '}
<a target="_blank" rel="noopener noreferrer" href="https://github.com/dmaynard">
<strong>GitHub</strong>:{" "}
<a
target="_blank"
rel="noopener noreferrer"
href="https://github.com/dmaynard"
>
dmaynard
</a>
</li>
<li>
<strong>Twitter</strong>:{' '}
<a target="_blank" rel="noopener noreferrer" href="https://twitter.com/dsmaynard">
<strong>Twitter</strong>:{" "}
<a
target="_blank"
rel="noopener noreferrer"
href="https://twitter.com/dsmaynard"
>
dsmaynard
</a>
</li>
<li>
<strong>LinkedIn</strong>:{' '}
<a target="_blank" rel="noopener noreferrer" href="https://www.linkedin.com/in/davidsmaynard/">
<strong>LinkedIn</strong>:{" "}
<a
target="_blank"
rel="noopener noreferrer"
href="https://www.linkedin.com/in/davidsmaynard/"
>
David S Maynard
</a>
</li>
</ul>
</>
)
);
}
}