Написание сервера для lineage 2 chronicle 1 на node.js

Совет: или используйте аналог IdFactory и перезаписывайте _id поле документа long значением id из фабрики при сохранении (предпочтительнее, есть пара ньюансов типа необходимости удаления _id поля из документа при операции update()).
Либо используйте уже созданный монго ObjectID как accountId и хешируйте его в long (int в L2? Не помню) при отправке клиенту. С вторым вариантом в будущем возможны коллизии, так как все-таки ObjectID это 12 байт.
 

Проект не имеет статус релиза)
Ну подобные решения это уже перебор даже для MVP

Почему монга? Стек js(json)
Node.js не обязывает использовать только монгу.
Если вы хотите хранить в базе произвольные структуры данных, то, например, в PostgreSQL есть JSONB, который полностью закроет ваши потребности.
При этом у вас будет полноценная СУБД, которая полностью соответствует требованиям ACID, имеет foreign key constraints и все прочие плюшки.
Это в целом большая проблема, которую я замечаю во многих проектах. Разработчики натягивают сову на глобус, пытаясь хранить данные (модель которых реляционная по своей природе) в документоориентированных СУБД, а потом страдают.
На хабре и других ресурсах периодически появляются статьи от относительно крупных сервисов, где они переезжают с монги на PostgreSQL из-за кучи проблем.

Почему не тс? Не хочу
Выборе конечно ваш, но зря. js удобен до того момента, пока вы в состоянии держать весь проект в голове.
На длинной дистанции ts имеет очевидные преимущества.
 
Ну подобные решения это уже перебор даже для MVP


Node.js не обязывает использовать только монгу.
Если вы хотите хранить в базе произвольные структуры данных, то, например, в PostgreSQL есть JSONB, который полностью закроет ваши потребности.
При этом у вас будет полноценная СУБД, которая полностью соответствует требованиям ACID, имеет foreign key constraints и все прочие плюшки.
Это в целом большая проблема, которую я замечаю во многих проектах. Разработчики натягивают сову на глобус, пытаясь хранить данные (модель которых реляционная по своей природе) в документоориентированных СУБД, а потом страдают.
На хабре и других ресурсах периодически появляются статьи от относительно крупных сервисов, где они переезжают с монги на PostgreSQL из-за кучи проблем.


Выборе конечно ваш, но зря. js удобен до того момента, пока вы в состоянии держать весь проект в голове.
На длинной дистанции ts имеет очевидные преимущества.
Проект я делаю для себя и не продаю его а уже накидывают будто я делаю энтерпрайз. Тем более mvp это за пару часов сделал.
 
  • Мне нравится
Реакции: kick
Проект я делаю для себя и не продаю его а уже накидывают будто я делаю энтерпрайз.
Пет-проекты обычно пилят с целью прокачать свой скилл, опробовать новые технологии/инструменты, etc.
Но никак не с целью откатиться назад в плане скилла.

Тем более mvp это за пару часов сделал.
И при этом ни разу его не запускали и не пробовали зарегаться, чтобы увидеть баг?)

P. S.
В любом случае пет-проект ваш и выбирать только вам, но выглядит как минимум странно :)
 
Пет-проекты обычно пилят с целью прокачать свой скилл, опробовать новые технологии/инструменты, etc.
Но никак не с целью откатиться назад в плане скилла.
Какой еще откат? Вы сразу пишете идеально? Как УАЗик буханка? Не требует допила? Тогда я раз за Вас, что у вас так получается.

И при этом ни разу его не запускали и не пробовали зарегаться, чтобы увидеть баг?)
Этот баг проявится если попытаться зарегистрироваться огромному количеству пользователей. На одного он и не проявится. И решение для этого я уже знаю.

В любом случае пет-проект ваш и выбирать только вам, но выглядит как минимум странно :)
Согласен. Пойду найму разработчиков и волью в проект миллионы рублей все ради того чтобы он не казался "странным" для Вас. Извините, что мой код оскорбил Вас. К сожалению у меня нет инструмента для Ваших глаз, чтобы Вы его смоли развидеть.
 
  • Ха-ха-ха
Реакции: kick
Пет-проекты обычно пилят с целью прокачать свой скилл, опробовать новые технологии/инструменты, etc.
Но никак не с целью откатиться назад в плане скилла.


