10 September 2018

Поговорили с Троем Майлзом — программистом «Нейроманта»

ProgrammingGame developmentIT careerInterview

[Трой Майлз — спикер, автор, и разработчик программного обеспечения с многолетним опытом. Начал свою карьеру с написания игр для Commodore 64, Apple II и IBM PC на 6502-ом x86-ом Ассемблере. Дважды обладатель премии «Игра Года». Автор книги «jQuery Essentials», а так же большого количества журнальных статей и публикаций в собственном блоге. Создатель обучающих видеоматериалов. В настоящее время программирует веб и мобильные приложения в компании Kelley Blue Book.]


Привет! Вы, возможно, знаете меня по серии «Реверсим Нейроманта», где я рассказываю о том, как мы реверс-инжинирим и портируем видеоигру по мотивам одноимённого романа Уильяма Гибсона. Из-за своего содержания, это, скорее, спин-офф, чем следующая номерная часть — самостоятельный материал, не требующий от читателя дополнительной подготовки.


А началось с того, как viiri, со словами, — «Это программист, который написал Нейроманта. Думаю он будет не против ответить на вопросы», — прислал мне ссылку на твиттер-аккаунт человека по имени Трой Майлз (на фото). Тогда я работал над четвёртой частью цикла и не придал этому большого значения. Обдумав это спустя несколько недель, идея интервью с разработчиком показалась мне настолько удачной, что я тут же написал Трою о том: кто мы, чем занимаемся, и чего от него хотим. Ответ не заставил себя долго ждать, Трой очень благосклонно отнёсся к нашей затее и согласился ответить на мои вопросы.




— Здравствуйте, Трой, я думаю, пора начать наше небольшое интервью. Для начала, я хочу чтобы вы представились перед моими читателями. Пожалуйста, Трой, расскажите нам об основных моментах вашей профессиональной карьеры.


— Всем привет, меня зовут Трой Майлз. Работаю программистом с 1979 года, тогда я ещё учился в старшей школе. Я стал четвёртым сотрудником, нанятым в Interplay [после её основания] в 1983 году. Это были классные времена и отличные ребята. Я написал Нейроманта, Властелин Колец, и помог с разработкой многих других игр.


Я покинул Interplay в 1992 году. Всё ещё любил эту компанию, но мне был необходим стабильный рабочий график. Провёл некоторое время в Phoenix Technologies Ltd, работая над системным софтом для модулей PCMCIA. Как-то даже написал об этом статью в Dr. Dobb's magazine.


После Phoenix я на некоторе время стал независимым разработчиком. Сделал несколько игр для CDI по контракту. Они были ужасны, не в плане программирования — геймплей был так себе, да и сам CDI, в принципе, не был хорошей идеей.


В 2007 году я присоединился к Kelley Blue Book, где и остаюсь на сегодняшний день. Наш вебсайт www.kbb.com. Это ресурс на автомобильную тематику. Без излишнего лоска, но мои коллеги достаточно хороши.


За время в KBB я снова начал писать и, по возможности, проводить небольшие конференции. Пока доклады в основном были о jQuery и jQuery Mobile. В итоге, по jQuery я даже написал книгу и сделал обучающее видео на Ionic. Ещё я снял ролик о jQuery Mobile для Learn Now Online.


В прошлом году я начал снимать видео для LinkedIn Learning / Lynda.com. На сегодняшний день их 5: два по C++, два по Kotlin и одно про Bash. Планирую сделать ещё несколько роликов по С++ в ближайшее время.


В свободное время я разрабатываю мобильную игру. Ничего сверхъестественного, обычная казуалка, которую я надеюсь закончить в первом полугодии 2019 года. Это будет моя первая игра со времён CDI середины девяностых.


Q1
— Hi Troy, I think that it's time to start our little interview. Firstly I want you to introduce yourself for 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 loved the company, but needed to work regular hours. Spent sometime at Phoenix Technologies Ltd. Working on PCMCIA system software. Even wrote an article about it for Dr. Dobb's magazine.

After Phoenix I went independent for quite sometime. Did some CDI, compact disc interactive games on contract. They were all terrible. Not because of the programming, but because CDI was not a good idea and the gameplay wasn't very fun.

In 2007, I joined Kelley Blue Book, where I still am today. Our site is [www.kbb.com][www.kbb.com]. It is an automotive valuation site. Not glamorous, but my team mates are smart and fun.

While here at KBB, I started writing again and eventually doing small conferences. For awhile most of talks were on jQuery and jQuery Mobile. I eventually wrote a book on jQuery and did a video on Ionic. I also did a video for Learn Now Online, 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. I planned to a few more videos on C++ over the next few months.

In my spare time, I have been designing a mobile game. Nothing fancy, a casual game, which I hope to have complete by Q1 or Q2 of 2019. It will be my first game since the CDI era of the mid-90's.



— Впечатляющий послужной список! Но давайте вернёмся в 1983 год, когда вы впервые пришли в Inerplay. Расскажите, как вы туда попали и кем были те отличные ребята, которых вы упоминали?



— Находясь в Сан-Диего, примерно в 100 километрах от Оринж, в Калифорнии, я делал собственные игры для Vic 20 и С64. В 1983 году, в месте под названием Lion Country Safari [Лагуна Хилс, Оринж], проводилась выставка компьютерных игр. Там я познакомился с Брайаном Фарго. Он тогда работал в компании Boone, которую возглавлял парень по имени Майкл Бун (позже он создал Boone Boards). Я говорил с Буном о том, чтобы попасть к ним в качестве разработчика игр, однако, когда компания развалилась, Брайан позвонил мне и предложил присоединиться к его стартапу — Interplay Prouctions. Я согласился. Наш первый офис располагался в промзоне Ньюпорт Бич, прямо над офисом производителя одежды Quiksilver.




[Фото предоставил сам Трой.] На фото в переднем ряду [слева направо]: Алан Павлиш, Брайан Фарго, я, и Джей Патель. Задний ряд: Билл Хейнман, Трой Уоррел, и Тодд Камаста. Это фотография конца 1984 — начала 1985 года.


В те дни мы делали что-то по лицензии, работы по подряду и порты для других компаний. Мы даже сделали кое-что для Министерства Обороны, через Loral. Это касалось карт с GPS, что было ново в то время. За эту работу мы получили благодарность от армии США. Так же мы работали по подряду с Калифорнийским Университетом, в Ирвине. Делали образовательные игры под руководством профессора. Ещё мы сделали несколько приключенческих боевиков для Activison. Среди них MindShadow, Tass Times in Tonetown и Borrowed Time. Распространение игр было нелёгким делом в те времена. Найти небольшой компьютерный магазинчик, который возьмёт твою игру на продажу было не очень сложно, но это отнимало кучу времени, к тому же, без миллиона долларов в банке было попросту невозможно заставить большую торговую сеть, типа Sears или Walmart, продавать твой продукт. Сегодня с этим гораздо проще. Ты можешь просто загрузить своё детище на App Store или продавать его самостоятельно через собственный веб-сайт. Так что заполучить Activison в качестве издателя значило очень много и позволило нам оставаться на плаву.


Примерно в 1987 году я создал крутейшее приложение, которое так и не увидело свет. Оно называлось Software Studio. Приложение позволяло тебе создать что-то вроде мультфильма на C64 и Apple II. В комплекте шёл набор заготовленных сцен и персонажей. У каждого персонажа был свой набор анимаций, они могли ходить, сидеть, танцевать и всё такое. Там использовался невероятно эффективный анимационный движок — всего в несколько килобайт ты мог уместить 5-минутый мультфильм. Сперва приложением заинтересовалась Activision, но позже они съехали с этой темы. Тогда мы попытались заинтересовать других игроков, в том числе и Disney. Программа нравилась, но все опасались, что она была слишком гибкой. В Disney особенно переживали по поводу неправильного использования своих персонажей. В конце концов, мы признали поражение и оставили эту затею.


