Oyun geliştirme ile nereden başlamalı? [kapalı]


65

Ben bunu daha önce sorulan bu konuya stackoverflow.com de. Buradaki ilk yorumlardan biri beni buraya gamedev.stackexchange.com adresine yönlendirdi, bu yüzden burada yer alıyorum.

İlgili soruları araştırmak Çok özel sorular buldum, ancak teknik özelliklerin benim için kayıtsız kaldığıma korkuyorum ve Google’da 4 saat sonra başladığımdan daha yakın değilim, bu yüzden bir topluluğa ulaşmak istiyorum sırayla.

İlk olarak, amacım: Daha önce hiç oyun oynamamıştım, ancak birkaç kez karıştırıldım. Sonunda oturup kod yazmayı, oyun motorlarını kullanmayı vb. Öğrenmeyi başlatmaya karar verdim. Hepsi bir gün (umarım yakında) işlevsel (basit de olsa) oyunlar yapabilirim. Daha sonra karmaşıklık eklemeye başlayabilirim, şimdilik bir 3D dünyasında hareket eden klavye kontrollü bir kameranın ötesinde bir etkileşim olmadan hareket etmekten memnuniyet duyarım.

Geçmişim: SEVERAL programlama dillerinde PHP'den C ++ 'ye Java - ASM aralığında çalıştım. Yeni bir sözdizimini veya yeni bir dilin özünde olan sınırlamaları öğrenmekle gelen zorluklardan korkmuyorum. Bununla birlikte, geçmiş programlama deneyimimin tümü, kesinlikle grafiksel değildi ve uygulama sırasında genellikle çok az veya çok basit bir etkileşime girdi. Mantıksal ve matematiksel problemlerin yanı sıra grafik problemlerin çözümü için geniş ve mükemmel algoritmalar yarattım. Ancak her durumda giriş ya bir dosyada tanımlanmış, bir HTML formundan geçirilmiş ya da konsola yazılmıştır. Kullanıcı ile gerçek zamanlı etkileşim benim hiçbir deneyimim olmadığı bir şey.

Sorum şu: Oyun yapmaya çalışırken nereden başlamalıyım? Daha da iyisi, klavyede gezinilebilir bir 3D ortam oluşturmaya çalışırken nereden başlamalıyım? Çevrimiçi aramada oyun motorlarına, grafik motorlarına ve fizik motorlarına bağlanan birkaç kaynak buldum. İşte denedim birkaç motor ile deneyimlerimin kısa bir özeti:

Unreal SDK: Eğitim videoları zaten 3D modelleme, grafik motorları, animasyonlar, vb. Hakkında derinlemesine bilgi sahibi olduğunuzu varsaymaktadır. Zaten tanıdık. SDK'yı indirdikten ve araçların iddia ettikleri kadar sezgisel olup olmadığını görmek için başlattıktan sonra, 3D modellemem için yaklaşık 60 düğme ve boş bir boşlukla karşılaştım. "Hacim ekle" yi tıklatarak (basit bir küp eklemeye çalışmak için) 30 seçenekli bir menü ile karşılaştım. Panik, editörü kapattım.

Crystal Space: Web sitesi oldukça bilgilendirici göründü, Crystal Space'in sadece grafikler için olduğunu ve yardımcı yazılım olan CEL'in oyun yapmak için varlık mantığı sağladığını açıkladı. Oyun programlaması bilgisi olmayan insanlar için basit bir araç olan "CELStart" kullanılarak oluşturulmuş bir demo oyunu sağlandı. Ne yaratmak için sabırsızlandığımı görmek için oyunu başlattım. Birkaç kez dondu, menüler sıkıştı, binlerce grafik sorunu vardı, düşmanlar hasar vermedi ve oyunu kapattığımda kilitledi. Motordan vazgeçtim.

IrrLicht: Öğretici Visual Studio 6.0'a sahip olduğumu varsayıyor (Visual Studio 2010'a sahibim). Talimatları doğrultusunda, kütüphaneyi Visual Studio'ya düzgün bir şekilde aktarabildim ve kullanmaya devam ettikleri işlevleri çağıramadım. Başlık dosyalarının, sınıf dosyalarının ve DLL dosyalarının el ile projemin klasörüne kopyalanması - proje uygun şekilde derlenemedi.

