Wednesday, July 9, 2014

Game Panda3D

Tugas Softskill Teori Game
Nama Kelompok:
Deny Santoso (51411868)
Joko Firmantoro (53411850)
Maisaroh (59411360)
Razib Kani Maulidan (55411925)


Bab III

Pembahasan Game Panda3D

          Panda3D Dimulai pada versi 1.7.0, Panda memberikan kemasan dan distribusi sistem yang dirancang untuk membuat aplikasi panda3d sangat mudah didistribusikan ke seluruh dunia, baik tertanam dalam sebuah halaman web atau didistribusikan sebagai aplikasi sendiri.

3.1 File P3D
File P3D adalah inti dari sistem pengemasan Panda. Ketika aplikasi panda3D dikemas untuk didistribusikan, kita akan mengemasnya menjadi file P3D. File ini berisi semua yang anda butuhkan untuk menjalankan aplikasi Panda3D: kode Python, model, tekstur, file RRC, bahkan dikompilasi dll atau PYD jika bagian dari aplikasi Anda ditulis dalam C + +.
File P3D merupakan Panda multifile objek; Anda dapat memeriksa isinya atau menambah dan menghapus komponen dengan perintah multify, seperti multifile apapun. Namun, file P3D adalah jenis khusus dari multifile yang khusus ditujukan untuk aplikasi Panda. Ekstensi file ". P3D" digunakan untuk membedakannya dari multifile generik (yang mungkin berisi sesuatu apapun).
Meskipun dimungkinkan untuk membangun sebuah file P3D dengan tangan menggunakan perintah multify, biasanya lebih mudah untuk menggunakan salah satu alat kemasan yang disediakan, seperti packp3d atau ppackage, untuk membuat file P3D baru dari aplikasi pada disk.
File P3D menunjukkan versi tertentu Panda3D yang harus digunakan untuk menjalankan aplikasi . Hal ini memungkinkan kita untuk menulis aplikasi yang menggunakan versi tertentu dari Panda3D, tanpa harus terpaksa memperbaruinya ketika versi baru dari Panda3D dilepaskan.

3.3.1 Penggunaan PackageP3D
Cara termudah untuk membuat file P3D adalah dengan menggunakan perangkat packp3d. Program ini didistribusikan dengan distribusi pengembangan Panda3D. (Itu terjadi berkas P3D itu sendiri, tapi itu hanya sebuah detail.) Anda harus menggunakan program packp3d yang dilengkapi dengan versi Panda3D yang Anda gunakan untuk mengembangkan aplikasi Anda, karena packp3d terikat pada versi tertentu sendiri Panda3D, dan akan membangun sebuah file P3D yang berjalan dengan versi tertentu. Anda harus menjalankan packp3d dari baris perintah. Dari shell perintah, jalankan perintah:
packp3d-o myapp.p3d-d c :/ myapp
di mana "myapp.p3d" adalah file P3D Anda ingin menghasilkan, dan "c :/ myapp" adalah folder yang berisi aplikasi Anda, termasuk semua kode dan model.

Perhatikan bahwa Anda harus memiliki executable panda3d pada PATH tersebut agar di atas untuk bekerja. Para panda3d executable harus telah diinstal ketika Anda menginstal runtime Panda3D (ini adalah sebuah download yang terpisah dari Panda3D SDK). Anda mungkin perlu untuk memperpanjang variabel PATH Anda untuk menemukan secara otomatis pada baris perintah, dengan menambahkan folder instalasi plugin untuk PATH Anda. Pada Windows, hal ini adalah folder c: \ Program Files \ Panda3D secara default. Perintah di atas akan memindai isi c :/ myapp dan menambahkan semua file yang relevan yang ditemukan dalam direktori tersebut dan di bawah ke dalam file P3D myapp.p3d, membuat paket aplikasi. Ada beberapa konvensi yang perlu Anda pahami.
packp3d mengasumsikan bahwa titik awal dari aplikasi Anda dalam file Python "main.py", yang ditemukan dalam tingkat atas dari folder aplikasi. Jika Anda memiliki file Python berbeda yang dimulai dari aplikasi, Anda dapat memberi nama file ini dengan parameter-m untuk packp3d, misalnya "-m mystart.py".
Jika aplikasi Anda seluruhnya ditulis dalam C + +, masih harus memiliki titik masuk Python yang akan digunakan oleh sistem plugin Panda3D, sehingga Anda akan perlu untuk memberikan sedikit trivial kode Python untuk memuat dan mulai C + + aplikasi. Setiap file RRC dalam level teratas dari folder aplikasi akan dimuat secara otomatis pada saat runtime, seakan $ PANDA_PRC_DIR yang ditetapkan untuk aplikasi nama folder Anda; Anda tidak perlu memuat secara eksplisit dalam kode Python Anda.
Setiap file telur ditemukan dalam folder aplikasi akan secara otomatis dikonversi ke file bam untuk menyimpan dalam file P3D. File Bam biasanya merupakan pilihan yang jauh lebih baik untuk mendistribusikan aplikasi, karena mereka lebih kecil dan mereka memuat lebih cepat. Namun, ini tidak berarti bahwa Anda tidak dapat menentukan ekstensi file model Anda ketika Anda memuat model Anda dalam kode, karena mereka tidak akan memiliki ekstensi dalam file P3D "telur."; Anda harus menghilangkan ekstensi nama file sama sekali. Jika Anda ingin menyimpan beberapa file telur Anda sebagaimana adanya, tanpa mengkonversi mereka ke dor file, Anda harus menggunakan utilitas ppackage lebih maju untuk membuat file P3D Anda. Model apapun file bahwa beban aplikasi Anda dari beberapa sumber di luar folder aplikasi tidak akan ditemukan. Anda harus memastikan bahwa ini akan disalin ke dalam folder aplikasi dan dimuat dari sana. (Namun, file tekstur yang direferensikan oleh telur atau file bam dalam folder aplikasi secara otomatis akan disalin ke dalam file P3D, tidak peduli di mana mereka ditemukan pada disk.)
Ada opsi tambahan untuk packp3d untuk lebih penggunaan maju. Seperti halnya Panda3D aplikasi baris perintah, Anda dapat menentukan "-h" pada baris perintah untuk daftar set lengkap pilihan yang tersedia.

3.1.1 Package Referensi
Ketika sistem plugin Panda3D menjalankan file P3D Anda, pertama kali harus men-download versi yang benar Panda3D, serta paket-paket tambahan berkas P3D Anda membutuhkan untuk menjalankan. Umumnya, paket tambahan merupakan bagian dari sistem Panda3D yang tidak dibutuhkan oleh semua file P3D, dan sebagainya telah dipisahkan untuk meminimalkan men-download yang tidak perlu.
Set saat paket tambahan yang disediakan oleh tim Panda3D adalah:

FMOD - Sistem audio Fmod, perpustakaan sumber tertutup yang hanya untuk penggunaan non-komersial bebas biaya.  OpenAL - Sistem audio OpenAL, sebuah perpustakaan audio yang bebas di kedua arti kata, tetapi tidak bekerja dengan baik pada semua platform. Audio - Termasuk paket ini secara implisit mencakup baik FMOD atau OpenAL, mana yang terbaik pada platform saat ini. Ini adalah pilihan yang baik untuk mengaktifkan audio untuk non-GPL, aplikasi non-komersial.  telur - telur loader. Sertakan paket ini jika Anda ingin memuat file telur atau menggunakan perpustakaan telur pada saat runtime. Sejak packp3d secara otomatis mengkonversi file telur untuk dor file, aplikasi yang paling tidak perlu menyertakan paket ini.
Visi - Para Panda3D perpustakaan visi, mengandung webcam, visi komputer dan dukungan augmented reality.
ode - Mesin ODE fisika.
PhysX - Para PhysX fisika mesin. Hanya fungsional pada 32-bit Linux dan Windows.
wx - Sistem wxPython GUI.
tk - Sistem Tk GUI.
ai - Para Pandai perpustakaan.
morepy - Sebuah koleksi modul Python default. Anda mungkin perlu menandai ini sebagai ketergantungan jika Anda menemukan modul Python standar yang hilang ketika menjalankan permainan Anda.
Ada juga paket-paket lain untuk Python perpustakaan, seperti httplib2, numpy, pil, pycurl, pygame, PyOpenGL, sqlite, tk dan memutar. Paket lainnya dapat ditambahkan jika ada kebutuhan. Untuk memasukkan salah satu paket di atas dalam file P3D Anda, gunakan "-r" parameter untuk packp3d, misalnya "packp3d-o myapp.p3d-r audio r ode".

3.1.3  Menjalankan file p3d
Setelah Anda telah membangun berkas P3D, Anda dapat menjalankannya langsung dengan program panda3d:
panda3d myapp.p3d
Ingat, Anda mungkin perlu menambahkan panda3d ke PATH Anda terlebih dahulu. Pada Windows, hal ini diinstal ke c: \ Program Files \ Panda3D secara default. Jika Anda berjalan di Linux atau Mac, atau menjalankan Cygwin pada Windows, Anda dapat menghilangkan "panda3d" dan hanya menjalankan file P3D Anda secara langsung sebagai perintah sendiri, jika memiliki izin eksekusi. Anda mungkin juga dua kali ikon P3D file pada desktop Anda, atau di Explorer atau browser Finder, yang secara otomatis memanggil panda3d.
Sekarang Anda dapat memilih untuk mendistribusikan berkas P3D ini langsung ke teman-teman Anda. Jika mereka telah menginstal plugin Panda3D, mereka juga dapat menjalankannya dengan mengklik dua kali pada icon-nya. Ini adalah cara yang mudah dan tanpa basa-basi untuk mendistribusikan aplikasi Anda, dan menyelamatkan Anda dari harus dipusingkan dengan embedding berkas P3D Anda ke sebuah halaman web, atau kemasan sebagai aplikasi mandiri.

