Oyun geliştirme için iyi JS kütüphaneleri nelerdir? [kapalı]


56

Hem metin hem grafik (2d) basit bir oyun yazmaya karar verirsem, hangi kütüphaneleri kullanırdım? (HTML5 uyumlu bir tarayıcı kullandığımızı varsayalım)

Aklıma gelen başlıca şeyler

  • Ekrandaki metni oluşturma
  • Hareketli sprite (görüntüleri / css kullanarak)
  • Giriş (ok tuşlarını yakalama ve göreceli fare konumlarını alma)
  • Belki bazı önyükleme kaynakları veya kaynakları dinamik olarak yükleme ve sipariş seçme
  • Ses (ama ilk başta bunun benim için ne kadar önemli olacağından emin değilim). Belki de karıştırma ve zincirleme sesleri veya sonsuza dek döngüde durma ile.
  • Bir kullanıcıyı bir başkasına bağlamak veya birden çok istek olmadan sürekli olarak veri almak için ağ oluşturma (düşük öncelikli) (Bunun olduğunu biliyorum ancak kurulumunun veya kullanımının ne kadar kolay olduğunu bilmiyorum. Ama bu benim için önemli değil. soru).

3
Html5 oyun kütüphaneleri Pretty tam listesi github.com/bebraw/jswiki/wiki/Game-Engines
oberhamsi

Ne? Bunları sadece saf JavaScript ile yapabilirsiniz. Yine de ağ için Socket.io.
jcora

Stage.js'i ilginç bulabilirsiniz ( yazarıyım ).
Ali Shakiba 18:15

Yanıtlar:


25

jQuery ve MooTools harika JavaScript kütüphaneleridir; JQuery'i kendim tercih ederim. DOM kullanıyorsanız, ikisi de JS oyun gelişiminizde size yardımcı olacaktır. Canvas görüntülemeye devam ederseniz, o kitaplıklardan birini kullanmanız gerektiğini düşünüyorum, ancak Canvas işlevlerini öğrenmeniz gerekecek. İşte bir Breakout klonu oluşturarak size tuvali tanıtan bir eğitimdir, bu yüzden tam olarak aradığınız şey olabilir (ve jQuery kullanır).

Sprite'ların hareketlendirilmesi, bir görüntü kaynağını değiştirmek veya birkaç görüntüyü önceden yüklemek ve bunları değiştirmek veya bir tuvalin içinde sadece bir animasyonun karelerini çizmekten ibarettir. Yukarıdaki kütüphaneler bu vakaların herhangi birinde yardımcı olabilir. Kütüphaneler aynı zamanda girdilere de yardımcı olur (onkeypress ve onmousemove gibi olaylara bakın).

