Akankah memoles proyek saya saat ini menjadi pengalaman belajar yang lebih baik daripada memulai yang baru? [Tutup]

15

Saya mulai pemrograman bertahun-tahun yang lalu. Sekarang saya mencoba membuat game. Saya telah membaca banyak rekomendasi untuk mulai mengkloning beberapa game terkenal seperti galaga, tetris, arkanoid, dll. Saya juga membaca bahwa saya harus mengikuti seluruh permainan (termasuk menu, suara, skor, dll.).

Kemarin saya menyelesaikan versi lengkap pertama klon arkanoid saya. Tapi itu masih jauh dari selesai. Saya masih bisa mengerjakannya selama berbulan-bulan (saya memprogram sebagai hobi di waktu luang saya) menerapkan pengalih resolusi layar, memetakan kembali tombol kontrol, power-up jatuh dari bata yang rusak, dan lain-lain.

Tapi saya tidak ingin selamanya belajar bagaimana mengkloning SATU game. Saya memiliki keinginan untuk pergi ke klon berikutnya untuk menerapkan beberapa ide desain yang saya dapatkan ketika mengembangkan klon arkanoid ini (pada saat yang sama saya membaca buku GoF dan banyak kode sumber dari kontes permainan Ludum Dare 21).

Jadi pertanyaannya adalah: Haruskah saya terus meningkatkan klon arkanoid sampai memiliki semua fitur yang dimiliki gim asli? atau haruskah saya pindah ke klon berikutnya (ada hampir tak terbatas permainan untuk dikloning) dan mulai memperbaiki hal-hal yang saya lakukan salah dengan klon sebelumnya?

Ini bisa menjadi pertanyaan yang sangat subyektif, jadi tolong jawab jawaban untuk cara paling efektif untuk mempelajari cara membuat game saya sendiri (bukan mengkloning ide seseorang). Terima kasih!


KLARIFIKASI

Untuk memperjelas apa yang telah saya terapkan, saya membuat daftar ini:

Fitur yang diterapkan:

  • Kemampuan memantul (bola memantul di dinding, di batu bata, dan di bar).
  • Terdengar saat memantul pada batu bata dan bar, dan saat pemain menang atau kalah.
  • Menu judul dasar (hanya game baru dan keluar). Juga menu dalam game dan menu menang / kalah.
  • Hanya tiga tingkat, tetapi sistem peta sangat mudah, saya tidak berpikir itu akan banyak mengajari saya (apakah saya salah?).

Fitur yang tidak diimplementasikan:

  • Power-up saat memecahkan batu bata.
  • Batu bata kompleks (dengan lebih dari satu "titik hit" dan tak terkalahkan).
  • Grafik yang lebih baik (saya tidak begitu pandai).
  • Pemolesan pemrograman (gunakan pola desain lebih intensif).

Berikut ini tautan ke laman webnya (minimal): http://blog.acamara.es/piperine/ Saya agak malu untuk menunjukkannya, jadi tolong jangan pukul saya terlalu keras :-)

Pertanyaan saya terkait dengan fitur yang tidak diimplementasikan. Saya bertanya-tanya apa jalur tercepat (optimal) untuk dipelajari. 1) mengimplementasikan fitur yang tidak diimplementasikan dalam proyek ini yang semakin besar, atau 2) membuat game baru yang mungkin akan mengajari saya pelajaran dan hal baru tersebut.


MENJAWAB

Saya memilih @ ashes999 jawaban karena, dalam kasus saya , saya pikir saya harus lebih memoles dan mencoba untuk "mengirim" permainan. Saya pikir semua jawaban lain juga penting untuk diingat, jadi jika Anda datang ke sini memiliki pertanyaan yang sama, sebelum mengambil keputusan terburu-buru, bacalah semua diskusi.

Terima kasih semua!

