Введение
Благодарности
Большое спасибо Эми Смит, Дженни Дэвидсон и Джошуа Смиту за ещё одну хорошую книгу – я думаю, что мы составляем хорошую команду, и я, возможно, не сделал бы книгу без Вас! Эта книга была очень интересным проектом из-за затрагиваемой в ней темы, и я был рад, что имею возможность написать об этом. Я, надеюсь, что конечный результат отразил то внимание которое уделялось этой теме.
Благодарю Дженнифер и наших детей, Иеремию, Кейли, Кейтлин и Кортни, за ту радость что приносите в мою жизнь! Я так же благодарен Эден Селесте за то, что она поделилась своим талантом подготовив обложку и концепт-арты игровых персонажей и монстров. Её работы можно увидеть на www.edenceleste.com.
Еще раз спасибо Райнеру Прокейну за нарисованные им спрайты, которые вошли в примеры в этой книге. Художественные работы в игре – все с его бесплатного ресурса на www.reinerstilesets.de.
Об авторе
Джонатан С. Хэрбур программировал видеоигры с 1980-ых. Его первой игровой системой был Atari 2600, который он разбирал на полу своей комнаты как ребенок. Он писал о многих вещах, таких как C++, C#, Basic, Java, DirectX, Allegro, Lua, DarkBasic, Pocket PC и игровые приставки. Джонатан – автор недавно вышедших книг, "Beginning Java SE 6 Game Programming" третье издание; "Visual Basic Game Programming for Teens" третье издание; "XNA Game Studio 4.0 for Xbox 360 Developers" и "Multi-Threaded Game Engine Design". Обладает ученой степенью магистра в области управления Информационными системами. Посетите его блог и форум разработки игры на www.jharbour.com.
Введение
Представьте себе такую ситуацию: Вы создаете персонажа – охотника, со случайными параметрами и очками жизни, и в поисках сокровищ заходите в подземелье. Там Вы натыкаетесь на зомби, расхаживающего около груды трофеев и золота! Нападаете на него, а он на вас. Вы бросаете кубик-1D20 и выпадает критический удар! 20 пунктов урона, плюс классовое умение поражать через броню зомби, приносит гарантированное попадание. Бросок кубика-1D8 определяет повреждение, плюс ваша сила и модификатор оружия (1D4) – этого более чем достаточно чтобы убить монстра! Зомби бревном падает на землю. Вы поднимаете лежащую рядом с неподвижным зомби кожаную броню, одеваете её и получаете большой прирост очков защиты! Подбираете немного золотых монет и получаете очки опыта. Теперь вы мечтаете найти хороший лук... Двигаясь дальше вы замечаете группу мертвяков, которые, конечно же, охраняют добычу, которая вам могла бы пригодиться... и Вы направляетесь к ним чтобы сразиться!
Эта книга научит, как создать игру со всем описанными только что возможностями. Вы научитесь создавать полноценную Ролевую игру (RPG) используя только Visual C#. Изучите пошагово, как сконструировать каждую часть игрового движка используя Windows Forms и GDI+, как создать блочную карту, игровой редактор и скрипты. Если вы считаете, что ролевые игры это – лучшие игры, погодите немного и вы начнете работать над одной из них с Вашим собственным дизайном!
Создавать RPG игры – намного интереснее чем просто играть в них, потому что вы полностью контролируете игровой мир, и вы можете дать волю своему воображению, чтобы создавать приключения для других. Однако, это не просто! Так же как и вашему игровому персонажу – которому необходимо набираться опыта и повышать свои умения, так и вам, читая каждую главу, придётся осваивать новые навыки!
Перед тем как вы сможете достичь такого уровня, когда будете способны спроектировать целое приключение и построить RPG на Visual C#, вы должны будете изучить основы механики RPG игр. Цель моей книги и заключается в том чтобы научить Вас тому, что вы должны знать, чтобы это произошло. Вы изучите, как конструировать RPG основанную на исследовании подземелий, называемую "Dungeon Crawler"[1]. Когда вы закончите эту книгу, вы будете обладать множеством новых навыков включая программирование игр и создание игровых редакторов. Кроме того, вы будете иметь полный творческий контроль над тем как игра работает, и будете способны создать множество игр из того же самого кода и инструментария.
Необходимые шаги и опыт
Эта книга предназначена, прежде всего, для серьёзных поклонников RPG игр, спорящих о выпадении шансов попадания и наносимого урона во время битвы, создающих RPG персонажей со случайными характеристиками, различными классами и т.д. Это не книга о чистом программировании, это книга о создании RPG, а C# программирование идёт вторым в списке приоритетов. Основная цель заключается в том, чтобы Вы могли интересно провести время изучая программирование игр. Набирание длинных листингов исходных кодов из книги – не очень весёлое занятие, поэтому я не прошу Вас заниматься этим в моей книге. Вместо этого вы будите изучать короткие примеры в каждой главе. Здесь нет обязательных для запоминания вещей, так как я твёрдо верю в то, что повторение и практика лучший путь научиться чему либо, вместо того чтобы просто запоминать теорию. Игра "Dungeon Crawler" будет строиться от одной главы к другой, обрастая новыми особенностями и игровыми элементами с каждой новой главой. Вы научитесь создавать игру – полностью, с пустого места, за очень короткий срок.
Финальная версия игры, в конце последней главы, содержит в себе весь исходный код необходимый вам чтобы сделать собственную игру со всем функциями описанными в начале, включая: бой с монстрами, разговоры с NPC, собирание сокровищ и золота, создание вещей при помощи редактора, сбор этих вещей, управление инвентарём игрока, экипировка одеждой с баффами (модификаторами параметров) для брони и оружия, создание NPC при помощи редактора персонажей, создание нового персонажа, сохранение и загрузка игры, создание подземелья при помощи редактора... Х-м-м! Похоже предстоит проделать большую работу... Но мы сделаем это на страницах этой книги, и у вас будет играбельная, полностью настраиваемая RPG система к тому моменту, когда Вы достигнете последней главы
Цель этой книги состоит в том чтобы научить Вас – как создавать RPG. Конечно, будет преимуществом если вы хорошо знаете язык программирования C#. Если вы новичок в C#, вы можете испытывать некоторые трудности с исходными кодами в этой книге. Но все проекты доступны для загрузки, и вы можете изучать работающие примеры если того пожелаете. Программирование RPG – это серьёзный вызов, и если вы будете внимательны, и изучите примеры, вы будете в состоянии принять его. "Dungeon Crawler" игра сама по себе большая и комплексная, и очень трудна для программирования с нуля, но это как раз то, что мы и собираемся сделать! Я попытаюсь объяснить это пошагово, но есть определенные программные вещи которые просто необходимо знать заранее. Если вы начнете испытывать трудности, то в таких случаях не стесняйтесь обращаться к хорошему учебнику по C#.
Все игровые редакторы так же описаны в этой книге. Мы публикуем исходные коды для редакторов, но не приводим их полностью на страницах книги, потому что это заняло дополнительно бы более 500 листов.
Visual C# 2008 и .NET Framework
Код в книге поддерживает Visual C# 2008 и требует .NET Framework 2.0. Хотя файлы проектов немного отличаются, код без проблем компилируется на Visual C# 2010. Если у вас VS 2010, вы можете запустить все примеры в книге, но потребуется конвертация проекта в 2010 формат (это автоматический процесс выполняемый Visual Studio 2010 когда вы открываете проекты Visual Studio 2008). Я оставил проекты в 2008 формате чтобы как можно больше читателей могли открыть проекты любой версией. Формат Visual Studio 2010 невозможно открыть используя VS 2008.
Я рекомендую вам установить бесплатную версию Visual C# Express Edition. Найти её можно по адресу - http://www.microsoft.com/express/downloads. Но, так как ссылки на сайт часто меняются, я рекомендую воспользоваться поиском Google по запросу “Visual C# Express download”. Там будут ссылки на версию 2008 года, но и 2010 тоже поддерживается, поэтому использовать можно ту версию, которая вам больше нравится. Просто обратите внимание на то, что проекты VS 2008 года должны быть преобразованы в новый формат, при открытии в Visual C# Express Edition 2010. Это – не проблема, это просто один дополнительный шаг, который позволяет нам поддерживать обе версии.
Есть одно замечание: библиотека Lua Interface требует .NET Framework 2.0, поэтому, когда дойдёт до примеров скриптов в Главе 15, вам может потребоваться создать новый Visual C# 2010 проект и импортировать в него исходные файлы, чтобы библиотека Lua Interface могла корректно работать. Как вариант, продвинутый читатель может перекомпилировать библиотеку Lua Interface при помощи Visual C# 2010 и затем использовать её с более поздними версиями .NET Framework. Если вы испытываете проблемы с этим выпуском, пожалуйста, посетите форум по адресу http://www.jharbour.com/forum где вы можете задать любой вопрос. Книга не должна быть – слишком сложной, и мы можем поблагодарить Microsoft за это.
Visual C# 2012 (дополнение от переводчика)
Для работы с примерами из книги, можно использовать и недавно вышедшую редакцию Visual Studio 2012. Если Вы собираетесь использовать бесплатную Express версию, то вам понадобится – Visual Studio 2012 Express Edition для Windows Desktop, которую можно скачать по адресу – www.microsoft.com/visualstudio/rus/downloads. Порядок работы с ней – такой же как и с VS 2010. То-есть, при первом запуске проекта необходимо будет произвести его конвертацию в новый, 2012й формат, из формата Visual C# 2008.
Managed DirectX?
Эта книга не использует .NET версию DirectX (назваемую Managed DirectX). Вместо этого эта книга полностью сосредоточена на программировании Windows Forms и Windows GDI+ (Graphics Device Interface). Managed DirectX, больше не поддерживается Microsoft и не работает с современными 64-битными версиями Windows. Но не стоит волноваться, так как программы из этой книги запускаются с частотой больше 100 FPS даже на старых компьютерах, используя только GDI+.
Как связаться с автором
Мой вебсайт расположен на http://www.jharbour.com. Там есть информация об этой книге, которая может быть вам полезна. Сайт так же содержит онлайн форум на котором можно разместить вопрос или продолжить обсуждение с другими программистами на темы о Visual C# и "Dungeon Crawler". Если у вас возникают проблемы связанные с этой книгой – посетите сайт, чтобы найти возможные ответы.
Содержание книги
Книга разделена на три основные части:
"I часть – Подготовка подземелья" включает в себя пять глав которые формируют основу ролевой игры разрабатываемой в книге. Эти главы касаются таких предметов как, Windows Forms, растровые изображения, спрайтовая анимация, пользовательский ввод, проверка столкновений и звуковые эффекты.
"II часть – Строительство подземелья" включает шесть глав, которые прорабатывают все компоненты игрового движка необходимые для управления и отрисовки игровых уровней. Ядром системы рендеринга является блочная карта (tiled scroller) и редактор уровней.
"III часть – Исследование подземелья" состоит из шести глав, разрабатывающих все компоненты геймплея, которые делают игру "Dungeon Crawler" по-настоящему играбельной. Эта часть содержит дополнительный игровой редактор и классы, которые позволяют сражаться с монстрами, собирать сокровища, управлять инвентарём игрока и экипировкой, собирать опыт и наращивать уровни, разговаривать с NPC.
Соглашения, принятые в этой книге
Исходный код представлен шрифтом фиксированной длинны (моноширным) для большей удобочитаемости.
//This is what source code will look like in the text public void Hello() { Console.WriteLine("Hello World"); }
Следующие стили, которые используются в данной книге, подчёркивают важные части текста. Вы найдёте определения, подсказки и рекомендации то-тут, то-там, по всей книге.
Определение
Определения обеспечивают дополнительные сведения о ключевом слове или предмете.
Подсказка
Подсказки предлагают руководства или предложения о том, что нужно сделать или что не нужно делать в конкретной ситуации
Рекомендация
Рекомендации дают дополнительную информацию об описываемом предмете или теме.
Дополнительные загрузки
Вы можете загрузить дополнительные материалы с сайта http://www.courseptr.com/download. Обратите внимание, что при этом вы будете перенаправлены на сайт Cengage Learning.
[1] Буквальный перевод с английского – «ползание по подземелью»
© Jonathan S. Harbour "Visual C# Game Programming for Teens" 2012