Mengapa menulis mesin gim Anda sendiri?

Pada bulan Desember tahun lalu, pada konferensi Games Gathering 2017, kami membuat laporan di mana kami berbicara tentang apakah perusahaan yang bekerja di industri game perlu membuat mesin sendiri.



Persatuan dalam menghadapi berbagai mesin game



Mengapa di dunia modern, di mana raksasa seperti Unity ada, melakukan sesuatu sendiri, menulis mesin gim mereka sendiri?

Berikut ini adalah slide dengan data dari Unity Technologies tentang penggunaan berbagai mesin game pada tahun 2017. Tahun depan, situasinya, seperti yang Anda pahami, akan berubah. Yang menarik bagi kami di sini adalah 41%, yaitu mesin desain kami sendiri. Jika Anda melihat 5 perusahaan terbesar yang diwakili di konferensi, masing-masing dari mereka akan memiliki mesin sendiri. Ternyata di sebagian besar perusahaan yang mewakili industri game, beberapa jenis pengembangan internal digunakan. Tidak selalu ini adalah keputusan paling masuk akal di dunia, tetapi itu adalah.

Teknologi dasar apa yang dapat dipikirkan perusahaan untuk mengembangkan proyek game?

Tentara Tujuh Bangsa



Piramida yang Anda lihat pada slide dapat dilanjutkan ke atas dan ke bawah. Ini jelas membatasi Anda. Bawah - sistem operasi, bahkan lebih rendah - beberapa teknologi dasar. Di atas adalah add-on over engine, toolkit yang sudah jadi yang dilengkapi dengan game, seperti alat Neverwinter Nights. Apa pun yang Anda lakukan, dengan satu atau lain cara, Anda menemukan diri Anda berada di dalam hal ini.

Misalkan saya ingin berada di tingkat kedua dari piramida di bawah ini. Namun, semua jalur akhirnya mengarah ke puncak piramida. Kami akan menggunakan sesuatu dari yang sudah ada, tetapi sangat penting bahwa kita dapat melihat di sudut kiri atas tingkat atas piramida, yaitu, mesin desain kami sendiri.

Sekarang kami menganalisis waktu, upaya, dan uang yang dibutuhkan untuk mengembangkan game.

Kembali ke dasar



Jika seluruh diagram lingkaran yang ditunjukkan pada slide adalah permainan, maka mesinnya adalah sektor biru. Di dunia yang ideal, saat mengembangkan game, Anda bisa mengeluarkan sektor biru ini dan meletakkannya di sana merah, atau kuning, atau hijau. Anda dapat mengubah satu "U" besar ke besar "U", atau mengambil beberapa "x" kecil, dan apa yang Anda pilih akan bekerja di sana. Pada kenyataannya, ini tidak benar, tetapi kita harus berjuang untuk ini. Gambaran serupa, dalam hal proyek nyata, terus-menerus diamati di industri game. Itu juga terjadi bahwa seluruh diagram ditempati oleh mesin, tetapi ini hanya berlaku untuk beberapa produk demo.

Dalam hal ini, uang, waktu, dan yang lainnya didistribusikan dengan cara itu. Apa pun yang Anda lakukan, Anda harus berurusan dengan semua yang jatuh ke area hijau diagram. Itu tidak berubah dari mesin ke mesin. Alhasil, jika Anda memiliki sumber daya yang cukup untuk mendukung seluruh proses pengerjaan proyek game, maka pengembangan mesin tidak akan semahal itu. Namun, jika seseorang di perusahaan mulai berbicara tentang mengembangkan mesin mereka sendiri, kemungkinan besar mereka akan menghadapi serangkaian keberatan tertentu. Pertimbangkan mereka.

Manusia bulan-mitis



Misalkan Anda memutuskan untuk membuat mesin sendiri dan memberi tahu pembuat keputusan tentang hal itu. Sebagai tanggapan, Anda akan mendengar tentang hal yang sama yang dapat dilihat pada slide: "Anda akan melakukannya untuk waktu yang lama, itu sangat berisiko, tidak rasional, tidak akan membantu kami mencapai tujuan kami." Apa yang bisa dijawab? Intinya di sini adalah bahwa semua keberatan ini, kecuali yang terakhir, tidak tahan terhadap kritik.

Lama pengembangan mesin? Tetapi jika pengembangan dengan mesinnya sendiri berjalan lebih cepat, maka ini bukan argumen. Mungkin, secara umum, tidak ada yang tahu apa itu "rasional". Karena itu, semua keberatan ini sangat subyektif.

Poin terakhir mengenai apakah mesin Anda berkontribusi untuk mencapai tujuan sangat penting. Jika tujuan Anda adalah untuk mendapatkan berkat hibah dari Unreal 4, maka Anda mungkin tidak perlu membuat mesin sendiri, karena itu tidak mengarah ke tujuan ini. Jika Anda memiliki tujuan, dalam kerangka yang Anda perlu lakukan sesuatu pada teknologi tertentu, maka Anda tidak perlu menulis mesin sendiri - Anda perlu mengambil apa yang ada. Tetapi jauh dari selalu memungkinkan untuk menggunakan mesin yang sudah jadi secara efektif. Mengapa, tetap saja, tulis mesin Anda sendiri?

13 alasan mengapa



Kapan Anda membutuhkan mesin sendiri? Mari kita analisis slide ini dengan poin:

  • Time to Market - waktu ke pasar untuk suatu produk. Ini sangat serius. Setengah dari mesin yang sekarang digunakan di perusahaan besar dikembangkan justru karena pada saat itu ketika perusahaan ini perlu cepat menempati ceruk, mengembangkan sendiri lebih cepat daripada mengambil sesuatu yang lain dan menguasainya.

Ini ada cerita untukmu. Salah satu perusahaan memiliki tugas untuk programmer di situs yang terlihat seperti ini: "Guys, jika Anda ingin bekerja bersama kami, silakan tulis Asteroid, yang seharusnya berjalan pada platform Android tanpa menggunakan perpustakaan eksternal. Kami percaya bahwa 8 jam sudah cukup untuk Anda. Waktunya telah tiba. ” Kemudian waktu ditingkatkan menjadi 12 jam. Mungkin itu terlihat lucu. Awalnya saya menonton ini, dari luar, kemudian melihat perusahaan ini dan meminta saya untuk memberi tahu Anda tentang apa yang mereka kirim dalam bentuk respons terhadap tugas ini. Ternyata, lebih dari dua ratus program melewati seleksi, yaitu, program ini diluncurkan dan berfungsi. Ini berarti bahwa jika Anda tiba-tiba ingin menerbitkan "Asteroid" untuk Android, maka setidaknya ada 200 orang yang dapat melakukan ini dalam 8 jam. Saya tidak mengatakan bahwa itu bisa dijual. Tetapi saya menceritakan kisah ini kepada fakta bahwa seringkali, sebenarnya, mesinnya adalah Waktu untuk Memasarkan. Katakan, hanya karena Anda memiliki kebutuhan kecil sehingga Anda akan mempelajari dokumentasi untuk Unreal yang sama lebih lama daripada hanya mengambil dan membuat sendiri.

  • Lord of the Platform adalah penguasa platform. Ada platform yang tidak ada alat siap pakai. Misalnya, STB, set-top box (penerima televisi digital) - kotak untuk televisi kabel, yang ada di meja di setiap orang Amerika ketiga.

Warner memiliki 120 juta pengguna layanan ini. Jika Anda menulis perangkat lunak di sana, termasuk game, maka Anda memiliki dolar dari kotaknya. Ini 120 juta dolar setahun. Pada saat yang sama, tidak ada orang lain yang bisa menulis untuk hal ini kecuali Anda. Karena tidak ada DirectX, tidak ada sama sekali. Jika Anda dapat menulis program untuk STB, maka Anda adalah penguasa platform, Anda memiliki ini seratus dua puluh juta dolar setahun. Mengapa tidak menulis mesin sendiri?

Jelas bahwa kita sekarang berbicara lebih banyak tentang sesuatu seperti mainan konsol, tetapi, bagaimanapun, dalam beberapa situasi ini mungkin diperlukan. Di sini, misalnya, mesin slot. Tentu saja, di sana sekarang, terutama komputer. Tetapi di hadapan kita ada alat besi yang terpisah dan pasar yang besar, yang sangat memungkinkan untuk menulis sesuatu dari kita sendiri.

Kita dapat mengatakan bahwa kita tertarik pada telepon, tetapi kita berbicara tentang jutaan dolar. Mengapa tidak menulis untuk perangkat lain? Akibatnya, ada alasan yang sangat jelas untuk melakukan ini.
Atau, misalnya, kami memiliki jam tangan pintar terbaru. SDK belum datang kepada mereka, tidak ada yang mengerti apa yang harus dilakukan dengan mereka, dan jika Anda dapat, sendiri, menulis produk yang berkualitas untuk mereka, maka Anda, katakanlah, dapatkan dolar dari setiap perangkat tersebut. Jika mereka akan dijual dua juta - maka Anda akan mendapatkan dua juta dolar. Menulis ini tidak sulit, tetapi untuk ini Anda perlu membuat mesin sendiri, karena tidak ada orang asing, dan produsen perangkat tersebut tidak akan membuat mesin publik untuk pengembangan untuk mereka.

  • Perangkat lemah tapi bangga adalah perangkat kecil tapi bangga. Jika Anda membuat game untuk ponsel, mengumpulkan setidaknya beberapa statistik, maka Anda tahu bahwa dengan perangkat keras dari perangkat Apple semuanya lebih atau kurang normal, tetapi dengan platform Android itu hanya bencana.

Setengah dari perangkat di pasar didasarkan pada chipset ARM Mali-400, semua ponsel beranggaran adalah Mali-400. Dan jika Anda dibayar untuk apa yang Anda lakukan dengan aplikasi telepon, maka Anda harus menulis untuk perangkat kecil namun bangga ini yang belum akan meninggalkan pasar dan akan segera meninggalkannya.

Selain itu, dalam kasus iPhone, Anda dapat membuat setidaknya beberapa taruhan pada progres. Misalnya, diharapkan Unreal akan berfungsi di bawah iPhone 10, meskipun sebelum semua ini teringat, sudah ada beberapa iPhone 12, 15 atau 17. Namun dalam kasus dunia secara umum, akan lebih sulit untuk membuat kemajuan dalam jangka pendek. Karena pemutakhiran perangkat sangat lambat.

Jika Anda ingin gambar yang kompetitif, dan jika itu sangat penting, Anda tidak perlu menggunakan perangkat berdaya rendah. Tetapi Anda harus ingat bahwa semua mesin modern tidak mengalami penurunan. Jika Anda tidak ingin gambar yang kompetitif, maka, dengan demikian, pertimbangkan kemampuan ponsel yang lemah. Karena itu, jika Anda berada dalam situasi di mana Anda tidak tertarik pada perangkat tercepat, misalnya, Anda adalah satu-satunya distributor di suatu tempat di Portugal atau Brasil, maka Anda harus memikirkannya.

  • Bahasa sendiri untuk ide-ide mereka sendiri - bahasa sendiri untuk ide-ide mereka sendiri. Ketika Anda membuat mesin sendiri, Anda dapat menggunakan konsep ini. Faktanya adalah bahwa masalah utama industri kita adalah bahwa domain dari perancang permainan adalah filologi. Ia berpikir dalam bahasa biasa. Dia tidak bisa melakukan hal lain. Tetapi programmer berpikir dalam domain pemrograman dan ada celah di antara mereka. Akibatnya, iterasi tertentu, yang harus terus diulang, membutuhkan biaya, misalnya, dua dolar. Dan Anda terus-menerus menghabiskan uang ini.

Mesin standar mencoba untuk melindungi semua orang. Faktanya, kita melihat bagaimana mereka mencoba melakukan transformasi domain alami dari bahasa ke bahasa dan dari ruang ke ruang. Tapi untuk semua orang. Dan Anda punya ide sendiri, dan Anda bisa menerapkannya secara langsung, membuat seperangkat alat sendiri. Jelas bahwa semua ini, dalam bentuk plug-in, dapat dilakukan di atas mesin yang ada, tetapi mesinnya membuka kemungkinan yang sangat berbeda.

  • Mekanika Unik = Mesin unik - mekanika unik = mesin unik. Teman-teman saya menulis Minecraft pada tahun kelima belas menggunakan Unity. Apakah ada gunanya melakukan semua ini - pertanyaan terbuka. Tetapi mereka memilih mesin dan mulai bekerja. Namun, mesinnya, jelas sekali, sangat mengganggu mereka. Itu sulit bagi mereka. Mereka memiliki iterasi yang sangat panjang. Setelah kami berkonsultasi dengan mereka, mereka menulis, secara harfiah dalam tiga hari, render mereka sendiri. Selain itu, sisa kode bertanggung jawab, katakanlah, untuk membangun dunia, tentu saja, belum hilang. Itu semua berhenti di C #, berhenti di Unity. Dan pekerjaan mulai mendidih. Saya tidak tahu apakah mereka berhasil menghasilkan uang, tetapi kesimpulan utama dari cerita ini adalah bahwa mereka pada awalnya tidak harus menggunakan Unity.

Yaitu, ada sejumlah besar mekanik untuk siapa mesin standar, besar, universal tidak cocok hanya karena mereka dirancang untuk semuanya. Karena itu, jika Anda datang dengan sesuatu yang istimewa besok, semacam mekanisme voxel yang kompleks, maka bekerja dengan mesin standar akan merepotkan Anda. Yaitu, ada mekanika yang mesin standarnya tidak cocok, dan yang cukup sederhana untuk diimplementasikan secara mandiri.

  • Permainan ini bukan render - game adalah segalanya - game bukan render, game adalah segalanya. Kami sudah membicarakan hal ini. Jika satu-satunya masalah Anda adalah menggambar sesuatu, atau, katakanlah, gunakan suara untuk membuat game multi-platform, maka Anda bisa melihat cerita serupa di piramida yang dibahas sebelumnya. Jika Anda mengatakan: "Saya ingin memutar suara pada tiga platform," maka Anda tidak perlu "U" besar untuk ini - "c" kecil akan cukup.

Kami mempertimbangkan alasan untuk mengembangkan mesin kami sendiri. Mari kita sekarang memikirkan keuntungan apa yang disediakan perusahaan dengan pengembangan mesinnya sendiri.

Keuntungan mengembangkan mesin Anda sendiri



Pertimbangkan keuntungan mengembangkan mesin Anda sendiri, berdasarkan ide-ide utama yang diajukan pada slide:

  • Membeli seringkali lebih baik daripada hipotek - membeli seringkali lebih disukai daripada hipotek. Pengembangan game adalah uang. Ada cara untuk menghasilkan uang, menggunakan pembelian yang tidak hanya lebih baik daripada hipotek, tetapi ini hanya satu-satunya pilihan.

Jika seseorang bekerja pada teknologi seluler, maka Anda mengerti segalanya. Jika kotak pada mesin mengatakan: "10 persen dari royalti", maka ini jelas tidak dapat diterima, Anda tidak akan mendapatkan banyak. Anda bisa mendapat untung seratus persen, tetapi Anda berhasil dari 2. Artinya, jika Anda memiliki royalti, maka ini adalah alasan murni ekonomis untuk meninggalkan mesin. Tetapi saya harus mengatakan bahwa tiga, atau lebih tepatnya - dua mesin paling populer saat ini - ini hanya masalah pengurangan. Artinya, opsi ini segera menghilang.

  • Spesifisitas lebih baik daripada universalitas dalam jangka panjang - dalam jarak yang jauh, alat khusus selalu lebih baik daripada yang universal. Jelas, universalitas selalu lebih lambat, ia kurang produktif dan kurang spesifik daripada hal-hal khusus. Mesin yang ditulis untuk tugas tertentu akan mengatasinya dengan lebih baik dan lebih cepat daripada alat universal. Dalam jarak yang jauh, alat khusus jauh lebih menguntungkan daripada yang universal.
  • Alat dan jalur pipa dikembangkan di dalam - jalur pipa dan alat pengembangan dibuat secara internal. Setiap mesin yang ditemukan oleh orang-orang di luar perusahaan Anda dipandu oleh beberapa hal. Yang pertama adalah praktik terbaik. Yaitu, mesin perusahaan lain tidak berfokus pada bagaimana seniman Anda melukis, tetapi pada bagaimana seniman melukis, ideal dari sudut pandang mereka. Mungkin saja pelukis Anda berbeda. Mereka memiliki saluran pipa sendiri dan mereka berhasil.

Anda memiliki 2 pilihan: melatih ulang mereka sebagaimana seharusnya dari sudut pandang praktik terbaik, atau menggunakan milik Anda sendiri. Ada beberapa contoh sederhana. Misalkan Anda berkata, "Kami mengimpor model 3D." Anda tidak tahu apa yang ada di sisi lain. Oleh karena itu, Anda memerlukan format perantara. Format menengah biarkan FBX. FBX memiliki kelemahan pada semua orang yang mengetahui hal ini. Dan Anda tidak punya tempat untuk pergi, karena Anda tidak tahu apa yang akan dilakukan di sana, Anda tidak akan menulis plug-in untuk 450 alat pemodelan 3D.

Ketika Anda bekerja di dalam perusahaan Anda, Anda dapat menerapkan pipa yang sama yang sudah Anda miliki dan meletakkan di atasnya apa yang Anda lakukan. Padahal, ini sangat penting. Faktanya adalah bahwa semua ini berkaitan dengan waktu pengembangan dan, sebagai konsekuensinya, dengan biaya. Karena itu, ketika Anda berkembang di rumah, Anda dapat membuang pipa yang sudah Anda miliki. Jika tidak, Anda akan memiliki dokumen yang disebut "Aturan untuk Mengunggah Model 3D dan Membuat Bahan untuk Artis" yang akan lebih dari sekadar dokumen desain, yang salah.

  • Waktu reaksi - waktu reaksi. Kita berbicara tentang waktu reaksi produsen mesin terhadap permintaan Anda, tentang kemungkinan melengkapi mesin dengan fungsi baru, dan tentang riset operasional teknologi baru.

Katakanlah, di kantor berikutnya ada orang yang membuat mesin. Setiap orang yang mencoba untuk memperbaiki bug di mesin universal, yaitu, menulis Unity atau Epic di pelacak bug, tahu bahwa lebih baik untuk tidak memulai. Dan jika pengembang duduk di kantor berikutnya, maka Anda dapat menghubungi mereka dan menyelesaikan masalah dalam 15 menit.

Hal yang sama berlaku untuk proposal fungsi baru, jika Anda memiliki hak untuk melakukannya. Studi tentang teknologi baru juga disederhanakan dengan menggunakan mesin kami sendiri.
Misalkan programmer Anda pergi ke sebuah konferensi dan mendengarkan ceramah tentang sesuatu yang baru di sana. Dia langsung mencobanya, Anda mendapat ide tentang yang baru ini dan Anda tahu apakah Anda membutuhkannya atau tidak. Anda bisa langsung bereaksi untuk mencoba sesuatu yang menarik dari dunia sains. Dan ini, omong-omong, berarti bahwa perusahaan tersebut mungkin memiliki seseorang yang akan disebut "peneliti". Pada saat yang sama, Anda dapat melakukan penelitian pada Unreal yang sama, karena itu datang dari sumbernya.

  • Kinerja - kinerja. Industri game selalu produktivitas. Pendekatan pertama untuk mencapai kinerja tinggi adalah menggunakan solusi khusus. Semakin spesifik solusinya, semakin produktif mereka. Pendekatan kedua - juga, omong-omong, sayang, adalah optimalisasi mesin siap pakai. Bagaimana tepatnya ini akan terlihat - sangat tergantung pada mesin ini.

Mengembangkan mesin sendiri bukan hanya keuntungan. Ini juga risiko. Pertimbangkan mereka.

Risiko yang terkait dengan pengembangan mesin Anda sendiri



Pertimbangkan risiko yang menyertai pengembangan dan penggunaan mesin kami sendiri:

  • Waktu pengembangan - waktu pengembangan. Konsep ini bersinggungan dengan apa yang kita bicarakan saat memasuki pasar. Perkembangan mesin bisa sangat panjang dan cukup cepat. Tetapi waktu pengembangan mesin, dalam hal apapun, berkontribusi terhadap waktu pengembangan keseluruhan proyek. Karena itu, ini juga risiko. Sebagai contoh, saya tahu tim di mana waktu pengembangan mesin cenderung tak terbatas.
  • Kasing terminal-lock terminal - kasing terminal yang mengikat ke pemasok. Ini tidak hanya berlaku untuk perusahaan besar, tetapi juga untuk perusahaan kecil. Katakanlah Anda menyewa Vasya, ia menulis mesin, lalu jatuh cinta, berhenti, dan tidak ada yang mengerti apa yang ia tulis. Akibatnya, Anda memiliki kunci vendor yang lebih buruk daripada Google. Karena Anda masih bisa menulis surat ke Google, meskipun mereka tidak akan menjawab, tetapi di sini dengan kepergian programmer semuanya sudah berakhir. Hasilnya adalah kehilangan waktu pengembangan dan konsekuensi tidak menyenangkan lainnya. Anda harus dapat menghindari risiko ini.
  • Temukan kembali roda - penemuan roda. Intinya adalah kita hidup di dunia di mana Anda masih menciptakan sepeda. Ketika mengembangkan mesin, ternyata pabrik sepeda ditransfer dari kode permainan ke kode mesin, meskipun mereka bukan milik di sana.
  • Ekosistem tertutup - ekosistem tertutup.Segala sesuatu yang dilakukan di dalam perusahaan adalah milik perusahaan ini. Saya tahu banyak perusahaan yang memiliki sesuatu seperti bahasa scripting mereka sendiri. Ini mungkin semacam XScript yang hanya berfungsi sebagai bagian dari solusi mereka.

Programmer yang mengetahui teknologi ini, pada kenyataannya, tidak bisa berbuat apa-apa lagi. Ini dapat dianggap sebagai salah satu faktor yang membantu mempertahankan karyawan. Karena itu, jawaban atas pertanyaan apakah itu baik atau buruk, apakah menggunakan teknologi Anda sendiri adalah risiko tergantung pada situasi spesifik. Sebagai contoh, kami mencoba untuk tidak menggunakan konsep penemuan kami sendiri. Misalnya, saya tahu perusahaan yang memiliki Lua, sangat diketik, dengan sintaks Pascal. Itu bisa dikuasai, tetapi pengetahuan ini sudah mati, seperti bahasa Yunani. Kami berusaha keras untuk tidak bertindak.

Masalah utama kehidupan, alam semesta dan semua itu



Pertimbangkan masalah yang sangat penting. Sumber daya apa yang dibutuhkan terutama untuk mengembangkan mesin Anda sendiri? Sumber daya yang tanpanya tidak masuk akal untuk memikirkan apakah akan membuat mesin sendiri atau tidak. Jawabannya, tentu saja, bukan 42. Pertanyaannya adalah - apa yang diperlukan untuk setidaknya dapat mengatakan: "Ya, kami memiliki setidaknya sesuatu, kami dapat mulai melakukan sesuatu." Jawaban untuk pertanyaan ini adalah bahwa programmer diperlukan untuk mengembangkan mesin Anda sendiri.

Programmer



Untuk membuat mesin Anda sendiri, Anda membutuhkan programmer. Jika Anda tidak tahu, cari perbedaan antara kata "developer" (developer) dan "programmer" (programmer). Ini sangat penting. Pengembang adalah grup utama. Industri gim diatur sedemikian rupa sehingga sebagian besar orang di dalamnya tidak bisa disebut pemrogram. Maaf, tetapi mereka adalah pengembang. Pengembang tidak dapat membuat mesin dengan benar. Sekali lagi, jika Anda melihat perbedaan antara yang pertama dan yang kedua, pengembang membuat game, dan programmer membuat alat. Pengembang membuat produk, perusahaan menghasilkan dari produk, tetapi alat harus dibuat oleh programmer, kalau tidak mereka tidak akan bekerja.

Di satu sisi, ini adalah dunia yang sangat terbuka sekarang. Sebagai contoh, saya tahu kode Unreal 4 dan CryEngine, kode itu terbuka. Siapa pun yang ingin tahu dapat mengetahui kode Unity, ada sejumlah besar materi yang relevan. Ini berarti bahwa seseorang yang merupakan programmer dan membaca bahasa Inggris dapat melakukan ini. Tidak ada ilmu roket di sana. Tetapi di sisi lain, ternyata, programmer yang membaca dalam bahasa Inggris sangat sulit ditemukan. Karena itu, Anda harus tahu di mana mereka ditemukan, Anda harus dapat merekrut, menggunakan, mempromosikannya. Jika Anda tahu caranya, maka Anda sudah bisa memikirkan mesin Anda. Jika Anda tidak memiliki orang seperti itu, maka Anda masih tidak akan berhasil. Contohnya adalah kegelapan. Bukannya ada solusi buruk dan bagus. Ada beberapa hal yang awalnya tidak bisa bekerja.

. β€” . β€” - . , , - , , β€” , , -.

, . ? ? , ?



Sekarang adalah tepat untuk mengingat kembali aspek lain dari pencarian karyawan, yang terutama menyangkut perusahaan besar. Perusahaan semacam itu memiliki beberapa pendekatan untuk rekrutmen staf.

Pertama, Anda dapat merekrut orang, lelucon, mengatur magang, dan, melatih mereka di dalam perusahaan, entah bagaimana tumbuh ke tingkat yang diinginkan. Ini adalah pendekatan normal. Pada saat yang sama, banyak masalah teknologi juga diselesaikan, karena lebih mudah untuk menemukan bahasa yang sama dengan seseorang yang awalnya memandang budaya perusahaan dan mempelajari teknologi tertentu.

-, , , , . ? . , β€” , . : Β«, 5 , Β». , RnD-, β€” β€” . , , . , , RnD-. , , , , .

Sekarang pertimbangkan pendekatannya, yaitu perusahaan akan mengatur tim yang membuat mesin atau beberapa hal menarik lainnya. Ini bekerja untuk masa depan. Anda dapat melakukan wawancara, katakan bahwa Anda memberi uang, Anda memiliki tugas yang menarik, Anda membuat mesin. Anda dapat memilih dari pelamar, orang-orang datang kepada Anda, dan di dalam perusahaan Anda selalu memiliki suasana seperti itu ketika Anda dapat memotivasi, mendorong, dan, sebagai hasilnya, mencapai tujuan Anda.

Sebagai contoh, saya memiliki beberapa modul yang dikembangkan oleh perusahaan makanan, karena mereka membutuhkannya. Artinya, fisika diperintahkan, dan alih-alih melihat beberapa barang kita sendiri, kita berkata: β€œAyo lakukan. Kami baru saja membuat antarmuka umum, agak digeneralisasikan, dan Anda akan melakukannya. ” Dan sebagai bagian dari tugas tipikal, ini sangat bagus. Artinya, pada prinsipnya, baik untuk menyebarluaskan teknologi di dalam perusahaan.

Jika perusahaan sudah sedemikian besar sehingga mampu melakukan sesuatu yang menarik di dalam dirinya sendiri, maka ia terbayar bahkan dari sudut pandang uang. Karena itu, jika Anda bisa, maka cobalah. Ini dapat terlihat seperti yang Anda inginkan - katakanlah, cabang Unreal Anda sendiri dibuat dan di sana kami memproses semuanya seperti yang Anda inginkan. Misalnya, saya membuat browser di salah satu perusahaan yang sesuai dengan memori 2,5 megabita. Dan dia bekerja. Kenapa - saya tidak tahu, tapi itu sangat menarik.

Di atas kami menyebutkan masalah perusahaan game, yang merupakan organisasi interaksi yang efektif antara programmer dan desainer. Mari kita bahas masalah ini secara lebih rinci.

Dua dunia



. β€” . - , , .

. , . β€” -. , . , , β€” β€” . β€” . , , , , , , , .

Pada slide Anda dapat melihat pohon perilaku, pohon perilaku. Pada prinsipnya, ini adalah hal yang baru saja diambil dari Wikipedia, tetapi di depan kami itu diambil dari sana oleh Unreal. Tidak ada yang salah dengan itu. Jadi, dokumentasi untuk ini terletak di situs web Unreal, tidak sulit bagi kami untuk membuat antarmuka yang sesuai dengan apa yang dilakukan di Unreal. Yaitu, Anda dapat mengambil contoh apa pun dari situs tindakan Anryl, contoh perilaku itu sendiri, karena formatnya hampir sama, tulis ulang seperti ini, dan itu akan berfungsi. Ini berarti saya membuat hidup saya lebih mudah, saya tidak menulis dokumentasi. Dan ada banyak hal seperti itu.

Pada contoh dari slide, sesuatu terjadi, seekor kepiting berlari, menangkap seseorang, secara umum, itu tidak masalah. Di dalam, pemrogram menyelesaikan masalah yang terlihat seperti "buka ...", "tembak ...", "hitung jarak" - dan itu saja. Semua perilaku lain ditulis dalam editor ini oleh seseorang yang sama sekali tidak ada hubungannya dengan pemrograman. Dan ini berfungsi, sebagai lawan menerjemahkan teks ke dalam kode. Selain itu, berbicara tentang keseimbangan, katakanlah. Apa itu keseimbangan? Ini adalah 15 faktor yang bisa diubah. Dan di sini adalah perilaku, bukan koefisien.

Misalnya, perilaku "patroli" dijelaskan oleh desainer game, bukan programmer. Ini berarti bahwa kami telah mengambil langkah yang tidak dilakukan oleh kebanyakan orang. Mereka hanya menulis dalam dokumen desain: "patroli". Dan seorang programmer dapat menerjemahkan ini dalam 50 cara berbeda. Apa itu patroli sama sekali? Dan di sini perancang permainan menulis dengan tepat apa yang dia maksud. Dan ini adalah kemenangan, teman-teman saya. Untuk ini, Anda memerlukan alat Anda sendiri. Untuk memperlancar transisi dari definisi verbal visioner Anda yang melihat permainan, sehingga untuk berbicara, di dalam kepalanya, ke programmer. Jika tidak, mereka akan berhenti menjadi programmer, akan menjadi pengembang dan akan menyiangi rumput sepanjang hidup mereka.

Ringkasan



Untuk meringkas. Kami berbicara tentang alasan untuk menulis mesin Anda sendiri. Katakanlah, jika Anda melihat kembali perangkat yang sudah ketinggalan zaman, maka ini tidak baik atau buruk. Artinya, Anda ingin gim Anda berjalan di sejumlah perangkat tertentu yang tidak lagi didukung oleh mesin komersial. Pada saat yang sama, Anda ingin tampil modern. Bagaimana cara mencapai ini? Tulis milikmu sendiri.

Apakah Anda ingin memiliki platform? Apakah Anda memiliki proyek khusus yang sama sekali tidak memerlukan penggunaan solusi universal? Atau, sebaliknya, apakah Anda memiliki proyek yang sangat besar dan kompleks dengan gambaran spesifik? Dalam situasi ini, sekali lagi, Anda dapat memikirkan mesin Anda. Pada saat yang sama, untuk membuat mesin Anda sendiri, Anda membutuhkan sumber daya. Dan sumber daya adalah pemrogram.

Akibatnya, jika Anda memiliki alasan untuk menulis mesin Anda, dan Anda memiliki sumber daya - ambil dan tulis.

Tanya Jawab

Pertanyaan


Apa nilai mesin Anda jika Anda mengevaluasinya dalam hal uang dan tenaga kerja?

β†’ Jawab


, , , . , . , , . , , Lua, , JavaScript , . , , , , , β€” . . β€” 3D, , . , , «» 8 , , , .


?


, . . , . , Lua, , , , Qt β€” .


, Lua, -, , ?


Ya, benar. Faktanya, kami sedang berupaya membawa ini ke sumber terbuka, menulis dokumentasi, sistem perakitan, dan contoh-contoh.

Pertanyaan


Perusahaan kami memiliki pandangan yang sangat mirip dengan Anda, dan kami juga memiliki masalah menarik. Saya ingin tahu - berapa rasio biaya tenaga kerja Anda untuk sebuah game, untuk sebuah mesin, untuk peralatan? Artinya, berapa banyak orang, misalnya, yang mengerjakan mesin, pada game, berapa banyak game yang menggunakan satu mesin?

Jawabannya


Kami sekarang memiliki dua mesin, edisi sebelumnya dan yang baru. Artinya, ini bukan refactoring. Ini adalah mesin yang sama sekali baru. Jika kita berbicara tentang biaya tenaga kerja, kita dapat mengatakan bahwa perusahaan kita besar, mempekerjakan sekitar 500 orang, programmer sekitar 250, 5 kantor. Tim proyek sedang mengerjakan permainan. Sebuah proyek adalah sejenis permainan, dan sejumlah orang terlibat di dalamnya. Tim pengembangan mesin adalah tim yang terpisah. Ini adalah kefir yang sama yang saya bicarakan, unit elit, ada sedikit uang yang berbeda dan pendekatan untuk membangun tim. Sekarang kita sedikit lebih maju dari pengembangan. Dua game baru diluncurkan pada mesin baru. Ini cukup menyakitkan, karena para pengembang gim ini tidak terlalu nyaman, karena mereka bekerja dalam situasi di mana sesuatu dapat diambil dari mereka dan meledak. Dan kami memiliki tim mesin - 6 orang. Perintah produk, rata-rata, adalah orang dari empat programmer, mereka tidak tumpang tindih.

Pertanyaan


Dengan mesin maksud Anda alat juga?

Jawabannya


Ya, kami memiliki tim pengembangan alat terpisah. Kami memiliki contoh yang sangat buruk. Alat GUI yang dirancang sangat buruk. Karena setiap programmer normal berpikir itu sangat sederhana. Kami mencoba melakukan outsourcing. Karena jelas - Anda memberikan antarmuka penuh, Anda memiliki segalanya, Anda berkata: "Buat jendela, gambar tombol - dan hanya itu." Tetapi usaha ini gagal, jadi kami sendiri melakukannya, bekerja dengan susah payah dengan Qt, karena penting bagi kami bahwa ini bekerja pada ketiga platform desktop. Karena itu, kami melakukannya sendiri. Dan kami memiliki 6 orang melakukan satu dan yang lain dan yang ketiga. Tetapi kami masih sedikit lebih maju dari permintaan produk.

Pertanyaan


Apakah realistis untuk menjual mesin Anda sekarang?

Jawabannya


Tidak. Sekarang Anda tidak dapat menjual mesin Anda. Anda dapat menjual ekosistem. Artinya, tidak mungkin untuk mengerjakan skema "beri aku uang, dan aku akan memberimu mesin". Perhatikan berapa banyak perusahaan kami memiliki mesin sendiri, dan berapa banyak dari mereka yang menjual mesin. Padahal, tidak ada satu pun dari mereka yang menjual mesin. Sebagai permulaan, ini adalah sakit kepala yang agak besar dari sudut pandang yang harus diubah menjadi produk. Apa yang bekerja untuk Anda di dalam perusahaan tidak dapat dijual dengan cara apa pun. Anda harus, setidaknya, menulis dokumentasi yang akan dimengerti orang lain. Anda hanya perlu menyewa beberapa pasukan sukarelawan yang akan menginjili bisnis ini. Dan tidak jelas apa yang akan Anda dapatkan dari ini. Dan jika Anda membuat game seluler di mesin ini, maka sangat mungkin untuk bangun sebagai seorang jutawan. Karena itu, untuk melakukan hal-hal seperti itu, seseorang harus menjadi penggemar, ia harus yakin bahwa Anda melakukannya. Saya berbicara tentang alasan yang dapat menyebabkan pengembangan mesin Anda, dan di sini Anda punya satu alasan lagi. Katakanlah Anda berpikir Anda akan membuat mesin lebih baik daripada Unreal. Jika demikian, pergi ke pasar. Tetapi saya tidak berpikir bahwa saya akan melakukan lebih baik daripada Unreal.

Pertanyaan


Saya mengerti bahwa mesin baru Anda adalah C ++ dan Lua?

Jawabannya


Ya, C ++, Lua dan banyak lagi JavaScript.

Pertanyaan


Kenapa C ++? Apakah ada pilihan, atau apakah Anda jelas tahu apa yang akan Anda ambil?

Jawabannya


Lihat, ada mod seperti itu. Setiap orang yang Anda temui memberi tahu Anda: "Golang," atau memberi tahu Anda: "Karat." Dan jika sekarang, saya pada dasarnya akan berpikir. Tetapi ketika Anda datang ke perusahaan sebagai kepala proses pengembangan mesin, dan ini adalah setahun yang lalu, Anda perlu membuat beberapa rencana, jadi Anda harus memasukkan item β€œBaca tentang Pergi” dalam rencana ini. Di sini, kinerja itu penting, tetapi dalam C ++ kami telah bekerja untuk waktu yang lama, kami tahu cara menggunakannya.

Mengapa kita menggunakan Lua? Karena itu adalah bahasa yang diremehkan, itu bagus untuk menanamkan. Kenapa harus javascript? Karena itu terjadi. Karena tidak ada apa pun di pasaran kecuali V8 dan Webkit. Dan ini adalah monstroid. Seperti yang saya katakan, kami membuat browser yang memakan memori 2,5 megabita, ada mesin JavaScript yang melewati semua tes. Kami memilikinya, dan itulah sebabnya - JavaScript. Sebagai hasilnya, misalnya, Anda dapat mengambil orang-orang yang tahu JS dan menulis situs web di Bereaksi.

Pertanyaan


Katakan padaku, apakah Anda menggunakan pohon perilaku hanya untuk mengontrol perilaku, atau apakah Anda menggunakannya untuk mengontrol mekanik game dan mempromosikan kemajuan game?

Jawabannya


Sekarang untuk perilakunya, tetapi kami masih memiliki beberapa mekanik alternatif. Kami masih memiliki, katakanlah, jaring Petri dengan editor, dan di sini masalahnya sedikit berbeda, yaitu bahwa jaring Petri sulit untuk dijelaskan kepada perancang permainan. Ada beberapa hal lain dengan editor yang memungkinkan Anda untuk menggambar, katakanlah, mesin negara yang terbatas. Dan kami mencoba membuat sesuatu dari itu semua. Sekarang saya perlu meminta orang-orang yang menulis skrip untuk menulisnya di formulir ini. Jadi pohon perilaku berfungsi, dan sisanya belum dimasukkan dalam alur kerja.

Pertanyaan


Seberapa sulitkah untuk memprediksi perkembangan teknologi di masa depan? Artinya, seberapa sulitkah untuk memprediksi penampilan beberapa perangkap dan sejenisnya?

Jawabannya


Saat ini, saya melihat satu masalah. Sekarang teknologi WebAssembly terlihat menarik. Flash sudah mati. Secara alami, kami ingin menerbitkan di tempat lain di web. Porting game, katakanlah, dari Unity ke WebGL adalah tugas yang tidak dapat diselesaikan dengan mengklik tombol. Yaitu, sekarang kita melihat WebAssembly dan belum jelas apakah ini akan menjadi standar atau tidak, mulai bekerja dengan itu sekarang, atau tunggu. Dalam teknologi seluler, tidak ada yang istimewa terjadi. Sejauh ini tidak ada ledakan tunggal, tetapi jika itu terjadi, kami akan siapkan.

Pada akhirnya, saya ingin mengatakan bahwa dengan desain modular yang normal, dengan desain yang normal, dan saya benar-benar berharap bahwa hal itu normal bagi kami, ketika teknologi baru muncul, Anda dapat menghapus yang lama dari mesin, meletakkan yang baru di sana, dan semuanya akan bekerja.

Source: https://habr.com/ru/post/id423175/


All Articles