И при этом ни разу его не запускали и не пробовали зарегаться, чтобы увидеть баг?)

P. S.
В любом случае пет-проект ваш и выбирать только вам, но выглядит как минимум странно :)
вы слишком серьезно относитесь к проекту, который человек по приколу лепит из говна и палок, и который никогда ничего серьезного из себя представлять не будет., и делается даже не для повышения скила, а просто поиграться в свободное время от скуки. Не мешайте человеку получать удовольствие )))
 
Этот баг проявится если попытаться зарегистрироваться огромному количеству пользователей. На одного он и не проявится.
Этот баг проявится при попытке регистрации первого аккаунта на пустой базе :)

Вы сразу пишете идеально?
Не знаю какие для Вас критерии "идеальности", но даже для своих пет-проектов я использую TS, PostgreSQL, и не храню пароли в базе в открытом виде ну и так далее по списку. Разве что только тесты не пишу.

Пойду найму разработчиков и волью в проект миллионы рублей
Не буду утверждать на 100%, но по моему скромному мнению миллион рублей и другие разработчики не нужны для того, чтобы как минимум проверить свой код перед тем, как закоммитить) А Вы как считаете?)

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

Все то, что я описал выше, должно уже работать на уровне рефлексов, даже в пет-проектах
 
Последнее редактирование:
А клиент с нуля написать не хотите =) ?
идея - текстовый клиент л2. никакой графики.
сервер надо будет подправить чтоб слал пакеты в текстовом виде

игрок
- иду 10 шагов на восток
сервер
- ты упёрся в дерево
- справа на тебя кастуют твистер
- слева заагрился моб "злобный глаз"
- сзади подбегает чел с крааасным именем
- автокаст на удержание мочи - провал
- автокаст на удержание кала - провал
----ваши следующие действия?
 
EasyGameProtection Да, я ведущий разработчик :cool:

а Вы все еще в джунах сидите?

Пора бы уже расти. И от родителей пора съехать. А то так и будете всю жизнь токсичными и злым на весь мир. 34 года так-то.

Вообще без шуток вам бы к психологу обратится. Вас или в школе обижали или родители недолюбливали. Вы выбираете унижение другого вместо радости. Вы могли бы пройти мимо но вас задела моя тема.

Почему? Потому что вы когда-то хотели сделать подобное(проект) но не сделали?
Тут на форуме много людей, кто просто пошел и сделал свой проект. Кто-то сервер на ГО, кто-то на плюсах.

Но вы не только решили унизить но и еще искали информацию обо мне? Что бы что?

P.S. Сделайте всем лучше

EasyGameProtection
BladeRunner

Игнорируйте эту тему. Ваше мнение тут никому не интересно.
 
Последнее редактирование:
EasyGameProtection Да, я ведущий разработчик :cool:

а Вы все еще в джунах сидите?

Пора бы уже расти. И от родителей пора съехать. А то так и будете всю жизнь токсичными и злым на весь мир. 34 года так-то.

Вообще без шуток вам бы к психологу обратится. Вас или в школе обижали или родители недолюбливали. Вы выбираете унижение другого вместо радости. Вы могли бы пройти мимо но вас задела моя тема.

Почему? Потому что вы когда-то хотели сделать подобное(проект) но не сделали?
Тут на форуме много людей, кто просто пошел и сделал свой проект. Кто-то сервер на ГО, кто-то на плюсах.

Но вы не только решили унизить но и еще искали информацию обо мне? Что бы что?

P.S. Сделайте всем лучше

EasyGameProtection
BladeRunner

Игнорируйте эту тему. Ваше мнение тут никому не интересно.
О это у него от природы. Так на вскидку
 