Alejandro Cámara
sumber
Maaf, tetapi mengatakan ini adalah pertanyaan objektif, tidak membuatnya objektif. Itu akan tergantung pada orang tersebut , kemampuan, tujuan, dan motivasi mereka, apakah mereka harus mengubah proyek - yang semuanya, menjadikannya pertanyaan subyektif . Tidak ada jawaban "benar" tunggal untuk pertanyaan ini.
Cyclops
Anda benar, saya memikirkan "subyektif" tetapi menulis "obyektif" (itu juga terjadi pada saya dengan kiri dan kanan ...). Saya mengubahnya.
Alejandro Cámara
Wups, maaf mendengarnya. Namun, saya benci mengatakan ini, tapi itu masih bukan pertanyaan yang bagus untuk situs ini. Tujuan dari situs StackExchange, adalah untuk membangun pertanyaan / jawaban yang berguna bagi banyak orang, bukan pertanyaan yang hanya berlaku untuk satu (atau beberapa) orang. Juga, harus ada (idealnya) satu jawaban yang benar - tetapi bagi orang-orang di masa depan yang menemukan posting ini, beberapa mungkin menemukan satu jawaban terbaik, dan beberapa lainnya, jawaban yang bertentangan lebih baik.
Cyclops
1
Saya merasa itu bukan pertanyaan yang bagus juga. Tetapi alasan saya menulisnya adalah karena mungkin seseorang terjebak dengan dilema yang sama. Sekalipun tidak ada jawaban "baik", diskusi itu dapat menerangi orang lain untuk mengambil jawaban "benar" mereka.
Alejandro Cámara
1
Secara pribadi saya pikir ruang lingkup proyek pembelajaran harus mencakup semua fitur game (begitu juga mengimplementasikan power-up) tetapi setelah itu panggilan proyek selesai dan melanjutkan; jangan repot-repot memoles grafis.
jhocking

Jawaban:

32

Saya tidak setuju dengan jawaban Patrick sepenuhnya. Jika Anda ingin sukses sebagai pengembang game, keterampilan nomor satu yang perlu Anda pelajari adalah bagaimana mengambil ide dan mengirimkan game yang lengkap dan dipoles.

Apa yang akan Anda sadari dari waktu ke waktu (yang saya sadari setelah beberapa tahun) adalah bahwa pemrograman hanyalah sebagian kecil dari permainan Anda. Mudah, karena menyenangkan. Tetapi untuk hanya berpegang pada pemrograman saja akan meninggalkan Anda dengan jejak bukti dan konsep yang tidak lengkap.

Sebagai gantinya, saya akan menyarankan dengan sangat kuat Anda memasang situs web dan blog (Wordpress bagus untuk hal semacam ini), selesaikan game Anda (mulai dengan Arkanoid), dan lepaskan ke alam liar.

Juga, itu kunci untuk menyadari bahwa jika Anda melakukan ini, Anda mengontrol kapan permainan selesai. Jika Anda ingin 1000 level dengan 10 fitur utama, baiklah. Jika Anda ingin 10 level dengan 3 fitur utama, baiklah. (Bahkan, saya merekomendasikan proyek yang lebih kecil lebih sering, karena Anda belajar lebih banyak dan lebih fokus pada pemolesan seperti itu).

Sunting: Menanggapi orang-orang yang tidak setuju, saya merasa saya perlu mengklarifikasi. Jika Anda membuat game hanya untuk satu tujuan / percobaan (yang saya lakukan sepanjang waktu), tentu saja, potong ruang lingkup dan kirimkan. Tidak ada yang mengatakan Arkanoid membutuhkan 1000 level untuk menjadi game yang dipoles; Buatlah level yang cukup agar menjadi, menurut Anda, menyenangkan, dan terus maju.

Dimungkinkan untuk menghabiskan waktu bertahun-tahun dalam permainan dan tidak pernah mengirim. Tapi saya merasa jauh lebih mudah untuk jatuh ke lubang lain hanya membuat demo dan prototipe teknis selamanya. Butuh 10+ tahun bagi saya untuk berhenti melakukan ini sendiri.

ashes999
sumber
3
+1 "pengiriman adalah fitur (wajib?)" Meskipun dalam kasus ini Anda juga dapat melihat klon arkanoid sebagai prototipe, dan prototipe dimaksudkan untuk dibuang ketika sebuah konsep terbukti atau tidak terbukti.
Oskar Duveborn
2
@Oskar lebih mudah membuat 1000 prototipe daripada mengirim satu game. Pada akhirnya, pengiriman akan membuat Anda sukses, sementara prototipe hanya meningkatkan beberapa keterampilan pengkodean.
ashes999
2
Mengapa mengabaikan "hanya meningkatkan beberapa keterampilan pengkodean"? Dia secara khusus bertanya tentang pengalaman belajar.
jhocking
@jocking karena jawaban Patrick. Jawaban saya secara khusus untuk fokus lebih dari sekedar keterampilan coding.
ashes999
1
@Yannbane Jika orang memainkannya dan berpikir "ya itu permainan yang lengkap," bahkan jika itu adalah permainan pendek, itu lengkap. Incomplete biasanya adalah game rusak atau game dengan, seperti, satu level. Setelah Anda mengirimkannya, Anda selesai.
ashes999
8

