Öğrenmek için iyi bir Açık Kaynak oyunu nedir? [kapalı]


15

Bir Açık Kaynak oyunun kaynak kodunu indirmek istiyorum, böylece oyun mimarisine aşina olabilirim. Kaynak kodlu, okunaklı ve kolay anlaşılır bir oyun bilen var mı?

Düzenleme: Biraz düşündükten sonra, masaüstünde veya 2D grafikli bir Andriod telefonunda çalınabilir bir oyun yapmak istiyorum.


7
Açık kaynak olan oyunların çoğu, her zaman kolayca anlaşılamayan büyük, eski projeler, çeşitli nedenlerle açık kaynaklı ticari projeler veya gerçekten oynanabilir durumda olmayan bitmemiş oyunlardır. Ayrıca, kullanılan oyun ve dil türünde biraz mimari. Ne tür bir oyundan öğrenmek istiyorsun ve hangi dilleri biliyorsun? (öğreticiler burada daha iyi bir seçenek olabilir)
thedaian

@thedaian Java, C ++, C, javascript ve python
biliyorum


En azından benim için daha iyi çalışan thedaian'a katılıyorum. Orada çok iyi makaleler, kitaplar ve öğreticiler var. Doğru olanları seçmek için zaman ayırmanız gerekecek, ancak daha sonra size zaman kazandıracak çünkü zaten neden kodlandıklarını zaten bilecek ve kaynakların kalitesini (genellikle kokuyor) tanıyabileceksiniz. Taşınabilirlik istiyorsanız, C / C ++ için gitmek istiyorum, ancak bu platformlar için Java ile iyi yapabilirsiniz.
Pablo Ariel

1
Topluluk wiki?
Jari Komppa

Yanıtlar:


2

Ne tür bir oyun istediğinden emin değilim ama c ++ ile yazılmış OpenTTD adlı bir açık kaynak oyun var . İyi bir örnek olarak kullanabileceğinizi düşünüyorum.

Bu oyunu benzersiz kılan bazı özellikler:

  • Bu bir strateji oyunu.
  • İnternet ve yerel ağ üzerinden çok oyunculu desteği vardır.
  • Yapılandırma dosyası (ham metin dosyalarından oluşturulan) aracılığıyla diğer dillere çeviriyi destekler
  • Bildiğim hemen hemen her platformda derlendi.
  • Projesi hala hayatta!
  • Yerleşik AI desteğine sahiptir.
  • Grafik ve Müzik verileri yamalar aracılığıyla tamamen özelleştirilebilir.
  • Özel AI geliştirmek için komut dosyası dillerini destekler. böylece bu oyun için yazılmış diğer AI'ları da okuyabilirsiniz.
  • Kodunu okumak ve anlamak kolay iken nispeten büyük bir proje.
  • SDL'ye dayanıyor ve o andan itibaren her şeyi sıfırdan geliştirdiler.

--Düzenle--

Hemen bugün kodlarını baştan okumaya başladım. Ne yazdıklarını anlamak için iyi bir C ve C ++ programcısı olmalısınız (kodları iyi yorumlanmış olmasına rağmen)! Yani her ikisinin de ustası olmalısınız, çünkü her ikisinden de yapılar kullanıyorlar! yani programlama becerileriniz hakkında yeterince emin değilseniz bu koda yaklaşmayın bile! bu şimdiye kadar gördüğüm en kirli kod! (ve ben kendim kirli bir kodlayıcıyım ama onlar başka bir şey!)

Şimdi supertux kodunu kontrol etmenizi önerebilirim . Bu bir platform oyunu (tıpkı süper mario gibi) ve şimdiye kadar kodları gerçekten temiz görünüyor (Kilometre taşı 1.3 kontrol ettim). bu kodda bazı yorumlar var, ancak yalnızca kafanız karışabilecek yerler için.


OpenTTD harika bir oyun olsa da, bunun iyi bir öğrenme projesi olduğunu düşünmüyorum. Çoğu montajdan tersine tasarlanmıştı ve hala bunu yansıtan kod bölümleri var. Artı, bu sadece büyük bir proje ve muhtemelen bir başlangıç ​​"oyun mimarisi öğrenmek" projesi için çok fazla.
thedaian

@ thedaian söyleyebilirsin ama her zaman ve sonra yeni bir şey yapmam gerektiğini kodlarında ne yazdığını okudum. şimdiye kadar okumaya değer en okunabilir açık kaynak oyun olduğunu düşünüyorum!
Ali1S232

Ayrıca kodunu en son ne zaman kontrol ettiğinizden emin değilim ama sürüm
1.0.0'dan

2

Belki de iyi bir yaklaşım, sevdiğiniz bir oyun seçmek ve bu tür açık kaynaklı oyunlara bakmaktır. Açık kaynak oyun klonları liste muhtemelen son adımda, bir sürü yardımcı olabilir.


1