3.2  Mendistribuasikan  melalui web
Salah satu keuntungan besar kemasan aplikasi Anda ke dalam sebuah file P3D adalah bahwa adalah mungkin untuk menanamkan file P3D ke dalam halaman web, sehingga aplikasi Anda dapat dijalankan hanya dengan mengunjungi alamat web tertentu. Halaman-halaman berikut menggambarkan teknik ini.
3.2.1 Penyisipan dengan elemen objek
Ada dua sintaks yang berbeda untuk menanamkan berkas P3D dalam halaman web. Internet Explorer memerlukan satu sintaks tertentu, dan setiap browser lain di dunia membutuhkan sintaks lain, mirip tapi sedikit berbeda. Untungnya, adalah mungkin untuk menulis sebuah halaman web tunggal yang mendukung sintaks pada saat yang sama.

Diskusi ini mengasumsikan Anda merasa nyaman dengan menulis kode HTML di halaman web. Jika Anda tidak terbiasa dengan sintaks HTML, kami sarankan Anda mempelajari tutorial singkat tentang cara menulis halaman web menggunakan HTML sebelum melanjutkan.

Untuk Internet Explorer, Anda harus menggunakan elemen <object> untuk menanamkan berkas P3D, dengan kode seperti ini:

<width = object "640" height = "480"
   classid = "CLSID: 924B4927-D3BA-41EA-9F7E-8A89194AB3AC">
     <param name="data" value="myapp.p3d">
</ object>
Perhatikan bahwa lebar dan tinggi yang ditetapkan sebagai atribut untuk elemen <object>. Para classid string literal, dan harus selalu string yang tepat yang ditunjukkan di atas; ini adalah string yang mengidentifikasi plugin Panda3D. URL dari file P3D akan diluncurkan harus ditentukan sebagai atribut dari elemen <param> bersarang, seperti yang ditunjukkan di atas.

Untuk browser lainnya, Anda juga menggunakan elemen <object>, tapi tampaknya sedikit berbeda:

<width = object "640" height = "480"
   type = "application/x-panda3d" data = "myapp.p3d">
</ object>
Dalam browser Explorer non-Internet, Anda mengidentifikasi plugin Panda3D dengan tipe string = "application/x-panda3d", bukan dengan string classid digunakan oleh Internet Explorer. Juga, URL dari file P3D ditetapkan sebagai atribut dari elemen object, bukan di elemen <param> bersarang.

Dalam rangka untuk merancang sebuah halaman web yang bekerja pada browser apapun - dan Anda harus selalu merancang halaman web yang melakukan - Anda dapat menanamkan satu elemen <object> dalam lainnya. Ini bekerja karena jika browser menemukan sebuah elemen <object> bahwa itu tidak mengerti, itu seharusnya memuat apa pun dalam lingkup yang bersarang <object> 's, yang mungkin elemen <object> lain. Jadi, misalnya, contoh di atas dapat ditulis seperti ini:

<width = object "640" height = "480"
   type = "application/x-panda3d" data = "myapp.p3d">
     <width = object "640" height = "480"
       classid = "CLSID: 924B4927-D3BA-41EA-9F7E-8A89194AB3AC">
         <param name="data" value="myapp.p3d">
     </ object>
</ object>
Unsur <object> luar adalah versi non-Internet Explorer, dan dalam hal yang tidak dipahami (misalnya, karena pengguna menjalankan Internet Explorer), maka akan jatuh ke elemen <object> batin sebaliknya, yang versi Internet Explorer.

Kami merekomendasikan menempatkan versi Explorer non-Internet di luar, karena beberapa versi Safari tampaknya bingung jika mereka menemukan versi Internet Explorer pertama.
Perhatikan bahwa ada tambahan, atribut opsional yang dapat diberikan baik berupa tag <object>. Ini dibahas dalam tag objek Advanced.

3.2.3. Memancangkan dengan RunPanda3D
Menggunakan elemen <object> bersarang adalah cara mudah untuk menanamkan file P3D Anda, tetapi memiliki dua kelemahan. Secara khusus, (1) memerlukan Anda untuk menentukan semua opsi dua kali, yang mempromosikan kesalahan; dan (2) tidak bekerja jika Anda perlu untuk menentukan sebuah "id" atribut untuk mengakses objek Plugin tertanam Anda melalui JavaScript, karena Anda tidak bisa menentukan yang sama "id" atribut dua elemen <object> berbeda.
Ada alternatif lain yang memecahkan kedua masalah, menggunakan JavaScript. Tentu saja, ini mensyaratkan bahwa pengguna akhir Anda akan telah mengaktifkan JavaScript, tapi ini umum; dan halaman web Anda mungkin memiliki persyaratan ini pula jika Anda berencana untuk mengontrol aplikasi P3D Anda melalui JavaScript.
Ada sebuah file JavaScript yang disebut Run Panda3D.js yang didistribusikan dengan sumber Panda3D. Anda akan menemukannya di direktori langsung / src / script langsung. Cukup salin file JavaScript ini ke host web Anda, dan referensi dalam halaman web Anda seperti ini:
<head>
... other head content ...
<script src="RunPanda3D.js" type="text/javascript"></script>
... other head content ...
</head>
<body>
... other body content ...
<script type="text/javascript">
P3D_RunContent('data', 'myapp.p3d', 'id', 'myapp_id',
    'width', '640', 'height', '480')
}
</script>
... other body content ...
</body>

Artinya, Anda harus menyertakan referensi ke RunPanda3D.js dalam bagian head dari halaman web Anda; dan Anda termasuk panggilan ke Konten fungsi P3D_Run () dalam bagian body dari halaman web Anda.
P3D_RunContent () akan menghasilkan bentuk yang tepat dari elemen <object> untuk mana pengguna browser saat ini sedang berjalan: baik berupa Internet Explorer, atau bentuk non-Internet Explorer. Unsur objek dihasilkan melalui document.write (), di mana pun panggilan untuk P3D_RunContent () muncul dalam halaman web Anda.
Parameter ke P3D_RunContent () harus diberikan secara berpasangan: masing-masing dua parameter, parameter pertama adalah kata kunci, dan parameter kedua adalah nilai. Hal ini setara dengan kata kunci = "value" pair muncul dalam elemen <object>. Misalnya, panggilan di atas akan menghasilkan elemen sesuatu <object> seperti ini:

<object data="myapp.p3d" id="myapp_id" width="640" height="480">

</object>

(meskipun juga akan menambah baik classid atau jenis, sesuai dengan jenis browser pengguna menjalankan.)
Menggunakan P3D_RunContent () juga menambahkan dua tambahan tag jendela Splash, noplugin_img dan tidak ada Plugin href. Tag ini tidak tersedia jika Anda menanamkan menggunakan sintaks <object> langsung.
3.2.4  Tentang Sertifikat
Bila file P3D tertanam dalam sebuah halaman web, itu berpotensi dapat mulai berjalan segera setelah pengguna mengunjungi halaman web. Ini bisa menjadi masalah keamanan besar bagi pengguna, jika orang jahat menginstal malware di berkas P3D. Perlu ada cara bagi pengguna untuk mencegah file P3D dari berjalan tanpa persetujuan nya.

Untuk mengatasi masalah ini, Panda3D menggunakan pendekatan penandatanganan sertifikat. Sebelum Anda dapat menempatkan berkas P3D pada halaman web, Anda harus masuk dengan sertifikat khusus yang mengidentifikasi Anda dan hanya Anda. Ketika pengguna mengunjungi halaman web Anda, dan melihat file yang P3D ditandatangani Anda, ia akan ditampilkan sertifikat Anda, dan diberi kesempatan untuk menyetujuinya.

Setelah pengguna menyetujui sertifikat Anda, aplikasi akan diizinkan untuk menjalankan. (Dan aplikasi ini, dan semua aplikasi lain yang ditandatangani oleh sertifikat yang sama, juga akan berjalan secara otomatis dalam waktu tanpa persetujuan lebih lanjut.)

3.2.4.1  Public Key, private key
Sertifikat memiliki dua komponen: kunci publik, yang disalin ke setiap file P3D Anda mendaftar dan terlihat untuk semua orang; dan kunci pribadi, yang harus Anda tetap rahasia dan aman. Jika ada yang memperoleh akses ke kunci pribadi Anda, mereka dapat menggunakannya untuk menandatangani file P3D dengan nama Anda, yang berarti bahwa pengguna sah bisa menyalahkan Anda untuk menginstal virus pada komputer mereka!

Tergantung pada sumber yang disediakan sertifikat Anda, Anda mungkin memiliki kunci publik dan kunci pribadi disimpan dalam dua file terpisah, atau mereka dapat dikombinasikan ke dalam file yang sama. Apapun cara Anda menyimpannya, Anda harus menjaga aman kunci pribadi; yang terbaik untuk tetap terenkripsi dengan password, dan mendekripsi itu hanya ketika Anda menggunakannya.

3.2.4.2  Self-Signed Certificate
Para sertifikat yang ditandatangani sendiri adalah jenis yang paling sederhana untuk memperoleh sertifikat, karena tidak memerlukan bekerja dengan lembaga sertifikat. Anda dapat menghasilkan sertifikat yang ditandatangani sendiri pada Anda sendiri, dan Anda dapat menggunakannya untuk menandatangani file P3D Anda.

Sebuah sertifikat yang ditandatangani sendiri tidak sebagus sertifikat dikonfirmasi, meskipun, karena tidak ada yang menyatakan bahwa Anda benar-benar adalah yang Anda mengklaim untuk menjadi. Pengguna harus mengambil kata-kata Anda untuk itu. Jika Anda menggunakan sertifikat yang ditandatangani sendiri untuk menandatangani berkas P3D Anda, pengguna akan disajikan dengan peringatan, dan akan harus melalui langkah tambahan untuk menyetujui sertifikat Anda. Kami sarankan Anda menggunakan sertifikat yang ditandatangani sendiri hanya untuk pengembangan internal, tetapi mendapatkan sertifikat dikonfirmasi normal ketika Anda siap untuk membuat aplikasi Anda tersedia untuk umum.

Anda dapat menggunakan perintah openssl untuk menghasilkan sertifikat yang ditandatangani sendiri. Anda mungkin sudah memiliki openssl diinstal jika Anda berjalan di Linux atau Mac; jika Anda berada di Windows, Anda dapat menemukannya di internet dengan mudah.

