Apakah mengembangkan game adalah cara terbaik untuk belajar pemrograman? [Tutup]

21

Baru-baru ini saya mendengar seorang mentor instruktur bahwa mengembangkan game adalah cara terbaik untuk belajar pemrograman. Selain fakta bahwa semuanya harus dibuat dalam kode, dia berkata Anda benar-benar bisa sepenuhnya mengalami dan menerapkan OOP ke dalam program Anda. Dengan kata lain semua yang Anda buat dalam game adalah objek literal baik secara teknis maupun konsep. Apakah aman untuk membuat asumsi ini? Atau selalu ada pengecualian saat belajar pemrograman?

perhatikan itu diarahkan pengembangan .net / xna / c #.

Edward
sumber
3
"fakta bahwa semuanya harus dibuat dalam kode". Bagaimana dengan model 3D, tekstur, suara, dan sumber daya lainnya? Anda dapat membuat mesin gim tanpa mereka, tetapi gim yang lengkap dengan sumber daya yang sangat sedikit, meskipun bukan tidak mungkin, akan menjadi tantangan yang cukup besar.
POSIX_ME_HARDER
@Cheshire: Ya, Anda bisa memprogramnya dengan hal-hal seperti Memproses. Saya tidak mengatakan itu sangat praktis.
Anto
2
@Cheshire: Ya, beberapa orang menerima tantangan ini secara langsung, dengan membuat semuanya secara prosedural. Tidak terlalu umum dalam permainan komersial (sejauh yang saya tahu), tetapi populer hanya untuk membuktikan bahwa itu dapat dilakukan dan saya telah melihat beberapa demo yang cukup mengesankan seperti itu.
FrustratedWithFormsDesigner
6
Saya menganggap pertanyaan ini berarti 'pengembangan game' daripada 'bermain game' ketika bertanya tentang game? Tidak dapat berhenti melakukan lompatan intelektual dari Call of Duty ke C ++ ...
HorusKol
1
Jika Anda ingin gim ini dapat dimainkan, Anda mungkin perlu mengompromikan desain OO murni demi kecepatan.
Peter Taylor

Jawaban:

25

Pengembangan game adalah beberapa pengembangan yang paling menantang yang ada, menurut saya. Mari kita lihat semua konsep yang perlu diketahui oleh satu orang yang membuat penembak orang pertama:

  • Grafik
    • Perhitungan 3d
    • Optimasi kecepatan
    • Berinteraksi dengan perangkat keras grafis
  • Permainan
    • Struktur data
    • Format file untuk disimpan
    • Desain umum, atau Anda akan membuat kekacauan yang tidak mungkin ditambahkan fitur
    • Pengetahuan jaringan jika gim ini multi-pemain
  • Algoritma AI
    • Menemukan jalan
    • Pertempuran pertempuran
  • Penerbitan
    • Pengetahuan OS seperti cara kerja installer
    • Mungkin pengembangan web untuk menyebarkan berita

Soalnya, satu game bisa mencakup banyak area secara bersamaan. Ini membuatnya menjadi alat pembelajaran yang sangat baik jika Anda bersedia menghabiskan waktu dan menjadikannya baik.

Adapun OOP, itu satu pola yang bekerja dengan baik. Anda dapat menggunakan game sebagai alat belajar untuk berlatih teknik desain yang baik.

Untuk menjawab pertanyaan Anda, itu bukan satu-satunya cara untuk belajar pemrograman. Setelah Anda menjadi pengembang perantara, membuat game akan memungkinkan Anda menyentuh banyak konsep dan level pemrograman. Selain itu, itu menyenangkan!

Michael K.
sumber
12
Anda lupa satu hal, sebuah cerita untuk game itu, dan kadang-kadang, cerita itulah yang terpenting.
Mahmoud Hossam
Ini mengasumsikan itu adalah game 3D.
Adam Harte
1
@ Adam: Ya, tetapi 2d memiliki perhitungan juga. Saya sekarang sengaja mengecualikan RPG berbasis tes;)
Michael K
1
@Mohmoud Cerita TIDAK PERNAH "semua yang penting". Ini sama besar kesalahannya dengan memiliki cerita yang buruk / hilang. Ada banyak aspek yang membuat permainan bagus. Saya tidak ingin memainkan permainan yang membosankan, tidak peduli seberapa hebat ceritanya. Juga sebagian besar permainan puzzle yang sukses tidak memiliki cerita.
Adam Harte
Teori permainan juga berguna.
VirtuosiMedia
46

Bukan untuk menjadi tautologis, tetapi pemrograman adalah cara terbaik untuk belajar pemrograman. Jika Anda tertarik dengan game komputer, maka pemrograman game mungkin merupakan cara yang bagus untuk belajar pemrograman.