Kaynakları önceden yüklemek için, tek bir "hareketli sayfa" resmi kullanan bazı oyunlar görüyorum ( işte Google'ın Pacman oyunu için olanı ). Temel olarak, bir karo boyutunda bir DIV oluşturduklarına inanıyorum, CSS arka plan görüntüsü özelliği, hareketli grafik sayfasına ve arka plan konumu özelliği, hareketli grafik sayfasındaki döşemenin uzaklığına ayarlanmış. Bunu sizin için yapacak bir kütüphane görmedim, ancak jQuery veya MooTools, DIV'yi dinamik bir şekilde yaratıp CSS'sini değiştirebilmeniz için size yardımcı olabilir. Aksi takdirde, görüntüleri <img>önceden yüklemek, önceden yüklenmesini istediğiniz görüntülerin etiketlerini oluşturmak ve sayfaya eklememektir (ya da görünmez olarak eklemek). İşte bir blog yazısı Bu, sizin için görüntüleri önceden yüklemek için jQuery kullanan bir fonksiyon için bazı kodlara sahiptir.

SoundManager 2 , kullanılacak JS ses kütüphanesi gibi görünüyor; Biliyorum Vanthia kullanır ve Google'ın Pacman (sesleri oynatmak için sayfadaki gizli Flash dosyası kullanmak yerine, ya da en azından aynı tekniği) benzer bir şey kullandı.

Ağ için jQuery işleyebilir AJAX sizin için, yoksa çok daha gerçek zamanlı ağ istiyorum (ve bunu yapmak için sunucu var) eğer içine bakmak JavaScript soketleri . Bunun için dışarıda çok istikrarlı bir kütüphane var mı bilmiyorum, ama içine görünebilir bu ya bu . Temelde, sayfadaki gizli bir Java veya Flash dosyasını kullanır, böylece AJAX yoklamadan daha hızlı ve "AJAX Push" dan biraz daha verimli olan JavaScript ile gerçek soket iletişimi kurabilirsiniz . Bununla birlikte, büyük olasılıkla, AJAX Push istediğiniz gibi olacaktır ve APE (Ajax Push Engine) muhtemelen kullanılacak kütüphanedir.

Ayrıca, "Web için JavaScript Tabanlı Bir Oyun Motoru Oluşturma" hakkında bir Google teknoloji konuşması . Düzgün görünüyor.


2
Bu cevap biraz muhafazakar; eğer sadece html5 tarayıcılarını kullanmak istiyorsa, o zaman tuval için gidebilir ve html5 kütüphanelerinden birini kullanabilir (soru hakkındaki yorumuma bakın). Oyunlar için DOM ve CSS kullanımı kesmek gibi görünüyor (bazı durumlarda uygulanabilir kesmek olsa da).
oberhamsi

2
Bir hack gibi görünen şey nedir? Google, PacMan logosu ile saf DOM ve CSS kullanma konusunda bir sorun yaşamadı ve ana sayfamdaki pong oyunumu seviyorum . Aslında dürüst olmak gerekirse, tuval bir kesmek gibi görünüyor, aksi takdirde DOM’in baskın olduğu bir sayfaya grafik kareler çiziyor. Ancak ne yazık ki buna doğru itiliyse ve WebGL, tarayıcının zaten yapmamışsa her şeyi yapmak için kullanılacağı açıktır. Ben digress ...
Ricket

Ses, ağ, metin oluşturma işlevini kullanmak istiyorsa, html5 hazır tarayıcıyı kullanması gerekir. Ne yazık ki tuval iyi bir seçim olacaktır. DOM ve CSS'ye bağlı kalırsanız, bu teknolojiler belirli varsayımlara sahip bir sunum katmanı oluşturduğunda (metin akışı, katmanlama, bir metin belgesi için bir sahne grafiği türü) zaten sınırlısınız. Tuvali kullanarak pikselleri uygun gördüğünüz herhangi bir şekilde değiştirebilirsiniz; bu, normal olan SDL veya opengl'in üstündeki ham oyun motorlarına yakındır.
oberhamsi

Sağladığım ses ve ağ kütüphaneleri HTML5 gerektirmiyor. Ve aslında metin akışını, katmanlamayı ve sahne grafiği benzerliğini fayda olarak görüyorum. Oyunların çoğu sadece hareketli ve hareketli (hareketli) karakterlerdir ve piksellere doğrudan erişime ihtiyaç duymazlar. Bu gerçekten olsa yapmak istiyorum ve oyun anlayışıyla değerlendirilmesi gereken de bizzat daha rahat tuval veya DOM ile iseniz, eski tarayıcıları desteklemek istiyorsanız, fazladan güç tuval vb sağlar gerekirse
Ricket

1
evet, oyuna bağlı. Fakat HTML5'i soruyor ve cevabınız çoğunlukla Flash ve DOM seviyesi 1 ile ilgili. :) Eğer HTML5'in gelişimini engellemek istiyorsa, onu geri çekmeyin.
oberhamsi

12

JavaScript motorlarını bir süre önce değerlendirdiğimde en sevdiğim Crafty:

http://craftyjs.com/

Dikkate almam gereken seçenekler vardı ve hoşuma giden diğerleri:

http://easeljs.com/

http://www.limejs.com/

http://code.google.com/p/casualjs/

(Bu arada, başlangıçta oldukça kaygan görünen başka bir seçenek ise http://impactjs.com/ 'dür. Ancak bunun maliyete mal olduğunu ve baktığım diğer seçeneklerin açık kaynaklı motorlar olduğu göz önüne alındığında, ekran öğelerini takamama gibi bazı göze batan eksiklikler vardı. heirarşi.)


GÜNCELLEME: (bu ben bu cevabı yayınlanmıştır ve durum biraz değişti bu yana neredeyse 2 yıl geçti olduğunu özellikle (Kurnaz geçtiğimiz yıl EaselJS içinde mükemmel bir seçimdir, hala olmasına rağmen momentum çok özellik kazandı. Teknolojisinin olgunlaşmamış bir alan) dikkate Adobe EaselJS trende zıpladı .) Ben de bir sahip olduğuna dikkat (gelecek projeler için bu aracı olacak anahtar olduğum yeni web sitesi )


bugün ne önerirsin? 4 yıl sonra
Pooya Estakhri

1
Güncelleme 1.5 yıl önceydi ve hala bunu öneriyorum.
14'te

7

Efekt Oyun motoru (javascript) 2d, fayans / sprite tabanlı oyunlar için harika. Web sitesi, bu konuda neyin harika olduğunu açıklamak için çok iyi bir iş çıkarmaz, ancak mükemmel belgelere baktıktan sonra, sizin için ne kadar kapsandığını göreceksiniz:

  • birleştirmek,
  • çarpışma algılama
  • seviye düzenleme
  • varlık Yönetimi
  • ses
  • giriş ve kontrol
  • fayans takımı oluşturma ve yönetimi
  • katman
  • animasyon
  • performans (kare hızına kilitlenir)
  • tarayıcılar arası destek ve soyutlamalar
  • barındırma
  • katıştırma
  • HUD desteği

Tam özellikli olduğu için ayrıntılı bir liste sunamıyorum. Eksik olan bir şey oyun içi menüleri ve kullanıcı arabirimi oluşturma (örn. Ekipman yöneticileri vb.) Yeteneğidir, ancak sözde yapılacaklar listesinde.


4
Ne yazık ki, efekt motoru tamamen terkedilmiş gibi görünüyor.
Letharion

6

JawsJS adında bir tuval 2D oyun motoru tutuyorum - http://jawsjs.com/

Kaynak @ https://github.com/ippa/jaws

Uçurum notları:

  • Okunabilir, belgelenmiş kod
  • 12+ paketlenmiş belgelenmiş örnek
  • Sprite (), SpriteSheet () ve Animation () gibi faydalı yapıcılar
  • Oyun durumları - Daha iyi düzenlenmiş kod için oyununuzun ayrı bölümleri
  • Varlıklar - Jaws, oyun başlamadan önce tüm varlıklarınızı ön yükleyecektir.
  • Başka bir javascript kütüphanesine bağlı değildir
  • Ruby oyun kütüphanesi Chingu'yu geliştirmenin yıllarından öğrenilen dersler üzerine inşa edilmiştir.


4

Son zamanlarda bu alanda biraz araştırma yapıyorum, bu yüzden $ 0.02

PlayN , Java'dan javascript / Flash / Android'e kadar nesne yönelimli bir oyun derleyen Google'dan bir çapraz platform kütüphanesidir. JSON'u (AJAX), veri modellerini idare edecek ve güncellemeler ve görüntü oluşturma için mantıklı bir anlam ifade edecek. Çok güzel şeyler.

İşleme Tasarımcılara ve sanatçılara yönelik kütüphane kullanımı kolaydır. Kullanımı son derece basittir ve size harika sonuçlar verebilir. Java sürümünü bilimsel modelleme için kullandım ve kullanmak bir zevk. 3B sahneler için WebGL gerekir, ancak 2B sahneler olmadan çalışır.

Three.js Harika görünen demolara sahip . WebGL gerektirir, ancak sonuç buna değer. Çevrimiçiolarak bazı mevcut örnekler de var.

İşte kişisel link dökümlerimde WebGL ile ilgili diğer öğelerden bazıları:





1

Pixie Eklentileri

Contrasaurus'un yaratıcıları, bireysel bileşenlerinin çoğunu yayınladılar !!!

Matris dönüşümleri , tuval soyutlamaları ve daha birçok ilginç şey yapma kodları var .

Onların kod büyük ve kütüphaneleri gerçekten yararlıdır.



1

Google Kapatma Kütüphanesi'nden söz edilmemiş olması garip . Çok büyük bir API'ye sahiptir, daha fazla nesne yönelimli kodlama stiline izin verir ve derleyiciye sahiptir.

Şimdiye kadar sadece derleyiciyi kullandım ancak en kısa zamanda dinlenmeyi çalışmayı planlıyorum.


1

Ben genellikle jawsjs kullanıyorum çünkü onu ayarlamak ve dakikalar içinde bir oyun geliştirmeye başlamak gerçekten çok kolay. Oyun geliştirmeye gerçekten yardımcı olan birçok yararlı varsayılan sınıfa (Tilemap, Viewport, Sprite ve diğerleri) sahiptir.


1

Aslında onlardan birçoğunuz var, ama öncelikle bu ne tür bir oyun motoru aradığınıza bağlı. Size en dikkat çekici bazı referanslar verebilirim.

2D Oyun Motorları

  • Cocos2D şu anda biraz daha moda olmaya meyilli. Son zamanlarda Stackoverflow'ta ortaya çıkan Cocos2D sorularını gördüm.
  • Etki , resmi web sitesinde çalışan bir kıyaslama görebilirsiniz.

3D Oyun Motorları

Mozilla vakfı Paladin adlı bir 3D oyun motoru üzerinde çalışıyor . Mozilla gerçekten sanırım yaralayamayacak.


0

Ayrıca bir jQuery tabanlı oyun motoru olan gameQuery de bulunmaktadır. API'leri ile ilgili iyi belgeleme belgelerinin yanı sıra, sitelerinde bağladıkları birkaç ses sarmalayıcı API'si de vardır.

http://gamequery.onaluf.org/




0

Scirra'dan Tom, biz HTML5 oyun yapımcısı Construct 2'yi yaratan 2 kişilik bir ekibiz . (Ücretsiz versiyon mevcut).

Sizin için bir sürü ayak izi olduğu gibi bizim gibi bir motoru düşünebilirsiniz. Örneğin, kodda çarpışmalar yapmak gerçekten zor olabilir (poligon çarpışmalarını düşünün). Construct 2 ile listenizdeki her şeye kolayca erişebilirsiniz.

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.