Sebuah urutan perintah sampel untuk menghasilkan sertifikat yang ditandatangani sendiri berikut:
openssl genrsa 1024 > mycert.pem

openssl req -new -x509 -nodes -sha1 -days 365 -key myce

3.2.3 https (Apache) certificates
Jika Anda sudah memiliki website SSL-dilindungi dengan alamat https sendiri, maka Anda dapat menggunakan sertifikat bahwa website untuk menandatangani file P3D Anda. Ketika pengguna ditampilkan sertifikat Anda, dia / dia akan diberitahu sesuatu seperti "Aplikasi ini telah ditandatangani oleh myhost.mydomain.net," di mana myhost.mydomain.net adalah hostname website Anda. Jika pengguna mengetahui halaman web Anda, maka ini akan meyakinkan pengguna bahwa itu aman untuk mengizinkan aplikasi P3D Anda untuk menjalankan.

Jenis sertifikat mungkin paling tepat untuk berkas P3D perusahaan atau komersial; pengguna mungkin erat mengidentifikasi alamat web perusahaan dengan perusahaan itu sendiri.

Panda3D memerlukan sertifikat Anda harus diformat dalam bentuk PEM, yang merupakan format yang digunakan oleh Apache. Jika Anda menggunakan Apache untuk host website Anda, maka Anda dapat menggunakan kunci publik dan swasta file sertifikat kunci langsung dari sistem anda direktori instalasi. (Mungkin juga ada berkas ketiga, yang berisi daftar rantai otentikasi sertifikat. Jika demikian, semua tiga file yang diperlukan untuk menandatangani berkas P3D Anda.) Jika Anda menggunakan IIS atau beberapa perangkat lunak lain untuk host website Anda, maka Anda mungkin perlu mengkonversi ke bentuk sertifikat PEM pertama; Anda dapat menggunakan perintah openssl untuk melakukan hal ini. Mencari di internet untuk urutan perintah yang tepat.
Anda dapat memperoleh sertifikat HTTPS dari berbagai sumber; mereka kisaran harga cukup, dan banyak yang cukup murah. Beberapa perusahaan menawarkan sertifikat HTTPS sepenuhnya bebas biaya, tetapi ini biasanya datang dengan tanggal kedaluwarsa yang sangat singkat (90 hari atau lebih).
3.2.4.4 Email Certificate
Anda juga dapat menggunakan sertifikat email pribadi untuk menandatangani file P3D Anda. Ketika Anda melakukan ini, dan pengguna ditampilkan sertifikat Anda, dia / dia akan mengatakan "Aplikasi ini telah ditandatangani oleh yourname@youraddress.net," yang meyakinkan pengguna identitas pribadi Anda.

Sertifikat email kadang-kadang disebut sertifikat S / MIME, karena dapat digunakan untuk mengirim email terenkripsi dan ditandatangani melalui standar S / MIME internasional.

Jenis sertifikat mungkin paling tepat untuk berkas P3D diproduksi oleh perorangan atau oleh sekelompok kecil. Menandatangani berkas P3D dengan alamat email Anda sendiri adalah sentuhan yang sangat pribadi.

Anda dapat memperoleh sertifikat email dari berbagai sumber. Banyak perusahaan mengenakan biaya nominal untuk sertifikat email ditujukan untuk penggunaan perusahaan, tetapi beberapa perusahaan juga menawarkan sertifikat email benar-benar bebas biaya untuk penggunaan pribadi, biasanya dengan tanggal kadaluarsa 1 tahun. (Tanggal kedaluwarsa adalah gangguan, tapi tidak batas. Anda bisa menggantinya dengan sertifikat baru ketika itu berakhir.)

Proses untuk mendapatkan sertifikat email dapat sedikit berbelit-belit. Biasanya, Anda akan mengisi formulir di website perusahaan, menerima email untuk mengkonfirmasi alamat email Anda, klik pada link dalam email, kemudian men-download sertifikat ke browser Anda. Setelah itu telah dipasang di browser Anda, Anda dapat menemukan sertifikat bawah menu Preferences, dan menyimpannya (sebagai "cadangan") ke file pkcs12 pada disk, dengan ekstensi p12.. Kemudian Anda dapat mengubahnya menjadi file pem menggunakan openssl, dengan urutan perintah:
3.2.4  Signing file p3d
Once you have a certificate, you can use it to sign any of your p3d files. Be sure the certificate is in pem format; use the openssl command to convert it to pem format first if you need to.
The easiest way to sign a p3d file is to specify the -S parameter to packp3d at the time you generate it:
openssl pkcs12 -in mycert.p12 -out mycert.pem -nodes
Di atas adalah perintah yang sesuai untuk digunakan jika kunci publik dan kunci pribadi digabungkan dalam file yang sama. Jika mereka terpisah, Anda dapat menentukan kedua file dengan "S-mypublic.pem,, myprivate.pem". (Catatan koma ganda, itu perlu.) Jika anda juga memiliki file rantai sertifikat, maka Anda harus menentukan semua tiga file: "-S mypublic.pem, mychain.pem, myprivate.pem".

Hal ini juga memungkinkan untuk menandatangani berkas P3D setelah telah dihasilkan, dengan perintah multify:
multify -S mycert.pem -uvf myapp.p3d

multify -S mycert.pem,mychain.pem,myprivate.pem -uvf myapp.p3d
Anda dapat menambahkan beberapa tanda tangan untuk berkas P3D. Jika pengguna telah menyetujui salah satu sertifikat yang digunakan untuk menandatangani berkas P3D, maka file P3D akan dipertimbangkan secara otomatis disetujui. Jika pengguna telah menyetujui tidak ada sertifikat, maka yang pertama (dan hanya yang pertama) digunakan untuk menandatangani file akan disajikan kepada pengguna untuk persetujuan.

3.3 Pengaturan Konfigurasi file P3D
Anda dapat menetapkan pengaturan konfigurasi tertentu dalam file P3D pada baris perintah packp3d. Ini mengendalikan cara file P3D dapat digunakan atau tertanam.
Beberapa dari setting ini juga dapat diatur dalam tag objek HTML digunakan ketika file P3D tertanam pada halaman web. Jika pengaturan konfigurasi ditentukan di kedua tempat, halaman HTML menimpa.


Untuk menentukan pilihan konfigurasi, gunakan opsi baris perintah "-c pengaturan = value" pada baris perintah packp3d, atau menggunakan konfigurasi (pengaturan 'value' =) fungsi dalam file pdef. Anda dapat mengulangi pilihan ini untuk mengatur pengaturan konfigurasi multiple pada file yang diberikan.
Setting
Meaning
auto_start
"1" untuk meluncurkan aplikasi tanpa menunggu hijau "bermain" tombol
hidden
"1" untuk menghindari membuka jendela Panda3D
log_basename
Menentukan file log dalam Panda3D/log untuk menulis untuk aplikasi ini
prc_name
Menentukan nama direktori di dalam Panda3D/prc dari mana file pengguna RRC kustom untuk aplikasi ini akan dimuat
start_dir
Menentukan nama direktori di dalam Panda3D/start yang akan menjadi direktori saat ini ketika aplikasi ini dijalankan. Ini tidak digunakan jika keep_user_env, bawah, diatur "1".
allow_python_dev
"1" untuk memungkinkan pengguna untuk masuk ke dan debug kode Python, dengan "-i" pilihan untuk panda3d. The-D pilihan untuk packp3d dan ppackage juga disediakan sebagai cara yang nyaman untuk untuk mengatur opsi ini.
keep_user_env
"1" jika variabel lingkungan pengguna, dan direktori kerja saat ini, harus dipertahankan ketika menjalankan aplikasi ini. Biasanya, sebagian besar variabel lingkungan di-reset ke nilai default, atau dibersihkan sama sekali. Anda biasanya akan menentukan ini untuk aplikasi command-line, di mana pengguna mungkin ingin melestarikan lingkungan nya; misalnya, packp3d.p3d sendiri menetapkan pilihan ini. Ini tidak masuk akal untuk mengatur hal ini untuk file P3D yang dimaksudkan untuk dijalankan dalam halaman web.
run_origin
Daftar dipisahkan koma dari nama host yang diizinkan untuk menanamkan aplikasi ini pada halaman web. Standarnya adalah hostname apapun. Lihat P3D asal keamanan.
script_origin
Daftar dipisahkan koma dari nama host yang diperbolehkan untuk langsung memanggil metode Python terpapar oleh aplikasi ini dari JavaScript dalam halaman web. Standarnya adalah tidak hostname. Lihat P3D asal keamanan.
height
width
lebar Ukuran default dari jendela yang dibuat untuk file P3D, ketika dijalankan dari desktop (atau melalui aplikasi panda3d). Ini tidak digunakan ketika file P3D tertanam dalam sebuah halaman web, karena dalam kasus embed akan menentukan tinggi dan lebar.
Semua pengaturan konfigurasi ini sebenarnya disimpan dalam file p3d_info.xml yang tertanam dalam multifile P3D. Karena mereka menjadi bagian dari file P3D itu sendiri, pengaturan konfigurasi yang tepat merupakan bagian dari tanggal yang ditandatangani ketika Anda menandatangani berkas P3D; dengan demikian, mengubah salah satu pengaturan ini nanti (tanpa re-penandatanganan) akan membatalkan tanda tangan Anda. Hal ini untuk mencegah orang dari mengubah pengaturan konfigurasi aplikasi Anda tanpa persetujuan Anda.
3.4 Mendistribusikan sebagai installer yang Mandiri
Hal ini dimungkinkan untuk mendistribusikan berkas P3D Anda sebagai aplikasi sepenuhnya mandiri. Anda dapat menggunakan file P3D Anda untuk menghasilkan installer kustom, dan mendistribusikan installer ini untuk pengguna Anda. Installer akan menghasilkan aplikasi-sepenuhnya mandiri yang tidak membutuhkan pengguna untuk menginstal plugin Panda3D secara terpisah. Pengguna tidak pernah perlu tahu bahwa ia / dia berjalan Panda3D sama sekali.

