parin

A lightweight and beginner-friendly 2D game engine for the D programming language.


Keywords
library, gamedev
License
MIT
Install
dub fetch parin --version 0.0.30

Documentation

Parin

Parin is a lightweight and beginner-friendly 2D game engine for the D programming language. It focuses on providing a simple foundation for building 2D games.

import parin;

void ready() {
    lockResolution(320, 180);
}

bool update(float dt) {
    drawDebugText("Hello world!", Vec2(8));
    return false;
}

void finish() { }

mixin runGame!(ready, update, finish);

Warning

This is alpha software. Use it only if you are very cool.

Supported Platforms

  • PC: Windows, Linux, macOS
  • Web

Games Made With Parin

Installation

This guide shows how to install Parin and its dependencies using DUB. While DUB simplifies the process, Parin itself doesn't require DUB.

Parin has the following dependencies:

  • Joka: A simple nogc utility library.
  • raylib: A simple graphics library.

Installation Steps

Create a new folder and run inside the following commands:

dub init -n
dub run parin:setup

The final line modifies the default app.d and dub.json files, downloads raylib, and creates the necessary folders for Parin to function properly. The following folders will be created:

  • assets: This folder is used to store game assets.
  • web: This folder is used for exporting to the web.

Once the installation is complete, run the following command:

dub run

If everything is set up correctly, a window will appear showing the message "Hello world!".

Required Libraries on Linux

Some libraries for sound, graphics, and input handling are required before using Parin on Linux. Below are installation commands for some Linux distributions.

Ubuntu:

sudo apt install libasound2-dev libx11-dev libxrandr-dev libxi-dev libgl1-mesa-dev libglu1-mesa-dev libxcursor-dev libxinerama-dev libwayland-dev libxkbcommon-dev

Fedora:

sudo dnf install alsa-lib-devel mesa-libGL-devel libX11-devel libXrandr-devel libXi-devel libXcursor-devel libXinerama-devel libatomic

Arch:

sudo pacman -S alsa-lib mesa libx11 libxrandr libxi libxcursor libxinerama

Documentation

For an initial understanding, the examples folder can be a good starting point. For a more detailed overview, check the TOUR.md file.

Attributes and BetterC Support

This project offers support for the @safe attribute and aims for good compatibility with BetterC. If you encounter errors with BetterC, try using the -i flag.

Web Support

To export a game to the web, the game must be compatible with BetterC. The web folder contains a helper script to assist with the web export process.

It can be used with DUB by running the following command:

dub run parin:web

Alternative Game Development Libraries

While Parin provides a good game development experience in D, it might not fit everyone's needs. Here are some other notable alternatives to consider:

Note

I add things to Parin when I need them.

License

The project is released under the terms of the MIT License. Please refer to the LICENSE file.