Review: LibGDX Architecture and API



The Application Framework

Libgdx terdiri dari enam interface yang menyediakan sarana untuk berinteraksi dengan sistem operasi. Setiap back-end mengimplementasikan antarmuka ini, diantara lain Application, Files, Input, Net, Audio, dan Graphics.

The Life Cycle

Modules Oveview

LibGDX terdiri dari beberapa modul yang menyediakan layanan untuk setiap langkah arsitektur permainan yang khas. Sebagai berikut : Input, Graphic, File, Audio, dan Networking.

Querying

The Application interface provides various methods to query properties of the run-time environment.

Logging

Tergantung pada platformnya. Misalnya Console (Desktop), LogCat (Android) atau GWT TextArea yang disediakan di GwtApplicationConfiguration atau dibuat secara otomatis (html5)

Threading

Semua metode ApplicationListener dipanggil pada thread yang sama. Thread ini adalah thread rendering dimana panggilan OpenGL dapat dilakukan. Untuk kebanyakan game, cukup untuk menerapkan pembaruan logika dan rendering dalam metode ApplicationListener.render (), dan pada thread rendering.

Setiap operasi grafis yang secara langsung melibatkan OpenGL perlu dijalankan pada thread rendering. Untuk melewatkan data ke thread rendering dari thread lain, disarankan untuk menggunakan Application.postRunnable (). Ini akan menjalankan kode di Runnable di thread rendering di frame berikutnya, sebelum ApplicationListener.render () dipanggil.

File Handling

Aplikasi Libgdx berjalan di empat platform yang berbeda: Desktop (Windows, Linux, Mac OS X, Headless), Android, iOS, dan JavaScript / WebGL. Code di LibGDX biasanya digunakan untuk Membaca File (read), Menulis file (write), menyalin file (copy), memindahkan file (move), menghapus file (delete), mendaftarkan file dan menaruh di directory, dan memeriksa file.

File Storage dibagi 5 antara lain :

  • Classpath
  • Internal
  • Local
  • External
  • Absolute

File Handling juga bisa mengecek tersedianya penyimpanan dan jalurnya, mendapatkan FileHandler, mendaftarkan dan mengecek properti dari file.

Networking

LibGDX mencakup beberapa kelas untuk operasi jaringan lintas platform. Kelas-kelas ini lebih dikenal sebagai Gdx.net.
Fitur :

  • Permintaan HTTP lintas platform
  • Dukungan multi-platform TCP client dan server socket (tidak termasuk GWT) dengan pengaturan yang dapat dikonfigurasi
  • Pengaturan klien dan server TCP yang optimal yang bertujuan untuk low-latency
  • Akses browser lintas platform


Implementasinya
  • NET.java
  • Socket.java
  • SocketHints.java
  • ServerSocket.java
  • ServerSocketHints.java
  • HttpStatus.java
  • HttpParameterUtils.java
  • HttpRequestBuilder

Preferences

Preferensi adalah cara sederhana untuk menyimpan data kecil untuk sebuah aplikasi. Preferensi bekerja seperti peta hash, menggunakan string sebagai kunci, dan berbagai tipe primitif sebagai nilai.
Preferensi diperoleh melalui codingan berikut ini:

Preferences prefs = Gdx.app.getPreferences("My Preferences");

Read and Write Value Berikut cara memodifikasi Preferensi :

prefs.putString("name", "Donald Duck");
String name = prefs.getString("name", "No name stored");
prefs.putBoolean("soundOn", true);
prefs.putInteger("highscore", 10);

Flushing Perubahan yang dilakukan ke instance preferensi hanya akan bertahan jika Anda secara eksplisit memanggil metode flush().

Storage Pada Windows, Linux, dan OS X, preferensi disimpan dalam file xml di dalam direktori home pengguna.
Windows : %UserProfile%/.prefs/My Preferences
Linux dan OS X : ~/.prefs/My Preferences

Input Handling

Setiap platform memiliki input yang berbeda. Pada desktop input dapat berupa mouse dan keyboard. Hal yang sama juga berlaku untuk game browser. Di Android, mouse digantikan dengan touch screen. Android juga dapat mendapatkan input dari sensor yang ada di perangkatnya. Sekarang ini perangkat Android telah dilengkapi dengan berbagai sensor, seperti accelerometer, gyroscope, dan magnetic field sensor.

