Dengan game apa sajakah “hasilkan sayapmu”? [Tutup]

305

Saya percaya bahwa untuk menjadi pengembang game yang baik, Anda harus membuat game.

Dari sudut pandang programmer , apa saja game entry level yang bagus untuk membuat tangan Anda kotor? Keterampilan dan tantangan apa yang diajarkan masing-masing game ini kepada Anda?

Drew
sumber

Jawaban:

217

Breakout

Gim yang mudah karena Anda tidak perlu khawatir (ini adalah susunan nilai bata - jika Anda hanya memiliki satu warna bata, ini adalah susunan bendera), tidak ada AI, dan Anda bisa melakukan sedikit fisika untuk membuat bola memantul dengan benar.

Solitaire

Aturannya sedikit lebih kompleks daripada Breakout dan antarmuka untuknya jauh berbeda. Ini memaksa Anda untuk berpikir tentang berbagai metode penerapan permainan. yaitu, apa yang berhasil di satu game belum tentu apa yang akan Anda gunakan di game lain.

Pac-Man

Yang ini bagus karena Anda bisa mengerjakan sedikit AI. Memiliki hantu mengikuti pemain (tetapi tidak terlalu baik - Anda ingin pemain memiliki kesempatan) dapat dengan cepat dilaksanakan, dan Anda akan memiliki permainan kecil yang menyenangkan yang dapat Anda tweak dan pamerkan ke teman dan keluarga (umpan balik positif selalu hal yang baik ketika Anda memulai).

Saya menemukan bahwa jika Anda mencari inspirasi dalam permainan video awal, Anda dapat menemukan banyak ide yang relatif mudah diterapkan. Selain itu, Anda dapat pergi dengan karya seni dan suara super sederhana karena Anda menyalin sesuatu yang begitu sederhana. Ini memungkinkan Anda untuk fokus pada hal-hal dasar terlebih dahulu - membuat loop game Anda aktif dan berjalan, mencari tahu cara mendapatkan piksel Anda ke layar, memainkan suara, menjaga skor, memasukkan input pemain ke dalam game.

Hampir benar-benar tidak masalah permainan mana yang Anda pilih pertama - pastikan Anda memilih sesuatu yang sederhana yang dapat Anda peroleh dengan cepat, dengan cara itu Anda dapat bergerak pada hari berikutnya dan membuat yang lain. Dan satu lagi. Dan lainnya - semakin banyak yang Anda hasilkan, semakin Anda akan mendorong diri sendiri, dan akhirnya Anda akan membuat game yang kompleks sebelum Anda menyadarinya.

Dennis Munsie
sumber
49
+1 di Breakout. Saya memiliki banyak pengembang game PRO yang memberi tahu saya bahwa setiap kali mereka mendapatkan teknologi baru, mereka mempelajarinya dengan terlebih dahulu membuat Breakout.
Jeff
2
+1 Breakout adalah game pertama yang saya buat =). Juga, saya setuju untuk mencoba membuat ulang video game awal (dengan tikungan Anda sendiri!). Fokus pada konsep, bukan aset.
user384918
16
@PhillC, tidak, tidak layak untuk dibelah
Simurr
13
Anda lupa tetris: itu adalah game kedua yang saya laksanakan kembali di sekolah tinggi :)
Emiliano
2
bisakah kalian memberikan tautan ke pelarian Anda? Saya menyukai permainan itu dan ingin mencoba semua remake
fent
256

Saya sangat merekomendasikan bahwa programmer pemula harus memulai dengan permainan paling sederhana yang sebenarnya ingin mereka tulis . Seperti yang disebutkan oleh Matt Rix, sebagian besar dari penulisan game vs demo mendorong hal-hal sialan sampai selesai - kredit, menu, uji coba, skor tinggi, jeda, uji coba, tingkat kesulitan, bersihkan transisi kondisi permainan, mainkan menguji, dll. Hal itu membutuhkan setidaknya setengah dari waktu yang akan Anda habiskan dan itu tidak menyenangkan. Bukan itu. Jadi, kecuali Anda menyukai konsep dan benar-benar termotivasi, Anda akan menyerah dan melanjutkan sebelum permainan adalah permainan .

Jika Anda ingin menulis RPG, cari konsep RPG paling sederhana dan paling mudah dikelola yang bisa Anda buat dan ingin Anda lakukan dan lakukan. Sama jika Anda ingin melakukan sci-fi shooter, atau platformer bertema horor, atau apa pun. Pilih sesuatu yang akan Anda selesaikan, yang masih ingin Anda selesaikan setelah semua kesenangan dilakukan tetapi Anda masih melihat lusinan jam kerja sebelum Anda benar-benar selesai.

Game terbaik untuk "mendapatkan sayapmu" dengan? Yang Anda selesaikan. Saya tidak peduli berapa banyak demo PONG / Breakout / Galaga / Tetris yang sudah setengah jadi yang telah Anda tulis, Anda bukan pengembang game sampai Anda telah merilis game yang benar-benar selesai.

Ditambah lagi, tidak ada yang mau memainkan versi lain dari game yang berusia 40 tahun itu, dan setidaknya beberapa poin dari penulisan game adalah untuk dimainkan orang , bukan?

Bob Montgomery
sumber
3
Saya ingin tripple memilih jawaban ini!
Iain
2
+1 untuk komentar tentang benar-benar merilis game. Menjalankan dan menjalankan game hanya sekitar 30% dari prosesnya, IMO. Terus-menerus mengulangi mekanika, memoles segala sesuatu agar terlihat rapi, mengejar bug-bug jahat yang hanya terjadi dalam skenario yang sangat spesifik dan benar-benar bisa fokus hanya pada apa yang perlu dilakukan adalah 70% lainnya.
Dennis Munsie
1
+1 untuk mengatakan apa yang ingin saya katakan. Game pertama saya adalah palmgadget.com/palmgo.html Ini bisa dilakukan karena saya suka game Go dan saya benar-benar menggunakannya untuk merekam game saya di klub. "Scratching Your Own Itch" dulu.
ohho
16
Saya suka saran ini, tetapi bisa berbahaya. Lagipula, mentalitas inilah yang menyebabkan banyak orang pergi ke forum pengembang game dan berkata, "Aku belum pernah membuat game sebelumnya, aku akan memulai MMORPG." Saya akan mengatakan Anda harus mulai dengan permainan yang Anda nikmati dari pilihan terbatas proyek pemula yang baik. Jadi, seperti, jika Anda benar-benar membenci Tetris maka baiklah jangan lakukan itu. Tapi lakukan Breakout sebagai gantinya, bukan sembarang game acak yang menarik bagi Anda.
jhocking
185

