Зеленое счастье и никаких наркотиков!

вторник, сентября 15, 2009

От идеи, к реализации



    Конкурс. Что значит конкурс для вас? Что значит конкурс для меня?
    Всегда хотел, хочу, и буду хотеть быть первым. Это свойственно мне, и всем людям, кроме моей девушки (которой свойственно (по умолчанию) считать что первым должен быть Я).
    Когда узнал о конкурсе, сперва подумал, что все это баловство, пусть новички посоревнуются. Затем, ко мне пришла мысль, оказавшаяся кирзовым сапогом 54-го размера: "А что ты сделал за последний год глобального?". Тут я начал оправдываться, мол сделал редактор анимации, редактор параметров, написал редактор диалогов. А мне сапог ответил: "и что? Кто-то пользуется твоим редактором анимации? Кто пользуется твоим редактором диалогов? Кто пользуется твоим редактором параметров?". По сравнению с играми тех же новичков, мои программы написаны для узкого круга людей, 2-3 человека. Их не покажешь друзьям, и не скажешь: "вот я написал редактор такой-то на GameMaker'e! Завидуйте!".Меня просто засмеют, у них другие интересы, и игры входят в них, а вот различные редакторы нет.
    Предложи голодному человеку на выбор, пирожок или печку, он выберет пирожок, хотя с помощью печки можно их много испечь, или в конце-концов продать кому-нибудь на кулек тех же пирожков. Когда я осознал это, то сразу приступил к делу. Первым делом определился с жанром, в соответсвии с тем, что у меня было на тот момент. Небольшая наработка jRPG-шки, недописаный движок диалогов с недописаным редактором, большая куча опыта работы с дата структурами, кучка тайлсетов и item'ов из jRPG-шек и, конечно-же, куча друзей, всегда готовых мне относительно безвозмездно помочь, и моя Любовь, мое Солнышко, моя Красатулечка... ээ... продолжим.
     Провел ревизию, и собрал всё необходимое в кучку (папку на рабочем столе), всего этого оказалось не так уж и много, но вполне достаточно для написания простейшей jRPG.
    Помимо собственно наличия ресурсов для написаний игры такого жанра, я руководствовался такой стратегией: давно принято считать, что жанр RPG довольно сложен для написания одним человеком, поэтому за него врядли возьметься кто-либо из соревнующихся, на их фоне буду этим выделяться.
    Первым моим действием, было допиливание необходимого инструментария до надлежащего вида, я нашел у себя на компьютере RPGMaker VX, осмотрел все тайлы, когда обнаружил их скудность, пошел искать RPGMakerXP в интернете, поставив его на скачку, поискал CharGen, нарисовал пару героев (splean, dreamrunner, wertyxboct) обработал их в фотошопе как задумал, заодно написал специальный action, чтобы из print screen'а окошка предпросмотра чаргена делать тайлы моего формата (правильная раскадровка и расположение анимации по горизонтали, и небольшой блур по контуру). В это время думал над сценарием, верней над завязкой и развязкой сюжета.
    После упорядачивания информации, задался целью дописать редактор диалогов (техническое задание, а также формат которого написал Stasundr, за что ему отдельное спасибо), чтобы им начать пользоваться.
    Первая версия редактора диалогов разрабатывалась на delphi и нерабочий исполняемый файл занимал 2 мегабайта(за то, в качестве инструмента навигации использовалось дерево). Вторую версию я решил писать на actionscript3.0 которого на тот момент времени еще не знал (я смелый и упертый).
    Три дня бился с неизведанными мною ошибками actionscriptа, когда редактор вполне себе нормально работал, и мог выводить диалоги в текстовом виде для копирования, у меня возникла проблема с распознанием полученого текста, для ввода его в редактор диалогов, за помощью я обратился к Silenу(которому огромное спасибо за его терпеливость и отзывчивость), правда он не успел мне помочь, ибо хоть я и новичек в AS, имею богатый опыт программирования в других языках программирования, и поиска вероятных ошибок (а там была проблема в использовании не того символа переноса строки, оказывается это не /n (#10) а /r (#13) что не совсем соответствует моей точке зрения о переносе строки (/n - new новая строка, а /r - rewind возврат каретки)).
    Редактор диалогов был готов (http://WertyXBOCT.Ucoz.ru/dialogeditor.swf), за пару часов написал пример его использования в GM (http://WertyXBOCT.Ucoz.ru/dialogeditor.gmk - будьте осторожны! На данный момент он после закрытия оставляет за собой много мусора - не удаленных дата структур), который на тот момент полностью удовлетворил моим требованиям, еще немножко пришлось поменять формат файла, немножко поработать напильником чтобы все засверкало. Stasundr был счастлив, когда узнал что я написал РД на AS3, ибо это означает платформонезависимость (диалоги можно делать прямо в браузере).
    Следующим вечером, после пар, я усадил Сашку за компьютер, и заставил написать сценарий игры, сам лег спать. Пару раз, она меня будила и задавала некоторые вопросы касательно сюжета, в том числе можно ли сделать Короля и Придвороного мага, а также еще одного героя геями, мотивируя это интересной петлей в сюжете... на что я нечленораздельно пробурчал ругательства а также твердо сказал нет, думая о том откуда будут браться имена персонажей. За такое могут не только лишить прав модератора на форуме ))). После ее ухода, я значительно переработал набросок, и увеличил размер с двух до шести страниц, добавив значительную часть персонажей исправив описания, а так же, четко расписал прохождение игры. Рассказывать вам, о чем собственно игра, не буду, потому что это испортит весь интерес.
    Скажу только, что время действия, к сожалению, альтернативное средневековье, место действия, царство Gmaker.su ).
    Следующим днем, занялся самой игрой, написал движок перемещения ГГ по уровню с учетом стен, и написал перемещение NPC за игроком... Из-за сложностей в обработке столкновений со стенами и их обходом, NPC не учитывают стены вообще, за то, довольно сносно сталкиваются между собой и игроком. В будущем, когда конкурс завершиться, я перепишу эту часть кода, ибо время дорого, его может не хватить на самое основное, а так как npc будут следовать в основном по протореному пути или за игроком, то это совсем не критично. Плюс карты не будут иметь таких элементов с которыми NPC придется "сталкиваться".
    Когда нарисовал первую карту в редакторе для RPGMakerVX, был разочарован его тайлсетами, и работой со стенами. Поэтому все локации рисуются в RPGMakerVX, затем в фотошопе добавляются другие элементы карты, взятые из моего сборника, тщательно подбирается цвет стен, добавляются более-менее реалистичные тени, поэтому в игре будет не так много локаций как хотелось бы, и размер их ограничен размером игрового экрана (800х600), за то картинка на высоте. Стоит отметить, на первую локацию, которую показывал публике, потрачено 6 часов чистого времени, после этого, еще 4 часа доработки контрасности/насыщености цвета стен и прочих элементов и добавление реалистичных теней(что потребовало моделирование сцены в 3ds Max).
    В локации уже можно было ходить, и разговаривать с персонажами, играть в текстовые игры (казино), а вот выполнять квесты было довольно затруднительно, не было инвентаря. Пришлось писать и его, на самом деле это простой ds_map... просто появился набор инструментов для работы с ним, например скрипты gItem и sItem написаный для понимания диалогов. После этого переписал движок диалогов в своей игре, так, чтобы удалялись все созданые ds, обработку списка отображения реплик перенес из draw в user_event назначив исполнение этого события на клик мыши. Проверил работу, написав шутливый квест, в котором нужно взять деньги у некоего "чувака", передать их королю в обмен на ложку, которую нужно отдать мельнику, получив шарик, с которым можно заставить придворного мага ходить за героем.
    Потом, посидев немножко за википедией, и прочитав о жанре jRPG, я понял, что у меня нехватает одного ключевого движка... Это движок мультиков. Писал его до 4х утра, хорошо у меня есть опыт в написании интерпретаторов и трансляторов))), в итоге мультик можно снимать так:
>WR>Привет всем. Нажмите ЛКМ для того чтобы я переместился в точку 130,50 и splean пошел за пределы экрана.
#WeslomPo
S 320,240
R WR
OK
M 130,50
#splean
S 100,240
W WeslomPo
M 660,240

Подведу итоги, т.е. опишу те фичи, о которых просил меня Ang3L:
1) Полностью работающая система квестов
2) Мощный диалоговый движок, первый и универасльный, аналогов которого для GML я не видел.
3) Движок jRPG мультиков, которым могут пользоваться даже дети, не имеет аналогов на GML
    Сейчас игра стоит, у меня есть неопределенная на данный момент проблема с сердцем, завтра пойду в терапевту, узнаю какая со мной ошибка. Возьму больничный, наплевать на работу (mcdnlds), жить хочется больше чем быть отличником и иметь красный диплом (я плачу за свою учебу). Хотя быть первым это конечно важно, но быть здоровым важней.
    Спасибо Stasundr, DragonSkin, ASD_W_GAMES, Druce, WfalconW, splean, Ang3L, Generalisimys, Wollf, FallWolF, EsidreX, Maverick, BanShee, Silen за вашу помощь и поддержку в создании игры. Надеюсь оправдаю ваши надежды, к конкурсу доделаю игрушку до играбельной версии. Отдельное спасибо Сашке, которое передам лично).
