Oyun geliştirmek, programlamayı öğrenmenin en iyi yolu mu? [kapalı]


21

Geçenlerde bir eğitmen mentinon'un oyun geliştirmenin programlama öğrenmenin en iyi yolu olduğunu duydum. Her şeyin kodda yaratılması gerektiğinin yanı sıra, OOP'yi programlarınızda tam olarak deneyimlendirebileceğinizi ve uygulayabileceğinizi söyledi. Başka bir deyişle, bir oyunda yaptığınız her şey hem teknik olarak hem de kavram açısından gerçek bir nesnedir. Bu varsayımı yapmak güvenli midir? Veya programlama öğrenirken her zaman istisnalar var mı?

.net / xna / c # geliştirmeye yönelik olduğunu unutmayın .


3
msgstr "her şeyin kodda yaratılmış olması gerektiği". Peki ya 3D modeller, dokular, sesler ve diğer kaynaklar? Onlarsız bir oyun motoru oluşturabilirsiniz, ancak imkansız olmasa bile, çok az kaynağa sahip eksiksiz bir oyun oldukça zor olacaktır.
POSIX_ME_HARDER

@ Cheshire: Pekala, bunları İşleme gibi şeylerle programlayabilirsiniz. Yine de çok pratik olduğunu söylemiyorum.
Anto,

2
@Heshire: Evet, bazı insanlar her şeyi usule uygun şekilde yaratarak bu zorlukla doğrudan mücadele ediyorlar . Ticari oyunlarda çok yaygın değil (bildiğim kadarıyla), ancak bunun yapılabileceğini kanıtlamak için popüler ve bunun gibi oldukça etkileyici demolar gördüm.
SinirliFormsDesigner ile

6
Bu soruyu, oyun hakkında sorular sorurken 'oyun oynamak' yerine 'oyun geliştirme' anlamına geldiğini farz ediyorum? Call of
Duty'den

1
Oyunun oynanabilir olmasını istiyorsanız o zaman saf OO tasarımını hız lehine ödün vermeniz gerektiğini de bulabilirsiniz.
Peter Taylor

Yanıtlar:


25

Oyun geliştirme bence, var olan en zorlayıcı gelişme. Bir kişinin birinci şahıs tetikçi yaratan tüm kavramlarına bakması gerekir:

  • Grafik
    • 3d hesaplamalar
    • Hız optimizasyonları
    • Grafik donanımıyla arayüz oluşturma
  • Oyun
    • Veri yapıları
    • Kaydetmek için dosya biçimleri
    • Genel tasarım, aksi takdirde özellik eklemek imkansız bir karışıklık yaratacaksınız
    • Oyun çok oyunculu ise ağ bilgisi
  • AI algoritmaları
    • Yol bulma
    • Savaş mücadele
  • yayıncılık
    • Yükleyicilerin nasıl çalıştığı gibi işletim sistemi bilgisi
    • Sözcüğü ortaya çıkarmak için muhtemelen web geliştirme

Görüyorsunuz, bir oyun aynı anda birçok alanı kapsayabilir . Zaman harcamak ve iyi yapmak için istekli iseniz bu mükemmel bir öğrenme aracı yapar.

OOP gelince, bu iyi çalışan bir kalıp. İyi tasarım teknikleri uygulamak için bir oyunu öğrenme aracı olarak kullanabilirsiniz.

Sorunuzu cevaplamak için, programlamayı öğrenmenin tek yolu bu değil. Bir ara geliştirici olduğunuzda, bir oyun oluşturmak birçok programlama konseptine ve seviyesine dokunmanıza izin verecektir. Ayrıca, eğlenceli!


12
Bir şey unuttun, o oyun için bir hikaye ve bazen hikaye önemli olan tek şey.
Mahmoud Hossam,

Bu bir 3D oyun olduğunu varsayar.
Adam Harte

1
@Adam: Evet, ama 2d'nin de hesaplamaları var. Şimdi bilerek test tabanlı RPG'leri hariç tutuyorum;)
Michael K

1
@Mohmoud Hikaye ASLA "önemli olan" değil. Bu, kötü / eksik bir hikayeye sahip olmak kadar büyük bir hatadır. İyi bir oyun yapmanın birçok yönü var. Hikaye ne kadar büyük olursa olsun, sıkıcı bir oyun oynamak istemiyorum. Ayrıca en başarılı bulmaca oyunlarının bir hikayesi yoktur.
Adam Harte

Oyun teorisi de kullanışlıdır.
VirtuosiMedia

46

