Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Создание компьютерных игр


Информационный Канал Subscribe.Ru

Cоздание компьютерных игр.
Рассылка Евгения Казеко.
Выпускается еженедельно по средам.

Выпуск 10. (от 21 мая 2003 года)
Мир текстовых адвентюр.

--------------------------------------------------------------

Доброго времени суток вам, уважаемые читатели рассылки!

В прошлом выпуске я намекнул, что пора бы уже переходить к графике, на что я получил солидный отклик - "и в самом деле, пора". Но дело в том, что графика бывает очень и очень разная, и программировать ее соответственно можно по-разному.

Сейчас существует немало операционных систем, имеющих своих приверженцев, и вот вопрос - для какой системы раскрывать программирование графики? Windows, Linux, или может быть даже старушка DOS? Когда на сайте я выложил пару обучалок по Win32 api, поклонники Linux сильно заволновались. Что я могу на это ответить? Совсем недавно я прочитал статью "За что я не люблю Linux" одного приверженца BeOS. Любить или не любить ту или иную систему - личное дело каждого (есть, между прочим, много людей, которые игры на РС вообще не признают, играя на приставках, и они тоже по-своему правы). Так что, не встревая в "войны операционных систем", и учитывая тот факт, что большинство игр для PC пишется именно для Windows, сообщаю, что изучение графики мы начнем с интерфейса Windows.

А теперь по поводу нашей учебной мини-игры. Тем, кто смог разобраться в предыдущих выпусках, и особенно тем, кто до этого не умел программировать, я хочу сказать - вы проделали большую работу. Вам есть, чем гордиться. Мы не рассмотрели работу с файлами, а также случайные числа, но думаю, что уж если вы с указателями разобрались, то эти темы не покажутся вам особо сложными, и вы сможете изучить их самостоятельно (в этом вам помогут обучалки www.gamecoder.nm.ru). Самое главное - что теперь вы можете развивать нашу учебную игру так, как вам этого захочется, и сделать из мини-проекта полноценную текстовую игру. И спасибо всем, кто заметил ошибку при "продолжении игры", когда характеристики персонажа не обновляются (лечится это обнулением переменной Player->player_class = 0;). Есть еще парочка, я бы не сказал ошибок, скорее недоделок - предмет нельзя снять, но можно купить пустой предмет в магазине, заплатив 0 золотых, а у лекаря можно не только покупать здоровье, но и продавать, вводя отрицательные числа.

Прежде чем приступить к освоению Win32, я решил дать несколько выпусков "общего плана". Во-первых, их уже давно не было, а ведь я обещал, что рассылка будет интересна не только программистам. Во-вторых, тем, кто еще не разобрался в предыдущих выпусках, не помешает дополнительное время для "наверстывания". И в-третьих, перед серьезным шагом вперед, не помешает немного отдохнуть, заодно расширив кругозор.

И сегодняшний выпуск будет завершающим в теме "текстовые игры". Я решил опубликовать статью автора iliks, которая очень хорошо раскрывает эту тему в общем плане, а заодно может послужить поводом для размышлений тем, кто хочет усовершенствовать наш учебный проект. Итак, вот эта статья:

Мир текстовых адвентюр

iliks

if (Вы любите Quake?==FALSE)
  if (Вы любите Diablo?==TRUE)
    if (Устали ли вы от новых игр, скучных до ужаса?==TRUE)
      if (Хотелось ли вам достать игру, в которую вы будете играть очень долго?==TRUE)
        if (Знаете ли вы прошлое игровой индустрии?==FALSE)
          if (Хотите ли узнать что-либо о нём?==TRUE)
     {
  Читайте статью;
  Quit;
     }

Статья

--cut here--

1) Как это начиналось?

Вы думаете, что первые компьютерные игры появились на C64, Atari 2600 или Dendy? Нет, мои дорогие. Всё было гораздо раньше, за десять лет до того бума на домашние компьютеры в начале 80-х.

Однако мы должны сперва выяснить, что понимать под словом "компьютерная игра". Те из вас, которые впервые познакомились с компьютерами лет пять назад, скажут, что компьютерная игра - это некое сложное действо на экране, преимущественно в 3D, где, в большинстве случаев, игрок управляет персонажем или механизмом на пути к какой-нибудь цели. Да, но это современные игры. Если вы знакомы с компьютерами уже лет десять, то знаете, что игры могут быть довольно простыми в графическом оформлении и целях. И только, те, кто знает компьютеры уже лет двадцать, скажут, что игра вовсе не обязана быть графической. Это может показаться странным для новичков, но... компьютерные игры начались с ТЕКСТОВЫХ игр.

Теперь давайте погрузимся в историю и попытаемся ответить на вопрос этого параграфа.

