📜 ⬆️ ⬇️

We talked with Troy Miles, the programmer of Neuromant

[Troy Miles is a speaker, author, and software developer with years of experience. He began his career with writing games for Commodore 64, Apple II and IBM PC on the 6502th x86th Assembler. Twice winner of the “Game of the Year” award. Author of the book "jQuery Essentials", as well as a large number of journal articles and publications in his own blog. Creator of training videos. Now he is programming web and mobile apps at Kelley Blue Book.]


Hello! You, probably, know me from the “Reverse Neuromant” series , where I talk about how we reverse-engineer and port a video game based on the novel of the same name by William Gibson . Because of its content, it is rather a spin-off than the next numbering - an independent material that does not require additional preparation from the reader.


It began with viiri , with the words, “This is a programmer who wrote Neuromant. I think he will not mind answering the questions, ” - sent me a link to the twitter account of a person named Troy Miles (in the photo). Then I worked on the fourth part of the cycle and did not attach much importance to it. After thinking about it a few weeks later, the idea of ​​an interview with a developer seemed so successful that I immediately wrote to Troy about who we are, what we do, and what we want from him. The answer was not long in coming, Troy very favorably responded to our undertaking and agreed to answer my questions.




- Hello, Troy, I think it's time to start our little interview. For starters, I want you to introduce yourself to my readers. Please Troy, tell us about the highlights of your professional career.


- Hello everyone, my name is Troy Miles . I have been working as a programmer since 1979, when I was still in high school. I became the fourth employee hired at Interplay [after it was founded] in 1983. These were great times and great guys. I wrote Neuromanta , Lord of the Rings , and helped with the development of many other games.


I left Interplay in 1992. I still loved this company, but I needed a stable work schedule. Spent some time at Phoenix Technologies Ltd , working on the system software for PCMCIA modules. Somehow even wrote an article about it in Dr. Dobb's magazine .


After Phoenix, I became an independent developer for a while. Made a few contract games for CDI . They were terrible, not in terms of programming - the gameplay was so-so, and the CDI itself, in principle, was not a good idea.


In 2007, I joined the Kelley Blue Book , where I stay today. Our website is www.kbb.com. This is a resource on automotive topics. Without too much gloss, but my colleagues are good enough.


In KBB time, I began to write again and, if possible, hold small conferences. So far, the reports were mainly about jQuery and jQuery Mobile . As a result, I even wrote a book on jQuery and made an instructional video on Ionic . I also made a jQuery Mobile video for Learn Now Online .


Last year, I started shooting videos for LinkedIn Learning / Lynda.com . Today there are 5 of them: two in C ++ , two in Kotlin, and one in Bash . I plan to make some more clips in C ++ in the near future.


In my free time I am developing a mobile game. Nothing extraordinary, ordinary kazualka, which I hope to finish in the first half of 2019. This will be my first game since the mid-nineties CDI .


Q1
- Hi Troy, I think that it’s time to start our little interview. Firstly I want to introduce you to my readers. Please, Troy, get us through the milestones of your professional career.

- Hi All, I am Troy Miles . I have been a paid programmer since 1979, while I was still in high school. I was employee number four at Interplay back in 1983. Those were great times and great guys. I wrote Neuromancer , Lord of the Rings , and helped out on a lot of other games.

I left Interplay in 1992. Still needed to work regular hours. Spent sometime at Phoenix Technologies Ltd. Working on PCMCIA system software. Even wrote Dobb's magazine .

After Phoenix I went independent for quite sometime. Did some CDI , compact disc interactive games on contract. They were all terrible. It wasn’t very fun.
')
In 2007, I joined the Kelley Blue Book , where I still am today. Our site is [www.kbb.com] [www.kbb.com]. It is an automotive valuation site. Not my glamorous mates are smart and fun.

While here at KBB, I started writing to eventually small conferences. For awhile most of the talks were on jQuery and jQuery Mobile . I eventually wrote a book on jonic. I also did it on jQuery Mobile .