Saya memposting tangga ini di TIGsource beberapa waktu lalu. Mulai dari yang sangat mendasar hingga yang sangat kompleks.

  • "Tebak angka" / Hangman (antarmuka dasar, pilih data dari database)
  • Tic-Tac-Toe / Rock-Paper-Scissors (gameplay berbasis giliran, AI lawan)
  • Arkanoid / Pong (tabrakan, frame rate stabil, skor, level)
  • Tetris (struktur data dan bagaimana kaitannya dengan game)
  • 1942 / Shoot-em-up (musuh, peluru)
  • permainan platformer / pinball sederhana jika mesin Anda melakukan platformer (tabrakan berbasis gravitasi)
  • Bomberman / Pacman (gerakan berbasis ubin, AI musuh kompleks)
  • Permainan dua pemain dari salah satu tipe di atas (dua input pemain)
  • Roguelike / Diablo (Manajemen inventaris, beberapa AI musuh, menyimpan dan memuat status game yang kompleks)
  • Faceball / Wolfenstein 3D (gerakan dan rendering 3D dasar)
  • Game berbasis jaringan turn (jaringan dasar)
  • Gimmicky 3D platformer orang ketiga (fisika, gerakan 3D kompleks)
  • Game real-time jaringan (Sinkronisasi server-klien, lag)
  • MMORPG (Dunia persisten)
zaratustra
sumber
7
Anda bisa menjelaskan apa yang seharusnya Anda pelajari di sini. Catatan singkat Anda tidak terlalu deskriptif / membantu.
SpoonMeiser
57
Meskipun itu yang terakhir, saya pikir MMORPG perlu melangkah lebih jauh. Daftar yang luar biasa. +1
は る と
6
Daftar hebat, meskipun saya pikir seluruh aspek tangga rusak setelah Pacman. Pada titik itu Anda cukup tahu untuk pergi dan melakukan segala jenis permainan; Saya tidak berpikir Anda perlu mengembangkan Diablo sebelum Anda mengembangkan Wolfenstein. Semuanya sampai Pacman harus Anda lakukan secara berurutan.
jhocking
5
"Persistent world" reeeeally meremehkan perbedaan antara MMORPG dari opsi sebelumnya.
Malabarba
1
Anda dapat menangani "Persistent World" di non-MMORPG juga (mis., Roguelike).
ashes999
64

Aturan terpenting dalam mempelajari pemrograman game: belajar pemrograman itu sulit. Belajar desain game itu sulit. Mempelajari cara membuat seni permainan atau audio yang baik itu sulit. Mencoba melakukan semua hal ini pada saat yang sama adalah resep kegagalan. Pelajari satu hal sekaligus.

Konsekuensi: memprogram permainan di mana desain, seni, dan suara sudah dilakukan. Buat klon, bukan gim asli.

Di kelas saya, saya selalu merekomendasikan game ini untuk memulai, dalam rangka:

1) Tetris. Seni ini berwarna empat persegi panjang, yang bahkan dapat ditampilkan secara total oleh Microsoft Paint. Anda tidak butuh suara. Pemrogramannya relatif sederhana, tetapi masih memerlukan beberapa hal utama: memahami perbedaan antara kondisi permainan internal dan apa yang digambar di layar; bisa menggambar di layar, titik (mungkin melibatkan sprite dan blitting); bisa menerima input pengguna secara realtime daripada hanya menggunakan getch () atau scanf () di mana Anda harus menunggu mereka.

2) Breakout / Arkanoid. Seni masih berwarna persegi panjang, dan Anda masih tidak perlu suara. Menggunakan semua konsep dasar Tetris, ditambah beberapa deteksi tabrakan dasar dan fisika 2D karena bola harus bergerak dan melambung dengan lancar.

3) Gradius / Tipe-R. Anda mungkin dapat menemukan beberapa tilesets freeware untuk membuatnya. Di sini latar belakang sedang bergulir, jadi Anda harus belajar lebih banyak tentang cara kerja memori grafis, menggunakan teknik seperti membalik halaman dan buffering ganda dan menggambar hal-hal di luar batas layar yang terlihat. Anda juga cenderung memiliki musuh yang dinamis dan memunculkan peluru, jadi Anda harus belajar untuk membersihkan diri sendiri (yaitu menyingkirkan musuh dan peluru yang meninggalkan layar sehingga permainan Anda tidak membocorkan memori seperti saringan).

4) Super Mario Bros. Mirip dengan proyek gulir sebelumnya, kecuali gulir sekarang di bawah kendali pemain dan tidak otomatis. Anda juga harus berurusan dengan gravitasi dan semua hal tabrakan seru yang menyertainya (seperti tidak jatuh ke lantai hanya karena Anda beberapa piksel di atas dalam bingkai terakhir dan ingin pindah ke beberapa piksel di bawah di bingkai berikutnya) ). Juga perhatikan bahwa gravitasi bersyarat: itu mempengaruhi pemain dan beberapa musuh, tetapi biasanya bukan platform atau koin mengambang atau apa pun, yang sedikit berbeda dari dunia nyata.

Jika Anda dapat melakukan keempatnya, Anda harus dapat melakukan hampir semua game 2D yang Anda inginkan; semua alat ada di sana. Jika Anda ingin membuat game 3D ... pelajari 2D terlebih dahulu karena jauh lebih mudah dan Anda tidak perlu memahami matematika secara mendalam dan Anda perlu memahami hal-hal 2D ... dan kemudian ketika Anda nyaman dengan itu, mulai bekerja dengan beberapa alat 3D dasar (baik perpustakaan seperti Torque atau Unity, atau game open-source seperti Doom and Quake yang asli).