Açıkçası iyi bir başlangıç ​​yapmadım ve çevrelere giriyorum. Birisi beni doğru yöne işaret edebilir mi? Blender gibi bir programı indirerek ve 3D modellemeyi öğrenerek mi başlamalıyım yoksa bir grafik motorunu nasıl kullanmalıyım? Her şey dahil bir oyun motoru aramalı mıyım, yoksa kendi oyun mantığımı denemek ve kodlamak daha mı iyi? Biri gerçekten kendi oyunlarını yapmış olsaydı, nasıl başladıklarını duymayı tercih ederim.

Ayrıca okulumda ders almak bir seçenek değildir. Hiçbir şey teklif edilmedi.


3
+1 Özel ihtiyaçları arayan iyi bir programlama geçmişi.
Marcouiller

6
+1, bu oyun geliştirmeye nasıl başlanacağına dair iyi düşünülmüş ve araştırılmış bir soru. Ayrıca, Unreal SDK ile ilgili acınızı hissediyorum.
James

Raven67854'ün UDK için öğreticilerine göz atmanızı öneririm . Videolar altında listeleniyorlar, insanlar onlardan hoşlanıyor gibi görünüyor.
Jesse Dorsey

Benim tavsiyem, bir şeyler yapmaya başlamak. Genellikle bu tür sorular soran insanlar, doğrusal olarak yollarını açmak istemektedir (çünkü bir zamanlar aynı soruyu soruyorum). Ancak geçmiş tecrübelerime göre, oyun geliştirme öğrenme eğrisi doğrusal olmayan bir eğridir. Genelde sorundan soruna taşınıyorum --- eğer sıkışırsam, cevap isterim / ararım. Bu nedenle, sadece bir şeyler denemek, deneme yanılma öğrenmek. Genellikle derslerle başlıyorum. Bununla birlikte, bu eğitimler hiçbir zaman yeterince ayrıntı vermedi, bu yüzden cevaplar için / search / deney yapmam gerekiyor.
kullanıcı1542

Yanıtlar:


38

GD'ye katıldığımda böyle bir soru sordum. İşte sizi ilgilendirebilecek bazı bağlantılar ve umarım sizi hedefinize yönlendirir.

Kısacası, XNA Game Studiooyun geliştirme hakkında bir şeyler öğrenmeye giderim . Ardından, bilgi / teknoloji olarak ulaşmak istediğiniz şeye ilerleyin. XNAbana sprite ile çalışmamı öğretti ve bazı bilgilerimi öğrenme eğrimin başlangıcından itibaren uygulamama izin verdi, böylece oyunumu çalışırken sınıfları kullanacak şekilde nasıl tasarlayacağımı anlamak için yeterince hızlı bir şekilde kavrayabildim. bağımlılık enjeksiyonu ve benzeri. Bu yüzden seni daha fazla bekletmeyeceğim.

  1. Oyun yazmaya, herhangi bir derse veya benzeri şeylere nereden başlamalı?
  2. Oyun geliştirmenin temelleri nelerdir? (İlginç soru, IMHO)
  3. Fizik ve oyun mantığını UI kodundan ayırma
  4. Sprite'ımı XNA'da sınıfları kullanarak taşıma

Neden XNA isteyeceksin? Java arka planınız yüzünden. XNA, Java'ya çok sayıda şekilde benzer olan C # kullanır ve aynı zamanda Oyun Döngüsünü ve diğer şeyleri uzaklaştıran, önemli olana konsantre olabilmeniz için basit bir çerçevedir.

Gerçekten bunun başlamanıza yardımcı olacağını umuyorum. =)


1
Geciken cevap için üzgünüm =) Beni yönlendirdiğin her bir yazıyı okuyordum (Ayrıca, XNA oyun motoru sayfasından beri bana benzeyen XNA ile 3B oyunları yapmakla ilgili bir MSDN sayfasına bağlı yayınlardan biri. kesinlikle 2B oyunlar içindi). Kesinlikle bunun iyi bir başlangıç ​​noktası olduğunu düşünüyorum. Teşekkür ederim. Bu gece XNA'yı indireceğim ve yatacağım, o zaman umarım yarın Pong veya başka bir şey yapmaya çalışabilirim.
stevendesu

@Steven: Sorun değil! Bu cevabı, rehberlik isteyen benim gibi meraklı bir geliştiriciye yardım etmek amacıyla gönderdim! Umarım bunu yapmaktan zevk alırsınız! İlk ve hala zorlu görevim, sınıflarımı her bir uzay aracı, enerji topu ve tuğla için birer tane yazarken çarpışma tespiti için çalışmak zorunda olduğum basit bir Arkanoid benzeri oyun geliştirmek. Daha sonra, Game1sınıfım bir oyun denetleyicisi olarak kullanılıyor, benim görüşüme göre diğer sınıflara ne yapacaklarını kontrol edecek ve söyleyecek olan sınıf, vb.
Marcouiller

Çok yakında başka bir soru soruyor olabilirim (yarın) xx Indirilen XNA Game Studio 4.0, yüklü .... Ve daha sonra ne yapılması gerektiği konusunda net bir talimat yoktu. Tüm resmi XNA web sitesi sadece "Windows Phone 7 için oyun yap" diyor - Windows için oyun yapmaktan başka bir şey yok. Sabahları çözeceğim ya da yapıp yapamayacağımı soracağım. Yatak zamanı =)
stevendesu

1
Visual Studio'yu kullanarak yeni bir proje oluşturun, sonra proje türünü seçebileceğiniz bir yerde XNA'yı seçin. Ardından pencereler için oyun yapmaya başlayın! XNA oyun proje şablonunuz (yeni proje) Windows'ta yerel olarak derlenecek ve çalışacaktır. XNA oyun geliştirme için Microsoft kütüphanesidir, çünkü Windows ve XBox için oyunlar geliştirebilirsiniz.
Marcouiller

1
Gelecek adına, XNA'nın esasen kullanımdan kaldırıldığını belirtmek gerekir, ancak Monogame yaşar. Çoğunlukla, aynı kod çalışacaktır.
Magus

8

Unity 3D'yi deneyebilirsiniz , çünkü

  • JavaScript, C # veya Boo ile programlanabilir
  • Burada iyi bir öğretici var
  • öğrenme eğrisi dik değil
  • daha fazla kaynak bulabileceğiniz Unity Answers var .

(Feragatname: Birliğin yapıcıları ile hiçbir ilgim yok, sadece kendim kullanıyorum ve temellerini öğrenmek için harika bir araç buldum).

Ama evet - kendinizi bir görev için hazırladınız. Şu anda 6. yarıyılda oyun tasarımı okuyorum ve hala yüzeyden daha fazla çizdiğim gibi hissetmiyorum. Endüstrinin, oyun yaratma sürecinin her yönü için uzman olması şaşırtıcı değildir.

Düzenleme: Birliğin “uygun” bir oyun motoru olarak görülmediği, benim de söylediğim gibi yanlış anlaşılabilecek bir yorum yapıldı - bu nedenle aşağıdaki açıklamalara yer verildi. Aksine, Birliğin uygun oyun tasarımı yapmak için kullanılamayacağını söylemek niyetim değildi. Kendim kullanıyorum ve hoşuma gidiyor. ;)


3
Bu konuda yanlış olan ne?
lathomas64

Ben de merak ediyorum.
Jesse Dorsey

Belki de (Flash veya Java gibi) çalışması için bir konteyner programı gerektiriyor olması, bu yüzden derhal zorlanmadan kitlelere derlenip dağıtılmaması için "uygunsuz" olduğunu düşünüyor. Her iki durumda da, şu anda XNA'ya bakıyorum. XNA çok zorlanırsa Unity3D'yi kontrol edebilirim.
stevendesu

İnsanların "uygun" oyun tasarımı için Birliğin ciddiye alınmaması gerektiğini söylediklerini duydum. Daha önce de söylediğim gibi - kendim kullanıyorum ve çok mutluyum. Bazı durumlarda, Birlik sadece işleri şüpheli bir şekilde kolaylaştırır, sanırım…;) Sadece riskten korunuyordum, çünkü insanların burada Birlikten bahsetmek için nasıl tepki vereceğini bilmiyordum. Belki bu olumsuz oy vermiştir?
xeophin

@ steven_desu: Aslında, web oynatıcısı için sadece bir konteyner programına ihtiyacınız var. Windows veya Mac'te çalıştırılmak üzere derlenen oyunlar tamamen kendi kendine yeten bir içeriktir.
xeophin

2

Eğer irrlicht ile problemleriniz varsa, Ogre3D'yi de denemelisiniz; kolay değil, ancak biraz zaman harcarsanız daha iyi olabilir. Anlamanız gereken önemli şey, bir çerçeve oluşturucunun ne olduğu, son karenin görüntülenmesinden bu yana nasıl zaman alacağınızdır ve bahsettiğiniz bu uygulamayı yapmak istiyorsanız, anlamanız gereken tek şey budur.

