Apa jenis manajemen proyek yang harus digunakan oleh proyek pengembang solo?

49

Saya bekerja sendiri pada proyek game yang pengembangannya dapat dipisahkan menjadi 3 bagian independen (pembuatan peta, mesin "overworld" dan mesin pertempuran), tetapi seiring perkembangannya, saya tidak yakin bagaimana saya harus berurusan dengan manajemen proyek ini, terutama mengenai 3 poin ini:

  1. Apakah layak menggunakan sistem kontrol versi, karena saya bekerja sendiri?

  2. Haruskah saya menggunakan metode formal untuk mendaftarkan fitur / bug yang direncanakan (Saya hanya ingat apa yang perlu dilakukan untuk saat ini)

  3. Pertanyaan paling penting: bagaimana saya bisa tahu apa yang harus dikembangkan terlebih dahulu? Sekarang dasar-dasarnya sudah selesai, saya tahu daftar fitur untuk kode tetapi saya tidak tahu dalam urutan mana saya harus melakukannya.

lezebulon
sumber
39
1) ya, ya, ya dan ya ; Saya benar-benar berharap tidak ada yang memberi tahu Anda untuk tidak menggunakan VCS.
sam hocevar
3
Ada berbagai masalah yang mengarah ke kontrol versi sebagai suatu keharusan: (a) Gagasan dasar cadangan jika salinan lokal Anda dihancurkan, dan (b) Gagasan bahwa kode dan aset yang Anda timpa belum tentu merupakan hal yang Anda ingin kehilangan untuk kebaikan (yang pada intinya (a), karena menimpa adalah mekanisme yang merusak). Ada juga (c), yang terkait dengan (b): Anda mungkin ingin bercabang, untuk mencoba pendekatan yang berbeda. Saya bercabang cukup sering ketika mengerjakan kode kritis kinerja, karena ini membantu saya untuk membuat profil berbagai pendekatan tanpa kehilangan posisi saya dalam pendekatan lain.
Insinyur
Saya yang kedua komentar dari @Sam - selalu menggunakan kontrol versi. Saya tahun dari sekarang Anda akan senang Anda lakukan. Ada banyak sistem VCS dan DVCS yang di-host murah / gratis yang juga berfungsi untuk memberi Anda cadangan di luar kantor. Saya menyematkan warna saya ke tiang Subversion tetapi jika saya mulai dari awal saya pikir saya akan menggunakan Mercurial.
Tim Long
1
Masing-masing dari pertanyaan ini harus merupakan pertanyaan yang terpisah, karena mereka benar-benar topik yang terpisah.
Tetrad

Jawaban:

59

Saya akan menggunakan:

1. Manajemen kode

GIT (dan referensi yang luar biasa ), manajer kode sumber terdistribusi, untuk mengelola kode saya, dan menyimpannya di GitHub sebagai proyek pribadi jika saya ingin menjaganya tetap terlarang.

(Ada BANYAK pilihan di sini, hanya google untuk manajemen kode sumber, Anda bahkan TIDAK PERLU menggunakan GitHub atau situs web lain, Git akan bekerja dengan baik di komputer lokal Anda, tetapi menggunakan GitHub akan membuat sakit mengelola cadangan) jauh lebih mudah.

Jika Anda memiliki dua komputer, Anda dapat membuat repositori di komputer yang akan Anda panggil mesin cadangan Anda, lalu Anda mengkloning repositori itu melalui jaringan lokal dan menggunakannya untuk pengembangan, ketika Anda selesai dengan fitur, Anda bisa mendorongnya ke mesin cadangan dan Anda akan memiliki cadangan 1: 1!)

2. Manajemen Masalah & Fitur

Saya akan menggunakan manajemen masalah bawaan Trello atau GitHub untuk melacak bug dan hal-hal yang harus dilakukan.

3. Memiliki Proses Desain

