Суббота, 18.05.2024, 14:52
Приветствую Вас Гость | RSS
Форма входа
Поиск
Календарь
«  Май 2024  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
2728293031
Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Глава 1: Добро пожаловать в подземелье

Глава 1:     Добро пожаловать в подземелье

Добро пожаловать в первую главу книги "Программирование игр на Visual C# для начинающих". В этой главе мы дадим краткий обзор того, что следует ожидать в следующих главах и зададим темп, в котором мы будем погружаться в Visual C#. Цель книги – провести вас шаг за шагом через разработку ролевой игры в стиле "Данжен краулер" (dungeon crawler). Во-первых, мы изучим основы программирования игр в 2D, для того чтобы наполнить наш "Ящик с инструментами" такими вещами как – классы и функции необходимые для большинства игр (например, спрайты и растровые изображения). Затем мы разработаем несколько игровых редакторов (включая самый важный – Редактор Уровней!), построим подземелье, заселим его монстрами, неигровыми персонажами (NPC). Чтобы достигнуть этих целей, нам придётся начать с азов.

Вот темы, которые мы затронем в этой главе:

  • Программирование игр – искусство
  • Попробуйте что-нибудь новое!, а вопросы будем задавать потом
  • Позвольте своей творческой мысли лететь
  • Творчество, талант и тяжелая работа
  • Потолок развития
  • Изучение приемов торговли
  • Взгляд на Dungeon Crawler

 

 

Программирование игр – искусство

Visual C# это хороший инструмент для написания игр новичками, так как язык достаточно прост в использовании, а основанная на Windows-Forms графика обладает хорошей производительностью, что как раз нам и необходимо, для быстродействующего игрового цикла (обрабатывающего игровую логику). Эта книга рассматривает C# как профессиональный язык для разработки игр. То, что делает Visual C# популярным при разработке приложений, будет полезно и для наших целей, мы просто не будем использовать диаграммы движения данных или блок-схемы. Хотя то, что книга озаглавлена "для подростков", не означает, что любой человек, любого возраста не может прочитать её. Название просто отражает стиль написания и уровень программирования среднего читателя который, вероятно, прочтёт эту книгу.

Я провел довольно много лет, программируя на .NET при помощи Visual C# и Visual Basic, и я высоко ценю среду .NET. Но, я должен признаться кое в чём: над каждой строкой кода прикладных программ, которые я когда-либо написал, я мечтал об исходном коде для игр. Теперь, уже не важно, что я делаю каждый день, я люблю программирование игр, и позвольте мне сказать вам, что этим – намного интереснее заниматься пока вы вырастете. Я работал с С++ большую часть времени, на протяжении последних нескольких лет, используя DirectX и другие SDK, поэтому у меня есть хорошее представление о том, где и как Visual C# уместен. В качестве инструмента для разработки игр, в руках достойного программиста, он предоставляет хорошие результаты. Но, как и в случае более мощного языка, такого как С++, в руках новичка он просто не будет реализовывать весь свой потенциал. Что вам необходимо сделать в течении следующих нескольких глав? – Изучить, как получить максимум от языка C#, и выжать его до предела! Мы не используем DirectX, так как игровые требования достаточно просты и не требовательны к графическим ресурсам – нам нужен игровой мир в 2D, с фэнтезийными RPG персонажами и изображением подземелья. "Визуальность" в Visual C# позволяет нам легко создать игровой редактор, в отличие от С++ в котором это не так просто (я пробовал!). Создать 2D RPG можно на любом языке и на любой платформе, но мы собираемся исследовать разработку RPG на C#.

Дополнение

Если Вы, в добавок, любите язык Basic и хотите изучить ещё больше приёмов при программировании RPG, тогда вам следует заглянуть в родственную книгу – "Программирование игр на Visual Basic для начинающих" 3-е издание. В этой книге создаётся целый мир, с городами, деревьями, берегами и квестами. Язык Basic сильно отличается от C# но .NET Framework и Win-Forms делают код похожим. Между этими двумя книгами есть много почти одинакового кода, поэтому, чтение дополнительной книги может быть хорошей возможностью, чтобы изучить оба языка.

