NokiMo
DogmaMods
DogmaMods

patreon


Отчет 8

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

Какие задачи передо мной стояли: 

На данный момент мини-игра почти завершена, я написал управляющие функции и сформировал ее структуру, сейчас занимаюсь анимацией (структурно игра с текущим вариантом на горячих источниках не имеет ничего общего, так что и старая анимация, которая выполнена одним клипом, здесь вообще не подходит, мне нужна анимация которая будет состоять из различных частей и переходов между ними). Еще нужно написать шаблоны логики ИИ, для реализации моей идеи, пока что NPC выбирают случайный вариант. Потом будет тестирование и отладка. Я уже тестировал функции и отдельные части, но без анимации это можно было сделать только посредством выведения цифр в log, вроде бы все работало правильно, но наверняка сказать нельзя, пока игра не будет полностью собрана. То же самое касается и логики ИИ, там нужно много тестировать, то-есть, заняться этим лучше когда игра будет готова.

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

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

Это все, что я пока могу сказать по поводу прогресса.


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

Это касается ID. Как вы все прекрасно знаете, в Скайриме у объектов используются ID. 

Немного теории для тех, кто с этим мало знаком - ID это уникальный номер, который присваивается программой любому создаваемому объекту. Это может быть актер, диалоговая строка, квест, и даже треугольник на навигационной сетке, - у всего есть свой ID. Он состоит из 6-ти символов, к которым, во время игры, прибавляется еще два символа из порядкового номера загрузки плагина, чтобы моды не конфликтовали между собой и основной игрой(по этому вам и нужно использовать формат ввода кодов в консоли XX------, где хх это порядковый номер плагина из которого вы хотите провести какие-то манипуляции с определенным предметом). В ID используются 16-ричная система счислений, то-есть от 0 до F (0,1,2...9ABCDEF).
К примеру, - так как под порядковый номер загрузки плагина отведено только два символа, то максимальное количество плагинов, которые могут быть подключены равняется FF - если перевести в привычную нам десятичную систему то это 256 с нулем (0-вой это skyrim.esm), то-есть это максимальное количество плагинов которые могут быть подключены к игре(хотя я никогда этого не проверял лично, но интернет подтверждает, что это так и есть, доверимся ему). 
В редакторе же под ID отведено 6 символов, то-есть максимальное количество ID соответственно FFFFFF, что равняется  16 777 216 в десятеричной. Вроде бы более чем достаточно, но не совсем... Когда вы создаете новый плагин, то первый объект, который вы создадите(простой объект, вроде globalvalue, или keyword, которые состоят только из одного элемента под который выделяется только один ID), то он будет иметь ID - 000D62, следующий 000D63 и тд. (тот факт, что начинается сразу с 000D62 а не с 000001 очевидно связан с тем, что при создании плагина какое-то количество ID заранее выделяется под какие-то важные элементы, но сути это не меняет, все дальнейшие объекты будут иметь +1, за исключением сложных элементов которые занимают несколько ID)

К чему я это всё - на данный момент, последний объект, который я создал имеет ID = C39445, таким образом, я уже израсходовал 12 817 477 миллионов ID из 16 777 216 возможных. И даже при этом можно было бы сказать, что ~4 миллиона должно хватить с запасом, учитывая то, что осталось сделать только вторую часть, и финальную версию. Может быть, а может быть и нет. Расходуются они очень шустро, и это зависит от многих факторов, к примеру, когда я начинал только работу над первой частью Тихолесья(Silentwood) я был на точке 82**** - что около 8 500 000, то-есть за первую часть я потратил около 4млн ID. Почему так много? Я тоже себе такой вопрос задал первым делом, после того как заметил этот факт, - в основном конечно из-за локации, и наверное большую часть из-за навмешей, которые я много раз удалял и местами раз по 10 переделывал. А если ты добавил предмет, и удалил затем, то ID не восстановился, счетчик ID для новых объектов двигается только вперед. Я не имею ни малейшего понятия, что будет когда все ID закончатся, и не знаю, есть ли там какой-то механизм, который будет заново перебирать свободные. Может вы что-то знаете по этому поводу? Собственно ради этого я и решил написать этот текст. Может кто-то из вас знает или сможет найти информацию, потому что я лично не смог ничего толкового нарыть. 

Исходя из всего выше описанного, можно сделать вывод, что к нам приближается очень серьезная проблема. И как многие из вас уже наверное догадались, решением которой может быть создание отдельного ESP, к примеру "Dogma - Thief (Final).esp" в котором я бы продолжил работу, просто подключив Dogma - Thief.esp вроде как мы подключаем ESM, либо преобразовав оригинал ESP в ESM. Но, во-первых, я так никогда не делал, не знаю к каким проблемам это может привести, у меня и так куча проблем и ошибок постоянно и с одним плагином, а тут еще дополнительный фактор к этому подключается. Во-вторых, я не думаю, что хорошая идея делать подобное когда у меня незаконченная часть и кругом все разобрано, нужно хотя бы завершить вторую часть, но при этом и нельзя доводить до исчерпания всех ID(хотя в этом случае можно было бы заявить, что я прошел Creation Kit :)), но ведь кто знает, как игра себя потом поведет, и что если вдруг мне надо будет изменить что-то именно в оригинальном плагине, надо чтобы был запас, хотя бы остановиться не более чем на F00000. Я конечно уже не собираюсь делать такие масштабные стройки, как в первой части, но уверенности у меня нет, что уложусь в это значение. 