Saya akan menyarankan sintesis dari dua jawaban sebelumnya. Pada dasarnya, saya setuju bahwa itu sangat penting untuk belajar bagaimana mengambil ide dan mengirimkan permainan yang lengkap dan dipoles. Internet dipenuhi dengan proyek-proyek setengah jadi bahwa seseorang memulai dan kemudian bosan. Kemampuan untuk bertahan dengan proyek dari awal hingga akhir, apa yang saya sebut "kemampuan menyelesaikan", jarang dan berharga, dan diperoleh dengan memaksa diri Anda untuk mempraktikkannya.

Namun Anda belum pada tahap itu dalam pembelajaran Anda; Saya tidak akan merekomendasikan melakukan hal ini dengan game pertama Anda, tetapi lebih baik membuat beberapa game kecil untuk dipelajari sebelum mengerjakan proyek lengkap pertama Anda.

(samping: Saya tidak pernah benar-benar menunjukkan ini sebelumnya, tapi sekarang saya memikirkannya, saya pikir kemampuan finishing adalah hal utama yang saya lihat memisahkan pengembang berpengalaman dari pemula)


TAMBAHAN: Saya pikir banyak ketidaksepakatan antara jawaban hanya datang ke asumsi yang berbeda tentang di mana dia berada dalam prosesnya. Sebagai contoh, ketika dia berkata "Saya menyelesaikan versi lengkap pertama kloning arkanoid saya" yang bisa berarti banyak hal berbeda. Dalam kasus saya, karena dia sebelumnya berkata "Saya juga membaca bahwa saya harus pergi untuk seluruh permainan (termasuk menu, suara, skor" maka saya menganggap dia benar-benar mengimplementasikan hal-hal itu dan bertanya apakah dia harus terus melangkah lebih jauh. Dalam hal itu Jika saya mengatakan tidak, sebut proyek ini selesai dan lanjutkan ke proyek berikutnya.

Namun itu hanya asumsi di pihak saya; dia tidak benar-benar mengatakan dia telah melakukan hal-hal itu, hanya saja dia sudah membacanya. Jika dia belum melakukan hal-hal itu, maka saya akan mengatakan jangan pindah sampai Anda sudah melakukan hal-hal itu.

jhocking
sumber
1
+1 Kalahkan saya! Kedengarannya seperti Anda baru memulai sehingga lebih penting untuk membuat barang sebanyak mungkin dan belajar, belajar belajar. Saat Anda menjadi lebih baik, Anda dapat fokus pada semir. Kalau tidak, Anda akan menghabiskan 2 tahun di game pertama Anda.
NoobsArePeople2
1
Tidak setuju. Anda dapat menghabiskan sepuluh tahun coding dan tidak pernah mengirimkan satu game pun. Atau Anda bisa mengirimkan klon arkanoid sederhana dalam enam bulan pertama. Saya merasa yang terakhir membuat Anda menjadi pengembang yang lebih kuat secara keseluruhan, sedangkan yang pertama hanya membantu keterampilan dev perangkat lunak Anda (dan tidak sebanyak itu - Anda tidak pernah memikirkan alat, siklus hidup, dll. Hanya coding).
ashes999
Yah saya tidak mengatakan 10 tahun sekarang kan? Namun, pertanyaannya adalah apakah menghabiskan satu tahun mengkodekan sekelompok latihan sebelum proyek lengkap 6 bulan lebih baik daripada langsung melakukan proyek lengkap 6 bulan sebagai proyek pertama Anda. Ini adalah pertanyaan utama dalam pengajaran yang saya lakukan; apakah lebih baik bagi siswa untuk menghabiskan satu semester mengerjakan sejumlah proyek kecil atau satu proyek besar yang mengambil seluruh kelas? Secara pribadi saya condong ke "banyak proyek kecil untuk sarjana, satu proyek besar di sekolah pascasarjana".
jhocking
Pendirian saya adalah bahwa, sama pentingnya dengan proyek yang lengkap, agar proyek itu berhasil, Anda harus terlebih dahulu mempelajari dasar-dasar pada banyak proyek sebelumnya.
jhocking
1
Yang mana 2 jawaban sebelumnya? Sampai sekarang, ini berada di peringkat # 2, dengan suara
ADB
5