Через некоторое время Брайан Фарго спросил, не хочу ли я сделать игру по «Нейроманту», по книге, которую мы оба читали. Права на экранизацию тогда были, вроде бы, у Сabana Boys [Productions], и им было дано добро на производство. Правами на игронизацию владел Тим Лири, но разработка застопорилась. Тим не программист, а кодеры, с которыми он работал, бросили проект. Мы поехали в Бел-Эйр [Лос-Анджелес], что в 60 километрах севернее, чтобы встретиться с ним в его доме, но это уже другая история.


Q2
— Quite an impressive track record you have. But let's get back to 1983 when you first came to the Interplay. Tell us more about how did you get there and who were the others you mentioned?

— I had been making my own games for the Vic 20 and C64 in San Diego roughly 100 km from Orange County, both in California. In 1983, there was a computer game expo held at a place called Lion Country Safari. There, I met Brian Fargo. He was working for a company called Boone, which was headed by a guy named, Michael Boone. (He would later go on to create Boone Boards.) I had been talking with Boone about coming on board as a game programmer, but when they collapsed, Brian gave me a call and asked if I wanted to join his startup, Interplay Productions. I said yes. Our original offices were in an industrial section of Newport Beach, above an office the 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.

In those days we did titles, contract work, and ports for other companies. We even did some work for the Department of Defense, through Loral. We got a commendation from U.S. 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 was very difficult in those days. Getting small computer stores to carry your game wasn't too difficult, but it was time consuming and it was impossible to get big retailers like Sears and Walmart or chain computer stores to sell your product, unless you had millions of dollars in the bank. Developers today have it much easier. You can just upload to an app store or sell it your self on your own web site. So getting Activision to license our games was a big deal and helped us stay solvent.

During this time, around 1987, I created the coolest app that was never released. It was called Software Studio. It allowed you to make a kind of cartoon on the 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 used an animation engines that was super efficient. In just a kilobytes, you could make a 5 minute cartoon. Initially, Activision was interested, but then they pulled out. Then we tried to interest other players including Disney. Everyone liked the app, but their big concern was the product was too flexible. Disney especially was worried about people making cartoons which inappropriately used their characters. In the end, we admitted defeat and shelved it.

Then, Brian Fargo, asked if I was interested in doing a game based on «Neuromancer». A book we had both read. It seems the Cabana Boys, had the movie rights and it had been green lighted for production. Tim Leary had the computer game rights but the development of the game had stalled. Tim is not a coder and the coders he was working with had abandoned the project. We went to Bel-Air, about 60 km to the north to meet with him at his house and the rest is history.



— Поразительная история, Трой. Жаль, что Software Studio так и не вышла, похоже, что это был серьёзный прорыв. В детстве я использовал похожий софт. Название не помню, что-то вроде The Simpsons: Cartoon Studio, но по Советстким мультфильмам. Но это было в двухтысячных, а вы сделали это ещё 15 лет назад. Впечатляет.


Но вернёмся к делу. Следующий вопрос должен был быть о том, каким образом Interplay пришли к «Нейроманту», но вы уже на него ответили :). Но перед тем, как мы начнём поговорить о самой игре, у меня есть пара вопросов, ответы на которые интересны мне лично. Вот в чём дело, Тимоти Лири, несомненно, выдающийся человек, так каково было с ним работать?


И другой вопрос, принимал ли участие в разработке сам Уильям Гибсон?


Кто такой Тимоти Лири?

Тиимоти Фрэнсис Лири (22.10.1920 — 31.05.1996) — американский писатель, психолог, участник кампании по исследованиям психоделических препаратов, разработчик программного обеспечения.


В двадцать лет Лири стал студентом университета Алабамы, а по окончанию получил степень бакалавра психологии. В 1950 стал доктором психологии. В 1957 году создал психодиагностическую методику «тест межличностных отношений Лири», которая до сих пор используется спецслужбами США.


