DigLik.Ignis 0.0.3

dotnet add package DigLik.Ignis --version 0.0.3
                    
NuGet\Install-Package DigLik.Ignis -Version 0.0.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="DigLik.Ignis" Version="0.0.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DigLik.Ignis" Version="0.0.3" />
                    
Directory.Packages.props
<PackageReference Include="DigLik.Ignis" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add DigLik.Ignis --version 0.0.3
                    
#r "nuget: DigLik.Ignis, 0.0.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package DigLik.Ignis@0.0.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=DigLik.Ignis&version=0.0.3
                    
Install as a Cake Addin
#tool nuget:?package=DigLik.Ignis&version=0.0.3
                    
Install as a Cake Tool

Ignis

Ignis — это легковесный, высокопроизводительный фреймворк для создания 2D-приложений и игр на C# / .NET 10. Фреймворк предоставляет удобные абстракции для работы с системными окнами, обработки ввода и быстрого рендеринга 2D-графики на базе Vulkan API.

В данный момент фреймворк поддерживает работу на платформе Windows (Win32).


Ключевые возможности

  • Нативные Окна: Управление окнами ОС, поддержка полноэкранного режима, кастомизация курсора (свободный, захваченный, заблокированный).
  • Современный Ввод (Raw Input): Высокоточный и быстрый опрос состояний клавиатуры и мыши через системный Raw Input без задержек.
  • Пакетный Рендеринг на Vulkan: 2D-рендерер, автоматически объединяющий фигуры (круги, эллипсы, прямоугольники, линии, многоугольники) и текст в пакеты для минимизации вызовов отрисовки (draw calls) и достижения максимального FPS.
  • Встроенный Шрифт: Быстрый рендеринг текста с автоматическим измерением размеров строк в мировых координатах.

Подробная документация по компонентам

Для детального изучения каждого модуля Ignis перейдите по соответствующим ссылкам:

  1. Управление окнами (Window.md) — жизненный цикл окна, полноэкранный режим, размеры и режимы курсора.
  2. Устройство клавиатуры (Keyboard.md) — события клавиш, опрос состояний и перечисление кнопок.
  3. Устройство мыши (Mouse.md) — позиция курсора, события кликов, прокрутка колесика и трансформация координат в игровой мир.
  4. Система рендеринга (Renderer.md) — VSync, ограничение FPS, камера, фазы кадра, рисование плоских геометрических фигур и текста.

Быстрый старт

Простейший пример игрового приложения с использованием Ignis:

using System.Numerics;
using Ignis.Core.Graphics;
using Ignis.Core.Numerics;
using Ignis.Platform.Graphics;
using Ignis.Platform.Input;
using Ignis.Platform.Windowing;

// 1. Создаем окно приложения
using var window = new Window 
{ 
    Title = "Ignis Quick Start", 
    Size = new Vector2Int(1280, 720) 
};

// 2. Инициализируем устройства ввода
using var keyboard = new Keyboard(window);
using var mouse = new Mouse(window);

// 3. Создаем рендерер с вертикальной синхронизацией
using var renderer = new Renderer(window) { VSync = VSyncMode.On };

// Позиция нашего игрока
Vector2 playerPosition = Vector2.Zero;

// 4. Подписываемся на фазу рендеринга кадра
renderer.RenderRequested += () =>
{
    // Очищаем кадр
    renderer.ClearBackground(new Color(0.15f, 0.15f, 0.15f));

    // Настраиваем камеру (область видимости 20x11.25 игровых единиц)
    renderer.UpdateCamera(Vector2.Zero, new Vector2(20f, 11.25f));

    // Обрабатываем перемещение игрока на основе дельты времени кадра
    float speed = 5f;
    if (keyboard.IsKeyDown(Key.W) || keyboard.IsKeyDown(Key.Up)) playerPosition.Y += speed * renderer.DeltaTime;
    if (keyboard.IsKeyDown(Key.S) || keyboard.IsKeyDown(Key.Down)) playerPosition.Y -= speed * renderer.DeltaTime;
    if (keyboard.IsKeyDown(Key.A) || keyboard.IsKeyDown(Key.Left)) playerPosition.X -= speed * renderer.DeltaTime;
    if (keyboard.IsKeyDown(Key.D) || keyboard.IsKeyDown(Key.Right)) playerPosition.X += speed * renderer.DeltaTime;

    // Закрываем окно по кнопке Escape
    if (keyboard.IsKeyPressed(Key.Escape)) window.Close();

    // Рисуем сетку
    renderer.DrawLine(new Vector2(-10, 0), new Vector2(10, 0), 0.02f, Color.Red);
    renderer.DrawLine(new Vector2(0, -6), new Vector2(0, 6), 0.02f, Color.Green);

    // Рисуем игрока (желтый круг)
    renderer.DrawCircle(playerPosition, 0.5f, Color.Yellow);

    // Рисуем координаты под игроком
    string text = $"Pos: {playerPosition.X:F2}, {playerPosition.Y:F2}";
    float textWidth = Renderer.MeasureText(text, 0.4f);
    renderer.DrawText(text, new Vector2(playerPosition.X - textWidth / 2f, playerPosition.Y - 0.7f), 0.4f, Color.White);
};

// 5. Запускаем цикл обработки сообщений окна
window.WaitClose();

Сборка и создание NuGet-пакета

Для сборки проекта и упаковки его в NuGet-пакет воспользуйтесь стандартными инструментами .NET SDK.

Шаг 1: Компиляция шейдеров и сборка библиотеки

Сборка всего решения в конфигурации Release:

dotnet build Ignis.slnx -c Release

Шаг 2: Упаковка библиотеки

Создание NuGet-пакета .nupkg на базе проекта Ignis.Platform:

dotnet pack Ignis.Platform/Ignis.Platform.csproj -c Release

Сгенерированный пакет будет находиться по пути Ignis.Platform/bin/Release/DigLik.Ignis.<Version>.nupkg и будет содержать:

  • Сборки библиотеки (Ignis.Platform.dll, Ignis.Core.dll, а также биндинги Vulkan.dll и Windows.dll).
  • Скомпилированные файлы XML-документации API (Ignis.Platform.xml и Ignis.Core.xml).
  • Описание и файл README.md.

Лицензия

Проект распространяется под лицензией Mozilla Public License 2.0 (MPL-2.0). Подробнее см. в файле LICENSE.txt.

Product Compatible and additional computed target framework versions.
.NET net10.0-windows7.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net10.0-windows7.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.0.3 118 6/26/2026
0.0.2 119 6/26/2026
0.0.1 114 6/26/2026