Есть еще одна проблема, которая меня беспокоит, она появилась примерно в середине работы над прошлым обновлением, а может и раньше, и я думаю она также связана с обсуждаемой темой. Когда я работаю над диалогами, в какой-то момент, окно диалогов становится неактивным, и я не могу добавить новые топики. Решается это перезагрузкой CK. Я переживаю, как бы в какой-то момент вообще не получилось так, что я не смогу добавить новые диалоги даже после перезагрузки, потому что эта проблема начинает проявлять себя все чаще и чаще. Если в момент когда она появилась, это могло случиться ну раз в день, или даже реже, при активной работе с диалогами, то сейчас это случается буквально после добавления 10-20 строк, и надо перезагружать CK, а если приплюсовать сюда тот факт, что после загрузки программы в 50% случаев при добавлении скрипта программа вылетает, то это лишние палки в колеса, которые никак не способствуют продуктивной работе, и постоянно сбивают темп. В общем, как видите, чем дальше - тем проблем все больше.

Вышеописанные факторы, наверное, самые основные причины, из-за которых я хочу как можно скорее закончить работу над Воришкой, и заняться новым проектом. Начать с нуля хотя бы для того, чтобы программа не вылетала из-за большого количества скриптов в папке, которые она проверяет каждый раз при запуске, и чтобы все быстрее работало, потому что чем больше объектов в моде тем дольше открываются все окна внутри программы, и чтобы плагин сохранялся не 20-30 секунд как сейчас, что вроде и не много, но на дистанции тратится уйма времени, особенно это ощущается когда надо найти ошибку и приходится часто пере-сохранять, и пере-запускать игру. А еще хочется, чтобы Notepad++ не открывался 30+ минут после перезагрузки компьютера(я не шучу он действительно открывается примерно пол часа, а то и больше, из-за количества скриптов, но мне удобно их держать сразу все открытыми, потому что часто надо искать функции и переменные по всем файлам, там можно искать и по папке, но ищет очень долго, и использовать это не представляется возможным, в том же VS Code поиск по рабочей папке происходит мгновенно, и там не надо все держать открытыми файлы, но мне не нравится там работать по различным причинам, и я уже привык к Notepad++ я его под себя долго настраивал, и синтаксис и мои функции с подсказками). 

Но, естественно, я не начну новый проект, пока я не добавлю в Воришку все, что хочу, и не доделаю его полностью, можете об этом не волноваться. Но когда я все же начну новый проект, я учту все свои ошибки из первого, у меня конечно нет планов на еще один такой громадный проект, но честно говоря, я и когда этот начинал даже подумать не мог, что буду им заниматься больше 6-ти лет. Так что лучше перестрахуюсь, и хотя бы те же локации буду делать в отдельном плагине, и тогда по поводу ID переживать не надо будет, и плагин будет сохраняться быстрее, если там не будет лишних данных о локациях и навмешах.


Вот теперь точно все. Пишите если вы знаете что-то полезное по теме о которой я писал.


И как всегда, огромное спасибо за вашу поддержку!

Comments

Не совсем понял, что это "burlesque quest" :) Но в текущей расширенной версии только некоторый дополненный контент в Тихолесье, все что было до этого входит в общую версию.

Dogma

Sorry if this is a dumb question, but is the burlesque quest still part of the exclusive version of the mod? Last time I played it it was but, I forget how many updates there's been since then.

H Bof

Привет! Спасибо, я не знал об этих функциях! Я естественно не буду прибегать к тому способу, который испортил бы файлы перевода. А вот остальные звучат очень здорово. Я уже протестировал вариант с изменением "File Header", и похоже это работает именно так, как ты написал, теперь новые предметы создаются с присвоением ID удаленных ранее объектов, и пропускают уже существующие ID. Я, к тому же, проверил, что случится если список ID дойдет до крайнего значения. Я установил в "File Header" значение близкое к максимальному, и добавив остаток предметами в CK, после того как счетчик достиг FFFFFF, как ты и предполагал, он перескочил в начало и начался с 000008. Таким образом, я думаю, что можно туда вообще не лезть, и считать эту проблему решенной. А проблема с диалогами возможно и не связана с этим, может там просто из-за их количества, или еще из-за чего-то. Главное, что теперь я не буду переживать по поводу ID. Спасибо)

Dogma

Hey Dogma. Brewmasterhal here, incognito. If you open the .esp file in TES5Edit, there is a way to re-number the formID values. If you right-click on "[04] Dogma - Thief.esp" in the list of mod files, you can select "Renumber FormIDs From..." and the program will handle everything. You end up with the highest formID being 0172f5, and it only took about 12 minutes for the operation to complete on the v1502 mod file. I would very much prefer if you do not do this right now, however. The existing patches and translation tools will not be able to handle the formIDs changing, and will be extremely difficult to recover. The xTranslate XML files that we have been using up to this point will effectively be lost. I have a couple of alternate options that you can use to solve the problem in more elegant ways. First, I can provide you with a list of all formIDs that have not already been used, and you can use that list along with another feature in TES5Edit. In the "File Header" record inside any mod file, there is a "Next Object ID" field that you can edit. Setting that to 00000d62 (which is currently not used) and then re-opening the mod in the CS should force the CS to start using the lower numbers again. Second, I can build a function into the translation tool I have been working on that will allow a similar re-numbering operation like what TES5Edit provides, but which handles the process in a better way. There are, again, several options for how I can program it to perform the re-numbering and I am happy to enlist your input on the best option - or implement multiple options. I am certain that we can come up with other solutions as well. It is, in fact, possible that the CS was designed to reset the next formID value in the header automatically when it reaches the end of the address space.

reinheitsgebot


Related Creators