Semoga berhasil!

Ian Schreiber
sumber
39

Sekarang ini adalah pertanyaan bagus yang sebenarnya. Saya tidak tahu di mana Anda berada, jadi saya akan berayun ke langit, dan menganggap Anda tidak pernah menulis sederet kode dalam hidup Anda. Potong bagian hidung apa pun yang menyinggung Anda, hingga menyalahgunakan frasa.

Saya pikir saya sebenarnya akan menjawab pertanyaan yang sedikit berbeda dari apa yang Anda tanyakan, dan saya akan memberikan contoh untuk memuaskan pertanyaan yang Anda ajukan di tempat. Alasan saya melakukannya dengan cara itu sedikit, tetapi saya percaya perbedaan yang signifikan dalam sudut pandang: itu tidak begitu banyak game spesifik yang penting, sebanyak pola pikir yang dibawa game-game itu kepada seorang desainer.

Anda tahu bagaimana orang berbicara tentang Anda seharusnya belajar berbagai bahasa pemrograman, untuk memakan pola pikir dan hati mereka dan hati mereka, dan dengan demikian mendapatkan kekuatan besar mereka? Ada kebenaran nyata untuk itu - setelah bahasa pemrograman murni atau hampir murni pertama Anda, bahkan dalam bahasa imperatif, Anda akan akhirnya menulis sebagian besar fungsi bebas efek samping karena mereka jauh lebih baik didefinisikan, dan semua yang Anda tulis bahkan dalam bahasa bukan bentuk itu akan lebih baik untuk itu. Tidak masalah apa bahasa itu - haskell, ml / ocaml / smlnj, formulaONE, templat c ++, apa pun - Anda masih akan belajar bagaimana melakukan banyak kelas pekerjaan tanpa mengandalkan status efek samping. Pertama kali Anda belajar bahasa pemrograman yang kasar dan dekat dengan mesin, Anda kita akan belajar tentang abstraksi tipe ukuran. Pertama kali Anda belajar bahasa deklaratif atau kendala, Anda akan belajar tentang batasan sebagai alat diskresioner. Pertama kali Anda mempelajari bahasa penelusuran yang mundur, Anda akan belajar berdoa Ia! Ia! C'thulhu F'tagn Nagn !, dan kemudian kita kembali makan hati dan hati, dan lingkaran kehidupan terpenuhi.

Desain game tidak berbeda. Anda tidak perlu belajar game tertentu, secara paralel dengan bahasa tertentu, melainkan mempelajari beberapa game representatif simbolik yang menangani pola pikir itu, seperti keluarga karakteristik bahasa. Juga, ada banyak hati dan hati makan. Dapatkan kerupuk lada.

Gag di sini (seperti yang saya lihat setidaknya) adalah bahwa Anda ingin membahas daftar besar topik. Ini seperti menandai keahlian pada lembar karakter - Anda membuat lebih banyak mekanisme untuk menangani situasi tertentu bagi Anda. Ya, mereka mampu level, tetapi memiliki satu atau dua poin dalam banyak hal yang Anda bisa di seluruh papan berarti bahwa ketika tiba saatnya untuk menggunakan satu, Anda tidak memulai dari awal, dan Anda tahu taktik apa yang tersedia bagi Anda untuk meningkatkan.

Jadi, lihat.

Pertama, Anda ingin memotong gigi. Ini juga berguna ketika Anda belajar menargetkan platform baru, atau ketika Anda sedang pulih dari amnesia. Ini dimaksudkan untuk menjadi cepat, tidak luar biasa.

Dalam urutan:

  1. Kontrol layar. Bluescreening sangat bagus untuk ini, karena Anda memiliki alasan kuat untuk percaya bahwa Anda sedang dalam perjalanan untuk menjadi Microsoft.
  2. Validasi input. Layar foos, di mana foo berwarna biru untuk atas, merah untuk turun, dll. Periksa semua kunci Anda; ada lebih dari cukup warna, atau Anda dapat memetakan empat warna jika Anda benar-benar perlu menyimpan crimson untuk hal-hal yang lebih penting.
  3. Render teks dan sprite. Karena Anda juga memiliki validasi input, permainan memori ubin bukan ide yang buruk.
  4. Pengatur waktu. Saatnya untuk klon Mario atau Arkanoid.
  5. Suara dan musik. Memperbaiki klon mario. Tapi tidak banyak.

Setelah Anda melakukannya, Anda siap untuk menargetkan platform, dan pembelajaran dapat dimulai.