Saya pikir Anda memiliki ide yang tepat bahwa Anda harus pindah ke proyek berikutnya sekarang. Saya pikir ini karena Anda sudah belajar dari yang pertama dan ingin menerapkan apa yang telah Anda pelajari! Setelah Anda memperlambat mempelajari dasar-dasar maka itu akan menjadi waktu untuk mengkloning fitur yang lebih dalam yang dapat Anda pelajari terus.

Ingatlah bahwa Anda bekerja pada keterampilan pemrograman, bukan desain game, jadi Anda ingin akhirnya bisa memprogram desain game apa pun ketika Anda selesai belajar.

Patrick Hughes
sumber
3
Sementara saya setuju dengan @ ashes999 dan Anda sama, saya merasa bahwa dalam konteks yang dinyatakan OP, dia bereksperimen dengan implementasi, belajar menulis berbagai jenis permainan. Dalam hal ini saya pikir dia harus mendukung pindah ke hal berikutnya.
Insinyur
Sebenarnya, dia menyiratkan bahwa dia ingin belajar desain game dan tidak hanya pemrograman game. Dalam kalimat terakhirnya ia berkata "cara paling efektif untuk belajar bagaimana membuat game sendiri (bukan mengkloning ide seseorang)".
jhocking
2

Mengapa tidak membuat klon "milikmu"? Tambahkan beberapa tikungan menarik baru yang akan membuat Anda tertarik.

Ada sisi positif untuk memulai proyek "Anda sendiri", Anda merasa seperti belum pernah dilakukan sebelumnya. Kenyataannya adalah seseorang mungkin sudah memiliki sesuatu yang serupa. Kecuali jika Anda berencana untuk menciptakan genre baru game, saya sarankan menjadikan "klon" ini sebagai milik Anda.

Contoh, teman saya di perguruan tinggi menciptakan "klon" pong. Dia membuatnya menjadi miliknya, menambahkan jenis gameplay yang sama sekali baru di mana power-up memungkinkan seseorang untuk mengendarai tangki yang manis sekitar selama 15 detik dan menghancurkan batu bata sebanyak mungkin!

Cara terbaik untuk belajar pengembangan game (seni, kode, desain) adalah dengan melakukannya saja. Anda mungkin tidak melakukannya dengan baik pada awalnya tetapi kuncinya adalah terus melakukannya dan menulis lebih banyak kode, menggambar lebih banyak animasi, dan merancang lebih banyak level !! Menurut pendapat saya, tidak masalah jika Anda "mengkloning" sesuatu selama Anda membuatnya sendiri, terus melakukannya, buat itu menarik, dan bersenang-senanglah!

KRB
sumber
2

Untuk menjawab pertanyaan Anda, ya , memoles proyek Anda saat ini akan menjadi pengalaman belajar yang lebih baik daripada memulai yang baru.

1) Anda harus membiasakan diri menyelesaikan sesuatu. Itu sendiri adalah pengalaman belajar.

2) Tugas-tugas yang Anda "terlalu malas untuk ditambahkan" (karena tidak ada istilah yang lebih baik) mungkin memiliki banyak pelajaran dev permainan yang tertanam di dalamnya, yang hanya Anda lewatkan begitu saja.

3) Jika Anda bosan dengan Arkanoid, Anda selalu dapat menyisihkannya dan mengerjakan sesuatu yang lain untuk saat ini. Tidak ada yang salah dengan itu.

1) Terlalu banyak hal yang belum selesai itu buruk. Anda tidak dapat benar-benar menggunakan produk yang belum selesai untuk memamerkan keterampilan Anda secara efektif.

Ini karena memiliki sederetan barang yang belum selesai seperti memiliki lemari penuh sampah. Beberapa di antaranya terlihat berguna, tetapi pada kenyataannya itu semua sangat tidak berguna, dan realitas industri game adalah, sedikit yang akan menghargai "sampah" Anda (game yang belum selesai).

Game yang belum selesai terlalu umum. Orang-orang meletakkannya di sana dan seperti, "huh, game ini dulunya adalah StreetFighter .. sekarang Anda bisa bergerak bolak-balik .." Tidak mengesankan . Tidak ada yang bisa melihat di kepala Anda seperti apa permainan itu "sapposa". Mereka hanya melihatnya apa adanya, belum selesai.

