Задача игры - уничтожить Принцессой Луной все кексы на карте до того, как принцесса Селестия сьест их в критичном для себя количестве. Принцесса Луна может перемещаться влево-вправо по платформам, телепортироваться между платформами, стрелять роголазером по уровню платформы, призывать куриц и устанавливать щиты на кексы.
data
- каталог контента игры (графика, звуки, тексты)graphics
- иконки игры для дистрибутива и AppImageLunaDenyCakesGame
- исходный код игры в виде проектов для Visual Studio и dotnet. Включает зависимость SFML.Netsetup
- скрипты сборки игры, а также создания дистрибутивов/архивов для Windows, и AppImage для Linux
Для сборки проекта нужен установленный NetCoreSDK 3.1 (в теории, должно работать с любой версией NET)
Создание дистрибутива для Windows выполняется с помощью программы NSIS
Создание архива для Windows выполняется с помощью скриптовой утилиты построения архивов SmartZipBuilder
Для создания AppImage под Linux необходим инструмент сборки AppImageKit - appimagetool-x86_64.AppImage
После получения файлов репозитория, нужно обновить субмодуль библиотеки NetSfmlLib
,
выполнив в каталоге проекта команды
git submodule init
git submodule update
Проект может быть как открыт для компиляции в Visual Studio, так и собран командой dotnet
из каталога, где находится файл LunaDenyCakesGame.csproj
(т.е. LunaDenyCakesGame/LunaDenyCakesGame
относительно корня проекта):
dotnet build -c Release
Если возникает ошибка типа error NU1101: Unable to find package Microsoft.NETCore.App...
,
то нужно поменять версию рантайма в файле LunaDenyCakesGame.csproj
.
Для этого сначала командой dotnet --list-runtimes
нужно посмотреть текущую версию
Microsoft.NETCore.App
, а потом вписать её между тегами <RuntimeFrameworkVersion>
и
</RuntimeFrameworkVersion>
, и соответствующую версию фреймворка (можно посмотреть
здесь по соответствию
с имеющейся версией dotnet) - между тегами <TargetFramework>
и </TargetFramework>
вместо стоящих там по умолчанию, например, так:
<TargetFramework>net6.0</TargetFramework>
<RuntimeFrameworkVersion>6.0.10</RuntimeFrameworkVersion>
После сборки в подкаталоге bin/Release/
появится каталог со всеми необходимыми бинарными
файлами (название каталога будет идентично тому, что указано как TargetFramework
в файле
LunaDenyCakesGame.csproj
, по умолчанию netcoreapp3.1
), включая в том числе файл
LunaDenyCakesGame.exe
. Также нужно в этот каталог скопировать все файлы и подкаталоги
из каталога data
(именно содержимое каталога data
, а не сам этот каталог!),
после чего для старта игры нужно запустить LunaDenyCakesGame.exe
.
Если возникает ошибка You must install .NET to run this application.
, возможно,
следует указать путь к dotnet с помощью переменной окружения DOTNET_ROOT
, например, так:
DISPLAY=:0 DOTNET_ROOT=/opt/mcst/dotnet/dotnet/ ./LunaDenyCakesGame
Если игра при запуске выпадает с segmentation fault, то возможно, дело в том, что
на выбранном дисплее не поддерживается OpenGL. Если запущенная на данном дисплее
команда glxinfo
говорит что-то вроде Error: couldn't find RGB GLX visual or fbconfig
,
то это как раз такой случай.
Если возникает ошибка Unable to load shared library 'csfml-graphics'
, то необходимо
собрать и поставить CSFML. Это означает, что для
конкретного типа и версии операционной системы, SFML.Net не содержит встроенных сборок CSFML,
но всё ещё можно заставить его работать на библиотеках csfml, самостоятельно установленных в системе.
ВАЖНО: при создании дистрибутивов, информация о версии, ветке и коммите берется из репозитория git, поэтому все описанные ниже команды будут работать корректно только при вызове из каталога-репозитория git и при наличии установленного git.
Создание архива и дистрибутива для Windows выполняется автоматически при
запуске файла build64.bat
из каталога setup/windows
(может потребоваться указать путь к компилятору NSIS).
Для создания AppImage под Linux есть два способа:
Сначала нужно выполнить под Windows файл build64.bat
из каталога setup/linux
, после чего скопировать весь каталог репозитория от самого корня
(включая каталог вывода сборки build-LunaDenyCakesGame
) на 64-битную
систему Linux и выполнить в setup/linux
скрипт make_appimage64.sh
- в каталоге /tmp
появятся готовые образы AppImage для 64-битной версии Linux.
При наличии установленного компилятора и SDK для NET на Linux можно обойтись без
компиляции проекта на Windows. Сначала выполняем скрипт build64.sh
в каталоге setup/linux
, потом выполняем скрипт make_appimage64.sh
в том же каталоге. Аналогично предыдущему варианту, в каталоге /tmp
появятся готовые образы AppImage для 64-битной версии Linux.