Last year I started doing videos for LinkedIn Learning / Lynda.com . So far I have 5 videos out. Two on C , two on Kotlin , and one on Bash . C ++ over the next few months.

In my spare time, I have been designing a mobile game. Nothing fancy, it’s a casual game, which I’m hoping to have complete with Q1 or Q2 of 2019. It’s been the era of the mid-90’s.



- An impressive track record! But let's go back to 1983, when you first came to Inerplay . Tell us how you got there and who were the great guys you mentioned?



- While in San Diego , about 100 kilometers from Orange , in California , I made my own games for Vic 20 and C64 . In 1983, an exhibition of computer games was held at a place called Lion Country Safari [Laguna Hills, Orange] . There I met Brian Fargo . He then worked at Boone , headed by a guy named Michael Boone (he later created Boone Boards ). I spoke with Boone about how to get to them as a game developer, however, when the company collapsed, Brian called me and offered to join his startup, Interplay Prouctions . I agreed. Our first office was located in the Newport Beach industrial zone, right above the office of clothing manufacturer Quiksilver .




[Photo provided by Troy himself.] In the photo in the front row [left to right]: Alan Pavlish , Brian Fargo , I , and Jay Patel . Back row: Bill Heinman , Troy Worrell , and Todd Camasta . This is a photograph of the end of 1984 - beginning of 1985.


In those days we did something under license, contract work and ports for other companies. We even did something for the Ministry of Defense , through Loral . This concerned GPS maps, which was new at the time. For this work, we received thanks from the US Army. We also worked on a contract with the University of California , Irvine . They made educational games under the guidance of the professor. We also did some action adventure for Activison . Among them are MindShadow , Tass Times in Tonetown and Borrowed Time . Spreading games was not easy at the time. Finding a small computer store that would take your game for sale was not very difficult, but it took a lot of time, moreover, without a million dollars in the bank it was simply impossible to force a large distribution network, like Sears or Walmart , to sell your product. Today it is much easier. You can simply upload your creation to the App Store or sell it yourself through your own website. So getting Activison as a publisher meant a lot and allowed us to stay afloat.


Around 1987, I created the coolest app that never saw the light. It was called Software Studio . The application allowed you to create something like a cartoon on the C64 and Apple II . Included was a set of prepared scenes and characters. Each character had its own set of animations, they could walk, sit, dance and all that. It used an incredibly efficient animation engine - just a few kilobytes you could fit a 5-minute cartoon. At first, Activision became interested in the application, but later they moved away from this topic. Then we tried to interest other players, including Disney . I liked the program, but everyone feared that it was too flexible. Disney was particularly worried about the misuse of its characters. In the end, we admitted defeat and abandoned this venture.


After a while, Brian Fargo asked me if I wanted to make a game on Neuromants , on a book that we both read. The rights to the film were then, seemingly, in Sabana Boys [Productions] , and they were given the approval of the production. The rights to igronizatsiyu owned Tim Leary , but the development has stalled. Tim is not a programmer, but the coders with whom he worked abandoned the project. We went to Bel-Air [Los Angeles] , 60 kilometers north, to meet him at his house, but that’s another story.


Q2
- Quite an impressive track record you have. But let's get back to 1983 when you first came to the Interplay . Tell us what you mentioned?

- I had 20 and C64 in San Diego, roughly 100 km from Orange County , both in California . In 1983, there was a Lion Country Safari . There, I met Brian Fargo . Michael Boone , who was headed by a guy named Boone . (He wouldn’t have to go on to create Boone Boards .) He collapsed, interplay productions . I said yes. Our original offices were above the office clothing manufacturer, Quiksilver .

In the photo, front row: Alan Pavlish , Brian Fargo , me , and Jay Patel . Back row: Bill Heineman , Troy Worrell , and Todd Camasta . The picture dates to late 1984 or early 1985.