Gim yang belum selesai seperti tart setengah matang. Beberapa orang mungkin bisa menghargai itu, tetapi rasanya benar-benar menjijikkan, dan 20 menit lebih dalam oven bisa membuat apa yang sudah Anda lakukan setengah lezat untuk semua orang.

2) Fitur yang Anda hindari untuk dikerjakan mungkin memiliki beberapa pelajaran yang sangat berharga di dalamnya.

Hal-hal yang Anda menolak untuk menyelesaikan:

Fitur yang tidak diimplementasikan:

  • Power-up saat memecahkan batu bata.
  • Batu bata kompleks (dengan lebih dari satu "titik hit" dan tak terkalahkan).
  • Grafik yang lebih baik (saya tidak begitu pandai).
  • Pemolesan pemrograman (gunakan pola desain lebih intensif).

Beberapa hal ini dapat Anda tinggalkan. Misalnya, "Gunakan pola desain lebih intensif". Refactoring seperti ini adalah buang-buang waktu untuk proyek kesayangan, untuk menerapkan ini Anda harus memulai proyek baru.

Beberapa di antaranya mudah. Misalnya batu bata kompleks. Beberapa di antaranya sebenarnya banyak pekerjaan . Powerups tidak mudah, mereka mengharuskan Anda untuk fitur membangun hal-hal seperti senjata, peluru, akan membutuhkan penambahan kode persimpangan-ray.

Saya pikir apa yang Anda lihat adalah "menempatkan perancah pada tempatnya sangat mudah .. dan terlihat sudah hampir selesai. Menyelesaikan akan menjadi pekerjaan yang banyak, mungkin juga berhenti sekarang." Ya, mendirikan bingkai kayu untuk sebuah rumah juga "mudah", dan mungkin hanya setengah dari pekerjaan. Drywalling, listrik, pipa ledeng, semuanya "detail". Tetapi dengan tidak menyelesaikan rumah, tidak ada yang akan "membeli" betapa hebatnya rumah itu - seandainya saja Anda menyelesaikannya.

3) Jika Anda bosan dengan apa yang sedang Anda kerjakan, tidak ada salahnya memulai sesuatu yang lain.

Ini tidak berarti sampah apa yang sedang Anda kerjakan, tetapi tidak ada salahnya menghabiskan satu atau dua bulan memikirkan hal-hal lain atau memulai permainan baru. Anda dapat kembali ke Arkanoid dengan perspektif yang segar.

Juga poin terakhir. Selain membangun semua fitur yang diharapkan dari Arkanoid, itu bahkan lebih menarik untuk menempatkan sentuhan Anda sendiri di atasnya. Jadi, daripada berhenti mengkloning, Anda harus mengambil langkah lebih jauh dan berinovasi pada gim asli.

bobobobo
sumber
1

Jawaban yang benar sangat tergantung pada apa yang ingin Anda lakukan selanjutnya. Jika Anda pindah ke sesuatu yang baru Anda mungkin berisiko menemukan diri Anda memecahkan masalah lama yang sama lagi dan tidak benar-benar memperluas keterampilan Anda, tetapi Anda bisa pindah ke sesuatu yang baru. Jika Anda terus memoles ada hal-hal berguna untuk dipelajari dari daftar singkat yang Anda berikan, dan itu akan membuat Anda bagus di masa depan, tetapi Anda masih mengerjakan basis kode lama yang sama.

Apa yang saya rekomendasikan, dan ini murni pendapat pribadi, adalah beralih ke sesuatu yang baru dan menyimpan semir untuk itu. Pada saat yang sama cobalah meregangkan diri Anda dengan sesuatu yang baru. Jadi, jika saat ini Anda tidak menggunakan API 3D, pelajari dan gunakan. Jika Anda menggunakan satu, pelajari yang lain dan gunakan. Atau naik ke level yang lebih maju di level yang Anda gunakan. Sertakan suara, fisika, atau mesin input yang lebih baik dari awal. Apa pun, apa yang saya lihat sebagai hal yang penting adalah bergerak sedikit di luar zona nyaman Anda saat ini dan membangun lebih banyak keterampilan dan pengetahuan, sambil bersenang-senang melakukannya.

Maximus Minimus
sumber