Lineage2TS - HF сервер написанный на Typescript

зачем такой Геморой?
Тупо установи node js
Скомпилируй исходники и запускай
Отвечаю на вопрос mizurkin
так есть готовый compose зачем разбираться с билдом и прочей хренью?
 

так есть готовый compose зачем разбираться с билдом и прочей хренью?

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

LoginServer Запустился


В CLI попробовал создать пользователя для входа, но и тут закралась ошибка
Ошибка получаеться от неправлильно сформированного датапака. Вы как файл datapack.database генерировали?

Насчет другой ошибки, я поправлю.
 
Ошибка получаеться от неправлильно сформированного датапака. Вы как файл datapack.database генерировали?

Насчет другой ошибки, я поправлю.
Генерировал через CLI
- run cli
- choose `operation type` as `Server Database`
- choose `SQLite` (MariaDB is not currently supported)
- choose `Install`
- choose `Both`
- observe `login.database` and `game.database` files are created
- choose `Exit` and `Exit` to terminate cli application
Далее в меню выбирал создание Create-User, создаю login and password и вылизала ошибка
SqliteError: NOT NULL constraint failed: accounts.createdTime

Если попробовать создать так, он пишет что пользователь создан, но в базе пишет
CREATE TABLE IF NOT EXISTS `accounts` (
`login` TEXT NOT NULL default '' PRIMARY KEY,
`password` TEXT,
`createdTime` INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),
`lastAccess` INTEGER NOT NULL DEFAULT (strftime('%s', 'now')),
`accessLevel` INTEGER NOT NULL DEFAULT 0,
`lastServerId` INTEGER DEFAULT 1,
`variables_json` TEXT NOT NULL DEFAULT '{}',
`passwordVersion` INTEGER NOT NULL DEFAULT 1
);

SqliteError: no such table: account_data

Ошибка получаеться от неправлильно сформированного датапака. Вы как файл datapack.database генерировали?

Насчет другой ошибки, я поправлю.
Немного доковырял Game-Server и сначала я подумал что его запустил, но в процессе инициализации

ℹ Game Server: using 'dotenv' engine
ℹ Game Server: Hot reloading is disabled.
✔ Game Server: Loaded 27 configs.
[18:06:47.378] INFO (L2TS Game/20828): AgathionData : loaded 21 item associations
[18:06:47.378] INFO (L2TS Game/20828): AgathionData : loaded 118 npc associations
[18:06:47.379] INFO (L2TS Game/20828): BaseStats loaded 0 attribute sets.
[18:06:47.379] INFO (L2TS Game/20828): CategoryData loaded 0 types.
[18:06:47.379] INFO (L2TS Game/20828): EnchantItemOptions : loaded 0 levels for 0 item ids using 0 records.
[18:06:47.379] INFO (L2TS Game/20828): ExperienceData loaded 0 levels.
[18:06:47.379] INFO (L2TS Game/20828): HtmlData : cached 0 individual paths
[18:06:47.379] INFO (L2TS Game/20828): HtmlData : cached 0 known bypass actions
[18:06:47.380] INFO (L2TS Game/20828): InitialEquipmentData loaded 0 classes from 0 records.
[18:06:47.380] INFO (L2TS Game/20828): InitialShortcutData : loaded 0 class groups.
[18:06:47.380] INFO (L2TS Game/20828): InitialShortcutData : loaded 0 total shortcuts from 0 records.
[18:06:47.380] INFO (L2TS Game/20828): InstanceData : loaded 0 names.
[18:06:47.380] INFO (L2TS Game/20828): InstanceData : loaded 0 instance property sets.
[18:06:47.380] INFO (L2TS Game/20828): KarmaData loaded 0 levels from 0 records.
[18:06:47.381] INFO (L2TS Game/20828): EnchantSkillGroups loaded 0 groups using 0 records.
[18:06:47.381] INFO (L2TS Game/20828): EnchantSkillGroups updated 0 skill trees.
[18:06:47.381] INFO (L2TS Game/20828): SkillData loaded 0 individual skills.
[18:06:47.381] INFO (L2TS Game/20828): SkillData loaded 0 enchantable skills.
[18:06:47.381] INFO (L2TS Game/20828): SkillData loaded 0 available skills and 0 existing function templates
[18:06:47.381] INFO (L2TS Game/20828): SkillLearnData loaded 0 npcs
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 class trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 transfer trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 collect trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 fishing trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 pledge trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 subclass trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 sub-pledge trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 transform trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 common trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 noble trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 game master trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 game master aura trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 class mappings
C:\Users\user\Desktop\lineage2ts-master\game-server\source\gameService\models\holders\SkillHolder.ts:8
throw Error( `Skill not found for id = ${id}, and level = ${level}` )
^
Error: Skill not found for id = 3620, and level = 1
at getExistingSkill (C:\Users\user\Desktop\lineage2ts-master\game-server\source\gameService\models\holders\SkillHolder.ts:8:15)
at getSkill (C:\Users\user\Desktop\lineage2ts-master\game-server\source\data\type\sqlite\ArmorSetsData.ts:54:28)
at forEach (C:\Users\user\Desktop\lineage2ts-master\game-server\source\data\type\sqlite\ArmorSetsData.ts:87:42)
at Array.forEach (<anonymous>)
at method (C:\Users\user\Desktop\lineage2ts-master\game-server\source\data\type\sqlite\ArmorSetsData.ts:77:23)
at showLoadStatus (C:\Users\user\Desktop\lineage2ts-master\game-server\source\gameService\loader\DataLoader.ts:52:44)
at call3 (C:\Users\user\Desktop\lineage2ts-master\node_modules\aigle\lib\internal\util.js:103:12)
at EachSeries.iterateArraySeries [as _iterate] (C:\Users\user\Desktop\lineage2ts-master\node_modules\aigle\lib\internal\collection.js:152:21)
at EachSeries._callResolve (C:\Users\user\Desktop\lineage2ts-master\node_modules\aigle\lib\eachSeries.js:43:12)
at resolve (C:\Users\user\Desktop\lineage2ts-master\node_modules\aigle\lib\internal\util.js:184:14)
npm ERR! Lifecycle script `server` failed with error:
npm ERR! Error: command failed
npm ERR! in workspace: [email protected]
npm ERR! at location: C:\Users\user\Desktop\lineage2ts-master\game-server
 