А всё началось с игры "Adventure". Только подумайте, она была написана в 1972 году! Один причастный к программированию человек (они в то время преимущественно были учёными) любил исследовать разные пещеры со своей женой. Его звали Will Crowther.

И страсть в конечном счёте привела Вила к тому, что он захотел написать программу, которая бы позволяла человеку "бродить" по виртуальным пещерам. Он написал её на компьютере PDP-10 на Фортране - наиболее популярном языке программирования в то время.

Программа понравилась его дочерям и кочевала от друга к другу. Через ARPANet, непосредственную предшественницу интернета (кстати, Вил участвовал в её поддержке), эта игра попала во многие институты. Можете ли вы представить инженера, пытающегося установить Adventure на своём университетском компьютере, ночью, рискуя быть застуканным во время ИГРЫ?! :) Однако, оригинальная версия программы была не совсем окончена и "сыра", наполненная жаргоном спелеологов. Поэтому в 1976 году Don Woods, который работал в лаборатории искусственного интеллекта Стэндфордского университета, сделал попытку придания игре более законченного вида. Он ввёл в неё толкинские образы, в связи с большой популярностью "Хоббита" и "Властелина колец" в то время.

После этого Adventure была перенесена на UNIX, будучи переписанной на C.

Как я уже сказал, Adventure принадлежит к разряду текстовых адвентюр. Но что это значит? А вот что: на экране нет ничего, кроме текста. Но это не было странным в то время, потому что лучшего никто и не знал. Вы управляете персонажем не с помощью джойстика или пары кнопок, а посредством набора команд на клавиатуре на английском языке, например GO NORTH (или просто N). Adventure имела слабый синтаксический анализатор, он распознавал слова только по первым четырём буквам. В наши же дни они способны "понимать" даже короткие предложения, например: TAKE MATCH FROM TABLE AND LIGHT IT WITH MATCHBOX.

Теперь мы должны проследить развитие текстовых адвентюр на домашних компьютерах. Насколько я знаю, они широко были распространены на машинах Spectrum, C64 и IBM PC. Заметьте, что на первых двух машинах эти игры превратились в своего рода "адвентюры с картинками". По-моему, графика привносит много интересного в игровой процесс. Однако многие люди так не считают, и большинство текстовых адвентюр на PC являются текстовыми, даже современные.

Также я должен назвать имя одной из фирм, стоявшей в основе этой ниши игровой индустрии, компанию Infocom. Он состояла из выпускников Массачусетского университета технологии (MIT). Им удалось в короткий срок сделать эти игры популярными не только в узких кругах особо приближённых, но и в широких народных массах. Их первая игра, Zork I, включала в себя огромный словарь, вы могли вводить сложные команды типа тех, которые я приводил раньше. Но с течением времени компьютеры становились всё более и более мощными, появлялись захватывающие аркадные игры, и текстовые адвентюры постепенно начали сдавать свои позиции. Многие компании покинули эту сферу, и любители таких игр остались без поддержки, с желанием играть в новые игры и невозможностью делать это. Так что в конце 80-х эта индустрия была в большом кризисе. Но в конце концов решение было найдено: игроки поняли, что им нужно делать игры самим. Так что этот мирок, эта маленькая страна без границ, в которую может войти любой культурный человек, в начале девяностых была заново отстроена. Появились пакеты для разработки игр, позволявшие пользователям создавать игры без знания программирования. Понятно, что большинство игр стали бесплатными, и эта традиция сохраняется и поныне. Теперь вы знаете исторические факты, и мы можем продолжать.

2) Сугубо текстовые адвентюры

Как я уже сказал, эти игры состоят только из текста. Вы управляете своим персонажем путём использования следующих команд: GO, EXAMINE, LOOK, TAKE, PUT, WEAR, SAY, INVENTORY и некоторых других. Многие из них могут быть сокращены, например GO часто опускается, и можно писать NORTH, SOUTH, WEST, EAST, UP, DOWN или даже просто первые буквы этих названий. Команду EXAMINE нужно применять для того, чтобы исследовать, осмотреть что-либо находящееся у вас, либо в комнате, в которой вы в данный момент находитесь. Всё игровое пространство разделено на комнаты или локации. Команда LOOK даёт описание текущей локации. INVENTORY выдаёт список предметов, которыми вы владеете.

Я должен признать, что эти игры требуют от играющего хорошего знания английского и довольно пытливого и сообразительного ума. Они определённо не предназначены для невежд и некультурных людей. Некоторые из них очень сложны, а текстовые описания мест и ситуаций в них не лишены поэтичности и красоты. Например, адвентюра под Windows по имени Worlds Apart очень хороша в плане текстов, закрученности сюжета и всего остального, автор потратил 3 года на её разработку.

В настоящее время в интернете проводятся соревнования по текстовым адвентюрам. Вы только посмотрите, они очень похожи на демопати!

3) Игры в стиле Rogue