Saya akan merancang game saya terlebih dahulu;

  1. pertama di pikiranku,
  2. lalu di atas kertas,
  3. maka mungkin gunakan GameMaker atau PyGame untuk membuat prototipe ide saya, dan ulangi lebih dari 1-3 sampai saya memiliki sesuatu yang saya sukai bermain.

4. Gunakan Prototipe saya sebagai Panduan dan Kembangkan Game saya

Kemudian saya akan menyingkirkan prototipe saya dan memilih platform yang ingin saya kembangkan. Kemudian cari mesin yang ada dan pilih yang paling cocok untuk ide gim saya. Kemudian saya akan membuat tujuan yang jelas untuk proyek saya, menyusunnya menjadi tugas-tugas kecil dan kemudian mulai bekerja untuk menyelesaikan tugas. Ketika Anda telah mencapai kondisi ini, kemungkinan besar Anda akan menemukan bahwa Anda memiliki cara kerja sendiri yang paling cocok untuk Anda, jadi ikuti saja!

Ada beberapa metodologi / filosofi yang berbeda yang dapat Anda terapkan pada gaya pengembangan Anda, XP, Waterfall, dll. Hanya pergi dengan yang Anda rasa membuat Anda maju tercepat.

5. Memiliki banyak Penguji Game!

Ketika Anda memiliki sesuatu yang dapat dimainkan, mintalah teman dekat Anda untuk mencobanya! Permudah mereka untuk membantu Anda dengan mengatur paket penginstal cepat jika mereka menjalankan Windows atau menulis beberapa skrip shell yang dapat mengotomatiskan proses untuk mereka jika mereka menggunakan Linux / Mac. Berhati-hatilah dengan umpan balik dari penguji Anda, dan jangan lupa untuk memberi tahu mereka tentang desain game Anda dan jenis permainan apa yang Anda coba buat.

6. Buat situs web untuk permainan saya

Segera setelah saya memiliki sesuatu yang berjalan dengan baik, saya mungkin akan membuat situs web untuk permainan saya - untuk menjaga kreativitas dan konten saya mengalir ketika itu tidak dapat diterapkan pada kemajuan permainan saya, misalnya, jika saya fokus pada studi saya atau butuh istirahat dari pengembangan!

Jika saya menggunakan GitHub , saya akan mengatur halaman proyek untuk game saya, atau meng-host blog WordPress / Jekyll atau yang serupa dan menulis posting saya dengan itu.

Ini akan membuat Anda tetap termotivasi dan memiliki tempat untuk merujuk calon gamer / penguji!

7. Bergabunglah dengan kontes

Ada banyak kontes dev game yang terjadi hampir sepanjang waktu. Saya akan mencoba untuk bergabung dengan salah satu dari ini dengan permainan saya jika aturan mengizinkan. Ini meningkatkan motivasi dan membuat segalanya lebih menyenangkan - siapa yang tidak suka menang!

(Jika Anda berkembang di bawah tenggat waktu yang ketat, Anda dapat melewati titik ini setidaknya.)

Zolomon
sumber
1
Jawaban yang bagus. Saya sarankan FogBugz untuk pelacakan masalah. Ini gratis untuk pengembang solo (seperti saya).
notlesh
2
Banyak +1 yang layak, tetapi saya hanya bisa memberikan satu.
chaosTechnician
Menggunakan GIT / hg / yang lain dengan Dropbox membuat keajaiban.
zeroDivisible
14

Saya akan sangat menyarankan menggunakan sistem kontrol versi, bahkan jika Anda bekerja sendiri. Ini dapat menghemat banyak waktu, begitu Anda tidak sengaja menghapus sesuatu atau membuat perubahan lebih besar, hanya untuk menyadari kemudian itu adalah ide yang buruk dan Anda harus membatalkan perubahan.

Sunting : Ada banyak solusi kontrol sumber gratis.

  • Saya telah menggunakan Server VisualSVN , yang mudah diatur dan digunakan di Windows.

  • Ada juga alternatif online seperti Codeplex (dengan SVNatau Mercurial), SourceForge atau Google Code . Sisi baiknya adalah Anda tidak perlu mengatur dan mengelola repositori dan data Anda ada di cloud; yang menarik adalah, Anda tidak dapat dengan bebas meng-host proyek sumber tertutup.

Adapun pelacakan bug dan fitur: Jika Anda sudah memiliki audiens yang lebih besar yang mungkin tertarik untuk menguji beta game Anda, melaporkan bug dan meminta fitur, silakan.
Namun, jika hanya ada segelintir orang (atau tidak sama sekali), itu tidak perlu.

Dan untuk prioritas pembangunan - itu untuk Anda putuskan. Siapa yang seharusnya lebih tahu apa yang harus dilakukan dalam suatu proyek daripada satu-satunya pengembangnya?

ver
sumber
1
1 SVN sangat berharga saat hard drive Anda tergores, Anda menghapus file yang salah, dll, dll.
Valmond
5
Masalah dengan banyak VCS di atas adalah bahwa mereka bersifat publik. Jika Anda ingin hosting pribadi gratis, periksa assembla.com .
ClassicThunder
12
bitbucket.org mendukung repositori pribadi
o0 '.
1
@ClassicThunder Saya mengatakan itu di posting saya. Juga, terakhir kali saya memeriksa, assembla tidak terlihat bebas untuk proyek pribadi. Apakah ada yang berubah sementara itu? (Saya ragu itu, tetapi Anda tidak pernah tahu.)
ver
1
Anda dapat mengatur repositori SVN pribadi pada HDD Anda sendiri jika diinginkan. Itu akan jauh lebih baik daripada tidak ada VCS sama sekali ... Berapa banyak jawaban duplikat, OMG ..
Kromster berkata mendukung Monica
7

Apakah layak menggunakan sistem kontrol versi, karena saya bekerja sendiri?

Aku pikir begitu. Cukup sepele untuk diatur dan saya sudah berkali-kali menjadi gila dengan refactoring atau melakukan sesuatu yang bodoh dan kemampuan untuk mengembalikan perubahan saya telah menghemat banyak waktu. Plus jika di-host di server maka Anda memiliki cadangan kode kami jika terjadi kesalahan .

Haruskah saya menggunakan metode formal untuk mendaftarkan fitur / bug yang direncanakan (Saya hanya ingat apa yang perlu dilakukan untuk saat ini)

Saya pikir itu tidak perlu. Saya akan menyimpan daftar tertulis tentang apa yang ingin Anda lakukan walaupun hanya untuk memastikan Anda tidak melupakan bug kecil, ditambah lagi saya merasa ini membantu Anda memulai lagi setelah istirahat dari pengkodean.

Pertanyaan paling penting: bagaimana saya bisa tahu apa yang harus dikembangkan terlebih dahulu? Sekarang dasar-dasarnya sudah selesai, saya tahu daftar fitur untuk kode tetapi saya tidak tahu dalam urutan mana saya harus melakukannya.

Ambil daftar itu di atas, tutup mata Anda, dan aduk secara acak. Kerjakan fitur apa pun yang Anda gunakan. Kecuali jika item saling bergantung satu sama lain, itu lebih penting hanya untuk menjaga agar alurnya tetap berjalan daripada memastikan segala sesuatu terjadi dalam urutan tertentu.

Klasik
sumber
5

Jelas menggunakan kontrol versi

Kontrol versi seperti jaring pengaman untuk pejalan tali ketat: ini membebaskan Anda untuk mencoba hal-hal gila. Refactor besar menghapus potongan kode besar tidak masalah jika Anda dapat dengan mudah kembali. Apalagi jika Anda menggunakan cabang eksperimental di repo Anda dan dapat memutuskan untuk tidak menggabungkannya kembali.

Jika Anda tidak memiliki kebebasan seperti ini, Anda cenderung meninggalkan kode komentar di mana-mana karena takut Anda mungkin membutuhkannya.