Тем не менее, Вы должны иметь в виду что – Это не большая по объёму книга, и наша цель – описать создание ролевой игры и всех её частей на страницах этой книги. Если на протяжении последующих глав вы почувствуете себя не уверенно, я советую взять учебник по Visual C#, чтобы получить "волшебный пендель", а затем вернуться к этой книге. Все примеры – умышленно упрощены, но очень много информации подаётся в быстром темпе, так что – не отставайте! Если вы совсем полный новичок в C#, то я рекомендую изучать коды очень внимательно, или взять книгу по C# для начинающих (такую как, например, "Visual C# Programming for the Absolute Beginner").

На каждую реализованную великую игровую идею, приходится в сотни раз больше идей, которые только и ждут чтобы их создали. Одна вещь, которую я хочу, чтобы вы сделали читая эту книгу – научились думать нестандартно! Конечно, я понимаю, что это клише и что вы слышали это уже много раз, но это очень важная способность, так как она поможет Вам очень чётко представлять каждый пункт. Большинство людей, и множество программистов, неспособны думать дальше своего опыта и приобретенных знаний. Очень мало таких людей которые могут думать о чём-то таком, совершенно новом, чуждом, о чём никогда не думали прежде. Фраза "нестандартное мышление" может означать разные вещи в зависимости от ситуации, но когда я говорю о написании игр, я имею в виду то, что вы должны думать сверх того, что уже было сделано. Ещё не все величайшие игровые идеи реализованы!

Для каждой игры, такой как Doom, которая совершает переворот в индустрии, есть ещё с десяток игр создающих тенденцию игровых идей ожидающих своего открытия. Не отчаивайтесь, полагая, что самые лучшие идеи уже были реализованы! Так полагали многие игроки до того как реал-тайм стратегии снова взяли верх в игровой индустрии пару лет тому назад. (Если вы не верите мне, то просто взгляните на продажи "StarCraft II" показанные на рисунке 1.1.) Какой жанр будет следующим? Возможно, он ещё не был изобретен, и это – Ваша работа!

Подсказка

Прежде чем вы сможете дать волю своему творчеству, вам потребуется хороший фундамент в виде основ программирования, чтобы вы не завязли, не зная, как ваше воображение обретает жизнь на экране. Изучайте столько сколько нужно, чтобы ваши идеи могли прийти в движение без потери импульса, пока вы улучшаете свои знания в программировании. Наберите скорость настолько быстро, чтобы можно было создавать игры, и двигайтесь дальше – выходя за рамки обучения.

 

Рисунок 1‑1 StarCraft II: Wings of Liberty

Попробуйте что-нибудь новое!

В далёком 1992 году, я на своём компьютере играл в "Civilization" Сида Мейера, "Super Mario World" на моём Super NES, и "Dragon Crystal" на Game Gear. Сравните их с какой-нибудь замечательной новой игрой, например, "Goldeneye 007" для Nintendo Wii! (См. Рисунок 1.2). Дело в том, что большинство людей не играло в игры в то время, в отличие от современности, когда почти все играют! Такая игра, как "Doom", поражала воображение по тем временам, и именно поэтому люди по-прежнему сохраняют теплые воспоминания о ней до сих пор.

Рисунок 1‑2 Обложки игры “Goldeneye 007” для Nintendo 64 и Wii.


А вот уже это, было причиной создания "Doom III", и именно поэтому Дэвид Кушнер написал книгу "Мастера Doom". "Doom" настолько резко отличается от первого лица (FPS). FPS игры доминируют в современном игровом мире, в отличие от любого другого жанра, отчасти потому, что оказались востребованным на рынке виртуальных реальностей, которые переживали спад в то время.

Вы хотите создать игру, подобную "Doom", используя Visual C#? Эта цель достижима, но это будет проблематично. Visual C # компилятор создает на промежуточном языке (intermediate language – IL) код, который получается одинаковым, независимо от того, используете ли вы Basic или C#, а затем IL код компилируется в объектный файл и связывается с исполняемым файлом. Такая компиляция Visual C# кода игры может принести игрового опыта подобно Doom-у. Есть довольно много сторонних библиотек для C# и даже больше чем для C++. Например, большинство C++ игр использует вспомогательные библиотеки, такие как Perlin·(генератор текстур), ZLIB (для чтения файлов Zip), LIBOGG (для воспроизведения аудио), некоторые из них доступны для C#, но не все. Так что, хотя мы можем чисто технически построить такую игру, подобную "Doom" на C#, мы должны заново изобретать многие вещи сами по себе, или подключать C++ библиотеки, через сложную библиотеку взаимодействия с .NET оборачивая каждую C++ функцию, которая нам необходима. Это очень много работы! Зачем тормозить на этом? Как насчет "Quake"? Первые две игры "Quake", в техническом плане, не сильно продвинулись дальше "Doom". Да, конечно, они использовали матрицы преобразования, освещения и 3D-модели, но это не будет проблемой для современных видеокарт, которые могут обрабатывать изображение грубым перебором, без какой-либо оптимизации. То есть, опять же, дело упирается в язык. И так, мы не собираемся строить Doom-подобную игру на C#, мы собираемся создать невероятно весёлую ролевую игру!