Hal ini dapat dilakukan dengan menggunakan utilitas pdeploy. Ia memiliki kemampuan menghasilkan installer grafis untuk semua platform yang dikenal, sehingga Anda tidak perlu boot sistem operasi yang berbeda hanya untuk menghasilkan installer untuk platform tersebut. Namun, perlu diketahui bahwa pdeploy memerlukan koneksi internet untuk menjalankan.

Untuk informasi tentang opsi baris perintah, Anda dapat meminta:
pdeploy -h
This will print the help text for pdeploy, along with information about every supported command-line option.
Generating an installer
You can create a graphical installer for your game using a command similar to:
pdeploy -s -N "My Cool Game" -v 1.0.0 myCoolGame.p3d installer
Hal ini akan menciptakan berbagai subdirektori di direktori saat ini, satu untuk semua platform, yang berisi installer grafis yang menginstal game Anda. (Anda dapat menentukan direktori keluaran kustom dengan opsi-o.) Para Panda3D perpustakaan tidak dikemas dengan installer, tetapi mereka akan secara otomatis di-download ketika permainan ini berlari untuk pertama kalinya.

Opsi-s memastikan installer mandiri dibuat yang tidak memerlukan koneksi internet untuk menjalankan. Installer yang dihasilkan juga akan berisi perpustakaan Panda3D dan akan lebih besar. Jika anda ingin menghasilkan installer jauh lebih ringan yang tidak mengandung Panda3D perpustakaan sendiri, cukup menghilangkan opsi-s. Dalam hal ini, permainan secara otomatis akan men-download versi stabil terbaru dari perpustakaan Panda3D dan menginstalnya ke dalam direktori cache pengguna pada peluncuran (hanya pertama kali, meskipun, atau bila ada update yang tersedia).

Secara default, pdeploy akan menghasilkan installer untuk semua platform dikenal. Anda juga dapat menentukan kustom set platform, dengan menambahkan opsi-P diikuti dengan nama panggung. Anda bisa mengulang-P sebanyak yang diperlukan. Untuk menghasilkan installer hanya untuk platform saat ini, gunakan opsi-c. Jika-c disediakan, opsi apapun-P diabaikan.

Anda juga dapat membiarkan token pdeploy lulus kustom untuk aplikasi, seperti yang dijelaskan dalam tag objek Advanced. Anda hanya bisa lewat token untuk pdeploy menggunakan t-tanda = nilai opsi, dan Anda dapat mengulangi-t option sebanyak yang Anda butuhkan.

Dalam Panda3D versi 1.8 dan di atas, Anda dapat membiarkan pdeploy menghasilkan ikon kustom untuk permainan terpasang. Gunakan dan ulangi opsi-i untuk melewati beberapa file gambar ukuran persegi yang berbeda, yang akan digabungkan menjadi icon file tunggal oleh pdeploy. Untuk mendukung semua platform, dianjurkan untuk memasok gambar ukuran 16x16, 32x32, 48x48, 128x128, 256x256, 512x512 dan, tetapi Anda dapat menghilangkan dua atau tiga yang terakhir ukuran jika Anda tidak dapat memberikan gambar dalam resolusi itu. Disarankan untuk menggunakan. Gambar png untuk transparansi yang benar.

Saat menjalankan permainan yang dihasilkan, jendela akan ditempatkan di tengah layar, kecuali secara eksplisit diganti dalam aplikasi. Anda dapat melewati ketinggian kustom dan lebar untuk jendela menggunakan 'lebar' dan 'tinggi' token.

Catatan: Meskipun sebagian besar informasi argumen baris perintah adalah opsional, sangat dianjurkan untuk menentukan karena banyak dari mereka mungkin, untuk memberikan gambaran paling akurat untuk aplikasi Anda.

contoh

Contoh fiksi ini menunjukkan bagaimana menggunakan pdeploy dan pilihan yang sering digunakan. (Anda mungkin ingin menghilangkan opsi-P untuk menghasilkan untuk semua platform.) Ini adalah satu perintah, jeda baris hanya menambah untuk menghindari halaman manual ini dari peregangan.

pdeploy-s-n coolgame-N "Cool permainan saya"-v 1.0.0-a com.cool_company-A "Cool Perusahaan"
-e packager@cool_company.com-l "Modifikasi Lisensi BSD"
-L bsd.txt-t width = tinggi 800-t = 600
-i icon16.png-i icon32.png-i icon48.png-i icon128.png
-P linux_amd64-P win32-P osx_i386 coolGame.p3d installer
Menghasilkan executable standalone

Alih-alih installer grafis, pdeploy juga memiliki kemampuan untuk menghasilkan executable mandiri. Ia bekerja mirip dengan alat seperti py2exe, tetapi dirancang untuk menanamkan. Games P3D. Ini tidak akan memerlukan instalasi Panda3D untuk menjalankan - sebagai gantinya, saat menjalankannya, maka secara otomatis akan mendownload dan menginstal perpustakaan Panda3D. Para pdeploy baris perintah terlihat seperti ini:

pdeploy myCoolGame.p3d standalone
Seperti saat membuat sebuah installer, Anda dapat menggunakan-c dan pilihan P untuk menentukan satu set kustom platform untuk menghasilkan untuk,-o untuk menentukan direktori keluaran kustom, dan-t untuk lulus token kustom.

Perhatikan bahwa executable yang dihasilkan akan memiliki beberapa dependensi, seperti perpustakaan X11 di Unix, dan Visual C + + 2008 runtime pada Windows. Ini tidak akan berjalan jika perpustakaan tersebut tidak hadir pada sistem. Anda harus menggunakan "installer" pilihan, seperti dijelaskan di atas, untuk installer sepenuhnya mandiri yang berisi perpustakaan tergantung.
3.5 Direktori Runtime Panda3D
Ketika runtime Panda3D (termasuk plugin web) berjalan berkas P3D, harus men-download file kunci ke dalam direktori khusus pada hard disk Anda. Lokasi ini direktori tergantung pada sistem operasi (dan, sampai batas tertentu, browser) digunakan.

Pada Windows, direktori Panda3D adalah LocalAppData%% \ Panda3D. Hal ini biasanya diterjemahkan menjadi:

C: \ Documents and Settings \ <your name> \ Local Settings \ Application Data \ Panda3D pada Windows XP, atau
C: \ Users \ <your name> \ AppData \ Local \ Panda3D pada Windows Vista atau Windows 7.
Namun, ketika Anda menjalankan melalui IE pada Windows Vista atau Windows 7, sistem operasi remaps% LocalAppData% ke lokasi yang baru, yaitu:

C: \ Users \ <your name> \ AppData \ LocalLow \ Panda3D
Pada Mac OSX, direktori Panda3D adalah ~ / Library/Caches/Panda3D, yaitu:

/ Users / <your name> / Library/Caches/Panda3D
Pada Linux, direktori Panda3D adalah panda3d ~ /..

Isi direktori Panda3D secara bertahap akan mengisi waktu ke waktu sebagai paket baru di-download dan diinstal. Kemudian versi dari runtime Panda3D otomatis akan mengelola ruang ini dan menghapus paket lama yang diperlukan, tetapi pada saat ini, rilis saat runtime tidak melakukan hal ini; dengan demikian, Anda mungkin perlu sesekali membersihkan direktori ini dengan tangan.

Ada beberapa subdirektori dalam direktori Panda3D. Mereka adalah:

certs - ini memiliki sertifikat yang telah disetujui di masa lalu. Jika Anda menghapus direktori ini dan segala isinya, Anda harus menyetujui kembali sertifikat sebelum menjalankan file P3D.
coreapi - ini adalah cache sementara yang menyimpan "inti API" digunakan untuk mengelola kode runtime itu sendiri. Jika Anda menghapus direktori ini, maka secara otomatis akan kembali di-download pada saat Anda menjalankan.
host - ini berisi paket didownload dan diinstal dari berbagai webservers. Setiap server akan memiliki subdirektori sendiri dalam direktori ini. Hal ini mungkin menjadi direktori terbesar dalam struktur ini. Anda dapat menghapus salah satu atau semua subdirektori tuan rumah ini di akan; jika diperlukan lagi, data yang dibutuhkan akan kembali di-download secara otomatis.
log - ini berisi berbagai file log yang dibuat oleh eksekusi masa lalu runtime. Secara khusus, "p3dsession.log" adalah output dari sesi Python file P3D terbaru yang Anda jalankan (kecuali file P3D menetapkan berbeda, nama logfile kustom). Anda dapat menemukan file ini berguna untuk membantu debug masalah saat Anda sedang mengembangkan file P3D Anda sendiri.
RRC - ini adalah sebuah direktori kosong di mana Anda dapat menempatkan file RRC kustom Anda sendiri untuk menyesuaikan runtime Panda3D untuk semua file P3D. Misalnya, jika Anda tahu kartu grafis Anda berjalan lebih baik di DirectX9 daripada di OpenGL, Anda dapat menempatkan berkas RRC dalam direktori ini dengan garis "beban-display pandadx9" untuk menentukan bahwa DirectX9 harus digunakan oleh preferensi dalam semua file P3D.
mulai - ini adalah direktori kerja default ketika berkas P3D dijalankan. Beberapa file P3D dapat merekam informasi negara permainan mereka di file dalam direktori ini. Jika Anda menghapus direktori ini dan isinya, mungkin ulang beberapa file P3D ke kondisi awal mereka.

3.6 Sistem Package
Plugin Panda3D menggunakan sistem "paket" untuk mengelola konten tambahan yang diperlukan oleh file P3D.

Sebuah paket adalah multifile Panda, mirip dengan file P3D. Seperti file P3D, dapat berisi kode Python, C + + kode, model, dan tekstur, atau benar-benar sesuatu aplikasi mungkin perlu untuk menjalankan; tapi tidak seperti berkas P3D, itu tidak (selalu) mengandung sebuah aplikasi.

Segala sesuatu yang download plugin yang Panda3D, selain file P3D itu sendiri, di-download sebagai bagian dari file paket. Misalnya, jika applicationm Anda yang menggunakan audio, Anda akan membangun dengan "-r audio" pada baris perintah packp3d, yang memberitahu Panda3D untuk men-download dan menginstal paket audio yang sebelum memulai aplikasi Anda. Bahkan Panda3D sendiri, yang download plugin untuk menjalankan aplikasi Anda, di-download dalam sebuah paket.

Sebuah paket diidentifikasi dengan empat potongan informasi:

Nama paket
Paket "versi" nama, mungkin kosong
String platform saat, kosong untuk platform apapun
URL tuan rumah
Semuanya dimulai dengan URL tuan rumah. URL host digunakan di seluruh sistem plugin Panda3D untuk merujuk ke download server tertentu. Hal ini dimungkinkan untuk membangun dan host paket sendiri bahwa plugin dapat men-download; Anda akan perlu menyediakan URL tuan rumah. Anda harus berhati-hati untuk selalu menentukan URL host dengan tepat string yang sama, karena itu adalah sebuah identifikasi unik dalam sistem plugin; misalnya, tidak menggunakan "http://myhost.mydomain.net:/my/root_dir" di satu tempat, dan "http://myhost.mydomain.net:/my/root_dir/" di tempat lain, meskipun dua URL secara teknis setara.

Hal ini dapat berupa URL, tapi harus ada sebuah file yang bernama contents.xml pada URL tersebut, misalnya jika URL host "http://myhost.mydomain.net/my/root_dir", maka harus ada file "http://myhost.mydomain.net/my/root_dir/contents.xml". File ini adalah bagian kunci dari informasi yang menggunakan plugin untuk menentukan paket yang disediakan oleh tuan rumah itu, dan apakah mereka perlu diperbarui untuk pengguna tertentu.

Nama dan versi paket yang digunakan bersama-sama untuk secara unik mengidentifikasi berkas paket tertentu pada URL host yang diberikan.

Perhatikan bahwa "versi" tidak dimaksudkan untuk mewakili rilis berurutan dibuat untuk sebuah paket. Versi ini bukan angka yang Anda selisih dengan setiap update yang Anda buat untuk paket; bukan, versi adalah string benar-benar sewenang-wenang yang membedakan variasi yang saling bertentangan dari paket. Sebuah file P3D akan referensi paket dengan nama dan versi, dan secara otomatis akan mendownload update terbaru yang tersedia untuk kombinasi nama / versi tertentu. Namun, jika Anda merilis versi berbeda dari sebuah paket tertentu menggunakan versi string yang berbeda, file P3D yang ada tidak akan men-download versi yang berbeda - itu dianggap sebagai seri yang berbeda.

Platform string kosong baik jika paket tersebut dapat digunakan pada platform apapun, atau itu adalah string seperti "win32" atau "osx_i386" untuk menunjukkan platform tertentu yang versi paket tersebut dibangun. Jika sebuah paket berisi konten-platform tertentu seperti dikompilasi dll atau exe, tali platform harus tidak kosong. Mungkin ada bentuk yang berbeda dari paket untuk masing-masing platform yang didukung pada host yang diberikan. Para Panda3D runtime secara otomatis akan mendownload paket platform yang sesuai, jika tersedia.
3.6.1 Package Standar
Ada sejumlah paket host di URL tuan Panda3D standar, http://runtime.panda3d.org: panda3d, FMOD, OpenAL, audio, telur, ode, wx, tk dan banyak lagi - kunjungi link untuk daftar lengkap (setiap subdirektori merupakan paket).

Masing-masing memiliki paket string versi yang diperbarui dengan setiap rilis major.minor.0 baru Panda, misalnya, seri 1.7.x dari Panda3D host dengan versi paket "cmu_1_7". Sebagai 1.7.1 dan kemudian rilis bugfix dibuat, mereka dibuat di tempat yang sama di bawah string versi, sehingga file P3D yang referensi versi paket "cmu_1_7" secara otomatis akan men-download versi rilis bugfix. Namun, ketika rilis 1.8.0 dibuat, akan dibuat dalam versi "cmu_1_8", dan "cmu_1_7" cabang akan tetap tidak berubah setelah itu, sehingga file P3D yang referensi versi yang dapat terus menggunakannya tanpa dipengaruhi oleh kemungkinan perubahan dalam seri 1.8.x.

Ketika Anda referensi paket dengan nama dengan parameter-r, defaultnya adalah untuk referensi salah satu paket standar yang ditawarkan oleh URL host yang sama yang dibangun packp3d.p3d sendiri. Jika Anda ingin referensi paket yang berbeda pada host yang lain, atau versi yang berbeda dari paket tertentu, Anda dapat menentukan paket lengkap dengan "nama-r, versi, hostURL".

Para "panda3d" paket khusus. Ini adalah paket yang mencakup bagian inti dari kode Panda3D, kode yang diperlukan untuk membuka jendela grafis dan mulai rendering. Ini tidak opsional. Setiap file P3D harus referensi beberapa paket yang disebut "panda3d", meskipun dapat dengan string versi, dan URL setiap host. (Anda bahkan dapat membangun dan host paket Anda sendiri bernama "panda3d" jika aplikasi Anda memerlukan membangun kebiasaan Panda3D untuk beberapa alasan, meskipun kami tidak menyarankan melakukan hal ini kecuali ada alasan yang baik untuk.) Paket panda3d harus berisi executable p3dpython program, yang digunakan untuk menjalankan aplikasi P3D berjalan dalam proses anak.
3.6.2 Menginstal Package
Sebuah paket file adalah multifile Panda3D. Ketika sebuah paket diinstal ke komputer pengguna, itu berarti multifile di-download dan ditempatkan dalam subdirektori sendiri direktori instalasi Panda3D (misalnya ~ / Library/Caches/Panda3d, pada Mac). Nama direktori ini kemudian disimpan dalam variabel lingkungan PACKAGENAME_ROOT, dimana nama paket adalah nama dari paket dikonversi ke huruf besar, misalnya PANDA3D_ROOT atau ODE_ROOT. (Anda dapat query nama variabel lingkungan ini pada saat runtime dengan ExecutionEnvironment.getEnvironmentVariable ('PANDA3D_ROOT').)

Multifile ini juga secara otomatis "mount" menggunakan Panda VirtualFileSystem, ke direktori yang sama, sehingga seolah-olah semua isi multifile adalah benar-benar tersedia sebagai file individual dalam direktori PACKAGENAME_ROOT, meskipun file individual mungkin tidak benar-benar muncul pada disk sama sekali. Selain itu, direktori PACKAGENAME_ROOT ditambahkan ke sys.path Python, serta model-jalan Panda, sehingga setiap modul Python dapat diimpor, dan file model dapat diimpor, langsung dari paket. Selain itu, setiap file RRC di direktori PACKAGENAME_ROOT akan secara otomatis dimuat.

Beberapa jenis file, seperti file DLL, benar-benar perlu diekstraksi ke disk untuk digunakan, karena mereka dimuat langsung oleh sistem operasi dan bukan oleh Panda. File-file ini diambil secara otomatis ketika paket tersebut diinstal dan kiri dalam direktori PACKAGENAME_ROOT (atau dalam subdirektori jika nama file sehingga menunjukkan).
3.6.3 Referensi Lain
Sebuah file P3D mungkin termasuk referensi untuk satu paket atau lebih, yang berarti bahwa mereka paket (s) akan di-download dan diinstal sebelum aplikasi bahkan dimulai. Ini ditentukan dengan parameter-r untuk packp3d, atau dengan membutuhkan () panggilan dalam file pdef.

Hal ini juga memungkinkan untuk men-download dan menginstal satu atau lebih paket saat runtime, setelah aplikasi telah dimulai. Untuk melakukan hal ini, bukan referensi paket dengan parameter-r, Anda dapat menghubungi base.appRunner.installPackage () pada saat runtime, atau Anda dapat menggunakan PackageInstaller atau kelas DWBPackageInstaller untuk men-download dan menginstalnya asynchronously.
3.6.4 Membangun dan Paket Hosting sendiri
Menempatkan seluruh aplikasi Anda ke dalam sebuah file P3D adalah cara yang berguna untuk mendistribusikan aplikasi kecil, tetapi ada kalanya Anda perlu untuk mendistribusikan kode Anda sedikit lebih cerdas. Aplikasi besar mungkin perlu dibagi menjadi beberapa bagian yang lebih kecil untuk di-download pada saat runtime; atau Anda mungkin memiliki perpustakaan besar C + berbasis + yang ingin Anda membuat tersedia untuk beberapa aplikasi yang berbeda, tanpa harus re-download untuk masing-masing.

Untuk tujuan ini, Anda harus mempertimbangkan untuk menggunakan paket. Sebuah paket memiliki beberapa keunggulan dibandingkan berkas P3D sederhana:

Hal ini dapat didownload pada permintaan, baik secara otomatis pada saat startup, atau selama runtime jika diinginkan.
Satu paket dapat didownload sekali dan dibagi oleh beberapa file P3D.
Paket akan di-cache dalam direktori Panda3D pengguna. (file P3D, di sisi lain, akan disimpan dalam cache browser saja, mana mungkin ada sedikit ruang.)
Patch dapat digunakan untuk secara otomatis memperbarui paket dengan versi baru, sehingga pengguna perlu men-download hanya perubahan inkremental, daripada harus benar-benar redownload paket di setiap perubahan.
Bisa ada versi yang berbeda dari sebuah paket untuk setiap platform hardware / OS yang ingin Anda mendukung. Ini adalah cara termudah untuk memberikan dukungan multiplatform dengan aplikasi C + berbasis +.
Di sisi lain, menyiapkan paket memerlukan sedikit lebih banyak pekerjaan daripada hanya membangun berkas P3D.
3.6.4.1 Menggunakan PPackage
Utilitas ppackage adalah utilitas Panda paket bangunan. Anda juga dapat menggunakan ppackage untuk membangun sebuah file P3D; ini memberi Anda lebih banyak kontrol atas file P3D daripada antarmuka yang sederhana packp3d itu.