Configuration and Querying

Pada LibGdx untuk mengaktifkan dan menon-aktifkan perangkat input dapat dikonfigurasi menggunakan class AndroidApplicationConfiguration.

AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
config.useAccelerometer = false;
config.useCompass = false;
config.useGyroscope = true;
initialize(new MyGame(), config);

Sedangkan untuk mengetahui input yang tersedia pada platform saat game dijalankan dapat menggunakan method Input.isPeripheralAvailable();

boolean multiTouch = Gdx.input.isPeripheralAvailable(Peripheral.MultitouchScreen);

Mouse, Touch, and Keyboard

Input utama yang disupport libgdx yaitu mouse untuk desktop/browser, touch screen di Android, dan keyboard.

Keyboard

Tiga method utama untuk mendengarkan keyboard events :

  1. keyDown() : dipanggil ketika tombol ditekan.
  2. keyUp() : dipanggil ketika tombol dilepas.
  3. keyTyped() : dipanggil ketika karakter Unicode degenerate oleh input keyboard.

Mouse and Touch

Lima method untuk mendengarkan mouse & touch events :

  1. touchDown() : dipanggil ketika mouse di tekan atau layer di sentuh.
  2. touchUp() : dipanggil ketika mouse atau sentuhan di lepas.
  3. touchDragged() : dipanggil ketika mouse atau touch di drag.
  4. mouseMoved() : dipanggil ketika mouse berpindah posisi pada layar tanpa menekan tombol pada mouse.
  5. scrolled() : dipanggil ketika scroll pada mouse diputar.

Controller

Class Controller memiliki method untuk memeriksa perangkat keras yang terhubung, yaitu Controllers.getControllers().

Controller mempunyai beberapa komponen:

  • Button
  • Axes
  • POVs
  • Slider and Accelerometer

Polling untuk keadaan tertentu dapat dilakukan seperti berikut:

boolean buttonPressed = controller.getButton(buttonCode);
float axisValue = controller.getAxis(axisCode);

LibGdx menyediakan register listener untuk menerima controller events. Interface yang di implementasi untuk mendengarkan controller event disebut ControllerListener.

Gesture Detection

LibGdx menyediakan GestureDetector yang memungkinkan untuk mendeteksi gesture:

  1. touchDown : pengguna menyentuh layar
  2. longPress : pengguna menyentuh layar untuk beberapa waktu
  3. tap : pengguna menyentuh layar kemudian melepas dan menyentuh kembali layar pada area yang sama. Detector akan melaporkan koordinat saat ini dan delta antara posisi awal dan akhir
  4. pan : pengguna men-drag (menyeret) jari di layar
  5. panStop : dipanggil ketika tidak lagi panning
  6. fling : pengguna menyeret jari di layar, kemudian mengangkatnya. Berguna untuk mengimplementasi swipe gesture
  7. zoom : pengguna menempatkan dua jari di layar kemudian memindahkannya (menyeretnya) secara bersama-sama
  8. pinch : mirip dengan zoom

Untuk me-listen gesture harus mengimplement GestureListener interface dan mengirimnya ke konstruktor GestureDetector.

Simple Text Input

Untuk menerima input atau notifikasi ketika input dibatalkan, yang harus di implement adalah TextInputListener interface.

Accelerometer

Untuk menggunakan accelerometer, yang pertama kali harus dilakukan yaitu mengecek ketersediaannya ada perangkat menggunakan method Gdx.input.isPeripheralAvailable(Peripheral.Accelerometer);

Jika game membutuhkan orientasi, dapat didapatkan menggunakan method Gdx.input.getRotation(); atau Gdx.input.getNativeOrientation();

Untuk membaca accelerometer dengan LibGdx menggunakan method

  • float accelX = Gdx.input.getAccelerometerX();
  • float accelY = Gdx.input.getAccelerometerY();
  • float accelZ = Gdx.input.getAccelerometerZ();

Compass

Untuk menggunakan compass, yang pertama kali harus dilakukan yaitu mengecek ketersediaannya ada perangkat menggunakan method Gdx.input.isPeripheralAvailable(Peripheral.Compass);