Свою скандальную известность Лири получил за исследование влияния психоделиков на психику и нервную систему человека. Лири активно пропагандировал психоделики, выступал с лекциями и написал ряд книг, посвящённых расширению границ человеческого сознания.


Эта скандальная слава Лири привела к замалчиванию его заслуг в тех областях психологии, которые позже стали ассоциироваться совсем с другими именами.


В 1984 году Лири присоединился к движению киберпанков, которое в те годы захватило Америку. Он и в той среде умудрился стать лидером, собрав вокруг себя недовольных реальностью людей. Вместе с Уильямом Гибсоном учёный пропагандировал воссоединение человека и компьютера, создал несколько программных продуктов, написал ряд книг.


Учёный умер в 1996-ом году. Момент своей смерти он записал на видео, которое было подключено к интернету. Так, за его смертью могли наблюдать все желающие. Последнее, что он сказал, было: «Почему бы и нет?».




— Работать с Тимом Лири было очень круто. Он был по-настоящему клёвым. Тим пригласил нас в свой дом обсудить проект. Мы расположились у него в гостинной, откуда был просто потрясающий вид на Лос-Анджелес. Спустя несколько банок пива мы рассказали ему о своём видении игры, которое сильно отличалось от его видения. Мы не были уверены насчёт того, как он отреагирует, но идея ему понравилась, и казалось, что он был крайне заинтересован в том, чтобы мы воплотили это на яву.


Забавно, Тим, вроде как, «заторчал» от того, насколько я был активен. Казалось, что до этого он ни разу не встречал компьютерщика-экстраверта. Он спрашивал, не был ли я актёром, — я не был, — но он прямо хотел, чтобы я снялся в фильме. Тогда это казалось возможным, но, увы, до дела так и не дошло. Так я упустил свой шанс стать кинозвездой ;-).


Уильям Гибсон не принимал участия в разработке игры. Хотя мы встречались однажды в Санта-Монике, во время его автограф-сессии. У меня было всего около двух минут на то, чтобы с ним переговорить. Мы пригласили его выпить с нами после сессии, но у него уже были планы. Похоже, что он классный парень, и я очень ценю, что, несмотря на то, что он был занят, у него нашлось пару минут, чтобы поболтать с нами.


Q3
— Such a stunning story, Troy. Sorry that your Software Studio never released, it seems like it was a serious breakthrough. I remember how I was using similar software when I was a kid. It was something like The Simpsons: Cartoon Studio but adapted for Soviet cartoons, 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. The next question should be about how did the Interplay come up with «Neuromancer», but you already answered it :) Anyway, before we start talking about the actual game, I have a couple of questions which answers is important personally to me. Here we go, there's no doubt that Timothy Leary is an outstanding man, so how it was working with such a person?

And the other question, did William Gibson itself take part in it?

— Tim Leary was super cool to work with. He was genuine nice guy. He invited us to his home to talk about the project. We just all sat in his living room which had a spectacular view of the Los Angeles skyline. We explained to him our vision for the game which was very different from his over a few beers. We weren't really sure how he would react. But he liked our idea and seemed excited for us to make it real.

A weird side note, Tim kind of tripped out on how intense I was. Seems he'd not met an extrovert computer nerd yet. He wanted to know if I was an actor, I'm not, but he really want me to have a part in the movie. At that time, the movie was real, but alas it was never made and there went my chance at stardom ;-).

William Gibson, didn't play any role in the game. We did actually meet once in Santa Monica, where he was doing a book signing. I got about 2 minutes to talk to him. We invited him to drinks or coffee after the signing, but he already had plans. He seemed like a nice guy and I appreciated that he took a few minutes to chat with us even though he was busy.



— Интересно, играл ли Гибсон в вашу игру? Насколько я знаю, тогда он не был силён в компьютерах :)