Saya akan memilih Git. Sintaksnya agak aneh, tetapi dua hal hebat tentang itu adalah:

  • Overhead rendah . Ubah ke dalam folder dan ketik git initdan Anda siap untuk mulai memeriksa hal-hal. Jika Anda memutuskan untuk tidak mengontrol versi setelah semua, rm -rf .gitdi folder itu dan itu bukan repo Git lagi.
  • Didistribusikan melalui SSH . Git didistribusikan, artinya Anda dapat memiliki beberapa salinan lengkap dari repo Anda (semua riwayat, dll) di berbagai tempat, dan menyimpannya dalam sinkronisasi. Anda dapat mengatur repo Git lain di mesin mana pun di mana Anda memiliki akses SSH, lalu menambahkan repo lain itu sebagai remote. Setelah itu, kapan saja Anda ingin mencadangkan hanya git pushke repo itu.

    Itu keuntungan besar dibandingkan, katakanlah, Subversion, di mana seluruh repo tinggal di satu mesin dan mesin itu harus menjalankan server Subversion.

Mercurial mungkin memiliki poin yang sama ini, tetapi saya belum menggunakannya.

Nathan Long
sumber
3
  1. Iya! Karena Anda bertanya, saya menduga Anda telah diadopsi dengan baik dengan sistem kontrol revisi. Ini suatu keharusan!

  2. Mengenai pertanyaan kedua Anda, ada metode formal untuk mendaftarkan bug dan Anda harus menggunakannya. Untuk fitur perencanaan saya pikir mengambil rute yang kurang formal tidak akan sakit (ketika Anda bekerja sendirian)

  3. Lakukan fitur-fitur itu terlebih dahulu yang akan membuat game Anda menjadi hidup. Berikan gambaran bagaimana permainan terakhir akan terjadi.

Quazi Irfan
sumber
3

1) Ya tentu saja. Saya merekomendasikan Mercurial via BitBucket dan TortoiseHg. BitBucket gratis untuk hingga 5 pengguna dan karena dihosting di cloud, ini menambah sedikit pemikiran (tidak perlu cadangan).

2) Bug harus diperbaiki sebelum menerapkan fitur baru. Saya akan menggunakan daftar TODO yang mudah diakses untuk melacak hal-hal - tertunda / selesai. Anda mungkin hanya menggunakan file teks biasa, tapi jangan lupa untuk menambahkannya ke repositori kontrol sumber Anda.

3) Lakukan apa yang ingin Anda lakukan pada hari tertentu, sambil tetap mengingat bahwa memberikan sesuatu yang dapat dimainkan oleh pengguna akhir adalah tujuan utama. Misal jika Anda lelah mendapatkan fisika yang benar, bekerja merender atau mungkin menambahkan beberapa tes unit yang hilang untuk AI itu.

Potongan pekerjaan harus cukup kecil untuk dilakukan dalam beberapa hari. Sangat penting untuk menjaga diri Anda termotivasi dan menghindari kelelahan.

Jika arsitektur dilakukan dengan benar, Anda harus dapat dengan mudah menambahkan bagian modifikasi dari mesin / game tanpa mempengaruhi banyak orang lain (jika tidak, mulailah dengan beberapa refactoring :).

Sarang
sumber
2

1) Seperti yang dikatakan semua orang: YA (Bahkan saya katakan, sewa yang murah online)

2) Simpan daftar sederhana atau jika proyek Anda tumbuh besar dan Anda mendapatkan penguji beta, instal Mantis Bug Tracker

3) Saya tidak tahu, tapi saya akan memberitahu Anda bagaimana saya melakukannya: Kembangkan hal-hal yang paling tidak mengganggu dan / atau paling sulit. Ulangi sampai semuanya selesai. Dengan begitu pengembangan menjadi lebih lucu dan mudah (dan Anda tidak akan menemukan masalah yang tidak bisa Anda selesaikan jika itu terjadi).

