Вторник, 19 Марта 2024, 10:18

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [354]
Статьи об общих понятиях связанных с созданием игр.
Программирование [82]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [144]
Статьи о программах для создания игр, уроки и описания.
Софт [39]
Различные программы, в том числе в помощь игроделам.
2D-графика [14]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [16]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [160]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [128]
Статьи, которые не вошли в определённые разделы.
Наш опрос
Вы создаете собственные сайты?
Всего ответов: 1917
Главная » Статьи » Создание игр

Как разработать RPG-игру за неделю с нуля и без бюджета. Часть II
НАЧАЛО
Час 27 – Монстры

Меня беспокоит работоспособность монстров. Я должен изменить систему обновления игры, чтобы сделать ее пошаговой. Игроку нужны различные способы взаимодействия с существами (подкуп, борьба, заклинания). То же самое должны уметь и монстры. Нужен искусственный интеллект, поиск пути . И изображения монстров! Рисовать ли мне монстров в той же самой перспективнее – снизу вверх?

Я не могу беспокоиться обо всем этом сразу – нужно начать с чего-то одного. Просто добавить монстра в комнату и отобразить его в правильной позиции на экране стало хорошим началом.

• Я создаю класс " monster", производный от существа.
• Я создаю список "ActiveAI", с помощью которого в игровом цикле обрабатываются активные монстры.
• Я работаю над изображениями для монстра, на что затрачивается большая часть этого часа (все равно получается неважно, и приходится использовать вместо монстра изображение смайлика).

Час 28 – Появились монстры. Где мой новый доспех?

• Я получил и отобразил монстров с базовыми возможностями.
• Я позволил монстрам блокировать движения игрока.
• Вид для отображения монстров(со стороны) полностью отличается от вида игрока(сверху вниз), но мне все равно. Кстати, игрок на экране выглядит страшнее монстров, так что я заново переделываю спрайты игрока.

Час 29 – Время перемен

• Я создаю меню с выбором варианта действий для монстров.
• Игрок может атаковать
• Основной цикл работает, монстров можно убить.
• За убийство монстров даются очки опыта.

Час 30 - С этим мечом, я тебя порублю в капусту

• Я создаю первый настоящий экипируемый предмет (меч с бонусом +1)
• После смерти монстров с них выпадают вещи.
• Игровой цикл разделяется на пошаговый и не пошаговый.
• Большие изменения в логике перемещения/действий игрока, связанные с введением пошаговой архитектуры.

Час 31 – Выход на финишную прямую

• Монстры обрели эмоции - я дал им три "отношения" к игроку, которые могут зависеть от поведения игрока.
• В игру добавлены деньги, в виде серебра.
• Я добавил возможность переговоров, теперь можно подкупить монстра, чтобы он оставил вас в покое, до тех пор, пока вы сами не решите на него напасть.
• Монстр сам атакует игрока, если тот оказывается с ним в непосредственной близости(если его предварительно не подкупили).
• Исправил ошибку, когда при некотором стечении обстоятельств монстр получал возможность атаковать до переговоров.

Час 32 - Почему мы не можем ужиться друг с другом?

• Завершил логику переговоров.
• Добавил монстрам возможность охоты (погони) на игрока.
• Монстры учатся решать, использовать заклинания или переходить к ближнему бою.

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

Час 33 – Странствия, рисование

• Когда монстры непосредственно не атакуют игрока, то они просто бродят вокруг.
• Работаю над спрайтами вещей и зелий
• Добавил зелья - они еще не работают, но уже отображаются

Часы 34 - 35 – Выпей меня!

• Зелья добавляются в инвентарь игрока
• При использовании зелья влияют на параметры игрока. Зелье исцеления восстанавливает очки жизни, зелья энергии восстанавливают ману.
• Добавил клад (который будет автоматически пересчитан сразу в серебро) как и вещи.
• Я начал работу по экипировке вещей.

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

После почти часа работы над этим, я понимаю, что мне часто приходится последовательно использовать два меню (меню подбора вещей, и меню замены текущего предмета), смотрится такая реализация уродливо. Гораздо лучше, если можно найдя предмет экипировать его в одном меню.

Я заканчиваю серьезную правку кое-чего из того, что уже сделано, выбрасываю немного кода, упрощая систему.

Час 36 - Hackenslash!

• Я создал логотип "Hackenslash" с мечом на фоне, и прицепил его в панели интерфейса
• Добавил логику для "меню монстра" - панели, отображающей информацию о монстрах при наведении на них курсора мыши.

Час 37 – Нам не нужен никакой Word-Wrap!

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