Итак, «Нейромант». Я знаю, что вы были единственным программистом на проекте. Но давайте пока сфокусируемся на команде Нейроманта в целом. Кто ещё работал над игрой? Каковы были роли?


— Насколько мне известно, Гибсон не играл в неё.


Брюс Бэлфор был продюссером и сценаристом. Он был связующим звеном, державшим нас вместе. Очень умён и дружелюбен, он был для нас кем-то вроде ментора. Главным сценаристом был Майкл Стакпол. Тогда он был восходящей звездой, а сейчас — узнаваемый автор научной фантастики. Чарльз Уэйдман III был нашим великолепным художником. Он использовал состряпанные мною инструменты для создания интерфейса, персонажей и их анимаций. И, наконец, Брайан Фарго, глава Interplay, выполнял функции исполнительного продюссера и был очень вовлечён в процесс создания игры.




[Фотографии найдены в Интернете. Слева направо: Майкл Стакпол, Тодд Камаста, Билл Хейнман, Трой Майлз, Брюс Бэлфор, Чарльз Уэйдман III.]


Всего на игру ушло около 9-10 месяцев. Было напряжно, но весело. Самым классным было то, как открыто и честно мы могли говорить друг с другом, не принимая критику на свой счёт. Это позволило нам выжать максимум друг из друга, что сделало игру только лучше.




Q4
— Just wondering if Gibson played the game. As far as I know he wasn't much into computers at that time :)

So, the «Neuromancer». I already know that you were a sole programmer on a game, but for now let's focus on the whole Neuromancer team. Who else worked on the game? What was the roles?

— To the best of my knowledge Gibson never played the game.

Bruce Balfour was the producer and a writer. He was the glue that kept us together. Very smart and also amiable. He was kind of like a coach. Michael Stackpole was the main writer for the game. He was a rising star then and has become a well known author of science fiction. Charles H. H. Weidman III was our awesome artist. He was able to use the tools I slapped together to create the UI and the characters, and their animation. And Brian Fargo, the head of Interplay, was the executive producer and was very much involved in the creation of the game.

The game took about a total of 9 or 10 months to make. It was stressful but fun. The best part was how we were able to speak openly and honestly with each other without anyone taking the comments personal. This made the game better and allowed us to get the best out of each other.



— Важный момент, игра была выпущена на определённом наборе платформ, поэтому, когда вы говорите о том, сколько времени ушло на Нейроманта, вы имеете в виду какую-то конкретную версию (если так, то какую), либо все сразу? Я спрашиваю, потому что, например, версия для Amiga [слева], по сравнению с версией для MS-DOS [посередине], выглядит как совершенно другая игра, не говоря уже о версии для C64 [справа].




— Я говорю только о C64. Порты сделали другие люди. C64 был крутейшей машиной за свои деньги, с прекрасным звуковым и видео чипом. 6502-й процессор тоже был интересной штуковиной. За счёт своей простоты он позволял делать вещи, которые не позволяли более мощные процессоры, вроде самомодифицирующегося кода. Такие выкрутасы заставили попотеть тех, кто делал порты. Игра целиком была написана на 6502-м Ассемблере.


Q5
— Here is an important point, the game was released on certain set of platforms. So when you talking about how much time it took to make Neuromancer, do you mean one specific version (what is it if so?) or all of them at once? I'm asking because, Amiga [left] version compared with MS-DOS [center] version, for example, looks like completly different game, not to mention C64 [right] version.

— 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. Because it was so simple, you could do things that other more powerful CPUs could not, like self-modifying code. These kinds of tricks gave some of the port writers the blues. The entire game was written in 6502 assembly.



— Вот это круто! Делая свой порт, мы предполагали, что игра была написана на Ассемблере, но не думали, что изначально это был 6502-й. Кстати, насчёт трюков, может быть вы вспомните и опишете ещё несколько?


— Прямо сейчас мне в голову приходят три интересные техники: бластинг, прерывания, и самомодифицирующийся код.


