Ingin belajar menulis game 2d

Hai Komunitas stackoverflow! Saya mempelajari dasar-dasar C# (saya bisa menulis beberapa Formulir-Aplikasi) dan sekarang saya ingin belajar cara menulis game 2d. Saya tidak tahu harus mulai dari mana. Apakah ada mesin yang bagus untuk game 2d? Setelah mempelajari dasar-dasar 2d saya ingin menulis permainan sederhana yang dapat dijalankan di windows dan linux (itu pasti keren, linux :)).

Saya bertanya kepada seorang teman yang menyukai pemrograman dan dia berkata saya harus menggunakan XNA dengan C# (tetapi itu hanya akan berfungsi di windows). Setelah mencari di Google saya menemukan bahwa OpenGL dengan C++ adalah yang terbaik untuk menulis game untuk linux, karena tidak ada DirectX/XNA. Dan saya belum pernah menggunakan C++, perlu waktu untuk mempelajarinya lagi.

Apakah ada sesuatu yang bisa Anda sarankan? Mungkin mesin lain? Saya baru saja menginstal XNA dan melihat demo game (Platformer), kode itu tidak sulit sama sekali. Apakah XNA bagus untuk game 2d?


person CSharpBeginner    schedule 26.09.2009    source sumber
comment
Lihatlah Tao, mono-project.com/Tao   -  person Dykam    schedule 26.09.2009


Jawaban (7)


Ambil satu langkah pada satu waktu. Saat Anda memulai, Anda tidak membutuhkan kode Anda untuk berfungsi di semua platform. Tidak masalah apakah game tersebut menggunakan OpenGL atau DirectX, karena Anda akan bekerja keras membuat game untuk dijalankan pada satu platform dengan satu API grafis.

Kedua, jangan terlalu khawatir tentang "mesin". Anda tidak membutuhkan mesin untuk membuat game, dan sering kali, hal tersebut akan lebih merepotkan daripada manfaatnya. Obsesi terhadap "mesin" pada dasarnya adalah ide yang buruk. Jika Anda mencoba untuk mendapatkan satu komponen perangkat lunak untuk mendukung setiap fungsi yang Anda perlukan untuk sebuah game, maka komponen tersebut tidak akan layak digunakan untuk salah satu komponen tersebut..

Yang kamu butuhkan adalah:

  • bahasa pemrograman yang Anda sukai. Sepertinya ini C#, jadi tetap gunakan itu.
  • Beberapa cara untuk menampilkan grafik di layar. Pustaka .NET bisa melakukan itu sampai batas tertentu, namun beberapa pustaka tingkat yang lebih tinggi mungkin akan membuatnya lebih mudah. Anda bisa menggunakan XNA atau SlimDX atau pembungkus Direct3D lainnya. Atau Anda dapat mencoba SDL.NET. Atau Anda bisa menulis sendiri. Kemampuan yang Anda perlukan cukup mendasar dan setiap pustaka grafis, 2d atau 3d, dapat membantu Anda melakukannya.

Anda khususnya tidak memerlukan apa pun yang "bagus untuk game 2D". XNA mampu menampilkan grafik di layar, sehingga melakukan apa yang Anda perlukan. Jika Anda juga memahami kode yang diperlukan untuk menggunakannya, maka XNA sudah cukup baik. Jangan repot-repot mencari yang "terbaik", atau sesuatu yang memiliki nilai jual "luar biasa untuk game 2D".

person jalf    schedule 26.09.2009
comment
Tambahkan Kerangka Tao untuk membuat OpenGL dan beberapa API lintas platform keren lainnya tersedia untuk bahasa .NET, yang hampir menghadirkan lintas platform secara gratis;) - person Cecil Has a Name; 26.09.2009
comment
Tao bagus... inilah salah satu tutorial yang lebih bagus untuk XNA dan Managed DirectX lama untuk C# yang saya temukan: riemers.net/eng/Tutorials/xnacsharp.php - person Oskar Duveborn; 26.09.2009
comment
Maksud saya adalah bahwa lintas platform tidak penting. Apakah Tao lebih mudah digunakan dibandingkan kerangka kerja khusus platform lainnya? jika ya, maka itulah mengapa dia harus menggunakannya. Jika tidak, maka dia tidak boleh menggunakannya tidak peduli berapa banyak platform yang menjalankannya. - person jalf; 26.09.2009
comment
Pada prinsipnya, ya. dengan asumsi Anda tetap berada dalam bit .NET yang didukung oleh Mono. Dan tentu saja, kode grafis bisa sangat berubah-ubah. Anda mungkin harus menghabiskan cukup banyak waktu untuk men-debugnya karena secara misterius tampilannya berbeda di Linux dibandingkan Windows. Namun izinkan saya bertanya lagi, mengapa Anda memerlukan game pertama Anda ini untuk bersifat lintas platform? Apakah Anda juga menerjemahkan semua yang Anda baca di kelas satu ke dalam bahasa Spanyol, Rusia, dan Mandarin? - person jalf; 27.09.2009
comment
Terima kasih, saya rasa saya akan menggunakan XNA. Sudah menulis game kecil, kerangka bagus :) - person CSharpBeginner; 27.09.2009
comment
Dingin. Saya telah mendengar hal-hal baik tentang hal itu, dan itu didukung dengan baik. Dan nanti, setelah Anda memiliki game, jalankan game tersebut di semua platform yang Anda suka. Namun jalankan di satu platform sebelum Anda mengkhawatirkan dua atau tiga platform. tanganmu akan penuh apa adanya;) - person jalf; 27.09.2009

