Mevcut projemi parlatmak yeni bir projeye başlamaktan daha iyi bir öğrenme deneyimi olacak mı? [kapalı]


15

Programlamaya yıllar önce başladım. Şimdi oyun yapmaya çalışıyorum. Galaga, tetris, arkanoid, vb. Gibi iyi bilinen oyunları klonlamaya başlamak için birçok öneri okudum. Ayrıca tüm oyun için (menüler, ses, skor vb. Dahil) gitmem gerektiğini de okudum.

Dün arkanoid klonumun ilk tam sürümünü bitirdim. Ama bitmek bilmiyor. Ekran çözünürlüğü değiştirici, kontrol tuşlarının yeniden eşlenmesi, kırık tuğlalardan düşen güçlendirmeler ve devasa bir vb. Uygulayarak aylar boyunca hala çalışabilirim (boş zamanımda bir hobi olarak programlıyorum).

Ama sonsuza kadar ONE oyununu klonlamayı öğrenmek istemiyorum. Bu arkanoid klonunu geliştirirken karşılaştığım bazı tasarım fikirlerini uygulamak için bir sonraki klona gitme isteğim var (aynı zamanda GoF kitabını ve Ludum Dare 21 oyun yarışmasından çok fazla kaynak kodunu okuyorum).

Yani soru şu: Orijinal oyunun sahip olduğu tüm özelliklere sahip olana kadar arkanoid klonunu geliştirmeye devam etmeli miyim? ya da bir sonraki klona geçmeli miyim (klonlamak için neredeyse sonsuz oyunlar var) ve bir önceki klonla yanlış yaptığım şeyleri onarmaya başlamalı mıyım?

Bu çok öznel bir soru olabilir, bu yüzden lütfen kendi oyunumu nasıl yapacağımı öğrenmek için en etkili yolun cevaplarını kısıtlayın (birisinin fikirlerini klonlamak değil). Teşekkür ederim!


AÇIKLAMA

Neyi uyguladığımı netleştirmek için bu listeyi hazırlıyorum:

Uygulanan özellikler:

  • Zıplatma yetenekleri (top duvarlarda, tuğlalarda ve çubukta sıçrar).
  • Tuğlalar ve çubuk üzerinde zıplarken ve oyuncu kazandığında veya kaybettiğinde ses çıkarır.
  • Temel başlık menüsü (yalnızca yeni oyun ve çıkış). Ayrıca oyun içi menü ve menüler kazanmak / kaybetmek.
  • Sadece üç seviye, ama harita sistemi o kadar kolay ki bana çok şey öğreteceğini sanmıyorum (yanlış mıyım?).

Uygulanmayan özellikler:

  • Tuğlaları kırarken güçlendirmeler.
  • Karmaşık tuğlalar (birden fazla "isabet noktası" ve yenilmez).
  • Daha iyi grafikler (Gerçekten iyi değilim).
  • Parlatma programlama (tasarım desenlerini daha yoğun kullanın).

İşte onun (minimal) web sayfasına bir link: http://blog.acamara.es/piperine/ Bunu göstermek için utanıyorum, bu yüzden lütfen bana çok sert vurmayın :-)

Sorum uygulanmayan özelliklerle ilgiliydi. Öğrenmek için en hızlı (en uygun) yolun ne olduğunu merak ettim. 1) büyük olan bu projede uygulanmayan özellikleri uygulamak veya 2) bana muhtemelen bu dersleri ve yenilerini öğretecek yeni bir oyun yapmak.


CEVAP

Ben @ ashes999 cevap seçin çünkü benim durumumda , ben daha fazla cila ve oyunu "gemi" düşünüyorum. Bence diğer tüm cevapların da akılda tutulması önemlidir, bu yüzden buraya aynı soruyu getirdiyseniz, acele bir karar almadan önce tüm tartışmayı okuyun.

Hepinize teşekkür ederim!


Üzgünüm ama değil, objektif bir soru söyleyerek yapmak o nesnel. Bu bağlı olacağını kişinin hepsi, bir yapar - onlar projelerini değiştirmek gerekmediğini, yetenekleri, hedefleri ve motivasyon sübjektif bir soru. Bu sorunun basit bir “doğru” cevabı yoktur.
Tepegözler

