eepp adalah kerangka pengembangan aplikasi dan permainan lintas platform sumber terbuka yang sangat berfokus pada pengembangan antarmuka pengguna grafis yang kaya.
Dukungan resmi untuk Linux, Windows, macOS, Android dan iOS.
Ekspor ke HTML5 menggunakan emscripten dengan beberapa batasan kecil.
Juga berfungsi di BSD dan Haiku.
Widget dasar untuk mengelola objek aplikasi/game sebagai node, dengan semua peristiwa interaksi input dasar (klik, penekanan tombol, mouse over, fokus, dll).
Sistem UI berfitur lengkap, dukungan animasi, penskalaan, rotasi, kliping, acara, pesan, dll.
Dukungan tema dan skin/dekorasi.
Dukungan kepadatan piksel (penskalaan elemen UI ditentukan oleh kepadatan piksel layar).
Semua widget dasar diimplementasikan (tombol, kotak teks, kotak kombo, kotak masukan, menu, kotak daftar, bilah gulir, dll).
Menarik dukungan pembatalan. Dapat digunakan untuk membuat aplikasi nyata, dengan penggunaan sumber daya yang rendah (hanya menggambar ulang bila diperlukan).
Sistem tata letak mirip dengan tata letak Android (LinearLayout, RelativeLayout, GridLayout).
Fitur lanjutan seperti pemilihan teks, salin dan tempel, dan pengikatan kunci.
Memuat dan menata tata letak dari XML
Penataan gaya dengan Cascading Style Sheets
Perender untuk OpenGL 2 ( fixed-pipeline ), OpenGL 3 ( programmable-pipeline ), OpenGL ES 2, OpenGL ES 1, dan OpenGL Core Profile.
Batch Renderer (semua rendering secara otomatis dikumpulkan oleh mesin).
Dukungan font (Fon TrueType, BMFont dan XNA).
Dukungan Bingkai Buffer.
Dukungan shader (dengan shader pipa tetap otomatis ke konverter yang dapat diprogram).
Dukungan Objek Penyangga Vertex.
Sistem Partikel.
Konsol yang Dapat Diperpanjang.
Sprite Animasi.
Dukungan Texture Atlas (pembuatan otomatis dan pembaruan atlas tekstur, termasuk editor).
Clipping Mask (stensil, gunting, pesawat)
Dukungan bitmap sembilan Patch yang dapat diubah ukurannya.
Sumber daya dapat digambar primitif.
Banyak format gambar yang didukung (termasuk SVG raster), dukungan tekstur terkompresi (unggah langsung ke GPU bila memungkinkan).
Modul berbasis backend, ini berarti Anda dapat dengan mudah membuat backend untuk penanganan jendela/input.
Saat ini mendukung SDL 2 sebagai backend.
Dukungan papan klip.
Kursor perangkat keras.
Manajer Tampilan
Dukungan joystick.
Menyediakan semua hal dasar untuk dukungan penuh multi-threading pada perpustakaan, dukungan format file untuk pengepakan, jam, pengelola sumber daya, penerjemah, dan banyak lagi.
Kelas Sistem File Virtual (penyedia aset abstrak ke dalam sistem file virtual tunggal, mengabstraksi file zip dan sistem file lokal menjadi satu untuk memuat sumber daya secara transparan, mirip dengan PhysicsFS).
Manajer Memori yang Dapat Disesuaikan. Digunakan secara default dalam mode debug untuk melacak kebocoran memori.
Dukungan UTF8, UTF-16, UTF-32, Ansi, Wide Char.
Kelas string menggunakan karakter UTF-32 secara internal.
Men-debug makro
Fungsi dan templat tujuan umum (vektor, segi empat, poligon, dll).
Kelas interpolasi dengan easing.
Beberapa utilitas matematika kecil, termasuk implementasi generator nomor acak Mersenne Twister, kebisingan perlin dan banyak lagi.
Permintaan Web dengan klien HTTP, dengan dukungan TLS (disediakan oleh mbedtls atau openssl).
Permintaan HTTP asinkron.
Transfer File dengan klien FTP dan klien FTPS (FTP dengan TLS eksplisit).
Soket TCP dan UDP.
Dukungan Pengkodean Konten HTTP dan Pengkodean Transfer.
Dukungan Proksi HTTP.
Dukungan respons terkompresi HTTP.
Juga dukungan melanjutkan/lanjutkan pengunduhan HTTP dan pengalihan ikuti otomatis.
Sistem berbasis node untuk memudahkan pengelolaan adegan.
Kontrol penuh atas peristiwa simpul (klik, arahkan mouse, fokus, dll).
Sistem acara.
Sistem Pesan Node.
Tindakan yang dapat diprogram untuk node (memudar, memutar, memindahkan, menskalakan, dll).
Peta Ubin dengan lampu dinamis perangkat lunak.
Editor peta berfitur lengkap.
Editor UI yang sangat sederhana. Muat tata letak dari file XML dan lihat perubahan yang dilakukan secara real-time.
Editor Atlas Tekstur. Alat yang sangat sederhana untuk memungkinkan pengembang membuat dan mengedit atlas tekstur.
Editor Peta: Editor peta canggih namun sederhana untuk mesin game. Ini kekurangan beberapa fitur karena saya tidak punya waktu untuk mengerjakannya, alat khusus ini mungkin akan mati demi dukungan peta TMX dalam waktu dekat (tapi saya bukan penggemar peta TMX, jadi tidak ada keputusan untuk saat ini).
Dokumentasi terletak di sini. Saat ini saya sedang berupaya memperbaikinya. Sekitar 50% proyek saat ini sudah terdokumentasi sehingga masih memerlukan banyak pekerjaan. Silakan periksa contoh kode yang terletak di src/examples
dan Anda juga dapat memeriksa pengujian ( src/test
) dan alat ( src/tools
).
Saya berupaya meningkatkan dokumentasi pada modul UI karena saat ini merupakan modul yang paling penting dan kompleks tetapi tidak memiliki dokumentasi yang tepat. Jika Anda memiliki pertanyaan, Anda dapat menghubungi saya kapan saja.
Repositori menggunakan submodul git jadi Anda harus mengkloning repositori dan submodulnya, untuk mencapai ini dengan mudah Anda cukup mengkloning dengan:
git clone --recurse-submodules https://github.com/SpartanJ/eepp.git
ecode adalah editor kode yang terinspirasi dari versi ringan. Itu menggunakan tema CSS murni terbaru berdasarkan tema gelap Plasma default: Breeze Dark.
Editor yang menampilkan perubahan secara real-time pada tata letak dan CSS apa pun untuk membantu mempercepat pengembangan antarmuka pengguna. Pada screenshot tersebut ditampilkan beberapa widget default yang tersedia di eepp.
Alat kecil, digunakan untuk membuat dan mengedit atlas tekstur.
Editor peta 2D menggunakan tema skin default (menggunakan atlas tekstur tunggal dengan gambar 9 patch).
Ini akan terlihat sangat familier bagi pengembang Android mana pun. Ini adalah jendela dengan widget paling dasar dalam tampilan tata letak linier vertikal.
< 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 >
Pengenalan UI dapat ditemukan di sini .
Bagaimana tampilannya dengan kode sebenarnya?
UITextView::New ()->setText( " Text on test 1 " )
->setCharacterSize( 12 )
->setLayoutMargin( Rect ( 10 , 10 , 10 , 10 ) )
->setLayoutSizePolicy( SizePolicy::MatchParent, SizePolicy::WrapContent )
->setParent( layout );
Penataan gaya elemen dapat dilakukan dengan implementasi kustom Cascading Style Sheets, aturan CSS2 paling umum tersedia, ditambah beberapa aturan CSS3 (beberapa contoh: animasi, transisi, properti kustom, kueri media, aturan @font-face at, :root elemen) . Berikut adalah contoh kecil tampilan 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;
}
}
Spesifikasi CSS selengkapnya dapat ditemukan di dokumen: di sini.
Anda juga dapat memeriksa tampilan tema CSS murni di eepp: di sini.
Karena eepp mendukung emscripten, Anda dapat melihat sekilas beberapa contoh, demo, dan alat yang saat ini disediakan perpustakaan. Perlu diketahui bahwa Anda akan menemukan beberapa perbedaan berdasarkan batasan yang dimiliki emscripten saat ini (tidak ada akses ke sistem file, tidak ada kursor khusus, dll) dan juga demo tidak dioptimalkan untuk ukuran dan lebih besar dari yang seharusnya menjadi. Catatan: Silakan gunakan browser modern dengan dukungan WebGL dan WASM yang baik (Chrome/ium 70+ atau Firefox 80+).
ecode - Editor Kode
Editor UI
UI Halo Dunia
Editor Atlas Tekstur
Penyunting Peta
Contoh font
Demo modul fisika
Contoh sprite
Tes Penuh
7GUI dikenal sebagai "Tolok Ukur Pemrograman GUI" yang digunakan untuk membandingkan perpustakaan GUI yang berbeda dan mengeksplorasi setiap pendekatan perpustakaan untuk pemrograman GUI. Semua 7 tugas yang diusulkan di 7GUI telah diimplementasikan untuk eepp. Tugas-tugas tersebut mewakili dengan sangat baik apa yang dapat dicapai dengan eepp GUI dan juga sangat berguna untuk mendemonstrasikan bagaimana mengimplementasikan tugas-tugas yang berbeda dengan perpustakaan.
7GUI disusun dengan tugas-tugas berikut:
Counter: Demo dan implementasi kode.
Pengonversi Suhu: Demo dan implementasi kode.
Flight Booker: Demo dan implementasi kode.
Timer: Demo dan implementasi kode.
CRUD: Demo dan implementasi kode.
Circle Drawer: Demo dan implementasi kode.
Sel: Demo dan implementasi kode.
Perpustakaan hanya memiliki satu ketergantungan eksternal. Anda hanya memerlukan perpustakaan SDL2 dengan header terpasang. Premake5 atau premake4 juga diperlukan untuk menghasilkan Makefile atau file proyek untuk membangun perpustakaan. Saya akan berasumsi bahwa Anda tahu apa yang Anda lakukan dan melewatkan dasar-dasarnya.
Pemberitahuan: eepp menggunakan mojoAL secara default sebagai pengganti drop-in OpenAL. OpenAL tersedia secara opsional sebagai backend audio. Jika Anda ingin menggunakannya, Anda memiliki alternatif untuk mengaktifkannya. Untuk mengaktifkannya dan menonaktifkan pengganti drop-in mojoAL, Anda perlu menambahkan parameter --without-mojoal
ke panggilan premake
mana pun ( mis: premake5 --without-mojoal gmake2
).
Dalam sistem Ubuntu itu akan menjadi sesuatu seperti (Anda juga memerlukan gcc tetapi tetap akan diinstal):
sudo apt-get install premake5 libsdl2-2.0-0 libsdl2-dev libopenal1 libopenal-dev
Kloning repositori dan jalankan di direktori root repositori:
premake5 gmake2
atau jika Anda telah menginstal premake4, Anda dapat menjalankan:
premake4 gmake
Kemudian bangun saja perpustakaannya:
make -C make/linux
Itu saja. Itu akan membangun keseluruhan proyek.
Anda memiliki dua pilihan: membangun dengan Visual Studio atau dengan MinGW. Untuk dapat membangun proyek dengan salah satu opsi ini, pertama-tama Anda perlu membuat file proyek dengan premake4 atau premake5. Kemudian Anda perlu menambahkan file biner ke salah satu jalur yang dapat dieksekusi yang ditentukan dalam PATH
(atau menambahkannya, atau menggunakannya dari jalur lokal). Unduh file Visual Studio atau MinGW tergantung kebutuhan Anda.
Anda harus menggunakan premake5 dan menjalankan:
premake5.exe --windows-vc-build vs2022
Kemudian file proyek harus ditemukan di make/windows/
. Solusi lengkap dan seluruh proyek akan tersedia. Setelah menginstal semuanya, Anda akan dapat membangun solusi Visual Studio seperti proyek lainnya.
Menggunakan argumen baris perintah --windows-vc-build
akan mengunduh dependensi SDL2 secara otomatis dan menambahkan jalur ke proses build untuk ditautkan tanpa perlu mengunduh dependensi eksternal apa pun secara manual.
Kemudian buat solusinya di Visual Studio atau jalankan MSBuild
secara manual di konsol:
"%MSBUILD_PATH%MSBuild.exe" .makewindowseepp.sln -m
Dimana %MSBUILD_PATH%
adalah path MSBuild.exe Visual Studio, misalnya untuk VS2022 Community Edition biasanya pathnya adalah:
C:Program FilesMicrosoft Visual Studio2022CommunityMSBuildCurrentBin
Build Windows MinGW sedang diproduksi dan diuji dengan distribusi w64devkit. MSYS saat ini tidak didukung secara resmi karena ditemukan beberapa masalah pada proses pembangunan (namun dimungkinkan untuk membangun dengan beberapa langkah tambahan).
Jika Anda menggunakan w64devkit Anda harus mengunduhnya dan mengekstraknya, kami berasumsi bahwa itu diekstraksi di C:w64devkit
.
Jalankan C:w64devkitw64devkit.exe
sebagai administrator ( right click
-> Run as administrator
).
Lalu pergi ke direktori repositori eepp
yang dikloning dan jalankan:
premake5.exe --windows-mingw-build gmake2
--windows-mingw-build
akan secara otomatis mengunduh dan menautkan dependensi eksternal (SDL2).
Kemudian buat saja proyek yang terletak di make/windows/
dengan mingw32-make.exe
atau yang setara:
mingw32-make.exe -C make\windows config=release_x86_64
Untuk membangun proses debug:
mingw32-make.exe -C make\windows config=debug_x86_64
Dan kemudian pastikan untuk menyalin file SDL2.dll
yang terletak di src/thirdparty/SDL2-2.XX.X/x86_64-w64-mingw32/bin/SDL2.dll
ke bin
. Jika karena alasan tertentu eepp.dll
(atau eepp-debug.dll
) belum disalin secara otomatis, Anda dapat menyalinnya dari libs/windows/x86_64/
ke bin
.
Anda memerlukan biner prebuild dan perpustakaan pengembangan SDL2, OpenAL disertakan dengan OS. Instal kerangka SDL2 dan Anda seharusnya dapat membangun proyek.
Anda memiliki dua opsi untuk membangun proyek: dengan XCode atau dengan Makefiles . Untuk membangun dengan salah satu dari kedua opsi tersebut terlebih dahulu Anda juga perlu membuat file proyek dengan premake4 atau premake5.
Hasilkan proyek:
premake5 --use-frameworks gmake2
Dan bangunlah:
make -C make/macosx
Anda dapat menggunakan skrip projects/osx/make.sh
, yang menghasilkan Makefile dan membangun proyek.
Berlari:
premake5 --use-frameworks xcode4
Dan buka proyek XCode yang dihasilkan di make/macosx/
atau cukup buat dari baris perintah dengan:
xcodebuild -project make/macosx/project-name.xcodeproj
Ada proyek gradle di projects/android-project/
. Itu akan membangun perpustakaan dengan semua dependensi disertakan. Gunakan proyek contoh sebagai dasar untuk proyek Anda. Perhatikan bahwa ada file proyek eepp.mk
yang membangun perpustakaan. File itu dapat digunakan di proyek Anda.
Proyek ini menyediakan dua file untuk membangun perpustakaan dan demo. Anda dapat menggunakan salah satunya tergantung kebutuhan Anda. File-file tersebut terletak di projects/ios
:
Skrip ini dapat digunakan untuk menghasilkan proyek xcode dan solusi dari semua proyek yang disertakan di eepp (demo, alat, lib bersama, lib statis, dll). Itu juga akan mengunduh dan membangun perpustakaan statis lemak SDL2 agar dapat mereferensikan perpustakaan ke proyek. Sayangnya, setelah membangun proyek, Anda perlu membuat beberapa perubahan kecil pada salah satu/semua proyek yang tidak ingin Anda buat atau uji, karena proyek yang dihasilkan tidak memiliki beberapa konfigurasi kecil. Setelah menjalankan skrip ini, Anda harus membuka solusi yang terletak di make/ios/eepp.xcworkspace
. Untuk membangun perpustakaan statis Anda tidak akan menemukan masalah apa pun (itu akan berhasil). Namun untuk menguji beberapa contoh, diperlukan:
Pilih (klik nama proyek) proyek yang ingin Anda uji, misalnya eepp-empty-window
. Anda akan melihat beberapa tab/opsi, buka Build Settings , dan cari opsi file Info.plist , klik dua kali untuk mengedit dan tulis: Info.plist
. Ini akan menunjukkan untuk membaca file yang terletak di direktori yang sama dengan proyek. Buka tab Umum dan lengkapi Bundle Identifier dengan nama pengenal app bundle yang akan dihasilkan, untuk contoh ini Anda dapat menggunakan sesuatu seperti: eepp-empty-window
. Itu akan memungkinkan Anda membangun dan menjalankan proyek.
Demo eepp-empty-window
ini tidak menggunakan aset/sumber daya apa pun, namun demo lainnya perlu memuat aset, dan aset ini perlu ditambahkan ke proyek agar tersedia untuk app bundle. Misalnya, proyek eepp-ui-hello-world
, akan mengharuskan Anda menambahkan folder assets
ke dalam proyek. Yang perlu Anda lakukan adalah: pilih proyek dan buka tab Build Phases , di Copy Bundles Resources klik ikon plus (+), lalu buka Add Other... dan cari dan pilih folder bin/assets/
dan Menyelesaikan . Itu sudah cukup.
Skrip ini dapat digunakan untuk membangun SDL2 dan eepp sebagai dua perpustakaan statis besar dengan arsitektur arm64 dan x86_64 di dalamnya (arm64 untuk iPhone/iPad dan x86_64 untuk simulator). Untuk menghasilkan build rilis, lewati config=release
sebagai parameter untuk skrip ( sh compile-all.sh config=release
). File yang dibangun akan ditempatkan di libs/ios/
, sebagai libSDL2.a
dan libeepp.a
(atau libeepp-debug.a
untuk debug build). Kedua file ini dapat diintegrasikan dalam proyek Anda.
Anda harus mengunduh dan menginstal emscripten terlebih dahulu. Lalu ada skrip untuk membangun proyek emscripten di projects/emscripten/make.sh
. Sebelum menjalankan skrip ini, ingatlah untuk menyetel lingkungan emsdk, lingkungannya harus seperti: source /path/to/emsdk/emsdk_env.sh
. Itu seharusnya cukup di GNU/Linux atau macOS (hanya mengujinya di GNU/Linux).
Semua binari terletak di direktori bin
setelah dibuat. Biner memerlukan dua file: perpustakaan eepp dan perpustakaan SDL2. Perpustakaan eepp akan berlokasi di libs/{OS}/
. Skrip build akan mencoba menghubungkan perpustakaan eepp ke bin
, jika gagal maka harus disalin atau disinkronkan secara manual. Mengenai perpustakaan SDL2 tidak disediakan dalam repositori, jadi untuk menjalankan demo Anda harus mengunduh versi dan arsitektur OS perpustakaan SDL2 yang benar.
Perpustakaan telah dikembangkan selama beberapa tahun, mengalami banyak perubahan sejak awal, saya membuat perubahan apa pun yang menurut saya perlu untuk memperbaikinya, sehingga API masih belum sepenuhnya stabil (tetapi hampir stabil). Ini digunakan dalam beberapa aplikasi yang berorientasi pada kampanye publisitas yang sebagian besar dikembangkan untuk perangkat Android dan PC Windows.
Saya pribadi tidak pernah punya waktu untuk menggunakannya untuk mengembangkan permainan yang kompleks dengan perpustakaan (beberapa proyek yang gagal), tetapi saya membuat beberapa permainan berorientasi UI untuk klien.
Fokus proyek saat ini adalah pada modul UI. Dan saya akan terus bekerja dengan fokus pada hal ini.
Rencananya adalah untuk menyediakan toolkit UI alternatif yang sepenuhnya dipercepat secara perangkat keras mirip dengan toolkit Android tetapi lebih sederhana (seperti mudah digunakan) dan juga berorientasi pada aplikasi desktop.
Modul Audio dan Jaringan didasarkan pada modul di SFML dengan beberapa perbedaan penting yang disebutkan di atas.
Saya suka menggunakan apa yang telah dilakukan dengan baik dan sesuai dengan kebutuhan saya, tetapi karena saya memiliki pandangan pribadi tentang cara mengimplementasikan beberapa hal, saya lebih suka mengambil kodenya, untuk memiliki kendali penuh atas kode tersebut.
Juga banyak ide yang diambil dari proyek lain. Beberapa yang dapat saya pikirkan: cocos2d-x , raylib , Android SDK , libGDX , Godot , XNA , LÖVE , dan banyak proyek lainnya.
Jika semua ini terdengar menarik bagi Anda karena alasan gila, hubungi saya dan beri tahu saya jika saya dapat membantu Anda masuk ke perpustakaan, dan mungkin jika Anda mau, Anda dapat berkontribusi di masa mendatang. Proyek ini membutuhkan kontributor lebih dari apa pun.
Kondisi perpustakaan saat ini cukup baik. Dalam hal fitur, seharusnya berada pada posisi yang sama dengan mesin game 2D yang paling banyak digunakan di luar sana. Namun tentu saja kurangnya dukungan+komunitas yang bisa Anda dapatkan dari Godot atau cocos2d-x adalah beberapa contohnya.
Ide utama dari perpustakaan ini adalah untuk fokus pada pendekatan umum yang lebih baik untuk mengembangkan aplikasi dan game berbasis UI dibandingkan opsi lainnya, dengan kode dan implementasi yang lebih bersih.
Alasan utama saya mengembangkan perpustakaan ini adalah untuk bersenang-senang dan mempelajari teknologi baru. Saya suka menghabiskan waktu bekerja di perpustakaan, tapi saya tahu mungkin tidak ada alasan nyata untuk mengembangkan sesuatu seperti ini dengan banyaknya alternatif serupa.
Mengenai kualitas kode: proyek ini dimulai sejak lama dan mengalami banyak modifikasi seiring berjalannya waktu. Sebagian besar basis kode masih menggunakan praktik C++ lama (misalnya: pointer mentah, implementasi thread sendiri, mutex, dll). Beberapa dari hal-hal ini dapat "dimodernisasi", namun, hal-hal lain tidak masuk akal atau merombaknya akan memakan banyak waktu untuk membenarkan upaya tersebut. Saya sedang berupaya "memodernisasi" beberapa bagian kode, dan kode baru biasanya cenderung terlihat lebih modern.
Terus tingkatkan sistem UI, tambahkan widget dan tata letak baru, serta tingkatkan dukungan CSS.
Sederhanakan dan tingkatkan dukungan skinning/tema widget UI.
Tingkatkan/buat dokumentasi untuk modul UI.
Tambahkan lebih banyak contoh dan beberapa alat.
Tambahkan dukungan skrip, tetapi pertama-tama saya ingin menstabilkan perpustakaan, tetapi saya sedang mencapainya.
Tambahkan dukungan animasi kerangka 2D (mungkin Spine2D, tidak akan sulit untuk diterapkan).
Mungkin tidak lagi menggunakan modul Maps, karena saya akan memfokuskan upaya saya pada sistem UI.
Sean Barrett untuk stb_image dan semua perpustakaan stb.
Sam Latinga untuk Lapisan DirectMedia Sederhana.
Jonathan Dummer untuk Perpustakaan Gambar OpenGL Sederhana.
Laurent Gomila untuk SFML
Yuri Kobets untuk litehtml
Michael RP Ragazzon untuk RmlUI
rxi untuk ringan
Andreas Kling untuk SerenityOS
Ryan C. Gordon untuk mojoAL
David Reid untuk dr_libs
Lion (Lieff) untuk minimp3 dan banyak lagi
Lewis Van Winkle untuk PlusCallback
Dieter Baron dan Thomas Klausner untuk libzip
Jean-loup Gailly dan Mark Adler untuk zlib
Milan Ikits dan Marcelo Magallon untuk GLEW
Mikko Mononen untuk nanosvg
Scott Lembcke untuk Chipmunk2D
Christophe Riccio untuk glm
Rich Geldreich untuk imageresampler dan kompresor jpeg
Arseny Kapoulkine untuk pugixml
Jason Perkins untuk pembuatan awal
Martín Lucas Golini (saya) dan seluruh kontributor untuk SOIL2 dan efsw
Komunitas sumber terbuka Xiph untuk libogg dan libvorbis
Komunitas ARMmbed untuk mbed TLS
kcat untuk openal-soft
Proyek FreeType
Dan lebih banyak orang!
Lisensi MIT