Saya tidak peduli dengan permainan, tetapi saya suka matematika, begitu banyak proyek pembelajaran saya sangat matematis.

Intinya adalah, Anda perlu menemukan cara untuk memecahkan masalah dengan kode, dan gim bekerja untuk banyak orang.

Eric Wilson
sumber
inilah yang saya pikir awalnya. Tetapi pertimbangkan Anda yang benar-benar baru dalam pemrograman. Permainan tampaknya seperti alat yang sangat baik untuk mempelajari banyak konsep berbeda. Michael mendaftar beberapa di antaranya. Sejujurnya saya berharap saya akan belajar OOP dari perspektif game pertama. Tapi itu bisa jadi karena fakta bahwa itu tidak dijelaskan dengan baik, atau bahwa mengembangkan aplikasi bisnis membuatnya sedikit lebih sulit untuk memahami konsep tersebut. Jelas menarik untuk mengamati kedua argumen itu.
Edward
@enguin dengan cara apa bermain Call of Duty atau Halflife akan mengajarkan Anda pemrograman?
jwenting
13

Ini adalah sebuah cara untuk belajar pemrograman, antara cara lain. Ketika Anda menulis kode, Anda belajar banyak hal. Sekarang, apakah yang cara terbaik? Tidak begitu yakin.

Paling tidak, dua alasan yang diberikan oleh guru Anda tidak valid .

  • "semuanya harus dibuat dalam kode" : ketika Anda menulis aplikasi bisnis, Anda sebenarnya menulis kode tersebut. Itu tidak akan ditulis dengan sihir. Ya, ada bantuan yang memungkinkan Anda menggunakan kode yang dibuat secara otomatis. Tidak, itu tidak wajib untuk menggunakannya. Omong-omong, bagian-bagian yang dibuat secara otomatis pada umumnya adalah pemrograman yang paling menjengkelkan (bukan dengan menambahkan kontrol ke kontrol Windows Forms sehingga Anda akan mempelajari sesuatu yang menarik dan berguna).

  • "Anda benar-benar dapat sepenuhnya mengalami dan menerapkan OOP ke dalam program Anda" : seseorang harus menjelaskan kepada saya mengapa ini hanya berlaku untuk game, tetapi tidak valid untuk hal lain. Jika Anda memahami OOP dan ingin menggunakannya, Anda dapat menggunakannya dalam aplikasi bisnis juga. Jika Anda tidak mendapatkannya atau tidak ingin menggunakannya (dan lebih suka menggunakan pemrograman fungsional misalnya), pengembangan game tidak akan memaksa Anda untuk berubah.

Tapi:

Mengembangkan game mungkin menyenangkan . Sebagian besar anak muda suka game, jadi mereka akan senang mengembangkan game daripada menulis aplikasi bisnis, yang akan sangat membosankan bagi kebanyakan dari mereka. Melihat ini, para guru dapat mulai percaya bahwa sebenarnya bermain game adalah cara terbaik untuk belajar pemrograman, dan kemudian mereka akan mencoba menemukan penjelasan logis untuk itu.

Karena itu, para guru itu mengakhiri dengan membuat pengembangan game membosankan bagi kaum muda seperti pengembangan aplikasi bisnis. Jika mereka percaya bahwa bermain game harus dilakukan untuk mempelajari OOP dll., Maka mereka akan meminta siswa mereka untuk melakukan berbagai proyek yang tidak menyenangkan sama sekali. Ini adalah salah satu kesalahan terbesar guru saya ketika saya masih kuliah. Mereka memberi kami sangat sering proyek game untuk menulis di Ada dalam mode konsol. Tanpa grafis. Tidak menyenangkan. Tidak ada pengalaman pengguna. Sepanjang hidup dan karier saya, saya tidak pernah melihat proyek membosankan seperti itu.

Arseni Mourzenko
sumber
4
Permainan bekerja dengan baik dengan OOP karena sangat mudah untuk melihat bagaimana setiap BadGuy, Weapon, PowerUp, dan item lainnya dalam sebuah game dapat dengan mudah menjadi obyek. Anda bisa memprogram interaksi antara objek dan melihatnya di layar. Saya pikir bagian visual inilah yang membuatnya begitu menarik. Aplikasi bisnis yang memiliki jenis hierarki ServerTaskScheduler, AbstractDataProcessor, UserQueryAgent, dll ... yang tidak menarik , meskipun mereka mungkin mengajarkan konsep OOP sama seperti di game.
FrustratedWithFormsDesigner
4
@FrustratedWithFormsDesigner: mungkin aku hanya tidak mengerti karena saya menghabiskan terlalu banyak waktu mengembangkan aplikasi bisnis, tapi aku tidak mengerti mengapa hal itu akan lebih sulit untuk melihat bagaimana Customeratau Productatau Transactionbisa benda. Tapi saya mengerti bahwa jauh lebih menyenangkan untuk berurusan dengan BadGuydaripada membosankan Transaction.
Arseni Mourzenko
Ini lebih berkaitan dengan tingkat pemikiran abstrak. Beberapa programmer sering terpaku pada nama karena mereka tidak tahu apa yang harus dihubungkan. Misalnya saya telah bertemu beberapa devs yang tidak tahu apa yang Transactiondiperlukan.
Spoike
7

Pemrograman game adalah cara terbaik untuk mempelajari pemrograman game. Jika Anda ingin mempelajari pengembangan web, lakukan itu, jika Anda ingin mempelajari pemrograman sistem, lakukan itu dan seterusnya.

Pemrograman game itu menantang, dan kemungkinan besar akan mengajarkan Anda banyak hal (Michael mencatat banyak dalam jawabannya, dan banyak dari mereka sangat menantang, dan dapat digunakan di luar game juga). Membuat RPG atau taipan (atau game serupa) akan mengajarkan Anda banyak tentang desain OOP karena mereka cocok untuk paradigma itu. Anda juga akan dapat belajar banyak tentang pertimbangan kinerja, beberapa matematika hardcore untuk game dll, tergantung pada kompleksitas grafik dan fisika Anda.

Ini adalah cara yang baik, dan cara terbaik untuk mempelajari beberapa hal, tetapi itu bukan cara yang unggul untuk belajar pemrograman. Tidak peduli berapa banyak game yang telah Anda programkan, kemungkinan besar Anda tidak akan tahu cara membuat sistem operasi. Saya pikir sebagian besar pengembang masih bisa mendapatkan sesuatu dengan mengembangkan game, bahkan jika mereka tidak melakukan itu sebagai disiplin pemrograman utama mereka, selama mereka punya waktu.

Anto
sumber
7

Pertanyaan: Apa metode terbaik untuk mempelajari pemrograman

Jawab: Metode yang sebenarnya Anda lakukan

Yaitu, ketika belajar atau melakukan sesuatu, tidak masalah metode apa yang Anda pilih terlalu lama itu metode yang benar-benar Anda lalui.

Jika bermain game adalah sesuatu yang tampaknya sangat menyenangkan bagi Anda, lakukanlah. Jika Anda menemukan pemecahan masalah matematika lebih memuaskan, mulailah dengan itu. Ada banyak jenis pemrograman dan masing-masing memerlukan keterampilan yang berbeda sehingga taruhan yang baik adalah memulai dengan yang menurut Anda paling menarik, mungkin itulah yang akan Anda kerjakan.

... Tapi ya, bermain game adalah cara yang baik untuk mempelajari beragam pemrograman karena menggabungkan matematika, konkurensi, algoritme, oop, grafik, dll.

Homde
sumber
4

Jika Anda menikmati game maka menulis game akan menjadi cara yang baik untuk masuk ke pengembangan tetapi saya tidak akan mengatakan itu adalah cara terbaik. Saya pikir cara terbaik adalah kursus gelar CS diikuti oleh pekerjaan dengan rumah perangkat lunak yang akan berinvestasi dalam pelatihan dan bimbingan staf junior.

Terlepas dari jawaban yang diakui agak sombong itu, ya, pengembangan game akan mengajarkan Anda banyak keterampilan yang baik saya pikir, dan jika Anda menikmati permainan komputer itu akan membuat Anda tertarik pada proses pengembangan. Itu harus lebih menarik daripada banyak aplikasi sederhana lain yang Anda lihat di buku.

Steve
sumber
2

Saya akan mengatakan bahwa cara terbaik belajar kode adalah dengan membuatnya menyenangkan bagi Anda. Itu tidak harus menjadi permainan nyata, tetapi semacam permainan untuk Anda. Bagi saya, ini adalah permainan untuk memecahkan beberapa masalah matematika mengembangkan algoritma dengan cara yang saya bisa memecahkan masalah yang kompleks dengan cara tercepat mungkin. Tantang diri saya, saya menjadi pembuat kode yang lebih baik di setiap upaya untuk menyelesaikan masalah. Semakin sulit masalahnya, semakin baik.

Untuk belajar Kode (praktik terbaik), saya katakan Anda harus menghadapi tantangan yang lebih besar. Tantangan membutuhkan lebih banyak input / output tunggal

IvoC
sumber
2

Saya belum pernah mendengar tentang klaim bahwa bermain Halflife atau Call of Duty mengajarkan Anda keterampilan pemrograman.

Memprogram mereka mungkin, tetapi memprogram sesuatu seperti itu bukanlah sesuatu yang pemula bahkan harus berusaha sedikit. Dan terutama pemula sering mendapat kesan bahwa mereka dapat membuat blockbuster berikutnya dengan pengetahuan pemrograman yang tidak ada. Katakan kepada mereka untuk mencoba membuat klon PacMan atau Tetris terlebih dahulu dan mereka berteriak bahwa itu bukan yang ingin mereka lakukan dan bahwa Anda harus 'memberi saya zuh koduz'.

jwenting
sumber
1

Tidak juga. Tidak ada satu jenis terbaik proyek untuk belajar pemrograman di. Jenis proyek terbaik adalah yang relevan dengan minat Anda.

Sebagai contoh, saya mencoba belajar pemrograman beberapa cara yang berbeda, termasuk belajar ke permainan program. Sepertinya tidak pernah menempel.

Lalu ketika saya perlu belajar bagaimana memprogram untuk apa yang saya lakukan dalam penelitian saya? Saat ini saya cukup nyaman untuk mengatakan saya tahu 2 bahasa, dan saya sedang mengerjakan yang ketiga. Mengapa? Karena itu relevan dengan minat saya. Saya punya alasan untuk tetap menggunakannya, alasan untuk belajar, dan lebih banyak masalah untuk dicoba daripada hanya "Latihan 8" dalam buku ini.

Ini, kebetulan, tidak berarti pemrograman model epidemi adalah cara terbaik untuk belajar pemrograman. Tapi itu cara terbaik bagiku. Temukan milikmu. Mungkin itu game, tapi mungkin juga tidak.

Fomite
sumber
+1 untuk "jenis proyek terbaik adalah yang sesuai dengan minat Anda". Amin.
Bryan Oakley
0

Dalam pengalaman saya sendiri, dengan menulis game (dengan asumsi Anda melakukan ini pada tim Anda sendiri / tim pengembang kecil), Anda dipaksa untuk tidak hanya memikirkan bagian algoritmik / analitik pemrograman tetapi juga pengalaman pengguna dan desain.

Selain itu, jika ini adalah permainan yang cukup kompleks, Anda akan mengerjakan ini selama beberapa bulan, dan Anda akan menyadari pentingnya mendokumentasikan semua yang Anda lakukan - yang nantinya akan menjadikan Anda anggota tim yang lebih baik.

rdasxy
sumber
... tetapi jika Anda menulis segala jenis program yang berinteraksi dengan pengguna, tidakkah Anda dipaksa untuk memikirkan pengalaman dan desain pengguna? Apakah Anda mengatakan bahwa dengan aplikasi klien tradisional Anda tidak benar-benar harus memikirkan hal-hal itu, tetapi bermain game memaksa Anda untuk melakukannya? Dan tidak bisakah aplikasi desktop besar juga menjangkau beberapa bulan dan mengharuskan Anda untuk melakukan beberapa dokumentasi? Bagaimana semua ini berlaku untuk gaming tetapi tidak untuk jenis pemrograman lain?
Bryan Oakley
0

Saya setuju kecuali ...

Kemungkinan besar pengalaman pemrograman pertama yang pernah dimiliki adalah membangun dan memprogram robot Lego (Mindstorms).

Sementara istilah umum "permainan" dapat menentukan kategori yang sangat besar sehingga mencakup hampir semua pemrograman, bila digunakan dalam konteks poster aslinya, sepertinya selalu berarti "menulis game gaya Doom".

Seperti yang telah dinyatakan di sini sebelumnya - cara terbaik untuk mempelajari pemrograman adalah memiliki sesuatu yang benar-benar Anda inginkan yang memerlukan program. Yaitu - pelajari pemrograman dengan menulis program yang Anda inginkan.

Salah satu program Windows pertama saya adalah program pengontrol MIDI, karena saya benar-benar menginginkan program pengontrol MIDI, dan Windows tampaknya sangat cocok (slider, tombol, dukungan SDK untuk MIDI, dll.). Saya belajar banyak tentang pemrograman Windows (ini kembali di Win 3.1 hari) dari program itu.

Saya tidak pernah menyukai pemrograman game karena alasan yang disebutkan di sini juga - Saya tidak menggambar semuanya dengan baik, jadi setiap game yang saya buat akan memiliki grafik yang lebih buruk daripada yang dimiliki seorang artis. Saya ingin belajar memprogram, bukan mengelola "tim pembuat game" (latihan yang patut dipuji tetapi sangat berbeda).

Pada akhirnya saya sangat tidak setuju dengan pernyataan guru. Cara terbaik untuk belajar pemrograman adalah menulis program yang Anda inginkan.

-R

Huntrods
sumber