Untuk menggunakan ppackage, Anda harus terlebih dahulu membuat file pdef, atau file definisi paket. Ini adalah file yang mendefinisikan persis apa paket (s) atau berkas P3D (s) harus diproduksi, dan apa isinya harus pergi ke masing-masing. Sintaks dari file pdef dijelaskan pada halaman berikutnya.

Setelah Anda memiliki file pdef, Anda dapat menjalankan ppackage sebagai berikut:
ppackage -i c:/output_dir myfile.pdef
Direktori bernama dengan-i adalah direktori dimana isi dari paket (s) bernama dalam file pdef akan ditempatkan. Tidak harus ada sebelum Anda menjalankan ppackage, tetapi jika sudah ada dari sesi ppackage sebelumnya, konten baru akan ditambahkan ke dalamnya. Anda akhirnya harus menyalin direktori ini ke host web untuk membuat paket yang tersedia untuk digunakan; lihat paket Hosting, di bawah ini.

Seperti packp3d, Anda harus panda3d di jalan Anda; dan Anda dapat menghilangkan awalan panda3d di Linux dan Mac.

Juga seperti packp3d, Anda harus menggunakan versi ppackage.p3d yang didistribusikan dengan versi tertentu dari Panda3D yang Anda gunakan untuk pengembangan - ppackage.p3d dikaitkan dengan versi Panda3D yang digunakan untuk memproduksinya, dan secara default akan menghasilkan paket yang bergantung pada versi Panda3D.
3.6.4.2 Syntax Pdef
Definisi paket terlihat seperti definisi kelas Python:
class mypackage(package):

    file('neededfile.dll')

    module('my.python.module')

    dir('/c/my/root_dir')
Bahkan, Anda dapat menempatkan setiap sintaks Python yang Anda suka ke dalam sebuah file pdef, dan itu akan dijalankan oleh ppackage. Sebuah file pdef benar-benar hanya jenis khusus dari program Python. Sintaks kelas yang ditunjukkan di atas hanyalah konvensi dimana paket diumumkan.

Contoh di atas menghasilkan paket yang disebut "MyPackage", yang berisi neededfile.dll file dan modul Python saya / python / module.py, serta semua file yang kedua file referensi pada gilirannya; itu juga mencakup semua isi c: \ saya \ root_dir.

Lebih detail dari sintaks pdef akan diberikan segera. Sementara itu, Anda juga dapat memeriksa file direct/src/p3d/panda3d.pdef, untuk contoh file yang menghasilkan paket panda3d itu sendiri (serta beberapa paket yang terkait).

Anda juga dapat memeriksa file direct/src/p3d/Packager.py; metode apapun Packager bernama do_foo () menghasilkan fungsi paket yang Anda dapat menghubungi bernama foo (). Misalnya, ada metode Packager.do_file () yang menerima Filename (serta parameter opsional lainnya); Metode ini disebut ketika file () muncul dalam definisi kelas dalam file pdef.
Kadang-kadang file dan modul yang ingin Anda masukkan tidak di jalan, dan dengan demikian tidak dapat ditemukan. Untuk melihat apa yang ada di jalan adalah ketika file pdef Anda dijalankan, Anda dapat menggunakan ini di bagian atas file pdef Anda:
import sys

print sys.path
Seringkali ketika membangun paket, ini berguna untuk memiliki direktori kerja di jalan, tapi mungkin bisa hilang. Hal ini dapat ditambahkan dengan:
import sys

sys.path.insert(0,'') #add the working directory as the first entry in sys.path
When making p3d packages, you use p3d instead of package for the class. An example p3d could be as follows:
import sys

# add the working directory to the path so local files and modules can be found

sys.path.insert(0,'') 

 

class MyP3D(p3d):

    require('morepy','panda3d','somePackage') # include some other packages

 

    config( 

        version="0.0", 

        display_name="MyP3D") 

 

    module('core.*') # include the python package core, and its submodules

    dir('data',newDir='data') # include a folder called data

    mainModule('main') # include and set the main module that runs when the p3d is run

    file('events.txt') # include a text file
Umumnya apa ppackage cukup baik tentang menemukan apa modul yang diimpor dan secara otomatis termasuk mereka, tetapi ada kasus di mana ini gagal dan secara eksplisit menentukan sesuatu seperti "modul ('api. *. *')" Berguna.
Pada Panda3D 1.7.1, Anda dapat menentukan opsional 'diperlukan' parameter ke file () atau modul () fungsi panggil. Dengan menetapkan untuk benar, Anda dapat menunjukkan bahwa file ini sangat penting untuk paket. Pada dasarnya, ketika file yang hilang dan bendera yang diperlukan diatur, ia akan menolak untuk membangun paket (bukan hanya memancarkan peringatan).
Anda dapat menempatkan loop, jika laporan (berdasarkan os.name misalnya) dan kontrol aliran lain di dalam paket, tetapi memanggil fungsi luar mereka bahwa menambahkan file dan modul dan semacamnya tidak akan bekerja.
3.6.4.3 membuat beberapa package
Sebuah file dapat berisi pdef paket ganda dan / atau definisi berkas P3D. Setiap paket bernama dalam file pdef dibuat dan ditempatkan dalam direktori keluaran yang Anda tentukan dengan-i pada baris perintah ppackage, dan file contents.xml pada akar direktori keluaran diperbarui untuk menggambarkan semua paket di dalam.

Anda juga dapat menjalankan ppackage beberapa kali, dengan file pdef yang berbeda setiap kali, dan menentukan direktori output yang sama. Setiap kali, paket tambahan dapat dibangun, dan direktori output diperbarui sesuai.
3.6.4.4 Hosting Package
Setelah Anda membangun satu atau lebih paket, Anda harus membuat mereka tersedia untuk di-download. Ini berarti Anda harus menyalin seluruh isi dari direktori keluaran (direktori bernama dengan-i pada baris perintah ppackage) ke server web di mana ia akan terlihat untuk di-download di bawah URL tertentu.

URL root yang berisi direktori output, termasuk file contents.xml dalamnya, disebut "URL tuan". Ini adalah URL yang harus Anda gunakan ketika referensi paket Anda dalam file P3D Anda (s).

Ketika sistem plugin Panda3D download sebuah paket, pertama download file contents.xml pada akar URL tuan rumah, dan menggunakan file ini untuk menentukan paket mana yang didefinisikan pada host ini dan apakah paket apapun harus redownloaded. Jadi, penting untuk menyalin seluruh isi dari direktori output, dan tidak mengubah bagian itu selain dengan alat ppackage.

Meskipun tidak benar-benar diperlukan, akan sangat membantu untuk memberitahu paket, pada saat Anda membangunnya, apa URL tuan rumah akhirnya akan. Anda dapat melakukan ini dengan memanggil packager.setHost () di bagian atas file pdef (sebelum definisi kelas pertama), seperti ini:
3.6.4.5 SSL Hosting
Seperti yang dinyatakan sebelumnya, sistem plugin Panda3D pertama download contents.xml dari akar URL host Anda, dan menggunakan file ini untuk memvalidasi semua file lain yang harus didownload untuk paket tertentu. Hal ini memastikan bahwa file yang didownload adalah justru file yang sama yang Anda upload - asalkan file contents.xml awal di-download dengan benar.

Hal ini secara teoritis mungkin, melalui DNS spoofing, untuk hacker untuk mengganti berkas contents.xml dikompromikan yang memungkinkan paket untuk dikompromikan secara tidak sengaja download ke komputer pengguna. Meskipun ini tidak mungkin, ini dapat dilindungi terhadap dengan hosting file contents.xml pada domain, dengan alamat https. Protokol https melindungi terhadap DNS spoofing dengan memastikan bahwa hanya bernama tuan rumah sebenarnya dihubungi.

Menggunakan fitur ini adalah opsional, tetapi tidak memberikan keamanan sedikit lebih terhadap hacker. Dengan konvensi, jika Anda menetapkan URL host dengan alamat https, seperti ini:
packager.setHost('https://myhost.com/myrootdir/')
maka Panda3D akan memahami bahwa file contents.xml harus didownload melalui protokol https. Namun, file yang tersisa akan di-download melalui protokol http biasa, dari alamat yang sama, misalnya http://myhost/myrootdir/. Hal ini untuk menghindari overhead https pada setiap download, dan juga memungkinkan download dari mirror host untuk mendistribusikan beban download. Jika http cleartext Anda mengatasinya tidak sama dengan alamat https, Anda dapat menentukan alamat tertentu dengan parameter downloadUrl, misalnya:
packager.setHost('https://myhost.com/myrootdir/', 

                 downloadUrl = 'http://myhost.com:8080/myrootdir/')
Pertama URL adalah URL tuan rumah, dan alamat dari mana contents.xml akan di-download, dan juga merupakan URL yang harus ditentukan saat men-download paket nanti. Kedua URL adalah "URL download", dan merupakan alamat dari mana semua data lainnya, setelah contents.xml, akan di-download.

3.6.4.6  Membangun Multiplatform Package
Ketika paket Anda mencakup beberapa C + + kode dikompilasi, termasuk dll atau exe, Anda akan perlu untuk menghasilkan paket versi yang berbeda untuk setiap platform sistem operasi / hardware yang ingin Anda mendukung.

Secara default, ppackage akan mendeteksi ketika sebuah paket termasuk file-platform yang spesifik seperti dll, dan secara otomatis akan menulis string Platform ke dalam paket spesifikasi. Hal ini memungkinkan Anda untuk membangun paket yang sama pada beberapa platform yang berbeda, dan membangun sebuah versi yang berbeda untuk setiap platform. Semua versi dapat disimpan di direktori output yang sama dan host di URL host yang sama.

Setiap kali Anda menjalankan ppackage, ia dirancang untuk menambahkan isinya ke direktori yang sudah ada (atau membuat yang baru). Ini mengasumsikan bahwa direktori keluaran mewakili isi paket lengkap dan saat ini pada saat Anda mulai.

