Bir veya iki gün içinde Java oyunu [kapalı]


9

Biz üç kişi bir okul projesi (Üniversitesi ilk yılı) olarak Java basit bir oyun yapacağız. Oyun nesne yönelimli olmalıdır. Fazla vaktimiz yok, 10-20 saat başında. Hiçbirimizin oyun geliştirme konusunda deneyimi yoktur, ancak hepimiz Java konusunda adil becerilere sahibiz.

Tam olarak ne tür bir oyun seçebiliriz ve problem burada yatar. Ne kadar yükseğe nişan almalıyız? Bir yarışma var, bu yüzden sahip olduğumuz zamanda en iyi oyunu yapmak istiyoruz. Bir 3d oyun gerçekçi değil mi? Herhangi bir oyun motoru / kitaplığı kullanmalı mıyız? Ne tür işlevsellikten kaçınmalıyız?


4
3D, gamedev deneyiminiz olmadığı düşünüldüğünde, zamandan bağımsız olarak biraz yüksek hedefliyor. ; P
Komünist Ördek

ne yazık ki, ben düşündüm: P
Øyvind

TENİSİ! kürekler, top kendi nesneler var, bir puan ekleyin. top size bir raket vurur size yön -1 çarpı. eğer top raket noktasını geçerse, diğer takıma topu diğer oyuncuya servis ettirin. ya da bu çok kolay mı?>
Spooklar

Bence belki de daha iyi, daha yaratıcı bir konsept geliştirmeliyiz, ancak geliştirmesi kolay bir konsept ...
Øyvind

1
Oyununuzu bizimle paylaşmaya ne dersiniz? :)
ashes999

Yanıtlar:


23

3D'den kaçının , çünkü 3D modellerin nasıl oluşturulacağını veya iyi modellerin nasıl bulunacağını bilmeniz gerekir, bu tür modellerin nasıl yükleneceğini (genellikle kendi başına epik bir görev) ve bunları ekranda nasıl çizeceğinizi (ör. OpenGL veya DirectX az kazanç için çok iş gerektirir ve jMonkeyEngine gibi bir motor bile temel 3D bilgisiyle birlikte motorun nasıl kullanılacağı hakkında bilgi gerektirir). 2D görüntüleri ekranda karıştırmak ve hareket ettirmek, köşeler, malzemeler, görünüm matrisleri, dönüşümler vb. İle uğraşmaktan çok daha basittir.

Yerleşik Java kitaplıklarına ve sınıflarına sadık kalın: Graphics2D, ImageIO, AWT fare ve klavye dinleyicileri, Canvas, Java Sound API, vb. Başka bir kütüphane bulmak yerine bunlara bağlı kalmanın faydaları şunlardır: zaten onları (bir dereceye kadar) tanıyorsunuz, iyi test edildiğini ve istikrarlı olduğunu biliyorsunuz ve genellikle mantıklı, çevrimiçi belgeler ve kaynaklar bol ve taşınabilirler. yerel kütüphanelerle ekstra kütüphaneler kurmaktan endişe etmenize gerek yok.

Önceden küçük bir kod parçacığı kütüphanesi oluşturun. Bunlar arasında görüntü yükleme, görüntüyü ekranda bir konuma çekme, görüntüyü ve diğer efektleri ölçekleme, ses çalma, arka plan müziğini döngüye alma, sınırlayıcı kutu çarpışma algılaması, metin çizme gibi şeyler bulunur. Ayrıca bir Çerçeve (veya Applet) açan, ona bir Tuval ekleyen bir iskelet uygulamasına sahip olun ve tuvalin boya ve boyama yöntemleri geçersiz kılınmalı ve bir iplik tuval boyama yöntemini (veya onu çağıran bir zamanlayıcı) döngüye sokmalıdır. Aradığınızda bu şeyleri öğrenebilirsiniz Java 2D game programming. Üniversitenizin kütüphanesine erişiminiz olduğunu varsayarsak, emrinizde bir dizi iyi Java oyun kitabına sahip olmalısınız; onları kontrol edin ve yukarıda belirtilen parçacıklar için gözden geçirin ve kaçırdığım diğerleri.