Mungkin platform termudah dan paling mudah diakses adalah Flash. Mudah didistribusikan dan cepat dipelajari untuk permainan (dilihat dari banyaknya permainan flash yang tersedia di web).

Saya setuju dengan Jalf. Jangan mulai berpikir tentang mesin. Mesin adalah sesuatu yang kompleks dan mengingat pengalaman pemrograman Anda kecil, hal ini bisa menjadi sangat membebani dengan sangat cepat. Ada banyak hal yang dimasukkan ke dalam game dan pola desain yang terlibat di dalamnya cenderung jauh berbeda dari aplikasi pada umumnya. Dan hal-hal seperti OpenGL menjadi sangat kompleks ketika Anda mulai membicarakan hal-hal seperti deteksi serangan.

Arah lain yang dapat Anda ambil adalah alih-alih memulai permainan Anda sendiri dari awal, Anda dapat mencoba membuat mod seperti Half-Life 2, atau Unreal. Itu memberi Anda platform dasar yang dapat Anda ubah dan lihat bagaimana perilakunya. Sementara itu, Anda akan melihat kode orang lain dan melihat seluk-beluk pengembangan game.

Berikut adalah tautan cepat yang saya ambil dari pencarian Google sehubungan dengan game flash. Saya yakin mungkin ada beberapa buku yang tersedia secara online mengenai cara membuat game dalam flash dan bahasa lainnya.

person MunkiPhD    schedule 26.09.2009
comment
Apakah ada alat gratis yang bagus untuk ini (Flash) seperti Visual Studio Express untuk C#? Saya sangat ingin tahu, karena Adobe Flash CS sepertinya agak mahal. - person Cecil Has a Name; 26.09.2009
comment
Ada Flash Develop dan FDT - person ; 19.09.2012

Seseorang menyebutkan Flash, yang merupakan saran bagus, tapi agak mahal. Jika Anda ingin melakukan pengembangan Flash/AS3 secara gratis, saya sarankan bermain dengan Flixel. Anda juga memerlukan FlashDevelop, yang bagus (juga gratis ) IDE. Situs Flixel memiliki banyak sumber daya bagus untuk membantu Anda memulai.

person Gary the Llama    schedule 02.10.2009
comment
Flixel sangat bagus, cocok untuk game 2D. Anda dapat menggunakan FlashDevelop, tetapi juga FlexBuilder atau bahkan editor teks favorit Anda seperti Emacs: cukup gunakan alat baris perintah Flex SDK gratis. Jika Anda menggunakan editor teks + baris perintah, Anda harus menggunakan sistem build seperti Make, Ant, atau Rake. - person Sébastien RoccaSerra; 24.11.2009

Jika Anda berpikir untuk mengejar masa depan dalam pemrograman grafis, saya akan memilih OpenGL karena alasan berikut:

  • OpenGL diimplementasikan pada Windows, Mac, Linux, dan bahkan PlayStation 3. (sangat serbaguna)
  • Setelah Anda merasa nyaman dengan pemrograman 2D, Anda dapat beralih ke 3D dan tetap menggunakan OpenGL.
  • OpenGL sama cepat dalam hal kinerja dibandingkan dengan DirectX.
  • C++ adalah bagian dari setiap kurikulum pemrograman tingkat perguruan tinggi.*
  • Saya rasa perusahaan lebih menghargai pengetahuan C++ dibandingkan bahasa lainnya.

Kurva pembelajarannya mungkin lebih tinggi, tetapi waktu Anda akan dihabiskan dengan baik.

* Jika perguruan tinggi Anda tidak memiliki C++ sebagai bagian dari kurikulum pemrogramannya, Anda termasuk orang asing.