Dan untuk mendapatkan sumbu x, y, dan z dapat menggunakan polling berikut:

  • float azimuth = Gdx.input.getAzimuth(); //sumbu z
  • float pitch = Gdx.input.getPitch(); //sumbu x
  • float roll = Gdx.input.getRoll(); //sumbu y

Gyroscope

Untuk menggunakan gyroscope, yang pertama kali harus dilakukan yaitu mengaktifkan gyroscope pada perangkat Android dengan

AndroidApplicationConfiguration config = new AndroidApplicationConfiguration();
config.useGyroscope = true;

kemudian mengecek ketersediaannya pada perangkat menggunakan method Gdx.input.isPeripheralAvailable(Peripheral. Gyroscope);

Untuk mendapatkan sumbu x, y, dan z dapat menggunakan polling berikut:

  • float gyroX = Gdx.input.getGyroscopeX();
  • float gyroY = Gdx.input.getGyroscopeY();
  • float gyroZ = Gdx.input.getGyroscopeZ();

Vibrator

Vibrator hanya tersedia pada perangkat Android, dan membutuhkan permission pada file manifest untuk menggunakannya.

android.permission.VIBRATE

Cursor Visibility & Catching

Cursor catching dan positioning hanya tersedia pada desktop. Dan ketika cursor tidak dibutuhkan lagi, cursor tersebut seharusnya dibuang (dispose)

Back & Menu Key Catching

Untuk menggunakan tombol back & menu pada perangkat Android, yang harus dilakukan yaitu dengan melakukan method berikut:

Gdx.input.setCatchBackKey(true); // tombol back
Gdx.input.setCatchMenuKey(true); // tombol menu

On-Screen Keyboard

Untuk memunculkan on-screen keyboard pada Android perlu menggunakan method

Gdx.input.setOnscreenKeyboardVisible(true);

Memory Management

Libgdx mempunyai beberapa class yang menerapkan antarmuka sekali pakai yang mengindikasikan bahwa id ini harus dibuang secara manual pada akhir masa pakai. Kegagalan membuang (dispose) sumber daya akan menyebabkan kebocoran memori yang parah!

Berikut ini merupakan class yang membutuhkan untuk dibuang secara manual.

  • AssetManager
  • Bitmap
  • BitmapFont
  • BitmapFontCache
  • CameraGroupStrategy
  • DecalBatch
  • ETC1Data
  • FrameBuffer
  • Mesh
  • Model
  • ModelBatch
  • ParticleEffect
  • Pixmap
  • PixmapPacker
  • Shader
  • ShaderProgram
  • Shape
  • Skin
  • SpriteBatch
  • SpriteCache
  • Stage
  • Texture
  • TextureAtlas
  • TileAtlas
  • TileMapRenderer
  • com.badlogic.gdx.physics.box2d.World
  • all bullet classes

Object Pooling

Prinsip object pooling adalah penggunaan kembali objek yang tidak aktif atau mati, alih-alih menciptakan objek baru setiap saat. LibGdx menawarkan beberapa tools untuk penggabungan yang mudah:
  • Poolable Interface
  • Objek yang mengimplementasikan interface ini akan memiliki reset () yang dipanggil saat dilewatkan ke Pool.free (Object).

  • Pool
  • Kolam objek yang bisa digunakan kembali untuk menghindari alokasi.

  • Pools
  • Menyimpan peta Pools (biasanya ReflectionPools) menurut jenis untuk akses statis yang mudah digunakan.

Audio

Libgdx menyediakan metode untuk memutar ulang efek suara kecil serta mengalirkan potongan musik yang lebih besar langsung dari disk.

Audio audio = Gdx.audio;