Ini tidak ada urutan tertentu. Anda dapat mengatur ulang sesuai keinginan Anda. Saya akan memberikan beberapa contoh dengan masing-masing, tetapi mereka tidak normatif; jika gim yang berbeda memberi Anda pengalaman yang sama, dan cukup kecil untuk menjadi bagian dari serangkaian pelajaran, jangan ragu untuk menukarnya. Untuk alasan praktis, sebaiknya mahir dalam merender layar dan input relatif cepat; Anda akan sering menggunakannya. Tunggu beberapa game sebelum mencoba menulis kelas abstraksi; Anda tidak ingin terjebak dalam abstraksi yang naif.

  • Animasi. Hampir semua yang Anda lakukan dapat memanggil sprite animasi. Dapatkan mesin animasi independen di bawah ikat pinggang Anda, bahkan jika itu adalah programmer art. Membuat game puzzle sederhana yang ubinnya berdenyut sudah cukup.
  • Penilaian kompleks. Dapatkan semua lima musuh di sayap? Bonus. Mendaratkan tiga pukulan berturut-turut? Bonus. Berhasil melewati seluruh level tanpa melewatkan peluru? Bonus besar.
  • Menemukan jalan. Banyak game yang membutuhkan ini, tetapi game menara pertahanan adalah yang paling sederhana. Anda dapat memulai dengan luas-pertama dan mendalam-pertama jika Anda belum pernah melakukannya sebelumnya, tetapi Anda belum selesai sampai Anda menerapkan A * dari awal (BUKAN COPIED CODE) setidaknya sekali.
  • Perilaku musuh. Perilaku otomatis bodoh akan ditanggung oleh mario Anda, tetapi perilaku reaktif juga penting. Ini adalah alasan yang bagus untuk membangun permainan taktik atau roguelike. (Peringatan: Anda akan bekerja dengan roguelike selama sisa hidup Anda.)
  • Pencahayaan 2d dinamis. Ini juga alasan bagus untuk menulis roguelike. Shadowcasting berbasis busur adalah cara penting untuk melihat banding dan pemisahan, yang pada gilirannya penting untuk seluruh banyak struktur data.
  • Fisika 2d. Ini muncul di banyak game, di banyak level detail. Coba platformer (mario-ish,) yang dapat disederhanakan; permainan tank (scorched-earth-ish,) yang dapat disederhanakan secara merata; dan akhirnya, permainan seperti N the Ninja, yang membuat Anda mengatasi berlari dengan sudut, momentum, dan lain-lain (Anda dapat melakukannya dengan sistem tabrakan kotak pembatas sumbu yang diluruskan dengan cukup mudah.) Fisika dan tabrakan sangat erat terkait.
  • Deteksi tabrakan. Ada kasus-kasus yang sangat sederhana, seperti kotak Arkanoids dan klon Mario, kasus yang cukup kompleks seperti N the Ninja dan kasus yang benar-benar kompleks seperti permainan fisika kotak pasir (mesin yang luar biasa, arkanoid modern seperti BreakQuest, dan lain-lain.) Dalam banyak kasus Anda dapat bertahan dengan sesuatu seperti AABB , tetapi jika Anda cenderung matematika, mungkin berguna untuk benar-benar mengimplementasikan sesuatu yang lengkap. Minimal, kenali perpustakaan lengkap, seperti APE atau Box2D.
  • Hubungan risiko / imbalan dalam kepuasan bermain game. Permainan dadu sederhana (pergilah menggali untuk sesuatu yang disebut "Skunk" dari 50-an) dan permainan papan berisiko (kehidupan, permen) papan permainan adalah contoh bagus cara cepat sederhana untuk mempelajari hal ini dengan melakukan.
  • Variasi ekspresif dalam mekanika. Pecahkan sendiri aturan-aturan kecil, kemudian pelajari untuk mendapatkan banyak variasi darinya. Permainan kartu geladak khusus adalah cara terbaik untuk bekerja dengan ini; lihatlah deck Dvorak, dan game-game dunia nyata seperti Mille Bornes, Rage dan Uno, lalu buat beberapa game Anda sendiri. Mereka tidak menjadi serupa.
  • Konten yang dihasilkan. Game strategi sederhana berbasis peta, roguelikes, dan beberapa jenis game puzzle adalah cara yang bagus untuk belajar melakukan hal ini. Poin bonus jika itu jenis permainan yang umumnya tidak diketahui memiliki konten yang dihasilkan.
  • Gaya. Jangan main-main: ini masalah besar. Buat game, lalu gabungkan menjadi empat game yang sama sekali berbeda. Sangat berbeda. Bahkan satu permainan anak-anak. (Pikirkan tentang hal ini: Mega Man sangat masuk akal sebagai petualangan penyihir ke neraka, atau sebagai Rogue dari X-Men, atau ...) Sekarang, dapatkan empat kelompok orang untuk mencetak satu dari setiap permainan Anda. Setelah itu, minta mereka mencetak skor pertandingan berikutnya, berlawanan arah jarum jam, di atas ring, dan seterusnya. Perhatikan bagaimana perubahan skor mereka secara radikal berdasarkan tema dan harapan sebelumnya.
  • Membuat urutan rencana pemain. Permainan puzzle adalah semacam cara terbersih untuk melakukannya.
  • Pengelolaan sumber daya
  • Upgrade
  • Menekan tekanan waktu

... eh Aku bosan.

John Haugeland
sumber
11
Jawaban yang sangat bagus. Akhir yang benar-benar mengecewakan di sana. Sungguh luar biasa jika Anda bisa meninjau kembali ini dan mengikatnya entah bagaimana untuk memberikan akhir yang masuk akal.
Ricket
1
Sebagai penutup, bagaimana dengan beberapa instruksi memasak hati ? giantitp.com/comics/oots0738.html
Cyclops
4
Ini adalah pelajaran hidup yang disamarkan sebagai pos tentang pemrograman game.
sdasdadas
30

Tetris

Gim yang sangat umum, banyak klon sumber terbuka di luar sana yang akan rusak jika Anda buntu. Mengajarkan dasar-dasar grafik 2D, penanganan input, penilaian, dll.

Kemudian ambil ide orisinal ini dan putar. Saya belajar dasar-dasar grafis 3D / OpenGL dengan menulis versi 3D Tetris untuk kelas grafis komputer saya di perguruan tinggi.

Bryan Denny
sumber
2
Atau "Kolom" jika Anda seorang pria Sega;)
Andrew Russell
Cue Tetris theme music ...
Nick Bedford
3
qntm.org/hatetris (oke itu tidak memiliki musik tema, tapi saya hanya ingin menghubungkannya ...)
user384918
1
@bloots wow, itu jahat
Bryan Denny
Woot! ini situs saya .
Steven Lu
25

GameDev.net memiliki artikel bagus yang merekomendasikan perkembangan game untuk belajar tentang pengembangan game secara bertahap. Saran favorit saya dari daftar adalah untuk benar-benar memoles permainan ini. Selesai total, ke keadaan yang bisa dirilis.

Daftarnya adalah sebagai berikut (beberapa di antaranya telah diberikan dalam jawaban lain):

  1. Tetris
  2. Breakout
  3. Side Scroller / Platformer
Colin Gislason
sumber
Anda melewatkan Pac-Man, Galaga, dan Gauntlet dari artikel yang Anda tautkan
Adam Harte
15

Saya suka memulai semua orang dengan Monopoly. Saya biasanya menggunakan monopoli "kode kata" dari Brett Schuchert sebagai dasar dari latihan ini, tetapi saya menambahkan banyak ke dalamnya. Ada beberapa alasan mengapa saya sangat suka melakukan ini.

  1. Saya sangat peduli tentang praktik pengkodean yang baik (pola desain, TDD, SOLID, integrasi berkelanjutan, dll.) Dan menempatkan banyak kendala pada pengembang saya ketika mereka melakukan latihan ini.

  2. Hampir semua orang tahu aturan Monopoli, dan seluruh permainan bisa diselesaikan dalam satu hari. Ini memberi pengembang baru kemenangan cepat dan benar-benar meningkatkan keterlibatan mereka.

  3. Persyaratan awal dimulai dengan kontrol keyboard, tetapi kemudian saya menambahkan persyaratan untuk kontrol mouse nanti. Hal ini membuat pengembang memikirkan beberapa hal, bagaimana cara memperbaiki kode yang ada, memprogram bagian-bagian yang berubah dari sistem menjadi antarmuka alih-alih kelas-kelas konkret, abstraksi yang lebih baik / tepat, tes apa yang harus dilakukan, uji unit, tes unit apa, mengapa uji unit, dan apa membuat untuk tes unit BAIK.

Terkadang kita memasang AI yang lebih canggih, kadang tidak. Terkadang kami bekerja dengan permainan papan lainnya dengan logika yang sedikit lebih rumit seperti Chutes and Ladders atau sesuatu. Terkadang kita melepaskan diri sepenuhnya dari permainan papan, dan melakukan permainan poker atau selikuran.

Bagian yang sangat penting, bagi saya, adalah orang-orang mendapatkan kemenangan cepat, dan mereka melihat betapa fleksibelnya Anda dapat membuat perangkat lunak ketika Anda mengikuti standar pemrograman yang baik. Latihan-latihan ini membangun kepercayaan diri dengan sangat cepat. Kadang-kadang, pengembang yang lebih berpengalaman suka melakukan ini sendiri, hanya untuk mendapatkan istirahat dari proyek yang lebih rumit atau untuk mempraktikkan teknik baru yang baru saja mereka pelajari (hukum demeter?).

hokiecsgrad
sumber
6
Bagaimana Anda menerapkan Monopoli dalam satu hari? Sepertinya proyek yang jauh lebih besar dari itu.
Michael Kristofik
Jika Anda memiliki aset seni yang siap untuk pengembang, dan Anda mengikuti panduan yang saya tautkan di atas, itu cukup mudah. Itu tidak termasuk beberapa strategi AI, atau beberapa aspek yang lebih rumit dari animasi dan musik, tetapi ini adalah game yang sepenuhnya dapat dimainkan dan mudah dilakukan dalam sehari. Ini benar-benar bisa dilakukan, dan itu sangat menyenangkan.
hokiecsgrad
# 3 juga akan memberikan pengalaman dunia nyata klien yang mengubah persyaratan pada Anda setelah Anda sudah mulai.
Jarett Millard
Sayangnya tautan Monopoly sudah mati :(
Casey
Mesin wayback masih memilikinya. web.archive.org/web/20090919075257/http://…
hokiecsgrad
15

Pilih-Petualangan Anda

Dapatkan tip ini dari teman yang memulai pemrograman dengan membuat game, mirip dengan memilih buku petualangan Anda . Ini pada dasarnya adalah game petualangan teks sederhana dengan output seperti ini:

You are standing in a forest clearing in the middle of the night. You hear
some wolves howl in the distance. Should you:
a) make camp for the night
b) go further north
> _

Membuat game seperti itu akan mengajarkan Anda untuk membuat gameloop, input konsol dasar, dan skrip dasar. Ini sangat sederhana untuk diterapkan dan mudah bagi pemula untuk melompat karena Anda tidak memerlukan mesin grafis untuk menulis permainan. Pemula mahir mungkin akan menulis mesin scripting.

Spoike
sumber
7
+1 tetapi HANYA jika Anda baru belajar pemrograman. Jika Anda sudah tahu pemrograman, saya tidak akan mulai dengan ini.
Jeff
1
@ Jeff: Ya, jika Anda seorang pemula yang lengkap maka ini adalah proyek yang bagus untuk memulai. Jika Anda sudah memprogram untuk sementara waktu, pergi untuk proyek-proyek lain yang disebutkan sehingga Anda dapat bermain-main dengan grafis dan yang lainnya.
Spoike
8
Sebenarnya, ini adalah cara yang sangat baik untuk belajar tentang pengembangan scripting dan data-driven. Buat "mesin" untuk ini dan tulis sisanya dalam skrip.
Nick Bedford
1
@ Jeff nah, jika mereka programmer berpengalaman, maka mereka akan menyelesaikannya dalam 2 jam. Jadi minta mereka menambahkan beberapa item, pintu, pertarungan bos
bobobobo
13

Dalam pengalaman saya dengan programmer pemula, progresi ini biasanya berlangsung seperti ini:

  1. Pong
  2. Tetris
  3. RPG 3D gameplay luar biasa 50 jam yang luar biasa mengagumkan (catatan: kebanyakan orang menyerah pemrograman bagian dari langkah ini)
davr
sumber
4. Fantasy MMORPG: P
Nick Bedford
12

Breakout, Pong, atau Asteroid.

Ada perbedaan besar antara gim dan prototipe gim . Jika Anda serius untuk menyelesaikan game impian Anda, maka Anda harus menyelesaikan game "entry level" Anda. Membuat gameplay bagian dari permainan hanya setengah pertempuran. Semua hal-hal ekstra seperti menu dan skor tinggi sering diabaikan atau diabaikan, tetapi mereka mengambil lebih banyak waktu daripada yang diharapkan siapa pun.

