UoKit.com Форумы > Ultima Online : Dev > RunUO Server > Вопросы по RunUO
Страницы: 1, 2, 3, 4
Aimed
Надо будет ещё попробовать там msbuild/xbuild (if Unix) и скармливать csproj файл в отдельный процесс, вместо массива со всеми .cs файлами.
Вверх
volkinson
Ребята, а как сделать так, чтобы скрипты подгружались на лету без перезагрузки сервера? Я видел у одного спеца ItWouldBeWise, он в своих видео уроках делает все без перегазруки. Он сказал, что написал какой-то фреймворк Uber Script и серверу не нужна перезагрузка. Буду очень благодарен за совет.
Вверх
Juzzver
Глянул о чем речь - это нечто иное как конфиги, с которых парсятся данные и соответственно в любой момент могут подхватываться изменения. В данном случае система завязана на событиях, по происшествию которого мы начинаем выполнять те или иные действия, сделано это скорее всего посредством рефлексии.

Так что для самых простых операций со значениями, к примеру вывести рейты на дроп артефактов с босса - просто выводишь в файл параметры со значениями и парсишь их.
Для более сложных - изучай методы рефлексии (System.Reflection).

Полностью сделать сервер без перезагрузки - это опять же в сторону рефлексии, но скорее всего нереально, топорно, долго, больно и т.д.

Можно еще динамически подгружать модули, наклепав заранее dll-ки нужные, но это будет из той же серии рефлексии, что в конечном итоге тоже ни к чему хорошему не приведёт.

Иных ходов не знаю, но мб есть какие-то фрейм ворки, опять же завязанные на рефлексии, которые упрощают жизнь данной идеи.


Вверх
Aimed
С рефлексией большой гемор будет. Куча подводных камней и очень сложно. Тут надо делать как у Сферы. Закрывать ядро полностью и предоставлять скриптовое АПИ которое будет подстраиваться под определенный набор типов данных из ядра. Никаких наследований от мобайла и так далее. Как и в Сфере через темплейты работать ( тайпдефы ), которые тебе мобайла со всеми нужными параметрами будут создавать. Таким образом никаких проблем с памятью при перезагрузке не будет.

Второй шаг - писать парсер всех скриптов что б их в новый формат, под скриптовое АПИ конвертировать. В принципе это реально сделать, но проект колоссальный. Думаю что пару месяцев - пол года, в свободное от работы время и там уже что-то точно будет работать.
Вверх
Juzzver
Еще как вариант, можно взять тот же форк UOForever, под который и были написаны эти убер скрипты, и попытаться их перетянуть на свой шард. Но как уже было сказано выше - это не покрывает все возможности, а только лишь предопределенные.
Вверх
Wap
Цитата(Aimed @ 28.3.2019, 11:38)

С рефлексией большой гемор будет. Куча подводных камней и очень сложно. Тут надо делать как у Сферы. Закрывать ядро полностью и предоставлять скриптовое АПИ которое будет подстраиваться под определенный набор типов данных из ядра. Никаких наследований от мобайла и так далее. Как и в Сфере через темплейты работать ( тайпдефы ), которые тебе мобайла со всеми нужными параметрами будут создавать. Таким образом никаких проблем с памятью при перезагрузке не будет.

Второй шаг - писать парсер всех скриптов что б их в новый формат, под скриптовое АПИ конвертировать. В принципе это реально сделать, но проект колоссальный. Думаю что пару месяцев - пол года, в свободное от работы время и там уже что-то точно будет работать.
В одно рыло в свободное от работы время - это года три делать. Это если активно работать и человек шарящий. Это ж надо весь хай-левел код переписать, тонны контента, если мы говорим о сервере типа стандартной современной Ранки.

А вообще, по сути это типа как переписать эмулятор Сфера на C#.

Вверх
Alastar
Как вариант впилить javascript библиотеку в ядро и писать все на жс. Будет то же самое, что писали выше, только все уже сделали за вас.
Вверх
Ozzy Osbourne
Цитата(Alastar @ 29.3.2019, 8:57)
Как вариант впилить javascript библиотеку в ядро и писать все на жс. Будет то же самое, что писали выше, только все уже сделали за вас.


Вверх
Aimed
Цитата(Wap @ 28.3.2019, 23:45)

В одно рыло в свободное от работы время - это года три делать. Это если активно работать и человек шарящий. Это ж надо весь хай-левел код переписать, тонны контента, если мы говорим о сервере типа стандартной современной Ранки.

А вообще, по сути это типа как переписать эмулятор Сфера на C#.


Зачем там хай-левел код переписывать? Именно переписывать там нужно очень мало кода.
1) Нужно написать обертку, которая будет скриптовым АПИ, как у Сферы.
2) В этой обертке сделать маппинг с вызовами серверного ядра. Много там не нужно, опять смотрим на Сферу.
3) Перенести некоторые классы, такие как Player, BaseCreatue и им подобные в ядро. Чем больше таких классов будет в ядре, тем меньше скриптов прийдется загружать == профит при старте сервера. По сути драг&дропом позаниматься 1 вечер в солюшене студии.
4) Самое сложное это написать парсер и конвертер текущих РанУО скриптов под новое АПИ. Ну а дальше конвертер сконвертирует все что останется в Scriptsс в новый формат.
5) Переписать нужно только компиляцию скриптов, что б она работала под новое скриптовое АПИ.

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

Цитата(Alastar @ 29.3.2019, 7:57)

Как вариант впилить javascript библиотеку в ядро и писать все на жс. Будет то же самое, что писали выше, только все уже сделали за вас.


Если только она магическая ))

П.С. На самом деле оч крутой проект. Будь я в другой ситуации, наверное, занялся бы таким. Если грамотно сделать скриптовое АПИ, то Сферу вобще полностью можно будет хоронить. Вытащить ещё нужные механики из ядра Сферы и все, Cфера станет полностью obsolete.
Вверх
RL_ka
Зачем изобретать велосипеды, если для этих целей уже есть ПОЛ?
каждый из эмулей занял свою нишу, и тем они и прекрасны, по-моему
Вверх
Invision Power Board © 2001-2024 Invision Power Services, Inc.
Version for Pocket PC © 2006-2024, IPBest Studio.