Alih-alih kata pengantar
Selamat siang, rekan! Nama saya Aleksey dan saya terlibat dalam TV, yaitu, pengembangan aplikasi Smart TV ("
mari pat Aleksey ").
Tapi apa itu TV pintar? Apakah aplikasi Smart TV berbentuk bola dalam ruang hampa udara?
Saya tidak akan mengganggu Anda dengan harapan: pada dasarnya aplikasi semacam ini dirancang untuk menampilkan konten video. Dalam variasi apa pun. Direkam, siaran langsung, acara televisi, film, kartun, iklan, dan sebagainya, dan seterusnya ... Ribuan dari mereka!
Tetapi apakah Smart TV hanya untuk itu?

Ya, tentu saja, TV menunjukkan konten video yang terbaik, dan ini dapat mengatasi hal ini dengan baik, tetapi apakah hanya untuk ini kita dapat menggunakannya?
(
Sekarang semua pemilik konsol dan kabel HDMI yang senang akan melemparkan tomat busuk kepada saya, katakan βBerhenti berlangganan!β Dan yang bahagia akan pergi, dan kami akan melanjutkan .)
Memang, sebagian besar aplikasi yang harus kami kembangkan terutama ditujukan untuk menampilkan video, tetapi ada beberapa pengecualian yang luar biasa di antara mereka. Selain itu, menderita penyakit terkenal "Awl di tempat tepat di bawah punggung", saya ingin memeras sesuatu yang lebih dari TV daripada yang diharapkan semua orang dari mereka.
Upaya saya yang sederhana (dan tidak hanya) akan dibahas di bawah ini.
TV - Game?
Memang, hal pertama yang terlintas dalam pikiran adalah permainan! Layar besar, kemungkinan permintaan lintas-domain (karena aplikasi Smart TV, pada kenyataannya, adalah halaman HTML lokal), dan paling tidak kontrol standar (remote control) memungkinkan kami untuk mengimplementasikan skenario permainan.
Untuk sebagian besar, ini adalah permainan kasual seperti "1024," atau variasi pada tema "Tower Defense." Tidak tebal. Sayangnya, membungkus super 3D dengan shader, bayangan dan pencahayaan dinamis hanya akan bekerja pada model-model terbaru ... tahun depan. Untuk TV biasanya bukan versi yang paling canggih dari browser dan, yang paling buruk, itu jarang diperbarui atau tidak diperbarui sama sekali. Selain itu, perbedaan antara kekuatan TV, bahkan tahun lalu dan saat ini, bisa berlipat ganda.
Karena itu, jika Anda ingin mencakup jumlah maksimum model, bersiap-siaplah untuk optimasi berdarah segalanya. Kanvas asli yang bersih akan menjadi teman terbaik Anda. Pembungkus bekerja di atasnya, tetapi sangat rakus. Pekerjaan yang tidak memuaskan dari metode rotate dan transformasinya sangat menyedihkan, jadi rencanakan animasi sprite dan implementasikan perubahan sprite hanya dalam kasus yang paling ekstrem.
Setelah kami melakukan pertandingan di Career Night. Dia berhasil pergi ke kolega yang luar biasa dari Web Standarts Days dan membuat presentasi.
Secara visual, gim ini adalah lapangan bermain, sesuai dengan ukuran layar, tanpa menggulir, tanpa hambatan. Latar belakang dibagi menjadi beberapa lapisan untuk mewujudkan efek 3d. Di atas panggung, target terbang (bebek) dihasilkan, di mana pengguna dapat menembak.

Fig. 1. Tampilan umum aplikasi.Tugas utama adalah memberikan kesempatan untuk bermain game kepada siapa pun dan apa pun, yang segera mengecualikan interaksi dengan remote control. Konsol itu satu, tetapi ada banyak pemain. Manajemen diimplementasikan menggunakan telepon, dan untuk jangkauan maksimum perangkat seluler, diputuskan untuk mengimplementasikan klien dalam bentuk situs web adaptif. Kami menerapkannya di WebSockets, dan menambahkan manajemen chip melalui perubahan posisi telepon.
Kemudian banyak fitur menarik yang muncul, sensor orientasi berkualitas rendah dan gangguan lainnya. Kami harus menerapkan algoritme pengurangan kebisingan, jika tidak, βpandanganβ pemain di layar TV mengalami getaran yang mengerikan. Ternyata juga permainan itu "meniup angin": kesalahan yang diakumulasikan dalam perhitungan di telepon dan pemandangan itu secara bertahap "meledak" dalam satu arah, yang memaksa para pemain untuk berangsur-angsur berbalik. Beberapa bermain dengan punggung mereka ke TV.
Moral : Gunakan sensor orientasi di browser ponsel sesedikit mungkin.
Fig. 2. Pembunuh bebek di tempat kerjaAplikasi ini menggunakan animasi dengan mengganti sprite. Metode ini cukup produktif. Kami menguji aplikasi dengan ratusan atau lebih bebek terbang. Pada kenyataannya, hanya ada 10 dari mereka dalam permainan. Masalah kinerja muncul ketika desainer berlari dan berteriak: "Saya ingin planet berputar"!
Memutar sprite itu tidak masalah. Masalahnya terjadi ketika kami meluncurkan aplikasi di TV yang relatif lama. Ternyata dia tidak mengeluarkan rotasi sprite 900 Γ 900 piksel sedikit lebih banyak daripada tidak sama sekali. Akibatnya, pengguna yang paling besar dapat melihat bahwa planet di latar belakang dipotong menjadi 9 bagian yang berputar di sekitar satu pusat. Ini memecahkan masalah kinerja.
Karenanya moral lain: jangan memutar sprite besar.
Fitur lain dari proyek ini adalah bahwa logika permainan dihitung ... di TV. Dalam hal ini, server bertindak hanya sebagai pemancar data antara klien dan TV. Kami melakukan ini sehingga bahkan jika terjadi kehilangan koneksi, bebek terus terbang melintasi layar, dan setelah memulihkan Internet, tidak perlu me-restart aplikasi. Kasus yang aneh, tapi masih opsional.
Layar TV?
Tampaknya ini sudah biasa, tetapi tidak. Seperti biasa, semuanya tersembunyi di detail. Layar untuk apa? Fungsi apa yang dibawanya? Untuk apa ini?
Saya akan memberikan beberapa contoh saja.
SelamatSuatu hari, kami memutuskan pada Hari Valentine untuk mengurangi ucapan selamat online di perusahaan, dan menggunakan TV yang tersedia sebagai penerjemah ucapan selamat. Aplikasi diimplementasikan dalam versi minimalis dengan satu permintaan ke server mengembalikan daftar ucapan selamat. Masalah utama adalah fitur TV yang tidak menyenangkan untuk masuk ke mode tidur. Jika Samsung memungkinkan Anda untuk menonaktifkan fitur ini menggunakan metode setScreenSaver, maka platform lain tidak benar-benar mengizinkannya. Sebagai alternatif, Anda dapat menjalankan video lingkaran berulang di latar belakang - TV dalam mode tampilan video mati jauh lebih jarang. Akibatnya, aplikasi memenuhi fungsinya: di semua bagian kantor di beberapa lantai, ucapan selamat karyawan disiarkan secara online.
PetaUntuk menjadi sangat tepat - peta pertempuran dengan daftar pemain terbaik.
Kami kembali membuat game di Career Night dan kali ini memutuskan untuk menggabungkan TV, ponsel, dan VR. Intinya adalah bahwa pemain di helm VR terbang pada naga dan menembak para putri, yang dikendalikan oleh pemain dari ponsel. Siapa pun yang membunuh naga itu memakai helm. Dan dalam lingkaran. Saya dengan sederhana mencatat bahwa aplikasi mengatasi fungsinya (untuk mengumpulkan jumlah maksimum orang di stan kami dan menjaga mereka selama mungkin). Pelajari lebih lanjut tentang naga yang menghancurkan putri di
sini .

Fig. 3. Tampilan umum dudukanAplikasi TV menyediakan demonstrasi adegan pertempuran umum untuk semua pendatang.
Dalam proyek ini, kami dihadapkan dengan kebutuhan untuk mengoptimalkan kode yang sebelumnya stabil dan berfungsi dengan baik. Dengan peningkatan jumlah pemain, indikator kinerja aplikasi secara nyata memburuk. Kami mengidentifikasi cara utama pengoptimalan:
- mengurangi jumlah informasi yang dikirimkan dari server ke klien dan dari klien ke server;
- meminimalkan pembuatan objek baru dalam aplikasi.
Pembuatan setiap instance baru dari kelas dapat dilihat oleh mata, sehingga semua instance harus dibuat sebelumnya dan ditunjukkan kepada pengguna sebagaimana diperlukan.
Di TV di sebelah kiri adalah pemandangan dari kacamata VR, di TV di tengah adalah peta pemandangan.
Fig. 4. Gameplay. Di TV di sebelah kiri - lihat dari kacamata VR, di TV di peta adegan tengahLatar belakang interaktifAnda dapat dengan tepat bertanya: "Apakah Anda bahkan bekerja di sana, bukan?!" Yang akan saya jawab dengan kurang tidur yang tulus di wajah saya: "Tentu saja, saya bekerja!" Tetapi lebih lanjut tentang itu nanti. Sementara itu, kami tidak duduk dan ingin menerapkan latar belakang interaktif untuk quadrocopter. Rincian lebih lanjut tentang proyek ini dapat ditemukan di
sini .
Idenya adalah untuk menunjukkan di televisi harta warisan Santa Claus, yang akan menanggapi kepergian / kedatangan quadrocopter.
Minat utama adalah untuk "meregangkan" gambar di tiga TV. Produsen yang berbeda.
Kami melakukan ini dengan membagi seluruh adegan menjadi "kamar." Setiap TV menunjukkan "kamar" dengan nomornya. Jumlah "kamar" dapat diubah, sehingga TV, pada prinsipnya, dapat menunjukkan bagian yang sama dari satu adegan, tetapi kami menunjukkan seluruh adegan secara berurutan. Perintah untuk memindahkan lingkungan adegan (hewan, pergerakan bulan dan asap dari cerobong asap) ditransmisikan dari server melalui WebSockets favorit mereka.

Fig. 5. Sebuah adegan membentang di tiga TVKarena kami tahu waktu kedatangan / keberangkatan quadrocopter, ide muncul untuk membuat "angin" di TV, yang akan "meniup" asap dari pipa dengan operasi dekat sekrup.
Sekali lagi, perintah untuk lepas landas dari quadrocopter melalui server turun ke klien.
Dan di sini juga, kami mengalami kesulitan dengan kinerja. WebOS "lama" tahun 2013 sangat sulit menghasilkan gambar besar (5760 Γ 1080). Saya harus memotong latar belakang ke ukuran layar khusus untuknya dan menggantinya dengan ketat.
Moral : Jangan mencoba menggambar yang jauh lebih besar dari layar TV. Dia tidak akan selamat dari ini.
Namun demikian, kami telah berhasil mengimplementasikan semua yang berhubungan dengan Smart TV dan backend.
TV - Penjaga?Namun, proyek yang paling menarik adalah sepenuhnya non-fiksi, dan bagaimanapun juga, berguna.
Aplikasi ini terlibat dalam keamanan rumah. Ya, itu TV. Ya, itu dijaga.
Inti dari aplikasi ini adalah bahwa kamera yang ada mengambil semua yang terjadi di depannya, dan dalam kasus perubahan tajam pada gambar, dibutuhkan tindakan untuk memilih:
- berteriak keras;
- mengirim SMS ke pengguna;
- menulis surat dengan foto terlampir dari insiden tersebut;
- menulis pesan ke FB juga dengan gambar;
- melakukan semua ini sekaligus atau dalam variasi apa pun.
TV itu sendiri pada saat ini sangat berpura-pura menjadi boot yang terasa dan tidak bekerja sama sekali. Dalam aplikasi tersebut, kasus-kasus mematikan TV dari Internet atau hanya dari kekuasaan ditangani. Aplikasi ini mendukung multibahasa.
Puluhan ribu orang menginstalnya sendiri.
Tapi di sini tidak semuanya sederhana.
Ketika Anda menghubungkan kamera dan mencoba mendapatkan streaming di browser dari itu, seperti yang Anda tahu, popup sistem jatuh dengan konfirmasi tindakan. Keunikannya adalah bahwa TV memblokir semua pop-up. Oleh karena itu, aplikasi kami hanya diterapkan pada platform Samsung baik menggunakan kamera TV built-in atau kamera khusus yang disediakan oleh Samsung yang sama.
Kekurangan lainnya adalah, sekali lagi, kinerja TV. Pada TV yang relatif lama (2013), seseorang dapat menyelinap melewati kamera dan TV akan "menampar" momen ini.
Namun secara keseluruhan, idenya cukup brilian.
Kesimpulan
TV telah lama melampaui fungsi utamanya - untuk menampilkan gambar dari saluran, untuk menunjukkan vidosiki atau menjadi monitor kedua.
Kemampuan dan kinerjanya terus meningkat, dan ruang lingkup aplikasi hanya dibatasi oleh imajinasi Anda. Setiap tugas dapat diselesaikan dengan mempertimbangkan ide dan implementasi yang tepat. Berani dan sukses!
Televisi semua orang!
Z.Y. Mungkin Anda, pembaca, memiliki tugas yang tidak biasa untuk TV pintar ketika Anda harus menggunakan TV dalam peran yang tidak biasa? Bagikan itu! Beritahu saya!