Нет, не один поток. Мир один, и тик у него один. Внутри тика работа идёт параллельно, единица работы - ячейка сетки видимости(об этом позже). Сначала намерения собираются параллельно, затем состояние меняется в конечной фазе тика. Сущности взаимодействующие в рамках одного тика обрабатываются одним потоком, например в разных частях карты два пвп 9х9 и мы совершенно спокойно можем расчитывать их взаимодействие через многопоток. Как я буду знать, что многопоток ничего не ломает? Ограничу число потоков на 1 и проверю результаты. Если совпадают - тест пройден. Pathfinding, сеть и БД работают вне тика, в своих пулах. На первых тестах хочу укладываться в 80 мс из 100 за тик. Тик задаётся параметром, можно поставить 50 мс.Т.е., получается у Вас будет 1 поток с тиком в 100мс ? А какой .net будете использовать ? А так да, это интересно, исходников С6 полно для изучения пакетки, ПТС тоже есть, так что проблем с инфой быть не должно.
Я бы сказал не камни а булыжники.идея прикольная за тик, но если это идея такая классная почему её никто не реализовал ?) есть ли подводные камни в этом
занимайтесь лучше этим и "вылизывайте" используя ИИВсем привет! Я вот уже 12 лет занимаюсь кодингом пять дней в неделю по 8 часов в день и решил попробовать ради эксперимента написать свою сборку.
В качестве ЯП буду использовать C# на .NET фреймворке. В помощь себе беру Claude c подпиской за 200 баксов и этот форум как источник костылей и велосипедов, информации о багах/дюпах. В качестве интереса готов ответить на все ваши вопросы и поделиться всей инфой по архитектуре ядра. Буду признателен если вы задушите меня техническими вопросами и будете меня критиковать на каждом шагу, чтобы я смог использовать вашу критику для улучшения будущей сборки. По поводу раздачи исходников я пока не решил - на данный момент исходники показывать не буду, но возможно после получения того или иного результата, поменяю свое мнение.
По плану в MVP хочу сделать серверную сборку для IL хроник, но с возможностью дальнейших расширений под любые будущие хроники. Я понимаю, что механики сильно меняются от хроники к хронике, некоторые кардинально, это будет учтено в архитектуре ядра. Такую дельту между хрониками планирую реализовывать в виде подключаемых и отключаемых плагинов.
Проанализировав код расшаренных Java сборок, я сделал вывод, что многопоточная архитектура с блокировками несет большой риск дэдлоков и гонок, приводящих к дюпам, поэтому я думаю сделать сборку на тиковой системе. Условно положим тик сервера = 100мс.
За время одного тика сервер буферизирует все приложенные к нему пакеты и в конце тика делает транзакционную запись в БД. Таким образом, если пользователь выкинул что-то из инвентаря на пол, операция удалить предмет из инвентаря и положить предмет на пол будет атомарна и выполнена в транзакции - если что-то пошло не так, то откатятся оба действия.
Также тиковый подход исключит любые гонки и блокировки потоков, но не запретит параллельную обработку буфера. В текущих ява сборках при PVP удар игрока по другому игроку может обработаться сервером не последовательно во времени, а по порядку, который определила ОС при обработке потоков. Мне кажется это нифига не честно
Тиковый подход строго сортирует пакеты по времени прихода на сервер и буфер гарантирует обработку в нужном порядке - если ты ударил соперника раньше, то и сервер обработает это по-честному.
Также я откажусь от использования ООП для работы с игровыми объектами, чтобы исключить лишние аллокации и не загружать сборщик мусора. Но об этом я расскажу в следующем посте, если соберу позитивный фидбек от вас. Спасибо, что прочитали.
Да, я видел эту тему. Я скачал эти сорсы и тоже их использую для анализазанимайтесь лучше этим и "вылизывайте" используя ИИ
толку будет в разы лучше, так как источник ОФФ сервер а не костыли и форум
Несколько лет назад были выложены бинарники разных версий Л2. Часть содержала pdb и другими файлы, которые позволяют "относительно легко" реконструировать код. Некоторые из них были нарочно испорчены, но при этом все же были секции (процентов 20%) с полезными данными. На удивление (для меня) totalchecker2015.pdb оказался очень полезным для реконструкции L2Server. В начале лета я решил проверить справятся ли "frontier" АИ модели с декомпиляцией если им скормить все это. Спустя 32 дня работы 24/7 и 75 млдр токенов, была получена первая рабочая версия. Последующие месяцы ушли на тестирование...
- ~RosT~
- Ответы: 91
- Форум: PTS Сервер
Да, я видел эту тему. Я скачал эти сорсы и тоже их использую для анализа
Как вариант, но я бы выбрал Rust + сетку токиоВ качестве ЯП буду использовать C# на .NET фреймворке.
просто я C# разработчик
На самом деле язык программирования меня не столь сильно волнует
Ну не сутьНа самом деле язык программирования меня не столь сильно волнует, просто я C# разработчик, меня волнует сама серверная архитектура и подходы, которые позволят избежать кучи ифов, багов, дюпов, двойных сессий и прочего. Самое главное кмк это придумать такую устойчивую архитектуру. И вот тиковые подходы на самом деле это не так плохо, и я попробую это доказать.
и этот форум как источник
А должно волновать. Как минимум нельзя использовать язык программирования оригинала. Как ты думаешь почему все это время используют JAVA и только для эмуляции оригинала? Это же не просто так.На самом деле язык программирования меня не столь сильно волнует
В таком случае буду просто вести здесь свой дневник, может кому-то будет интересно как это все работает и проектируется изнутри.Ну не суть
Я о том что тут на форуме вас ждет 2 варианта
1. если что то выложите толковое на шару - возможно скажут спасибо
2. по остальному никакой помощи не будет, не надо романтизировать форум ))
Так что лучше брать ОФФ сервер и ИИ "задрачивать" вопросами, потому что иначе... ну думаю со временем разберетесь на счет
Я думаю это будет ваше первое разочарование )))поднять тестовый сервер на своей сборке и дать сюда способ на него зайти и побегать вместе со мной.
Потому что это это было 20+ лет назадJava, насколько мне известно, выбрали, потом
L2jServer был самым крупным самописным сервером потому что в правовом поле до него не могли докопаться юристы. Я как то у канадца играл в далекие времена, он за основу ПТС взял, 2 месяца продержался а потом пришли юристы от NCSoft и приземлили его на 25 000 канадцких баксов и условный срок. Сервер закрыли. Да можно сослаться что ты в РФ и тебе фиолетово только вот в РФ тоже есть правообладатели и при этом они не хило так всем солят. Угнова была, сейчас не знаю кто, вроде перекупили их.По поводу вопроса о выборе языка программирования? Java, насколько мне известно, выбрали, потому что L2j был первым крупным самописным сервером, и все сборки - это его форки по сути. Я вообще не вижу никакой проблемы выбрать любой язык программирования, что от этого меняется? Если соблюсти все контракты взаимодействия клиента и сервера, то какая разница?
ты так и пиши, код будет писать ИИ, а фидбек и баги промтом будешь скидывать ИИ. а то я разработчик, я программистВ помощь себе беру Claude c подпиской за 200 баксов
Одно другому не мешает, можно быть разработчиком и писать с помощью ИИ. Зачем мне руки марать на пет проекте. Одна из целей проекта посмотреть как ИИ с этим справится. Но ты не думай, что я просто написал ему: "Сделай мне л2 сервер шобы был быстрый, не допускай ошибок". Я работаю исключительно через спецификацию. А спецификацию ИИ не напишет самостоятельно.ты так и пиши, код будет писать ИИ, а фидбек и баги промтом будешь скидывать ИИ. а то я разработчик, я программист
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?