Contracting contractor for companies. Loral through Loral . We got a commendation from the US Army for our work. It involved moving map with GPS , which was a new thing back then. We also did some contract development for the University of California, Irvine . We made some edutainment games under the direction of a professor. And we did some action adventures games for Activision . They were MindShadow , Tass Times in Tonetown and Borrowed Time , in no particular order. Distributing games. It was not necessary to get a lot of people. Developers today have it much easier. You can just upload it to your app. So getting a solvent.

During this time, around 1987, I created the app. It was called Software Studio . C64 and Apple II . It came with a collection of pre-built stages and characters. Each character had a collection of animations. They could walk, sit down, dance, etc. The whole thing In just a kilobytes, you could make a 5 minute cartoon. Initially, Activision was interested, but then they pulled out. Then we tried to other experts including Disney . The product was too flexible. Disney was especially worried about cartoons which inappropriately used their characters. In the end, we admitted defeat and shelved it.

Then, I asked if I was interested in Neuromancer . A book we had both read. It seemed to be the Cabana Boys , had it been green lighted for production. The game had been stalled. He has been working with abandoned the project. We went to Bel-Air , about 60 km to the north.



“A striking story, Troy.” It is a pity that Software Studio has not come out, it seems that it was a serious breakthrough. In childhood I used similar software. I don’t remember the name, something like The Simpsons: Cartoon Studio , but on Soviet cartoons. But it was in the two thousandths, and you did it 15 years ago. Impressive.


But back to business. The next question should have been about how Interplay came to Neuromant , but you already answered it :). But before we start talking about the game itself, I have a couple of questions, the answers to which are interesting to me personally. That's what's the matter, Timothy Leary is undoubtedly an outstanding person, so what was it like working with him?


And another question, did William Gibson himself take part in the development?


Who is Timothy Leary?

Timothy Francis Leary (10/22/1920 - 05/31/1996) - American writer, psychologist, participant in a campaign for psychedelic drugs research, software developer.


In twenty years, Leary became a student at the University of Alabama , and at the end received a bachelor 's degree in psychology . In 1950 he became a doctor of psychology . In 1957 he created the psychodiagnostic method “Leary interpersonal relationship test” , which is still used by the US special services.


Leary got his scandalous fame for studying the effect of psychedelics on the human psyche and nervous system. Leary actively promoted psychedelics, gave lectures and wrote a number of books on expanding the boundaries of human consciousness.


This scandalous glory of Leary led to the silence of his merits in those areas of psychology, which later became associated with completely different names.


In 1984, Leary joined the cyberpunk movement, which in those years captured America. He and in that environment managed to become a leader, gathering around him dissatisfied with the reality of people. Together with William Gibson, the scientist promoted the reunification of man and computer, created several software products, wrote a number of books.


The scientist died in the 1996th year. The moment of his death, he recorded on the video, which was connected to the Internet. So, everyone could watch his death. The last thing he said was: "Why not?"




- Working with Tim Leary was very cool. He was really cool. Tim invited us to his house to discuss the project. We settled in his living room, from where there was just a stunning view of Los Angeles. After a few cans of beer, we told him about our vision of the game, which was very different from his vision. We were not sure about how he would react, but he liked the idea, and it seemed that he was extremely interested in us putting this into reality.


Amusingly, Tim , sort of, “grunted” on how active I was. It seemed that he had never met an extravert computer programmer before. He asked if I was not an actor, I was not, but he just wanted me to star in the film. Then it seemed possible, but, alas, it never came to that. So I missed my chance to become a movie star ;-).


William Gibson did not participate in the development of the game. Although we met once in Santa Monica , during his autograph session. I only had about two minutes to talk to him. We invited him to drink with us after the session, but he already had plans. It seems that he is a cool guy, and I really appreciate that, despite the fact that he was busy, he had a couple of minutes to chat with us.


Q3
- Such a stunning story, Troy. It is a serious breakthrough. I was a kid. It was something like the Simpsons: Cartoon Cartoons, but it can't remember how it called. But it was in the 2000s, and you already did it 15 years ago. So impressive.

