Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Languages #2226

Draft
wants to merge 4 commits into
base: master
Choose a base branch
from
Draft

Languages #2226

wants to merge 4 commits into from

Conversation

Jopaglazik
Copy link

@Jopaglazik Jopaglazik commented Nov 12, 2024

Описание PR

Добавление системы языков игру. Особо я свои позорные наработки не выкладывал, но у этой было большое желание довести её до ума т.к есть большая мотивация вайбить на таярочке, спасибо алвуру за то что их добавил иначе бы этого пра не было. Поэтому сквозь страдания, слезы, пот и бессонные дни с маниакальным рвением старался осуществить свою цель S-тира.

Основные изменения:

  • В игру добавлено множество языков для каждых рас и не только.
  • Носители языка видят сообщения в оригинальном виде, не носители, соответственно, в "зашифрованном" варианте.
  • В трейты персонажей добавлена колонка "Дополнительные языки" с выбором одного из четырёх общегалактических языков.
  • Добавлен верб выбора текущего языка на персонаже. (Не самое удобное решение, но UI я не вывез)
  • Добавлено окраска сообщений в цвета относительно языка.

Минорные изменения

  • Персональный ИИ стал более "персональным". Он берёт в себя языки персонажа, который активировал его.
  • Диктофону оставил, чтобы переводил язык, ибо проведя разведку в 13 цеху - у них он переводил. (Да и юзлесс шмотка была бы)
  • Борги понимают все языки, но разговаривать могут только на "Общегалактическом" и "Бинарном".
  • ИИ понимает все языки, но разговаривает только на общем, ибо пока не добавят голопады смысла трогать его нету.(Да и есть технические сложности с тем как этот ИИ вообще работает)
  • Роли клоуна раунд стартом выдаётся "Клоунский" язык.
  • Получившие разум животные от когнизина, получают во владение "Общегалактический" язык.
  • Превратившийся персонажи в зомби теряют возможность переключать языки, чтобы их "груа груа" не шифровалось.
  • Добавлены лорные описания языков, согласно вики SS220 13 и 14.
  • Добавлены всратые, без шорткатов, админские команды для добавления/удаления языков в компонент энтити. (Мне было лень делать их лучше)
    addlanguage <uid> <protoId> removelanguage <uid> <protoId> clearlanguages <uid>

Технические детали

  • Добавлена поддержка добавления новых языков через прототипы
  • Добавлена поддержка добавления языков рабочим ролям через спешл AddLanguageSpecial.
  • Всем энтити не имеющие компонента LanguageComponent присваивается "Универсальный" язык.

Тестирование

  • Локальный IC чат работает - нормально.
  • Виспер чат работает - нормально.
  • Рация через гарнитуру работает - нормально.
  • Портативные рации работают - нормально, но для её работы пришлось закомментировать кусок кода санитайзера, ибо тогда она хочет "покашлять". (С диктофоном такая-же история была)
  • Интеркомы работают - нормально.
  • В гостах видно все оригинальные сообщения.
  • Админ логи не ломаются
    Спасибо мелкому и альпаке за детство тестирование

TTS
Так-как апи ТТСа у меня нету, на этом мои полномочия всё. Как он будет работать, будет ли он работать, насколько сильно будет нагружаться, насколько сильно захлёбываться. Возможно придётся санитайзить слога языков, чтобы произносилось нормально, если это вообще будет работать... или вообще придётся рефакторить много чего, тут я не знаю. Это решать уже ревьюверам что с этим думать.

Медиа

kallll
kallll2
photo_2024-11-11_11-03-16

Проверки

  • PR полностью завершён и мне не нужна помощь чтобы его закончить.
  • Я ознакомился с наставлениями по работе с репозиторием и следовал им при создании PR'а.
  • Я внимательно просмотрел все свои изменения и багов в них не нашёл.
  • Я запускал локальный сервер со своими изменениями и всё протестировал.
  • Я добавил скриншот/видео демонстрации PR в игре, или этот PR этого не требует.

Изменения

🆑 Jopaglazik

  • add: Добавлена система языков!
  • add: Добавлена кнопка переключения языка.
  • add: В чертах персонажа, добавлен выбор дополнительного языка.

@github-actions github-actions bot added Changes: Localization Изменение затронуло файлы ".ftl" Changes: Prototypes Изменение затронуло файлы ".yml" кроме неймспейса "maps" Changes: C# Изменение затронуло файлы ".cs" labels Nov 12, 2024
@lexaSvarshik
Copy link

ГООООООООООООООООООЛ

@Bomjojuk
Copy link
Collaborator

От себя добавлю, что логично было бы добавить дворфам владение Гаттерром, так как все дворфы из республики (откуда они все и идут) обязаны знать Гаттер для общения с республиканцами

@Bomjojuk Bomjojuk self-requested a review November 12, 2024 07:32
@Bomjojuk Bomjojuk requested review from Kirus59 and removed request for Bomjojuk November 12, 2024 07:32
@Bomjojuk
Copy link
Collaborator

Самое время чистить акценты рас от всякой хуйни...

Copy link

@Surani1 Surani1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Прототипы посмотрел, вопрос только в реализации заменяемых слов. Они выполнены как я понял в виде листа и не особо хорошо читаются. У акцентов более гибкая структура прототипа, которую можно легко адаптировать. Обсудить с кирусом и сталеном.

Resources/Locale/ru-RU/ss220/language/language-desc.ftl Outdated Show resolved Hide resolved
Resources/Locale/ru-RU/ss220/verbs/verb-system.ftl Outdated Show resolved Hide resolved
Copy link

