eeppは、リッチなグラフィカル ユーザー インターフェイスの開発に重点を置いた、オープンソースのクロスプラットフォーム ゲームおよびアプリケーション開発フレームワークです。
Linux、Windows、macOS、Android、iOS を正式にサポート。
emscripten を使用して HTML5 にエクスポートしますが、若干の制限があります。
BSD や Haiku にも対応しています。
すべての基本的な入力インタラクション イベント (クリック、キープレス、マウスオーバー、フォーカスなど) を含む、アプリ/ゲーム オブジェクトをノードとして管理するベース ウィジェット。
完全な機能を備えた UI システム、アニメーションのサポート、スケーリング、回転、クリッピング、イベント、メッセージなど。
テーマとスキン/装飾のサポート。
ピクセル密度のサポート (画面のピクセル密度によって定義される UI 要素のスケーリング)。
すべての基本的なウィジェットが実装されています (ボタン、テキストボックス、コンボボックス、入力ボックス、メニュー、リストボックス、スクロールバーなど)。
描画無効化のサポート。これを使用すると、リソース使用量が少なく、実際のアプリを作成できます (必要な場合にのみ再描画されます)。
Android レイアウト ( LinearLayout、RelativeLayout、GridLayout ) に似たレイアウト システム。
テキスト選択、コピー&ペースト、キーバインドなどの高度な機能。
XML からレイアウトを読み込み、スタイルを設定する
カスケード スタイル シートを使用したスタイル設定
OpenGL 2 (fixed-pipeline)、OpenGL 3 (programmable-pipeline)、OpenGL ES 2、OpenGL ES 1、および OpenGL Core Profile のレンダラー。
バッチ レンダラ (すべてのレンダリングはエンジンによって自動的にバッチ処理されます)。
フォントのサポート (TrueType、BMFont、および XNA フォント)。
フレームバッファのサポート。
シェーダのサポート (プログラム可能なコンバータへの自動固定パイプライン シェーダを使用)。
頂点バッファオブジェクトのサポート。
パーティクルシステム。
拡張可能なコンソール。
アニメーション化されたスプライト。
テクスチャ アトラスのサポート (テクスチャ アトラスの自動作成と更新、エディタが含まれています)。
クリッピング マスク (ステンシル、はさみ、平面)
Nine Patch のサイズ変更可能なビットマップのサポート。
プリミティブのドローアブル。
多くの画像フォーマットをサポート (ラスタライズされた SVG を含む)、圧縮テクスチャのサポート (可能な場合は GPU への直接アップロード)。
バックエンド ベースのモジュール。これは、ウィンドウ/入力処理用のバックエンドを簡単に作成できることを意味します。
現在、バックエンドとして SDL 2 をサポートしています。
クリップボードのサポート。
ハードウェアカーソル。
ディスプレイマネージャー
ジョイスティックのサポート。
ライブラリの完全なマルチスレッド サポート、パッキング用のファイル形式サポート、クロック、リソース マネージャー、トランスレーターなどの基本的な機能をすべて提供します。
仮想ファイル システム クラス (抽象的なアセット プロバイダーを単一の仮想ファイル システムにし、zip ファイルとローカル ファイル システムを 1 つに抽象化し、リソースの透過的なロードを実現します。 PhysicsFS と同様)。
カスタマイズ可能なメモリマネージャー。デバッグ モードでメモリ リークを追跡するためにデフォルトで使用されます。
UTF8、UTF-16、UTF-32、Ansi、ワイド文字のサポート。
内部的に UTF-32 文字を使用する文字列クラス。
デバッグマクロ
汎用関数とテンプレート (ベクター、クワッド、ポリゴンなど)。
イージングを使用した補間クラス。
いくつかのマイナーな数学ユーティリティには、メルセンヌ ツイスター乱数ジェネレーターの実装、パーリン ノイズなどが含まれます。
TLS サポート( mbedtls または openssl によって提供される) を備えた HTTP クライアントによる Web リクエスト。
非同期 HTTP リクエスト。
FTP クライアントおよび FTPS クライアント (明示的な TLS を使用した FTP) を使用したファイル転送。
TCP および UDP ソケット。
HTTP コンテンツ エンコーディングと転送エンコーディングのサポート。
HTTP プロキシのサポート。
HTTP 圧縮応答のサポート。
また、HTTP 再開/継続ダウンロードのサポートと自動フォロー リダイレクトもサポートされます。
シーンを簡単に管理できるノードベースのシステム。
ノード イベント (クリック、マウス オーバー、フォーカスなど) を完全に制御します。
イベント系。
ノードメッセージシステム。
ノードのプログラム可能なアクション (フェード、回転、移動、スケールなど)。
ソフトウェアダイナミックライトを備えたタイルマップ。
フル機能のマップエディター。
非常にシンプルなUIエディター。 XML ファイルからレイアウトをロードし、加えられた変更をリアルタイムで確認します。
テクスチャ アトラス エディタ。開発者がテクスチャ アトラスを作成および編集できるようにする非常にシンプルなツールです。
マップ エディタ: ゲーム エンジン用の高度かつシンプルなマップ エディタです。作業する時間がなかったため、いくつかの機能が欠けています。この特定のツールは、おそらく近い将来、TMX マップのサポートが優先されて廃止されるでしょう (ただし、私は TMX マップのファンではないので、その瞬間)。
ドキュメントはここにあります。現在改善に取り組んでいます。現在、プロジェクトの約 50% が文書化されているため、まだ多くの作業が必要です。 src/examples
にあるコード例を確認してください。また、テスト ( src/test
) とツール ( src/tools
) も確認できます。
UI モジュールは現在最も重要で複雑なモジュールですが、適切なドキュメントが不足しているため、UI モジュールに関するドキュメントの改善に力を入れています。ご質問がございましたら、いつでもご連絡ください。
リポジトリは git サブモジュールを使用するため、リポジトリとそのサブモジュールのクローンを作成する必要があります。これを簡単に実現するには、次のようにクローンを作成するだけです。
git clone --recurse-submodules https://github.com/SpartanJ/eepp.git
ecode は、lite からインスピレーションを得たコードエディターです。デフォルトの Plasma dark テーマである Breeze Dark をベースにした最新の純粋な CSS テーマを使用しています。
レイアウトや CSS の変更をリアルタイムで表示し、ユーザー インターフェイスの開発を迅速化するのに役立つエディター。スクリーンショットには、eepp で利用可能なデフォルトのウィジェットの一部が表示されています。
テクスチャ アトラスの作成と編集に使用される小さなツール。
デフォルトのスキン テーマを使用する 2D マップ エディター (9 パッチ イメージを持つ単一のテクスチャ アトラスを使用)。
Android 開発者にとっては見慣れたものになるはずです。これは、垂直直線レイアウト表示の最も基本的なウィジェットを備えたウィンドウです。
< window layout_width = " 300dp " layout_height = " 300dp " window-flags = " default|maximize|shadow " >
< LinearLayout id = " testlayout " orientation = " vertical " layout_width = " match_parent " layout_height = " match_parent " layout_margin = " 8dp " >
< TextView text = " Hello World! " gravity = " center " layout_gravity = " center_horizontal " layout_width = " match_parent " layout_height = " wrap_content " backgroundColor = " black " />
< PushButton text = " OK! " textSize = " 16dp " icon = " ok " gravity = " center " layout_gravity = " center_horizontal " layout_width = " match_parent " layout_height = " wrap_content " />
< Image src = " thecircle " layout_width = " match_parent " layout_height = " 32dp " flags = " clip " />
< Sprite src = " gn " />
< TextInput text = " test " layout_width = " match_parent " layout_height = " wrap_content " />
< DropDownList layout_width = " match_parent " layout_height = " wrap_content " selectedIndex = " 0 " >
< item >Test Item</ item >
< item >@string/test_item</ item >
</ DropDownList >
< ListBox layout_width = " match_parent " layout_height = " match_parent " layout_weight = " 1 " >
< item >Hello!</ item >
< item >World!</ item >
</ ListBox >
</ LinearLayout >
</ window >
UI の紹介はここにあります。
実際のコードではどう見えるでしょうか?
UITextView::New ()->setText( " Text on test 1 " )
->setCharacterSize( 12 )
->setLayoutMargin( Rect ( 10 , 10 , 10 , 10 ) )
->setLayoutSizePolicy( SizePolicy::MatchParent, SizePolicy::WrapContent )
->setParent( layout );
要素のスタイル設定は、カスケード スタイル シートのカスタム実装で行うことができ、最も一般的な CSS2 ルールに加えて、いくつかの CSS3 ルール (いくつかの例: アニメーション、トランジション、カスタム プロパティ、メディア クエリ、@font-face at ルール、:root 要素) が利用可能です。 。 CSS がどのように見えるかについての小さな例を次に示します。
@font-face {
font-family : "OpenSans Regular" ;
src : url ( "https://raw.githubusercontent.com/SpartanJ/eepp/develop/bin/assets/fonts/OpenSans-Regular.ttf" );
}
@import url ( "assets/layouts/imported.css" ) screen and ( min-width : 800 px );
: root {
--font-color : black;
--background-input-color : rgba ( 255 , 255 , 255 , 0.7 );
--border-color : black;
--border-width : 1 dp ;
}
. screen TextView {
color : var ( --font-color );
}
. form {
background-image : @drawable /back;
background-repeat : no-repeat;
background-size : cover;
}
. form . form_inputs {
background-color : var ( --non-existent , var ( --background-input-color ));
margin-left : 100 dp ;
margin-right : 100 dp ;
padding-top : 72 dp ;
padding-left : 57 dp ;
padding-right : 57 dp ;
padding-bottom : 115 dp ;
}
. screen TextView . input ,
. screen TextInput . input {
font-family : AkzidenzGroteskBQ-Cnd;
layout-width : match_parent;
layout-height : 80 dp ;
border-color : var ( --border-color );
border-width : var ( --border-width );
color : var ( --font-color );
padding-left : 40 dp ;
padding-right : 40 dp ;
margin-bottom : 32 dp ;
skin : none;
hint-font-family : AkzidenzGroteskBQ-Cnd;
hint-font-size : 46 dp ;
hint-color : # 818285 ;
background-color : # FFFFFF00 ;
transition : all 0.125 s ;
}
. screen TextInput . input : focus {
background-color : # FFFFFF66 ;
border-color : # 796500 ;
}
. screen TextInput . input : hover {
background-color : # FFFFFF66 ;
}
@media screen and ( max-width : 1024 px ) {
. form . form_inputs {
background-color : red;
}
}
完全な CSS 仕様は、こちらのドキュメントにあります。
純粋な CSS テーマが eepp: ここでどのように見えるかを確認することもできます。
eepp は emscripten をサポートしているため、ライブラリが現在提供している例、デモ、ツールの一部を簡単に確認できます。現時点での emscripten の制限 (ファイル システムへのアクセスなし、カスタム カーソルなしなど) に基づいていくつかの違いがあることに注意してください。また、デモはサイズが最適化されておらず、必要以上に大きいことに注意してください。なれ。注: WebGL および WASM を適切にサポートする最新のブラウザ (Chrome/ium 70 以降または Firefox 80 以降) を使用してください。
ecode - コードエディター
UIエディター
UIハローワールド
テクスチャ アトラス エディター
マップエディター
フォントの例
物理モジュールのデモ
スプライトの例
完全なテスト
7GUIs は「GUI プログラミング ベンチマーク」として知られており、さまざまな GUI ライブラリを比較し、GUI プログラミングに対する各ライブラリのアプローチを調査するために使用されます。 7GUIs で提案されている 7 つのタスクはすべて eepp に実装されています。これらのタスクは、eepp GUI で実現できることをよく表しており、ライブラリを使用してさまざまなタスクを実装する方法を示すのにも非常に役立ちます。
7GUI は次のタスクで構成されます。
カウンター: デモとコードの実装。
温度コンバータ: デモとコードの実装。
Flight Booker: デモとコードの実装。
タイマー: デモとコードの実装。
CRUD: デモとコードの実装。
Circle Drawer: デモとコードの実装。
セル: デモとコードの実装。
ライブラリには外部依存関係が 1 つだけあります。ヘッダーがインストールされたSDL2ライブラリのみが必要です。また、ライブラリをビルドするための Makefile またはプロジェクト ファイルを生成するには、 premake5またはpremake4が必要です。何をしているのかを理解していることを前提として、基本的な部分は省略します。
注意: eepp は、OpenAL ドロップインの代替としてデフォルトで mojoAL を使用します。 OpenAL は、オーディオ バックエンドとしてオプションで使用できます。これを使用したい場合は、有効にするという選択肢もあります。これを有効にして mojoAL ドロップイン置換を無効にするには、パラメータ--without-mojoal
premake
呼び出しに追加する必要があります (例: premake5 --without-mojoal gmake2
)。
Ubuntu システムでは、次のようになります (gcc も必要ですが、とにかくインストールされます):
sudo apt-get install premake5 libsdl2-2.0-0 libsdl2-dev libopenal1 libopenal-dev
リポジトリのクローンを作成し、リポジトリのルート ディレクトリで実行します。
premake5 gmake2
または、premake4 がインストールされている場合は、次を実行できます。
premake4 gmake
次に、ライブラリをビルドするだけです。
make -C make/linux
それでおしまい。これでプロジェクト全体が構築されます。
Visual Studio を使用してビルドするか、MinGW を使用してビルドするかの 2 つのオプションがあります。これらのオプションのいずれかを使用してプロジェクトをビルドできるようにするには、まず premake4 または premake5 を使用してプロジェクト ファイルを生成する必要があります。次に、バイナリ ファイルをPATH
で定義された実行可能パスのいずれかに追加する (または追加するか、ローカル パスから使用する) 必要があります。ニーズに応じて、 Visual StudioまたはMinGWファイルをダウンロードします。
premake5 を使用して以下を実行する必要があります。
premake5.exe --windows-vc-build vs2022
その後、プロジェクト ファイルはmake/windows/
にあるはずです。完全なソリューションとすべてのプロジェクトが利用可能になります。すべてをインストールすると、他のプロジェクトと同様にVisual Studioソリューションを構築できるようになります。
コマンド ライン引数--windows-vc-build
使用すると、外部依存関係を手動でダウンロードすることなく、SDL2 依存関係が自動的にダウンロードされ、ビルド プロセスにリンクするパスが追加されます。
次に、Visual Studio でソリューションをビルドするか、コンソールでMSBuild
手動で実行します。
"%MSBUILD_PATH%MSBuild.exe" .makewindowseepp.sln -m
ここで、 %MSBUILD_PATH%
は MSBuild.exe Visual Studio パスです。たとえば、 VS2022 Community Editionの場合、パスは通常次のようになります。
C:Program FilesMicrosoft Visual Studio2022CommunityMSBuildCurrentBin
Windows MinGW ビルドは、w64devkit ディストリビューションを使用して生成およびテストされています。 MSYS は、ビルド プロセスでいくつかの問題が見つかったため、現在正式にサポートされていません (ただし、追加の手順を実行すればビルドすることは可能です)。
w64devkit を使用している場合は、ダウンロードして解凍する必要があります。 C:w64devkit
で解凍されるものとします。
C:w64devkitw64devkit.exe
管理者として実行します ( right click
-> Run as administrator
)。
次に、 eepp
クローンされたリポジトリ ディレクトリに移動し、次のコマンドを実行します。
premake5.exe --windows-mingw-build gmake2
--windows-mingw-build
外部依存関係 (SDL2) を自動的にダウンロードしてリンクします。
次に、 mingw32-make.exe
または同等のものを使用して、 make/windows/
にあるプロジェクトをビルドするだけです。
mingw32-make.exe -C make\windows config=release_x86_64
デバッグ ビルドをビルドするには、次のコマンドを実行します。
mingw32-make.exe -C make\windows config=debug_x86_64
次に、 src/thirdparty/SDL2-2.XX.X/x86_64-w64-mingw32/bin/SDL2.dll
にあるSDL2.dll
ファイルをbin
にコピーしてください。何らかの理由でeepp.dll
(またはeepp-debug.dll
) が自動的にコピーされない場合は、それらをlibs/windows/x86_64/
からbin
にコピーできます。
SDL2 のプリビルド バイナリと開発ライブラリが必要になります。OpenAL は OS に含まれています。 SDL2 フレームワークをインストールすると、プロジェクトをビルドできるようになります。
プロジェクトをビルドするには、 XCodeを使用するかMakefilesを使用する 2 つのオプションがあります。最初に両方のオプションのいずれかを使用してビルドするには、premake4 または premake5 を使用してプロジェクト ファイルをビルドする必要もあります。
プロジェクトを生成します。
premake5 --use-frameworks gmake2
そしてそれを構築します:
make -C make/macosx
Makefile を生成してプロジェクトをビルドする、 projects/osx/make.sh
スクリプトを使用できます。
走る:
premake5 --use-frameworks xcode4
そして、 make/macosx/
で生成された XCode プロジェクトを開くか、次のようにコマンド ラインから単純にビルドします。
xcodebuild -project make/macosx/project-name.xcodeproj
projects/android-project/
に Gradle プロジェクトがあります。すべての依存関係を含むライブラリがビルドされます。サンプル プロジェクトをプロジェクトのベースとして使用します。ライブラリを構築するeepp.mk
プロジェクト ファイルがあることに注意してください。そのファイルはプロジェクトで使用できます。
このプロジェクトでは、ライブラリとデモを構築するための 2 つのファイルが提供されます。ニーズに応じていずれかを使用できます。ファイルは、 projects/ios
にあります。
このスクリプトは、Xcode プロジェクトと、eepp に含まれるすべてのプロジェクト (デモ、ツール、共有ライブラリ、静的ライブラリなど) のソリューションを生成するために使用できます。また、プロジェクトでライブラリを参照できるようにするために、SDL2 ファット静的ライブラリをダウンロードしてビルドします。悲しいことに、プロジェクトをビルドした後、生成されたプロジェクトにはいくつかの小さな構成が欠けているため、ビルドまたはテストしたくないプロジェクトの一部またはすべてに若干の変更を加える必要があります。このスクリプトを実行した後、 make/ios/eepp.xcworkspace
にあるソリューションを開く必要があります。静的ライブラリを構築するのに問題はありません (そのまま使用しても問題ありません)。ただし、いくつかの例をテストするには、次のことが必要です。
テストするプロジェクト (例: eepp-empty-window
を選択します (プロジェクト名をクリックします)。いくつかのタブ/オプションが表示され、 [ビルド設定]に移動し、オプションInfo.plistファイルを見つけて、ダブルクリックして編集し、 Info.plist
と書き込みます。これは、プロジェクトと同じディレクトリにあるファイルを読み取ることを示します。 [全般]タブに移動し、生成されるアプリ バンドルの識別子名をバンドル識別子に入力します。この例では、 eepp-empty-window
ようなものを使用できます。これにより、プロジェクトをビルドして実行できるようになります。
このeepp-empty-window
デモはアセット/リソースを使用しませんが、他のデモではアセットを読み込む必要があり、このアセットをアプリ バンドルで使用できるようにするにはプロジェクトに追加する必要があります。たとえば、プロジェクトeepp-ui-hello-world
、プロジェクトにassets
フォルダーを追加する必要があります。必要なことは、プロジェクトを選択して「Build Phases」タブに移動し、 「Copy Bundles Resources」でプラスアイコン (+) をクリックし、 「Add Other...」に移動してbin/assets/
フォルダーを見つけて選択し、仕上げる。それで十分です。
このスクリプトを使用すると、SDL2 と eepp を、arm64 および x86_64 アーキテクチャ (iPhone/iPad の場合は arm64、シミュレータの場合は x86_64) を含む 2 つのファット静的ライブラリとしてビルドできます。リリース ビルドを生成するには、スクリプトのパラメーターとしてconfig=release
渡します ( sh compile-all.sh config=release
)。ビルドされたファイルは、 libSDL2.a
およびlibeepp.a
(またはデバッグ ビルドの場合はlibeepp-debug.a
) としてlibs/ios/
に配置されます。この 2 つのファイルをプロジェクトに統合できます。
まず emscripten をダウンロードしてインストールする必要があります。次に、 emscriptenプロジェクトをビルドするためのスクリプトがprojects/emscripten/make.sh
にあります。このスクリプトを実行する前に、忘れずに emsdk 環境を設定してください。source source /path/to/emsdk/emsdk_env.sh
ようになります。 GNU/LinuxまたはmacOSではこれで十分です (GNU/Linux でのみテストしました)。
ビルド後、すべてのバイナリはbin
ディレクトリに配置されます。バイナリには、eepp ライブラリと SDL2 ライブラリの 2 つのファイルが必要です。 eepp ライブラリはlibs/{OS}/
にあります。ビルド スクリプトは eepp ライブラリをbin
にシンボリックリンクしようとしますが、失敗した場合は手動でコピーまたはシンボリックリンクする必要があります。 SDL2 ライブラリについてはリポジトリで提供されていないため、デモを実行するには、正しい SDL2 ライブラリ OS バージョンとアーキテクチャをダウンロードする必要があります。
このライブラリは数年間開発されており、最初から多くの変更が加えられており、改善するために必要と思われる変更を加えているため、API はまだ完全に安定していません (ただし、ほぼ安定しています)。これは、主に Android デバイスと Windows PC 向けに開発された宣伝キャンペーン向けのいくつかのアプリケーションで使用されています。
私自身、このライブラリを使用して複雑なゲームを開発する時間がありませんでしたが (いくつかの挫折したプロジェクト)、クライアント向けに UI 指向のゲームをいくつか作成しました。
現在のプロジェクトの焦点は UI モジュールにあります。そして私はこれに焦点を当てて仕事を続けます。
計画は、Android ツールキットと同様に完全にハードウェア アクセラレーションされた代替 UI ツールキットを提供することですが、よりシンプルで (使いやすいなど)、デスクトップ アプリ向けでもあります。
オーディオ モジュールとネットワーク モジュールは SFML のモジュールに基づいていますが、上で述べたいくつかの重要な違いがあります。
私はよくできていて自分のニーズに合ったものを使用するのが好きですが、いくつかの実装方法については個人的な見解があるため、コードを完全に制御するためにコードを使用することを好みます。
また、多くのアイデアは他のプロジェクトから取り入れられています。考えられるものとしては、 cocos2d-x 、 raylib 、 Android SDK 、 libGDX 、 Godot 、 XNA 、 LÖVE 、その他多くのプロジェクトがあります。
何かおかしな理由でこれらすべてがあなたにとって興味深いと思われる場合は、私に連絡して、あなたが図書館に入るのを手伝うことができるかどうか知らせてください。そして、もしあなたが望むなら、あなたが将来それに貢献することもできるかもしれません。このプロジェクトには何よりも貢献者が必要です。
現在の図書館の状態は良好です。機能の点では、最もよく使用されている 2D ゲーム エンジンと同様の位置にあるはずです。ただし、いくつか例を挙げると、 Godotやcocos2d-xから得られるサポートやコミュニティがもちろんありません。
このライブラリの主なアイデアは、よりクリーンなコードと実装を使用して、他のオプションよりも UI ベースのアプリやゲームを開発するためのより優れた一般的なアプローチに焦点を当てることです。
私がライブラリを開発した主な理由は、楽しむためと新しいテクノロジーを学ぶためです。私はライブラリの作業に時間を費やすのが大好きですが、同様の代替手段が膨大にあるため、このようなものを開発する本当の理由はおそらくないことはわかっています。
コードの品質について: このプロジェクトはかなり前に開始され、時間の経過とともに多くの修正が加えられました。コード ベースのかなりの部分では、依然として古い C++ の手法が使用されています (例: 生のポインター、スレッドの独自の実装、ミューテックスなど)。これらの一部は「最新化」できますが、その他はあまり意味がなかったり、オーバーホールすると努力が正当化されるほど時間がかかりすぎます。私はコードの一部を「最新化」する作業を行っており、通常、新しいコードはより現代的に見える傾向があります。
新しいウィジェットやレイアウトを追加し、CSS サポートを改善して、UI システムを改善し続けます。
UI ウィジェットのスキニング/テーマのサポートを簡素化し、改善しました。
UI モジュールのドキュメントを改善/作成します。
さらにサンプルといくつかのツールを追加します。
スクリプトのサポートを追加します。その前にライブラリを安定させたいと思っていますが、そこに到達しています。
2D 骨格アニメーションのサポートを追加します (おそらく Spine2D で、実装するのはそれほど手間ではないはずです)。
私は UI システムに重点を置くつもりなので、おそらく Maps モジュールを非推奨にするでしょう。
Sean Barrett : stb_image およびすべての stb ライブラリー。
シンプルな DirectMedia レイヤーの Sam Latinga。
Simple OpenGL Image Library の Jonathan Dummer 氏。
SFMLのローラン・ゴミラ
litehtml のユーリ・コベッツ
RmlUI の Michael RP Ragazzon
ライト用rxi
SerenityOS の Andreas Kling
mojoALのライアン・C・ゴードン
dr_libs の David Reid
Lion (Lieff) (minimp3 など用)
PlusCallback のルイス・ヴァン・ウィンクル
Dieter Baron と Thomas Klausner による libzip
Jean-loup Gailly と Mark Adler (zlib)
GLEWのミラン・イキッツとマルセロ・マガロン
nanosvg 用 Mikko Mononen
Chipmunk2D の Scott Lembcke
glmのクリストフ・リッチョ
imageresampler と jpeg-compressor の Rich Geldreich
pagixml のアーセニー・カポルキン
プリメイク担当のジェイソン・パーキンス
Martín Lucas Golini (私) と SOIL2 および efsw の数人の寄稿者全員
libogg および libvorbis の Xiph オープンソース コミュニティ
mbed TLS の ARMmbed コミュニティ
Openal-soft の kcat
FreeType プロジェクト
そしてもっとたくさんの人たち!
MITライセンス