Некоторые из моих предварительных работ, выполненных еще в первые 20 часов, наконец-то находят применение – становятся основой для расчета бонусов к параметрам, полученным от экипировки. Все вещи помещаются в словарь ('dictionary' – чудесная Python-овская конструкция) бонусов и штрафов к чему-то(имя в реестре). Поэтому, когда мне нужно их применить, скажем, к атаке, я просто задействую список обмундирования и применить все настройки с ключем " attack ". Я сделаю также и с эффектами от заклинаний.

Далее, я работаю над меню для открытия сундуков, и решил максимально его упростить. Будем считать, что игрок всегда будет проверять его на ловушки, и , если закрыто, будет всегда пытаться автоматически его отпереть? Делать что-то еще утомительно, да и нет смысла.

Час 38 – Чуть-чуть магии

Я в отчаянии. Осталось три часа - я должен работать только над тем, что обязательно должно быть в игре.

• Я придумал пять заклинаний - три, которые применяются на игрока, и два - на монстров.
• Добавил дополнительные "уровни" для заклинания, чтобы хоть как-то их разнообразить. Уровни значительно увеличить мощность (и стоимость) заклинаний, и доступны только игрокам с повышенным параметром "магии".
• Я делаю меню игрока не статичным, так что я могу добавить в него пункты, доступные только при определенных обстоятельствах.
• Добавил возможность повышения уровня, при наборе определенного количества опыта. Повышение параметров игрока осуществляется через несколько дополнительных панелей, доступных из меню игрока.

Час 39 – Кризис, часть II

Чего мне не хватает:

• Поиска потайных дверей и вещей
• Квестовых предметов - и места, куда нужно доставить квест, чтобы выиграть игру
• Звуковых эффектов
• Музыки
• Торговцев, у которых можно покупать вещи
• Мест для отдыха
• Случайных вещей с различными бонусами и названиями
• Случайных монстры
• Графики для новых вещей, монстров, торговцев.
• Случайных ловушек и замков
• Кастования заклинаний существами
• Жезлов
• Большого подземелье с квестовым предметом (и, возможно, сильным боссом) в конце.
• Способности красться, чтобы избежать нападения монстров.

Наверно я хочу слишком многое за 100 минут до конца. Если постараюсь, то может два-три пункта и сделаю. Какой же минимальный набор элементов необходим, чтобы получить играбельную игру?

Вот что я решил:

• Игрок должен иметь возможность отдохнуть, чтобы восстановить здоровье и ману
• Пока игрок отдыхает монстры также восстанавливаются/возрождаются.
• Случайно сгенерированные вещи, и бонусы от них, должны подстраиваться под уровень игрока.
• Сила случайных монстров также должна подстраиваться под уровень игрока.

Начальная комната (первая вверх по лестнице) становится комнатой отдыха. В ней никогда не будет монстров. Добавил новый пункт в меню игрока, появляющийся, когда он находится в зоне отдыха – «другое». Затем я создаю подпрограмму повторной инициализации подземелье, пока игрок отдыхает. Но она пока только заглушка.

Делаю в GIMPе оставшуюся графику для вещей. У меня нет времени сделать их красивыми. Я просто нарисовал их в разрешении 32 х 32, и применил размытие, чтобы хоть как-то скрыть их уродство, а затем добавил подсветку, чтобы добавить четкости после размытия. Теперь они выглядят поплывшими и сильно поношенными.

Генератор случайных вещей умеет создавать для предмета одно или два случайных бонусных свойства, подгонять их к уровню игрока (ПРАВКА: Вы нигде не сможете посмотреть свой уровень. Забыл сделать!). Некоторые вещи имеют обязательное свойство - меч повышает атаку и/или наносимое повреждение, доспехи повышают броню, а щиты – параметр защиты. Я добавляю эти ограничения ... и вот я уже на сороковом часу.

Час 40 - Конец близок

У меня нет времени для создания уникальной графики для монстров - так что я отчаянно работаю только над изменением названий и характеристик одного монстра - гоблина. Я вставляю глупо звучащие прилагательные перед именами гоблинов, и реализую автоподъем их уровня до уровня игрока. Я доделал реинициализацию и возрождение существ в подземелье пока игрок отдыхает. Я закончил некоторые процедуры для отключения монстров, которые находятся далеко от игрока, и их активацию, когда игрок входит в комнату.

Добавил еще пару комнат в подземелье, и все – ВРЕМЯ ВЫШЛО!
.
Завершающие работы

Поговорив с другом, я убежден, что я не должен работать над исправлением всех ошибок, только тех, что приводят к краху игры. Цель данного проекта - показать, что можно сделать за 40 часов, поэтому я оставил его в таком состоянии. Есть много некритических ошибок:

• статистика в правой панели отображается абы как,
• по-моему, очки жизни гоблинов при автоуровне не повышаются,
• и я не уверен, что монстры правильно деактивируются;
• монстры игнорируют проверку столкновений;
• вещи появляются внутри стен;
• монстры не используют магическую атаку с большого расстояния.

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

