У каждого своя команда
Теперь можно создать аккаунт, собрать персонажей и зайти с ними в комнату. Раньше все были одним и тем же Магом и одним и тем же Воином. Теперь каждый игрок выбирает класс, тело, волосы, цвет волос, тон кожи и рост, объединяет двух персонажей в команду и ведёт эту команду в бой.
Зачем
Смена персонажа — центр игры, и она становится личной, только когда оба персонажа твои. Ещё нам нужны были аккаунты до всего, что зависит от прогресса: инвентаря, уровней, сундуков.
Как это работает
Вход по e-mail или username и паролю. Username уникален, и именно его видят другие, а e-mail никогда не покидает сервер. Пароль не хранится: сервер хранит его производную (PBKDF2 с 200 тысячами раундов и отдельной солью для каждого аккаунта), которая считается в отдельном потоке, чтобы комната не подвисала, когда кто-то заходит. Соединение шифруется, пока что сертификатом, сгенерированным самим сервером. Перед открытием наружу появится настоящий сертификат. Шесть попыток входа в минуту, потом ждать.
У каждого аккаунта до шести персонажей и трёх команд. Один и тот же персонаж может быть больше чем в одной команде, а имена персонажей могут повторяться.
Поля пола нет. Есть два тела, двенадцать причёсок, восемь цветов, пять тонов кожи и три роста. Цвет считает шейдер, так что каждая новая комбинация не требует нового арта.
Каждый персонаж рождается на уровне 1, с единицей в каждом атрибуте и одним скиллом. Поскольку повышать уровень пока нельзя, в тестовой комнате он получает прототипный набор (уровень 5 и тестовые скиллы класса). В аккаунте сохраняется настоящий персонаж.
Автоматический тест теперь проходит весь путь: пытается войти без аккаунта и получает отказ, создаёт аккаунт, создаёт двух персонажей, собирает команду, заходит в комнату с другим ботом и проверяет, что они видят друг друга. Проверяет и то, что ни один пароль не оказался на диске.
На телефоне
До сих пор телефон умел только ходить, потому что панель скиллов была просто рисунком. Теперь каждый скилл — кнопка касания, а рядом есть кнопка смены. Касание земли по-прежнему означает движение, а касание панели никогда не превращается в движение.
Следующий шаг
Город: место, где все видят друг друга, с чатом, до входа в комнату.
Изменения
- feat(auth): accounts, character creation and teams
Server-side AccountStore (one JSON per account, email/username index, atomic writes) with PBKDF2-HMAC-SHA256 (200k iterations, per-account salt) computed on WorkerThreadPool; DTLS on the ENet connection with a self-signed dev certificate; login rate limit; one session per account. Characters start at level 1 with one skill and validated appearance (2 bodies, 12 hair styles, 8 hair colors, 5 skin tones, 3 heights); teams pair two characters; rooms use a prototype kit until progression exists. Client gets login/register, home, character creator with live preview and team builder. Room state only goes to peers in the room. End-to-end network test covers the whole flow.
- feat(client): tappable skill bar and swap button for mobile
Taps on the action bar fire the skill or swap instead of walking. tools/tap_test.tscn simulates touches to check it.