Бластинг. У C64 могло быть несколько видимых экранов, и можно было выбирать, какой из них активный, просто устанавливая определённое значение. Использование экрана подразумевает: его очистку, рисование, и установку бита для того, чтобы отобразить результат. Очевидно, здесь нужен наиболее быстрый способ очистки экрана. И наиболее быстрой оказалась установка аккумулятора в ноль и последовательная запись значения аккумулятора в каждую ячейку памяти экрана. [Трой буквально имеет в виду явную запись в каждую ячейку: mov ax, 0; mov screen[0], ax; mov screen[1], ax ... mov screen[n], ax.] Выглядит безумно, и, как программист, ты хочешь завернуть это в цикл for, однако ветвление критически замедляет выполнение кода.


Прерывания. Видеопрерывание в C64 запускалось через каждую 30-ю долю секунды. Можно было перехватить это прерывание и получить что-то вроде «мультизадачности для бедных». Что бы ты там не делал — оно должно быть быстрым, иначе картинка будет дёргаться. Но ты мог успевать делать всякие полезные вещи, вроде управления звуком или мультиплексирования спрайтов.


Самомодифицирующийся код. 6502-й умел делать одну очень странную штуку — изменять инструкцию, перед тем как её выполнить. Звучит бредово, но идея проста: вместо проверки условия и перехода к очередной ветви кода, оставь одну ветвь и просто изменяй её код в зависимости от условия.


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
    }
 }

Кстати, поначалу архитектура ПК крайне плохо подходила для игр. Беда со звуком, очень простая графическая подсистема, и давай не будем вспоминать об ограничении в 640K памяти. Большинство ПК тогда были 8088-ми, а они гораздо медленнее своих 8086 собратьев. Так что большее количество памяти и более совершенный процессор не делали ПК лучшей средой для разработки.


Q6
— Amazing! Making our port we assumed that the game was entirely written in assembly, but never known it was 6502. By the way about the tricks, could you remember and describe some more?

— There were three interesting techniques I can think of right now: blasting, interrupts, and self-modifying code.

Blasting — the C64 can have multiple visible screens and you can change which one is active by setting a value. In order to use a screen you need to clear it, draw it, and then flip the bit to show it. Obviously you want a method to clear the screen as fast as possible. The fastest way possible is to load the accumulator with zero and store the accumulator in each memory address of the screen. It looks crazy and your desire as a coder is to put it a for loop. But the act of branch and checking the branch dramatically slows the code down.

Interrupts — the C64 has a video interrupt every 30th of a second. You can hook into that interrupt to do a bit of a poor man's multi-tasking. Whatever you do must be quick, or the video display will break, but you can do useful stuff like drive the audio or multiplex the sprites.

Self-modifying code — One very weird thing the 6502 can do, is to change an instruction before it is executed. This sounds pointless, but the idea is simple rather than do a compare and a jump to the new code, change the code once you know the choice that needs to made so that subsequent passes don't need to check.

A side note — the original PC architecture was a terrible gaming environment. Sound on the PC was not include, the graphics were very simple, and let's not talk about the 640 K memory issue. Most PCs were 8088 which were slower than their 8086 cousins. So even though the CPU was better and the memory was bigger it didn't make it a better developer environment.



— Действительно, версия для ПК выглядит и звучит бедновато. Тем не менее, вот кое-что по поводу звука. Игровой саундтрек основан на песне «Some Things Never Change» группы Devo. Есть ли у вас история о том, почему была выбрана именно эта песня, и кто, в принципе, отвечал за звуковое оформление игры?