@Ady4ik Ady4ik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А ХУ ЕТЬ

// If the original message is already there earlier encrypted,
// it is taken from the cache, it is necessary for the correct display when sending in the radio,
// when the character whispers and transmits a message to the radio
if (ScrambleCache.TryGetValue(cacheKey, out var cachedValue))

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хранить каждую фразу - плохая идея. Стоит посмотреть в сторону инъективного шифрования.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Хранить каждую фразу - плохая идея. Стоит посмотреть в сторону инъективного шифрования.

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

if (!TryComp<LanguageComponent>(ent, out var comp) && _proto.TryIndex<LanguagesPrototype>("Universal", out _))
return true;

if (comp != null && comp.CurrentLanguage == "Universal")

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

у тебя же текущий язык содержится в листе LearnedLanguages

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

у тебя же текущий язык содержится в листе LearnedLanguages

но ведь при инициализации энтити с компонентом LanguageComponent и пустым листом LearnedLanguage универсальный язык присваивается в CurrentLanguage. Либо если добавить компонент LanguageComponent энтити у которого ранее этого компонента не было, то так же универсальный язык присваивается в CurrentLanguage, разве эта проверка тогда не нужна?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

но ведь при инициализации энтити с компонентом LanguageComponent и пустым листом LearnedLanguage универсальный язык присваивается в CurrentLanguage. Либо если добавить компонент LanguageComponent энтити у которого ранее этого компонента не было, то так же универсальный язык присваивается в CurrentLanguage, разве эта проверка тогда не нужна?

Почему бы в Learned не добавлять его тогда?

Copy link
Author

@Jopaglazik Jopaglazik Nov 14, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

но ведь при инициализации энтити с компонентом LanguageComponent и пустым листом LearnedLanguage универсальный язык присваивается в CurrentLanguage. Либо если добавить компонент LanguageComponent энтити у которого ранее этого компонента не было, то так же универсальный язык присваивается в CurrentLanguage, разве эта проверка тогда не нужна?

Почему бы в Learned не добавлять его тогда?

Чтобы лишний раз его не удалять из списка Learned админ командами, а просто в ВВ поменять Current на любой другой?

@Alwayswannahunt
Copy link

@Jopaglazik Стоило бы дойти до разработчиков и описать что хочешь делать. Пока концептуально есть проблема: я не могу написать следующим образом: ":ы ГСБ, этот :щ тупица :9 вокс, уже достал всех, выпишите ордер на него :щ иначе я разберусь с ним сам"
:щ - ключ языка Синта'Унати, :9 - ключ общегалактического

Content.Shared/SS220/Language/LanguageVerbs.cs Outdated Show resolved Hide resolved
Content.Shared/SS220/Language/SharedLanguageSystem.cs Outdated Show resolved Hide resolved
Content.Shared/SS220/Language/SharedLanguageSystem.cs Outdated Show resolved Hide resolved
Content.Server/SS220/Language/LanguageSystem.cs Outdated Show resolved Hide resolved
Content.Server/Chat/Systems/ChatSystem.cs Outdated Show resolved Hide resolved
Content.Server/Chat/Systems/ChatSystem.cs Show resolved Hide resolved
Content.Server/Chat/Systems/ChatSystem.cs Outdated Show resolved Hide resolved
Content.Server/Administration/Commands/LanguageCommands.cs Outdated Show resolved Hide resolved
@Kirus59 Kirus59 self-assigned this Nov 12, 2024
@Kirus59
Copy link
Collaborator

Kirus59 commented Nov 12, 2024

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

@Ady4ik
Copy link

Ady4ik commented Nov 12, 2024

@Jopaglazik подумай еще над реализацией тир-1 СБ технологии на возможность перевода языков других рас в нормальное состояние, если заключенный отказывается говорить на общегалактическом, к примеру.

@Jopaglazik
Copy link
Author

@Jopaglazik подумай еще над реализацией тир-1 СБ технологии на возможность перевода языков других рас в нормальное состояние, если заключенный отказывается говорить на общегалактическом, к примеру.

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

@Jopaglazik Jopaglazik requested a review from Kirus59 November 14, 2024 01:35
@Jopaglazik
Copy link
Author

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

Насчёт шифрования части сообщения соглы надо подумать, но такое осилить разве что в будущем получится, лично я щас пока не вытяну, а касаемо лорных слов в зашифрованном сообщении - какой смысл? Носители языка будут видеть оригинальное сообщение, а не зашифрованное. Не носители будут видеть неразборчивый бред, зачем тогда не носителю в этом бреду искать контекст из "лорных" слов? Тем более это скорее часть акцентов, а не языка, как у дворфов например

@Ady4ik
Copy link

Ady4ik commented Nov 28, 2024

@Jopaglazik приветствую, как успехи?

@Jopaglazik
Copy link
Author

@Jopaglazik приветствую, как успехи?

v draft poka zakinu

@Jopaglazik Jopaglazik marked this pull request as draft November 28, 2024 19:51
Copy link

This pull request has conflicts, please resolve those before we can evaluate the pull request.

@github-actions github-actions bot added the Merge Conflict Some content has conflicts. label Dec 25, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Changes: C# Изменение затронуло файлы ".cs" Changes: Localization Изменение затронуло файлы ".ftl" Changes: Prototypes Изменение затронуло файлы ".yml" кроме неймспейса "maps" Merge Conflict Some content has conflicts. Status: Needs Review
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants