Пишу свою сборку с нуля

PowerPuffLove

Путник
Участник
Сообщения
19
Розыгрыши
0
Репутация
0
Реакции
2
Баллы
3
Хроники
  1. Interlude
Исходники
Присутствуют
Сборка
Vasyan.NET
Всем привет! Я вот уже 12 лет занимаюсь кодингом пять дней в неделю по 8 часов в день и решил попробовать ради эксперимента написать свою сборку.
В качестве ЯП буду использовать C# на .NET фреймворке. В помощь себе беру Claude c подпиской за 200 баксов и этот форум как источник костылей и велосипедов, информации о багах/дюпах. В качестве интереса готов ответить на все ваши вопросы и поделиться всей инфой по архитектуре ядра. Буду признателен если вы задушите меня техническими вопросами и будете меня критиковать на каждом шагу, чтобы я смог использовать вашу критику для улучшения будущей сборки. По поводу раздачи исходников я пока не решил - на данный момент исходники показывать не буду, но возможно после получения того или иного результата, поменяю свое мнение.

По плану в MVP хочу сделать серверную сборку для IL хроник, но с возможностью дальнейших расширений под любые будущие хроники. Я понимаю, что механики сильно меняются от хроники к хронике, некоторые кардинально, это будет учтено в архитектуре ядра. Такую дельту между хрониками планирую реализовывать в виде подключаемых и отключаемых плагинов.

Проанализировав код расшаренных Java сборок, я сделал вывод, что многопоточная архитектура с блокировками несет большой риск дэдлоков и гонок, приводящих к дюпам, поэтому я думаю сделать сборку на тиковой системе. Условно положим тик сервера = 100мс.

За время одного тика сервер буферизирует все приложенные к нему пакеты и в конце тика делает транзакционную запись в БД. Таким образом, если пользователь выкинул что-то из инвентаря на пол, операция удалить предмет из инвентаря и положить предмет на пол будет атомарна и выполнена в транзакции - если что-то пошло не так, то откатятся оба действия.

Также тиковый подход исключит любые гонки и блокировки потоков, но не запретит параллельную обработку буфера. В текущих ява сборках при PVP удар игрока по другому игроку может обработаться сервером не последовательно во времени, а по порядку, который определила ОС при обработке потоков. Мне кажется это нифига не честно

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

Также я откажусь от использования ООП для работы с игровыми объектами, чтобы исключить лишние аллокации и не загружать сборщик мусора. Но об этом я расскажу в следующем посте, если соберу позитивный фидбек от вас. Спасибо, что прочитали.
 
Ты серьезно? Потрать силы и возможности на психиатра. Грек тупо построил систему что бы ты мог запускать любые хроники на яве. Он тупо раз за разом все автоматически переделывает под новую яву. Назови мне хоть одну сборку на базе сервера от него, которая работает? Приносит баблишко?
Простой пример.
Чел тут спрашивал что у него при точке камушки гигантов не работают. Я иду к Мобиусу, расписываю все и вся. Коды, все, пакеты. Ответ, ты крут продолжай в этом направлении и реши мою проблему. Он в душе не ебет что делает. Понятия не имеет. Поверхостно знает как всех опрокинуть и все.
А ты исходы берешь у него а не у L2jServer? С ума сошел?
Сообщение объединено:
Все с этим форумом в порядке, вон whiteo ктото тронул, раскритиковал? Чел реально запилил кое что. Рассуждать о супер мега сервере от исходников Мобиуса это вообще в край.
 
Последнее редактирование:
был только такой мем в поиске к сожалению.
 
Данный сайт использует cookie. Вы должны принять их для продолжения использования. Узнать больше…