А может быть мы хотели сделать игру похожую на World Of Warcraft? Вы можете создать маленькую, менее амбициозную версию WoW используя C# и Managed DirectX (который в настоящее время устарел и заменен XNA Game Studio), но мы не можем осуществлять 3D-рендеринг на основе Win-Forms графики. Самым сложным аспектом игры является сервер, а в случае WoW, не существует одного сервера, или даже связки серверов, существуют целые стеллажи из стоек с сотнями серверов, в нескольких географических точках по всему миру. Таким образом, технически возможно играть в WoW с вашим другом из Австралии (посредством подписки в том же регионе), но, скорее всего, проблема будет в пропускной способности. Ограничение связано с задержками или отставаниями, которые связаны с количеством прыжков необходимыми для отправки пакета данных через весь мир. В такой игре, как WoW, необходимо высокоскоростное подключение к Интернету с очень малой латентностью, для того, чтобы впечатления от игры были более реалистичными.

Я уверен, что вы были свидетелем редкого и забавного "эффекта слайд-шоу" в некоторых играх, когда сервер становится перегруженным и подтормаживает, из-за чего игроки не получают обновления с сервера в течение нескольких секунд, до тех пор пока сервер не сможет наверстать упущенное. В первую очередь это происходит, когда множество игроков использует подключение с большой задержкой, в результате чего соединение запаздывает. В достаточном количестве, это заставляет игру запинаться или переходить в "режим слайд-шоу». (Фраза происходит от частых восклицаний игроков "Я сегодня наслаждаюсь слайд-шоу!", которые были распространены в период расцвета модемной связи, до распространения широкополосного доступа). Хотя компания Blizzard получает миллионы долларов от абонентской платы каждый месяц, компания тратит миллионы на интернет-трафик, чтобы сделать игру одинаково доступной.

О языках программирования

Итак, какие аппаратные средства нужны, чтобы играть в игры построенные на Visual C# с использованием Win-Forms? В принципе, речь идёт о таком же игровом оборудовании, которое необходимо для воспроизведения практически любых игр лежащих, в настоящее время, на полках магазинов, и мы можем использовать даже низкоуровневый ПК, так как мы не будем ссылаться на какие-либо устройства 3D-рендеринга. Рассмотрим типичный NHRA драгстер. Он, как правило, может сделать только несколько заездов длинной в четверть мили, прежде чем двигатель потребует восстановления. Он может сделать заезд примерно за четыре секунды, но только один раз. С другой стороны, вашему обычному семейному седану или минивэну потребуется около 20 секунд, чтобы достигнуть отметки в 1320 футов, а спортивный автомобиль достигнет её примерно за 12 секунд. Но что можно сказать о простоте использования, многоцелевой функциональности, расходе топлива, и так далее? Вы не можете просто, словно в детскую машинку, сесть в драгстер и поехать на приём ко врачу. Хотя на нём вы, теоретически, могли бы добраться максимально быстро, но чёртов автомобиль может только повернуть налево или направо, не говоря уже о лавировании в дорожном движении. Что насчет того, чтобы использовать более реалистичный гоночный автомобиль, как например: гоночный автомобиль NASCAR. Здесь, у нас — чуть больше гибкости, а потенциальной мощности достаточно чтобы достигнуть стратосферы. Но в ней нет фар, задних фонарей, и других современных удобств, таких как кондиционер или глушитель. Вы знаете, на сколько громко звучит автомобиль без глушителя? Вам даже не потребуется гоночный двигатель, чтобы оглохнуть. Во всяком случае, типичный автомобиль NASCAR безумно быстр, но очень негибок и подвержен-ошибкам, не в силах противостоять злоупотреблениям стоп-энд-гоу городского движения.