Tautolojik olmamakla birlikte programlama, programlamayı öğrenmenin en iyi yoludur. Bilgisayar oyunlarıyla ilgileniyorsanız, programlama oyunları programlama öğrenmenin harika bir yolu olabilir.

Oyun umurumda değil ama matematiği çok seviyorum, çünkü öğrenme projelerimin çoğu doğada çok matematikseldi.

Sonuç olarak, kodla ilgili sorunları çözmenin yollarını bulmanız gerekiyor ve oyunlar birçok insan için çalışıyor.


Aslen düşündüğüm bu. Ancak programlamada kesinlikle yeni olduğunuzu düşünün. Oyun oynamak, birçok farklı kavramı öğrenmek için mükemmel bir araç gibi gözüküyor. Michael bunlardan bazılarını listeler. Dürüst olmak gerekirse, öncelikle oyun perspektifinden OOP'yi öğrenmiş olmayı isterdim. Ancak bu, yeterince açıklanmadığı ya da iş uygulamaları geliştirmenin kavramı kavramalarını zorlaştırdığı için olabilirdi. Her iki argümanı da gözlemlemek kesinlikle ilginç.
Edward

@ penguen ne şekilde Call of Duty veya Halflife oynamak size programlama öğretir?
Nisan’da

13

Öyle bir diğer yolların yanı sıra, programlama öğrenmek için bir yol. Kod yazarken bir şeyler öğrenirsiniz. Şimdi, en iyi yol bu mu? Pek emin değilim.

En azından öğretmeniniz tarafından verilen iki sebep geçerli değil .

  • "Herşey kodda oluşturulan gerekiyordu" : Eğer bir iş uygulaması yazarken, sen aslında kod yazıyoruz. Büyü tarafından yazılmayacak. Evet, otomatik olarak üretilen kodu kullanmanıza yardımcı olan yardımcılar var. Hayır, onları kullanmak zorunlu değildir. Bu arada, otomatik olarak üretilen parçalar genellikle programlamanın en sinir bozucusudur (Windows Forms kontrolüne, heyecan verici ve faydalı bir şeyler öğreneceğiniz kontroller eklemek değildir).

  • “OOP'yi programlarınızda gerçekten tam anlamıyla tecrübe edip uygulayacaksınız” : birileri bana bunun sadece oyunlar için neden geçerli olduğunu fakat başka bir şey için geçersiz olduğunu açıklamalıdır. OOP'yi anlıyorsanız ve kullanmak istiyorsanız, onu iş uygulamalarında da kullanabilirsiniz. Almazsanız veya kullanmak istemezseniz (ve örneğin fonksiyonel programlamayı kullanmayı tercih ederseniz), oyun geliştirme sizi değiştirmeye zorlamaz.

Fakat:

Oyun geliştirmek eğlenceli olabilir . Gençlerin çoğu oyunları sever, bu yüzden çoğu için çok sıkıcı olacak bir iş uygulaması yazmak yerine oyun geliştirmekten hoşlanırlar. Bunu görünce, öğretmenler oyun oynamanın programlama öğrenmenin en iyi yolu olduğuna inanmaya başlayabilir ve bunun için mantıklı bir açıklama bulmaya çalışırlar.

Bu söyleniyor ki, öğretmenler gençlerin iş uygulamalarının gelişimi kadar sıkıcı olduğu oyun geliştirmeyi bitiriyor. Oyun oynamayı OOP vb . Öğrenmek için yapılması gerektiğine inanırlarsa, öğrencilerinden hiç eğlenceli olmayan projeleri yapmalarını ister. Bu kolejdeyken öğretmenlerimin en büyük hatalarından biriydi. Ada'da konsol kipinde yazmak için oyun projeleri bize çok sık verdiler. Grafik yok Eğlenceli değil. Kullanıcı deneyimi yok. Hayatım boyunca ve kariyerim boyunca, hiç bu kadar sıkıcı projeler görmedim.


4
Her ne kadar görmek çok kolay olduğundan Oyunlar OOP ile iyi çalışmaz BadGuy, Weapon, PowerUp, bir oyun ve diğer öğeleri kolayca bir nesne olabilir. Nesneler arasındaki etkileşimleri ve ekrandakileri görmelerini sağlarsınız. Bence görsel kısım, bu kadar çekici kılan şey. Tipi hiyerarşileri var İş uygulamaları ServerTaskScheduler, AbstractDataProcessor, UserQueryAgent, vb ... olarak değil heyecan verici Kullanıcılar, oyun aynı OOP kavramları öğretmek olsa bile,.
SinirliFormsDesigner ile