Bagian-bagian Audio antara lain:

  • Sound Effect
  • Sound Effect adalah sampel audio kecil, biasanya tidak lebih dari beberapa detik. Efek suara bisa disimpan dalam berbagai format. Libgdx mendukung file MP3, OGG dan WAV. RoboVM (iOS) saat ini tidak mendukung file OGG.

  • Streaming Music
  • Untuk memuat contoh Musik kita dapat melakukan hal berikut:

    Music music = Gdx.audio.newMusic(Gdx.files.internal("data/mymusic.mp3"));

  • Playing PCM Audio
  • Modul audio dapat memberi Anda akses langsung ke perangkat keras audio untuk menulis sampel PCM ke dalamnya.
    Untuk membuat instance AudioDevice baru, antara lain sebagai berikut:

    AudioDevice device = Gdx.audio.newAudioDevice(44100, true);

    Kita bisa menulis data PCM yang dilepaskan 16 bit atau data PCM 32-bit float ke perangkat:

    float[] floatPCM = ... generated from a sine for example ...
    device.writeSamples(floatPCM, 0, floatPCM.length);

    short[] shortPCM = ... generated from a decoder ...
    device.writeSamples(shortPCM, 0, shortPCM.length);

  • Recording PCM Audio
  • Anda dapat mengakses data PCM dari mikrofon pada PC atau ponsel Android melalui antarmuka AudioRecorder .

    AudioRecorder recorder = Gdx.audio.newAudioRecorder(22050, true);

Graphics

Querying and Configuring Graphics

LibGDX memiliki API yang rumit yang memungkinkan kita memantau dan menampilkan permintaan. Perubahan mode tampilan tidak didukung oleh Android dan iOS.

Continuous & Non-Continuous Rendering

Secara default di libgdx, thread rendering memanggil metode render() class ApplicationListener secara terus menerus, dengan frekuensi yang bergantung pada perangkat keras (30-50-80 kali per detik) . Jika rendering terus menerus disetel ke false, metode render() akan dipanggil hanya jika hal-hal berikut terjadi:

  • An input event is triggered
  • Gdx.graphics.requestRendering() is called
  • Gdx.app.postRunnable() is called

Clearing The Screen

Untuk menghapus layar di Libgdx tidak seperti membersihkan layar dalam aplikasi OpenGL biasa. Satu-satunya perbedaan adalah bagaimana seseorang mengakses konteks OpenGL

Taking a Screenshot

Profiling

Mengupdate panggilan OpenGL aktual yang terjadi saat permainan berjalan seringkali tidak terlalu mudah dilakukan, karena libGDX mencoba untuk menghapus semua hal tingkat rendah. Untuk memungkinkan pengumpulan informasi ini, ada GLProfiler

Viewport

Saat berhadapan dengan layar yang berbeda, seringkali perlu diputuskan untuk menentukan strategi tertentu bagaimana ukuran dan rasio aspek layar yang berbeda harus ditangani. Camera and Stage mendukung strategi viewport yang berbeda, misalnya saat melakukan pemotretan melalui Camera.project (vec, viewportX, viewportY, viewportWidth, viewportHeight).

Utility Class

  • Rendering Shapes
  • Terdapat link dokumentasi khusus untuk mempelajari pembuatan berbagai bentuk.

  • Texture & Texture Regions
  • menggunakan Spritebatch, Textureregions, and Sprites yang akan dibahas pada bab berikutnya

  • Meshes
  • Terdapat penjelasan tentang membuat dan merender mesh. Mesh sendiri adalah kumpulan verteks yang mendiskripsikan geometri untuk rendering

  • Shaders
  • Dalam OpenGL 2.0 ES semuanya dirender dengan shader. Shader merupakan program kecil yang berjalan pada GPU dan memproses data untuk dirender. Terdapat verteks shader(hanya mengeksekusi satu verteks) dan fragment shader(mengeksekusi setiap fragment). Selain itu, pada dokumentasi ini juga ada contoh sederhana program shader

  • Frame Buffer Objects
  • Terdapat link dokumentasi khusus untuk mempelajari framebuffer

