Які хороші бібліотеки JS для ігрових розробників? [зачинено]


56

Якщо я вирішу написати просту гру як текстової, так і графічної (2d), які бібліотеки я б використовував? (Припустимо, ми використовуємо браузер, сумісний з HTML5)

Основні речі, про які я можу придумати

  • Відображення тексту на екрані
  • Анімаційні спрати (з використанням зображень / css)
  • Введення (захоплення клавіш зі стрілками та отримання відносних позицій миші)
  • Можливо, якийсь ресурс попередньої завантаження або динамічно завантажується ресурси та вибирається замовлення
  • Звук (але я не впевнений, наскільки це буде важливо для мене спочатку). Можливо, зі змішуванням та прив’язуванням звуків чи циклічністю назавжди до зупинки.
  • Мережа (низька пріоритетність) для підключення користувача до іншого або для постійного отримання даних без багаторазового запиту (я знаю, що це існує, але я не знаю, наскільки це легко налаштувати або використовувати. Але для мене це не важливо. Це для питання).

3
Досить повний список ігор html5 libs github.com/bebraw/jswiki/wiki/Game-Engines
oberhamsi

Що? Ви можете це зробити за допомогою чистого JavaScript. Хоча Socket.io для мереж.
jcora

Вам може здатися цікавим Stage.js (я його автор).
Алі Шакіба

Відповіді:


25

jQuery та MooTools - чудові бібліотеки JavaScript; Я більше віддаю перевагу jQuery. Будь-хто з них допоможе вам у розробці ігор JS, якщо ви використовуєте DOM. Якщо ви перейдете з візуалізацією Canvas, я все ще думаю, що вам слід скористатися однією з цих бібліотек, але вам потрібно буде вивчити функції Canvas. Ось підручник, який знайомить вас із полотном, створюючи клон Breakout, тож це може бути саме та річ, яку ви шукаєте (і для цього використовується jQuery).

Анімація спрайтів - це питання зміни src зображення або попереднього завантаження декількох зображень та заміни їх, або на полотні, просто малюючи кадри анімації. Вищезазначені бібліотеки можуть допомогти у будь-якому з цих випадків. Бібліотеки також допомагають у введенні даних (вивчайте такі події, як onkeypress та onmousemove).

Щодо попереднього завантаження ресурсів, мені здається, деякі ігри, в яких використовується одне зображення «спрайта аркуша» ( ось ця для гри Pacman Google ). Я вважаю, що вони в основному створюють DIV одного розміру плитки, при цьому властивість CSS background-image встановлюється на спрайтовому аркуші, а властивість background-position встановлюється на зміщення плитки на аркуші спрайту. Я не бачив бібліотеки, яка б це зробила для вас, але jQuery або MooTools можуть допомогти вам, наскільки динамічно створювати DIV і маніпулювати його CSS. В іншому випадку попередня завантаження зображень - це створення <img>тегів зображень, які ви хочете завантажити, а не додавання їх на сторінку (або додавання їх невидимим чином). Ось допис у блозі який містить код для функції, що використовує jQuery для попереднього завантаження зображень для вас.

SoundManager 2, здається, є звуковою бібліотекою JS; Я знаю, що Вантія використовує це, і Pacman від Googleвикористовував щось подібне (або, принаймні, таку саму техніку, використання прихованого файлу Flash на сторінці для відтворення звуків).

Для мереж jQuery може працювати з AJAX для вас, або якщо ви хочете набагато більше мереж у режимі реального часу (і для цього потрібен сервер), загляньте в розетки JavaScript . Я не знаю, чи є там стабільна бібліотека, але ви можете заглянути в це чи це . По суті, він використовує прихований файл Java або Flash на сторінці, щоб ви могли здійснити справжнє спілкування сокета з JavaScript, що набагато швидше, ніж опитування AJAX і трохи ефективніше, ніж "AJAX Push" . Однак, швидше за все, AJAX Push буде тим, що ви хочете, а APE (Ajax Push Engine) - це, ймовірно, бібліотека, яку слід використовувати.

