This bundle is the main repository for building the Planet Blupi game. If
you are an official distribution packager, maybe you can directly use the
https://github.com/blupi-games/planetblupi.git
repository instead of this
one but it's not the recommended way and in the case of a distribution,
it needs some improvements in the CMakeLists.txt
file (based on CMake).
The game is built with static linking as much as possible. The goal is to
limit the linking of dynamic libraries which are not available natively on
the host operating system of most users. There is only one exception on Windows
about the use of the dynamic libwinpthread-1.dll
library. Most dependencies
are built via the CMakeLists.txt
file provided here (linpng, FFmpeg, SDL2,
and more with the appropriate flags). For example, FFmpeg is built only with
the necessary codecs.
For Linux, the release is packaged in an AppImage. The user can download
the image and adds the executable flag. Then the game is ready to play (no root
needed, no dependencies to install). In the case of Darwin, it's mostly like
Linux but with a .app
in a DMG
image. Just open the DMG
and the game can
be played immediatly (the user can copy the game in the /Applications
directory if he wants). Only Windows is a bit different. Even if the game is
standalone, the installation is provided via an NSIS installer.
Note that the
DMG
bundling and the NSIS building is directly provided by CMake. In the case of AppImage, it's handled by CMake too but via a custom.cmake
file available in theplanetblupi/cmake
directory.
git clone --recursive https://github.com/blupi-games/planetblupi-dev.git
cd planetblupi-dev
The source-code is written in C++, only GCC and Clang are officially
supported. The clone must be recursive
because the development use git
submodules.
- source-code:
planetblupi/
- source-assets:
planetblupi-data/
- website:
planetblupi-www/
(see http://www.blupi.org)
You need the usual development packages for C++ (GCC) with pkg-config and CMake.
You need the development commandline tools provided by Apple via Xcode (Clang), pkg-config and CMake. It should be possible to use GCC via Homebrew or MacPorts.
Windows with MSYS2
In the case of Windows, it's not recommended to use MSVC because you will have some difficulties to have all dependencies. The best way is using MSYS2 with it's great package manager (pacman).
# Update your toolchain
pacman -Syuu
# Install main development packages
pacman -S --noconfirm --needed make pkg-config mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake
# Install NSIS64 for Release packaging
pacman -S mingw-w64-x86_64-nsis
On Linux and Darwin, create a Debug
or Release
directory.
# For debugging
mkdir Debug
cd Debug
cmake -DCMAKE_BUILD_TYPE=Debug ..
make -j
# For releasing
mkdir Release
cd Release
cmake -DCMAKE_BUILD_TYPE=Release ..
make -j
In the case of Windows with MSYS2, it's a bit different because you need to
specify the right generator (MSYS Makefiles
).
# For debugging
mkdir Debug
cd Debug
cmake -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Debug ..
make -j
# For releasing
mkdir Release
cd Release
cmake -G"MSYS Makefiles" -DCMAKE_BUILD_TYPE=Release ..
make -j
If you have built a release, you will find the output in the appropriate directory according to the platform.
- Linux: look at
Release/linux-appimage/planetblupi.AppImage
- Darwin: look at
Release/src/planetblupi_Project/planetblupi-X.Y.Z.dmg
- Windows: look at
Release/src/planetblupi_Project/planetblupi-X.Y.Z.exe
Planet Blupi and all resource files are licensed to the GPLv3+ license.
Project | License | Description |
---|---|---|
argagg | MIT | simple C++11 command line arg ument parser |
FFmpeg | LGPLv2.1 | complete, cross-platform solution to record, convert and stream audio and video |
GNU/gettext | GPLv3 | an i18n and l10n system commonly used for writing multilingual programs |
libasound | LGPLv2.1 | provides audio and MIDI functionality to the Linux operating system |
libcurl | MIT/X derivate | a free and easy-to-use client-side URL transfer library |
GNU/libiconv | GPLv3 | a standardized API used to convert between different character encodings |
libpng | own license | the official PNG reference library |
libpulse | LGPLv2.1 | API for the PulseAudio network-capable sound server program |
SDL_kitchensink | MIT | Simple SDL2 / FFmpeg library for audio/video playback written in C99 |
SDL2 | zlib license | a cross-platform software library designed to provide a HAL to computer multimedia hardware |
SDL2_image | zlib license | an image loading library that is used with the SDL library |
SDL2_mixer | zlib license | a sound mixing library that is used with the SDL library |
zlib | own license | a Massively Spiffy Yet Delicately Unobtrusive Compression Library |