Прокрастинатор приветствует!
Это первая статья из цикла по разработке мультиплатформенной игры на языке программирования C# с использованием библиотеки OpenTK, которая предоставляет простой доступ к OpenGL. Так же библиотека берет на себя работу с окнами приложения и, таким образом, упрощает нам жизнь при разработке не только под windows, но и linux и mac системы.
В дополнение к OpenTK мы будем использовать библиотеки Assimp.Net (порт библиотеки Assimp для С++) для загрузки трехмерных моделей, BEPUphysics для реализации физики и SixLabors для работы с двумерной графикой.
Для начала этого набора нам вполне хватит. Все библиотеки устанавливаются с помощью NuGet и, чуть позже, мы этого коснемся.
В качестве текстового редактора я буду использовать Visual Studio Code так как он доступен на всех целевых платформах, бесплатен и его функционала вполне достаточно.
Перед тем, как мы начнем, нужно установить SDK для работы с .Net Core. Сделать это можно по это ссылке:
Если вы, как и я, используете линукс, то быстрее и надежнее будет установить SDK через ваш пакетный менеджер, но убедитесь в том, что вы устанавливаете именно 3.1 версию.
Со вступлением покончено, можно приступать к самому интересному.
Что бы создать проект нужно проделать несколько простых действий.
Для начала, создадим папку, в которой будут храниться все файлы будущей игры.
Далее нужно выполнить команду, которая создаст каркас консольного приложения для нас.
dotnet new console
Если вы корректно установили .Net Core, то через несколько секунд программа сообщит вам, что файлы успешно созданы и можно переходить к следующему шагу.
Запускаем VS Code и открываем недавно созданную папку.
Скорее всего, IDE сама предложит установить все необходимое для комфортной работы, но если этого не произошло, то вам нужно вот это:
Следующая наша задача - установка библиотек из NuGet
Делается это довольно просто.
Переходим на сайт
Для упрощения вам жизни я просто опубликую команды, которые нужно ввести в консоли(которую можно вызвать прямо в VS Code):
dotnet add package OpenTK --version 4.6.7
dotnet add package BepuPhysics --version 2.3.0
dotnet add package AssimpNet --version 5.0.0-beta1
dotnet add package SixLabors.Fonts --version 1.0.0-beta15
dotnet add package SixLabors.ImageSharp --version 1.0.3
dotnet add package SixLabors.ImageSharp.Drawing --version 1.0.0-beta13
Версии библиотек актуальны на момент написания статьи. В будущем, когда мы будем обновлять библиотеки, на этом будет акцентировано дополнительное внимание
Хорошо. Еще одна настройка перед тем как мы начнем писать код, для того, что бы папка с ресурсами (assets) со всем ее содержимым копировалась при компиляции в папку с исполняемым файлом.
Откройте файл с расширением .csproj и вы найдете там тег ItemGroup. В него нужно добавить код, выделенный отступами.
<ItemGroup> <Content Include="assets\**\*.*"> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </Content> <PackageReference Include="AssimpNet" Version="5.0.0-beta1" /> <PackageReference Include="BepuPhysics" Version="2.3.0" /> <PackageReference Include="SixLabors.Fonts" Version="1.0.0-beta15" /> <PackageReference Include="SixLabors.ImageSharp" Version="1.0.3" /> <PackageReference Include="SixLabors.ImageSharp.Drawing" Version="1.0.0-beta13" /> </ItemGroup> |
Спасибо за внимание