Немного доковырял Game-Server и сначала я подумал что его запустил, но в процессе инициализации

ℹ Game Server: using 'dotenv' engine
ℹ Game Server: Hot reloading is disabled.
✔ Game Server: Loaded 27 configs.
[18:06:47.378] INFO (L2TS Game/20828): AgathionData : loaded 21 item associations
[18:06:47.378] INFO (L2TS Game/20828): AgathionData : loaded 118 npc associations
[18:06:47.379] INFO (L2TS Game/20828): BaseStats loaded 0 attribute sets.
[18:06:47.379] INFO (L2TS Game/20828): CategoryData loaded 0 types.
[18:06:47.379] INFO (L2TS Game/20828): EnchantItemOptions : loaded 0 levels for 0 item ids using 0 records.
[18:06:47.379] INFO (L2TS Game/20828): ExperienceData loaded 0 levels.
[18:06:47.379] INFO (L2TS Game/20828): HtmlData : cached 0 individual paths
[18:06:47.379] INFO (L2TS Game/20828): HtmlData : cached 0 known bypass actions
[18:06:47.380] INFO (L2TS Game/20828): InitialEquipmentData loaded 0 classes from 0 records.
[18:06:47.380] INFO (L2TS Game/20828): InitialShortcutData : loaded 0 class groups.
[18:06:47.380] INFO (L2TS Game/20828): InitialShortcutData : loaded 0 total shortcuts from 0 records.
[18:06:47.380] INFO (L2TS Game/20828): InstanceData : loaded 0 names.
[18:06:47.380] INFO (L2TS Game/20828): InstanceData : loaded 0 instance property sets.
[18:06:47.380] INFO (L2TS Game/20828): KarmaData loaded 0 levels from 0 records.
[18:06:47.381] INFO (L2TS Game/20828): EnchantSkillGroups loaded 0 groups using 0 records.
[18:06:47.381] INFO (L2TS Game/20828): EnchantSkillGroups updated 0 skill trees.
[18:06:47.381] INFO (L2TS Game/20828): SkillData loaded 0 individual skills.
[18:06:47.381] INFO (L2TS Game/20828): SkillData loaded 0 enchantable skills.
[18:06:47.381] INFO (L2TS Game/20828): SkillData loaded 0 available skills and 0 existing function templates
[18:06:47.381] INFO (L2TS Game/20828): SkillLearnData loaded 0 npcs
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 class trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 transfer trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 collect trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 fishing trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 pledge trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 subclass trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 sub-pledge trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 transform trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 common trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 noble trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 game master trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 game master aura trees
[18:06:47.381] INFO (L2TS Game/20828): SkillTreesData loaded 0 class mappings
C:\Users\user\Desktop\lineage2ts-master\game-server\source\gameService\models\holders\SkillHolder.ts:8
throw Error( `Skill not found for id = ${id}, and level = ${level}` )
^
Error: Skill not found for id = 3620, and level = 1
at getExistingSkill (C:\Users\user\Desktop\lineage2ts-master\game-server\source\gameService\models\holders\SkillHolder.ts:8:15)
at getSkill (C:\Users\user\Desktop\lineage2ts-master\game-server\source\data\type\sqlite\ArmorSetsData.ts:54:28)
at forEach (C:\Users\user\Desktop\lineage2ts-master\game-server\source\data\type\sqlite\ArmorSetsData.ts:87:42)
at Array.forEach (<anonymous>)
at method (C:\Users\user\Desktop\lineage2ts-master\game-server\source\data\type\sqlite\ArmorSetsData.ts:77:23)
at showLoadStatus (C:\Users\user\Desktop\lineage2ts-master\game-server\source\gameService\loader\DataLoader.ts:52:44)
at call3 (C:\Users\user\Desktop\lineage2ts-master\node_modules\aigle\lib\internal\util.js:103:12)
at EachSeries.iterateArraySeries [as _iterate] (C:\Users\user\Desktop\lineage2ts-master\node_modules\aigle\lib\internal\collection.js:152:21)
at EachSeries._callResolve (C:\Users\user\Desktop\lineage2ts-master\node_modules\aigle\lib\eachSeries.js:43:12)
at resolve (C:\Users\user\Desktop\lineage2ts-master\node_modules\aigle\lib\internal\util.js:184:14)
npm ERR! Lifecycle script `server` failed with error:
npm ERR! Error: command failed
npm ERR! in workspace: [email protected]
npm ERR! at location: C:\Users\user\Desktop\lineage2ts-master\game-server
Нужно правильно сделать datapack.database . Как вы его смогли делать? По виду он почти пустой. Нет ни скиллов, ни html страниц, ни остальных данных...