4
@FrustratedWithFormsDesigner: belki de anlamıyorum, çünkü iş uygulamaları geliştirmek için çok fazla zaman harcadım, ama neden nesnelerin nasıl olacağını Customerveya Productveya Transactionolabileceğini görmek neden daha zor olacağını anlamıyorum . Ancak, BadGuys ile uğraşmanın sıkıcı olmaktan çok daha zevkli olduğunu anlıyorum Transaction.
Arseni Mourzenko

Soyut düşünme düzeyi hakkında yapması gereken daha çok şey var. Bazı programcılar isimlere çok takılıyorlar çünkü ne yapacakları hakkında hiçbir fikirleri yok. Örn, ne Transactiongerektirdiği hakkında hiçbir fikri olmayan bazı devlerle tanıştım .
Spoike

7

Oyun programlama, oyun programlamayı öğrenmenin en iyi yoludur. Eğer web gelişimini öğrenmek istiyorsanız, bunu yapın, sistem programlamayı öğrenmek istiyorsanız, bunu yapın.

Oyun programlaması zordur ve büyük olasılıkla size pek çok şey öğretecektir (Michael cevabında birçoğunun dikkatini çekti ve birçoğu çok zorlu ve dış mekanlarda da kullanılabilir). Bir RPG veya tycoon (veya benzeri bir oyun) oluşturmak size OOP tasarımı hakkında çok şey öğretecektir çünkü bu paradigmaya çok iyi borç veriyorlar. Grafiklerinizin ve fizikinizin karmaşıklığına bağlı olarak performansla ilgili önemli konular, oyunlar için bazı zorlu matematikler vb. Hakkında da çok şey öğrenebileceksiniz.

İyi bir yol ve bazı şeyleri öğrenmenin en iyi yolu, ancak programlama öğrenmek için üstün bir yol değil. Kaç oyun programladığınızın bir önemi yok, muhtemelen bir işletim sisteminin nasıl yapılacağı hakkında hiçbir fikriniz olmayacak. Sanırım çoğu geliştirici, zaman geçirdikleri sürece, programlamanın ana disiplini olarak yapmasalar bile, bir oyun geliştirerek hala bir şeyler kazanabileceğini düşünüyorum.


7

Soru: Programlamayı öğrenmek için en iyi yöntem nedir

Cevap: Gerçekten yaptığınız yöntem

Yani, bir şey öğrenirken veya bir şey yaparken, hangi yöntemi seçeceğiniz önemli değil.

Oyun oynamak sizin için gerçekten eğlenceli görünen bir şeyse, bunun için gidin. Matematik problemlerini çözmeyi daha tatmin edici bulursanız, bununla başlayın. Pek çok farklı programlama türü vardır ve her biri farklı beceriler gerektirir, bu yüzden iyi bir bahis en ilginç bulduğunuzla başlamaktır, muhtemelen birlikte çalışacağınız kişi budur.

... Ama evet, oyun, matematik, eşzamanlılık, algoritmalar, oop, grafik vb. İçeren çok geniş bir programlama dizisini öğrenmenin iyi bir yoludur.


4

Eğer oyun oynamayı seviyorsanız, oyun yazmak, gelişime girmek için iyi bir yol olacaktır, ancak bunun en iyi yol olduğunu söyleyemem. Bence en iyi yol, CS personel kursu ve ardından genç personelin eğitimine ve danışmanlığına yatırım yapacak bir yazılım evinin bulunduğu bir iş.

Kuşkusuz bunun yerine görkemli bir yanıtsız ki, evet, oyun geliştirme size bence çok iyi beceriler öğretir ve bilgisayar oyunlarından hoşlanıyorsanız, geliştirme sürecine ilginizi çekecektir. Kitaplarda gördüğünüz birçok basit uygulamadan daha ilginç olmalı.


2

Kodlamayı öğrenmenin en iyi yolunun sizin için eğlenceli hale getirmektir. Gerçek bir oyun olmak zorunda değil, ama senin için bir çeşit oyun. Bana göre, bazı matematik problemlerini, algoritmaları geliştirerek karmaşık bir problemi mümkün olan en hızlı şekilde çözebilecek şekilde çözmek için bir oyundur. Kendime meydan okumak, bir problemi çözmek için her girişimde daha iyi bir kodlayıcı olurum. Sorun ne kadar zorsa, o kadar iyi.

Kurallara (en iyi uygulamalar) öğrenme konusunda, daha büyük zorluklarla karşılaşmanız gerektiğini söyleyebilirim. Tek bir giriş / çıkış için çok daha fazlasını gerektirir.


2

Halflife veya Call of Duty oynamanın size programlama becerilerini öğrettiğini iddia etmemiştim