2D Graphics

  1. Spritebatch, Textureregions, and Sprites
  2. Menggambar semua Spritebatch harus berada diantara begin dan end. Gambar non-spritebatch tidak digambar antara begin dan end. Texture class men-decode file gambar dan memasukkannya ke GPU memory. TextureRegion class menggambarkan persegi panjang di dalam texture dan berguna untuk menggambar sebagian texturenya. Sprite class menggambarkan baik daerah texture, geometri dimana ia akan di gambar, dan warnanya akan digambar.

  3. Animation
  4. Animasi di LibGdx menggunakan class Animation

  5. Clipping
  6. Clipping, with the use of scissorstack

  7. Orthographic Camera
  8. Orthographic Camera digunakan di lingkungan 2D karena menerapkan proyeksi paralel (orthographic) dan tidak ada faktor skala.

  9. NinePatch
  10. Gambar ninepatch adalah gambar degan area scretchable. Dengan properti tersebut seseorang dapat memuat gambar yang berulang ke daerah yang sangat kecil, atau berskala ke daerah yang sangat besar.

  11. Bitmap font
  12. LibGdx menggunakan bitmap files (png) untuk membuat font

  13. 2D Particle Effect
  14. Menggunakan particle effect adalah mudah, load partikel yang telah di generate di ParticleEditor

  15. Tile Maps
  16. LibGdx memiliki generic maps API. Semua class yang terkait dengan map dapat ditemukan di package com.badlogic.gdx.maps

  17. Scene2d
  18. Scene2d adalah 2d scene graph untuk membangun aplikasi dan UI dengan menggunakan hirarki aktor. Scene2d dilengkapi dengan baik untuk meletakkan, menggambar, dan menangani input untuk game menu, HUD overlays, tools, dan UI lainnya. Package scene2d.ui menyediakan banyak aktor dan utilitas lainnya yg khusus untuk membangun UI.

3D Graphics

Models

Model mewakili aset 3D yang terdiri dari hierarki simpul, di mana masing-masing simpul merupakan kombinasi dari geometri (jala) dan material. Opsional sebuah model juga bisa berisi informasi tentang animasi dan / atau skinning.

Materian and Environment

  • Material
  • Material adalah model (atau modelinstance) spesifik. Material disalin saat membuat ModelInstance, yang berarti bahwa mengubah material ModelInstance tidak akan mempengaruhi Model asli atau ModelInstances lainnya.

  • Environment
  • Lingkungan mengandung nilai seragam yang spesifik untuk suatu lokasi. Misalnya, lampu merupakan bagian dari Lingkungan. Aplikasi sederhana mungkin hanya menggunakan Lingkungan, sementara aplikasi yang lebih kompleks mungkin menggunakan beberapa lingkungan bergantung pada lokasi ModelInstance.

  • Ligths
  • Karena versi 1.5.7 Pencahayaan dipindahkan ke atribut, yang berarti Anda dapat menempelkan pencahayaan ke lingkungan atau material. Pencahayaan selalu digunakan dengan referensi. Pencahayaan harus disortir menurut kepentingannya.

  • Attributes

3D Animation and Skinning

Model (dan ModelInstance) dapat berisi satu atau beberapa animasi. Animasi adalah urutan (keyframes) transformasi yang diterapkan pada satu atau lebih simpul model.

Importing Blender Model in LibGDX

Blender adalah pemodelan aplikasi open source yang dapat Anda gunakan untuk membuat model 3D, adegan dan animasi.

3D Particle Effect

Jenis Efek Partikel:

  • Billboards : sprite yang selalu menghadap kamera
  • PointSprites : menggambar sprite ke titik 3d tunggal. Mereka lebih sederhana daripada Billboards , tapi lebih efisien.
  • ModelInstance : sudah familiar dengan Anda jika Anda telah melakukan pekerjaan 3D di libgdx. Mereka adalah contoh model 3D. Tidak mengherankan, ini adalah jenis efek partikel yang paling berat dalam hal kinerja.

Managing Your Assets

AssetManager membantu untuk memuat dan mengelola asset. Berikut cara yang disarankan untuk memuat asset:

  • Pemuatan resource dilakukan secara asinkron
  • Menyiman semua asset pada satu tempat
  • Memungkinkan transparently implement seperti cache

Untuk membuat AssetManager menggunakan code seperti berikut

AssetManager manager = new AssetManager();

Kemudian untuk meload asset menggunakan fungsi load()

manager.load("data/mytexture.png", Texture.class);

Jika asset masih dalam proses loading, maka kita wajib memanggil fungsi AssetManager.update(). Jika proses loading telah selesai, pangil manager.finishLoading();

Untuk mendapatkan asset dapat menggunakan fungsi get();

Texture tex = manager.get("data/mytexture.png", Texture.class);

Apabila asset tidak terpakai lagi, dapat dibuang menggunakan fungsi unload()

manager.unload("data/myfont.fnt");

Jika ingin menghapus semua asset sekali panggil, gunakan fungsi clear() atau dispose()

manager.clear();

manager.dispose();

Internationalization and Localization