Quake 3 gibi ana noktalar var ya da biraz daha basit bir şey istiyorsanız (ve 2D'de) indie oyun Gish'e bakın . Her ikisi de OpenGL kullanır ve çapraz platformdur.

Gish yine de dağınık tarafta.


1

Önce 3d boru hattı, fizik, AI, vb.'yi öğrenmek istediğiniz oyun mimarisi türüne odaklanmanızı öneririz.

Oyun programlama için iyi bir örnek için genel bir istek ile, uzay işgalciler gl yenmek için zor olduğunu düşünüyorum çünkü temiz kodu ve açık gl oyun oynamak ve arayüzü oldukça basit şeyler tutar.

şerefe


Space Invaders yalnızca pencereler mi? Şu anda bilgisayarımda yüklü pencereler yok. Buna erişimim olmadığı için değil, o kadar uygun değil.
jumpnett

1

Kod okumak yararlı olsa da, etki alanında yeni başlayan biriyseniz, hiçbir şey öğrenemezsiniz. Özellikle Q3A veya OpenTTD gibi büyük projelerin kodlarına bakarsanız. Bunlar tüm ekip tarafından yapıldı, her kişi farklı kodlama uygulamalarına, şeylerin nasıl yapılacağı konusunda farklı fikirlere sahipti. Her şeyin birbirine yapışmasını sağlayan küçük ayrıntıları değil, yalnızca büyük resmi elde edersiniz.

İyi görünen bir şey bulana kadar geliştirin, başarısız olun, tekrar deneyin, tekrar başarısız olun, durulayın ve iyi bir şey olana kadar tekrarlayın. Farklı geliştiriciler, şeylerin nasıl uygulanacağı konusunda farklı fikirler anlamına gelir. Carmack / İyi bir oyun yapan herhangi bir ünlü geliştirici, dilimlenmiş ekmeklerden beri en iyi şey olduğu anlamına gelmez ve farklı bir uygulama daha net ve daha hızlı olabilir.


1

Bence yapabileceğiniz en önemli şeylerden biri, oynamaktan zevk aldığınız bir oyun seçmek. Bu, onunla ilgilenmenize yardımcı olur ve kodun kendisinin oyuncu perspektifine nasıl dönüştüğünü daha iyi tanımanızı sağlar.

Bu oyunu seçtikten sonra, ne kadar büyük olduğuna bakılmaksızın, her kod satırının nasıl çalıştığını anlamaya çalışmak zorunda değilsiniz. Bir parça seçin ve şuna bakın. Örneğin, oynatıcı verilerinin nasıl saklandığını veya bir menü öğesinin nasıl çizildiğini anlamaya çalışın.

Yapabileceğiniz bir sonraki şey, ki bu benim önceki bitimle birlikte gidiyor, bir şeyleri değiştirmeye çalışmak. Büyük bir şey değil (ilk başta), oyunda basit ve fark edilebilir bir şey. Bir menüdeki bir düğmedeki metin gibi basit bir şey veya bir menü öğesi eklemek veya hasar hesaplamalarını değiştirmek bile. Belki de farklı bir şey yapmaları gerektiğini düşünüyorsunuz, kendiniz değiştirmeye çalışın.

Oyun geliştirmeye ilk başladığımda, gerçekten 2D çevrimiçi RPG'lere katıldım. Bu yüzden çevrimiçi bir kaynak buldum ve üzerine inşa etmeye başladım. Kendi özellikleri ekleyerek şeyler düzeltmek, hataları düzeltmek vb. Bu birkaç yıl önce VB6 idi ve şimdi C # ve XNA kullanıyorum ve sıfırdan kendi oyunumu yazıyorum. Oyunlardan hoşlandığım için, üzerinde çalışmak, daha iyi yapmak için motive oldum. Tesadüfen, bugün gamedev ile ilgili olmayan günlük işimde kullandığım birçok programlama, hata ayıklama ve problem çözme tekniğini de öğrendim.

Oyunda soru sorabileceğiniz ve yardım ve örnekler alabileceğiniz bir modder topluluğu varsa da çok yararlıdır. Ama sonra tekrar, bu olmasa bile, zaten buradasınız ve yardım etmeye hazırız.




0

Kaydırma Oyun Geliştirme Kiti 2 aslında 2D oyunlar oluşturmak ve kod yazmadan bir GUI kullanarak oyun oynamak için izin verir. Ancak, oyunun arkasındaki çerçeveyi / motoru temsil eden projeye gömülü kodu görmenizi ve düzenlemenizi sağlar. Her ne kadar küçük bir kısmı sprite yerleştirdiğiniz yere ve hangi haritaları oluşturduğunuza bağlı olarak kod üretilmesine rağmen, kodun çoğu GUI aracılığıyla ortaya çıkar. Ancak, bu kodu bile proje oluşturmak ve sonra da Visual C # Express sonuç dosyaları açarsanız görünür. Tüm programın (IDE) kendisi de açık kaynak. Aynı zamanda açık kaynak olan OpenTK kütüphanesinde (C # 'dan OpenGL ile arayüz oluşturmak için kullandığı) oluşturulmuştur.


Ben bir göz atacağım, ama ben bir programcıyım, bu yüzden kod yazmak çok önemli değil.
jumpnett
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.