Show HN: Parin – raylib と Godot の中間に位置する、D言語で書かれた 2D ゲームエンジン

2026/10/16 22:22

Show HN: Parin – raylib と Godot の中間に位置する、D言語で書かれた 2D ゲームエンジン

RSS: https://news.ycombinator.com/rss

要約▶

Japanese Translation:

Parin は、軽量のフレームワークと Godot のような大規模なシステムの間のギャップを埋めることを目的として作成された D 言語で書かれたコード駆動型の 2D ゲームエンジンです。モジュール化された基礎である Joka を用いて構築され、Box2D を通じてピクセル単位の正確な物理演算、アトラスベースのアニメーション、タイルマップ構造などを含む堅牢なコア機能を提供します。会話システムやアニメーションヘルパーのような必須の追加機能が含まれていますが、UI ライブラリは現在進行形であります。このエンジンは Web、Windows、Linux、macOS におけるクロスプラットフォームデプロイを支持しており、ただし Web ビルドでは特定して LDC と Emscripten 4.0.23 が必要となります。ユーザーは、Parin がネイティブのスクリプト言語を持たず(wren-port や arsd.script のような代替手段を推奨)、また内蔵されたシーンシステムを持たない点に注意すべきであり、代わりに Union タイプを使用してシーンを構築するための例を提供しています。Steamworks 配布や ENet ネットワーキングといった高度な機能については、開発者は特定のコンパイラ依存性を管理し、別途バイナリをビルドまたはダウンロードする必要があることが多いです。インストールは DUB(

dub init -t parin
)による迅速な方法か、スクリプト実行付きの手動クローンを行うことで可能です。このエンジンは現代的なワークフローに適した柔軟な抽象化を維持しつつ、技術的な要件に対する制御も可能としています。

本文

D言語用 2D ゲームエンジン「Parin」のご紹介

Parin とは

使いやすくてシンプルな 2D ゲームエンジンです。

  • 設置が容易:簡単に環境構築が可能です。
  • 自由度が高い:ゲームの性質に合わせて自由に設計できます。
  • 基本機能内蔵:必要な機能がすべて含まれています。

Parin は、

raylib
のような軽量ライブラリと
Godot
のような大規模なエンジンの中間に位置づけられています。

なぜ Parin か?

主な理念は以下の通りです:

  • コード主導の設計:
    • エンジン側から強制されるアーキテクチャはありません。
    • ゲームの性質に合わせてプレイロジックを自由に構造できます。
  • 柔軟な抽象化:
    • 利便性の高いガベージコレクション機能を提供します。
    • 必要に応じて手動管理へ降級するか、完全に回避することも可能です。
  • モジュール的な基盤:
    • Parin の大部分は汎用的なユーティリティライブラリ
      Joka
      で構築されています。
    • Joka
      は単独でも使用可能です。
  • 機能込み:
    • アニメーション補助ツールやタイマーなど、一般的なニーズに対するデフォルト設定が多数用意されています。

基本的なコード例

シンプルなサンプルコードです:

import parin;

// ゲーム実行中、フレームごとに呼び出されます。
bool hello(float dt) {
    lockResolution(320, 180);
    drawText("Helloo!!!", mouse);
    return false;
}

// 指定された関数を呼び出すメイン関数を生成します。
mixin runDemo!hello;

メイン機能

  • ピクセル単位の正確な物理演算エンジン
  • 柔軟なダイアログシステム
  • アトラスベースのアニメーションライブラリ
  • 効率の良いタイルマップ構造
  • シンプルな UI ライブラリ(開発中)
  • Box2D、Steamworks、ENet、microui などの追加機能内蔵
  • Web、Windows、Linux、macOS の対応

インストール方法

クイックスタート (DUB を使用)

新しいフォルダを作成し、以下のコマンドを実行してください。

  1. dub init -t parin
  2. dub run

正常に設定が整っている場合、シンプルなメッセージが表示されるウィンドウが立ち上がります。

利用可能な初期テンプレート:

  • dub init -t parin -- basic
  • dub init -t parin -- entity

DUB 以外でのインストール

新しいフォルダを作成し、以下のコマンドを実行してプロジェクトを準備・実行してください。

1. フォルダの準備:

git clone --depth 1 https://github.com/Kapendev/parin parin_package
./parin_package/scripts/prepare

(Windows:

.\parin_package\scripts\prepare.bat
)

2. プロジェクトの実行:

  • Linux:
    ./parin_package/scripts/run
    または
    ldc2
    ,
    macos
    ,
    opend
    対応のスクリプトを使用。
  • Windows:
    .\parin_package\scripts\run.bat

Linux 環境での利用準備

Parin を Linux で使用するには、事前のライブラリインストールが必要です。

  • 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 Linux
    sudo pacman -S alsa-lib mesa libx11 libxrandr libxi libxcursor libxinerama
    
  • Void Linux
    sudo xbps-install make alsa-lib-devel libglvnd-devel libX11-devel libXrandr-devel libXi-devel libXcursor-devel libXinerama-devel mesa MesaLib-devel
    

ドキュメントと情報

概要を素早く知りたい場合は、サンプルコードのフォルダやショートカットシート(チートシート)から始めてください。詳細については「ツアーページ」をご覧ください。

DDOX ドキュメンテーションエンジンを使用してドキュメントを閲覧する方法:

git clone --depth=1 https://github.com/Kapendev/parin parin_package
cd parin_package
dub run -b ddox

関連リンク (Artikel):

  • 最新記事: 「I Stopped Fighting My Tools(私はツールと戦うのをやめた)」
  • その他: dev.to/kapendev
  • アーカイブ:
    parin/archive

Web ビルド

Parin のパッケージフォルダには、Web 向けのビルドスクリプトが含まれています。

環境要件:

  • LDC
  • Emscripten(バージョン 4.0.23 が推奨)
    • LDC インストール時:
      ldc2-X.Y.Z-addon-emscripten.tar.xz
      をダウンロードして展開してください。

実行方法:

  • DUB を使用:
    dub run parin:web
  • コマンドライン:
    ./parin_package/scripts/web
    # Windows: .\parin_package\scripts\web.bat
    

API の使用方法:

Usage: dub run parin:web -- [flags] [libs]

Flags:
  -help     このヘルプを表示します。
  -betterc  `-betterC' フラグを使用します。
  -release  `-release' フラグを使用します。
  -build    ビルド成功後、emrun を実行しないようにします。

Libs:
  フラグ以外のすべての引数は、追加のライブラリとしてリンクされます。
  例:dub run parin:web -- web/libbox2d.a

itch.io へのアップロード手順:

  1. Web フォルダを開きます。
  2. index.*
    ファイルを選択し、ZIP ファイルに追加します。
  3. itch.io にアクセスして新しいプロジェクトを作成します。
  4. 「プロジェクトの種別」で「HTML」を選択します。
  5. ZIP ファイルをアップロードし、「このファイルはブラウザで再生されます」というオプションを有効にします。

アイデアとコントリビューション

不足している部分をご察知された場合は、Issue をお作りいただくことを歓迎します。GitHub のディスカッションでも情報共有が可能です。

  • ホットリロード以外のアイデア: 基本的に受け付けております。
  • 小さな追加機能: コアには属さない単一ファイルの D ライブラリとして
    addons
    フォルダに置くことも可能です(Pull Request で追加)。

よくある質問 (FAQ)

Parin で制作されたゲームの一覧はあるのでしょうか? はい、以下のタイトルが制作されています:

  • Twenty Seconds, Twenty Steps
  • Worms Within
  • Clean & Haunted
  • Runani
  • A Short Metamorphosis
  • K, Merge With Me

Parin にはシーンまたはエンティティシステムはありますか? いいえ、公式にはありません。ただし、

examples
フォルダに Union タイプを用いた構築方法のサンプルがあります:

  • エンティティシステム
  • ステート(シーン)システム
  • プロジェクトテンプレート

Parin にはスクリプト言語はありますか? いいえ、ありません。以下のプロジェクトが役立つ可能性があります:

  • wren-port: Wren プログラミング言語を D への移植版。
  • arsd.script: D と JavaScript のハイブリッドに基づいた言語。
  • bindbc-lua: Lua の C API に対する静的・動的な D バインディング。

他の利用可能なライブラリはありますか?

  • arsd.ini: INI 設定ファイルサポート
  • newsdlang: SDLang/XDL 設定ファイルサポート
  • dex-cf: CF(設定ファイル)サポート
  • dtiled: Tiled マップファイルを解析する D ライブラリ
  • text-mode: 8x8 Unicode フォントとマークアップ言語を備えた仮想テキストモード
  • Gamut: イメージの符号化および復号化ライブラリ
  • gameserver: オンラインゲーム開発用にシンプルなゲームサーバー

Steam でのリリースやマルチプレイヤーゲームの開発は可能ですか? はい、可能です。

parin.bindings
に Steamworks と ENet のバインディングが含まれています。

  • 統合用のサンプルがあります。
  • バイナリ自体は含まれていないため、別途ダウンロードまたはビルド・リンクする必要があります。

推奨されるツールの組み合わせはどれですか?

  • エディタ: Zed(アセットフォルダ内でのパス補完には Path Server 拡張機能推奨)
  • レベル設計: Tiled
  • アート制作: Pixelorama, GIMP
  • 音源/効果音: Bfxr, Jfxr
  • 音楽: MilkyTracker

アセットフォルダの外からアセットを読み込むことはできますか?

  • デフォルトの動作を無効にする:
    setIsUsingAssetsPath(false)
    を呼び出します。
  • 実行ファイルのフォルダから読み込ませたい場合:
    setAssetsPath("assetsPath.pathDirName")
    を使用します。

アセットやコードのホットリロードはできますか? 標準ではサポートされていません(重要視していないため)。arsd ライブラリを利用すると実現できる可能性があります。

Parin のアセットは無料で利用できますか? はい、可能です。ただし、関連する README でライセンスに関する注意事項を必ずご確認ください。

Parin は raylib のラッパーですか? いいえ、そうではありません。raylib はそのバックエンドの一つです。独自のカスタムバックエンドの開発が進んでいますが、まだ実験段階です(貢献は歓迎)。

HD 向けのゲーム開発に Parin を利用できますか? はい、可能です。

同じ日のほかのニュース

一覧に戻る →

2026/10/17 17:21

DeepSeek-v4.1-Flash-1017

## Japanese Translation: DeepSeek-V4.1-Flash-1017 は、DeepSeek-V4.1-Flash のパフォーマンス向上型の後継モデルであり、推論、コーディング、エージェントタスクおよび画像ベンチマークにおいて顕著な性能向上を実現すると同時に、実行時間と出力長を削減しています。ベンチマーク結果によると、同モデルはオリジナルの V4.1-Flash を大幅に凌駕しており、HLE で 42.6(対 36.8)、Terminal-Bench 4.0 で 42.3(対 31.2)、DeepSWE v1.1 で 77.0(対 74.2)、Apex Bench v1.1 で 72.1(対 64.6)のスコアを記録しています。業界トップクラスの GPT-5.6 Sol や Opus 5 より劣るものの、前世代モデルに対しては確かな位置づけを確立しています。同モデルは、2026 年に発表された高度な KV キャッシュ圧縮技術による効率化を目的として設計されており、MIT ライセンスの下で公開されています。本番環境での統合においては、Rust ベースの `deepseek-recipe` ツールキット(Python バインディング付き)を利用することをお勧めします。この toolkit は、ツール呼び出しや画像生成といった複雑なタスクを処理する際に外部チャットテンプレートを使用する必要がありません。最適なパフォーマンスを発揮するためには、1M トークンの大きなコンテキストウィンドウ、少なくとも 256K トークンの最大出力容量、および サンプリングパラメータとして temperature=1.0 および top_p=1.0 を設定する必要があります。

2026/10/15 16:18

Commodore 64 ハードウェアシミュレーター:チップとピンを壊して結果を確認しよう

## Japanese Translation: 本ソフトウェアは、Andre Weissflog のコアモデルを zlib ライセンスの下で構築し、Commodore 64 のマザーボード(ASSY 250407)に対してサイクル正確なピン毎のシミュレーションを提供します。事前に定義された障害パターンに依存するツールとは異なり、明確な回路動作モデルおよびボードのネットリストを使用して、RAM のエイリアシングや電源投入前に特定のピンをリフトする際などに自然に発生するグリッチを導出します。ユーザーはチップをリフトする、ピンをショートさせる、ソケットを取り外す、抵抗器を開くなどしてボードと相互作用し、C64 の動作を安全に学習したり、壊れたハードウェアのトラブルシューティングを行ったりすることができます。パワーモデリングは厳格であり、死んだチップ、浮遊する CMOS 構成要素、および幻のパワー効果を区別します。シミュレーションにはオシロスコープ表示や .prg の読み込みによるデバッグ機能などの機能が含まれていますが、現在のハードウェア上のパフォーマンス制限のためゲームエミュレーターではありません(31–48% の速度でシミュレート)。既知のギャップとしては、SID フィルターやビデオ出力のようなアナログ部品がシミュレーションされていないことなどがあり、将来的なアップデートでは内部チップの障害およびネットブリッジの対応を計画しています。

2026/10/18 0:55

ペレ - テーマ化可能な SVG としてマーメイド図

## 日本語訳: # ルール - 元の意味を正確に保持する(追加も省略もない)。 - ドキュメントの構造(見出し、箇条書きなど)を維持する。 - 技術用語を正確に扱う(API、LLM、zero-trust は自然な日本語の対訳がある場合を除きそのまま残す)。 - トーンと確信度を保つ。 - まとめ、説明、改変を行わず、翻訳のみを行う。 # 出力形式 ## 日本語訳: (ここに日本語訳を書く) ## 訳すべきテキスト: (必要であれば;なければ元の文章を繰り返す): 正確性や明瞭さのためには改善は不要だが、 desired な場合は名前の由来に簡潔に触れることで若干の文脈を追加できる。