Что это?Это рефакторинг-проект, который нацелен на переработку ресурсов игры, в частности и кода. Добавляет множество систем, функций и исправлений. Мы искренне надеемся, что каждый для себя найдет что-то полезное, для этого все и затевалось.
Текущая версия проекта представляет собой практически законченную, по нашему мнению, техническую базу, которую мы разрабатываем для себя, и которой мы не против поделится со всеми :). Будем категорически рады увидеть единомышленников.
Какова цель проекта?Изначальная идея состояла в том, чтобы вычистить мусор, оптимизировать код и написать все популярные модули и системы по новым правилам с использованием новых возможностей (читай исходников). Сейчас же произошла небольшая коррекция, теперь мы хотим продемонстрировать всем людям, которые еще не перешли на исходники или скептически к ним относятся, тот факт, что не стоит боятся чего-то нового, игра никак не меняется, зато существенно расширяются возможности, можно сказать до бесконечности. Мы пытаемся создать удобный и, что главнее, стабильный инструмент, где не нужно дополнительно возится что-то настраивая или адаптируя. Обобщая, на сегодняшний день готова такая лаконичная платформа для любых разработок, в которую уже интегрирован весь необходимый инструментарий. Исходя из этого, скептически настроенные люди могут просто взять и попробовать что-то создать на этой основе без лишнего ущерба для своего времени. В итоге, если хотя бы у нескольких людей с помощью этого проекта чаша весов склонится в сторону использования исходников, то проект был создан не зря.
Каковы промежуточные результаты?На данный момент нам удалось сократить количество скриптов более чем в три раза по сравнению с оригиналом (140(+6) против 441). Переработано большое количество кода, вычищен мусор, оптимизированы многие участки, исправлена масса ошибок, но несмотря на это работы еще очень много. Новых игровых особенностей мы пока не вносили, так как чтобы их создавать нужно отточить рабочую платформу, созданием которой мы сейчас и заняты, а она включает не только системы вроде таймеров, хранилищ, дебагового функционала, но еще и оригинальный код, который относится к сюжету или игровым особенностям. Он также линкуется и перерабатывается с новым стилем скриптового кода. Также мы стараемся постоянно повышать качество скриптового кода, следовать канонам Lua, а также затруднительные участки оптимизировать с помощью движка, чего мы добились - показывают замеры.
Также не малую часть работы занимает и переработка конфигов, так как там тоже скопилось достаточное количество мусора, а работать с конфигами очень тяжело. Переработка кода и файлов идет постепенно, в отличии от скриптов, процесс достаточно емкий по времени и требует большого опыта.
Почему в файлах две системы событий?Я объясню почему. Все системы, которые присутствуют в проекте написаны своими руками и сторонние системы не использовались, почему? Потому что мы хотим на 100% владеть пониманием тех систем, с которыми работаем, а это возможно только при личной разработке (или более длительному пониманию кода сторонних авторов). Вернемся к событиям. Они введены только для поддержки работы таймеров, разработка под основную систему событий не была завершена и обкатана в свое время, поэтому было принято решение взять ту систему, которая понятна и стабильна, и, самое главное, о которой можно напрямую спросить автора. Наконец, если разработка под основную систему событий будет доделана, то текущее положение вещей будет переделано. В любом случае волноваться не стоит, здесь абсолютно ничего страшного нет.
Высока-ли модульность в скриптах?На наш взгляд мы продвинулись до достаточного уровня, чтобы отдельные системы, даже те, которые работают с объектами, можно было безболезненно включать и отключать путем добавления или удаления файлов. С помощью новой системы сохранения появилась абсолютная совместимость сейвов, и все модули (скрипты), в которых предусмотрена опциональность можно удалять в любой момент (а по умолчанию это абсолютно все скрипты), так как их данные хранятся не в net_packet. Более того, система сохранения сама вычистит данные этого модуля, если он был удален безвозвратно(!). Как это? Это значит, что вы этот модуль больше никогда не добавите к скриптам, а если вы хотите удалить какую-то систему лишь на время (но сохранить все ее данные), то и это тоже возможно. Таким образом, например, вам не нравится работа какой-либо опциональной системы (в которой что-либо сохраняется) на определенном этапе игры, у нас вы можете отключить эту систему на время, пройти без ее участия этот этап игры, а затем снова ее активировать, и все ее прежние данные никуда не потеряются. Весь предыдущий опыт комьюнити, вроде изолированного создания какой-то системы под дебагом у нас тоже присутствует.
Почему не присутствует обновленный LuaJIT?Любой, кто подключал обновленный LuaJIT сталкивался с проблемами измененного алгоритма работы некоторых lua-функий. Поскольку луа – табличный язык, а проблемы встречаются именно там, то очевидно, что оригинальный сталкерский код не рассчитан на измененную работу функций, и отсюда начинались различные баги. Выход есть, это проверка и корректировка всех скриптов, но сразу заметим, что задача это довольно трудоемкая и мы от ее выполнения отказались. Но(!), я готов дать движок с новым LuaJIT именно для тех, кто захочет этим заняться, и если ваша работа увенчается успехом, то по крайней мере мы своим составом объявим вам благодарность, так как обновленный функционал открывает совершенно новые горизонты (см. документацию LuaJIT).
Почему нет документации ко всем системам?Написание документации дело не быстрое, а без гарантий интереса к проекту не видим смысла расписывать принципы работы. В самих скриптах все достаточно подробно и понятно (на наш взгляд) отражено в комментариях. Если к системам проекта будет проявлен интерес, то руководства будут написаны.
Какие дополнения есть для диалогов?Начнем, пожалуй, с главного. Мы переделали кеширование диалогов при старте игры, а точнее вырезали его вообще, и теперь любой диалог, любой граф и вся его начинка строится при непосредственном обращении к нему (при юзе персонажа, например), что это дает? Во-первых, с этим исправлением появляется смысл у динамичных диалогов, то есть они становятся действительно динамичными (и если в ветвлениях есть рандом, то он будет отрабатывать постоянно, ранее это было невозможно), а во-вторых появляется возможность строить графы диалогов прямо по ходу игры (даже не перезагружая игру вы можете постоянно перестраивать граф диалога), единственное нужно будет заранее зарегистрировать диалог, регистрация была оставлена для контроля, то есть набор диалогов по-прежнему статичен. Также мы задумались как можно дать функции диалога больше информации, рассматривался парсер и какая-то дополнительная информация. Выбор сделан в пользу второго, так как первое выглядит довольно громоздко, а информацию несет практически туже самую. Итого мы добавили в функции прекондишнов текст фразы, из него можно без труда понять где мы находимся, что сказал персонаж и что нам нужно сделать исходя из этого. В скриптовое получение фразы текст, разумеется, не передается, так как он вам известен заранее.
Почему ГГ так быстро устает? (или подобный вопрос)Баланс никак не настраивался, сделаны такие грубые зарубки, из которых в дальнейшем возможно будет сделано что-то интересное. Если вы заметите какие-то сильные перегибы в балансе, то указывайте пожалуйста вкупе с вашим вариантом настройки этих параметров баланса. Корень зла зарыт в переработке различных расчетов прямо в движке, и чтобы эти обновленные формулы заставить качественно работать придется переработать довольно большую часть конфигов, поскольку в коллективе нет тех, кто мог бы этим заниматься, то это действо растянется надолго.
Как пользоваться рюкзаком?Смотрите соответствующие видео на канале (ключевое слово - backpack).
Под некоторыми видео существует подробное описание, которое ответит на большинство вопросов, остальные можно задать здесь. Стоит сразу предупредить, что данная система имеет ряд некритичных багов, о которых все-же стоит сообщать и вам, так как не исключено, что мы не увидели все недочеты.
YouTube-каналы разработчиков (не все материалы относятся к данному проекту):
https://www.youtube....Malandrinus2010 https://www.youtube....IuY3d_-LACuMerA Для более полного понимания давайте сразу продемонстрирую главный файл документации по движку: http://pastebin.com/FK0Wc3Nd