Haklısın, "sübjektif" düşündüm ama "objektif" yazdım (aynı zamanda bana sol ve sağ ile de olur ...). Ben değiştirdim.
Alejandro Cámara

Wups, bunu duyduğuma üzüldüm. Ancak, bunu söylemekten nefret ediyorum, ancak bu site için hala iyi bir soru değil. StackExchange sitelerinin amacı, yalnızca bir (veya birkaç) kişi için geçerli olan sorular değil, birçok kişi için faydalı sorular / yanıtlar oluşturmaktır . Ayrıca, (ideal olarak) tek bir doğru cevap olmalıdır - ancak gelecekte bu yayını bulan insanlar için, bazıları bir cevabı en iyi, bazıları ise çelişkili yanıtı daha iyi bulabilir.
Cyclops

1
Bunun da iyi bir soru olmadığını hissettim. Ama yine de yazmamın nedeni, belki de birisinin aynı ikilemle sıkışmış olması. "İyi" bir cevap olmasa bile, tartışma diğer insanların "doğru" cevaplarını almalarını sağlayabilir.
Alejandro Cámara

1
Şahsen bir öğrenme projesinin kapsamının tüm oyun özelliklerini içermesi gerektiğini düşünüyorum (bu yüzden power-up'ları uygulayın) ancak bundan sonra projeyi tamamlayın ve devam edin; parlatma grafiklerini rahatsız etmeyin.
jhocking

Yanıtlar:


32

Patrick'in cevabına tamamen katılmıyorum . Bir oyun geliştiricisi olarak başarılı olmak istiyorsanız, öğrenmeniz gereken bir numaralı beceri nasıl bir fikir alacağınız ve eksiksiz, cilalı bir oyun nasıl göndereceğinizdir.

Zamanla fark edeceğiniz şey (birkaç yıl sonra fark ettiğim şey), programlamanın oyununuzun sadece küçük bir kısmı olduğudur. Kolay, çünkü eğlenceli. Ancak sadece programlamaya sadık kalmak, kavramların ve kanıtların eksik kanıtı izini bırakacaktır.

Bunun yerine, bir web sitesi ve blog (Wordpress bu tür şeyler için harika) koymanızı, oyunlarınızı bitirmenizi (Arkanoid ile başlayarak) çok güçlü bir şekilde önerebilir ve onları vahşi olarak bırakabilirsiniz.

Ayrıca, bunu yaparsanız, oyunun ne zaman yapıldığını kontrol ettiğinizi anlamanız önemlidir . 10 ana özellik ile 1000 seviyeleri istiyorsanız, iyi. 3 ana özellikleri ile 10 seviyeleri istiyorsanız, iyi. (Aslında daha küçük projeleri daha sık öneriyorum, çünkü daha fazla öğreniyorsunuz ve bu şekilde cilalamaya çok odaklanıyorsunuz).

Düzenle: Katılmıyorum insanlara yanıt olarak, açıklığa ihtiyacım var hissediyorum. Bir amaç / deney için ( her zaman yaptığım ) bir oyun oluşturduysanız , elbette kapsamı kesin ve gönderin. Kimse Arkanoid'in cilalı bir oyun için 1000 seviyeye ihtiyacı olduğunu söylemedi; sadece sizin fikrinize göre, eğlenceli ve devam etmek için yeterli seviyeleri yapmak.

Yılları bir oyuna harcamak ve asla gemi göndermek mümkün değildir. Ancak sonsuza kadar sadece teknik demolar ve prototipler üretmenin diğer deliğine girmenin çok daha kolay olduğunu hissediyorum. Bunu kendim yapmam 10 yıldan fazla sürdü.


3
+1 "gönderim (gerekli?) Bir özelliktir", ancak bu durumda arkanoid klonunu bir prototip olarak da görebilirsiniz ve bir kavram kanıtlandığında veya onaylanmadığında prototipler atılır.
Oskar Duveborn

2
@Oskar, 1000 prototip yapmak bir oyun göndermekten daha kolaydır. Sonuçta, nakliye sizi başarılı kılacak, prototipler ise sadece bazı kodlama becerilerini artıracak.
ashes999

2
Neden "sadece bazı kodlama becerilerini artırın"? Özellikle öğrenme deneyimini soruyor.
jhocking

@ Patrick'in cevabı yüzünden sarsılıyor. Cevabım özellikle kodlama becerilerinin ötesine odaklanmak.
ashes999

1
@Yannbane Eğer insanlar oynayıp "evet bu tam bir oyun" diye düşünürlerse, kısa bir oyun olsa bile, bu tamdır. Eksik, genellikle bozuk oyunlar veya bir seviye gibi oyunlar. Kapıdan dışarı gönderdikten sonra işiniz bitti.
Mart'ta

8

Önceki iki cevabın bir sentezini öneririm. Temel olarak, bir fikri nasıl alacağınızı ve eksiksiz, cilalı bir oyunu nasıl göndereceğinizi öğrenmenin çok önemli olduğunu kabul ediyorum. İnternet, birinin başlattığı ve sonra sıkıldığı yarı tamamlanmış projelerle doludur. Bir projeye baştan sona yapışabilme, “bitirme yeteneği” dediğim şey, nadir ve değerlidir ve kendinizi uygulamayı uygulamaya zorlayarak kazanılır.

Ancak henüz öğreniminizde o aşamada değilsiniz; Bunu ilk oyununuzla yapmanızı önermiyorum, daha ziyade ilk projenize başlamadan önce öğrenmek için birkaç küçük oyun yapın.

(bir yana: Bunu daha önce hiç tam olarak saptamadım, ama şimdi düşündüğüme göre, bitirme yeteneği tecrübeli geliştiricileri acemilerden ayırırken gördüğüm ana şey)


EK: Bence cevaplar arasındaki birçok anlaşmazlık, sürecinin neresinde olduğu konusunda farklı varsayımlara dayanıyor. Örneğin, "Arkanoid klonumun ilk tam sürümünü bitirdim" dediğinde, bu birçok farklı anlama gelebilir. Benim durumumda, daha önce "Bütün oyun için (menüler, ses, skor dahil) gitmem gerektiğini de okudum" dediğinden, o zaman aslında bu şeyleri uyguladığını ve daha da devam edip etmeyeceğini soruyor. hayır diyebilirim, bu projeyi yap ve bir sonraki projeye geç.

Ancak bu benim açımdan sadece bir varsayım; aslında o şeyleri yaptığını söylemedi , sadece okuduğunu söyledi. Eğer o şeyleri yapmadıysa, o şeyleri yapana kadar devam etmeyin derim.


1
+1 Beni döv! Kulağa yeni başlamış gibi geliyor, bu yüzden mümkün olduğunca çok şey yapmak ve öğrenmek, öğrenmek öğrenmek daha önemlidir. İyileştikçe cilaya odaklanabilirsiniz. Aksi takdirde ilk maçınızda 2 yıl harcarsınız.
NoobsArePeople2

1
Katılmıyorum. On yıl kod yazabilir ve asla tek bir oyun gönderemezsiniz. Veya ilk altı ayda basit bir arkanoid klonu gönderebilirsiniz. Ikincisi genel olarak daha güçlü bir geliştirici yapar hissediyorum, eski sadece yazılım geliştirme becerilerine yardımcı olur (ve o kadar değil - asla araçları, yaşam döngüsü, vb sadece kod hakkında düşünmek değil).
ashes999

10 yıl demedim mi? Yine de, 6 aylık tam projeden önce bir yıl boyunca bir grup uygulama alıştırmasını kodlayarak, 6 aylık tam projeyi doğrudan ilk projeniz olarak yapmaktan daha iyi olup olmadığı sorusu. Yaptığım öğretimde bu önemli bir soru; öğrencilerin bir sömestri bir sürü küçük projeyi veya tüm sınıfı alan tek bir büyük projeyi yaparak geçirmeleri daha mı iyi? Şahsen "lisans öğrencileri için çok sayıda küçük projeye, grad okulunda tek bir büyük projeye" eğildim.
jhocking

Benim duruşum, tüm proje kadar önemli olduğu için, bu projenin başarılı olabilmesi için önce bir dizi önceki projenin temellerini zaten öğrenmiş olmanız gerektiğidir.
jhocking

1
Önceki 2 cevap hangisi? Şu an itibariyle, bu, 2. sırada, oyla
ADB

5

Şimdi bir sonraki projeye geçmeniz gerektiği konusunda doğru fikre sahip olduğunuzu düşünüyorum. Bence bu zaten ilkinden öğrendin ve öğrendiklerini uygulamak istiyorsun! Temel bilgileri öğrenmeyi yavaşlattıktan sonra, öğrenmeye devam edebileceğiniz daha derin özellikleri klonlama zamanı olacaktır.

Oyun tasarımı üzerinde değil programlama becerileri üzerinde çalıştığınızı unutmayın, böylece öğrenmeyi bitirdiğinizde herhangi bir oyun tasarımını programlayabilmeniz gerekir.


3
@ Ashes999 ile aynı fikirde olduğumda ve siz de eşit derecede, OP'nin ifade ettiği bağlamda, uygulamaları denediğini, farklı oyun türleri yazmayı öğrendiğini hissediyorum. Bu durumda bir sonraki şeye geçmeyi tercih etmesi gerektiğini düşünüyorum.
Mühendis

Aslında, sadece oyun programlamayı değil, oyun tasarımını da öğrenmek istediğini ima etti. Son cümlesinde "kendi oyunumu nasıl yapacağımı öğrenmenin en etkili yolu (birisinin fikirlerini klonlamak değil)" dedi.
jhocking

2

Neden klonu "senin" yapmıyorsun? İlginizi çekecek yeni ilginç eklemeler ekleyin.

"Kendi" projenizi başlatmak için ters bir durum var, daha önce hiç yapılmamış gibi hissediyorsunuz. Gerçek şu ki, birisi zaten benzer bir şeye sahiptir. Yeni bir oyun türü icat etmeyi planlamıyorsanız, bu "klonları" kendiniz yapmanızı öneririm.

Örneğin, üniversitedeki arkadaşım bir pong "klonu" yarattı. Kendi yaptı, yeni bir oyun türü ekledi, burada bir güçlendirme bir kişinin yaklaşık 15 saniye boyunca tatlı bir tankı sürmesine ve mümkün olduğunca çok sayıda tuğlayı yok etmesine izin verdi!

Oyun geliştirmeyi (sanat, kod, tasarım) öğrenmenin en iyi yolu sadece bunu yapmaktır. İlk başta iyi yapamayabilirsiniz ama anahtar sadece tutmak ve daha fazla kod yazmak, daha fazla animasyon çizmek ve daha fazla seviye tasarlamak için !! Benim düşünceme göre, bir şeyi kendiniz yaptığınız, yapmaya devam ettiğiniz, ilginç kıldığınız ve eğlendiğiniz sürece "klonlamak" önemli değil!


2

Sorunuzu cevaplamak için, evet , mevcut projenizi parlatmak yeni bir projeye başlamaktan daha iyi bir öğrenme deneyimi olacaktır.

1) İşleri bitirme alışkanlığı edinmelisiniz. Bu kendi başına bir öğrenme deneyimidir.

2) "Eklemek için çok tembel" olduğunuz görevler (daha iyi bir terim olmaması nedeniyle), içinde tamamen atladığınız bir ton oyun geliştirme dersi içerebilir.

Eğer ediyorsanız 3) sıkılmış Arkanoid, her zaman bir kenara koyun ve şimdilik başka bir şey üzerinde çalışmak olabilir. Bunda yanlış bir şey yok.

1) Çok fazla bitmemiş şey kötü. Tamamlanmamış ürününüzü yeteneklerinizi etkili bir şekilde göstermek için kullanamazsınız.

Bunun nedeni, bitmemiş şeylerin bir dizisine sahip olmanın önemsiz dolu bir dolaba sahip olması gibidir. Bazıları yararlı görünüyor, ama gerçekte hepsi çok işe yaramaz ve oyun endüstrisinin gerçekliği, çok az "önemsiz" (bitmemiş oyunlar) takdir edecektir.

Bitmemiş oyunlar çok yaygın. İnsanlar onları oraya koydu ve "duh, bu oyun StreetFighter olsun sapposa oldu .. şimdi ileri geri hareket edebilirsiniz .." Etkileyici . Kimse kafanın içinde oyunun "sapposa" ne olduğunu göremez. Sadece ne olduğunu görüyorlar, bitmemiş.

Bitmemiş bir oyun yarı pişmiş bir tart gibidir. Bazı insanlar bunu takdir edebilir, ancak aslında iğrenç bir tadı vardır ve fırında 20 dakika daha fazla yaptığınız şeyi yarıya herkes için lezzetli hale getirebilir.

2) Üzerinde çalışmaktan kaçındığınız özelliklerin içinde çok değerli dersler olabilir.

Bitirirken engellediğiniz şeyler:

Uygulanmayan özellikler:

  • Tuğlaları kırarken güçlendirmeler.
  • Karmaşık tuğlalar (birden fazla "isabet noktası" ve yenilmez).
  • Daha iyi grafikler (Gerçekten iyi değilim).
  • Parlatma programlama (tasarım desenlerini daha yoğun kullanın).

Bunlardan bazılarını dışarıda bırakabilirsiniz. Örneğin, "Tasarım desenlerini daha yoğun kullanın". Böyle bir yeniden düzenleme, bir evcil hayvan projesi için zaman kaybıdır, bunu uygulamak için sadece yeni bir proje başlatmalısınız.

Bunlardan bazıları kolaydır. Örneğin karmaşık tuğlalar. Bunlardan bazıları aslında çok fazla iş . Powerup'lar kolay değil, silahlar, mermiler gibi şeyler inşa etmenizi gerektiriyorlar, ışın kesişme kodunun eklenmesini gerektiriyorlardı.

