Sebuah platform untuk membuat game, atau Apa itu “Game Engine”? Mesin Game - Tulis Sendiri atau Dapatkan yang Siap Pakai.

Ini adalah artikel kelima dari serangkaian materi untuk calon pengembang game: Mesin permainan - tulis sendiri atau ambil yang sudah jadi?

Salah satu kesalahan paling umum yang dilakukan pengembang pemula adalah keinginan untuk menulis mesin permainan mereka sendiri dengan segala cara dan membuat game di dalamnya. Tak jarang mereka mencoba menjalankan kedua hal tersebut secara paralel, dan pada akhirnya tentu saja berhasil menggagalkan keduanya.

Mengapa Anda tidak harus menulis mesin permainan Anda sendiri

Pertama-tama, Anda perlu menjawab sendiri satu pertanyaan sederhana - apa sebenarnya yang ingin Anda lakukan, permainan atau mesin? Jika itu sebuah mesin, lupakan permainannya dan fokuslah padanya saja. Jika itu sebuah game, ambillah mesin atau desainer yang sudah jadi dan buatlah game tersebut tanpa terganggu oleh pengembangan bagian perangkat lunaknya.

Membuat mesin game yang lengkap memerlukan pengetahuan khusus, pemahaman tentang cara kerja game, banyak waktu luang, dan keinginan untuk menulis kode sumber. Dan percayalah, ini sama sekali bukan aktivitas yang menyenangkan. Bahkan solusi siap pakai gratis yang tersedia untuk digunakan memerlukan ribuan jam kerja pemrograman, belum lagi mesin komersial, yang selain waktu, juga banyak investasi keuangan. Menciptakan roda ketika setiap orang mengendarai mobil adalah tugas tanpa pamrih dan sama sekali tidak perlu.

Di samping itu bebas sistem pengembangan game, banyak mesin game komersial, yang sepenuhnya siap untuk segera digunakan dalam proyek game, menawarkan beberapa skema perizinan yang sangat menarik: sepenuhnya gratis ( Persatuan 3D dalam edisi Indie sebelumnya), skema campuran dengan pembayaran Royalti ( Kit Pengembangan Tidak Nyata) - Biaya lisensi $99 dan pembayaran 25% keuntungan setelah $5.000 pertama diperoleh, atau biaya terjangkau dari lisensi komersial penuh (Unity Pro seharga $1.500).

Selain itu, tidak ada yang bisa melarang penggunaan mesin apa pun edisi gratis sampai tahap kesiapan permainan tertentu, sehingga nantinya, dengan hasil nyata dan, yang paling penting, hasil visual dari upaya seseorang, seseorang dapat mulai mencari pihak ketiga. pendanaan untuk mentransfer proyek ke izin komersial.

Untuk 95% proyek permainan dari genre dan fokus apa pun, adalah mungkin untuk menemukan solusi siap pakai yang sesuai dengan kebutuhan mereka. Saat-saat ketika mesin game menjadi daya tarik bagi pasar pengembangan game dalam negeri dan menghabiskan banyak uang telah berlalu—dan seiring dengan itu, argumen yang mendukung penulisan mesin game Anda sendiri berakhir.

Apalagi keinginan untuk menulis semuanya sendiri, ditambah dengan ilusi bahwa solusi seperti itu akan terjadi produk terbaik daripada analog yang ada, dapat memainkan lelucon yang sangat kejam pada pengembang pemula, ketika sumber daya yang sudah sangat terbatas diinvestasikan dalam tugas yang sama sekali tidak perlu (pengalaman pribadi), yang pada akhirnya menyebabkan kematian dini proyek tersebut.

Mari kita simpulkan: menulis mesin permainan mereka sendiri dapat dilakukan oleh mereka yang memahami dengan jelas apa sebenarnya yang mereka butuhkan dan mengapa, melihat keuntungan yang memadai dari pendekatan ini dan mampu mengimplementasikan rencana mereka dalam jangka waktu yang wajar. Semua orang harus mencari solusi yang siap pakai, untungnya ada Akhir-akhir ini cukup muncul - ambil setidaknya Unity 3D dan UDK yang sama.

Persatuan3D

Unity 3D adalah mesin hebat yang terjangkau. Ia memiliki sejumlah keunggulan yang tidak dapat disangkal dibandingkan para pesaingnya dan, mungkin, kuncinya adalah Anda hanya membayar satu kali untuk lisensinya. Tidak peduli seberapa populernya suatu game - jika Anda memilih Unity, Anda tidak perlu mengeluarkan uang lagi. Dari sudut pandang finansial, ini adalah solusi yang baik, terutama bagi startup dan pengembang pemula.

  • kebijakan perizinan yang menguntungkan;
  • kemudahan penggunaan;
  • kompatibel dengan platform apa pun;
  • komunitas yang hebat;
  • ambang masuk yang rendah;
  • populer di kalangan pengembang (ini berarti bug ditemukan dan diperbaiki dengan cepat).
  • seperangkat alat yang terbatas (kemungkinan besar Anda harus mengembangkan sendiri beberapa di antaranya);
  • Proses pembuatan sebuah game membutuhkan banyak waktu.

Mesin Tidak Nyata

Unreal Engine adalah salah satu mesin paling populer untuk mengembangkan game AAA. Roda Gigi Perang, Batman: Arkham Asylum, Efek massal- semua pukulan ini dilakukan padanya.

  • Karena banyak pengembang yang menggunakannya, Unreal Engine mungkin memiliki komunitas terbaik di antara para pesaingnya. Beberapa jam video tutorial adalah buktinya;
  • dukungan teknis yang sangat baik dan mekanisme pembaruan;
  • alat baru keluar dengan setiap pembaruan
  • berbagai macam alat untuk berbagai keperluan (beberapa di antaranya sangat mudah digunakan sehingga bahkan anak sekolah pun dapat mengoperasikannya)
  • Kompatibel dengan berbagai platform (iOS, Android, Linux, Mac, Windows, dan sebagian besar lainnya)
  • Kebijakan lisensi baru mencakup langganan $19 per bulan dan royalti 5% jika game menghasilkan lebih dari $5.000, membuat mesin ini jauh lebih menarik bagi pengembang dibandingkan sebelumnya.
  • subyektif. Beberapa pengembang mengeluh bahwa alat tertentu sulit untuk digunakan

Mesin Menangis 3

Jika Anda menyukai komponen eksternal game, maka Anda memerlukan CryEngine 3.

  • fungsi Flowgraph akan membantu menghiasi game dengan grafis luar biasa;
  • serangkaian fungsi Fmod untuk menghasilkan suara yang kuat;
  • proses pembuatan AI paling sederhana di segmennya;
  • Akan mudah bagi pengembang pemula untuk membuat UI.
  • dukungan teknis yang relatif ceroboh untuk versi gratis;
  • karena mesin ini relatif baru di industri ini, mesin ini belum menciptakan komunitas yang kuat;
  • hambatan masuk yang relatif tinggi.

Mesin Pahlawan

Mesin ini telah membuktikan dirinya dengan baik dalam pembuatan game multipemain - setidaknya ambillah Perang Bintang: Republik Lama. Lisensinya cukup mahal dan sepertinya tidak cocok untuk pengembang pemula, tetapi jika proyek Anda ambisius, saya menyarankan Anda untuk mempertimbangkan opsi ini.

  • Ada beberapa peta yang tersedia untuk menciptakan dunia terbuka. Dimungkinkan untuk menghubungkannya “dengan mulus”;
  • AI yang luar biasa kuat!
  • seperangkat alat yang berguna untuk memodelkan peta;
  • cocok untuk membuat misi yang kompleks, membuat dan mengumpulkan sumber daya;
  • Dukungan teknis diberikan menggunakan layanan HeroCloud, yang sangat nyaman.
  • Mesin skripnya kuat, tetapi tidak nyaman digunakan;
  • HeroEngine, bersama dengan dukungan pelanggan HeroCloud, terlalu mahal dan kemungkinan tidak dapat diakses oleh pengembang pemula;
  • hambatan masuk yang tinggi.

Mesin Kemarahan

Hanya sedikit yang dapat bersaing dengan beragam fitur yang disediakan Rage Engine. Agung Pencurian Otomatis V, Red Dead Redemption dan banyak proyek terkenal lainnya dibuat menggunakan mesin ini.

  • banyak peluang untuk menciptakan dunia besar dan pengaruh cuaca;
  • AI yang kuat;
  • banyak gaya permainan untuk dipilih;
  • kode jaringan cepat.
  • Antarmuka mesin relatif tidak nyaman;
  • Kontrol tidak dioptimalkan dengan baik untuk keyboard dan mouse.

Proyek Anarki

Mesin permainan yang kuat ini disukai oleh banyak pengembang karena dokumentasinya yang jelas dan mudah dipahami. Namun, hal ini juga memiliki kelemahan.

  • jika Anda berencana mengembangkan game di platform iOS, Android, dan Tizen, maka lisensinya gratis;
  • alat yang ampuh untuk menemukan dan memperbaiki bug;
  • komunitas yang kuat;
  • penerbit memberikan dokumentasi dan contoh yang jelas dan mudah dipahami;
  • Fmod untuk pengiring audio;
  • AI Havok yang kuat.
  • tidak ada kemungkinan untuk mengembangkan game di Mac dan Linux;
  • tidak ada panduan pengantar untuk pengembang pemula;
  • jika game tersebut untuk PC, maka lisensinya akan dikenakan biaya yang cukup mahal.

PermainanSalad

Pencipta mesin permainan populer ini berjanji bahwa pengembang tidak perlu menulis satu baris kode pun. Secara umum, hal ini benar. Namun, Anda harus membayar semua kebaikannya: mesinnya memiliki sejumlah kelemahan signifikan. Jika Anda berencana mengembangkan game di iPhone sendiri, ini adalah pilihan Anda.

  • lisensi gratis (Anda hanya perlu membayar uang untuk versi PRO);
  • komunitas aktif;
  • mesin luar biasa untuk pembuatan prototipe cepat;
  • Kompatibel dengan platform seluler populer seperti Cocona dan Moai.
  • seperangkat alat pengembangan yang terbatas;
  • tidak ada akses ke sebagian besar fitur platform iOS.

Pembuat Game: Studio

Jika Anda seorang pengembang pemula dan membutuhkan mesin yang sederhana dan mudah dipahami, maka GameMaker: Studio sepenuhnya memenuhi tujuan Anda.

  • kontrol sederhana dan intuitif;
  • bahasa pemrograman sendiri Pembuat Game Bahasa (GML);
  • integrasi dengan Steam;
  • lintas platform.
  • relatif sulit untuk memecahkan masalah permainan;
  • Untuk mengekspor game Anda ke platform populer, Anda harus membayar sejumlah besar uang.

Kit Permainan Aplikasi

App Game Kit adalah perangkat lunak lintas platform untuk pengembang. Dinilai karena keserbagunaan dan kemudahan penggunaannya.

  • memungkinkan Anda menulis kode untuk platform utama: Android iOS, Windows, Mac dan Linux;
  • dilengkapi dengan IDE, yang memungkinkan Anda menguji game di perangkat apa pun;
  • tanpa instalasi tambahan sudah termasuk IAP, AdMob dan Push;
  • Ada skrip yang kuat untuk grafik 2D, fisika, dan interaksi jaringan.
  • karena hanya sedikit orang yang bekerja dengan mesin ini, kekurangan program tidak dihilangkan untuk waktu yang lama (dukungan teknis yang relatif lemah);
  • banyak bug (yang secara alami mengikuti paragraf sebelumnya).

Cocos2D

Banyak desainer menganggap Cocos2D sebagai salah satu dari sedikit mesin yang sangat mudah beradaptasi dan pada saat yang sama sangat cocok untuk pengembang pemula.

  • terintegrasi sempurna ke dalam platform iOS;
  • gratis dan sumber terbuka;
  • beragam pilihan alat pengembangan;
  • dukungan masyarakat yang kuat.
  • lebih sulit digunakan daripada kebanyakan analog;
  • hambatan masuk yang tinggi;
  • "disesuaikan" khusus untuk Mac atau iOS. Tidak ada fungsionalitas lintas platform.

Kesimpulannya, orang-orang bermain game di konsol, perangkat seluler, PC, dan bahkan TV - sehingga pengembang selalu memiliki kesempatan untuk menemukan mesin yang sesuai dengan tujuannya. Saya harap artikel saya akan membantu Anda menentukan pilihan dan berhasil bergabung dengan industri game yang terus berkembang.

Kita semua pernah mendengar tentang mesin untuk membuat game, tetapi hanya sedikit orang yang memahami apa itu mesin.

Bahkan studio yang mengembangkan video game memberikan definisi yang sangat kabur tentang istilah tersebut, atau lebih tepatnya, mereka tidak dapat benar-benar memisahkan game itu sendiri dari mesin pembuatnya.

Mari kita coba memahami pertanyaannya, mendekati situasi dalam peran tersebut, dan mempertimbangkannya mesin permainan paling populer: fitur-fiturnya, area penerapan, kelemahan dan kekuatannya.

Konsep

Mesin permainan atau mesin permainan- ini yang asli perangkat lunak, dirancang untuk membuat permainan komputer berdasarkan itu, seringkali dengan genre tertentu.

Istilah ini dibentuk pada pertengahan tahun 90an dalam kaitannya dengan penembak seperti Gempa, Wolfenstein dan Doom.

Bahkan sebelum konsep seperti itu muncul dunia permainan Saya perhatikan bahwa keduanya berkombinasi dengan sangat baik:

  • grafik tiga dimensi;
  • perhitungan tumbukan dengan benda;
  • dunia permainan yang banyak;
  • komponen suara;
  • inventaris (sistem senjata) dan aturan lainnya.

Setelah memperhatikan hal ini, para pengembang mulai merilis game mereka sendiri berdasarkan Doom yang sama, dengan sedikit perubahan: menggambar ulang peta dan model grafis lainnya, mengedit mesin fisika.

Sebagian besar mesin dibuat untuk genre game tertentu dan seringkali untuk platform tertentu.

Menggunakan mesin game di berbagai platform atau genre membuatnya kurang terpadu dan optimal, serta tidak akan mencapai potensinya.

Varietas

Mesin pengembangan game berspesialisasi dalam genre.

Misalnya, perangkat lunak dasar dan tindakannya akan sangat berbeda bahkan di komponen utamanya. Meskipun demikian, semuanya memiliki sejumlah bagian (baris kode) yang sama atau serupa.

Setiap permainan memiliki interaksi antar objek., mengendalikan seseorang atau sesuatu menggunakan gamepad, mouse dan keyboard, mengeluarkan gambar dan suara, melapisi teks, merender objek tiga dimensi (dalam game 3D).

Mengingat hal ini, beberapa mesin berhasil digunakan untuk mengembangkan hiburan dari berbagai genre. awalnya adalah platform untuk membuat penembak orang pertama, tapi Peralatan perang(tampilan orang ketiga) dan Bintang Kecepatan(balapan) berdasarkan itu ternyata adalah video game lengkap.

Penembak

Berkat mereka, konsep mesin muncul, dan mari kita mulai dengan mereka.

Sampai batas tertentu, platform untuk membuat game menembak adalah yang paling berteknologi maju, canggih, dan kompleks. Selain kualitasnya yang tinggi, persyaratan berikut diajukan untuk mainan tersebut:

  • fungsi memodelkan dunia maya tiga dimensi dengan memperhatikan dinamika peristiwa;
  • adanya kontrol bidik;
  • mekanisme permainan yang sangat responsif;
  • kejelasan gambar yang signifikan dan detail tangan dan senjata karakter;
  • animasi yang bagus tembakan dan ledakan berdasarkan interaksi partikel;
  • perilaku lingkungan yang realistis sebagai respons terhadap tembakan dan ledakan, termasuk kerusakan benda, itulah sebabnya mesin tersebut tunduk pada persyaratan tinggi di bidang kinematika;
  • pilihan besar senjata dengan karakteristik yang berbeda;
  • model pergerakan dan interaksi karakter yang berkembang dengan baik;
  • kualitas kecerdasan buatan dengan adanya permainan pemain tunggal;
  • berjenis mode permainan dan partisipasi massa dalam mode korporat.

Platformer

Biasanya ini adalah hiburan dua dimensi, persyaratannya lebih lunak:

  • banyak perhatian diberikan penampilan, penyesuaian, perilaku, dan animasi karakter utama;
  • berbagai yang disebut platform bergerak (jatuh, bergerak sepanjang lintasan yang berbeda, menghilang, berputar);
  • platform tambahan berupa tangga, tali, tangga, pipa dan sistem interaksi dengannya;
  • kehadiran elemen puzzle;
  • geometri berlapis-lapis;
  • fisika sederhana interaksi objek;
  • interaksi dengan karakter permainan lainnya (dialog, pertempuran).

Berkelahi

Mereka dicirikan oleh beragam karakter dengan kemampuan dan teknik unik, animasi individu masing-masing karakter, ekspresi wajah dan gerak tubuh, penyelesaian tugas sepanjang ronde, sistem serangan yang kompleks, kombinasinya, gerakan bertahan, kombo, dan teknik khusus. .

Interaksi jaringan, kustomisasi karakter, munculnya akibat perkelahian (goresan, lecet), dan teknik finishing juga umum terjadi dalam game pertarungan.

Balapan

Dibangun untuk balap lebih dari satu mesin permainan, dengan mempertimbangkan spesifikasi permainan.

Karena penerapan multi-threading, PhysX dibedakan dengan hadirnya thread khusus tanpa pemeriksaan apa pun. Hal ini memungkinkan sejumlah tugas dijalankan secara bersamaan dalam thread paralel.

Tessellation memungkinkan Anda mencapai, yang memiliki efek positif pada koreksi warna, melapisi noise dan grain pada gambar secara real-time.

Kabut volumetrik, gerakan kabur, paralaks di permukaan apa pun, akurasi signifikan, dan detail tinggi bukanlah keunggulan mesin ini.

Komponen audio mendukung pemosisian tiga dimensi, yang memberikan kesan ruang tiga dimensi dan kemampuan menghitung sumber suara.

Fungsi lainnya:

  • visualisasi pemandangan dengan ruang warna yang luas;
  • penggunaan lusinan sumber cahaya dalam bingkai;
  • pencahayaan yang sepenuhnya dinamis;
  • gerakan kabur tanpa memengaruhi kinerja;
  • paralelisasi yang sangat baik dari proses visualisasi;
  • perhitungan rambat bunyi, penyerapan dan pemantulannya dari rintangan;
  • banyak kondisi pertempuran;
  • sistem skrip yang nyaman dan mudah dipahami;
  • sistem analisis topologi AI;
  • karakter diberkahi dengan penglihatan, pendengaran, dan indera lainnya, yang menjadikan mereka lawan yang serius;
  • perilaku kelompok.
  • kerumitan proses porting game ke konsol;
  • bukan pengembangan orisinal, tetapi X-Ray yang lebih baik (faktanya belum terbukti, tapi ada petunjuknya);
  • Dukungan DirextX12 tidak diterapkan.
  • peningkatan grafis;
  • kehancuran model dan keunggulan lain dari PhysX;
  • tidak ada efek khusus demi efek khusus (hanya yang diperlukan yang ditambahkan).

Permainan: seri Metro, termasuk Metro Exodus, dan Arktika.1 dalam pengembangan.

Contoh mencolok dari realisasi ambisi pribadi dan salah satu dari sedikit mesin terkenal di dunia yang dibuat di CIS.

Landasan

Dibuat oleh anak perusahaan Ubisoft, digunakan untuk rilis dan hanya di dalam perusahaan.

Game pertama adalah bagian pertama dari Assassin's Creed, kemudian muncul simulator snowboard dan Prince of Persia.

Salah satunya menimbulkan banyak kejutan dan membawa banyak hal baru ke dalam dunia hiburan virtual.

Didukung di PC, PS semua versi, Nintendo, Wii dan Xbox.

Kode ditulis dalam C++, model digambar di ZBrush, dan dunia sekitar digambar dalam 3ds Max. Untuk animasi kerangka yang benar, . Fisika dunia maya dimodelkan oleh Havok yang legendaris. Dalam rilis terbaru, banyak perhatian diberikan pada perubahan waktu, pencahayaan dinamis, dan rendering jarak jauh. Ini juga mengintegrasikan skema vegetasi progresif (seperti di Far Cry 2) dengan AI baru, perbedaan pentingnya adalah sistem navigasi NPC yang ditingkatkan. Implementasi dan debugging Direct3D 10/11, meskipun sangat mahal, pekerjaan tetap dilakukan.

Di antara fitur mesin yang tidak disebutkan namanya Mari kita soroti hal berikut:

  • optimalisasi kerja pada sistem multi-core, hingga 32 thread;
  • meluncurkan game di beberapa layar dalam mode panorama;
  • kabut kebisingan kompleks yang mampu disimulasikan badai pasir tidak ada penurunan fps;
  • efek pembiasan, pemantulan dan hamburan cahaya di dalam air;
  • hingga enam karakter berbeda dalam satu adegan;
  • Sebagian besar animasi didasarkan pada aktor sungguhan;
  • dalam satu adegan bisa ada hingga 3 ribu peserta, yang memungkinkan Anda mengatur pertempuran besar-besaran, selama PC dapat mengatasi beban tersebut;
  • NPC bereaksi aktif terhadap pahlawan, mereka dapat menyerang secara bersamaan, dan tidak satu per satu;
  • teknologi untuk memotong model dan menyortir objek berdasarkan kedalaman gambar.
  • menuntut sumber daya;
  • tidak berlisensi;
  • tidak mendukung DirectX 10 dan 11 untuk waktu yang lama.
  • implementasi multithreading yang baik;
  • berfungsi di PC dan banyak konsol;
  • kemampuan untuk mengimplementasikan ekstra dengan partisipasi ratusan karakter permainan.

DENGANUbisoft, dalam hal menciptakan kekacauan besar dan mendorong lebih banyak orang ke satu tempat, tidak ada yang bisa menandinginya.

Mesin Penciptaan

Mesin yang cukup baru dari studio Amerika Bethesda, yang menunjukkan kemampuannya di Skyrim. Seperti solusi sebelumnya, solusi ini dibuat hanya untuk kebutuhan pengembangnya. Gamebryo diambil sebagai dasar - bantuan untuk Oblivion dan tambahannya.

Hal pertama yang menarik tentang teknologi– dukungan untuk lokasi besar dengan rendering jarak jauh, pergerakan bebas dan cepat.

Banyak perhatian diberikan untuk bekerja dengan air dan salju, dan sistem yang secara otomatis menghasilkan curah hujan, batu, pohon, dan rumput secara mandiri menentukan proporsi objek yang dibuat tergantung pada medan.

AI yang ditingkatkan yang digunakan dalam Oblivion mensimulasikan kehidupan orang-orang dan hubungan mereka dengan karakter utama secara lebih realistis.

Konsep pengelolaan pengembangan plot mampu menghasilkan tugas tambahan dengan mempertimbangkan gaya permainan.

Sistem konstruksi pohon telah didesain ulang secara signifikan dalam versi mesin yang baru, yang memungkinkan untuk mendiversifikasi dunia pabrik dan meringankan beban perhitungannya.

Alat pihak ketiga dari Havok digunakan untuk menganimasikan karakter.

Keunikan:

  • Ketersediaan editor level Creation Kit untuk gamer dan pengembang mod;
  • Render berbasis fisika muncul di Fallout;
  • banyak alat untuk modder;
  • kemudahan mentransfer modifikasi ke konsol.
  • tidak berlisensi;
  • sulit untuk dibuat Senjata dua tangan;
  • Sistem perilaku karakter cukup lemah.
  • ada editor mod yang dapat berfungsi pada platform apa pun;
  • jarak imbang yang jauh;
  • skema unik untuk menghasilkan pohon dan animasinya.

Belum ada yang lebih baik yang ditemukan untuk para modder, jadi lebih banyak dari mereka selain Fallout yang diciptakan hanya untuk Oblivion.

Mesin Menangis 4

Versi terbaru mesin dari perusahaan Jerman Crytek untuk penembak orang pertama.

Contoh penggunaan yang paling berhasil adalah .

Sejak tahun 2016, mesin tersebut mulai didistribusikan dengan skema “bayar sesuka Anda”, namun hanya untuk penggunaan gaming.

Fitur dan kemampuan:

  • kehadiran wilayah yang luas, dan bukan wilayah koridor;
  • lokasi dibuat tanpa jahitan;
  • dukungan untuk sinematik terbalik karakter dan kendaraan, interaksinya dengan lingkungan;
  • tiruan berbagai benda tidak padat: kain, air;
  • persenjataan besar dengan karakteristik unik dari setiap jenis senjata;
  • kecerdasan naskah dan perintah;
  • Anda dapat mengubah parameter AI tanpa memiliki pengetahuan pemrograman;
  • iringan musik interaktif - musiknya sesuai dengan situasi;
  • dukungan penuh untuk sistem suara 5.1;
  • reproduksi bunyi alam dengan memperhatikan lingkungan, pemantulan dan serapan bunyi;
  • efek realistis dari panas dan api;
  • transparansi kaca - Anda dapat melihat apa yang ada di dalam gedung;
  • pengoperasian peta ketinggian untuk memperoleh lingkungan bertingkat dengan jarak tampak sampai dengan 2000 m;
  • kemungkinan luar biasa untuk bekerja dengan pencahayaan dan bayangan, yang ditunjukkan dengan sempurna oleh Crysis;
  • kabut tebal dan asap tebal untuk menambah suasana;
  • adanya efek fisik yang tidak biasa (misalnya, nanosuit).

Mesin permainan(Bahasa inggris) mesin permainan) adalah komponen perangkat lunak utama komputer dan video game dan lainnya aplikasi interaktif dengan grafik yang diproses secara real time. Ini menyediakan teknologi inti, menyederhanakan pengembangan, dan sering kali memberikan game kemampuan untuk berjalan di berbagai platform, seperti konsol permainan dan sistem operasi desktop seperti GNU/Linux, Mac OS X dan Microsoft Windows.

Ungkapan “mesin permainan” menyiratkan keseluruhan rangkaian program aplikasi, termasuk mesin rendering (“visualizer”) untuk grafik 2D atau 3D, mesin fisika, atau deteksi tabrakan (dan reaksi tabrakan), suara, skrip, animasi, kecerdasan buatan , kode jaringan, streaming, manajemen memori, threading dan grafik adegan. Sebenarnya, semua potongan kode yang ditulis oleh programmer saat mengembangkan sebuah game adalah komponen mesin. Proses permainan(gameplay) ditentukan oleh fungsi yang diterapkan dalam program ini.

Jika pada awal era komputer setiap game diciptakan oleh pengembang “dari awal”, maka segalanya telah berubah sejak kemunculan game Doom (lebih dari 10 tahun yang lalu). Saat ini, hampir semua game komersial dibuat menggunakan alat yang tersedia: penghematan dapat dilakukan selama proses pengembangan dengan menggunakan kembali satu mesin game untuk membuat banyak game berbeda.

Terkadang “modder” membuat beberapa modifikasi menggunakan bahasa pemrograman yang ada di dalam game melalui skrip skrip. Anda dapat mengubah beberapa parameter fungsi mesin, yang disukai para penipu (misalnya, meningkatkan jumlah uang yang dimiliki pemain). Namun, perubahan gameplay besar-besaran tidak mungkin dilakukan tanpa mengganggu kode sumber game. Dan disinilah permasalahannya dimulai. Pertama, tidak semua perusahaan game mempublikasikan kodenya. Kedua, tidak semua orang dapat secara mandiri memahami banyaknya fungsi mesin. Dan seringkali tidak ada cara lain, karena tidak ada informasi referensi dan dukungan teknis(tidak ada yang bertanya). Ketiga, sebagai suatu peraturan, mereka mempublikasikan kode sumber mesin yang secara teknis sudah ketinggalan zaman (misalnya, Quake II, III).

Apa yang tersisa untuk pengembang pemula?

  • Beli hak untuk menggunakan mesin modern dari perusahaan terkenal (lisensi mesin). Muncul dengan informasi referensi dan dukungan pabrikan. Namun, kesenangan ini tidaklah murah. Ada mesin permainan komersial yang harganya mencapai ratusan ribu dolar.
  • Kembangkan mesin Anda sendiri. Tentu saja ada jalan keluarnya, tetapi membutuhkan banyak usaha dan kualifikasi tinggi dalam pemrograman.
  • Gunakan salah satu dari mesin gratis, paling sesuai dengan kemampuannya. Biasanya, mereka punya informasi tambahan dan dukungan.

Mesin permainan gratis

Saat ini yang gratis paling populer dan canggih (biasanya o sumber pena, Dengan sumber terbuka) mesin permainan adalah:

  • RAKSASA(Mesin Rendering Grafis Berorientasi Objek)

Mesin rendering grafis berorientasi objek. Ditulis dalam C++, grafik 3D, menggunakan Direct3D dan OpenGL. Untuk mesin ini ada buku cetak(pada bahasa Inggris). Ada juga situs berbahasa Rusia. Bekerja dengan versi terbaru Mesin memerlukan salah satu kompiler berikut: gcc, Visual C++ 7.1 (2003), Visual C++ 8.0 (2005). Mesin mendukung kompiler. Untuk bekerja di Linux dan Mac, gcc 3+ digunakan. Jika game akan menggunakan DirectX, Anda harus menginstal DirectX SDK terlebih dahulu (dapat diunduh dari situs Microsoft).

Menurut pengembangnya, Ogre bukanlah mesin game dalam arti sebenarnya. Sebagaimana dinyatakan dalam dokumentasi, “Ogre adalah mesin grafis, dan hanya mesin grafis. Artinya, ia tidak melakukan apa pun selain menampilkan dan memproses grafik. Namun ini juga berarti Anda dapat melampirkan perpustakaan pihak ketiga ke dalamnya untuk membuat game yang lengkap, yaitu:

  • suara;
  • jaringan;
  • input (manipulator, joystick);
  • perhitungan tumbukan.

Ogre tidak berisi perpustakaan ini, tetapi menyediakan antarmuka yang memungkinkan modul eksternal dihubungkan dengan mudah."

Mesin ini memiliki dukungan luas untuk berbagai format grafik. Selain yang standar, Anda dapat menggunakan tekstur volumetrik, terkompresi, dan peta kubus. Ada banyak plugin yang memungkinkan Anda mengimpor model 3D dari berbagai paket grafis 3D (3DS Max, Maya, Milkshape3D, Blender Wings3D) ke dalamnya. Dalam hal ini, Anda dapat menggunakan animasi bingkai dan kerangka. Pemandangan di Ogre terlihat bagus. Untuk membuat game kecil, mesinnya mencakup semua kelas kontrol adegan standar yang diperlukan. Sumber daya game dapat dikemas ke dalam arsip ZIP PK3.

Game komersial juga dibuat di Ogre - khususnya, game “Steel Monsters” tertulis di sana (Badai Pasifik) dan permainan daring Anarki Online. Pengembangan berdasarkan mesin game komersial menunjukkan potensi besar yang dimiliki Ogre. Ini memiliki banyak pengguna. Ada seseorang yang bisa dihubungi jika timbul masalah. Tentunya seseorang telah menyelesaikannya sebelum Anda, atau setidaknya tahu cara menyiasatinya. Sejumlah besar informasi latar belakang dan contoh akan memungkinkan bahkan pemula untuk menguasai mesinnya. Ini adalah pilihan bagus untuk mengembangkan game jika Anda tidak memiliki dana untuk membeli mesin komersial.

  • Ruang Kristal. SDK lintas platform sumber terbuka untuk grafik 3D waktu nyata, terutama untuk pengembangan game. Itu ditulis dalam C++, tetapi dapat digunakan tidak hanya dalam proyek C++, tetapi juga dalam proyek Python, Perl, Java.
  • Mesin Nebula 2. Game 3D sumber terbuka dan mesin rendering. Digunakan di beberapa game komersial. Juga ditulis dalam C++, hanya berjalan di Windows, menggunakan DirectX 9.0. Ada kelas untuk mengimplementasikan shader (file HLSL dan DirectX FX), animasi kerangka, sistem partikel, dan bayangan. Mendukung beberapa bahasa scripting yang banyak digunakan TCL, Python dan Lua.
  • . Open source, lintas platform, ditulis dalam C++, dapat digunakan dari .NET (bahasa seperti C#, VisualBasic, dan Delphi.NET), Java - menggunakan perpustakaan jirr atau Bindenlicht, Python - menggunakan perpustakaan Pyrr, Ruby - menggunakan perpustakaan IrrRuby dan sejumlah bahasa lainnya. Mesin game ini berasal dari Jerman. Ini sebenarnya dipromosikan oleh satu orang. Mengembangkan mesin sendirian, menjadikannya sepenuhnya gratis, dan memposting semua kode sumbernya bukanlah sesuatu yang dapat dilakukan semua orang. Meski versi final Irrlicht masih jauh, game-game serius sudah bisa dibuat di dalamnya. Mesin memiliki semua fungsi yang diperlukan untuk ini. Rendering dilakukan melalui OpenGLDirect3D (dengan dukungan DirectX9.0). Ada juga mode perangkat lunak, yaitu semuanya akan dirender oleh visualisator perangkat lunaknya sendiri, yang praktis tidak digunakan di era kemampuan perangkat keras kartu video yang hebat. Mesin permainan yang cukup mudah dipelajari ini cocok untuk mereka yang mengambil langkah pertama dalam pemrograman game 3D dan tim berpengalaman untuk membuat game yang lengkap. Anda dapat membaca lebih lanjut tentang Irrlicht di knol.google.com.
  • OpenSceneGraphg . Open source, lintas platform, ditulis dalam standar C++, menggunakan OpenGL. Bekerja dengan model 3D dalam format .lwo, .obj, .geo, .3ds, .x, .wrl, yaitu dengan objek yang dibuat dalam editor grafis 3D modern (3DS Max, Maya, dan Lightwave 3D).
  • Microsoft XNA. Teknologi dari Microsoft untuk pengembangan game lintas platform untuk 3 platform - Windows, Xbox 360 dan Zune (pemutar mp3 dari Microsoft). Benar, untuk mengembangkan game untuk Xbox, Anda harus membeli Xbox Developer Kit, tetapi game dapat dikembangkan untuk Windows secara gratis. Teknologi ini dirancang untuk mengembangkan game menggunakan DirectX dan .NET Framework (.NET Compact Framework di Xbox 360) dan, sebenarnya, bahasa utama saat mengembangkan game menggunakan XNA haruslah C#. Ada komunitas pengembang yang didukung perusahaan. Di situs web techdays.ru ada beberapa "" (slide sulih suara) yang didedikasikan untuk pengembangan game di XNA. Webinar disajikan oleh karyawan Microsoft dan memberikan pengenalan prosesnya.
  • Ada beberapa mesin permainan gratis lainnya: Panda3D, , Dasar Gelap Namun, penggunaannya tidak seluas yang dijelaskan di atas.

Memiliki mesin game yang sudah jadi, Anda hanya bisa memikirkan mekanisme permainannya, dan ini sangat penting bagi pengembang.

Sumber:

  • sindicollo.blogspot.com - ulasan mesin game gratis;
  • knol.google.com - mesin permainan gratis (A. Krylov);
  • x-sky.ru - mesin permainan gratis;
  • irrlicht3d.org - sumber wiki pada mesin Irrlicht (Bahasa Inggris).

Akhir-akhir ini saya sibuk menulis mesin game di C++. Saya menggunakannya untuk membuat game seluler kecil Keluar. Ini video yang direkam dari iPhone 6 saya. (Anda dapat menyalakan suaranya!)


Browser Anda tidak mendukung video HTML5.


Hop Out adalah jenis permainan yang ingin saya mainkan sendiri: permainan arkade retro dengan grafis 3D kartun. Tujuan dari permainan ini adalah untuk mewarnai ulang setiap platform, seperti di Q*Bert.



Mengapa ada orang yang ingin menulis mesin permainan? Kemungkinan alasannya banyak:

  • Anda adalah seorang pengrajin. Anda menikmati membangun sistem dari awal dan melihatnya menjadi nyata.
  • Apakah Anda ingin mempelajari lebih lanjut tentang pengembangan game? Saya telah berkecimpung di industri game selama 14 tahun dan saya masih mencoba mencari tahu. Saya bahkan tidak yakin bisa menulis mesin dari awal, karena sangat berbeda dengan tanggung jawab pekerjaan sehari-hari seorang programmer di studio besar. Saya ingin memeriksanya.
  • Anda menyukai perasaan terkendali. Sangat menyenangkan untuk mengatur kode Anda persis seperti yang Anda inginkan dan selalu mengetahui di mana semuanya berada.
  • Anda terinspirasi oleh mesin permainan klasik seperti AGI (1984), id Tech 1 (1993), Build (1995), dan raksasa industri seperti Unity dan Unreal.
  • Anda yakin bahwa kami, industri game, perlu mengungkap misteri proses pengembangan mesin. Kami belum benar-benar menguasai seni pengembangan game - tidak mungkin! Semakin cermat kita memperhatikan proses ini, semakin besar peluang kita untuk memperbaikinya.

Platform game di tahun 2017 - seluler, konsol, dan PC - sangat kuat dan dalam banyak hal mirip satu sama lain. Pengembangan mesin game tidak lagi merupakan perjuangan dengan perangkat keras yang lemah dan langka, seperti di masa lalu. Menurut pendapat saya, sekarang ini lebih merupakan pertarungan melawan kompleksitas pekerjaan Anda sendiri. Anda dapat dengan mudah membuat monster! Itu sebabnya semua tips dalam artikel ini berkisar pada bagaimana menjaga kode Anda tetap mudah dikelola. Saya mengelompokkannya menjadi tiga kelompok:

  1. Sadarilah bahwa serialisasi adalah topik yang luas.

Kiat-kiat ini berlaku untuk mesin game apa pun. Saya tidak akan memberi tahu Anda cara menulis shader, apa itu octree, atau cara menambahkan fisika. Saya kira Anda sudah tahu bahwa Anda harus mengetahui hal ini - dan sebagian besar topik ini bergantung pada jenis permainan yang ingin Anda buat. Sebaliknya, saya sengaja memilih topik yang tidak banyak dibahas – topik yang menurut saya paling menarik ketika mencoba mengungkap misteri sesuatu.

Gunakan pendekatan berulang

Tip pertama saya adalah jangan ragu untuk membuat sesuatu (apa pun!) Berhasil, lalu ulangi.


Jika memungkinkan, mulailah dengan contoh aplikasi yang menginisialisasi perangkat dan menggambar sesuatu di layar. DI DALAM pada kasus ini Saya mengunduh SDL, membuka Xcode-iOS/Test/TestiPhoneOS.xcodeproj, lalu menjalankan contoh testgles2 di iPhone saya.



Voila! Saya memiliki kubus berputar yang luar biasa menggunakan OpenGL ES 2.0.


Langkah saya selanjutnya adalah mendownload model 3D Mario yang dibuat seseorang. Saya segera menulis pemuat file OBJ secara kasar - formatnya tidak terlalu rumit - dan mengubah contohnya sehingga akan menggambar Mario, bukan batu bata. Saya juga mengintegrasikan SDL_Image untuk memuat tekstur.



Saya kemudian menerapkan kontrol tongkat ganda untuk menggerakkan Mario. (Awalnya saya mempertimbangkan ide untuk membuat dual-stick shooter. Namun, tidak dengan Mario).



Hal berikutnya yang ingin saya lakukan adalah masuk ke dalam animasi kerangka, jadi saya membuka Blender, membuat model tentakel, dan menempelkan kerangka dua tulang ke dalamnya yang berosilasi maju mundur.



Pada titik ini, saya telah meninggalkan format OBJ dan menulis skrip Python untuk mengekspor file JSON saya sendiri dari Blender. File JSON ini mendeskripsikan data mesh, kerangka, dan animasi yang dikuliti. Saya memuat file-file ini ke dalam game menggunakan perpustakaan C++ JSON.



Setelah semuanya berfungsi, saya kembali ke Blender dan membuat karakter yang lebih detail (Ini adalah orang 3D pertama yang saya buat dan pasang. Saya cukup bangga karenanya.)



Selama beberapa bulan berikutnya saya mengambil langkah-langkah ini:

  • Saya mulai memisahkan fungsi untuk bekerja dengan vektor dan matriks ke dalam perpustakaan matematika tiga dimensi saya sendiri.
  • Mengganti .xcodeproj dengan proyek CMake
  • Saya membuat mesinnya berjalan di Windows dan iOS karena saya suka bekerja di Visual Studio.
  • Mulai memindahkan kode ke perpustakaan terpisah "mesin" dan "permainan". Seiring waktu, saya membaginya menjadi perpustakaan yang lebih kecil.
  • Menulis aplikasi terpisah untuk mengonversi file JSON saya menjadi data biner yang dapat dimuat langsung oleh game.
  • Pada titik tertentu, saya menghapus semua perpustakaan SDL dari versi iOS. (Build Windows masih menggunakan SDL.)

Poin kuncinya adalah ini: Saya tidak merencanakan arsitektur mesin sebelum memulai pemrograman. Itu adalah pilihan yang disengaja. Sebaliknya, saya hanya menulis kode paling sederhana yang mengimplementasikan fungsionalitas berikutnya, lalu melihatnya untuk melihat arsitektur apa yang muncul secara alami. Yang saya maksud dengan "arsitektur mesin" adalah kumpulan modul yang membentuk mesin permainan, ketergantungan antara modul-modul tersebut, dan API untuk berinteraksi dengan setiap modul.




Tampaknya banyak waktu terbuang dengan pendekatan ini karena Anda selalu menulis kode buruk yang kemudian perlu ditulis ulang sepenuhnya. Namun sebagian besar perubahan melibatkan pemindahan kode dari satu file .cpp ke file lainnya, mengekstraksi definisi fungsi ke dalam file .h, atau tindakan sederhana lainnya. Mendefinisikan, Di mana apa yang seharusnya berbohong adalah tugas yang sulit, dan lebih mudah diselesaikan ketika kodenya sudah ada.


Saya berani bertaruh bahwa lebih banyak waktu terbuang dengan pendekatan sebaliknya: mencoba memikirkan arsitektur yang akan melakukan semua yang Anda butuhkan. Dua artikel favorit saya tentang bahaya rekayasa berlebihan adalah The Vicious Circle of Generalization oleh Tomas Dabrowski dan Don’t Let Architecture Astronauts Scare You oleh Joel Spolsky.


Saya tidak mengatakan Anda tidak boleh menyelesaikan masalah di atas kertas sebelum Anda menemukannya dalam kode. Saya juga tidak mengatakan bahwa Anda tidak boleh memutuskan terlebih dahulu fungsionalitas apa yang Anda butuhkan. Misalnya, saya tahu sejak awal bahwa saya ingin mesin memuat semua sumber daya di thread latar belakang. Saya hanya tidak mencoba merancang atau mengimplementasikan fungsi ini sampai mesin saya mulai memuat setidaknya beberapa sumber daya.


Pendekatan berulang memberi saya arsitektur yang jauh lebih elegan daripada yang dapat saya bayangkan jika saya melihatnya Lembar kosong kertas. Versi iOS dari mesin saya saat ini terdiri dari 100% kode asli, termasuk perpustakaan matematikanya sendiri, templat wadah, sistem refleksi/serialisasi, kerangka rendering, fisika, dan mixer audio. Saya punya alasan untuk menulis masing-masing modul ini sendiri, tapi ini mungkin tidak diperlukan bagi Anda. Sebaliknya, ada banyak perpustakaan sumber terbuka dan berlisensi permisif yang mungkin cocok untuk mesin Anda. Header GLM, Bullet Physics, dan STB hanyalah beberapa contoh menarik.

Berpikirlah dua kali sebelum Anda menggeneralisasi terlalu banyak

Sebagai programmer, kami berusaha menghindari duplikasi kode, dan kami ingin kode mengikuti gaya yang konsisten. Namun, menurut saya, ada gunanya jika kita tidak membiarkan naluri ini mengendalikan semua keputusan.

Langgar prinsip KERING dari waktu ke waktu

Izinkan saya memberi Anda sebuah contoh: mesin saya berisi beberapa kelas templat pointer cerdas, mirip dengan std::shared_ptr . Masing-masing membantu menghindari kebocoran memori dengan bertindak sebagai pembungkus pointer mentah.

  • Dimiliki<>untuk objek yang dialokasikan secara dinamis yang memiliki satu pemilik.
  • Referensi<>menggunakan penghitungan referensi untuk memungkinkan suatu objek memiliki banyak pemilik.
  • audio::Milik Aplikasi<>digunakan oleh kode di luar mixer audio. Hal ini memungkinkan sistem game untuk memiliki objek yang digunakan oleh mixer audio, seperti suara itu saat ini direproduksi.
  • audio::AudioHandle<>menggunakan sistem penghitungan referensi internal pada mixer audio.

Beberapa dari kelas ini mungkin tampak menduplikasi fungsi kelas lainnya, sehingga melanggar prinsip KERING. Faktanya, di awal pengembangan saya mencoba menggunakan kembali kelas Referensi yang sudah ada<>sebanyak mungkin. Namun, saya menemukan bahwa masa pakai objek audio tunduk pada aturan khusus: jika objek telah selesai memainkan sebuah fragmen, dan game tidak memiliki penunjuk ke objek ini, maka objek tersebut dapat segera dimasukkan ke dalam antrean untuk dihapus. Jika game telah menangkap pointer, maka objek audio tidak boleh dihapus. Dan jika permainan telah menangkap penunjuk, tetapi pemilik penunjuk dimusnahkan sebelum permainan selesai, maka harus dibatalkan. Daripada mempersulit Referensi<>, saya memutuskan akan lebih praktis untuk memperkenalkan kelas templat terpisah.


95% dari keseluruhan, menggunakan kembali kode yang sudah ada adalah cara yang tepat. Namun jika hal ini mulai menghambat Anda, atau Anda mendapati diri Anda mempersulit sesuatu yang tadinya sederhana, tanyakan pada diri Anda apakah bagian basis kode ini harus dipecah menjadi dua.

Tidak masalah menggunakan konvensi panggilan yang berbeda

Salah satu hal yang saya tidak suka tentang Java adalah ia memaksa Anda untuk mendefinisikan setiap fungsi di dalam kelas. Menurut pendapat saya, ini tidak ada gunanya. Hal ini dapat membuat kode Anda terlihat lebih konsisten, namun juga mendorong kerumitan yang berlebihan dan tidak mendukung pendekatan berulang yang saya jelaskan sebelumnya.


Di mesin C++ saya, beberapa fungsi termasuk dalam kelas, dan beberapa tidak. Misalnya, setiap musuh dalam game adalah sebuah kelas, dan sebagian besar perilaku musuh diterapkan di kelas tersebut, seperti yang Anda harapkan. Di sisi lain, di mesin saya, fungsi dalam namespace fisika dijalankan dengan memanggil scopeCast() . globeCast() bukan milik kelas mana pun - ini hanya bagian dari modul fisika. Saya memiliki sistem pembangunan yang mengelola ketergantungan antar modul, yang menjaga kode tetap terorganisir dengan baik (bagi saya). Membungkus fungsi ini dalam kelas arbitrer tidak meningkatkan pengorganisasian kode dengan cara apa pun.



Minimal, coba bayangkan betapa rumitnya kebutuhan Anda. Jika Anda membuat game kecil seperti Flappy Bird, dengan sedikit aset, Anda mungkin tidak perlu terlalu memikirkan serialisasi. Anda mungkin dapat memuat tekstur langsung dari PNG dan itu sudah cukup. Jika Anda memerlukan format biner yang kompak dan kompatibel namun tidak ingin mengembangkannya sendiri, lihat perpustakaan pihak ketiga seperti Cereal atau Boost.Serialization. Menurut saya, Google Protocol Buffer tidak ideal untuk membuat serial aset game, namun masih layak untuk ditelusuri.


Menulis mesin permainan - bahkan yang kecil sekalipun - adalah pekerjaan besar. Saya bisa mengatakan lebih banyak, tapi sejujurnya, itu yang paling banyak saran yang bermanfaat Apa yang dapat saya pikirkan untuk artikel sepanjang ini adalah: bekerja secara berulang, tahan sedikit keinginan untuk menggeneralisasi kode, dan ingat bahwa serialisasi adalah topik yang luas, jadi Anda harus memilih strategi yang tepat. Menurut pengalaman saya, setiap poin ini bisa menjadi batu sandungan jika diabaikan.


Saya suka membandingkan catatan tentang topik ini, jadi saya sangat tertarik mendengar pendapat pengembang lain. Jika Anda menulis mesinnya, apakah pengalaman Anda menghasilkan kesimpulan yang sama? Dan jika Anda belum menulis atau hanya berencana untuk menulis, pemikiran Anda juga menarik bagi saya. Menurut Anda apa sumber belajar yang baik? Aspek apa yang masih terasa misterius bagi Anda? Jangan ragu untuk meninggalkan komentar di bawah atau hubungi saya

Tampilan