Здравствуйте, гость ( Вход | Регистрация )

> Компиляция или не надо, Надо ли компилить ядро каждый раз как сделал изменения в Script
Chicos
сообщение 24.11.2017, 5:53
Сообщение #1


**

Neophyte
Сообщений: 21
Регистрация: 20.6.2006
Группа: Пользователи
Наличность: 0
Пользователь №: 6.565



В руководстве по сборке компиляции сказано что надо добавить папку Server в проект и скомпилить ядро. От предшественика мне уже досталось готовое ядро. Почему то подумалось что просто изменив в папке Scripts нужный мне скрипт я получу нужное. Для пробы изменил в кастоме явно свой объект. Но изменения на сервере не отобразились. То есть после каждого изменения в Scripts необходимо пересобирать exe ? Или как то по другому? Начал только разбираться с UO, и что то в сотнях тем прочитанных этот момент не нашел.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
 
Ответить в эту темуОткрыть новую тему
Ответов
Aimed
сообщение 25.11.2017, 19:06
Сообщение #2


*********

Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012
Группа: Пользователи
Наличность: 8491
Пользователь №: 15.607



Кстати, насчет 20 сек это тоже не совсем правда.... у тебя статическая компиляция всегда все соберает и выходит что у тебя время билда дольше. Просто ты дольше смотришь на то как студия компилирует твой проект, чем на консоль сервера и то как он компилирует папку Scripts.
С динамической компиляцией ядро уже собранное в 99% случаев и скрипты динамически компилируются и то только тогда когда были внесены правки в Scripts папке.
По сути если просто перезапускать сервер с правками только в скриптах, то он не сильно медленее будет вставать чем при статической компиляции всего проекта и я даже не уверен медленнее ли он на самом деле.

Основная экономия во времени идёт как раз засчет проверок типов и сериализации/десерилазции, но оно очень шустро через PLINQ все проверяет. И в тоже время каждый раз все из папки Server пересоберается, хотя это нужно крайне редко.

Если говорить об экономии времени во время сборки для разработки, то гораздо выгоднее разбить огромную папку Scripts тоже на проекты и если были внесены правки только в одном из них, то у тебя с динамической компиляцией скриптов сервер вобще будет взлетать, да и со статической компиляцией будет тот-же результат.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
StaticZ
сообщение 29.11.2017, 0:57
Сообщение #3


*********

Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009
Группа: Пользователи
Наличность: 0
Из: РФ, Москва
Пользователь №: 11.948



Цитата(Aimed @ 25.11.2017, 19:06) *

Кстати, насчет 20 сек это тоже не совсем правда.... у тебя статическая компиляция всегда все соберает и выходит что у тебя время билда дольше. Просто ты дольше смотришь на то как студия компилирует твой проект, чем на консоль сервера и то как он компилирует папку Scripts.

Да нет все таки через студию быстрее, там идет частичная перекомпиляция без всяких плясок с бубнами (разницу между собрать и пересобрать можете сами почувствовать. Первого в 99% случаев достаточно и компиляция идет 1 секунду). Но дело даже не столько в 20 секундах, а в общем удобстве. Не надо скакать между окнами, я к примеру во время дебага даже вывод самого сервера делаю в студии а сама она без всяких окон стартует. Что еще более важно в случае ошибок компиляции в студии одним кликом попадаешь на проблемное место, а если у человека мало опыта то подобных ошибок будет много и время на чтение, переключение между окнами и поиска нужного места уходит куда дольше 20 секунд. Тоже и с отладчиком, если скрипты собирает ранка, то конечно можно присоединить отладчик студии к ней, но эти действия тоже требуют времени или изобретения костылей, а порой приходится отладку начинать с начала по нескольку раз.

Есть и куча других плюсов к примеру копирование скриптов на сервер занимает куда больше времени чем уже собранной дллки (опять же да можно настроить костыли и для решения этой проблемы к примеру копировать через репозиторий, но зачем если можно без них?), проект приобретает более целостный вид так как библиотеки и исполняемые файлы принадлежат какой-то конкретной версии, тут не может вылезть какая-то неприятная путаница что кто-то как-то что-то поменял\добавил\убрал из скриптов. Да и вообще понятие скриптов я считаю крайне не удачным, так как это полноценный код что отвечает почти за всю логику приложения, обладающий собственной архитектурой. Впрочем и само деление на ядро\скрипты слегка сумбурно, сервуо еще больше внесло хаоса. Вообщем если работать с кодом то однозначно удобнее когда все через IDE выполняется, а если на уровне скачал что-то откудато запихнул к себе то да удобнее с само компиляцией