Ух ты, эти игры на самом деле заслуживают особого внимания, если вам нравится Diablo! Больше того, именно они являются первыми RPG играми. А названы они по имени первой из них, "Rogue". Она была написана в самом начале 80-х, на мэйнфрэйме студентами Michael Toy и Glenn Wichman. Им обоим нравилось играть в Adventure, но они поняли её главный недостаток: все действия заранее чётко запланированы, и в сюжете нет каких-либо разветвлений. И решили создать игру, в которую они могли бы играть очень долго, и которая бы не надоедала. И вот тогда-то и появилось магическое слово "Random" (случайный). Случайные числа легли в основу этого типа игр. Этим студентам хотелось сделать не ещё одну адвентюру, а что-нибудь "графическое". Графика там была реализована в текстовом режиме. В игре ваш персонаж выглядит как символ @.

Весь ландшафт игры разделён на много уровней. Каждый уровень занимает один экран и меняется всякий раз, когда вы на этот уровень заходите. Игровой процесс изменился - вы уже не должны решать загадки, вместо этого нужно тренировать своего персонажа путём борьбы с монстрами. Эта концепция сделала своего рода революцию в игровой индустрии (хотя в то время ещё не было такого понятия). Rogue стала самой популярной игрой в студенческих общежитиях. Так что теперь вы знаете, откуда идут корни Diablo.

Rogue не была единственной игрой в своём стиле, хотя она была первой. В наши дни вы можете играть в следующие игры, наследники Rogue: NetHack, Crawl, Ancient Domains of Mystery или ADOM, Moria и Angband. Я назвал только первостепенные хиты. Поверьте мне, их стоит посмотреть! ADOM даже заняла первоё место пару лет назад в номинации "the best freeware game". В неё автор попытался внести некоторый сюжет. Crawl имеет очень большое игровое поле, которое не помещается на одном экране (и это моя любимая игра такого типа). Angband имеет немножко общего с творчеством Толкина и в нём присутствует графика и звук. Я рекомендую попробовать их все, они взаимодополняют друг друга.

Все они могут быть загружены с первой ссылки в следующей главе.

4) Ссылки

Хорошее место для начала - по крайней мере, оно было хорошим для меня -
http://www.stormtroopers.com/ZWR/adventur.htm

Огромная коллекция адвентюр, систем их разработки и т. д. -
ftp://ftp.gmd.de/if-archive

Официальная страница "Adventure" -
http://people.delphi.com/rickadams/adventure/index.html

Информация о "Rogue" от одного из её авторов -
http://www.wichman.org/roguehistory.html

Java-версия "Rogue" -
http://www.hexatron.com/rogue/

"Roguelike News" - десятки игр такого типа!
http://www.skoardy.demon.co.uk/rlnews/

iliks

Надеюсь данная статья показалась вам интересной. Как видите, нашу мини-игру можно очень сильно усовершенствовать, сделав ее полноценной текстовой ролевой игрой (или адвентюрой). А чтобы вам было проще это сделать, я порекомендую одну неплохую книгу, недавно попавшую мне в руки. Она называется "Программирование на С++", но если дословно переводить ее название, то оно звучит так "Программирование на С++ для абсолютных новичков". Что мне понравилось в ней? Прежде всего то, что каждая глава заканчивается примером создания простой игры (очень похоже на то, что мы делали в предыдущих выпусках), а в конце даже делается "первый шаг" в освоении интерфейса Windows и DirectX. Конечно, вряд ли вы сможете после прочтения этой книги программировать DirectX, как это обещано в аннотации, но изучение DirectX вы начнете непременно. (И сможете потом успешно продолжить, с помощью других, более серьезных книг по этой теме). Впрочем, книга и не ставит перед собой цели научить читателя работать с графикой - она раскрывает основы С++ (и делает это очень достойно, охватывая несколько не раскрытых в рассылке тем) и позволяет "одним глазком" взглянуть на программирование графики. И все это на примере простых игр.

Так что, книга "Программирование на С++" Дирка Хенкеманс и Марка Ли очень поможет вам пополнить вам знания по С++ (кстати, там изучается не "классический С", как в рассылке, а именно С++), и усовершенствовать нашу текстовую мини-игру. Вдобавок, вы прикоснетесь к программированию графики, что, разумеется, пригодится при изучении дальнейших выпусков рассылки.

Вот ссылка на книгу в интернет-магазине "Озон": Программирование на C++ (+ CD)

До следующего выпуска!

--------------------------------------------------------------

Архив рассылки вы найдете по адресам http://subscribe.ru/catalog/comp.games.gamecoder и http://www.gamecoder.nm.ru/subscribe.htm.

Евгений Казеко.
kazeko@list.ru
www.gamecoder.nm.ru
-----------------------------
Рассылка "Создание компьютерных игр", выпуск 10.
Выпускается еженедельно по средам.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное