Bir öğretici olarak oyun mu yapıyorsunuz? [kapalı]


19

Okulumda bir oyun geliştirme kulübünün sorumlusuyum ve bu yaz bir sonraki dönem ders olarak kullanabileceğim bir proje üzerinde çalışmak istiyorum. Hiç böyle bir şey yapmadım bu yüzden kimse herhangi bir rehber çizgileri veya fikirleri olup olmadığını merak ediyordum.

Temel olarak yapmak istediğim çok basit bir oyun yapmak. Düşmanların onları öldürmek ve biraz ganimet almak için acele ettiği yukarıdan aşağıya bir atıcı gibi bir şey. Ancak, her şeyin kolayca değiştirilmesini istiyorum. Kulüpteki insanların çok az oyun geliştirme deneyimi var, bu yüzden oyunumu insanlar kolayca değiştirebilecek ve işlevsellik ekleyebilecek şekilde kurabilirsem, onlar için harika olurdu.

Davranışın oynaması kolay olan bir düşman sınıfına sahip olmak ya da silahların farklı atış yapmasını / yeni silahlar eklemeyi ve yeni yağma gibi şeyler. Hatta oyuna yeni unsurlar eklemek. Bu tür bir dövülebilirliğe izin vermek için oyunu inşa etmenin en iyi yolu ne olurdu?


1
Stack Overflow'da bu cevaba bir göz atın .
Andrew Russell

Yanıtlar:


16

Oyun geliştirmede bu hedefe ulaşmanın geleneksel bir yolu, oyun sistemleri için veri odaklı bir mimari kullanmaktır.

Özünde, bu, kodun menzili / hasarı / nüfuzu için açıkça tanımlanmış değerlere sahip belirli bir silah türünü (silah) uygulamadığı, menzilli bir silahın (menzil / hasar / nüfuz ...) genel kavramlarını doldurduğu anlamına gelir. harici (koda) veri kaynağından. Bu harici kaynak, diskten okunan ayrıştırılabilir (belki XML) dosyalardan, oyun motorunun kendi içinde veya dışında bulunan araçlar aracılığıyla oluşturulan ikili dosyalara veya veritabanı öğelerine kadar değişebilir.

Düşman gibi bir şey tanımlayan AI sistemi, daha sonra veriye dayalı öğeler tarafından değiştirilen bazı genel davranışları (agresif, savunma, destek, korkak) desteklemek üzere tasarlanabilir.

Yeni Düşmanım, aşağıdakiler için veri odaklı değerlerle agresif temel AI davranışı ile başlar: -güvenli oyuncular> seviyem + X - doğma noktasının ötesinde X birimine kadar olan oyuncular-sağlık <X menzilli yetenek öncelikleri-yakın yetenek öncelikleri olduğunda kaçma (oyuncular çok yaklaştıklarında)

Daha karmaşık bir veri güdümlü şema, bir AI durumunun (sonlu durum makinesi) başka bir duruma geçtiği (veya diğer N durumundan birine geçiş şansının olduğu) belirli veri noktalarının (olayların) tanımlanmasına izin verebilir. karmaşık davranış hiyerarşisi.

Tüm bunlar elbette sadece bir davranışı kodlamaktan daha fazla iştir, ancak kullanıcıların kaynağı değiştirmeden içerik üretmelerini sağlamak eğlenceli bir mücadeledir.

Ulaşılacak bonus puanlar var:

  • verileri dinamik olarak güncelleyebilir ve uygulamayı yeniden başlatmadan değişikliklerin oyun motoruna yansıtılmasını sağlayabilirsiniz
  • doğrudan metin (xml veya başka bir şekilde) dosyaları düzenlemek yerine, verilerle etkileşim kurmak için bir arabirim kullanmalarına izin veren veriler üzerinde kullanıcı dostu kullanıcı arayüzleri oluşturursanız

Daha teknik bir kalabalık olarak hedeflenen bir öğretici oyun için, işin çoğu, kullanıcıların veriye dayalı olabileceği genişletmek için temiz arayüzler ortaya koyan tasarlanmış sınıflarda / nesnelerde.


Güzel cevap! +1
AttackingHobo

Giriş için teşekkürler :)! Bana bu tür kodların nasıl uygulanacağını gösteren herhangi bir siteyi biliyor muydunuz? Hiç böyle harici kaynaklarla oyunlar yapmadım. Kulüpte XNA'da kodlamalarını kesinlikle istesem de, muhtemelen kendi sınıflarında kolayca devralabilecekleri sınıflar ve nesneler boyunca daha fazla bir şey yapacağım. Ama kesinlikle buna bakacağım,
Benixo

Bunu yapmanın harika bir yolu, çok basit veri güdümlü yapıların yüklenmesine izin vermek için kendi yapılandırma ayrıştırıcınızı gerektirir. Temelde herhangi bir öğreticinin anahtarı parçalar halinde öğretmektir, bu nedenle soyutlama kesinlikle anahtardır. O zaman iyi bir alıştırma, kullanıcının yeni silah türleri tanımlamasına ve yaratmasına izin veren basit bir GUI tasarlayabilir.
deceleratedcaviar

Oyunlardaki en yaygın veri odaklı yönler seviyelerdir. Her şey sabit olarak kodlanmış olsa bile, seviye tasarımları (örneğin, sahnenin yerleştirildiği, düşmanların yerleştirildiği yer vb.) Neredeyse her zaman oyunun yüklediği veri dosyalarında tanımlanır. İkinci bonus noktası, bir seviye düzenleme aracını açıklar.
jhocking

Diske / diskten nesne yazma / okuma işlemi "de- / serileştirme" olarak bilinir. Bu terim altında bazı yararlı öğreticiler bulabilirsiniz.
Exilyth

1

Projenizi nasıl başlatacağınız ve bir öğreticiye dönüştürülebilmesi için adım adım nasıl oluşturacağınız hakkında birkaç fikir arıyorsanız, XNA Game Programming Adventures'a bir göz atın . Yazar, adım adım artan açıklama ve kaynak kodu ile birlikte birkaç öğretici hazırlamıştır.


0

Www.thenewboston.com adresindeki Java Oyun Geliştirme eğitimine bakmanızı öneririm

Silahlarla ve tüm bu cazlarla tam olarak aradığınız şey olmayabilir, ancak oyun geliştirmedeki bir dizi önemli faktörün adım adım güzel bir şekilde verilmesini sağlar. Sunucu "Bucky" de soğutulmuş, sadece eğlenceli bir öğretim tarzı var. Zevk almak.

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.