— Здесь я могу быть неточен. Насколько мне известно, Тим Лири и Марк Мазерсбо из Devo [на фото] были друзьями. Каким-то образом, скорее всего через Тима, у нас оказалось интро, и мы встретились с Марком в его студии в Марина Дель Рей. Марк — крутой парень, очень подкованный в технических делах. Мы прослушали много треков с нового альбома Devo, Марк считал, что «Some Things Never Change» лучше всего подойдёт для нашего проекта, и мы были с ним солидарны. Марк передал нам цифровую копию песни. Работа со звуковыми файлами в конце 80-х — та ещё головная боль. Билл «Burger» Хейнман (нынче Ребекка Хейнман) был настоящим волшебником, он смог обработать исходный файл и сделать его 8-битным для C64 и 1-битным для остальных платформ. Тогда я впервые услышал реальную песню в компьютерной игре. Звук не был идеальным, но достаточно хорошим для своего времени.



Q7
— Indeed the PC version looks and sounds poor compared to it's brothers. Anyway there is a thing about sound, the game soundtrack based on the song «Some Things Never Change» by Devo. Is there a story about why especially this song was chosen and who was responsible for sound design at all?

— This is a point I am a bit fuzzy on. To the best of my knowledge, Tim Leary was friends with Mark Mothersbaugh of Devo. Somehow we got an intro, most likely via Tim, and met Mark at his studio in Marina del Rey. Mark was a super cool guy. He was also very tech savvy. We listened to a lot tracks on Devo's new album. Mark felt that «Some Things Never Change» would be the best track for our project, and we agreed. He gave us a digital copy of the track on a DAT. It was an immense pain to work with sound files in the late 80's. Burger Bill Heineman, now Rebecca Heineman, was the wizard who processed the file and made it 8 bit on the C64 and 1 bit on all others. It was the first time I had heard an actual song in a computer game. It wasn't perfect but it was cool for its time.



— Я думаю, что эта песня подходит идеально. Но давайте вернёмся к программированию и немного поговорим об архитектуре игры. Для Нейроманта вы написали абсолютно новый движок или он был основан на ваших предыдущих работах?


— Архитектурно Нейромант состоял из двух частей, анимационной и геймплейной. Анимационная часть, с минимальными обновлениями, перекочевала из Software Studio, это дало NPC анимированные реакции и текстовые сноски. Геймплейный движок был полностью новым. Изначально он был более сложным, с обильным использованием случайных чисел, но эта часть была отброшена — никто не любит слишком непредсказуемые игры. У самой игры были две интересные тулзы. Первая могла записывать игровой процесс — на выходе получался текстовый файл. Если скормить его игре, то она начинала играть сама в себя. Это было для отладки. Также игровой движок был играбелен сам по себе, без анимационной части. Опять же, для отладки. Геймплейная часть движка тоже могла работать без анимационной. Всё это облегчало жизнь сценаристам, включая и меня, поскольку мы могли напрямую переходить к нужной сцене и работать с ней.


Q8
— That song suits perfectly in my view. Now let's get back to programming and talk a little about overall game architecture. The first thing, have you written the brand new engine for the Neuromancer or it was based on some of your previous works?

— The architecture of Neuromancer was divided into two parts: animation and game play. The animation survived from Software Studio. It gave all of the NPCs there animated responses and text bubbles. The system was only had a minor update. The game play engine was all new. It had initially been more complicated with more randomness but that part was toned down since no one likes a game that is too random. The game itself had two interesting tools. The first was possible to record the game. Essentially a text file would get output and if you fed that file back into the game it would play itself. It was for debugging. And the game engine was playable by itself without the animation. Again, this was for debugging. The game play could also run without the animation. This made it easier for the writers including myself, since we go directly to the scene we wanted to write or edit.



— Я бы хотел подробнее остановиться на геймплейной части. Изучая версию для MS-DOS мы выяснили, что в игре используется что-то вроде виртуальной машины. Машина исполняет байкод, содержащийся в файлах вида "R%n.BIH", которые, судя по всему, являются скриптами для NPC. Эти файлы — ядерная смесь из управляющих данных, байткода, объектного кода 8086, и ASCII строк. Всё это особенности конкретной версии или часть оригинальной архитектуры?