Matt Rix
sumber
4
+1 untuk menyebutkan detail membutuhkan waktu lebih lama dari yang Anda harapkan.
buka
11

Ada beberapa saran bagus di jawaban lain, tetapi saya hanya ingin memberikan suara saya untuk memilih: Mulailah dengan sesuatu yang tampaknya terlalu kecil untuk ditangani.

Pong adalah contoh yang bagus.

Tujuannya adalah: buat game-desain dan aturan-set begitu mati otak sehingga Anda dapat memusatkan semua perhatian Anda pada belajar hal baru yang Anda pelajari (bahasa, platform, API) dan tidak harus terus-menerus istirahat sejenak untuk mencari tahu bagaimana game ini bekerja.

Setelah Anda mulai, Anda akan menemukan bahwa pong sebenarnya sedikit lebih rumit daripada yang terlihat pada blush on pertama. (Saya mengajar seorang pria pemrograman dan dia menggunakan pong sebagai proyek pembelajarannya. Kami menambahkan beberapa fitur, dan sekarang dia semakin teralihkan dari belajar ke program dengan belajar bagaimana melakukan semua fitur keren ini :)

Setelah Anda selesai melakukan aplikasi # 1 hingga siap untuk memberikan / menjual kepada orang lain, MAKA mengambil sesuatu yang sedikit lebih rumit (Tetris, petualangan atau apa pun yang Anda suka) tetapi, untuk memulai mempelajari teknologi baru, buatlah hal yang Anda program sederhana mati otak.

Contoh lain:

  • Tebak angkanya (antara 1 & 1000)
  • Mastermind (lanjut tebak nomornya.)
  • SimplePaint
  • Snake / worm / terserah kamu panggil saja.

Tetapi, sekali lagi - mulailah dengan sesuatu yang terlalu mudah, sehingga Anda dapat benar-benar menyelesaikan sesuatu dan melihat ke belakang dan melihat apa yang terlibat. Perbedaan antara telah menulis SATU aplikasi dalam bahasa / platform / SDK / engine dan memiliki aplikasi NOL yang ditulis adalah BESAR . Perbedaan antara 1 & 2, atau 2 & 5, jauh lebih sedikit, sehingga Anda dapat mengambil langkah yang lebih besar, tetapi membuat langkah 0 hingga 1 menjadi langkah yang sangat kecil; itu akan lebih besar dari yang Anda pikirkan!

Olie
sumber
2
+1 untuk "Mulailah dengan sesuatu yang tampaknya terlalu kecil untuk dihadapi" dan untuk "Perbedaan antara telah menulis SATU aplikasi ... dan telah menulis aplikasi NOL adalah BESAR"
Luc125
1
Pembaruan 2014: Aplikasi "belajar bahasa / teknologi" yang bagus lainnya adalah Flappy Bird-seperti. Sebagai seorang programmer profesional, ini adalah pekerjaan siang hari (yah, akhir pekan untuk mendapatkannya "bagus") tetapi, ketika mengajar program lain, kami belajar bahwa sebenarnya ada banyak komplikasi kecil. Sekali lagi, satu pengalaman yang jauh lebih banyak daripada nol dan, begitu Anda memilikinya, Anda akan memiliki gagasan yang jauh lebih baik tentang cara untuk maju.
Olie
9

Lihatlah situs web ini: 12 ide proyek permainan sains komputer

Beberapa dari permainan ini mencakup apa yang dikatakan orang lain seperti:

  1. Pacman
  2. Tetris
  3. Pong

Tetapi juga berbicara tentang beberapa game lain yang bisa Anda coba buat seperti:

  1. Tic-Tac-Toe
  2. Siapa yang ingin menjadi jutawan?
  3. Dan klon Mario.

Selain itu, ini memberikan pengertian tentang apa yang harus Anda coba lakukan terlebih dahulu karena memberikan rasa kesulitan untuk setiap permainan (dan karenanya rencana bagaimana Anda harus menangani permainan):

  1. Pemula
  2. Menengah
  3. Maju
  4. Terbaik
berdebar
sumber
2
+1, Suka tautan itu. "RPG - jika kamu membenci hidupmu (dan beberapa orang tampaknya begitu), upaya tahun lalu yang jelas untuk kemuliaan pemrograman video game ini kemungkinan besar akan berakhir dengan buruk. Mesin game itu sendiri seringkali tersebar dengan luas (perjalanan dunia, perjalanan kota, pertokoan, perkelahian , dll) dan membutuhkan upaya yang tidak saleh "
Cyclops
5

Banyak orang mulai dengan Breakout karena fitur:

  • Input: menggerakkan dayung bolak-balik
  • Tabrakan Sederhana: bola memantul dari dayung, batu bata, dan dinding
  • Mengubah "Status Game:" Memperbarui skor saat bola menyentuh bata dan melepas bata, mengurangi jumlah bola saat bola menyentuh bagian bawah layar, kehilangan permainan saat jumlah bola == 0, dll.
  • Ini juga merupakan pengantar grafis yang cukup lembut karena semuanya persegi panjang dan lingkaran
Sean James
sumber
5

Bagian tersulit tentang menulis game - atau perangkat lunak apa pun - adalah mencari tahu apa yang harus dilakukan. Anda benar-benar membutuhkan spec! Itulah bagian yang menyenangkan tentang membuat tiruan dari gim yang ada: spek sudah ada. Spek Anda adalah "Produk harus melakukan semua hal yang dilakukan oleh Produk Lain," dan jika Anda memiliki salinan gim lainnya, maka cukup mudah untuk memverifikasi itu.

Setelah Anda mengetahui apa yang perlu Anda lakukan, cari tahu caranya melakukannya benar-benar tidak sulit jika Anda seorang programmer yang kompeten. Maksud saya bukan programmer yang terampil atau berpengalaman; itu menyiratkan bahwa Anda sudah tahu bagaimana melakukan sebagian besar dari apa yang Anda coba lakukan. Tetapi Anda perlu memahami cara berpikir dalam abstraksi dan memiliki keterampilan pemecahan masalah dan pemikiran logis yang mendasar untuk pemrograman. Jika Anda bisa melakukan itu, maka Anda bisa melakukan apa saja.