Kaynak kontrolü ve iş bölümlerini önceden ekibinizle birlikte uygulayın.Subversion, Git, Mercurial veya başka bir şey mi kullanacaksınız? Herkesin bilgisayarları Java'nın aynı güncel sürümüne ayarlanmış mı? Deponuzu oluşturun, bazı dosyaları teslim edin / aktarın, herkesin deponun kullanıma alındığından ve sisteminize gitmeye hazır olduğundan emin olun. Belki bir 'merhaba dünya' uygulaması yapın ve herkesin onu çekip değiştirebildiğinden ve taahhüt ettiğinden emin olun; ve birleştirme işleminin nasıl yapıldığını bildiğinizden emin olun (iyi iletişim veya çift programlama ile tamamen kaçınmanızdan veya bir birleştirme aracını nasıl kullanacağınızdan emin olun). Veya, kaynak denetimine aşina değilseniz, işe yarayan bir çözüm bulduğunuzdan emin olun; üçüncü kişi sanat veya ses yaparken ya da başka bir şey yaparken çift programlama olsun, sadece başlangıçtan itibaren organize olduğunuzdan emin olun yoksa tonlarca zaman kaybedersiniz.

Yer işareti, ücretsiz medya sağlayan web sitelerine bağlantılar. Burada diğer sorularda listelenen bu tür sitelerden birkaçı vardır; freesound gibi sitelersıfırdan yapmak için zamanınız olmadığında oyununuzda kullanmak için yararlı medyaları hızlı bir şekilde bulmak için mükemmeldir. Elbette bu siteyi yer imlerine ekleyin, böylece bir şeye takılırsanız bir soru sorabilirsiniz. Cevapları arayabilmeniz için gamedev.net forumları gibi forumlara yer işareti koyun. Üçüncü taraf bir kitaplık kullanmayı tercih ederseniz, web sitelerine yer işareti koyun. Bu yer imlerini klasörler halinde düzenleyin ve mümkün olduğunca çok yer kapın ve üçünüzün de aynı yararlı yer imleri kütüphanesine sahip olması için paylaştığınızdan emin olun. Bu yer imlerini toplamak ve bunları türe / konuya göre düzenlemek çok zaman almaz, ancak projenizin ortasındaki tüm bu web sitelerini hatırlamanız gerekmediğinde size çok zaman kazandırır.

Daha fazla öneri için, "Oyun geliştirme yarışmasına nasıl hazırlanırım?" .


Sorunuzun geri kalanını ele almak için ... Genel tavsiye şudur: Yüksek hedef almayın . Bununla birlikte, ne kadar hazır olduğunuza (yani yukarıdaki önerilerim) ve Java'daki becerilerinize bağlı olarak büyük ölçüde değişebilir. Bu, büyük ölçüde geçmişinize dayanan kişisel bir yargıdır, ancak hiçbirinizin oyun yapma geçmişi olmadığından (ve dolayısıyla gerekli zamanı yargılayamazsınız), gerçekten çok düşük bir amaç hedefleyin . Gelişmiş konseptler olmadan 2D'de kolayca uygulanabilen gerçekten temel bir fikirle gel (örneğin piksel çarpışmalarından, çılgın fizik hesaplamalarından, parçacık efektlerinden vb. Kaçının). Ancak daha sonra öncelikli bir liste oluşturunOyunun özelliklerinden olabildiğince ayrıntılı olarak (örneğin, her özelliği mümkün olduğunca çok sayıda ayrı göreve ayırın). Bu şekilde, listeden mümkün olduğunca aşağıya doğru ilerlersiniz ve düşük öncelikli görevlere ulaşmazsanız, bu çok önemli olmamalıdır. Bu dikkatli bir şekilde yapılmalıdır (zamanın sonunda hala işlevsel bir oyuna ihtiyacınız vardır, bu yüzden yapılması gereken minimum görevler vardır ve bazı görevler diğer görevlere bağlıdır), ancak genel olarak bunun işlerin ne kadar süreceğini bilmediğinizde en iyi yaklaşım.


Bu mükemmel bir tavsiye.
Alexander Gessler

