Создание РПГ от Veid-a
Содержание:
Глава 1: Не Забудь! (Про Правило)
Глава 2: Ландшафт – Дело Тонкое (Про Ландшафт)
Глава 3: Отличие Классов – Как Собаки от Кошки (Про Классы)
Глава 4: Квест – Справишься с Заданием? (Про Задания)
Глава 5: Виртуальность – Как Реальность (Про Атмосферу)
Глава 6: Опыт Мастера – Реалистичность РПГ (Про Сценарий)
Глава 7: Меч или Посох? (Про Предметы)
Глава 8: Триггеры – Основа Карты (Про Триггеры)
Глава 9: Сделай Оригинально (Про Вещи, Которые Заинтересуют Игрока)
Глава 10: Рейдовый Поход (Про Исскуственный Интеллект)
Глава 1: Не Забудь!
Давайте начнем с правила, которое необходимо знать при создание РПГ. Это правило — управление какими-либо другими боевыми единицами кроме самого персонажа запрещается. Если вы игнорируете это правило и пишите в название карты слово “RPG” то вы делаете большую ошибку! Плюс к разделу напишу, что не плохо было бы дать карту по тестить другу, брату или сестре (если имеются) или однокласснику. Уверяю вас, когда я сам давал тестить, обнаруживалось множество багов (ну или я просто сам делаю хреново карты).
Warcraft 3 Своя RPG создаём (Немного ответов на вопросы)
Глава 2: Ландшафт – Дело Тонкое
Ландшафт – это большая проблема для некоторых картостроителей. Для тех, кто не знает, что такое ландшафт (ну может карту, создает кавказец, незнающий такого слова ) – это ну окружающий мир. Делайте ландшафт разнообразным, сложным. Для использования 16 текстур скачайте W.E. Unlimited.
Для гор или скал, где в основном земля скалистая, горная, используйте текстуру камня из Ашенваля. Делайте ручейки, которые соединяются и создают большие реки, а те впадают в озера. Создавайте леса, ставя деревья не в притык, а немного дальше друг от друга, делайте стены из деревьев, которые будут блокировать проход. В нужных местах, ставьте нужных врагов!
Например: На созданной вами дороге, по которой ездит торговый караван, можно создать обычных разбойников, которые как бы грабят иногда его, а можете сделать и вправду, чтобы грабили. В лесах, конечно врагами могут быть дикие животные: Волки и Медведи. Не повторяйте ошибки многих картоделов, не делайте всю карту с одной текстурой земли. Теперь вы, наверное, понимаете, почему я назвал ландшафт – делом тонким?
Глава 3: Отличие Классов – Как Собаки от Кошки
Классы – это одно из основных вещей в карте. Игрок конечно должен управлять одним персонажем, но у игрока должен быть выбор. Если вы плохо понимаете что-то в JASS, то хотябы делайте спелы, меняя стандартную иконку, анимацию и т.д. Делайте много классов, чем больше, тем лучше. Играйте в другие РПГ, чтобы понять характеристику каждого класса и какие должны быть у него способности.
Глава 4: Квест – Справишься с Заданием?
Задания бывают трех видов, но во многих РПГ их всего два. Задания бывают: Основными, Дополнительными и Бонусами. Основные задания – это задания, выполняя которые, вы будете узнавать, что же будет далее по сюжетной линии и будете ближе к надписи “Вы Победили!”.
Warcraft 3 создание RPG (Накидываем ландшафт)
Дополнительные задания – это задания, не влияющие на сюжет самой РПГ, их можно получить, например, услышав разговор жителей города. Бонусы – это (редкие) даже не задания, это – например, перед вами стоят 3 шт. красивых эльфийских ворот, в одной из них проход на бонус уровень (где можно за определенное время собирать золото или ещё что нибудь), а в других вратах вас ждет, например смерть или ранение. Эти задания тоже не влияют на сюжет РПГ.
Глава 5: Виртуальность – Как Реальность
Атмосфера РПГ – это не та атмосфера, которая находится на земле! Это то, через что, игрок воспринимает игру как реальную жизнь. Чтобы создать такую атмосферу реальности внутри вашей РПГ, нужно делать очень простые вещи: можно сделать так, что, убив волка в лесу, вы могли взять его шкуру или, зарезав свинью, которая находилась в загоне, вы могли бы получить мясо и т.д.
Ваше РПГ должно как можно больше напоминать реальность! Создавайте с помощью триггеров смену погоды, дня и ночи, времен года (хотя я сам незнаю как сделать смену времен года) и можно придумать ещё много всего в этом роде. Например, я играл в какую-то РПГ, не помню как называется, так играя в нее, я как бы становился персонажем игры, когда замахивались мечом на моего перса, мне самому становилось страшно и когда младший брат разозлился на то, что я не даю ему играть, он выключил комп через пилот, и я почувствовал такое ощущение, смесь реальной смерти и злости (на братишку). РПГ должно просто быть не реальностью, а сном, во сне вы чувствуете боль, страх? Вот я об этом.
Глава 6: Опыт Мастера – Реалистичность РПГ
Сценарий в РПГ – это одна из главных вещей, но сценарий штука простая (или просто у меня писательский талант, люблю создавать сценарии). Вы просто должны придумать откуда ваш персонаж, например: Паладин, он родился в Хиа-Граде, в 50 год эры Эльдара. Придумайте описание каждому герою (то есть классу).
Дальше придумайте описание предметам, например: вместо “Повышение силы атаки на 5 ед.” нет – это не то, должно быть вот так “Этот стальной меч, когда-то принадлежавший Гилдориилу, был скован в кузнице города Наил, который известен своим оружейным делом.” Вот это класс. Придумайте название всем предметам, героям, городам и т.д. Название карты должно быть как-то связано с РПГ.
Например, я сейчас работаю над проектом “Relict RPG”, так в этой карте тёмный лорд, вместе с титанами ада “Грондами” выкрал великую реликвию из Сильвербурга, а эта реликвия поддерживала баланс сил между 9 расами, а тёмный лорд сделал так, чтобы реликвия даровала ему силу всех этих рас, для их уничтожения, разумеется. А самое главное – это сценарий РПГ.
Придумайте, в каких землях находится герой, дайте название всем рекам, горам, долинам. Создайте сюжетную линию по собственному сценарию.
Например: выполнил герой первое задание в сюжетной линии, а потом в таверне все о нём говорят, как они обо всём узнали, ах — это мальчишка, игравший в долине топоров, который всегда там играет, рассказал трактирщику о подвиге героя, а что там делал мальчик? Он любит смотреть на закат Элдуары и Ронома, что же с ним поделаешь? А его родители, почему за ним не следят? Они погибли, когда воевали с ордами нечисти в горах пик, а ведь когда-то, они дружелюбной семьей жили у Изонкиалского озера в небольшой лачуге. Вот так вот (Не нужно аплодисментов).
Глава 7: Меч или Посох?
Предметы – это та вещь, которой то недостаточно, то бывает перебор. Пишу сразу – предметы должны делиться на классы: Броня, Шлем, Щит, Одежда, Оружие, Аксессуар, Квестовый, Имеющий Заряд (Например: Зелье). Никогда не оставляйте предметы стандартными! Делайте группы предметов, которые будут подходить только к некоторым классам героев.
Например: Палладину – Тяжелая Броня, Молоты, Магу – Мантии, Посохи и т.д. Сделайте с помощью триггеров, чтоб нельзя было брать больше одной брони, меча, щита, шлема… Я вот, например, никогда не мог делать так, чтобы нельзя было брать больше одной брони и т.д. (У меня с триггерами туговато) Но я придумал способ по проще.
Я делаю “Экипировки”, которые например, состоят из: (конечно максимум 4 предметов) Меч, Броня, Сапоги… (Ну там ваша фантазия) Пишу в описании, что, чего дает, а после с помощью триггеров, (чтобы нельзя было взять ещё одну такую же экипировку) я делаю, чтобы она занимала 4 ячейки в инвентаре. Остальные две остаются под зелья и квестовые. Сделайте предметы-фишки. Это типа вишенка вашей карты. Например: где нибудь, в самом непроходимом месте, спрятано зелье, исцеляющее всю жизнь или, чтобы стояла там 50.000 золотых.
Глава 8: Триггеры – Основа Карты
Как я уже писал, я немного хромаю с триггерами (не судите меня строго). Так вот, триггеры – это всё вашей карты. С помощью триггеров, жизнь в вашей карте начинает функционировать, но, это функционирование зависит от того, на сколько хорошо знает триггеры сам создатель. В основном “атмосфера” карты тоже зависит от триггеров.
Я напишу триггер, который (хоть немного) поможет вам в вашей РПГ. Сразу пишу, триггер не мой.
И так, триггер: Как сделать одноэтажный дом в стиле “Sacred”.
Одной из самых важных составляющих ролевой игры является возможность заходить в дом. Все вы скажете, что это умеете делать: юнит заходит на область и переносится в другое место на карте. Совсем недавно люди догадались использовать более интересный и эффектный способ. Этот способ позволяет заходить в дома по настоящему, как в играх типа Sacred.
При этом способ очень прост в исполнении и его сможет реализовать даже начинающий. Давайте научимся, это делать на самом простом примере. Создайте карту. Создайте юнит «Дом». Физический размер — 0. Дайте ему способность Неуязвимый (нейтральный).
Измените юниту модель на модель дома. Увеличьте его размер, до размеров реального дома в соотношении с простыми юнитами. Уберите у него тень, уберите атаку, и включите ему «является зданием», дайте дому способность «Москиты», чтобы дом нельзя было выделить. Поставьте дом на карту под прямым углом, например 90 градусов.
Нарисуйте под домом другую текстуру земли, будет хорошо смотреться текстура из города. Вообще лучше скачайте набор моделей для обустройства дома Indoor Model Pack, в него включены полы, стены и всякая мебель, подходящая к миру WarCraft. Если вы все же не скачали пак, то стен у вашего дома видно не будет, когда юнит зайдет туда. Итак, создаем у входа в дом область, назовите ее one.
Теперь создадим область, охватывающую весь дом, и границей совпадающей с границей предыдущей области, ее назовите two. Теперь создаем два триггера. Один из них назовем InHouse, другой OutHouse. Снимем у второго триггера галочку «изначально включен». Теперь начинаем работу с первым триггером InHouse.
Создайте событие, когда юнит зайдет на область one. Теперь условие, что зашедший юнит не равен дому. Теперь действия: Выключить этот триггер, Включить триггер two, Скрыть юнит дом (можно включить плавное скрытие, но это потребует еще одного триггера). Теперь приступаем к работе со вторым триггером.
Создайте событие, когда юнит покидает область two, напоминаю — область two должна полностью закрыть собой one, иначе будут глюки. Дальше выключите этот триггер, включите триггер InHouse, показать юнит дом. Можно заменить Hide на плавное исчезновение, а если вы не скачаете пак, то можете сделать, чтоб дом не стал полностью прозрачным, а только на 85%, так будут видны стены.
Теперь окружите дом наземными блокираторами путей. Все, в дом теперь можно зайти. В домах можно ставить торговцев, простых обывателей. Кстати о торговцах, не меняйте модель для здания на простого юнита, чтобы сделать торговца. Просто добавьте нужные способности нужному юниту, вот вам и торговец уходящий ночью спать домой.
Кстати, когда NPS’ы (Не игрока персонажи) покидают дом и в нем ни кого не остается, сделайте, чтобы дом становился запертым, и войти в него нельзя без ключа, который находится у хозяина дома, а получить ключ можно только, убив персонажа, а стражи порядка не дремлют и в любой момент готовы посадить игрока в тюрьму, если, конечно он от них не убежит.
Ну, неплохой триггер, верно? Также можете поискать множество статей, где написано про виды переменных, циклы и т.д. Всё это нужно новичку в создание карт.
Глава 9: Сделай Оригинально
Заинтересовать игрока очень сложно! Я, часто заходя в какую нибудь РПГ, сражу же выходил, не разбираясь, какая карта дальше. Первым делом игрока заинтересуют персонажи с нестандартной моделью! На заднем же фоне должна играть музыка! Конечно, главный герой начинает, где нибудь в деревне (к примеру). Там должна играть древняя, успокаивающая музыка.
Не будет ведь играть музыка, которая чаще слышится в битвах. Кстати, играя в РПГ я негде не слышал музыки, кроме своих карт и карт на тему какого нибудь Аниме, например: Наруто или Блич. Музыку можно взять из таких компьютерных игр как: Disciples 3 – Ренессанс, Elder Scroll: Oblivion – Shivering Isles, Puzzle Quest (название не много обещающее, но на самом деле это Логическая РПГ).
Во многих стратегия тоже можно взять музыку, я брал, бывало из: Stronghold – Legends. Дальше игрока заинтересуют вещи, которые отображаются на герое. Кто не знает, как делать предметы, которые будут отображаться на герое, то сейчас объясню. У каждого предмета есть способность (да да, не просто ведь когти дают там 5 к атаке).
Все способности предметов находятся в закладке Способности, в редакторе объектов. Они находятся в папке особые. Например, чтобы сделать меч, для начала скачайте его модель. Далее в особых создаем нестандартную способность когтей. Там можно поставить количество единиц силы атаки.
Далее находим “Графика – Цель” (здесь ставим модель меча). После находим “Графика – Воздействие на цель 1” и пишем, куда хотим при рисовать меч. Head – Голова, Overhead – над головой, Chest – тело, hand, right – правая рука, hand, left – левая рука, foot – ноги (тоже левые и правые) и origin – под ногами (для ауры). Далее, созданную способность ставим предмету и всё. Теперь у вас есть меч.
Можно много всего придумать, но вы сами должны просто немного пофантазировать.
Глава 10: Рейдовый Поход
И.И. или A.I. – это исскуственный интеллект. Например: в A.I. версиях Dota, выходят противники с исскуственным интеллектом. Я сам немного ещё учусь создавать A.I. ведь это тяжелая штука. Для новичков, которые спешат выпустить свой первый проект (и как они думают, что он будет очень удачным), спешу вас огорчить, если дело коснется И.И.
Я не пробовал кочать проги, которые находятся в разделе “По созданию A.I.”, но походу они чем то помогают. Советую скачать. Итак, И.И. видимо создается через специальные проги или можете создавать их через триггеры. Также, в World Editor есть “Редактор ИИ”, но этот редактор вам поможет только в стандартных картах на развитие. Зачем нужен И.И.?
Чтобы была исскуственная поддержка. Вы не будете ими управлять, они будут сами делать, что захотят. Уровень их исскуственного Ай Кью зависит, от конечно создателя или от профессиональности программы по созданию A.I. Так после создания своего помощника с И.И., вы должны будете его кормить (это прикольно). Выходит как в Sacred RPG, создатель: Ramazan(off)** (чувак, читал твою статью тоже, респект!).
Так там вроде питомцы. Конечно у них поддержка в ближнем бою, магическая и т.д. Извиняюсь с ошибками в слове “искусственный” . Ну вот так вот.
Надеюсь, моя писанина не была создана зря. Надеюсь, вы узнали много нового. Если вы хотите увидеть вот этот прекрасный почерк старика Veid’а (Times New Roman), то кочайте мои мапы, как выйдут мои Relict RPG или где встретите имя Veid. Ну, Чао.
Статья была создана: Декабрь 2010 год. С наступающим вас.
Источник: wc3-maps.ru
Как сделать рпг в варкрафте
Как сделать рпг в варкрафте.
Карта RoTKR – Open RPG, описание карты для игры Warcraft 3: The Frozen Throne. Сделав нужный выбор, Вы оказываетесь у главных врат замка Camelot, где можно получить начальные задания для быстрого повышения уровня.
Большинство из этих заданий можно выполнять неограниченное количество раз, но лучше всего с ростом уровня переходить на новые локации и поселения, где Вы сможете получить более сложные задания с большей наградой. Видео уроки по WorldEdit Warcraft 3 — Создание RPG карты [Часть 1]. Warcraft 3 Video Game RPG (With the Chief) Part 1. Warcraft III: TFT — (Campaign) 01 — The Chosen One — Dlouhé velkolepé RPG. RPG Map on Warcraft 3/ РПГ карта на варик). Warcraft 3 RPG (Сделали дом с улучшением юнитов+ немного подекорировали).
Играодень ранеток играть онлайн бесплатно
Ищу тру рпг и собирю пати. Ворд оф Варкрафт-самая лучшая онлайн рпг 12 миллионов пользователей только на официальном сервере и раза в 2 больше на фришардах. Обновлённая версия отличной RPG-карты, обновления от 18 января 2014 года. Ссылки на предыдущие части есть в подробном описании! Перед вами классная рпг сделана с самых лучших моделей для варкрафта.
Каждый из вас играл в игры жанра RPG(Role-Playing Game)- игра по ролям. В этих играх главное событийный сюжет, особенно если отстает графика, то на этом можно выиграть, пример тому популярная игра Diablo. Для начала можно создать триггеры «вступления» именно предистория или же диалог какой-нибудь, обычно с этого все и начинается, далее, как во множестве РПГ игр, сделать квесты.
Бесплатные игры ля девочек онлайн
Источник: www.liveinternet.ru
Разработка ММО РПГ – практическое руководство. Эпизод 1
В цикле статей «Разработка ММО РПГ – практическое руководство» вы получите ответы на эти и многие другие вопросы. Все цифры реальны. Все схемы, таблицы, исходный код, диаграммы БД и прочее взяты из реально существующего и успешно работающего проекта.
В тексте будет много отсылок к геймплею и внешнему виду нашей игры «Звездные Призраки». Я постараюсь излагать материал так, чтобы вам не было нужды вникать (и играть) в наш продукт, но для лучшего понимания материала желательно потратить пару минут и посмотреть, как это все выглядит.
Готовы? Тогда в путь!
Трудозатраты
Начнем мы, пожалуй, с самого интересного – со стоимости разработки. На диаграмме (см. рис.1) отображены затраты в процентном отношении к общему бюджету проекта. При расчете не учитывалась стоимость офиса, амортизация оборудования и налоги.
Как видите, дороже всего обошлось создание клиента. И это не удивительно, учитывая, что игра — в реальном времени и с использованием 3D. На втором месте -сервер, и это тоже ожидаемо. Что неожиданно – это высокие затраты на управление и низкие – на 2D и 3D графику. «Может просто графика невзрачная?» – скажете вы. Как раз нет: графика игрокам нравиться.
Секрет в активном использовании аутсорса для создания графики. Нам удалось существенно снизить стоимость производства графики, но при этом, естественно, возросли расходы на управление. Благодаря этому суммарный бюджет проект удалось уменьшить почти на 10%. А вот высокие расходы на геймдизайн – это наша ошибка.
Изначально мы не верно оценили силы и стоимость разработки, поэтому мы замахнулись на то, что сделать были неспособны. В результате нам пришлось 3 раза переделывать сюжет, несколько раз менять боевую систему, перерабатывать схемы интерфейса и так далее. При более трезвой изначальной оценке, я думаю, удалось бы снизить затраты на геймдизайн раза в два (или 5% от общего бюджета проекта).
На аутсорс мы отдавали концепт-арт и создание 3D-моделей, причем первые единицы техники в линейке (например, турель 1-го и 20-го уровня) обязательно создавались в офисе. А вот остальное (турели 40-го, 60-го и 80-го) – и концепты, и 3D-моделинг отдавали на аутсорс. Почему так? В офисе, прежде всего, происходит поиск концепта и его отображения в 3D.
И, как любая исследовательская работа, она требовала высококвалифицированных (и, следовательно, дорогих) специалистов. А когда форма найдена производство можно смело отдавать на аутсорс.
Так же на аутсорс были полностью отданы создание видеороликов, озвучка, музыкальное оформление, создание звуков и верстка сайта. Контента такого типа для нашей игры было нужно не так уж и много, поэтому не было ни какого смысла брать людей в штат. А наши попытки отдать на аутсорс часть программного кода (в виде конечных задач) успехом не увенчались, поэтому вся программная часть была полностью написана нашими силами.
Еще одна величина в диаграмме может показаться странной – всего 1% расходов на тестирование. Основной вклад в тестирование сделали сами игроки на этапах от альфы до открытого бета теста, и платили мы им в апсидиуме (премиумная игровая валюта). Поэтому удалось существенно снизить затраты в реальных деньгах.
Состав команды
В офисе на постоянной основе над проектом работали пять человек. Примерно за 2 месяца до альфы мы взяли в офис на полставки еще двух тестеров, но проработали они у нас не долго – примерно по три месяца каждый (или 1.5 человеко-месяца каждый). Уже начиная с закрытой беты мы смогли полностью переложить тестирование на удаленных тестеров: часть – за реальные деньги, часть – за игровые.
В таблице (см. табл.1) приведен состав команды, их роли и суммарные трудозатраты. Каждая строка таблицы – это один человек, который мог совмещать одновременно несколько функций. Трудозатраты указаны от начала работ (подготовка первых документов и создание демо) до релиза продукта.
- Максимально реалистично оценивайте ваши силы и бюджет проекта. В противном случае вы потратите лишние деньги и в итоге создадите менее удачный продукт, чем могли бы.
- Максимально используйте аутсорс для производства контента. Для работников в офисе оставляйте только интересную исследовательскую работу, а так же критичную по времени или качеству.
- Стремитесь минимизировать размер команды, но берите только талантливых и высококвалифицированных специалистов.
Схема системы и план разработки
Формально «Звездные Призраки» — браузерная игра. Но веб-часть работает под управлением Adobe Flash и использует сокетное соединение. Поэтому, фактически, это клиент-серверная игра, только загрузка клиента происходит прозрачно для пользователя. Из каких же компонентов состоит игра? Казалось бы, все должно быть просто – из клиента и сервера.
Но на самом деле (см. рис. 2) все несколько сложнее.
Мы придерживались следующего порядка разработки:
- Основной клиент
- «Пробирка» для 3Dшников.
- Основной сервер
- БД
- Админка (частично: создание предметов, локаций, ботов)
- Авто-скрипты
- Чат-сервер
- Админка (все остальное)
- Драйверы для платежной системы
- Драйверы для поставщиков трафика
- Веб-сайт
- Рег. сервер и рег. клиент
- Драйверы социальных сетей (авторизация).
Этот порядок позволил нам на ранних стадиях разработки получить действующую систему и тестировать на ней те или иные концепции.
Ниже я приведу краткое описание каждого из компонентов, для общего понимания системы, после чего мы подробно остановимся на каждом из них.
Этап 1. В первую очередь был разработан прототип игры без всякого сервера, но в который вошли практически все предполагаемые к использованию в клиенте технологии, а именно: Adobe Flash, Adobe Away3D, Adobe Starling. У нас был космос, в котором пользователь управлял одиноким кораблем. На этом прототипе мы обкатали базовую систему расчета кривой перемещения корабля, перемещение космоса (параллакс), проверили возможности отрисовки моделей на текстуру. В общем, мы протестировали все узкие места, которые видели в начале разработки и примерно поняли, как у нас все будет выглядеть. Это позволило сделать вывод о возможности технической реализации задуманного, а так же дало демо, с которым можно было идти к инвесторам.
Этап 2. После утверждения тех.задания мы выработали тех.требования к 3D-моделям: на этом этапе у нас уже было представление о внешнем виде игры, платформе и движке. Кроме того, мы создали «пробирку» для 3Dшников – отдельный инструмент, в который можно было загрузить 3D-модель и посмотреть, как она будет выглядеть после рендера в Away3D.
Дело в том, что после экспорта непосредственно в движок, модель выглядит немного не так, как в инструменте моделирования. Поэтому нашему артотделу, а особенно арт-директору, было крайне важно видеть, как все будет выглядеть на самом деле, чтобы «подтянуть текстуры», как он говорил. Тут сразу оговорюсь: в ходе работ мы перешли на новую версию Away3D, в которой шейдеры были другими, и это привело к изменению визуального отображения моделей. «Подтягивать текстуры» пришлось заново. Отсюда есть два очень важных вывода: во-первых, требуйте от текстурщиков порядка в файлах текстур, раскладки всего по слоям с человеческими названиями, чтобы через полгода другой человек мог открыть файл и найти нужный слой, а, во-вторых, все «подтягивания» графики делайте не сразу по ее готовности, а ближе к концу проекта.
Этап 3. Затем мы приступили к созданию сервера и сетевой части в клиенте. В качестве языка программирования был выбран С++, т.к. у нас уже имелись наработки и свои библиотеки на этом языке. На данном этапе сервер работал без БД, данные он подгружал из XML-файла.
Задача этого этапа – протестировать выбранные серверные технологии, а так же дать возможность гейм-дизайнеру и всей команде поиграться «онлайн». Самое главное, что здесь нужно тестировать – с каким максимальным пингом в игру еще можно играть. То есть нужно выяснить, можно ли вообще играть по сети, или все так дергается, что играть невозможно. У нас на этом этапе корабли даже стрелять не могли, мы просто летали друг за другом и тестировали разные алгоритмы синхронизации.
Этап 4. Дальше некоторое время шла итеративная разработка клиента и сервера. Первое, что появилось – это XML конфиги оборудования, чтобы гейм-дизайнер мог тестировать параметры пушек и кораблей. Так же на этом этапе было много экспериментов, создания различных видов вооружений и поиск механизма боя.
Этап 5. Когда механика игры более-менее устоялась, можно было подключать БД к серверу. В качестве СУБД был выбран MySQL. Подключение подразумевало, прежде всего, перенос загрузки данных оборудования из XML файлов в БД, а также загрузку и сохранение состояния пользователей.
Естественно, необходимо было создать админку, которая позволила бы гейм-дизайнеру создавать/редактировать предметы и локации. Админка была написана на PHP. Когда отпала необходимость редактировать XML файлы, гейм-дизайнер был очень рад, и процесс наполнения игры предметами и локациями стал продвигаться существенно быстрее.
Этап 6. По мере усложнения проекта мы столкнулись с тем, что создание руками каждого нового пакета отнимало много времени, и было сопряжено с ошибками. Поэтому, опять же, на РНР был написан скрипт, который принимает XML файл и по нему генерирует файлы исходного кода для клиента и сервера (и, в последствии, и для чат-сервера). Аналогичная проблема возникла и у гейм-дизайнера: по мере роста номенклатуры предметов управлять и модифицировать их стало крайне затруднительно. Поэтому и для него был написан ряд скриптов, которые облегчали генерацию сразу всей линейки предметов.
Этап 7. Изначально мы собирались использовать IRC чат-сервер. Казалось, что там все просто и вопрос чата был отложен. Но когда пришла очередь создавать чат, выяснилось, что интегрировать IRC-сервер с нашей системой не так уж и просто. Ведь нам нужна не просто авторизация, а еще и система модерирования, а также отображение специфических данных в чате — уровень, клан и т.п.
Мы оценили, что проще написать свой чат-сервер, чем модифицировать IRC-сервер. По факту, на клиенте мы потратили меньше времени на интеграцию с нашим сервером, чем с IRC, так что это решение было верным.
Этап 8. Мы приближались к закрытому бета-тесту (ЗБТ). Стало очевидным, что потребуется сбор статистики. Доработки затронули сервер и БД, плюс отображение в админке. Работы было много, но, в основном рутина, за исключением проектирования БД.
Этап 9. После ЗБТ мы пофиксили баги и выполнили некоторые модификации, после чего стали готовиться к открытому бета-тесту (ОБТ). Конечно же, необходимо было реализовать возможность приема платежей. Такие доработки затронули клиент, сервер, БД, а так же пришлось создать специальный скрипт. Здесь, опять же, никакой особой магии – все на РНР.
Этап 10. Пришло время разобраться с поставщиками трафика. С ними мы работаем по двум схемам: фиксированная стоимость в месяц независимо от количества переходов/регистраций или оплата за регистрацию (СРА). Для работы по модели СРА необходимо было провести интеграцию с API этих поставщиков трафика. Доработки затронули клиент, сервер, БД, веб-сайт и админку (фильтры в статистике).
Этап 11. Непосредственно перед ОБТ мы создали сайт игры (во время ЗБТ игроки переходили на страницу с Flash, а регистрация и логин были реализованы во флеше). Больше всего времени заняла интеграция игры с базой форума, чтобы обеспечить сквозной логин форум/игра.
Этап 12. После ОБТ и нагрузочного тестирования мы поняли, что лить трафик на основной игровой сервер – плохая идея. Дело в том, что кол-во трафика очень сильно зависит от времени суток. И в пиковое время могло приходить до ста запросов в секунду. Игроки у нас кидались прямо в игру, для каждого нового игрока создавался отдельный инстанс.
Это очень сильно нагружало игровой сервер и вызывало на нем лаги. Поэтому был создан специальный регистрационный сервер (фактически – еще один инстанс основного сервера, но запускаемый со специальным ключом, поэтому он загружает только регистрационные локации) и отдельный клиент, в котором игрок играет только до регистрации (после этого его редиректит на основной сервер). Кроме того, мы уменьшили объем загружаемых данных в регистрационном клиенте, так как точно знали, что необходимо для игрока. Это позволило уменьшить время загрузки клиента и решило проблему с лагами на основном сервере, а так же сделало систему масштабируемой – при необходимости мы может развернуть хоть сто отдельных регистрационных серверов.
Этап 13. Непосредственно перед релизом была добавлена интеграция с социальными сетями, а именно возможность авторизации через социальные сети. Это увеличило конверсии переходов в регистрации примерно на 10%.
Заключение
В следующей статье цикла «Разработка ММО РПГ – практическое руководство» мы подробно ознакомимся с серверной часть, её компонентами, затронем работу с БД и многое другое.
Источник: habr.com