Karena itu, saya tidak setuju dengan apa yang dikatakan kebanyakan orang tentang mencoba belajar menulis game dengan menulis sesuatu yang sangat sederhana. Hadiah itu berbanding lurus dengan upaya yang Anda lakukan. Jika Anda belajar menulis game dengan menulis game yang benar-benar sederhana, yang Anda tahu pada akhirnya adalah bagaimana menulis game yang benar-benar sederhana, dan itu tidak akan banyak membantu Anda.

Di sisi lain, jika Anda memulai dengan sesuatu yang luar biasa, Anda tidak akan pernah menyelesaikannya. Jadi mulailah dengan sesuatu yang cukup menantang yang akan membuat Anda berurusan dengan masalah serius. Membangun RPG bergaya konsol 2D atau platformer gulir samping adalah cara yang sangat baik untuk mempelajari konsep pemrograman game nyata.

Mason Wheeler
sumber
5

Itu benar-benar tergantung pada apa kompetensi Anda saat ini. Jika Anda relatif baru dalam pemrograman, maka pergilah dengan salah satu game spesifik yang disarankan orang. Jika tidak, Anda harus memikirkan jenis permainan apa yang memungkinkan Anda memanfaatkan pengalaman Anda dengan baik.

Ketika saya memulai game pertama saya, saya tidak memiliki pengalaman pengembangan game, tetapi saya telah melakukan pengembangan aplikasi enterprise / lini bisnis selama beberapa tahun. Proyek game pertama saya adalah game strategi berbasis giliran, dan secara arsitektur, itu tidak terlihat jauh berbeda dari aplikasi perusahaan. Itu menggunakan sistem klien / server, dan komunikasi terjadi melalui saluran layanan WCF duplex. Sebagian besar operasi pemain diantrekan sebagai "pesanan" dan dikirim ke server pada akhir pergantian. Semua proses belokan terjadi di server, setelah itu pembaruan game universe dikirim ke setiap klien.

Proyek pertama itu memberi saya jalan masuk ke pengembangan game sambil memulai saya di wilayah yang sudah dikenal. Seiring perkembangan proyek, saya belajar berpikir lebih seperti pengembang game dan kurang seperti pengembang aplikasi perusahaan. Hasil akhirnya bekerja cukup baik, dan itu sedikit lebih mengesankan daripada Battleship atau Tic-Tac-Toe :).

Mike Strobel
sumber
4

Nibbles dan Space Invaders

AI, Grafik, Gameplay, Kontrol yang relatif sederhana, dan mereka tidak harus memiliki efek suara atau musik kecuali jika Anda ingin menambahkannya. Saya mulai dengan keduanya ketika belajar bagaimana memprogram dalam QBasic untuk MS-DOS dan saya pikir mereka adalah game pertama yang bagus. Pac-Man akan menjadi pilihan saya yang lain.

Steve Tranby
sumber
Saya belum pernah mendengar tentang Nibbles sebelumnya, tetapi suara yang pasti di Space Invaders.
jhocking
3

Permainan gaya Moonlander sangat bagus (di mana Anda memiliki roket yang dipengaruhi oleh gravitasi, arah kendali pemain dan daya dorong, bahan bakar terbatas saat menggunakan daya dorong). Dapatkan pengalaman menerapkan fisika yang sangat sederhana dan sistem tumbukan bisa sangat primitif. Tidak perlu khawatir tentang AI dan yang paling penting menyenangkan dan membuat ketagihan :)

Allan
sumber
2
Setuju, permainan gaya Thrust / Lunar Lander adalah proyek awal yang bagus. Berurusan dengan rotasi, dan kecepatan / percepatan akan mengungkapkan misteri sinus / kosinus (bagi siapa pun yang tidak berurusan dengan mereka untuk sementara waktu). Anda dapat menggunakan peta ubin statis atau gulir, dan dapat menggunakan deteksi tabrakan tanpa memerlukan banyak tanggapan tabrakan yang rumit (sentuh sesuatu -> meledak). Ini juga bagus untuk memikirkan penyetelan sistem kontrol - mendapatkan keseimbangan dorong, gravitasi, dan kecepatan rotasi yang bagus untuk membuatnya terasa benar
bluescrn
@bluscrn sebenarnya itu komentar yang bagus. Setelah membuat orang untuk bermain menguji versi flash saya, saya perhatikan orang memiliki pendapat yang berbeda tentang bagaimana rasanya. Beberapa di antaranya disebabkan oleh game-game sebelumnya yang dialami oleh pengguna. Itu bukan sesuatu yang saya pikirkan sebelum mengembangkannya.
Allan
2

Penembak ruang top-down seperti Galaga cukup mudah dan mengajarkan deteksi tabrakan dengan cukup baik! Ini juga dapat bervariasi dalam kesulitan, dari level dengan musuh stasioner, hingga beberapa level yang upgrade senjata dan musuh yang bergerak dalam pola khusus.

Ricket
sumber
1

Sesuatu seperti Gauntlet, karena Anda memerlukan sistem entitas, AI musuh, pickup, ubin-peta, deteksi tabrakan, penilaian dll. Ini memiliki semuanya, tetapi tidak dengan cara yang luar biasa.