— Я не то чтобы много работал с портами, разве что разъяснял программистам код для 6502-го, но звучит так, как будто это основано на игровых DAT-файлах. Я комбинировал анимацию и геймплей в этих файлах, кроме того, там был и код для уровней. Не забывай и то, что у 6502-го Ассемблера не было линкера, так что я его написал.


Q9
— I want to get a closer look on the gameplay part of this. Exploring the MS-DOS version of the game we found that it utilises a some kind of virtual machine. The Machine executes the bytecode stored in "R%n.BIH" data files, which seems to be an NPC scripts. Those files are crazy mix of control data, the bytecode, some 8086 object code, and ASCII strings. So is it was a part of initial design or it is version specific?

— I didn't do much with the ports except walk the programmer through the 6502 code but it sounds like it is based on the game data files. I combined the animation and the game play together in the data files. There would also be code in it for the levels. Keep in mind that the 6502 assembly didn't have a linker, so I created one.



— Ну что же, поскольку мы работаем с портом, то мне особо нечего спросить по коду, у вас есть что добавить? Мы уже обсудили некоторые низкоуровненые техники, но может быть вы вспомните какие-то интересные проблемы из работы над игровой логикой?


— На самом деле, прямо сейчас я не могу припомнить ничего такого. Удачи с портом, и, пожалуйста, пришли мне ссылки на игру и статью, когда они будут готовы.


Q10
— Well, since we work with the port, then I haven't got much to ask about the code. Go on if you have something to add. We already discussed a number of low-level techniques, but maybe you could remember some interesting problems you solved while working on the game logic?

— I don't really have anything else relevant that I can think of right now. Good luck with your port and please send me links to your port and the article when they are ready.



— Конечно, Трой. Спасибо за уделённое время. Надеюсь, что вам понравилось это интервью. Небольшой вопрос напоследок: ваша любимая игра?


— Единственная вещь, в которую я сейчас играю, — это симулятор X-Plane. Она просто отличная. Иногда я поигрываю на своём iPad и мне очень нравятся игры с интересной физикой, например, Hello Stars. Вроде бы глупость, но сделано талантливо. Иногда я играюсь, копируя олдскульные 8-битные игры, такие как Pitfall и Donkey Kong, но сильно далеко не продвинулся, на это просто не хватает времени.


Q11
— Yeah, I will. Thanks for your time, Troy. I hope you like the interview. To finish with there is a last little question: what is your favourite game?

— The only game I really play nowadays is a simulation, X-Plane. It is awesome. I occasionally waste time playing games on my iPad and I really like physic based games, like Hello Stars. It is stupid, but clever. I have also been toying with making clones of old school 8 bit games like Pitfall! and Donkey Kong. Neither is very far along, never seem to have enough time.



Такая история. Интервью получилось небольшим по объёму, но, на мой взгляд, очень ёмким в плане деталей. Версию на английском языке я опубликовал у себя в блоге.


По поводу игры, с момента публикации последней статьи было сделано очень и очень много: диалоги, инвентарь, сохранение/загрузка и ещё куча всякого. Если всё пойдёт хорошо, то через пару недель у нас будет вполне себе играбельный билд, пока без киберпространства, но уже можно будет немного продвинуться по сюжету. Следующая номерная часть цикла выйдет уже после того, как мы этот самый билд получим. Зато теперь, всё там же, в моём блоге, вы можете следить за новостями по проекту.

Tags:интервью с разработчикомпрограммирование играссемблернейромантcommodore 64
Hubs: Programming Game development IT career Interview
+12
4.4k 23
Comments 7
Popular right now
Senior Game Designer (Playable Ads)
from 120,000 ₽AllcorrectRemote job
Разработчик С/С++
from 140,000 ₽Российский квантовый центрМоскваRemote job
IT–рекрутер
from 60,000 to 120,000 ₽HighTeamМоскваRemote job
HR-менеджер (IT, B2B, высокий ценовой сегмент)
from 50,000 to 100,000 ₽Progressive MediaМоскваRemote job