Ayrıca irrlicht ile bazı zorluklar yaşadım, öğreticiler çok güncel değil, ama örnekleri denemelisin!

Ayrıca başlangıçta çevrelerinde çok fazla koştum, panda3d ve pygame gibi diğer şeylerle oynuyordum. Bazı oyun fikirlerine odaklanmaya ve her seferinde bir şey uygulamaya çalış.

Ve matris matematiğini hatırlamaya çalışın, 3B'de biraz kullanacak!


2

Geçenlerde seninle aynı peşinden başladım. JMonkeyEngine adında saf bir java motoruyla karşılaştım . Oyun tasarımını gerçekten büyük ölçüde açıklayıp açıklamadığını bilmiyorum ama grafiksel açıdan başlamanızı sağlıyor.

Modelleme için kullanabileceğiniz araçlara bağlantılar sunar / önerilerde bulunur ve fizik motorunu ayarlamak için ekrana bir kutu koymanıza yardımcı olacak kopyalayıp yapıştırılabilir, iyi tanımlanmış örnekleri vardır.

Kesinlikle bir okumaya değer - Sadece birkaç saat sonra ne yaptığım hakkında iyi bir fikrim vardı.


Motoru kullanmasanız bile öğreticiler okunmaya değer. Ayrıca bazı 3B matematiğin güzel dersleri de var.
DMan

2

Gerçekten Flixel'i denemelisiniz http://flixel.org/ Ben ilk "demo" oyunumu flixel kullanarak yaptım. Güzel topluluk, güzel dersler.

3D değil, ancak oyun programlama ortamına ilk adımlarınızı kolaylaştıran çok hoş özelliklere sahip.

Öyle ki: nesneleri hareket binlerce Display
nesneler arasındaki temel çarpışma
Grup basitlik için nesneleri birlikte
kolayca oluşturmak ve parçacıklar yayan
tilemaps kullanarak oyun seviyelerini oluşturmak
kaydırma oyunları kaydetmek, Metin ekranı
Fare ve klavye girişi
Matematik & renk araçları

Ve harika, ticari kullanım için ücretsiz.


1

Eğer grafiklerle hiç çalışmadıysanız, sadece açık gl veya direct x öğrenmeden önce bir başlangıçtır. İlk oyunumu bu şekilde programladım. Şirket motorlarımız ev içinde ve çoğu sistem bir şekilde açık gl desteği veriyor. İşe başlamadan önce yazılı kodu inceleyerek iş yaparken öğrendim. Bir oyun yapısının nasıl kurulduğunu görmek için bazı açık kaynaklı projelere göz atmak isteyebilir ve kendi işinize başlama konusunda rahat hissedene kadar bunları değiştirmeye başlayabilirsiniz. Ayrıca, uygun dosya yapısı ve kaynak yönetimi gibi farkına varmadığınız oyun programlarının tamamının harika bir referansı olarak “Oyun kodlaması tamamlandı” yı da öneririm.


1

Source Engine'i deneyin . Üzerinde oyun geliştirmek kolaydır ve Valve Corportaion ile bir anlaşma imzalarsanız dağıtım platformu (Steam) alabilir ve oyununuzu ücretsiz satabilirsiniz.


1

Flash oyunlar ile başlamanızı tavsiye ederim, çünkü basit oyunlar yapmak için ihtiyacınız olan her şeyi tek bir pakette bulabilirsiniz. Mesela Emanuele Feronato'nun izlenebildiği tonlarca blog var . Hatta 10 tane oyunla dolu bir kitabı bile var .

FlashDevelop'u kullanıyorum, bu geliştirme için yeterli.

Chris Moeller'in "Bir Asteroids Flash Oyunu Oluşturma" , flaş geliştirmeyi kullanan adım adım yaklaşımıyla tam olarak mükemmel bir durumdur.

Döşeme tabanlı oyunlar için Ironcoding'te harika bir ders var .

Tüm bunlarla donanmış olarak benim tavsiyem, oyun yapan insan topluluğuyla birlikte video oyunu mücadelesinin yaşandığı bir yer bulmak. Bir sonraki projenize geçmeden önce bitirebileceğiniz, cilalayabileceğiniz ve sunabileceğiniz küçük bir şeye odaklanarak ayda bir video oyunu oluşturun. Burada aylık bir video oyunu yarışmasına katılıyorum .

Küçük tutun, böylece bitirebilir ve bırakabilirsiniz.

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.