But let's get back to our business. It ’s not a problem , but you’ve already answered it :) It is a notable man.

William Gibson didn’t take part in it?

- Tim Leary was super cool to work with. He was a genuine nice guy. He is not a friend. We had a spectacular view of the Los Angeles skyline. It is a little bit more than a few beers. We weren't really sure how you would react. But he didn’t like it.

I was. Seems he'd not met an extrovert computer nerd yet. He wanted to know what he was about. But it was a chance at stardom ;-).

William Gibson , didn’t play any role in the game. Santa Monica , where he was doing a signing. I got about 2 minutes to talk to him. Signing It wasn’t even though he was busy.



- I wonder if Gibson played your game? As far as I know, then he was not strong in computers :)


So, "Neuromant" . I know that you were the only programmer on the project. But let's focus on the Neuromant team as a whole. Who else worked on the game? What were the roles?


- As far as I know, Gibson did not play it.


Bruce Belfort was a producer and screenwriter. He was the link that held us together. Very clever and friendly, he was for us something like a mentor. The main screenwriter was Michael Stakpol . Then he was a rising star, and now - the famous author of science fiction. Charles Wademan III was our magnificent artist. He used the tools I had crafted to create the interface, the characters, and their animations. And finally, Brian Fargo , the head of Interplay , served as executive producer and was very involved in the process of creating the game.




[Photos found on the Internet. From left to right: Michael Stakpol, Todd Camasta, Bill Heinman, Troy Miles, Bruce Belfort, Charles Wademan III.]


In total, the game took about 9-10 months. It was stressful, but fun. The coolest thing was how openly and honestly we could talk to each other without taking criticism at our own expense. This allowed us to squeeze the most out of each other, which made the game only better.




Q4
- Just wondering if Gibson played the game. As far as i know

So, the "Neuromancer" . For now we’re about to be on the whole Neuromancer team. Who else worked on the game? What was the roles?

- Gibson never played the game.

Bruce Balfour He was the glue that kept us together. Very smart and also amiable. He was kind of like a coach. Michael Stackpole was the writer for the game. It was a well known author of science fiction. Charles HH Weidman III was our awesome artist. I was able to use the tools. It’s a very important thing to do.

It took about 10 months to make. It was stressful but fun. It is not a problem. Get the best out of each other.



- The important point is that the game was released on a certain set of platforms, so when you talk about how much time was spent on Neuromant , do you mean some specific version (if so, which one), or all at once? I ask because, for example, the Amiga version [left], compared to the MS-DOS version [middle], looks like a completely different game, not to mention the C64 version [right].




- I am only talking about the C64 . Ports made other people. The C64 was the coolest car for its money, with a great sound and video chip. The 6502nd processor was also an interesting thing. Due to its simplicity, it allowed to do things that did not allow more powerful processors, like self-modifying code . Such frills forced to sweat those who made the ports. The game was entirely written in 6502-m Assembler .


Q5
- This is an important point. Neuromancer , when you’re talking to you? Amiga [left] version compared with MS-DOS [center] version, for example, it looks like it’s a different game.

- I am only talking about the C64 . The ports were done by others. The C64 was an amazing machine for the price. It also had excellent sound and video chips. The 6502 processor was also an interesting beast. CPUs couldn’t be like self-modifying code. This kind of tricks gave some of the port writers the blues. The entire game was written in 6502 assembly.



- That's cool! Making our port, we assumed that the game was written in Assembler, but did not think that it was originally 6502nd . By the way, about the tricks, maybe you remember and describe a few more?


- Right now, three interesting techniques come to my mind: blasting , interrupts , and self-modifying code .