То же самое можно сказать и о C++, это невероятно быстрый и мощный язык, но при этом очень неустойчивый. Я написал много кода на C++. У меня есть около 15 лет стажа работы с языком. И даже после этого, я до сих пор застреваю на нескольких часов, пытаясь вычислить синтаксическую ошибку в моей C++ программе. И такое случается постоянно! Это часть понимания необходимо иметь с этим языком. Но если вы проявите ему должное уважение, поймёте его возможности, и постараетесь не расстраиваться по пустякам, то мало-помалу у вас будет прогресс — обертывая самые низкоуровневые игровые функции в слой защитных классов, затем еще один слой, и так до тех пор, пока у вас не получится хорошо ведущая себя программа, которая не содержит ошибок. Windows, сама по себе операционная система — была написана на C++. Когда вы работаете с DirectX SDK используя C++, вы в буквальном смысле работаете с внутренностями ОС Windows, и можете возиться с исходным кодом Windows.h файла.

Вот то, что взорвёт ваш мозг: Visual C# был создан при помощи языка C++! (Технически, мы говорим о Visual Studio). Странно, не правда ли? Я говорю о компиляторе, редакторе, и так далее. Когда-то, Я писал о другом инструменте программирования игр для начинающих, который называется DarkBASIC Professional, разработанного The Game Creators (www.thegamecreators.com), и этот инструмент (наряду с его игровым движком на DirectX) также был создан в C++. Даже последняя версия Visual C++ была создана при помощи предыдущей версии Visual C++. Это может запутать вас ещё больше, если вы будете думать об этом.

Создание современных шутеров от первого лица (FPS) требует намного больше усилий, чем просто отображение полигонов. Вы должны написать код для загрузки BSP уровня, код для загрузки иерархических объектов, шейдерный код для отображения объектов с освещением и специальными эффектами, код для загрузки и воспроизведения звуковых эффектов и музыки, и это только техническая сторона. Вы также должны продумать дизайн игры, потому что игра, которая только выглядит здорово, не так уж хороша без доброй истории, а вот здесь — приходит дизайнер. "Quake II" не имела много дизайна внутри себя, и на самом деле мне кажется, что ID Software — приляпали историю после того, как игра была почти закончена. Но мы говорили о всемирно известной игровой студии, а не о "<вставьте ваше имя> Studios".

Позвольте вашей творческой мысли лететь

Важным пониманием, однако, является то, что нестандартное мышление и умение придумывать что-то невероятное — это только первый шаг к созданию великой игры. Но, перед тем как вы сможете быть создателем, вы должны иметь представление — о технологии, прежде всего! Вы должны иметь технические ноу-хау, чтобы добиться успеха. В области видеоигр, это означает, что вы должны быть квалифицированным программистом. Если вы только начинаете, то эта книга — то что нужно, потому что Visual C# позволяет испытать некоторые из ваших игровых идей, без того, чтобы слишком увязнуть в сложном языке программирования (таком как, например, C++). Эти языки имеют тенденцию высасывать все ваше время и оставлять ваш ум в онемении и не в состоянии мыслить творчески. Писать цельный код имеет тенденцию делать это с человеком, который является, почему это огромная помощь, когда вы начинаете с не слишком сложным языком, таким как C #.

Совет

Вам не нужно быть C++ программистом чтобы написать убойную игру! Нужно всего лишь взять хорошую графику, хорошую историю и хорошо написанный код. Вам не нужно писать фантастический код со сложными алгоритмами, вы просто должны начать и довести до конца разработку игры. Это действительно то, что это все о — и это то, что профессионалы игровой индустрии ищут в кандидате.

Творчество, талант и тяжелая работа

Я видел несколько высококачественных игр, созданных с помощью DarkBASIC. После того как вы закончите с этой книгой, я призываю вас посмотреть "DarkBASIC Pro — Программирование игр", второе издание (изд. Course· Technology, 2006). После того как вы освоите язык C # и напишите несколько игр на нём, может быть тогда вы будете иметь некоторый опыт, который позволит вам продолжить изучение C++. Я портировал некоторые игры с Visual C# на C++ / DirectX, DarkBASIC, а затем и на Java. На самом деле, движок блочной карты разработанный в этой книге был похож на тот, что содержится в книге по DarkBASIC (см. главу 15, "Игровой мир в 2D: Редактирование уровня и тайловый движок"). А для C++ — кода, см. главу 10, "Прокрутка фона" в книге "Программирование игр для начинающих" (третье издание.). Другой, более очевидный выбор для дальнейшего изучения, будет изучение XNA Game Studio, который позволяет писать игры для Xbox 360 при помощи языка C# который мы здесь и используем! Исходный код различных языков очень похож между собой, при условии что вы понимаете идеи стоящие за ними. Технология слоёв с различными блоками, которую вы изучите в этой книге легла в основу нескольких игр, созданных на других языках, и теперь мы будем переносить её ещё раз с Managed DirectX версии (в предыдущем издании), в Windows Forms и GDI + в новой редакции. Помните, что это всего лишь концепция!