--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
Aimed
сообщение 29.11.2017, 19:17
Сообщение #4


*********

Grandmaster
Сообщений: 2.250
Регистрация: 29.12.2012
Группа: Пользователи
Наличность: 8491
Пользователь №: 15.607



Цитата(StaticZ @ 28.11.2017, 22:57) *

Да нет все таки через студию быстрее, там идет частичная перекомпиляция без всяких плясок с бубнами (разницу между собрать и пересобрать можете сами почувствовать. Первого в 99% случаев достаточно и компиляция идет 1 секунду). Но дело даже не столько в 20 секундах, а в общем удобстве. Не надо скакать между окнами, я к примеру во время дебага даже вывод самого сервера делаю в студии а сама она без всяких окон стартует. Что еще более важно в случае ошибок компиляции в студии одним кликом попадаешь на проблемное место, а если у человека мало опыта то подобных ошибок будет много и время на чтение, переключение между окнами и поиска нужного места уходит куда дольше 20 секунд. Тоже и с отладчиком, если скрипты собирает ранка, то конечно можно присоединить отладчик студии к ней, но эти действия тоже требуют времени или изобретения костылей, а порой приходится отладку начинать с начала по нескольку раз.


Я что-то не в теме. О каких окнах речь?
У меня всегда 1 окно студии и вывод тоже попадает в студию в Output.
При отладке тоже все в той-же студии в одном окне. Ничего не надо присоеденять, это не отдельные процессы. Отладка с первого раза начинается. Я скидывал линк о гайде с отладкой.
Студия и правда быстрее соберает засчет MSBuild. Но у меня там разница меньше 10 секунд получается.

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

Если б я начинал свой проект с нуля, я б так и сделал наверное, если никаких подводных камней не нашлось бы.
Клонируешь весь проект из репозитория, там в нем уже готовая релиз сборка ядра, запускаешь сервер.exe и все.
Из своего девайса потом вносишь поправки в скрипты, делаешь пулл на сервере и пересобераешь проект скриптов используя команду на сервере.
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения
StaticZ
сообщение 30.11.2017, 19:11
Сообщение #5


*********

Разработчик проекта "Квинтэссенция"
Сообщений: 2.155
Регистрация: 15.6.2009
Группа: Пользователи
Наличность: 0
Из: РФ, Москва
Пользователь №: 11.948



Цитата(Aimed @ 29.11.2017, 19:17) *
Я что-то не в теме. О каких окнах речь?
Я про окошко самого сервера с его логом. В общем-то дело не хитрое но в оригинальном коде никакого перенаправления вывода в студию нет.

Цитата(Aimed @ 29.11.2017, 19:17) *
При отладке тоже все в той-же студии в одном окне. Ничего не надо присоеденять, это не отдельные процессы.
Вообще-то отдельные и не только процессы а сами приложения. В винде нет отладчика на уровне ядра, поэтому любой отладчик является отдельным приложением, что присоединяется к другому, даже если запускать из под студии. Последнее просто упрощает задачу уменьшая количество действия требуемое от человека.
В оригинальной версии ранки и скорее всего серв уо есть еще не очень приятная штука для защиты от крашей и авто перезапуска сервера в этом случае приложение уже запускается вне отладчика, даже если было собрано и запущено из под студии. Я решил эту проблему просто переписав систему и теперь сервер запускаемый при отладке в случае краша сам перезапускается, после чего ищет запущенную студию с нужным проектом и сам себя аттачит к ее отладчику. Но я ленивый человек у меня нажал ф5 и студия сама запускает сервер, а тот сам запускает клиент, если он еще не запущен и выполняет вход на сервер, в случае краша клиента - перезапускает его, в случае дисконекта - перезаходит...

Цитата(Aimed @ 29.11.2017, 19:17) *
К тому-же можно ведь сделать что-бы во время выполнения пересоберался проект скриптов и правки вступали в силу не вырубая сам сервер не тратя кучу времени на загрузку мира.
А зачем полный мир для разработки? я для этого пустышку использую, кроме случаев когда надо ловить баги что непонятно как воспроизвести. Скажем не корректное поведение конкретного персонажа конкретного игрока. ну или финальной отладки\проверки особо извращенных случаев, скажем при измении принципа тойже серилизации.