Dalam rangka membangun beberapa paket dengan platform yang berbeda, Anda mungkin akan perlu menjalankan ppackage pada mesin yang berbeda, satu per satu, dan mengarahkan mereka semua untuk mengisi direktori output yang sama. Ini juga berarti bahwa direktori output Anda harus volume bersama, atau Anda akan harus menyalin seluruh direktori keluaran dari satu mesin ke mesin lainnya antara doa dari ppackage. (Saya menemukan bahwa rsync adalah alat yang sangat baik untuk menyalin seluruh struktur direktori efisien, tetapi ada banyak alat yang melakukan hal ini dengan cara yang berbeda.)
Anda juga dapat menggunakan ppackage untuk membuat beberapa direktori output yang berbeda, dan menggabungkan mereka ke dalam satu direktori keluaran menggunakan utilitas pmerge.
3.6.4.7  Building Patch
Salah satu keuntungan utama untuk sistem paket Panda adalah bahwa perubahan yang Anda buat untuk sebuah paket secara otomatis didownload dan diinstal oleh pengguna. Anda tidak perlu melakukan sesuatu yang istimewa untuk ini untuk bekerja: hanya membangun paket baru menggunakan alat ppackage dengan isi terbaru, dengan menggunakan parameter-i untuk menunjukkan ppackage ke direktori instalasi yang sudah ada. Hal ini akan menghasilkan data paket baru dan update file contents.xml sesuai. Bila Anda kemudian copy direktori instalasi ini ke host server Web Anda, file P3D yang referensi paket Anda secara otomatis akan mendownload dan menginstal konten baru untuk paket yang sebelum mereka mulai berjalan.

Ini berarti semua pengguna Anda akan harus redownload seluruh file paket, yang mungkin menjadi download besar. Untuk kenyamanan pengguna Anda (dan untuk meringankan beban bandwith di server Anda), Anda mungkin ingin menyediakan patch sebagai gantinya. Ini bekerja pada asumsi bahwa sebagian besar isi kemasan tidak berubah dari satu rilis ke rilis berikutnya, dan memungkinkan pengguna Anda yang sudah memiliki versi sebelumnya dari sebuah paket untuk men-download hanya perubahan yang diperlukan antara versi sebelumnya dan versi saat ini, yang sering download jauh lebih kecil dan akan menghemat waktu dan bandwidth.

Untuk mengaktifkan ini, Anda cukup menjalankan "ppatcher-i / my / install / dir", di mana / my / install / dir adalah direktori instalasi Anda bahwa Anda telah diisi dengan ppackage.

Pertama kali Anda menjalankan ppatcher pada direktori instalasi tertentu, mempersiapkan direktori tersebut untuk patch masa depan, dan menyatakan angka revisi saat ini "rev 1". Anda kemudian dapat menggunakan ppackage untuk membangun versi baru dari paket dalam direktori instalasi.

Yang kedua dan kemudian kali Anda menjalankan ppatcher, itu membangun patch dari versi terakhir-patch ke versi saat ini sekarang terlihat di direktori instalasi. Setiap kali Anda menjalankan ppatcher, paket-paket di direktori instalasi dengan perubahan sejak ppatcher terakhir akan ditambal dan angka revisi saat ini akan bertambah.

Dengan demikian, Anda harus menjalankan ppatcher setiap kali Anda siap untuk membuat rilis resmi dari kode Anda diubah. Hal ini akan memungkinkan pengguna untuk men-download patch minimal yang diperlukan untuk menerima kode terbaru.

Anda mungkin merilis versi perantara untuk tujuan pengujian tanpa menjalankan ppatcher. Jika Anda melakukannya, pengguna yang mengunjungi server Anda akan harus men-download seluruh file lagi, bahkan jika mereka sudah memiliki versi sebelumnya diinstal. Dengan cara ini, para pengguna dapat menguji perubahan Anda dan melaporkan keberhasilan atau kegagalan; Anda dapat terus membuat rilis baru tanpa menjalankan ppatcher dan memungkinkan pengguna untuk terus menguji mereka. Kemudian, ketika Anda puas bahwa release ini siap untuk dunia, Anda dapat menjalankan ppatcher memformalisasikannya.

Kami tidak merekomendasikan berjalan ppatcher untuk setiap rilis menengah, karena setiap kali Anda menjalankan ppatcher, file patch baru akan ditambahkan ke rantai versi. File patch ini kemudian akan selamanya menjadi bagian dari rantai versi (sampai akhirnya berusia keluar). Pengguna yang memiliki versi lama dari paket tersebut akan harus men-download dan menerapkan semua file patch rantai untuk memperbarui ke versi terbaru. Jika ada banyak file Patch menengah dalam rantai, proses ini akan lebih lambat dan melibatkan lebih banyak bandwidth daripada jika hanya ada beberapa berkas tambalan.
3.7  Teknik Scripting Lanjut
Berikut ini menjelaskan beberapa teknik yang lebih maju ketika embedding aplikasi Anda dalam halaman web, terutama untuk menggunakan JavaScript untuk mengontrol dan berinteraksi dengan aplikasi Anda.
3.7.1 DetectPanda3D.js
Ada fungsi JavaScript didistribusikan dengan Panda, di direct / direktori src / directscripts, yang dapat digunakan untuk menentukan apakah plugin Panda3D diinstal sama sekali. Anda dapat menggunakan script ini untuk mengarahkan pengguna ke halaman yang sesuai untuk menginstal plugin jika diperlukan.
Untuk menggunakannya, salin ke server web Anda dan referensi di bagian <head> dokumen HTML Anda seperti ini:
<script src="DetectPanda3D.js" language="javascript"></script>
Kemudian di tempat lain, mungkin di bagian <body> dokumen Anda, Anda dapat referensi seperti ini:
<script language="javascript">

if (detectPanda3D()) {

   ... plugin installed

} else {

   ... plugin not installed

}

</script>
Fungsi ini mengambil dua parameter opsional. Parameter pertama, bila ditentukan, adalah URL dari halaman lain untuk mengarahkan ulang ke, dan parameter kedua harus benar untuk mengarahkan ke URL diindikasikan jika plugin ditemukan, atau Salah untuk mengarahkan jika plugin tidak ditemukan.
Misalnya, untuk memicu redirect otomatis ke halaman lain jika plugin tidak terpasang, lulus URL halaman sebagai parameter pertama, dan False sebagai parameter kedua, seperti ini:
<script language="javascript">

detectPanda3D('http://my.host.net/needsPlugin.html', False);

</script>
Perhatikan bahwa fungsi JavaScript ini hanya mendeteksi apakah plugin diinstal; tidak dapat melaporkan nomor versi Plugin, dan bahkan jika plugin diinstal tidak ada jaminan bahwa plugin benar-benar berjalan pada browser ini. Dalam rangka untuk menguji salah satu dari ini, Anda harus menggunakan plugin untuk menanamkan berkas P3D dan query obyek tertanam yang dihasilkan.
Perhatikan juga RunPanda3D.js yang juga dapat digunakan untuk melakukan beberapa deteksi plugin sederhana, menggunakan noplugin_img dan tag noplugin_href.
3.7.2  Tag Objek Lanjut
Bila Anda menanamkan aplikasi Panda3D dalam halaman web, baik dengan tag <object> atau dengan P3D_RunContent, Anda menentukan bagian kunci informasi tertentu seperti ukuran jendela dan URL P3D.
Anda dapat menentukan hal-hal yang lebih eksotis juga:
Token
Meaning
auto_start
URL gambar untuk ditampilkan di ruang Plugin, kapan saja sebelum Panda mulai berjalan (kecuali gambar yang lebih spesifik, di bawah, menimpa)
hidden
"1" untuk menghindari membuka jendela Panda3D
keep_pythonpath
"1" untuk memungkinkan variabel lingkungan PYTHONPATH pengguna untuk tetap utuh, dan dengan demikian untuk menimpa file Python dalam aplikasi (membutuhkan-D pada file P3D)
log_basename
Menentukan file log dalam Panda3D/log untuk menulis untuk aplikasi ini
prc_name Menentukan nama direktori di dalam Panda3D/prc dari mana file pengguna RRC kustom untuk aplikasi ini akan dimuat
prc_name
Specifies a directory name within Panda3D/prc from which user prc files custom to this app will be loaded
alt_host
Menentukan salah satu "alternatif tuan rumah" kata kunci yang ditetapkan untuk P3D file Download tuan rumah, untuk memungkinkan isi Download alternatif

Selain daftar di atas, Anda dapat menentukan salah satu dari banyak gambar splash URL, atau plugin memberitahukan callback; ini dijelaskan pada halaman berikut.
Selain itu, Anda dapat menentukan token yang memiliki arti khusus untuk aplikasi Anda sendiri. Setiap token tambahan Anda tentukan dilewatkan ke aplikasi dan dapat dilihat oleh kode Python via base.appRunner.getToken ('keyword'), sehingga aplikasi apapun bebas untuk menentukan token kustom sendiri.
Untuk menggunakan apapun di atas, tentukan token dan nilai sebagai pasangan dalam sintaks HTML embedding. Dalam sintaks Internet Explorer, ini berarti Anda menggunakan elemen <param>, misalnya:
<object width="640" height="480"

  classid="CLSID:924B4927-D3BA-41EA-9F7E-8A89194AB3AC">

    <param name="data" value="myapp.p3d">

    <param name="splash_img" value="my_splash.jpg">

    <param name="auto_start" value="1">

</object>
Bila menggunakan RunPanda3D, Anda hanya menambahkan token dan nilai sebagai sepasang string ke P3D_RunContent () call:
P3D_RunContent('data', 'myapp.p3d', 'id', 'myapp_id',

    'width', '640', 'height', '480',

    'splash_img', 'my_splash.jpg', 'auto_start', '1')

}