Internationalization adalah proses perancangan perangkat lunak sehingga bisa berpotensi disesuaikan dengan berbagai bahasa tanpa perubahan teknik. Localization adalah proses mengadaptasinya perangkat lunak internationalization dengan menambah komponen lokal. Internationalization dan Localization sering disingkat menjadi i18n dan l10n.

Di LibGdx class I18NBundle digunakan untuk store dan fetch strings yang local sensitive. Bundle memungkinkan untuk mempermudah menterjemahkan pada perangkat lunak.

Utilities

Reading and Writing JSON

Beberapa Perintah yang ada di libgdx untuk menggunakan fungsi JSON

  1. JsonWriter: membuat style API untuk mengeluarkan dengan menggunakan JSON.
  2. JsonReader: parsing JSON dan membangun sebuah DOM dengan objek dari JsonValue
  3. JsonValue: Berupa sebuah JsonObject,array,string,float,long,Boolean,atau null.
  4. Json: menulis atau membaca semaunya object graph dengan menggunakan JsonReader & JsonWriter

Reading and Writing XML

Sama seperti JSON XML mempunyai 2 fungsi yaitu XMLReader(code) untuk membaca file yang bertype XML ke sebuah DOM . dan XMLWriter(code) digunakan untuk menggunakan API dan mengeluarkan data XML.

Collections

  1. List
  2. Primitive List
    • IntAray()
    • FloatArray()
    • BooleanArray()
    • CharArray()
    • LongArray()
    • ByteArray()

  3. Specialized Array
    • SnapshotArray()
    • DelayedRemovalArray()
    • PooledLinkedList()
    • SortedIntList()

  4. Maps
    • Primitive Maps : IntMap(), LongMap(), ObjectInMap(), ObjectFloatMap()
    • Specialized Maps : OrderedMap(), IdentityMap(), ArrayMap()

  5. Sets
  6. BinaryHeap
  7. Bisa berupa min-heap atau max-heap

Reflection

Untuk memanfaatkan refleksi dengan cara cross-platform, LibGDX menyediakan bungkus kecil di sekitar Java’s Reflection API. Pembungkus terdiri dari dua kelas yang berisi metode statis yang akan Anda gunakan untuk melakukan operasi refleksi:
ArrayReflection = fungsi array yg diambil dari API java.lang.reflect.array
ClassReflection = fungsi class yg diambil dari java.lang.class

Jnigen

Jnigen adalah perpustakaan kecil yang bisa digunakan dengan atau tanpa libgdx yang memungkinkan kode C / C ++ untuk ditulis sejajar dengan kode sumber Java. Hal ini meningkatkan lokalitas kode yang dimiliki bersama secara konseptual (metode kelas asli Jawa dan penerapan sebenarnya) dan membuat refactoring jauh lebih mudah dibandingkan dengan alur kerja JNI biasa.

GWT
Untuk menggunakan fungsi GWT ini tidak sama dengan cara menggunakan reflection pada umumnya. Jika ingin menggunakan GWT dan mengimplementasikan refleksi maka harus mengdeclare class mana yang ingin di refleksi. Saat mengkompilasi proyek HTML, LibGDX mengambil informasi itu dan menghasilkan cache refleksi yang berisi informasi tentang dan menyediakan akses ke konstruktor, bidang, dan metode kelas yang ditentukan. LibGDX kemudian menggunakan cache refleksi ini untuk mengimplementasikan refleksi api.

Math Utilities

MathUtils (kode) mencakup sejumlah peluang dan tujuan yang berguna. Ada anggota Random Statis yang praktis untuk menghindari instantiating satu kode Anda sendiri. Menggunakan contoh acak yang sama di seluruh kode Anda juga dapat memastikan perilaku deterministik secara konsisten asalkan Anda menyimpan nilai benih yang digunakan. Ada konstanta untuk konversi antara radian dan derajat serta tabel look-up untuk fungsi sinus dan kosinus. Ada juga versi float fungsi java.lang.Math umum untuk menghindari harus dilemparkan dari ganda.

Interpolasi

Umumnya dikenal sebagai tweening, interpolasi berguna untuk menghasilkan nilai antara dua titik akhir diskrit dengan menggunakan berbagai fungsi kurva. Sering digunakan dengan animasi berbingkai kunci, interpolasi memungkinkan seorang animator untuk menentukan kumpulan frame eksplisit yang jarang untuk animasi dan kemudian menghasilkan transisi yang mulus antara kerangka ini secara komputasi. Type of Interpolation : Bounce, Circle, Elastic, Exponential, Fade, Power, Sine, dan Swing.