Цитата(Aimed @ 29.11.2017, 19:17) *
Я думаю что изначально такая структура использовалась что-бы можно было как на Сфере resync делать.
Такая структура использовалась, так как по замыслу ядро должно было быть закрытым и монетезированым.

Цитата(Aimed @ 29.11.2017, 19:17) *
Если б я начинал свой проект с нуля, я б так и сделал наверное, если никаких подводных камней не нашлось бы.
А смысл? разработкой всеравно заниматься удобнее на локалхосте а там и перезапускать сервер по 100 раз не проблема. а подобная система сложна и таит в себе множество камней, разве что намерено ограничивая возможности какимито патернами или используя что-то вроде lua скриптов для описания подобной логики... Хотя как по мне работать с темиже lua сложнее и дольше, да и с отладкой хуже. Так что сам концепт и техническая сторона вопроса безусловно привлекательны, но практический смысл подобного под вопросом.


--------------------
RP сервер UO: Quintessence, а также ПО: EssenceUCS, EssenceUDK, CentrEd+, Fiddler+ и др.
Game isn't a dream, it is the reality, reality which is coming while we dream...
Пользователь в офлайнеDelete PostОтправить личное сообщение
Вернуться в начало страницы
+Ответить с цитированием данного сообщения

Сообщений в этой теме
Chicos   Компиляция или не надо   24.11.2017, 5:53
Soteric   Ты понял верно. При запуске папка Scripts должна п...   24.11.2017, 6:04
Juzzver   Если ядро в проекте объединяет обе папки Server и...   24.11.2017, 15:19
Aimed   Ну вы и ответы даёте... я бы не зная сабжа нафиг з...   24.11.2017, 18:51
StaticZ   Да, если так уже сделали, то прийдется, но так дел...   24.11.2017, 19:05
Aimed   Как по мне при статичной компиляции куда проще и ...   24.11.2017, 19:10
StaticZ   А кто мешает отладчиком пользоваться то? Нужно про...   24.11.2017, 19:43
Aimed   Ну так эта и есть статическая компиляция о которо...   24.11.2017, 20:55
Chicos   Линк был на FAQ о дебаге ядра + скриптов при норм...   24.11.2017, 22:50
Aimed   Ну Аймед, так то то ты это и есть предшественик, ...   24.11.2017, 23:07
Juzzver   Я лично не ощутил проблем с сериализациями при раб...   25.11.2017, 15:18
Aimed   Я лично не ощутил проблем с сериализациями при ра...   25.11.2017, 18:35
Juzzver   А что там случилось вобще? Потому что когда мне д...   26.11.2017, 1:02
Juzzver   Столкнулся с неприятным моментом при использовании...   8.12.2017, 20:02
Aimed   Столкнулся с неприятным моментом при использовани...   9.12.2017, 19:03
Juzzver   Решил покопаться, в итоге получилось сделать чере...   1.2.2018, 21:13
Aimed   Надо будет ещё попробовать там msbuild/xbuild (if ...   2.2.2018, 13:35
volkinson   Ребята, а как сделать так, чтобы скрипты подгружал...   27.3.2019, 13:00
Juzzver   Глянул о чем речь - это нечто иное как конфиги, с ...   27.3.2019, 18:38
Aimed   С рефлексией большой гемор будет. Куча подводных к...   28.3.2019, 12:38
Juzzver   Еще как вариант, можно взять тот же форк UOForever...   28.3.2019, 19:33
Wap   С рефлексией большой гемор будет. Куча подводных ...   29.3.2019, 1:45
Aimed   В одно рыло в свободное от работы время - это год...   29.3.2019, 14:04
Alastar   Если только она магическая )) Ultima Offline Ex...   30.3.2019, 13:44
Alastar   Как вариант впилить javascript библиотеку в ядро и...   29.3.2019, 9:57
Ozzy Osbourne   Как вариант впилить javascript библиотеку в ядро и...   29.3.2019, 11:06
RL_ka   Зачем изобретать велосипеды, если для этих целей у...   29.3.2019, 14:21
Aimed   Зачем изобретать велосипеды, если для этих целей ...   29.3.2019, 14:32
Ozzy Osbourne   Ты действительно не понимаешь чем UOX3 отличается ...   30.3.2019, 17:56


Ответить в эту темуОткрыть новую тему
3 чел. читают эту тему (гостей: 3, скрытых пользователей: 0)
Пользователей: 0

 

- Текстовая версия | Версия для КПК Сейчас: 2.6.2024, 2:09
Designed by Nickostyle