3.7.3 Splash Window Tag
Tabel berikut berisi daftar token P3D kustom yang mungkin Anda tentukan dalam elemen <object>, seperti yang dijelaskan dalam tag objek Advanced. Anda dapat menggunakan pengaturan ini untuk menyesuaikan tampilan tertanam frame app setiap kali jendela Panda3D tidak sedang ditampilkan, misalnya sebelum atau setelah peluncuran.
Token
Meaning
splash_img
URL dari sebuah gambar untuk ditampilkan di ruang Plugin, kapan saja sebelum Panda mulai berjalan (kecuali gambar yang lebih spesifik, di bawah, mengabaikan)
download_img
Gambar untuk menampilkan sementara file P3D dan paket yang diperlukan sedang download
unauth_img
gambar untuk ditampilkan ketika aplikasi yang belum diakui, dan menunggu pengguna untuk mengklik merah "wewenang" tombol
ready_img
gambar untuk ditampilkan ketika aplikasi siap dijalankan, dan menunggu pengguna untuk mengklik hijau "bermain" tombol
failed_img
gambar untuk ditampilkan ketika aplikasi tidak bisa memulai untuk beberapa alasan (misalnya URL buruk)
launch_img
gambar untuk ditampilkan saat aplikasi sedang meluncurkan: waktu setelah pengguna telah mengklik "bermain" dan sebelum benar-benar membuka jendela Panda3D nya
active_img
Gambar untuk menampilkan sementara aplikasi sedang berjalan (tapi app telah mengambil jendela keluar dari frame)
noplugin_img
ini hanya tersedia jika Anda menggunakan metode RunPanda3D.js embedding berkas P3D Anda. Dalam hal ini, ini menentukan gambar untuk ditampilkan jika plugin tidak terpasang atau tidak dapat dijalankan untuk beberapa alasan.
noplugin_href
eperti di atas, ini hanya tersedia jika Anda menggunakan metode RunPanda3D.js embedding berkas P3D Anda, dan menentukan URL bahwa pengguna harus diambil untuk jika ia mengklik wilayah embed ketika plugin tidak terpasang. Sebuah pilihan yang baik, misalnya, adalah http://www.panda3d.org/download.php?runtime.
auth_ready
auth_ready
auth_rollover
auth_click
Tiga gambar yang menentukan biasanya merah "wewenang" tombol
play_ready
play_rollover
play_click
Tiga gambar yang menentukan biasanya hijau "bermain" tombol
dinamai
fgcolor
Warna teks teks yang mungkin muncul di jendela
bgcolor
Warna latar belakang dari jendela sebelum aplikasi telah meluncurkan
barcolor
Warna fill dari bar loading yang akan ditampilkan sebelum meluncurkan app

3.7.4 Plugin Pemberitahuan Callback
Pada poin kunci selama peluncuran aplikasi, plugin akan membuat callback opsional ke dalam kode JavaScript, sehingga halaman Anda dapat merespon aplikasi apa yang dilakukan. Hal ini dilakukan dengan menggunakan sistem token yang <object>, seperti yang dijelaskan dalam tag objek Advanced.
Peristiwa berikut dapat dikirimkan:
Token
Meaning
onPluginFail
Plugin tidak dapat memuat untuk beberapa alasan, misalnya karena browser adalah versi yang tidak kompatibel, atau karena plugin tersebut kritis out-of-date dengan yang terkait Inti API, dan perlu diperbarui. Jika Anda mendapatkan acara ini, Anda tidak akan menerima salah satu dari berikut. Perhatikan bahwa beberapa jenis browser yang tidak kompatibel mengakibatkan plugin pernah berjalan di tempat pertama, sehingga terdapat kasus ketidakcocokan di mana Anda tidak akan menerima setiap peristiwa sama sekali.
onPluginLoad
Browser telah mengaktifkan tag objek, dan diinisialisasi plugin. Hal ini biasanya terjadi setelah pemberitahuan buka halaman JavaScript standar. Lihat di bawah.
onUnath
File P3D telah dipindai dan harus disetujui oleh pengguna. Akan ada tombol putar merah ditarik di jendela Plugin (jika terlihat); ketika pengguna mengklik tombol ini, akan muncul dialog sertifikat persetujuan. Anda dapat mensimulasikan pengguna mengklik tombol dengan memanggil plugin.main.play ().
onAuth
P3D telah disetujui oleh pengguna sebagai akibat dari akan melalui dialog di atas; atau file P3D diakui sebagai yang telah disetujui pada saat startup.
onDownloadBegin
Paket direferensikan oleh file P3D mulai men-download. Lihat di bawah.
onDownloadNext
Acara ini akan dihasilkan karena setiap paket yang dibutuhkan selesai men-download dan yang berikutnya dimulai. Lihat di bawah.
onDownloadComplete
Generated ketika download selesai, atau ketika itu ditentukan pada saat startup bahwa semua paket sudah di-download.
onReady
Aplikasi ini siap untuk memulai. Jika Anda telah auto_start = "1", maka akan meluncurkan segera; jika tidak, akan ada tombol putar hijau ditarik di jendela Plugin (jika terlihat). Anda dapat mensimulasikan pengguna mengklik tombol dengan memanggil plugin.main.play ().
onPythonLoad
setiap Python bagian dari aplikasi telah dimulai. Ini adalah bagian dari aplikasi startup. Pada saat Anda menerima acara ini, aplikasi Anda baru saja mulai untuk mengeksekusi; tidak ada jaminan bahwa hal itu telah ditetapkan apapun untuk appRunner.main pada saat ini.
onWindowOpen
Aplikasi ini telah berhasil menciptakan sebuah jendela grafis, dan sekarang dianggap sepenuhnya diluncurkan. Dari sisi Python, itu berarti bahwa aplikasi Anda telah mengimpor DirectStart pada titik ini.
onWindowAttach
Aplikasi ini telah terpasang jendela grafis ke frame Plugin, dan jendela sekarang tertanam di halaman web. Hal ini dapat disebut saat startup awal (mungkin sebelum onWindowOpen), dan juga setelah panggilan berikutnya ke onWindowDetach.
onWindowDetach
Aplikasi ini telah dihapus window permainan nya dari frame Plugin. Hal ini dapat disebut pada aplikasi keluar, atau pada saat aplikasi itu sendiri menghilangkan jendela dari frame (misalnya, pergi ke jendela fullscreen atau level atas sebagai gantinya). Plugin Panda akan menampilkan active_img dalam bingkai Plugin setiap kali tidak ditempati oleh jendela grafis.
onPythonStop
Aplikasi ini telah keluar, baik secara normal atau karena kesalahan.
Selain daftar di atas, aplikasi tertentu dapat menentukan callback kustom sendiri, dengan memanggil base.appRunner.notify ('token'), misalnya base.appRunner.notify ('onLevelStart').
Untuk menggunakan apapun di atas, menetapkan token ke ekspresi JavaScript yang harus dievaluasi ketika peristiwa terjadi. Biasanya ini adalah panggilan ke salah satu fungsi JavaScript Anda sendiri, misalnya:
<object width="640" height="480"

  type="application/x-panda3d" data="myapp.p3d"

  onWindowOpen="MyWindowFunction()"

</object>
Anda harus menggunakan sintaks embedding yang tepat seperti yang dijelaskan dalam tag objek Advanced.
Additional Notes
Pada setiap kejadian di atas, sifat tertentu dari objek plugin yang menjadi didefinisikan dan tersedia untuk diakses oleh JavaScript. Berikut ini, "plugin" diasumsikan menjadi objek DOM yang mengacu pada elemen <object> embedding.
Setelah onPluginLoad, Anda dapat query sifat tertentu built-in pada plugin:
plugin.main.status
plugin.main.pluginVersionString
plugin.main.pluginMajorVersion
plugin.main.pluginMinorVersion
plugin.main.pluginSequenceVersion
plugin.main.pluginNumericVersion
plugin.main.pluginDistributor
plugin.main.coreapiHostUrl
plugin.main.coreapiTimestamp
plugin.main.coreapiTimestampString
Anda juga dapat menghubungi plugin.main.get_system_log () pada setiap titik setelah ini untuk query log sistem saat ini. Hal ini adalah file log yang dihasilkan oleh sistem plugin. Anda dapat menentukan parameter numerik opsional; ini membatasi nilai kembali hanya jumlah byte tertentu pada akhir log.
Perhatikan bahwa tampaknya ada bug Firefox yang kadang-kadang menyebabkan referensi pertama untuk plugin.main untuk kembali undefined, meskipun sebenarnya telah didefinisikan oleh titik ini. Hal ini sangat mungkin setelah reload halaman (F5) operasi. Jika hal ini menyebabkan masalah Anda, Anda mungkin perlu untuk bekerja di sekitar ini dengan JavaScript batas waktu callback.
Setelah onDownloadBegin, Anda dapat permintaan properti berikut untuk memantau download:
plugin.main.numDownloadingPackages
plugin.main.totalDownloadSize
plugin.main.downloadProgress
plugin.main.downloadElapsedSeconds
plugin.main.downloadElapsedFormatted
plugin.main.downloadRemainingSeconds
plugin.main.downloadRemainingFormatted
plugin.main.downloadPackageName
plugin.main.downloadPackageDisplayName
plugin.main.downloadComplete
Setelah onDownloadNext, downloadPackageName dan downloadPackageDisplayName akan diperbarui dengan paket-saat men-download. Perhatikan bahwa plugin.main.downloadProgress lagu dari 0 .. 1 di seluruh download; tidak me-reset untuk setiap paket.
Setelah onPythonLoad, Anda dapat menghubungi plugin.main.get_game_log () untuk query log game. Ini adalah output dari aplikasi itu sendiri. Seperti get_system_log (), Anda dapat menentukan parameter numerik opsional untuk membatasi nilai kembali hanya jumlah byte tertentu pada akhir log.
3.7.5 AppRunner
AppRunner adalah kelas Python yang mengawasi peluncuran aplikasi Anda dalam file P3D. Ada contoh global AppRunner tersedia di base.appRunner setiap kali aplikasi Anda berjalan sebagai file P3D. Bahkan, ini adalah cara yang dapat diandalkan untuk menguji modus run Anda:
if base.appRunner:

    print "Running in a p3d file"

else:

    print "Running interactively"
Semua interaksi Anda dengan lingkungan web akan melalui base.appRunner. Ada beberapa anggota penting dan metode base.appRunner yang memfasilitasi komunikasi dengan JavaScript dan dengan halaman web embedding. Mereka dijelaskan secara rinci di halaman berikut.
3.7.5.1 Objek appRunner.main


Referensi :
- panda3D.org
- http://www.panda3d.org/manual/index.php/Main_Page




No comments:

Post a Comment