Також тут йдеться про технічну розмову Google про "Створення ігрового двигуна на основі JavaScript" для Інтернету " . Це виглядає акуратно.


2
Ця відповідь трохи консервативна; якщо він хоче використовувати браузери html5 лише тоді, він може піти на полотно і скористатися однією з бібліотек html5 (дивіться мій коментар до питання). Використання DOM та CSS для ігор здається злому (хоча в деяких випадках справний злом).
oberhamsi

2
Що робить це схожим на злом? Google не мав жодних проблем використовувати чисті DOM & CSS з їх логотипом PacMan, і мені дуже подобається моя гра в понг на моїй домашній сторінці. Насправді, чесно кажучи, полотно виглядає як злом, злом квадратної графіки перетворюється на сторінку, якою інакше переважає DOM. Але, на жаль, з поштовхом до цього та WebGL зрозуміло, що браузер стане важким додатком робити все, якщо цього ще немає. Я відступаю ...
Ricket

Якщо він хоче використовувати аудіо, мережу, візуалізацію тексту, йому доведеться скористатися браузером, готовим до html5. На жаль, полотно було б хорошим вибором. Якщо ви дотримуєтесь DOM та CSS, ви обмежені, оскільки ці технології вже складають презентаційний шар з певними припущеннями (текстовий потік, шари, графік сцени для текстового документа). Тоді як з полотном ви можете маніпулювати пікселями будь-яким способом, який вважаєте за потрібне, що ближче до "звичайного", сирого ігрового двигуна поверх SDL або opengl.
oberhamsi

Надані мені бібліотеки аудіо та мереж не потребують HTML5. І насправді я бачу, як текстовий потік, шари та подібність графіків як переваги. Більшість ігор - це просто спрайти (зображення), які розміщуються та переміщуються, і їм не потрібен прямий доступ до пікселів. Це дійсно потрібно оцінювати, грунтуючись на грі, яку ви хочете зробити, а також, якщо вам особисто зручніше полотно чи DOM, якщо ви хочете підтримувати старі браузери, якщо вам потрібна додаткова потужність, яку надає полотно тощо.
Ricket

1
так, це залежить від гри. Але він просить HTML5, і ваша відповідь здебільшого стосується Flash та DOM рівня 1 :) Якщо він хоче зайняти розробку HTML5 кровотоком, тоді не заманюйте його назад.
oberhamsi

12

Коли я деякий час тому я оцінював двигуни JavaScript, улюбленим був Crafty:

http://craftyjs.com/

Було розкрито варіанти, які мені довелося розглянути, і деякі інші, які мені сподобалися, були:

http://easeljs.com/

http://www.limejs.com/

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