Valmond
sumber
1

Terima kasih telah mengajukan pertanyaan ini. Inilah yang saya lakukan saat ini.

1) Kontrol versi: Ini harus. Saat ini, saya mempertahankan cadangan manual. Bermanfaat setidaknya saat sesuatu yang berfungsi dengan baik tiba-tiba melempar kesalahan (atau tidak berfungsi seperti yang diharapkan). Saya membandingkan versi dan sering menemukan kesalahan konyol (kebanyakan mengomentari sesuatu)

2) Saya membuat dokumen kata dan mendaftar semua fitur yang akan dimiliki permainan saya dalam urutan kategoris dan dengan indentasi multi level yang mendaftarkan sub fitur (dan yang terkait dengan klien / server atau apa pun yang berlaku).

3) Setelah daftar saya dapatkan (yang biasanya tidak lengkap, terus mendapatkan sesuatu ditambahkan ke dalamnya) Saya memikirkan alur permainan saya dan menyoroti semua poin yang diperlukan bagi saya untuk membuat permainan berjalan dan mulai melakukannya. Saya menandai makna kuning bekerja dalam proses. hijau saat selesai. oranye untuk mengindikasikan untuk ditingkatkan atau memiliki beberapa bug yang dikenal

semoga ini membantu

Pengembang Game Noob
sumber
0

1.) Perlu menggunakan kontrol versi untuk proyek apa pun. Bahkan yang sangat kecil jika Anda sudah tahu cara menggunakannya. Saya telah menggunakan Subversion selama bertahun-tahun di Linux dan Windows dengan TortoiseSVN . Bahkan ketika membuat proyek kecil (<500 baris) saya akan membuat repositori untuknya sehingga saya dapat membatalkan perubahan, melacak apa yang saya lakukan jika saya meninggalkan proyek untuk sementara waktu, dll.

2.) Tergantung pada seberapa besar proyek akan menjadi. Jika Anda berencana untuk bermain-tes dengan tim dan mendistribusikan, mungkin ada baiknya memiliki sistem pelacakan bug. Saat ini saya bekerja sendiri (walaupun saya memiliki seorang artis) pada proyek yang melebihi 20k baris, dan saya hanya menyimpan daftar tugas saya dalam file teks yang juga ada dalam repositori SVN saya. Meskipun saya belum memiliki kebutuhan untuk membaginya dengan orang lain, jadi tidak memiliki pelacakan bug cocok dengan kebutuhan saya untuk saat ini. Saya tidak akan khawatir tentang hal itu sampai ada kebutuhan. Hal terburuk yang dapat terjadi adalah Anda harus memasukkan bug apa pun yang sudah Anda tulis dan menghapus / merevisi bug yang Anda perbaiki. Saat Anda mulai kehilangan jejak mental catatan Anda, dapatkan pelacak bug.

3.) Letakkan di atas kertas. Mulailah dengan apa yang Anda inginkan, jadi tuliskan intinya. Kemudian memecahnya menjadi apa yang diperlukan untuk membuatnya: deteksi tabrakan? kode jaringan? tipe pemain dan monster? hierarki kelas? Bekerja mundur dari visi Anda sehingga Anda mendapatkan ide yang jelas tentang bagaimana membangunnya dari bawah ke atas. Saya kira Anda menggunakan bahasa berorientasi objek. Langkah paling penting dalam memulai adalah membuat hierarki kelas diatur dengan cara yang masuk akal. Cobalah sekuat tenaga Anda untuk sama sekali tidak memiliki pewarisan berganda (meskipun kadang-kadang itu tidak dapat dihindari), plot hubungan kelas dalam editor diagram (saya menggunakan Dia ), dll. Prinsip dasar pergi jauh dalam menghindari sakit kepala nanti.

nol
sumber
Catatan: TortoiseSVN adalah klien khusus Windows untuk Subversion.
zeroth