Если вы хотите и стремитесь, как подающий надежды программист игр, понимать эти идеи то, лучший способ освоить их состоит в написании игр, при помощи вашего любимого языка программирования. Верите или нет, но я начинал программировать на Microsoft Basic, который пришел с самых старых компьютеров на заре компьютерной индустрии (на таких системах, как Apple II, Commodore PET и IBM PC). Если вы интересуетесь изучением традиционного BASIC, попробуйте QB64 на сайте www.qb64.net — там можно скомпилировать и запустить все старые BASIC· листингти, начиная с 1960-х годов (с номерами строк), а также более современные QuickBasic и QBasic код 1990-х годов. QB64 имеет возможность отображать графику при помощи OpenGL!

Я должен сказать, что техническое знание языка программирования почти эквивалентно по важности вашему творческому потенциалу. Я знаю несколько очень талантливых программистов, которые не обладают ни граммом творчества, поэтому они не в состоянии сделать что-нибудь уникальное и интересное, пока кто-нибудь другой сначала не подкинет им идею. Это хорошо быть таким человеком — правда, хорошо быть специалистом в программировании, но не очень творческим, потому что вы всегда можете позаимствовать идеи из других игр или из кино, и оставить идеи гейм-дизайнеру или другому человеку, который нуждается в ваших технических навыках. Это не имеет значения, если у вас есть технические или творческие наклонности, потому что вам просто нужно изучить всё что вы можете. Думайте о ваших любимых школьных предметах, или любимых фильмах, и всегда задавайте себе вопрос: А я могу сделать игру из этого?

Нет предела совершенству

Знаете ли вы, что вы можете писать свои собственные игры для Xbox 360? Microsoft предоставляет XNA Game Studio 4.0 бесплатно, и она использует Visual C# 2010 Express, как компилятор. Для ежегодного членского взноса, вы можете разработать игру прямо на розничном Xbox 360 и загрузить XNA игру в специальный раздел "для разработчиков" на Xbox Live Arcade и продавать свои игры, используя Microsoft Points (лицензирование похоже на игровой веб-сайт) . Преимущество заключается в том, что вы можете отлаживать код прямо на розничном Xbox 360

Вы не должны ограничивать свои творческие силы только потому, что вы думаете, что что-то невозможно. На самом деле, не ограничивайте себя в чём-либо, и не думайте, что вы ничего не можете сделать, даже если вы попробовали раз и не смогли. Если вы можете представить себе нечто, что казалось бы не от мира сего, то это можно построить. Суть в том, что человеческое воображение это все, что нас окружает. То, что Жюль Верн представил еще в конце 1890-х годов — те идеи, которые были настолько сумасшедшими, что все смеялись над ними, вдруг стали реальностью менее чем через 70 лет. Представьте себе, что люди, ездят в конные экипажах, по грязи или мощеным дорогам, а некий сумасшедший писатель предполагает, что люди будут ходить по Луне. Какой такой лунатик, не так ли? Если бы вы жили в 1890 году, вы бы, наверно, подумали, что он сумасшедший! Конечно, нам легко смеяться над людьми, какое-то время спустя, ведь мы-то знаем лучше (то, что называется задним числом), это также легко, как критиковать небольшой изъян в сложном автомобиле или компьютере. (Критиковать — легко, создавать — трудно! Как вы думаете, почему сегодня в сети существует очень много блогов? Нетворческие люди склонны критиковать на своих собственных страницах то, что они не в состоянии создать.)Жюль Верн описал ракету, которая взлетела с Земли от взрыва огромной силы, который мог бы оторвать огромную ракету от земли и вывести людей в космос, чтобы они могли высадиться на Луне. Знакомо, не правда ли? Если вы когда-нибудь смотрели видео старта Аполлон-11, то это сверхъестественно, как Жюль Верн описал запуск за 70 лет до этого. Даже сегодня, ракеты-носители выводятся на орбиту с использованием тех же базовых технологий, хотя ракеты являются гораздо более мощным и более эффективными, чем те что были во времена программы Аполлон (настолько, что частные компании выступают с планами вступить в космический туризм в ближайшем будущем). Что мне с этого? Только то что: не думайте, что безумные идеи невозможны, прежде чем попытаться. Я уверен, вы слышали историю о том, как много неудачных лампочек Томас Эдисон построил, пока одна из них не заработала. Я обнаружил, что один из лучших способов сделать большую игру, это основывать его на одном из моих собственных любимых предметов, с которыми я хорошо знаком! Это позволяет с легкостью построить игру, потому что дизайн-документ действительно ненужен.