Iain
sumber
Saya akan mengatakan bahwa AI musuh dan deteksi tabrakan dengan tata letak ubin yang sewenang-wenang IS luar biasa jika Anda memiliki sedikit atau tidak ada pengalaman, terutama mengingat fisika yang juga harus Anda lakukan - gesekan antara pemain dan tanah, dll. Ini mungkin bagus menantang setelah beberapa pertandingan, namun
Sean James
Setuju, sedikit melelahkan bagi orang yang baru memulai. Terlalu banyak konsep sekaligus. Mulailah dengan sesuatu yang hanya memberi skor dan input. Kemudian buat game yang melakukan 1 atau 2 hal baru, seperti deteksi tabrakan dan musuh. Tetaplah memilih game yang dibangun berdasarkan konsep yang Anda tahu tetapi perkenalkan sesuatu yang tidak Anda miliki; jika Anda tidak tahu, Anda tidak boleh mencobanya. Tetap sederhana.
user384918
Sejujurnya saya berpikir bahwa ada terlalu banyak yang terjadi dalam klon Gauntlet untuk dihitung sebagai game "entry level".
PhillC
Jujur saya pikir ini lebih mudah untuk kode Gauntlet daripada Tetris, karena mengetahui bagaimana blok menumpuk satu sama lain, apakah sebuah baris sudah selesai, dan bagaimana menghapus baris, merupakan masalah abstrak yang cukup rumit. Gauntlet dapat dikodekan dalam kurang dari 1000 baris di platform 2D modern apa pun, dan jika tidak bisa di platform yang Anda gunakan, saya sarankan mencari yang lain. Ngomong-ngomong, saya menyarankannya justru karena itu membutuhkan mempelajari semua bagian yang membentuk permainan modern.
Iain
Anda mendapatkan poin tambahan untuk melakukan suara dengan benar: "Elf mengambil makanan!" "Penyihir akan mati!" atau favorit saya: "Anda sudah menemukan TRAY-rooom pasti saya!"
rtperson
1

Klon Zelda mini bagus dan melatih beberapa keterampilan yang belum banyak disebutkan di sini. Menggulir peta besar ubin dan kontrol gerakan 8 arah yang sederhana itu baik untuk diketahui. Poin bonus jika kamu bisa melakukan musuh, tapi aku tidak akan terlalu khawatir tentang itu.

pembuat kode
sumber
1

Saya telah membuat lebih dari beberapa klon Tetris. Setiap kali saya melakukannya saya melakukannya sedikit berbeda. Saat ini, saya biasanya membuat beberapa jenis klon asteroid. Saya juga telah membuat lebih dari beberapa spinoff Perintah Rudal.

Saya sudah mulai dengan permainan dasar permainan dan kemudian pindah ke menambahkan lebih banyak barang, power up dll .. untuk itu.

Casey
sumber
1

Saya selalu terbiasa memulai dengan game Tank / Gorillas / Worms. Ini membuat Anda berolahraga dalam tampilan grafis sederhana, dan membaca input pengguna, ditambah loop permainan menerapkan gravitasi ke proyektil dan menguji untuk deteksi tabrakan.

Setelah itu akan muncul game seperti platformer yang sangat sederhana atau shoot-em-up di mana Anda perlu membaca input pengguna secara real time, daripada pernyataan INPUT yang bekerja untuk Gorillas :)

AlexC
sumber
1

Solitaire (atau benar-benar permainan kartu apa saja) adalah permainan yang bagus untuk membuat tangan Anda kotor dengan sistem UI baru, karena ini melatih banyak widget dan mekanisme umpan balik interaksi pengontrol yang perlu Anda gunakan. Ditambah logika untuk itu mudah dan tidak ambigu, sehingga Anda dapat berkonsentrasi pada pembelajaran dan tidak begitu banyak pada desain game.

Untuk permainan simulasi waktu nyata, saya selalu merekomendasikan Pong sebagai titik awal sederhana yang bagus, sekali lagi karena desainnya sederhana, serta antarmuka pengontrolnya, sehingga Anda dapat melihat daging dari sistem - simulasi fisik.

MrCranky
sumber
1

Saya selalu menegaskan bahwa jika Anda seorang programmer game, Anda harus dapat membuat beberapa bentuk Space Invaders . Heck, gim ini cukup sederhana sehingga Anda juga bisa membuat grafiknya sendiri.

Memiliki pilihan gim kecil dalam portofolio Anda sebagai manfaat tambahan karena cukup bermanfaat, misalnya, jika saya mempelajari bahasa atau kerangka kerja pemrograman baru, saya akan sering memasukkan salah satu gim sederhana saya untuk melihat bagaimana cara baru melakukan hal-hal yang cocok dengan cara aslinya ditulis.

JSmyth
sumber
1

Itu benar-benar tergantung pada keterampilan apa sebagai programmer reguler yang sudah Anda miliki. Apakah matematika Anda perlu bekerja? Pengetahuan grafis Anda? Apakah Anda memiliki keduanya tersembunyi?

Meskipun secara umum saya pikir Tetris dan Breakout akan menjadi dua starter saya juga. Apa pun yang lebih mudah dari itu tidak menawarkan stimulus yang cukup. Tetris adalah tes yang baik dalam cara tata letak data Anda, algojo adalah contoh matematika ringan. Saya selalu memberitahu orang-orang untuk membidik tinggi, tujuannya adalah untuk terjebak dan menghasilkan solusi.

Setelah itu, langit adalah batasnya. Sekali lagi, bidik tinggi. Coba platformer dengan medan miring, parralax dan Anda punya tas yang bagus berguna teknologi 2d. Tambahkan pinball (bersiaplah untuk frustrasi) dan matematika Anda akan meningkat.

Dari sana pergi ke dimensi ketiga, pelajari keterampilan inti (anim, rendering) dan Anda harus memiliki perlengkapan yang relatif baik untuk menghadapi beragam permainan yang bagus.

Kaj
sumber
0

Saya akan mengatakan jenis permainan Tower Defense adalah tempat terbaik untuk memulai. Anda juga dapat mulai dengan memodulasi game / mesin yang sudah ada (WarCraft III / HalfLife2 SDK / dll.) Untuk memahami keseluruhan logika yang dibutuhkan, kemudian beralih menggunakan basis kode Anda sendiri.

Gootik
sumber
0

Game pertamaku adalah Super Mario.

Bergeraklah, hindari rintangan, melompat. Dan semua tugas itu dapat dengan mudah dilakukan tanpa perhitungan fisika.

Ideal untuk mengambil hal 2D sederhana, karena Anda tidak akan banyak bergantung pada implementasi / kerangka / mesin tertentu.

SwissCoder
sumber