blupi-games / planetblupi-dev

Planet Blupi development bundle (main repository)
https://www.blupi.org
GNU General Public License v3.0
51 stars 9 forks source link
blupi eggbert epsitec game planet-blupi

Planet Blupi development bundle

blupi

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 (libpng, 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 the planetblupi/cmake directory.

Linux packages

If you prefer and if it's available, you can try to install the game via your distribution package manager instead of downloading the AppImage. If the latest version is not available for you, the AppImage is the primary choice.

Packaging status

Prepare environment for building

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.

Linux

You need the usual development packages for C++ (GCC) with pkg-config and CMake.

Darwin

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

How to build

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

Packaging

If you have built a release, you will find the output in the appropriate directory according to the platform.

Licenses

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
libogg own license a free, open container format maintained by the Xiph.Org Foundation
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
libsndfile LGPLv3 a C library for reading and writing files containing sampled sound
libvorbis own license a free and open-source software project headed by the Xiph.Org Foundation
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
SDL2_ttf zlib license support for TrueType (.ttf) font files with the SDL library
zlib own license a Massively Spiffy Yet Delicately Unobtrusive Compression Library