EasyGameProtection, зачем? Почему? Прежде чем говорить у кого то, надо взглянуть на себя сначала.
При этом у вас будет полноценная СУБД, которая полностью соответствует требованиям ACID, имеет foreign key constraints и все прочие плюшки.
И не все, опять таки полноценная в чьем понимание?
На хабре и других ресурсах периодически появляются статьи от относительно крупных сервисов, где они переезжают с монги на PostgreSQL из-за кучи проблем.
Которые нужно уметь фильтровать и определять качество, не все статьи там нормальные, а от крупных сервисов часто просто переводы.
На длинной дистанции ts имеет очевидные преимущества.
В итоге мы в конце получаем нативный жс. Со стороны конечно реализации какого нибудь сервера будет практичнее и правильней, но с другой стороны если я просто делаю проект жаст фор фан, какая разница?
Пет-проекты обычно пилят с целью прокачать свой скилл, опробовать новые технологии/инструменты, etc.
В плане, с чего это вдруг? А т.е написание полностью своего и реализации на нативном жсе, которое ты будешь делать с минимальным количеством библиотек и ещё чего то, то ты не прокачиваешься, а используя новые технологии, инструменты и т.д. которое делают либо всё или большинство за тебя и ты просто подставляешь значения и не давая роста никакого, это называется поднятием скила? Какое то странное понимание в росте скила.
Но никак не с целью откатиться назад в плане скилла.
с чего это вдруг?
Все то, что я описал выше, должно уже работать на уровне рефлексов, даже в пет-проектах
Вообще нет, ни разу.
 
EasyGameProtection, зачем? Почему? Прежде чем говорить у кого то, надо взглянуть на себя сначала.

И не все, опять таки полноценная в чьем понимание?

Которые нужно уметь фильтровать и определять качество, не все статьи там нормальные, а от крупных сервисов часто просто переводы.

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

В плане, с чего это вдруг? А т.е написание полностью своего и реализации на нативном жсе, которое ты будешь делать с минимальным количеством библиотек и ещё чего то, то ты не прокачиваешься, а используя новые технологии, инструменты и т.д. которое делают либо всё или большинство за тебя и ты просто подставляешь значения и не давая роста никакого, это называется поднятием скила? Какое то странное понимание в росте скила.

с чего это вдруг?

Вообще нет, ни разу.

А я вот понимаю, о чем говорит ИзиГеймПротект, так как по характеру основной деятельности являюсь руководителем проекта и инженером авторского надзора, и приходится очень много работать с разными "творцами" и выбирать подрядчиков. так вот очень часто встречаются во многих сферах как раз вот такие экстарверты, которые выкидывают свою работу в соцсети, радостно рассказывают, как они начали в чем-то барахтаться, при этом все делается рукожопо и паршиво под разными оправданиями и без понимания глубины. И большая часть моей работы - или уворачиваться, или исправлять после таких. так что уже хорошо усвоен навык вИдения, когда человек даже мелочи делает по уму и аккуратно, и является реально мастером в своей области. ибо такие даже специально и на халтуре не могут делать залипуху. Или это очередная громкая пустышка, даже с высокой должностью/авторитетом и стажем в профессии/разрекламированностью и кумиром среди менее сведущей публики. У меня уже аллергия на такой подход к делу, ибо бракоделие всегда стоит в разы дороже переделать. Так что звиняйте, профессиональная деформация. Сильно не серчайте. И почему-то именно такие вечно чето с нуля пытаются сделать велосипед, при этом с поверхностным и низкопрофессиональным подходом, который даже не осознают, из-за особенностей врожденных талантов или их отсутствия конкретно по данному виду деятельности. Вот мы имеем два примера - Луч и вот это творение. И там и там - пилится все с нуля. Только по моему опыту, я знаю уж 5 лет, что Луч доделается. А вот это даже до уровня голимой явы 10го года не дотянет. Вангую. Но при этом, как я писал выше - автора никто не критикует в плане его возможностей творить, пусть делает что хочет, это его жизнь. лишь высказали критику по содержанию, на что имхо каждый имеет право.
 
Да, я ведущий разработчик :cool:
Ну классно вам) Раз за вас и вашего работодателя :)

а Вы все еще в джунах сидите?
Конечно, пишу сервер Lineage на html и css, вместо базы данных использую текстовый файлик, а данные между клиентом и сервером буду передавать при помощи почтовых голубей. Не желаете присоединиться?)

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

Почему? Потому что вы когда-то хотели сделать подобное(проект) но не сделали?
Когда был помоложе и времени побольше - делал (например переписывал часть сервисов для другой игры году так в 2017).
На данный момент нет желания тратить столько времени на пет-проекты. Максимум что-то простенькое, что можно набросать за пару вечеров.

еще искали информацию обо мне
Зачем искать? Вы же сами ее указали в профиле

Игнорируйте эту тему. Ваше мнение тут никому не интересно.
Так "не интересно", что вы уже второй день продолжаете отвечать на мои сообщения)
 