Py2exe позволяет делать вещи до смешного легко, превращая пакет программ Python в исполняемую программу для Windows, и чтобы запустить игру вам не нужно устанавливать Python на своем компьютере. Это все не так просто, как может показаться. Во-первых, он выдал мне, что есть отсутствующие модули и ошибки времени выполнения в коде шрифтов. Я ищу в интернете описание ошибки и узнаю что «отсутствует модулей» не более чем отвлекающий маневр, отсутствует файл шрифтов, который нужно скопировать вручную.

После того как я это сделал, полученная программа падает при запуске. Этот баг уже гораздо труднее отследить. Оказывается, что для окна обязательно нужна иконка– не скомпилированной версии она почему-то не нужна. Как только я его добавляю, все заработало. Я провожу несколько тестов - все отлично. ВОТ ТАК! Я упаковываю программу в ZIP файл (я не собираюсь возиться с инсталлятором программы). Все, Я СДЕЛАЛ.

Мой недельный проект фактически вложился в две с половиной недели в реальном времени, при частичной занятости. Реализовать все, что было задумано, не получилось, но я очень горжусь тем, что мне удалось:
http://www.rampantgames.com/hackenslash.html

Постмортем (послесловие)

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

Урок 10: Делать что-то в этом роде – это огромная польза
Прежде чем начать я сильно сомневался, стоит ли вообще это делать. Но теперь, когда все завершено, я вижу, что не только научился чему-то, но и получил заряд энтузиазма для дальнейшей работы над моим основным проектом. Вы ни за что не подумаете, что после работы над сторонним проектом будете чувствовать себя как после отдыха, но это так. И в конце концов, я потерял не так уж много времени - всего сорок часов. Это был забавный опыт – и я буду рад повторить его еще раз в будущем.

Урок 9: Выбросить что-то не всегда полезно
Некоторые из последних изменений в Hackenslash действительно сломали игровой баланс. Неспособность монстров колдовать превратилась в отсутствие необходимости "сбережения ресурсов", стало легче забредать глубже в подземелья, что сильно упростило некоторые игровые задачи. Убирая данную функцию нужно было серьезно отнестись к изменению баланса, что несомненно улучшило бы игровой процесс. Другими словами, удаление возможностей все равно приводит к дополнительным расходам на разработку игры. Это заставило меня задуматься, сколько игр были выпущены в ужасном состоянии, поскольку у команды разработчиков не было времени, чтобы пересмотреть игровой дизайн после сокращения функционала с целью уложиться в строк.

Урок 8: Делать важные вещи в первую очередь

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

Я думаю, что может работать аналогично со всеми моими будущими проектами: Я собираюсь попробовать разбить время разработки, скажем, на 8-часовые сегменты, и поиграть с самим собой в игру: Если бы у меня было всего 8 часов чтобы сделать игру, что бы я мог сделать уникального за это время? Я не знаю, будет в начале проекта от этого такой же эффект, как и в конце, но попробовать стоит.

Урок 7: Рамки проекта расширяются, угрожая бюджету и планам
Каждому программисту свойственно недооценивать время, необходимое для реализации определенной функции. Добавьте к этому наращивание функциональности, и можно гарантировать, что ваш проект выбьется из графика. Я не из тех парней, которые считают, что изменение функционала всегда плохо. Я даже думаю, что некоторые геймплейные элементы, превращающие игры в настоящие хиты, часто возникали как раз в результате такого неожиданного добавления функционала. Но новые возможности редко бесплатны. Вам придется освобождать для них место в бюджете и графике, для чего, вероятно, придется отказываться от чего-то менее важного. Этот проект научил меня быть безжалостный в сокращении возможностей. На самом деле - если бы у меня был выбор, то я бы лучше добавил к разработке еще десять дополнительных часов, лишь бы сделать игру полной - но все равно после обрезания лишнего (например, дверей, волшебных палочек, и т.д.)

Урок 6: Делайте игру работоспособной как можно раньше
Чем раньше вы сможете увидеть свою игру на экране и дать поиграть в нее другим, тем быстрее вы можете пересмотреть и улучшить ее дизайн, выбросить лишнее, и придумать отличные идеи для улучшения игры. Кроме того вы быстрее найдете ошибки (особенно ошибки в дизайне), и будет проще их исправить. Это также поможет вам правильно расставить приоритеты.

Урок 5: Иногда намного быстрее переписать код сначала
Было такое, что пришлось полностью выбросить некоторый код и начать сначала. Не могу сказать, действительно ли я сэкономил время сделав это, но подозреваю, что пришлось бы мучится с его недостатками до конца проекта. Скорее всего замена кода новым, лучше спроектированным, спасла меня от некоторых неприятностей.