Bence gördüğünüz şey "iskeleyi yerine koymak çok kolaydı ... ve neredeyse bitti. Bakın bitirmek çok iş olurdu, şimdi de durabilir". Evet, bir ev için ahşap çerçeveyi dikmek de "kolay" ve işin yarısı olabilir. Alçıpan duvar, elektrik, sıhhi tesisat, hepsi "detaylar" dır. Ama ev bitirme vermeyerek, kimse ev ne kadar büyük "al" -a olur sadece bunu bitmiş olurdu eğer olmuştur.

3) Üzerinde çalıştığınız şeyden sıkıldıysanız, başka bir şeye başlamakta yanlış bir şey yoktur.

Bu, üzerinde çalıştığınız önemsiz şey anlamına gelmez, ancak başka şeyler hakkında düşünmek veya yeni bir oyun başlatmak için bir veya iki ay harcamakta bir sakınca yoktur. Arkanoid'e yeni bir bakış açısıyla geri dönebilirsiniz.

Ayrıca son nokta. Arkanoid'in beklenen tüm özelliklerini oluşturmanın yanı sıra , kendi bükülmenizi koymak daha da ilginç. Yani klonunuzu kısaltmak yerine, onu bir adım daha ileri götürmeli ve orijinal oyunda yenilik yapmalısınız .


1

Doğru cevap gerçekten bir sonraki adımda ne yapmak istediğinize bağlıdır. Yeni bir şeye geçerseniz, aynı eski problemleri tekrar tekrar çözme ve becerilerinizi gerçekten genişletmeme riskiyle karşılaşabilirsiniz, ancak yeni bir şeye geçebilirsiniz. Cilalamaya devam ederseniz, verdiğiniz kısa listeden öğrenmeniz gereken yararlı şeyler vardır ve gelecekte size iyi gelecekler, ancak yine de aynı eski kod tabanı üzerinde çalışıyorsunuz.

Ne tavsiye ederim, ve bu tamamen kişisel bir fikir, yeni bir şeye geçmek ve bunun için cilayı kurtarmak. Aynı zamanda yeni bir şeyle kendinizi germeye çalışın. Dolayısıyla, şu anda bir 3D API kullanmıyorsanız, bir tane öğrenin ve kullanın. Birini kullanıyorsanız diğerini öğrenin ve kullanın. Veya kullandığınız seviyede daha ileri bir seviyeye geçin. Hareket halindeyken daha iyi bir ses, fizik veya giriş motoru ekleyin. Her neyse, önemli olarak gördüğüm şey, mevcut konfor bölgenizin biraz dışına çıkmak ve eğlenirken daha fazla beceri ve bilgi oluşturmaktı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.