🎭 Dialogue Manager для Godot — интересный аддон для Godot 4.4+, который упрощает работу с диалогами в играх. Он позволяет писать ветвящиеся диалоги в сценарном стиле без сохранения состояния.
Проект предлагает удобный редактор диалогов и систему их интеграции в игру. Есть поддержка условий, мутаций, портретов персонажей и даже перевода текстов. Установка доступна через Godot Asset Library или напрямую с GitHub.
В документации можно найти примеры использования для разных жанров, от визуальных новелл до RPG с репликами в speech bubbles. Автор также делится видео-гайдами по настройке диалоговых сцен.
🤖 GitHub
@csharp_ci
Проект предлагает удобный редактор диалогов и систему их интеграции в игру. Есть поддержка условий, мутаций, портретов персонажей и даже перевода текстов. Установка доступна через Godot Asset Library или напрямую с GitHub.
В документации можно найти примеры использования для разных жанров, от визуальных новелл до RPG с репликами в speech bubbles. Автор также делится видео-гайдами по настройке диалоговых сцен.
🤖 GitHub
@csharp_ci
💻 Хотите создавать мощные web-приложения с использованием C# ASP.NET Core?
Присоединяйтесь к курсу «C# ASP.NET Core разработчик» от OTUS и получите все необходимые навыки для успешной разработки! На курсе вы:
— Научитесь разрабатывать высоконагруженные API на GraphQL, gRPC и SignalR Core.
— Освоите JavaScript, ReactJS и интеграцию с ASP.NET Core.
— Примените Docker и Kubernetes и получите навыки работы с микросервисной архитектурой.
🔥 Программа курса обновляется с учетом актуальных требований рынка, а диплом OTUS ценится в ведущих IT-компаниях.
❗️Старт обучения совсем скоро! Пройдите короткое вступительное тестирование и получите скидку и запись трех топовых вебинара: https://otus.pw/l6bf/?erid=2W5zFJmfS1n
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
Присоединяйтесь к курсу «C# ASP.NET Core разработчик» от OTUS и получите все необходимые навыки для успешной разработки! На курсе вы:
— Научитесь разрабатывать высоконагруженные API на GraphQL, gRPC и SignalR Core.
— Освоите JavaScript, ReactJS и интеграцию с ASP.NET Core.
— Примените Docker и Kubernetes и получите навыки работы с микросервисной архитектурой.
🔥 Программа курса обновляется с учетом актуальных требований рынка, а диплом OTUS ценится в ведущих IT-компаниях.
❗️Старт обучения совсем скоро! Пройдите короткое вступительное тестирование и получите скидку и запись трех топовых вебинара: https://otus.pw/l6bf/?erid=2W5zFJmfS1n
Реклама. ООО "ОТУС ОНЛАЙН-ОБРАЗОВАНИЕ". ИНН 9705100963.
🚀 Изучаешь ASP.NET Core?
Репозиторий — это 400+ готовых примеров, от Minimal API до Blazor и SignalR.
Все версии .NET Core — от 2.1 до 10 Preview.
Запуск одним
⭐ 10k+ звёзд на GitHub, must-have для практики!
https://github.com/dodyg/practical-aspnetcore
Репозиторий — это 400+ готовых примеров, от Minimal API до Blazor и SignalR.
Все версии .NET Core — от 2.1 до 10 Preview.
Запуск одним
dotnet watch run
. ⭐ 10k+ звёзд на GitHub, must-have для практики!
https://github.com/dodyg/practical-aspnetcore
🔐 Refresh Tokens в .NET: зачем они нужны?
Access tokens имеют ограниченный срок жизни и не подходят для долгосрочной авторизации. Именно поэтому вместе с ними используются refresh tokens.
💡 Как это работает:
1. Пользователь логинится с email и паролем.
2. Система проверяет учетные данные.
3. Генерируется пара токенов:
- Access Token — действует недолго, используется для запросов к API.
- Refresh Token — живет дольше и позволяет получить новый access token без повторного ввода логина и пароля.
📌 Код-пример на C#:
Access tokens имеют ограниченный срок жизни и не подходят для долгосрочной авторизации. Именно поэтому вместе с ними используются refresh tokens.
💡 Как это работает:
1. Пользователь логинится с email и паролем.
2. Система проверяет учетные данные.
3. Генерируется пара токенов:
- Access Token — действует недолго, используется для запросов к API.
- Refresh Token — живет дольше и позволяет получить новый access token без повторного ввода логина и пароля.
📌 Код-пример на C#:
[HttpPost("login")]
public async Task<IActionResult> Login([FromBody] LoginUserDto loginUserDto)
{
IdentityUser? identityUser = await userManager.FindByEmailAsync(loginUserDto.Email);
if (identityUser == null ||
!await userManager.CheckPasswordAsync(identityUser, loginUserDto.Password))
{
return Unauthorized();
}
User? appUser = await context.Users
.FirstOrDefaultAsync(u => u.Id == Guid.Parse(identityUser.Id));
if (appUser == null)
{
return NotFound();
}
string accessToken = tokenProvider.GenerateAccessToken(appUser);
string refreshToken = tokenProvider.GenerateRefreshToken();
return Ok(new AuthResponseDto(accessToken, refreshToken));
}