Генерировал через CLI
Тут проблема в том что нужно файлы расставить в различные фолдеры, немного усложнено из-за использования частичных данных от датапака L2J (те данные которые я еще не перенес из PTS данных). Сложно это? Нет. Но тут нужно все акуратно расставлять как датапака так и для гео-пака.

Ну и наконец для тех людей которые хотят не мучаться а получить уже готовые файлы. Можно все файлы скопировать с изображения для докера:
Код:
docker run --entrypoint /bin/cat registry.gitlab.com/mrtrex/lineage2ts/server:latest /opt/lineage2ts/game-server/datapack.7z > premade.datapack.7z
docker run --entrypoint /bin/cat registry.gitlab.com/mrtrex/lineage2ts/server:latest /opt/lineage2ts/game-server/geopack.7z > premade.geopack.7z

Вам понадобиться архиватор 7z для того что-бы извлечь файлы.

Насчет ошибки создания пользователя. Проверьте обновление. Все теперь должно работать.
 
Нужно правильно сделать datapack.database . Как вы его смогли делать? По виду он почти пустой. Нет ни скиллов, ни html страниц, ни остальных данных...
Да вы правы хотел посмотреть как это работает при сборке руками, а не получить готовый вариант(без dockerа). Datapack так-же делал через ваш cli через меню. И раскидывал файлы .database по своим местам которые описаны в readme.md файлах. Почему datapack.database собрался пустым я пока не понял. Но я еще покопаю, и еще потестирую. мало ли что еще интересного найду. Мне просто стал проект интересен, т.к изучаю js и ts пока на любительском уровне. А тут еще к этому любимая игра моей молодости на таких технологиях. Это вам огромное уважение! И технологии покопать и поиграть прям вдохновляет на дальнейшее изучение js
 
Да вы правы хотел посмотреть как это работает при сборке руками, а не получить готовый вариант(без dockerа). Datapack так-же делал через ваш cli через меню. И раскидывал файлы .database по своим местам которые описаны в readme.md файлах. Почему datapack.database собрался пустым я пока не понял. Но я еще покопаю, и еще потестирую. мало ли что еще интересного найду. Мне просто стал проект интересен, т.к изучаю js и ts пока на любительском уровне. А тут еще к этому любимая игра моей молодости на таких технологиях. Это вам огромное уважение! И технологии покопать и поиграть прям вдохновляет на дальнейшее изучение js
Инструкции для датапака и геопака находятся здесь:

Вот примеры скриптов которые генерируют все БД:
-
-
 
Прошло 15 лет с выхода HF. Они все пилят сервера. :) Надо хоть под классик клиент чтоли... Пробовать... Все свои мысли высказал :)
Автору успехов в разработке!
 
Прошло 15 лет с выхода HF. Они все пилят сервера. :) Надо хоть под классик клиент чтоли... Пробовать... Все свои мысли высказал :)
Автору успехов в разработке!
Если нет цели запустить коммерческий проект, то ХФ идеальный клиент под неспешную и комфортную разработку. Например, лично я пилю ХФ потому, что он последняя хроника, которая еще хоть как-то похожа на ту л2, которую я знаю. Не играя на новых хрониках, без доступа к актуальным ликам, не получится сделать качественно эмулятор. Разработка новых хроник - это всегда гонка с офом, где нужен пак одетых и прокаченных персонажей и спец.софт. При этом соревноваться с корейцами в наркомании можно и на ИЛ, было бы желание.

В большинстве случаев портирование пакетки с более свежих хроник - вопрос месяца факультативной работы по 1-2 часа в день. Тем более, что на большинстве актуальных доступных эмулей, кроме пакетки, отличия кодовой базы от ХФ можно по пальцам пересчитать. :pandaredlol:
 
Хочеться добавить что можно получить административные привилегии для своего персонажа при использовании команд под секцией "AccountPrivileges Voiced Command". То есть когда вы уже играете персонажем вы можете напечатать код в чате и получить временные привилегии админа. При этом вы увидите сообщение о том как сохранить привилегии в будущем для своего персонажа. Удачной игры!

I would like to add one more thing. In order to claim admin privileges please note server output where you can see "AccountPrivileges Voiced Command" and a few lines below it containing what looks like a jumbled sequence of letters. You can enter such sequence (for example something like, ".IneedAdmin007") in chat once you are connected and playing on server and you will gain temporary admin privileges to execute any command you need. It will even tell you what command you need to make admin privilege permanent! Happy playing!

Инструкции для датапака и геопака находятся здесь:

Вот примеры скриптов которые генерируют все БД:
-
-

Добрый день! Спасибо вам большое за инструкции, сервер полностью запустил. Даже получил доступ до админской учетки и смог воспользоваться //admin и gmshop, работает все шустро(не все конечно, т.к одному такой проект сложно тянуть).
Т.к много работы руки тоже не всегда доходят. Запустил чисто на windows10 без докеров.
P.S Подскажите пожалуйста, обладаю навыками html,css раньше занимался версткой, немного программировал на vue делал небольшие проекты. Сам в области it. Можно вам вообще как то помочь, на первых парах в простых вещах, и постепенно немного усложняться. Например сначала заняться командами для gmshop или админ панели.
 
Добрый день! Спасибо вам большое за инструкции, сервер полностью запустил. Даже получил доступ до админской учетки и смог воспользоваться //admin и gmshop, работает все шустро(не все конечно, т.к одному такой проект сложно тянуть).
Т.к много работы руки тоже не всегда доходят. Запустил чисто на windows10 без докеров.
P.S Подскажите пожалуйста, обладаю навыками html,css раньше занимался версткой, немного программировал на vue делал небольшие проекты. Сам в области it. Можно вам вообще как то помочь, на первых парах в простых вещах, и постепенно немного усложняться. Например сначала заняться командами для gmshop или админ панели.
Я только за! Можно все обсудить на Discord-е вот тут

Или же в приватной переписке здесь на форуме или на Telergram-e (смотрите мой профиль).

Насчет страниц //admin команд, то на данный момент они не работают так как используются страницы от L2J и соответственно ихние команды не будут работать так же как на Lineage2TS. Команды немного переименованны да и добавлений куча, так что будет интересно все это править.
 
Я только за! Можно все обсудить на Discord-е вот тут
Что то в диске пусто, чата нет куда писать, везде права нужны... Собственно бегло глянул, и сразу возник вопрос по датапаку
1754073032890.webp
Судя по доке датапак берется от лыжи. И Cli конвертирует статику и пакует ее в sqlite? А вот что делается с квестами, инстами и аи сходу не понял. В данной реализации данные механики перенесены условно в ядро и разделены на более мелкие механики? Как пример возьмем допустим инст тиады из лыжи. Он лежит в датапаке и в нем описаны методы спавна, ивенты, стейты, кондишины. В общем то вся механика описана в файле инста. Что то подобное у вас это папка listeners, и там даже есть папка instances, но там только два инста. Я и подумал что возможно присутствует деление на мелкие механики, но пока не нашел, те я искал логику нпц которое может телепортировать в инст, аи боса, но не нашел. Или это просто не реализовано? Возможно стоит описать структуру проекта, что бы было понятно как что задумал автор?)
 