Изучаем секреты мастерства

Наиболее технически квалифицированными программистами часто являются те, кто копирует самых талантливых (творческих) людей в мире. С этой точки зрения, люди по-прежнему копируют работу Джона Кармака (из Id Software), который продолжает штамповать невероятные игровые движки. Подавляющее большинство разработчиков игр пытается идти в ногу с ним или пасуют перед гением Кармака и в конечном итоге платят, чтобы использовать его последние игровые движки. Кармак является одним из немногих, кто обладает как непревзойденными техническими навыками, так и невероятными творческими талантами. Хотя он родился талантливым, он научился техническим навыкам только благодаря тяжелой работе, вкладывая в неё невероятное количество часов проведенных за клавиатурой, экспериментируя, настраивая, и пробуя новые вещи, день за днем, месяц за месяцем, год за годом... и даже сейчас он делает это.

Если ваша цель просто, хорошо провести время изучая, как написать свою собственную игру, и у вас нет реального желания стать мастером этого дела, то это совершенно нормально! Я один из таких же людей. Я люблю писать игры для удовольствия себе и другим, и я не сильно беспокоюсь о том, хороша ли моя последняя игра (так как я не пытаюсь их продавать, в большинстве случаев). Если вы подходите к разработке игр с точки зрения хобби, то весь смысл в том, чтобы получить удовольствие. Если вы хотите принять серьезное, участие в разработке игр в колледже, а затем получить работу в качестве профессионального разработчика игр, вы, вероятно, подойдёте к предмету немного более серьезно. Есть преимущества в том чтобы заниматься этим в качестве хобби: никаких сроков или давления, и свобода делать то, что вы хотите. Вы всегда хотели, создать свою собственную ролевую игру (или другой тип игры), и вы решили научиться делать это по своему усмотрению? Отлично! На самом деле, это и есть основная направленность этой книги. Если вашей целью является изучить это для жизни, то я желаю вам самого лучшего, эта книга может стать вашей первой ступенью на пути к этой мечте.

Когда то я предлагал вам мыслить нестандартно, поэтому, я советую чтобы вы старались не поддаваться принципу "Плавали, знаем!" это менталитет создания еще одного мода (с использованием движка игры, например Battlefield), или другого клона Тетриса, или ещё одной версии Breakout. Это потрясающий метод обучения очень распространен, потому что эти две последние упомянутые игры легко сделать и демонстрируют важные понятия в программировании игр. Мод на движке игры, с другой стороны, это совершенно другой вопрос, большинство модов практически не требуют программирования. Они просто преобразуются с помощью новых 3D моделей и уровней игры, чтобы соответствовать новой теме (как в случае с Desert Combat [Battlefield 1942 MOD] и Counter-Strike [Half-Life MOD]). Попробуйте придумать несколько совершенно оригинальных игровых идей и развить их, независимо от того, на сколько сложна концепция игры, если это совершенно новая идея, то она, вероятно, будет интересна! Конечно, фактор увлекательности, полностью зависит от вас, дизайнера игры и программиста.

Посмотрите внимательно на Dungeon Crawler

Эта книга создает только одну игру, чтобы научить программированию игр и дать общую картину того, как темы в каждой главе складываются между собой для использования в реальной игре. Альтернативой является — отказаться от игры-примера полностью или просто использовать небольшие игровые примеры или графические демо, чтобы объяснить, как новую тема может быть использована. Маленькие демо и мини-игры предоставляют хорошие примеры отдельных тем, но целая игра даст вам лучшее представление о всей "картине". Эту игру мы будем строить на основе смещающейся игровой карты и анимированных спрайтов, уже существующих и свободно распространяемых, любезно предоставленных Райнер Прокейном (www.reinerstileset.de). Рисунок 1.3 показывает игру такой, какой она будет выглядеть, когда вы закончите её в последней главе этой книги.

