Saya lebih suka C / C ++ daripada Unity dan alat-alat lain: apakah ini merupakan kesalahan besar bagi pengembang game? [Tutup]

35

Kami memiliki proyek permainan besar menggunakan Unity di sekolah. Ada 12 dari kita yang mengerjakannya. Guru saya tampaknya yakin itu adalah alat yang penting untuk mengajar siswa, karena itu membuat siswa terlihat dari level atas ke level bawah.

Saya dapat memahami pandangannya, dan saya bertanya-tanya: Apakah persatuan merupakan mesin yang penting di perusahaan pengembang game? Apakah ada banyak perusahaan yang menggunakannya karena mereka tidak mampu menggunakan sesuatu yang lain? Dia berbicara seperti Unity adalah pemain besar dalam pembuatan game, tetapi saya hanya melihatnya cocok dengan perusahaan game indie kecil yang ingin melakukan permainan secepat mungkin.

Apakah Anda pikir Unity adalah yang paling penting dalam industri? Apakah itu membahayakan nilai keterampilan C ++?

Bukannya saya tidak suka Unity, hanya saja saya tidak belajar apa-apa dengan itu, saya lebih suka mencapai langkah kecil dengan Ogre atau SFML sebagai gantinya.

Selain itu, kami juga memiliki latihan latihan C ++, tetapi itu hanya latihan dengan teori, tidak banyak.

jokoon
sumber
9
Titik C ++ dan OOP adalah objek yang digunakan kembali. Unity adalah contoh utama dari itu, dan portabilitas lintas-platform. Mereka menawarkan semua alat yang Anda butuhkan untuk meluncurkan game di XBox atau iPhone atau Wii. Apakah Anda serius mengatakan kepada saya Anda lebih suka menulis ulang semua itu di C ++ dari awal?
Stephen Furlani
2
Sama sekali tidak, bukan itu yang ingin saya katakan. Saya hanya mengatakan saya tidak menyukai bahasa sampah yang dikumpulkan dengan itu, dan juga fakta bahwa Anda tidak dapat mengubah kode karena itu milik: Anda tidak dapat men-tweak sebanyak yang Anda bisa men-tweak mesin lain yang ada . Poin Anda valid, tetapi jika saya mengikuti Anda, perusahaan juga dapat menggunakan kembali mesin mereka sebelumnya alih-alih hanya beralih ke Unity. Dengan Unity, Anda tetap pada sesuatu yang tidak dapat Anda ubah, itu selalu merupakan kesalahan terbesar bagi saya ketika saya memikirkan alat-alat seperti itu: Mesin berpemilik tidak memiliki masalah itu.
jokoon
2
Anda dapat mengubah Unity dengan asumsi Anda mendapatkan lisensi sumber (yang mahal, seperti kebanyakan lisensi sumber profesional lainnya). Itu juga akan cukup sering diperbarui sehingga tidak benar-benar statis dalam hal set fitur.
Tetrad
Ini pada dasarnya adalah pertanyaan "teknologi apa yang digunakan". Juga lebih berorientasi diskusi / pendapat. Sayangnya saya tidak bisa memilih untuk menutup untuk kedua kalinya ...
bummzack

Jawaban:

34

Unity adalah solusi yang sangat valid dalam konteks ini. Bayangkan sesaat memiliki 12 orang, yang sebagian besar masih dalam proses belajar C ++, menulis aplikasi game yang besar dan kompleks menggunakannya. Dalam jumlah waktu yang dihabiskan untuk debugging saja, Anda mungkin bisa menulis game lain di Unity.

Saya tidak mengatakan mengetahui bagaimana menggunakan C ++ tidak penting - itu adalah, terutama jika Anda berencana untuk bergabung dengan industri game 'mainstream'. Tetapi mungkin instruktur Anda benar dalam hal ini - gunakan proyek ini sebagai pengalaman belajar dalam cara berpikir tentang membuat game, dan bersenang-senang melakukannya. Dalam prosesnya, cobalah mengasah kemampuan C ++ Anda menggunakan latihan atau bahkan sejauh menulis game kecil sementara itu menggunakan SFML atau kerangka dasar lainnya.

Ketika semuanya selesai, Anda akan belajar banyak, mungkin menjadi programmer yang lebih baik, dan proyek Anda berikutnya dapat ditangani dalam C ++ dengan kepercayaan diri yang jauh lebih tinggi.