Что то в диске пусто, чата нет куда писать, везде права нужны... Собственно бегло глянул, и сразу возник вопрос по датапаку
Посмотреть вложение 88262
Судя по доке датапак берется от лыжи. И Cli конвертирует статику и пакует ее в sqlite? А вот что делается с квестами, инстами и аи сходу не понял. В данной реализации данные механики перенесены условно в ядро и разделены на более мелкие механики? Как пример возьмем допустим инст тиады из лыжи. Он лежит в датапаке и в нем описаны методы спавна, ивенты, стейты, кондишины. В общем то вся механика описана в файле инста. Что то подобное у вас это папка listeners, и там даже есть папка instances, но там только два инста. Я и подумал что возможно присутствует деление на мелкие механики, но пока не нашел, те я искал логику нпц которое может телепортировать в инст, аи боса, но не нашел. Или это просто не реализовано? Возможно стоит описать структуру проекта, что бы было понятно как что задумал автор?)
Вы правы чтo инстансы не работают. Пока ими не занимался. Но папку вы нашли правильную.

По сравнению с лыжей, весь код который исполняется лежит в репозитории. Тесть нет различия между квестами или там определенной логикой поведения монстров (как сделанно в L2J) и самим сервером. Есть различие между данными датапака или же гео-пака, базой данных (SQLite используется вo всех паках) и самой логикой сервера. Также есть конфигурация сервера, но она представляет нечто отдельное, так как она может перезагружаться в сависимости от настроек.

Что то в диске пусто, чата нет куда писать, везде права нужны... Собственно бегло глянул, и сразу возник вопрос по датапаку
Сейчас все проверил с только-что регистророванным акаунтом, можно писать как в general так и в bugs и development. Единственное что было неправильно настроенно так это нельзя было увидить прошлый чат.

Возможно стоит описать структуру проекта, что бы было понятно как что задумал автор?)
Более подробно о частях сервера. Это не нужно воспринимать как архитектуру или что-либо подобное. Архитектура зачастую не передает важных элементов соединений блоковых частей, и не показывает почему соединение нужно.

Итак, более подробно о частях сервера.

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

Второй блок, или же уровень, сервера это данные из датапака. Гео-пак тоже относиться к данным но они будут подгружаться в зависимости от регионов мира в которые войдет игрок. Здесь все загружается при определенной последовательности, так как есть зависимость от данных например предметов или же скиллов которые взаимосвязанны между собой. Можно посмотреть что к чему тут:

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

Четвертый уровень это то что нужно запускать после всей инициализации серверных данны. Это будет CommandLink, квесты или listeners, также различные плагины (это по типу систем которые можно выключать или же запускать когда нужно). В этот уровень также входит функция очистки памяти после операций с датапаком (это возможно делать как прямым доступом к GC так и при освобождении ресусров от загрузки данных датапака, из-за того что некоторые данные дублируються и их только нужно определять при загрузке).

Последний уровень это соединение игрового сервера с логин сервером. Тут все просто, запрашивается айдишник на открытый сервер. И теперь наш игровой сервер может принимать игровые клиенты. Конечно не от всех IP, а то что было прописанно при конфигурации. Это касается как игровых клиентов, так и логин сервера, и в особенности CommandLink.

В дополнение хочу добавить что будет полезно посмотреть как работает тестирование сервера. Там описанно во первых пошаговые операции с клиентом. А во вторых, можно будет полазить и посмотреть как программный клиент вообще соединяеться с игровым сервером. Сложно, но будет полезно. Не для всех. Зато будут знания как тестирование можно провести на своем локальном сервере. Удачи!
 
Последнее редактирование модератором:
Интересно, а что случится с таким проектом, при онлайне хотя бы в 500 тел?
 
Интересно, а что случится с таким проектом, при онлайне хотя бы в 500 тел?
Пожалуйста, тестируйте. Из того что я тестировал, все должно работать. Вы ожидаете что сервер сложит ласты?

Хочу добавить что автоматическое тестирование производиться при любом обновлении сервера с использованием 24 клиентов паралельно (тут лимит скорее по железу, так как тестирование производиться из CI, да и в докере, что чревато последствиями краша всего процесса, но зачастую это все работает на ура).
 