Рисунок 1‑3 Dungeon Crawler - игра которую вы создадите scratch in this book.

Создание ролевой игры

Я выбрал создание полноценной RPG для этой книги, потому что никакой другой предмет не погружает в самые глубины программирования игр лучше, чем реальная RPG со всеми возможностями, которые присущи этому жанру. Поскольку я отношусь к старой школе игроков, я все еще люблю классику жанра, например — Ultima VII: The Black Gate. Существует движок с открытым исходным кодом под названием Exult Ultima7 Engine (рис. 1,4), который использует оригинальные Ultima VII графику и файлы данных и воссоздает геймплей, и включает полноценный игровой редактор. Скачать и поиграть в неё можно с http://exult.sourceforge.net.

Моим вторым выбором была игра основанная на вселенной "Star Trek", но тогда возникает проблема авторского права, при использовании ТВ-шоу в качестве основы для игры. Если вы действительно любите некоторые вещи, такие как Star Trek, то я призываю вас не останавливаться и написать игру об этом, а затем отдать её своим друзьям. Эффективность обучения повышается, когда вы работаете над игрой на тему, которая вам действительно нравится и которая имеет большой подтекст, с огромной историей окружающего фона.

Рисунок 1‑4 Exult Ultima7 Engine. (Linux версия)


RPG, которую мы будем строить в рамках учебного процесса, называется Dungeon crawler, действие происходит в средневековой Ирландии, и основывается на древней кельтской истории и мифах, служащих в качестве справочного материала для нашей игры. Мы будем создавать эту игру попутно изучая важные навыки в каждой новой главе.

Подземелье

История в нашей игре "Dungeon Crawler" не включает в себя чисто фэнтезийных созданий, таких которых вы могли бы найти в других РПГ (вампиры, скелеты, оборотни, гигантские змеи, гигантские пауки, драконы, и тому подобное) — здесь будет несколько существ позволяющих сделать геймплей весёлым и привлекательным насколько это возможно. В игре может быть несколько людских персонажей борющихся против монстров, а также взаимодействующих с NPC, а именно — продавцы в "городе", в который вы можете пойти, чтобы продать награбленное и купить новое имущество. На рисунке 1.5 показаны несколько спрайтов с монстрами, которые есть у нас в наличии для игры (любезно предоставлены Райнер Prokein). Так-как в большинстве RPG играх основной кураж заключается в убийстве фэнтезийных монстров, то и в "Dungeon crawler" будет много существ для сражений, в игре также будет присутствовать несколько человеческих персонажей, с которыми ваш игрок будет пересекаться.

Рисунок 1‑5 Assortment of monster sprites available for our game.

Примечание:

Графика, использованная для игры DC была создана Reiner "Tiles" Prokein, который выложил её в свободный доступ, без каких-либо ограничений. Вы можете просматривать спрайты и тайлы Райнера на www.reinerstileset.de.

Описание персонажа игрока

Рисунок 1‑6 Baldur’s Gate.


Самый сильные РПГ обычно позволяет игроку создать собственного персонажа, для игры, хотя в последние годы эта тенденция отходит на задний план в hack-and-slash играх, таких как Baldur's Gate (и это нормально, потому что они ориентируются на другой тип игрока, получающего большое удовольствие от RPG, и позволяют людям, которые обычно не играют RPG, заглянуть в этот большой мир). (См. Рисунок 1.6). "Baldur's Gate" конечно же позволит вам создать персонажа, но это менее надежно, чем традиционная RPG система, поскольку игра предназначена больше для жанра "hack-and-slash ".

Рисунок 1‑7 Diablo III.

Серию игр "Diablo" от Blizzard можно также причислить (хотя это и спорно) к категории игр "hack & slash", как и "Baldur's Gate". См. Рисунок 1.7.

Эти игры дают представление о том жанре, который у вас есть возможность создать в этой книге! Конечно, вы можете настроить и изменить игру в соответствии с вашей фантазией, и, после прочтения этой книги, вы будете иметь технические знания необходимые для того, чтобы сделать это. Мы будем пошагово проходить через игровой движок "Dungeon crawler-а", и будем развивать игру в каждой новой главе, но полностью завершенная игра, с квестами и целями, зависит только от вас!