Vector , Matric, dan Quaternions

  • Vector
  • Vektor adalah deretan angka yang digunakan untuk menggambarkan sebuah konsep dengan arah dan besaran seperti posisi, kecepatan, atau percepatan

  • Matric
  • Matriks adalah deret angka dua dimensi. Matriks digunakan dalam grafik untuk melakukan transformasi dan proyeksi verteks di ruang 3D untuk display pada layar 2D. Seperti OpenGL, Libgdx menyimpan matriks dalam urutan kolom utama. Matriks datang dalam varietas 3x3 (Matrix3) (kode) dan 4x4 (Matriks4) (kode) dengan metode yang mudah digunakan untuk memindahkan nilai di antara keduanya. Libgdx mencakup banyak operasi umum untuk bekerja dengan matriks seperti transformasi penerjemahan dan penskalaan, rotasi bangunan dari sudut Euler, pasang sudut sumbu atau kuota, proyeksi bangunan, dan perbanyakan dengan matriks dan vektor lainnya.

  • Quaternions
  • Quaternions adalah sistem bilangan empat dimensi yang memperpanjang bilangan kompleks. Mereka memiliki banyak kegunaan esoteris dalam teori matematika dan bilangan yang lebih tinggi. Khususnya dalam konteks Libgdx penggunaan unit-quaternions dapat berguna untuk menggambarkan rotasi dalam ruang tiga dimensi, karena memberikan komposisi yang lebih sederhana, stabilitas numerik, dan penghindaran kunci gimbal sehingga lebih sering disukai pada metode representasi rotasi lainnya. mungkin banyak jatuh pendek di daerah ini.

Circle, Planes, etc.

  • Bounding Boxes
  • Kotak pembatas sumbu-selaras yang berguna untuk uji persimpangan volume sederhana. Ini ditentukan oleh titik minimum dan maksimum yang menjelaskan luasan persegi panjang volumenya.

  • Circle
  • Kelas sederhana yang menggambarkan sebuah lingkaran dengan titik tengah dan jari-jari.

  • Frustum
  • Sebuah frustum adalah piramida empat sisi dengan potongan paling atas. Hal ini dapat digunakan untuk menggambarkan volume yang terlihat pada tampilan segi empat ke dalam ruang dengan proyeksi perspektif seperti halnya adegan 3D yang diproyeksikan ke monitor 2D.

  • Planes
  • Plane adalah permukaan dua dimensi tak terbatas di ruang tiga dimensi yang digambarkan oleh sebuah titik di permukaan itu dan permukaan yang normal. Pesawat dapat berguna untuk mempartisi ruang dan menentukan sektor mana yang berada pada suatu objek. Persimpangan dengan sinar (kode) atau segmen garis dapat diuji untuk menggunakan kelas Intersektor (kode).

  • Polygons
  • Sebuah kelas sederhana yang mendefinisikan poligon dua dimensi dari daftar titik. Hal ini dapat dengan mudah diterjemahkan, diputar, dan diskalakan. Ini juga menyediakan kemampuan untuk menguji titik untuk penahanan di dalam poligon. Perpotongan poligon ke poligon dapat diuji dengan menggunakan kelas Intersektor (kode), dengan asumsi poligon bersifat cembung.

  • Rays
  • Rays adalah segmen garis tak terbatas dalam satu arah. Ini ditentukan oleh asal dan arah satuan-panjang

  • Rectangle
  • Sebuah kelas sederhana yang menggambarkan persegi panjang sumbu-selektif dua dimensi yang digambarkan oleh titik sudut kiri bawah dan lebar dan tinggi.

  • Segment
  • Sebuah kelas sederhana yang menggambarkan segmen garis dalam ruang tiga dimensi yang didefinisikan oleh dua titik akhir.

  • Spheres
  • Kelas sederhana yang menggambarkan bidang tiga dimensi yang didefinisikan oleh titik pusat dan radius.

Path Interface and Splines