P.S. и Яне спасибо, за то, что блог читаешь.

3 комментария:

  1. То что ты сделал конструктор жРПГ это гуд, но надо его ещё собрать. Посмотри на Текстовые квесты, очень помогут при составлений сюжета.

    "будьте осторожны! На данный момент он после закрытия оставляет за собой много мусора - не удаленных дата структур"
    Ничего она не оставляет. Виндовс всё подчистит за закрывшейся программой. А вот то что она может забрать лишнего это да, да ещё потом будет тормозить ОСь, потому что заберёт память у важных процессов (она почему-то потом не возвращается, только после перезагрузки).

    И хде "фишка"? :D Мы знаем что будет жРПГ с инвентарём про форум, что она будет красивой и что будет сюжет (без геев :DDD ). То что ты назвал не фичи, а инструменты для разработки. Они, как ты и сказал, будут интересны тебе и разработчикам. И если будет возможность и желание, продумай общий интерфейс и выложи его вместе с программами. Людям делающим РПГ очень поможет и ускорит работу.

    Либо надо делать интересную боёвку, либо интересный сюжет с вариациями. На что ты будешь делать ставку?

    А с инвентарём ты правильно сделал, нечего его раскладывать как на прилавке в магазине, пускай будет либо на герое (спец. слотах), либо просто как список.

    ОтветитьУдалить
  2. Забыл добавить:

    Выздоравливай!

    ОтветитьУдалить
  3. Такие фишки как боевка и интересный сюжет с вариациями само собой разумеющееся дело. Правда тут уж судить не мне, а игрокам. Я лишь отчитался о том, что сделал. Подчеркнул то, чего добился за короткий срок.
    Про датаструктуры я написал, для тех, кто захочет воспользоваться моим примером.
    Насчет SDK для игры, выложу как закончится конкурс. Правда придется ждать пока напишу хелп. Саму игру, возможно, выложу в исходнике. Кто поймет как написано, сможет сам сделать, кто не поймет, тому оно не надо. Спасибо за комент.
    Насчет сердца, у мну искревление позвоночника на сердце стало влиять. Надо заниматься гимнастикой и еще каким нибудь спортом, подамся в плавание, люблю это дело.

    ОтветитьУдалить