буду передавать при помощи почтовых голубей
Если не секрет, а кто в вашей схеме доставляет голубей на другую сторону? Тема не раскрыта!111

Автор может делать как ему хочется. И нет смысла связывать фор фан проекты с реальным рабочим кодом, за который разработчик несет ответственность. Он может отдыхать дома, а на работе выкладываться и отдавать все ресурсы покрывая все юнит тестами и бест практиками
 
Если не секрет, а кто в вашей схеме доставляет голубей на другую сторону? Тема не раскрыта!111

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

простите пожалуйста нас задротов- идеалистов...
 
Чего именно вам не хватает в PG?

опять таки полноценная в чьем понимание?
Можно начать с того же, о чем я писал ТС'у: ACID, foreign keys, constraints.
ACID завезли аж в 4.0 в 2018 году. Прошло аж 6 лет, а проблемы все те же:
Using ACID properties in MongoDB can also have some drawbacks, such as reducing performance and scalability by adding overhead and locking to transactions. It can also increase the complexity and cost of deployment and maintenance by requiring additional resources and configuration for replica sets and sharded clusters. Furthermore, it limits flexibility and availability by imposing restrictions and trade-offs on transactions, such as maximum size, duration, and number of operations. Finally, it introduces the risk of data loss or inconsistency in case of network partitions or failures that prevent transactions from committing or aborting.
Остального же нет до сих пор.

К плюсам монги можно отнести, к примеру, простоту обеспечения отказоустойчивости и шардирования, так как это есть из коробки.
В PG подход: "Вот вам WAL для поддержки репликации, а дальше все сами".

Никто не говорит, что монга плохая (на работе до сих пор есть часть сервисов, которые используют монгу и это приходиться поддерживать)
Я лишь говорю, что ее пытаются использовать там, где она неуместна.

Которые нужно уметь фильтровать и определять качество, не все статьи там нормальные, а от крупных сервисов часто просто переводы.
То, что некоторые пользователи пытаются нафармить плюсцов на переводах - это понятно (я обычно просто иду сразу читать оригинал). Но отменяет ли наличие перевода тот факт, что проекты по мере разрастания базы начали сталкиваться с проблемами, которые исчезли после миграции на PG ?
Как примеры: ,

В итоге мы в конце получаем нативный жс. Со стороны конечно реализации какого нибудь сервера будет практичнее и правильней, но с другой стороны если я просто делаю проект жаст фор фан, какая разница?
Суть не в том, что оно транспайлится в js.
Суть в том, что у вас "из коробки" будет фактически "самодокументируемый код". Не нужно будет вспоминать что же там было (актуально для пет-проектов после большого перерыва в разработке)

И как бонусы:
- Сразу будут видны все самые примитивные ошибки типа опечаток/несоответствия типов/etc еще на этапе сборки. Особенно полезно, когда кодовая база уже переваливает за пару сотен тысяч строк.
- Автоматическая генерация валидаторов на основе определенных ранее структур данных ( , )
- Новым разработчикам проще въехать в проект.

Ну и так далее.

В плане, с чего это вдруг? А т.е написание полностью своего и реализации на нативном жсе, которое ты будешь делать с минимальным количеством библиотек и ещё чего то, то ты не прокачиваешься, а используя новые технологии, инструменты и т.д. которое делают либо всё или большинство за тебя и ты просто подставляешь значения и не давая роста никакого, это называется поднятием скила? Какое то странное понимание в росте скила.
А ТС у нас trainee/junior, что ему все еще надо осваивать базовые вещи на чистом js?
Вы же сами прекрасно понимаете, что готовые решения юзаются не из-за того, что разработчик такой тупой и не знает как это сделать самому. А из-за того, что разраб уже перерос стадию и прекрасно понимает что он делает, выбирая нормальное готовое решение под свои потребности.

Можете , где человек на долгие годы застрял на вышеупомянутой стадии.

с чего это вдруг?
Если сравнить "ачивки" ТС'а на LinkedIn и фактический код, который он пишет - выглядит не очень.

Вообще нет, ни разу.
Ваше право так думать :)
 
Первый тест
Атака с проверкой на дистанцию.
 

Вложения

  • test-attack.gif
    test-attack.gif
    3,6 МБ · Просмотры: 87
Назад
Сверху Снизу