Path Interface (code) memiliki implementasi yang memungkinkan Anda melintasi dengan lancar melalui serangkaian titik pasti (dalam beberapa kasus, garis singgung juga). Jalur dapat didefinisikan sebagai dimensi dua atau tiga dimensi, karena ini adalah templat yang mengambil turunan kelas Vektor, sehingga Anda dapat menggunakannya dengan seperangkat Vector2 atau Vector3's.

Tools

Texture Packer

Dalam OpenGL, tekstur terikat, beberapa gambar selesai, tekstur lain terikat, lebih banyak gambar dilakukan, dll. Mengikat teksturnya relatif mahal, jadi sangat ideal untuk menyimpan banyak gambar lebih kecil pada gambar yang lebih besar, mengikat tekstur yang lebih besar. sekali, kemudian menarik sebagian dari itu berkali-kali. Ligdx mempunyai sebuah class yang bernama yang merupakan aplikasi command line yang mengemas banyak gambar yang lebih kecil ke gambar yang lebih besar. Ini menyimpan lokasi gambar yang lebih kecil sehingga mudah dikenali dengan nama dalam aplikasi Anda menggunakan kelas TextureAtlas.

Hiero

Hiero adalah perlengkapan yang berupa font.

2D Particle Editor

The libgdx 2D Particle Editor adalah alat yang ampuh untuk membuat efek partikel.
Property panel elements : Active Button, Number, dan Chart

Property

  • Delay = Saat efek dimulai, pemancar ini tidak akan melakukan apapun selama milidetik ini. Ini bisa digunakan untuk menyinkronkan beberapa pemancar.
  • Duration = Berapa lama emitor akan memancarkan partikel. Perhatikan hal ini tidak sama dengan berapa lama partikel akan hidup.
  • Count = Kontrol jumlah partikel minimum yang harus selalu ada, dan jumlah partikel maksimal yang mungkin ada.
  • Emission = Berapa banyak partikel yang dikeluarkan pada setiap detik
  • Life = berapa lama partikel hidup.
  • Life offset = Berapa banyak kehidupan yang habis ketika sebuah partikel muncul
  • X Offset dan Y Offset= Jumlah dalam piksel untuk mengimbangi dimana partikel muncul.
  • Spawn= Bentuk yang digunakan untuk meuncul, partikel: titik, garis, persegi, atau elips. Ellipse memiliki pengaturan tambahan.
  • Spawn Width dan Spawn Height= Mengontrol ukuran dari bentuk muncul.
  • Size = ukuran dari partikel
  • Velocity = kecepatan dari sebuah partikel
  • Angel = Arah partikel bergerak. Tidak terlalu berguna jika kecepatan tidak aktif.
  • Rotation = perputaran dari sebuah partikel.
  • Wind dan Gravity= Sumbu sumbu x atau sumbu y untuk diterapkan pada partikel, dalam piksel per detik.
  • Tint = Warna partikel. Klik segitiga kecil lalu gunakan slider untuk mengganti warnanya. Klik di bilah di atas segitiga untuk menambahkan lebih banyak segitiga. Hal ini memungkinkan Anda membuat partikel berubah menjadi sejumlah warna selama masa pakainya. Klik dan seret untuk memindahkan segitiga (jika tidak di awal atau akhir). Klik dua kali untuk menghapus.
  • Transparency = Mengontrol alfa partikel. Bagan ini berbeda dari yang lain karena Anda tidak dapat memodifikasi rentang vertikalnya. Itu selalu dari 0 sampai 1.

Path Editor

Extentions

  • Artificial Intelligence
  • gdx-freetype
  • gdx-pay
  • Gdx-pay bertujuan untuk menyediakan cross-platform API untuk in-app purchasing

  • Physics
  • LibGdx mempunyai 2 physic library yang berbeda, Box2D dan Bullet. Box2D untuk 2D physic dan Bullet untuk 3D physic

Third Party Services

Libgdx bisa diintegrasikan dengan banyak third party services, seperti :

  • Admob
  • Google Mobile Ads
  • Me-replace Admob yang deprecated. Google AdMob adalah layanan iklan nomor satu yang digunakan developer Android dan LibGdx

  • Swarm
  • NextPeer
  • Google Play Game Services
  • Menawarkan platform dengan leaderboard, achievement, dan banyak lagi (realtime multiplayer, cloud save, anti-piracy)