Урок 4: Python рулит!
Я был удивлен, как быстро получилось реализовать некоторые вещи на Python, в отличие от, скажем, C++ или даже Java. Такие вещи, как типизация переменных, словари, списки (с учетом смешивания и соответствия типов объектов) позволили легко создать списки контента, атрибутов, эффектов заклинаний, и так далее. Мне и раньше нравился этот язык, но сейчас перспективность использования Python, если соединить его с каким-нибудь 3D движком, стала для меня очевидной.

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

Потратил бы опытный художник меньше времени? Несомненно - хотя разница, вероятно, была бы не слишком существенной. Было бы их качество лучше? Многократно! Будьте осторожны, не ошибитесь с оценкой усилий, необходимых для создания графики, не зависимо от того, делаете ли вы ее сами, или кто-то делает за вас. На это может потребоваться больше времени, чем вы думаете.

Урок 2: Эффективно используйте время.
Ночь, когда я посвятил четыре часа работе над игрой, часто содержали только часа два (или меньше) времени реальной разработки. Часть времени была затрачена на документирование, но я также иногда терял сосредоточенность, делал перерыв, а потом не мог сразу вернуться к работе. Просчитав свою реальную производительность, я был очень удивлен тем, как же неэффективно я работаю.

Мне не платят за часы. Нужно лучше использовать свое время, и будет больше "свободное время", чтобы делать другие вещи. Так что дальше буду сосредотачивать усилия, на более эффективное использование времени.

Урок 1: Нет ничего невозможного!
Хотя Hackenslash в его нынешнем, 40-часовом воплощение, вряд ли может служить эталоном высококачественной продукции, я думаю, что он все же демонстрирует, как много можно сделать, - довольно сложную игру - без бюджета и с малыми затратами времени на одного разработчика. Дайте больше времени, незначительный бюджет, или помощью нескольких друзей, и кто знает, насколько лучше он сможет стать?

Суть заключается в следующем: Если вы хотите сделать свою игру, вам ничто не мешает. Главное время. И не нужен бюджет или волшебные инструменты. Не нужна команда специалистов. Не нужны годы учебы. Все что нужно – ваше желание.

И это самый главный урок из всех.

Об авторе
Jay Barnson пишет компьютерные и консольные игры профессионально и в качестве хобби на протяжении более двадцати лет. Начиная с древних Sinclair ZX80 и Commodore 64. Он участвовал в разработке Twisted Metal, Warhawk, Jet Moto, Animorphs, и Extreme Championship Wrestling. В последнее время он занимается разработкой индиигр для Rampant Games. Первая его игра , Void War, выиграла в номинации Independent Multiplayer Game 2004 года

Опубликовано 6 июля 2005 года. http://www.gamedev.net/reference/articles/article2259.asp
Перевод: nilrem (перевод вольный)

Источник: КЛИК»

Категория: Создание игр | Добавил: nilrem (20 Февраля 2011)
Просмотров: 20452 | Комментарии: 6 | Рейтинг: 5.0/9 |
Теги: Python, геймдизайн, Pygame, Py2exe, разработка, RPG, планирование
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Как разработать RPG-игру за неделю с нуля и без бюджета. Часть II», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 6
+1-
6 as3011   (14 Июля 2011 23:45) [Материал]
as3011Автор молодчина, как сказал Geck геймдев на скорость весьма интересное занятие smile

+3-
4 zodiak   (30 Марта 2011 22:09) [Материал]
zodiakНамного полезнее тех статей, в которых излагается голая теория. Я вообще люблю постмортемы читать. Они будто заряжают энтузиазмом: "Люди смогли, и у меня все получится")
Скачал демку. Не могу понять - там что, всего две комнаты? Или я просто не могу найти переход.

+1-
5 mousebaiker   (23 Июня 2011 15:00) [Материал]
За лестницей ещё две.

+2-
3 Crazy-Siny   (06 Марта 2011 13:28) [Материал]
На мой взгляд, очень полезная статья - даже без учета огромного опыта автора. Лично мне, я чувствую, придется не раз её перечитать. nilrem, большое спасибо за перевод, хоть и "вольный".

+3-
2 GECK   (22 Февраля 2011 06:21) [Материал]
GECKПоддерживаю) Геймдев на скорость это весьма интересное занятие)

+6-
1 Brick   (21 Февраля 2011 14:43) [Материал]
BrickОчень интересная статья happy

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • Doom Classic iOS
  • GINCS Studio
  • Garry's mod
  • JumpCraft
  • Ethanon Engine
  • MakeCode Arcade
  • DizzyAGE
  • AppGameKit
  • SkyXEngine
  • UPBGE
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2024 Рейтинг