(Між іншим, інший варіант, який спочатку виглядає досить гладко, - це http://impactjs.com/, але, враховуючи, що це коштує грошей, а інші варіанти, на які я дивився, були двигунами з відкритим кодом, були деякі яскраві упущення, наприклад, неможливість приєднання елементів дисплея до герархія.)


UPDATE: Пройшов майже два роки з тих пір я відправив цю відповідь , і ситуація дещо змінилася (це є зароджується областю технології.) Хоча Лукавий ще великий вибір, в минулому році EaselJS підняв великий імпульс (особливо зважаючи на те, що Adobe стрибнув на поїзді EaselJS .) Я перейду до цього інструменту для майбутніх проектів (також зауважте, що у нього є новий веб-сайт )


що ви сьогодні пропонуєте? через 4 роки
Pooya Estakhri

1
Ну, оновлення було від 1,5 років тому, і я все ще пропоную це.
поштовх

7

Двигун Effect Games (javascript) є фантастичним для 2d-ігор на основі плиток / спрайтів. Веб-сайт не дуже добре описує те, що в ньому так чудово, але як тільки ви перекопаєтеся у відмінній документації, ви побачите, наскільки це було покрито для вас:

  • спринт
  • виявлення зіткнення
  • редагування рівня
  • управління активами
  • аудіо
  • введення та управління
  • створення і управління набором плиток
  • нашарування
  • анімація
  • продуктивність (блокування кадрів)
  • крос-браузерна підтримка та абстракції
  • хостинг
  • вбудовування
  • Підтримка HUD

Я справді не можу надати вичерпного списку, оскільки він так повно представлений. Одне, чого не вистачає, - це можливість створювати ігрові меню та інтерфейс користувача (наприклад, менеджери обладнання тощо), але це нібито в списку todo.


4
На жаль, ефектний двигун видається повністю занедбаним.
Летаріон

6

Я підтримую 2-ігровий двигун, який називається JawsJS - http://jawsjs.com/

Джерело @ https://github.com/ippa/jaws

скелі:

  • Читаний, задокументований код
  • 12+ документованих прикладів
  • Корисні конструктори, як Sprite (), SpriteSheet () та Animation ()
  • Стани гри - окремі розділи вашої гри для кращого організованого коду
  • Активи - Щелепи попередньо завантажать усі ваші активи до початку гри
  • Не залежить від будь-якої іншої бібліотеки javascript
  • Основується на уроках, отриманих за роки розвитку Chingu, ігрової лінійки Ruby


4

Останнім часом я сам займався деякими дослідженнями в цій галузі, тому дозвольте мені скопати 0,02 долара:

PlayN - це крос-платформна бібліотека від Google, яка збирає об’єктно-орієнтовану гру з Java на javascript / Flash / Android. Він буде обробляти JSON (AJAX), моделі даних, і має здорову семантику для оновлень та візуалізації. Дуже класні речі.

Обробка - це проста у користуванні бібліотека, яка орієнтована на дизайнерів та художників. Це виключно просте у використанні і може дати вам чудові результати. Я використовував версію Java для наукового моделювання, і це захоплення. 3D-сцени знадобляться WebGL, але 2D-сцени працюють без цього.

Three.js має кілька чудових демо-версій. Він вимагає WebGL, але результат здається того вартий. У Інтернеті також є декілька прикладів, що виходять.

Ось деякі інші елементи моїх особистих посилань, які стосуються WebGL:





1

Плагіни Pixie

Творці Contrasaurus випустили багато своїх окремих компонентів !!!

Вони мають код для перетворення матричних перетворень , абстракцій полотна та багатьох інших цікавих речей.

Їх код великий, а їх бібліотеки справді корисні.



1

Дивно, що про бібліотеку закриття Google не згадували. Він має величезний API, дозволяє більше об'єктно-орієнтованого стилю кодування та має компілятор.

Поки що я використовував лише компілятор, але я планую якнайшвидше вивчити відпочинок.


1

Я зазвичай використовую jawsjs тому що це дуже просто встановити і почати розробляти гру за лічені хвилини. У ньому є дуже багато корисних класів за замовчуванням (Tilemap, Viewport, Sprite та інші), які справді допомагають при розробці гри.


1

У вас насправді їх багато, але спочатку головним чином залежить від того, який ігровий движок ви шукаєте. Я можу дати вам декілька посилань на найпомітніші.

2D ігрові двигуни

  • Cocos2D як правило, трохи модніше. Нещодавно тут і там на Stackoverflow вискакували питання Cocos2D.
  • Вплив , ви можете побачити орієнтир, який працює на офіційному веб-сайті.

3D ігрові двигуни

Фонд Mozilla працює над 3D-ігровим двигуном на ім’я Paladin . Гадаю, це Mozilla.


0

Також є gameQuery, ігровий движок на основі jQuery. Має гідну документацію щодо їх API, а також декілька API звукових обгортків, на які вони посилаються на своєму сайті.

http://gamequery.onaluf.org/




0

Том, тут, з Scirra, ми - команда з 2 чоловік, яка створила Construct 2, виробник ігор HTML5 . (Безкоштовна версія доступна)

Можливо, ви захочете розглянути такий двигун, як наш, оскільки він робить для вас велику кількість ніжок. Наприклад, зробити зіткнення в коді самостійно може бути дуже складно (подумайте, зіткнення полігонів). Все у вашому списку легко досягти за допомогою Construct 2.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.