ParinはDプログラミング言語向けに開発された2Dゲームエンジンであり、ライブラリのミニマリズムと大規模なエンジンの包括的な機能のバランスを取るように設計されています。開発者のKapendevは、このツールをraylibのような小さなライブラリよりも多くの構造的な方向性を提供しつつ、Godotのような重厚なエンジンよりも大幅にオーバーヘッドを抑えた位置付けとして提示しました。このエンジンはポータブルなユーティリティライブラリであるJokaの上に構築されており、エンジンが強制するアーキテクチャよりもコード優先のアプローチを好む開発者にとって、「心地よくシンプル」で簡単にハック可能なものになることを意図しています。

Parinプロジェクトを象徴する、スタイライズされた2Dゲームエンジンのロゴまたはグラフィック。
Parinエンジンは、D言語による2Dゲーム開発のためのコード駆動型フレームワークを提供します。github.com

この画像は、低レベルなライブラリとフルスケールのエンジンの中間的な位置付けであるParinエンジンを表しています。

このエンジンの設計哲学は、コード駆動型の設計、柔軟な抽象化、そしてモジュール性の3つの核心的な柱を中心に構成されています。ユーザーに特定のシーンやエンティティシステムを強制する多くのエンジンとは異なり、Parinはゲームプレイのコードを開発者が望むように構造化することを可能にします。また、柔軟なメモリ管理を提供しており、利便性のためのガベージコレクションを提供しつつ、開発者が手動管理を選択したり、あるいはそれを完全に回避したりすることも可能です。開発を簡素化するために、Parinにはアニメーションヘルパー、タイマー、パスファインディング、ピクセルパーフェクトな物理エンジンなどの「バッテリー同梱(最初から揃っている)」機能が含まれており、さらに柔軟なダイアログシステムやアトラスベースのアニメーションライブラリも備えています。

Parinは2Dゲームのための堅牢な基盤を提供しますが、特定の技術的な境界と要件があります。現在はWeb(WebAssembly経由)、Windows、Linux、macOSをサポートしていますが、組み込みのスクリプティング言語は含まれていません。スクリプティングを求める開発者は、WrenやLuaなどの外部プロジェクトを統合する必要があります。さらに、マルチプレイヤーやSteam統合をサポートするためにSteamworksおよびENetのバインディングが含まれていますが、バイナリ自体は含まれておらず、別途リンクする必要があります。Webビルドの場合、エンジンを動作させるにはLDCコンパイラとEmscriptenが必要です。また、このプロジェクトは標準ではホットリロードをサポートしていませんが、これはコアエンジンを軽量に保ち、主要なメカニズムに集中させるために開発者が意図的に選択したものです。