James
sumber
2
Menariknya, ada sekolah yang benar-benar mengajarkan C ++ dan mengharapkan siswa untuk membangun seluruh mesin permainan dan permainan dari awal meskipun masih dalam proses belajar C ++. Tentu saja, benar-benar mempraktikkan keterampilan adalah bagaimana Anda mempelajarinya (bukan kuliah kelas dan proyek pekerjaan rumah kecil, oleh proyek besar semester atau tahun) yang mengapa sekolah mengatakan menghasilkan programmer tingkat atas. Programmer yang mampu mengambil alat seperti Unity sangat cepat, atau mesin lainnya. Lebih baik memaksa siswa untuk mempelajari hal-hal yang sulit, karena hal-hal yang mudah tidak akan menjadi masalah setelahnya.
Sean Middleditch
Tidak semua pengembangan game adalah pemrograman, dan menggunakan Unity tidak selalu berarti "menghindari hal-hal yang sulit." Itu hanya menekankan hal-hal sulit yang berbeda daripada menerapkan dari awal. Memberi desain bukan pemrograman itu. Jika sebuah game diimplementasikan dari awal, saya akan berharap "programmer art" lebih primitif dan tidak ada karakter atau plot.
wrosecrans
43

Persatuan tumbuh dalam popularitas di industri, sebagian besar di perusahaan kecil. Namun, ini adalah lingkungan pengajaran yang sangat baik. Ini adalah alat pengajaran penting, tetapi tidak terlalu umum di antara perusahaan-perusahaan utama. Tidak apa-apa jika Anda tidak menyukainya.

Biarkan saya mencatat sesuatu di sini, karena saya sering melihat kebingungan di antara siswa pemrograman. "Keterampilan C ++" tidak terlalu berguna dalam jangka panjang. Apa yang seharusnya Anda cari adalah "keterampilan pemrograman" dan "keterampilan desain." Jika Anda memahami konsep bahasa pemrograman dan bagaimana sistem perangkat lunak disatukan, maka bahasa tidak terlalu penting. Saya tidak menganggap diri saya sebagai pengembang yang luar biasa, tetapi saya dapat mengambil bahasa baru dan menghasilkan kode yang berguna dalam satu atau dua hari, karena saya memahami dasarnya.

Belajar Unity akan membuat Anda lebih baik di C ++.

Gregory Avery-Weir
sumber
Gameforge dan BigPoint adalah perusahaan terkemuka di dunia dan mereka menggunakan Unity :)
daemonfire300
1
+1 untuk menjadi jawaban yang sangat bagus. Belajar-mesin permainan adalah hal yang sangat sangat penting bagi sekolah untuk dilakukan karena 99% dari waktu Anda tidak akan membuatnya dari awal. Mampu menyelam ke dalam mesin yang ada dan mengenali bagian-bagiannya, membedakan aliran data dan itu semua adalah hal yang sangat penting. Seperti yang disebutkan di atas, bahasa tidak masalah meskipun C / C ++ 99% dari waktu, tetapi mampu memahami mesin, atau lebih umum hanya kode orang lain, adalah keterampilan yang tak ternilai dalam bidang pemrograman ... terutama waktu kritis kata stres tinggi yaitu video game :)
James
1
Saya agak tidak setuju dengan jawaban ini. Bagi saya ada perbedaan antara skrip dan programmer. Pengembang Unity adalah pemrogram, pengguna Unity adalah penulis naskah. Hasilnya sama, mereka membuat game, tetapi dalam jangka panjang, menggunakan Unity bisa menjadi masalah. Industri game kaya dan sekarang memungkinkan alat seperti Unity, tetapi bagi saya itu karena komputer lebih cepat. sehingga Anda dapat membuang banyak kode, itu berfungsi: Persatuan jelas dibuat untuk kecepatan pengembangan, sesuatu yang disukai pasar karena dolar, tetapi saya tidak berpikir itu merupakan nilai tambah nyata.
jokoon
14
jokoon: Apa perbedaan antara scripting dan pemrograman? Pengguna Unity yang kuat menulis shader, mengelola urutan render, dan menulis kode AI. "Skrip" Unity dikompilasi, dan dapat diperpanjang dengan pengkodean tingkat rendah jujur-ke-dewi jika Anda mau. Dan coding Unity yang baik mengikuti prinsip yang sama dengan coding non-Unity yang baik. Tidak ada perbedaan magis antara kedua paradigma itu.
Gregory Avery-Weir
9

Apakah ada banyak perusahaan yang menggunakannya karena mereka tidak mampu menggunakan sesuatu yang lain?

Ya, tetapi "mampu" jauh lebih dari sekadar nilai dolar.

Ya, set fitur yang Unity Pro berikan kepada Anda dengan biaya yang mereka tetapkan konyol, terutama mengingat fakta bahwa itu adalah lisensi kursi, bukan lisensi per-judul.

Tapi di atas itu, ini adalah alat yang sangat mudah digunakan. Anda tidak menghabiskan banyak waktu untuk melatih seniman dan perancang cara menggunakan pipa seni. Sangat mudah untuk mengatakan "cukup seret di tekstur dan model Anda dan mereka baik untuk pergi.

Selain itu, ini adalah salah satu dari sedikit alat yang benar-benar memungkinkan Anda melakukan 3D di peramban dengan segala jenis keteraturan. Mereka mendukung hampir semua platform shader dari fungsi tetap ke DX9 + serta Mac dan Windows. Teknologi itu sendiri sangat berharga jika Anda ingin menargetkan pasar "game berbasis browser" yang sedang berkembang.

Dari sisi pemrograman, apa yang Anda dapatkan dari Unity adalah pemahaman yang kuat tentang desain komponen (dibandingkan dengan menggulung mesin C ++ Anda sendiri, yang biasanya terlalu berat di sisi warisan), serta lingkungan yang sangat cepat dan visual untuk dicoba kode permainan. Semoga Anda akan mempelajari praktik desain yang baik dengan menggunakan Unity, yang dapat Anda ambil untuk mesin C ++ di masa depan.

Tentu saja, lebih baik memilih satu bahasa daripada yang lain. Secara pribadi saya lebih suka C # daripada C ++. Tetapi bahasa apa yang Anda gunakan benar-benar didorong oleh persyaratan proyek lebih dari apa pun. Pengembang tidak dapat benar-benar menjadi penggemar karena Anda tidak ingin mengunci diri dari pasar karena Anda tidak menyukai alat atau bahasa karena satu dan lain alasan.

Selain itu, begitu Anda benar-benar mempelajari bahasa kedua, Anda dapat melihat bahwa sebagian besar hanya mengambil sintaks dan paradigma baru, dan biasanya tidak terlalu sulit untuk menambahkan alat baru ke sabuk alat Anda. Ya, Anda harus belajar dan memahami C ++, tetapi pada level tinggi Anda harus memahami desain yang baik terlebih dahulu.

Tetrad
sumber
klarifikasi: Apakah maksud Anda bahwa lisensi Unity Pro sepadan dengan dibandingkan dengan Unity lama? Komentar Anda sedikit tidak jelas bagi saya.
Kyle C
7
Saya tidak menggunakan yang gratis, hanya saja $ 1500 / kursi lisensi murah dibandingkan dengan lisensi mesin komersial lainnya.
Tetrad
Saat ini tidak ada masalah dengan menggunakan versi gratis, hanya ada batasan kecil.
XandruCea
9

Masalah inti, dari apa yang bisa saya lihat, bukanlah C ++ atau Unity3D, tetapi Anda membutuhkan solusi tingkat tinggi atau solusi tingkat rendah .

Solusi tingkat rendah adalah solusi yang Anda menjadi kotor dengan proses menyerahkan input, mengelola memori, atau memuat model. Solusi tingkat tinggi adalah Anda mendapatkan satu paket yang rapi, seperti Unity3D.

Bagi saya, apakah menggunakan Unity3D (atau mesin gim lainnya) atau C ++ tergantung pada tujuan gim dan proyek Anda.

  • Gunakan Unity3D, jika waktu pengembangan harus cepat dan / atau game Anda tidak intensif kinerja atau tidak berada di ujung atas kinerja grafis / komputasi. Jika Anda ingin berkonsentrasi pada permainan-permainan, dan alat-alat default yang disediakan Unity3D baik-baik saja, Anda mungkin ingin mempertimbangkan untuk menggunakan Unity3D

  • C ++ dengan pustaka lain, jika Anda memiliki waktu pengembangan yang lebih lama, gim ini membutuhkan daya komputasi / grafis yang lebih besar, atau menggunakan beberapa teknologi yang tidak dapat dimasukkan Unity3D.

Hal yang baik tentang Unity3D adalah bahwa ia masih menggunakan bahasa scripting yang mencerminkan perkembangan dunia nyata (C # atau JavaScript). Konsep OOP dan rekayasa perangkat lunak yang Anda pelajari (Singleton, fasad, mesin negara, dekorator, komposisi) dapat diterapkan di Unity3D. Ini membantu untuk menjaga proses cookie-cutter seperti manajemen sumber daya, grafik adegan, pemuatan model, rendering, penyimpanan adegan dan lain-lain. Lebih baik lagi, jika ada fungsi yang Anda butuhkan yang tidak disediakan Unity3D, Anda dapat melakukan Pengodean DLL.

Di mana itu meninggalkan C ++? C ++ adalah bahasa, dan ada banyak konsep pemrograman yang Anda lakukan di C ++ yang dapat Anda lakukan di Unity3D, sans manajemen memori atau mungkin templat (Dengan Unity 3.2, spesifikasi bahasa telah ditingkatkan untuk mencakup penutupan, misalnya).

Jadi seperti yang telah saya nyatakan, itu sebenarnya bukan C ++ vs. Unity3D. Ini lebih dari "C ++ plus libraries / SDK atau roll your engine" vs Unity3D. Itu tergantung pada tujuan dan sasaran Anda. Untuk gim kelas atas atau gim di mana Anda perlu mengontrol pipeline atau input rendering, Anda mungkin ingin menggunakan C ++ plus mesin yang memungkinkan Anda mengacaukannya. Jika tidak, saya menggunakan Unity3D sebagai pilihan default saya untuk game 3D.

Namun, pengetahuan dengan Unity3d tidak berada di bawah pengalaman, tetapi merupakan tempat yang baik untuk memulai mempelajari proses pengembangan game secara keseluruhan. Sebagai contoh, Anda mungkin perlu belajar selama satu semester untuk menulis renderer dan memuat model dalam OpenGL, ditambah scenegraph dan input dasar. Anda dapat melakukannya di Unity3D dalam waktu kurang dari sehari.

Extrakun
sumber
atau bekerja dengan Ogre3d!
jokoon
Terakhir kali saya bekerja dengan Ogre3D sudah lama; Saya pikir itu membutuhkan lebih banyak pekerjaan daripada Unity3D untuk meningkatkan permainan, dan itu adalah jalan tengah yang baik untuk mengintip bagaimana hal-hal di bawah tenda bekerja.
Extrakun
+1 untuk yang satu ini. Anda tidak dapat memilih C / C ++ dan Unity per se karena itu adalah apel dan jeruk. Yang bisa Anda sukai adalah gagasan bekerja di level pengembangan yang lebih rendah yang disediakan oleh C / C ++, atau level pengembangan yang lebih tinggi yang dimungkinkan Unit.
Tim Holt
8

Tidak, Unity3D sama sekali tidak membahayakan keterampilan C ++. Sebenarnya, mengetahui C ++ jauh lebih penting bagi seorang programmer game.

Unity3D adalah alat yang sangat bagus untuk pengembangan game. Saya benar-benar menyukainya, dan akan merekomendasikannya untuk hampir semua pertandingan, terutama untuk tim kecil. Tetapi Unity3D sendiri ditulis dalam C ++; dan Anda harus tahu C ++ (dan juga banyak hal tingkat rendah lainnya) untuk benar-benar memahami cara kerjanya.

Bahkan jika Anda menggunakan Unity3D, hanya keterampilan C ++ dan pemahaman tingkat rendah tentang prinsip dan algoritma yang terlibat akan memungkinkan Anda untuk menggunakannya secara maksimal. Ngomong-ngomong, ini berlaku untuk mesin game lain.

Dan untuk melakukan pekerjaan yang sangat baik, memeras setiap bit terakhir dari platform pilihan Anda, dan menjejalkan sebanyak mungkin efek dan algoritme canggih, Anda tidak bisa menggunakan apa pun selain C / C ++. Dengan sedikit assembler, mungkin.

Sudahlah
sumber
Ini adalah jawaban yang saya tunggu untuk +1:]
Notabene
3

Sejauh yang saya tahu, itu tergantung pada platform target Anda, game AAA dan konsol (XBOX, Wii, dll) game biasanya berada di C ++ untuk mendapatkan kinerja maksimal, namun jika Anda menulis game berbasis browser Unity juga sering bekas.

Namun untuk pertanyaan Anda, saya pikir itu hanya berkaitan dengan alat-alat seperti Unity memberi Anda kerangka kerja standar besar untuk bekerja, yang dalam proyek setengah tahun dapat membuat perbedaan antara prototipe setengah matang dan permainan yang cukup matang.

Elva
sumber
3

Saya pergi ke Program Master Komputer Grafis dan Teknologi Game University of Pennsylvania, tempat kami mengerjakan semua proyek kami di tingkat terendah, dengan proyek-proyek di C ++, OpenGL, CUDA, dll. Proyek kami meliputi animasi berbasis fisika, animasi karakter arsitek dan IK, mewakili berbagai bentuk kurva Bezier ... Anda tahu, benar-benar hal-hal dasar yang memanfaatkan keahlian dalam pemrograman, aljabar linier, dan kalkulus.

Kemudian, saya mengunduh Unity dan menemukan bahwa semua yang saya kerjakan tidak berhasil dibuat, dimasukkan ke dalam paket gratis ini yang dapat digunakan siapa pun.

Apakah saya terganggu olehnya? Sedikit diakui, tetapi saya menemukan bahwa memiliki pemahaman dari sekolah membuat saya jauh lebih berbahaya ketika saya menggunakan alat-alat seperti Unity. Saat ini saya bekerja di game, di mana kami membawa game dari konsep ke pasar dalam waktu kurang dari satu tahun, dan saya masih menjadi orang yang tepat ketika datang ke "hal-hal matematika." Saran saya kepada Anda adalah melalui gerakan; Anda akan sangat berharga ketika memasuki industri.

mseltzer
sumber
Anda bisa (secara teoritis) mendapatkan lencana darinya. :)
Cyclops
Tidak ada necroing di sini, karena pertanyaan tidak menjadi tua dan "mati" seperti di forum. :) Jawaban telat selalu OK.
doppelgreener
0

Saya mungkin terlambat menjawab tetapi ini akan membantu beberapa orang mengalami kebingungan ini ..

Awalnya saya seorang programmer c ++, yang dulu benci menggunakan mesin pihak ketiga (misalnya kesatuan) karena, saya tidak merasa seperti ada banyak proses pembelajaran yang terlibat dalam hal pemrograman tingkat rendah.

Setelah mencoba persatuan, saya menemukan hal-hal berikut yang harus dimiliki oleh seorang pengembang Game. Di sini saya mendaftar tidak secara khusus untuk persatuan, tetapi mencantumkan manfaat dari pergi dalam Perspektif TINGKAT TINGGI.

  1. Memahami bagaimana mendesain pada level tinggi lebih penting daripada memikirkan optimasi level rendah.
  2. Mesin yang memiliki sistem arsitektur Entity (arsitektur berbasis komponen) akan membantu dalam mempelajari bagaimana sebenarnya arsitektur ini akan membantu.
  3. Anda akan mengetahui teknologi terbaru (paling tidak terminologi) dan Anda akan paling tidak up-to-date dengan industri mengenai Grafik.- ini adalah alasan utama saya memilih untuk mencoba persatuan!
  4. Melewatkan waktu untuk membeli alat importir sumber daya yang berbeda. (Tentu saja saya masih suka menulis importir 3d saya sendiri di c ++ karena akan lebih menyenangkan di waktu luang)

Di atas adalah beberapa alasan untuk memilih mesin tingkat tinggi. Tetapi pada saat yang sama, Anda tidak harus berhenti belajar C ++ sebagai bahasa yang paling dibutuhkan dan berguna untuk pengembang Game yang sempurna.

Pertama-tama pahami visualisasi di level tinggi dan lakukan beberapa prototipe cepat dengan Unity dan gunakan pengalaman itu dalam merancang game yang bagus di c ++.

Segera saya akan kembali ke c ++ karena saya telah memperoleh pengalaman yang baik di tingkat yang lebih tinggi dengan persatuan :)

Semoga berhasil!

Ayyappa
sumber