Рисунок 1‑8 Спрайты различных классов нашего персонажа доступные в игре.


Я беру эту игру в несколько ином направлении и следую глобальному сценарию, такому который вы могли бы увидеть в сериях "Ultima" и "Zelda". В Dungeon Crawler существует много человеческих персонажей (как вы узнаете в следующих главах), и игрок может выбрать один из нескольких классов. Хорошие неигровые персонажи (NPC) также помогают игроку успешно завершить основную цепочку квестов в игре и суб-квесты. В нашей игре, мы позволим игроку создать собственного персонажа, основанного на нескольких классах персонажей, как показано на рисунке 1.8. Некоторые возможные классы включают в себя:

  • Воин — сильный боец ближнего боя с мощным оружием и бронёю.
  • Паладин — сбалансированный боец ближнего боя, который носит броню и лечит себя.
  • Охотник — ловкий боец, который носит кожаные доспехи.
  • Маг — мощный пользователь магии, который носит одежду из ткани и орудует посохом.

Совет

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

Adventure или Dungeon Crawler?

На мой взгляд, существует два типа классических РПГ: приключенческие игры и данжен краулеры. Типичное DC подземелье состоит из места возрождения или родного города, где вы можете экипировать Вашего персонажа (покупать оружие, броню и т.д.) используя сокровища найденными вами в подземелье, которое обычно состоит из многих уровней и распространяется в глубь Земли, и часто изображается как золотой рудник, который стал логовом злых существ. Стандартом жанра широко считается классическая игра "Rogue" (показана на рисунке 1.9). В то время когда вы убиваете плохих парней (представленных в виде маленьких ASCII символов, такие как #, % и &), ваш опыт растет, и вы находите золото. С ростом вашего опыта, растут и ваши навыки, и это отражается на уровне вашего персонажа. Воин 20-го уровня, например, может убить скелета лучника 5-го уровня ребром ладони, так сказать, в то же время, Огненный дракон 18-го уровня — будет представлять собой серьезную угрозу! Такой тип игры, как правило, концептуально очень прост и не имеет серьезной сюжетной линии или особой интриги — отсюда и термин "dungeon crawler" или "dungeon hack". Diablo и Dungeon Siege воплощают этот тип игры.

Рисунок 1‑9 Rogue defined the RPG genre in the ancient days of computer gaming.

В другом типе RPG — "Приключение" (adventure game), как правило, действие происходит на поверхности, а не в подземелье или в подземном руднике и часто включает в себя более глубокий сюжет с квестами, бросающими вызов игроку. Эта игра позволяет персонажу игрока получать опыт, оружие и специальные элементы, таких как доспехи, амулеты, магические кольца, и так далее. Хотя основной квест в Adventure RPG может быть очень трудным, доп-квесты позволяют персонажу игрока достичь уровня, достаточного чтобы пройти основной сюжет игры. Дополнительные квесты предоставляют множество возможностей для творческой реализации гейм-дизайнера, можно вставить увлекательные рассказы и взаимодействия с NPC. Ultima VII является хорошим примером такого вида игры. (Этот тип RPG и находится в центре внимания книги «Visual Basic Программирование игр для подростков», 3rd Edition).

Мы построим редактор уровней подземелья для этой игры, полностью с нуля, начиная с главы 6, "Создание Dungeon редактора". Дополнительные игровые редакторы будут присутствовать в последующих главах: редактор персонажей — в главе 10, и редактор игровых предметов — в главе 13.

Поднимаем уровень!

Эта глава познакомила вас, в общих чертах, с основными понятиями, которые вы будете изучать в последующих в главах. В следующей главе вы узнаете, как сделать первый шаг к написанию игр с Visual C# путем создания вашего первого Visual C# проекта и углубитесь в программирование графики GDI+ на основе Win Forms. В этой главе было мало конкретики, но много идей, а также предоставлен беглый взгляд на игру Dungeon Crawler — RPG, которую вы создадите руководствуясь этой книгой. Остальные главы первой части научат вас, как использовать пространство имен Graphics в .NET Framework, чтобы отобразить растровые изображения и анимацию спрайтов, с введением в программирование графики на GDI+ и основополагающего кода, который будет необходим для игры.


© Jonathan S. Harbour "Visual C# Game Programming for Teens" 2012