Bunları programlamak olabilir, ancak böyle bir şeyi programlamak bir aceminin biraz denemek zorunda olduğu bir şey değildir. Ve özellikle yeni başlayanlar çoğu zaman var olmayan programlama bilgisi ile bir sonraki gişe canavarı yaratabilecekleri izlenimi altındadır. Onlara önce bir PacMan veya Tetris klonu yapmalarını söyleyin ve yapmak istediklerinin bu olmadığını ve 'bana zuh koduz' vermelisiniz 'diye bağırdılar.


1

Gerçekten hayır. Programlamayı öğrenmek için en iyi proje türü değil . En iyi proje türü çıkarlarınızla ilgili olanıdır.

Örneğin, oyunları programlamayı öğrenmek de dahil olmak üzere birkaç farklı şekilde programlamayı öğrenmeye çalıştım. Sadece asla sopa gibi görünmüyordu.

O zaman araştırmamda yaptıklarım için nasıl programlanmayı öğrenmem gerektiğinde? Şu anda 2 dil bildiğimi söyleyecek kadar rahatım ve üçüncüsü üzerinde çalışıyorum. Niye ya? Çünkü ilgilerimle ilgiliydi. Yapmak için bir nedenim, öğrenmek için bir neden ve kitaptaki sadece "Egzersiz 8" den daha fazla denemek için bir sorunum vardı.

Bu, tesadüfen, salgın modellerin programlamanın öğrenilmesinin en iyi yolu olduğu anlamına gelmez. Ama benim için en iyi yol buydu. Seninkini bul. Oyunlar olabilir, ama çok iyi olmayabilir.


"En iyi proje türü çıkarlarınızla alakalı olan" dır. Amin.
Bryan Oakley

0

Kendi tecrübelerime göre, bir oyun yazarak (bunu kendi / küçük geliştirici ekibinizde yaptığınızı varsayarak), yalnızca programlamanın algoritmik / analitik kısmını değil, aynı zamanda kullanıcı deneyimini ve tasarımını düşünmek zorunda kalırsınız.

Buna ek olarak, eğer oldukça karmaşık bir oyunsa, birkaç ay boyunca bunun üzerinde çalışacaksınız ve yaptığınız her şeyi belgelendirmenin önemini anlayacaksınız - ki bu sizi daha sonra bir takımın daha iyi bir üyesi yapacak.


... ancak bir kullanıcıyla etkileşime giren herhangi bir program yazarsanız, kullanıcı deneyimi ve tasarımı hakkında düşünmeye zorlanmıyor musunuz? Geleneksel bir müşteri uygulaması ile gerçekten bu şeyleri düşünmek zorunda olmadığınızı mı söylüyorsunuz, ancak oyun sizi zorlar mı? Ayrıca büyük masaüstü uygulamaları birkaç ay sürebilir ve bazı belgeler yapmanızı ister mi? Bunlardan herhangi biri oyun için nasıl geçerlidir fakat diğer programlama türlerinde geçerli değildir?
Bryan Oakley


0

Dışında kabul ediyorum ...

Bu, pek çok kişinin sahip olduğu ilk programlama deneyiminin bir Lego robotu (Mindstorms) inşa etmesi ve programlamasıydı.

Genel olarak “oyun” terimi, neredeyse tüm programlamayı kapsayacak kadar büyük bir kategori tanımlayabilse de, orijinal poster bağlamında kullanıldığında, her zaman “Doom tarzı oyunları yazmak” anlamına geliyor.

Daha önce de belirtildiği gibi - programlamayı öğrenmenin en iyi yolu, gerçekten bir program gerektiren bir şeye sahip olmaktır. Bu - istediğiniz programı yazarak programlamayı öğrenin.

İlk Windows programlarımdan biri bir MIDI denetleyici programdı, çünkü gerçekten bir MIDI denetleyici programı istedim ve Windows mükemmel bir uyum sağlamıştı (kaydırıcılar, düğmeler, MIDI için SDK desteği vb.). Bu programdan Windows programlaması hakkında bir ton öğrendim (bu, Win 3.1 gününe geri döndü).

Burada belirtilen nedenlerle oyun programlamasına hiç kısmadım - o kadar iyi çizemiyorum, bu yüzden yaptığım her oyunda bir sanatçınınki grafikleri daha zayıf olacak. Bir "oyun kurucu ekibi" yönetmeyi değil (takdiri çıkarılabilir ama tamamen farklı bir egzersiz yapmayı) programlamayı öğrenmek istiyorum.

Sonunda ben öğretmenin ifadesine tamamen katılmıyorum. Programlamayı öğrenmenin en iyi yolu, gerçekten istediğiniz programı yazmaktır.

-R

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.