Blasting The C64 could have several visible screens, and it was possible to choose which of them is active by simply setting a specific value. Using the screen means: clearing it , drawing it , and setting the bit in order to display the result. Obviously, you need the fastest way to clear the screen. And the fastest was the installation of the battery at zero and the sequential recording of the battery value in each memory cell of the screen. [Troy literally means explicit entry in each cell: mov ax, 0; mov screen[0], ax; mov screen[1], ax ... mov screen[n], ax mov ax, 0; mov screen[0], ax; mov screen[1], ax ... mov screen[n], ax mov ax, 0; mov screen[0], ax; mov screen[1], ax ... mov screen[n], ax .] It looks crazy, and, as a programmer, you want to wrap it in a for loop, but branching critically slows down the execution of code.


Interrupts Video interception in C64 started every 30th of a second. It was possible to intercept this interruption and get something like "multitasking for the poor." Whatever you do there - it must be fast, otherwise the picture will twitch. But you could have time to do all sorts of useful things, like sound control or multiplexing sprites.


Self-modifying code . The 6502nd knew how to do one very strange thing - to change the instruction before it was executed. It sounds crazy, but the idea is simple: instead of checking the condition and moving to the next branch of the code, leave one branch and just change its code depending on the condition.


 repeat N times { if STATE is 1 increase A by one else decrease A by one do something with A } repeat N times { increase A by one do something with A when STATE has to switch { replace the opcode "increase" above with the opcode to decrease, or vice versa } } 

By the way, at first the PC architecture was extremely poorly suited for gaming. The trouble with the sound, a very simple graphics subsystem, and let's not remember the 640K memory limit . Most PCs were then 8088 , and they are much slower than their 8086 brethren. So, more memory and a better processor did not make PCs a better development environment.


Q6
- Amazing! It was 6502 . Whats up?

I can think of it right now: blasting , interrupts , and self-modifying code .

Blast - C64 can be customized. Flip up a bit to show it. Clearly as possible. The accumulator is in the memory of the accumulator. It is a coder. But the act of the branch dramatically slows the code down.

Interrupts - the C64 has a video interrupt every 30th of a second. You can hook up into a man’s multi-tasking. It can be useful if you want to make it a bit quicker.

It is not a problem. It is a simple way to find out how to use it.

A side note - it was a terrible gaming environment. The sound of the PC was not included. Most PCs were 8088 which were slower than their 8086 cousins. So even though the CPU was better.



- Indeed, the PC version looks and sounds poorly. However, here is something about sound. The game soundtrack is based on the song “Some Things Never Change” by Devo . Do you have a story about why this song was chosen, and who, in principle, was responsible for the sound design of the game?


- I may not be accurate here. As far as I know, Tim Leary and Mark Mathersbo of Devo [pictured] were friends. Somehow, most likely through Tim , we had an intro, and we met up with Mark in his studio in Marina Del Rey . Mark is a cool guy, very savvy in technical matters. We listened to a lot of tracks from the new album Devo , Mark thought that “Some Things Never Change” would be the best for our project, and we were in solidarity with him. Mark gave us a digital copy of the song. Working with sound files in the late 80s is still a headache. Bill "Burger" Heinman (now Rebecca Heinman ) was a real wizard, he was able to process the source file and make it 8-bit for C64 and 1-bit for other platforms. That was the first time I heard a real song in a computer game. The sound was not perfect, but good enough for its time.



Q7
- Indeed the PC version Anyway there is a thing about the soundtrack "Some Things Never Change" by Devo . This is what the song was about?

- This is a point I am a bit fuzzy on. The Mother of the Bride of Devo . Somehow we got an intro, most likely a studio in Marina del Rey . Mark was a super cool guy. He was also very tech savvy. We listened to a lot of tracks on Devo's new album. Mark felt that it would be the best track for our project. He made a copy of the track on a DAT . It was an immense in the late 80's. It was 8 bits on the C64 and 1 bit on all others. It was the first time I had heard the song. It was not cool for its time.



- I think this song fits perfectly. But let's go back to programming and talk a little about the architecture of the game. For Neuromant, did you write a completely new engine or was it based on your previous work?