1
Güzel nokta. Her ne kadar kaynak kontrolünün yeni başlayanlar için işleri daha karmaşık hale getirebileceğini düşünüyorum (birisinin repoyu bozduğunu hayal edin). Zaman kritik olduğunda, yeni araçlar kullanmaya başlanmamalıdır. Ancak zaten bir VCS'ye aşina iseniz, kesinlikle kullanılmalıdır.
bummzack

4
Ricket'in düşük hedefleme ve öncelikli bir liste kullanma tavsiyesi harika - riski en aza indirgemek ve yinelemeyi arttırmakla ilgili. Herhangi bir şey yapmadan önce 8 saat çalışmanız gereken durumlardan kaçınmak istersiniz. Eğer işe yaramazsa veya bundan daha uzun sürerse, hiçbir şey yapamazsınız. Bunun yerine 1 saatin altında bir oyun oynamaya çalışın ve 10 saatinizin geri kalanını bir şeyler ekleyerek, test oynayın, rafine edin. Oynarken eklemek için daha fazla şey bulmaya devam edeceksiniz.
amitp

@bummzack Kabul etti! GERÇEKTEN yol açabilir, bu nedenle pratik yapın ve bundan emin olmak önemlidir, ancak doğru kullanıldığında da süper harika ve yararlı olabilir.
Ricket

İşleri hızlı bir şekilde nasıl çalıştıracağınız en iyi şey, onu aşırı programlama tarzında (svns'ten daha iyi) yapmaktır, yani tüm takımlar bir bilgisayarın önünde oturur. Küçük takımlarda harika çalışır (maks. 2-3). Birbirinizi desteklersiniz ve problemler daha çabuk çözülür - hayal kırıklığına uğramazsınız.
Notabene

2

Çok yüksek nişan alma. İlgilendiğiniz bir şey seçin ve bunun etrafında basit bir şey oluşturun. Örnek: Belki de bir fizik motoru hakkında bilgi edinmekle gerçekten ilgileniyorsunuzdur. Neden totem-destroyer veya benzeri bir fizik bulmacası kurmuyorsun ? Bir çekirdek elemanın etrafında dönmeye çalışın ve AI, sofistike render / grafik / gölgelendiriciler vb.Gibi diğer karmaşık şeyleri dahil etmeyin.

Focus bir yönüyle ve oyun-mekanik takım elbise o bulmaya çalışın. 3D ile ilgileniyorsanız, oyununuz tic-tac-toe kadar basit olabilir, ancak ekranda iyi 3D grafikler almaya odaklanabilirsiniz.

Aynı anda çok fazla yeni şey öğrenmeye çalışmayın. Mevcut çerçevelerden / araçlardan mümkün olduğunca yararlanın.

Bunu tamamlamak için, bir "başlangıç" oyunu için bazı fikirler: "Kanatlarınızı kazanmak" için iyi oyunlar nelerdir?

Güncelleme: Zamanınız gerçekten kısaysa, "öğrenilecek yeni şeyler" i en aza indiririm. Daha önce hiç kullanmadıysanız bir fizik motoru zaten aşırıya kaçmış olabilir. Ayrıca, zaten iyi tanımlanmış ve küçük bir kural kümesi ve sınırlı sayıda oyun durumu ile zaten bildiğiniz bir oyun mekaniği seçin.


2

3D oyun yazma konusunda daha önce hiç deneyiminiz yoksa, 3D fikri hemen bırakırım. Bunun yerine, basit bir oyun oynama konseptine odaklanın ve basit 2D grafikler kullanarak uygulamaya çalışın. Önce oyun mekaniğini uyguladığınızdan emin olun - daha önce işiniz bittiğinde, yine de gelişmiş görsel efektler ekleyebilirsiniz.

Ancak, oynanışı olmayan bir oyun bir oyun değil, çarpıcı grafiklere sahip olmayan bir oyun hala eğlenceli olabilir.

20-30 iş saatleri bu kadar iyi bir oyun için çok az zamanı gerçekten planına ihtiyaç ve dikkatli görevleri öncelik veya uygun bir sonuç almak asla.


Gerçekten iyi bir nokta :)
Øyvind
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.