person James Jones    schedule 26.09.2009
comment
Tidakkah menurut Anda harus menjadi pertimbangan bahwa 99,99999% dari semua game PC menggunakan DirectX, bukan OpenGL? Dan hampir tidak ada game di PS3 yang menggunakannya, karena pembungkus OGL Sony jelek dan pengembang umumnya bekerja langsung melawan GPU. - person jalf; 26.09.2009
comment
Maaf, maksudmu adalah? Bahwa selama dekade terakhir (daftarnya mencakup asli Unreal, dari tahun 1998), sebanyak 73 game telah dibuat yang mendukung OpenGL? (Perhatikan bahwa banyak dari yang ada di daftar itu juga mendukung DirectX). Apakah Anda serius berpendapat bahwa daftar ini merupakan mayoritas permainan? Bahwa rata-rata pengembang game Anda menggunakan OpenGL untuk pengembangan PC mereka? OpenGL itu yang harus Anda tuju jika Anda menginginkan masa depan dalam pemrograman grafis? - person jalf; 27.09.2009
comment
Jika OpenGL sangat buruk, mengapa Anda memasukkannya sebagai opsi dalam jawaban Anda? Tidak masalah apakah itu menggunakan OpenGL atau DirectX - person James Jones; 28.09.2009
comment
Untuk menjawab pertanyaan terakhir Anda, ya. Daftar perangkat lunak juga mencakup judul-judul modern yang sangat umum seperti Google Earth dan Photoshop CS4. Bagaimanapun, jika Anda membaca perbandingan wikipedia tentang DirectX vs. OpenGL Anda akan melihat bahwa keduanya setara dalam hal Kemudahan Penggunaan dan Kinerja. Dengan memilih DirectX, Anda tidak mendapatkan apa-apa dan hanya membuat diri Anda terkena vendor lock-in. - person James Jones; 28.09.2009

Dari pengalaman saya, jauh lebih baik menulis dasar permainan Anda terlebih dahulu dalam bentuk aplikasi sederhana (mungkin berbasis teks) dan kemudian membuat grafik di atasnya hanya dengan mencoba sedikit demi sedikit dari tutorial. Dengan cara ini Anda akan selalu memiliki kerangka kerja yang dapat Anda mainkan dan Anda tidak langsung mempersulit diri Anda dengan semua panggilan grafis.

Hal lainnya adalah motivasi: jika Anda selalu memiliki aplikasi yang berfungsi, akan jauh lebih memuaskan melihatnya tumbuh dan berkembang secara perlahan daripada merasa frustrasi dengan "transisi yang berhasil/tidak berhasil" yang terus-menerus dan selalu menunggu semua bagian bersatu untuk membentuk sesuatu lengkap dari jarak jauh.

Sejauh menyangkut mesin: DirectX dan OpenGL saat ini adalah jenis mesin itu sendiri. Mereka memungkinkan Anda melakukan banyak pekerjaan primitif dengan sangat mudah (dapatkan model dari 3ds Max dan memuatnya ke aplikasi Anda dalam 1-2 baris kode), untuk permainan kecil Anda tidak memerlukan apa pun lagi.

Saya juga setuju dengan MunkiPhD: Flash akan menjadi platform yang sangat bagus untuk game 2d. Ini sangat sederhana dan memungkinkan Anda lolos dari semua pemrograman grafis yang membosankan. Namun, pemrograman ActionScript tidak mendekati pemrograman "tugas berat" dengan bahasa keluarga C dan pengembangan yang tepat. platform. ActionScript membuat saya frustrasi setiap kali saya melihatnya.

person Egor Pavlikhin    schedule 27.09.2009
comment
Saya bukan orang baru dalam pemrograman, saya memprogram php selama 5 tahun dan memulai prog windows/linux. setengah tahun yang lalu. Saya menulis beberapa prog di Delphi (saya benci sintaksnya) dan C#. Jadi tidak menjadi masalah untuk menulis game. Saya bertanya di sini untuk mencari tahu, mesin/framework/apa pun yang harus saya gunakan. Saya tahu bahwa Flash tidak sulit untuk dikodekan, tetapi saya ingin membuat kode dalam C# :) Terima kasih sejauh ini.. - person CSharpBeginner; 27.09.2009

Jika Anda ingin fokus pada game 2D dan tetap menggunakan C# untuk saat ini, DAN dapat mengajak teman Anda memainkan game Anda di Mac dan PC, pernahkah Anda berpikir untuk menggunakan Silverlight?

Menggunakan Silverlight akan mengatasi beberapa masalah seperti instalasi.

Anda dapat mencoba membuat beberapa permainan di Silverlight dan setelah Anda menguasainya, Anda akan berada dalam posisi yang lebih baik untuk memutuskan alat apa lagi yang ingin Anda pelajari selanjutnya. Dengan dirilisnya Silverlight 3.0 baru-baru ini, sebenarnya ada banyak orang yang mencoba melihat sejauh mana hal ini dapat didorong untuk bermain game, yang mungkin dapat membantu Anda mendapatkan jawaban atas pertanyaan Anda. Jika Anda memutuskan rute ini, Anda dapat mempostingnya di sini atau di situs seperti Silverlight.net

DISCLAMER: Saya tidak yakin apa status Silverlight untuk Linux

person user179700    schedule 27.09.2009

Flixel memang keren - Anda bisa mengaktifkan dan menjalankan game 2D dengan jumlah kode minimal. Anda dapat menemukan tutorial mendetail yang memandu Anda menjalani proses pembuatan game platform sederhana menggunakan Flixel di sini.

teks alternatif

person Phyxx    schedule 07.12.2009