- Architecturally Neuromant consisted of two parts, animation and gameplay . The animation part, with minimal updates, migrated from Software Studio , which gave the NPC animated reactions and text footnotes. The gameplay engine was completely new. Initially, it was more difficult, with abundant use of random numbers, but this part was discarded - no one likes too unpredictable games. The game itself had two interesting tools. The first could record the gameplay - the output was a text file. If you feed him a game, she began to play herself. It was for debugging. Also, the game engine was playable by itself, without the animation part. Again, for debugging. The gameplay part of the engine could also work without animation . All this made life easier for writers, including me, because we could go directly to the desired scene and work with it.


Q8
- That song suits perfectly in my view. Now let's get back to programming. It is based on some of your previous works?

- Neuromancer was divided into two parts: animation and game play . The animation survived from Software Studio . It gave all of the NPCs there. The system was only had a minor update. The game play engine was all new. It wasn’t always been the case since it’s been a bit more random. The game itself had two interesting tools. The first was possible to record the game. It would play by itself. It was for debugging. And the game engine was playable. Again, this was for debugging. Play game could also run without the animation . It is easier to write or edit.



- I would like to elaborate on the gameplay . Studying the version for MS-DOS, we found out that the game uses something like a virtual machine. The machine executes the bikode contained in files of the form "R% n.BIH" , which, apparently, are scripts for NPC . These files are a nuclear mix of control data, bytecode, object code 8086, and ASCII strings. Are these features of a particular version or part of the original architecture?


“I didn’t work a lot with ports, except that I explained the code for 6502nd to programmers, but it sounds like it’s based on game DAT files . I combined animation and gameplay in these files, in addition, there was also code for levels. Do not forget that the 6502nd Assembler did not have a linker, so I wrote it.


Q9
- I want to get a closer look at the gameplay part of this. Exploring the MS-DOS version of the game we found that it utilizes it. The machine executes the bytecode stored in "R% n.BIH" data files, which seems to be an NPC scripts. These are some 8086 object code, and ASCII strings. Or is it a specific version?

- I don’t need to know how to use the data files. I like to play together in the data files. There would also be a secret. I created one.



- Well, since we are working with the port, I have nothing to specifically ask about the code, do you have anything to add? We have already discussed some low-level techniques, but maybe you will recall some interesting problems from working on the game logic?


- In fact, right now I can not remember anything like that. Good luck with the port, and please send me links to the game and the article when they are ready.


Q10
“Well, since we’ve been working with the port, then I’m not Go on if you have something to add. If you’re trying to find out how to do it?

- I can't think of anything else. When you are ready.



- Of course, Troy. Thank you for your time. Hope you enjoyed this interview. A small question finally: your favorite game?


- The only thing I'm playing now is the X-Plane simulator. She's just great. Sometimes I play on my iPad and I really like games with interesting physics, for example, Hello Stars . It seems to be stupid, but made talent. Sometimes I play copying old-school 8-bit games such as Pitfall and Donkey Kong , but I’m not very far advanced, I simply don’t have enough time for that.


Q11
- Yeah, I will. Thanks for your time, Troy. I hope you like the interview. There is a little question: what is your favorite game?

- The only game I really play nowadays is a simulation, X-Plane. It is awesome. I really like physic based games like Hello Stars. It is stupid, but clever. 8 bit games like Pitfall! and Donkey Kong. Neither is very far along, never seem to have enough time.



Such a story. The interview turned out to be small in volume, but, in my opinion, very capacious in terms of details. I published the English version in my blog .


Regarding the game, since the publication of the last article, a lot has been done: dialogue, inventory, saving / loading, and a lot of other things. If everything goes well, then in a couple of weeks we will have quite a playable build, so far without cyberspace, but it will be possible to advance a little along the plot. The next number part of the cycle will be released after we get this very build. But now, everything is there, in my blog , you can follow the news on the project.

Source: https://habr.com/ru/post/422625/


All Articles