Пожалуйста, тестируйте. Из того что я тестировал, все должно работать. Вы ожидаете что сервер сложит ласты?

Хочу добавить что автоматическое тестирование производиться при любом обновлении сервера с использованием 24 клиентов паралельно (тут лимит скорее пожелезу, так как тестирование производиться из CI, да и в докере, что чревато последствиями краша всего процесса, но зачастую это все работает на ура).
Я считаю, что даже если попытаться оптимизировать тайпскрипт для работы с л2 серверами, он будет проигрывать даже яве в реальных нагрузках. Как эсперемент для обучения, возможно он не плох, но в боевые реалии он не сможет.
 
Я считаю, что даже если попытаться оптимизировать тайпскрипт для работы с л2 серверами, он будет проигрывать даже яве в реальных нагрузках. Как эсперемент для обучения, возможно он не плох, но в боевые реалии он не сможет.
Считайте. Я не против. Из того чтo я видел Ява и Node ну уж очень похожи по производительности. Вы уверенны что вы случайно не смотрели на Python? Там действительно все плохо, аж по крайней мере в 10 раз (как по производительности, так и ергономике програмиирования).

Насчет боевых реалий. Время проверит. Но то что я видел и сейчас занимаюсь по официальной работе, Ява вообще не применима. Из-за многих причин. Но самое главное то что сама Ява не изменилась на столькo что-бы быть производительной (тут память, скорость загрузки, библиотеки с современными алгоритмами и структурами, да и применение вне серверных вариантов в облачных технологий). Многое о ней написанно, но не многоe можно применить. Поетому посмотрим как и к чему.
 
Считайте. Я не против. Из того чтo я видел Ява и Node ну уж очень похожи по производительности. Вы уверенны что вы случайно не смотрели на Python? Там действительно все плохо, аж по крайней мере в 10 раз (как по производительности, так и ергономике програмиирования).

Насчет боевых реалий. Время проверит. Но то что я видел и сейчас занимаюсь по официальной работе, Ява вообще не применима. Из-за многих причин. Но самое главное то что сама Ява не изменилась на столькo что-бы быть производительной (тут память, скорость загрузки, библиотеки с современными алгоритмами и структурами, да и применение вне серверных вариантов в облачных технологий). Многое о ней написанно, но не многоe можно применить. Поетому посмотрим как и к чему.
Если не ошибаюсь, то тайпскрипт это однопоточный яп, он ограниченно может в многопоток через дополнения.
Но интересно было бы посмотреть на реальный сервер на тайпскрипте.
AndragorAndragor верифицированный пользователь. запускай, инвесторам скажешь, что это ниxyясебе какая тема :loltt0:

В любом случае, удачи в разработке, реально интересно посмотреть что из этого выйдет.
 
Если не ошибаюсь, то тайпскрипт это однопоточный яп, он ограниченно может в многопоток через дополнения.
Но интересно было бы посмотреть на реальный сервер на тайпскрипте.
Во первых Typescript это язык. Это не являеться платформой для запуска программ. Typescript используется для компилирования исходников в Javascript для Nodejs. Сейчас есть планы (более одного) для использования Typescript как промежного языка который можно будет компилировать в бинарный код, по сути как и C++ . Вот посмотрим и проверим как это все будет.

Но. Сервер уже использует два потока, без никаких дополнений. Это все работает немного по другому чем на Яве (на самом деле там все сложнее и проблематичнее из-за самой архитектуры JVM). В будущем будут использоваться больше потоков из-за простой причины поиска пути. Но самое главное что это ужe возможно и работает.
 
Оверпостинг
Сейчас все проверил с только-что регистророванным акаунтом, можно писать как в general так и в bugs и development. Единственное что было неправильно настроенно так это нельзя было увидить прошлый чат.
сейчас, появилось

Вы правы чтo инстансы не работают. Пока ими не занимался. Но папку вы нашли правильную.
а каков план, опираться на логику лыжи или на птс скрипты?

Я считаю, что даже если попытаться оптимизировать тайпскрипт для работы с л2 серверами, он будет проигрывать даже яве в реальных нагрузках. Как эсперемент для обучения, возможно он не плох, но в боевые реалии он не сможет.
Да это бред. Нормально у js с производительностью. При вменяемой реализации, проблемы быстрей упрутся в возможности клиента, который не переваривает масс замесы.
 
Последнее редактирование модератором:
Назад
Сверху