Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Реалистичный симулятор игры бильярд. Играйте в Бильярд 3D: Русский бильярд, как в настоящей бильярдной!

Бильярд 3D: Русский бильярд

Симуляторы, Спорт, Настольные

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Javascript + Инди игра

С этим тегом используют

Программирование IT HTML IT юмор Программист Frontend CSS Gamedev Инди Разработка Игры Компьютерные игры Unity YouTube Все
5 постов сначала свежее
7
MrCreativeMan
MrCreativeMan
2 года назад

Игра "Жизнь" (Game of Life) или "Жизнь внутри жизни"⁠⁠

[TL;DR]: вот ссылка, пока! :)

Штош... я зачем-то написал свою реализацию игры "Жизнь" с использованием вот этих странных букаф: HTML5 + CSS3 + JavaScript и решил явить сиё творение этому миру :)

Игра "Жизнь" (Game of Life) или "Жизнь внутри жизни" Игры, Игра жизнь, Разработка, Веб-разработка, Javascript, Математика, Conways Game of Life, Gamedev, Инди игра, Инди, Длиннопост

Ну что вы, полноте, не нужно аплодисментов и бурных оваций, спасибо!

А теперь серьезно (местами).

Пара слов (но это не точно) об игре

(для тех, кто доселе о ней не слыхал [wat.jpg] или тех, кто о ней что-то знает, но просто очень сильно хочет еще эти предложения для чего-то почитать)

Игра "Жизнь" (Game of Life) — это с виду простенькая игра про жизнь, где в качестве живых существ (или небольших площадей, заселенных жизнью) выступают элементарные клетки (обычно квадратные, т. е. просто квадратики), закрашенные в определенный цвет [к слову, в моей реализации живые клетки окрашены синим], а в качестве мира, в котором они живут — игровое поле, представляющее собой сетку, состоящую из множества квадратиков, каждый из которых может быть либо живым (заполненным, населенным), либо мёртвым (пустым, ненаселенным).

Жизнь в Game of Life протекает по заданным правилам, которые в далеком 1970 году придумал английский математик Джон КОнвей [John Horton Conway, создатель вышеупомянутой игры, представляющей собой к тому же математическую/физическую/теоретикобиологическую концепцию, известную как клеточный автомат]. Эти правила известны как B3/S23 (Born 3 — в пустой клетке зарождается жизнь при наличии вокруг нее трех живых соседних клеток, Survive 2,3 — клетка выживает, если рядом с ней соседствуют 2 или 3 живые клетки).

Игрок принимает активное участие в задании начального расположения живых клеток на поле (начальный паттерн), а также имеет возможность запускать/приостанавливать игру, выполнять ее пошагово (и, вообще говоря, производить любые другие дополнительные действия, которые зависят от конкретной реализации игры, будь то рандомная генерация расположения клеток на поле или загрузка заранее заданного паттерна, или возможность/запрет добавления новых клеток в уже запущенной игре [или даже возможность сделать этот выбор настраиваемым], или управление скоростью игры за счет добавления задержки перед отрисовкой следующего хода, или что угодно еще из того, что придет в голову человеку, имеющему доступ к коду игры и/или способному так или иначе реализовать свою идею)...

На каждом этапе жизни (ходу или, другими словами, в каждом поколении клеток) любая из живых клеток либо продолжает жить (остается окрашенной в цвет живой клетки), либо умирает (окрашивается в другой цвет, символизирующий отсутствие жизни или пустоту [к примеру, белый или черный, или какой-угодно другой в зависимости от реализации]).

Каждая клетка продолжает жить, если среди 8 окружающих ее соседних клеток (для клеток, находящихся на краях поля в качестве отсутствующих соседних обычно берутся клетки с противоположного края [зависит от реализации]) есть живые соседи, при условии, что этих самых соседей не больше трёх и не меньше двух, иначе клетка умирает (от "перенаселения" или от "одиночества").

В пустой клетке, которую окружают три живые соседки, зарождается жизнь.

Игра заканчивается, если на поле не осталось живых клеток, или если игровой паттерн (узор расположения клеток) на каком-то ходу повторился, то есть полностью совпал с любым из паттернов предыдущих ходов.

Игра довольно проста в управлении

(во всяком случае для меня в моей же собственной реализации, т. к. ее код я сам и писал, в конце-то концов, но если без рофлов, то можно разобраться и без пол литра даже ежу, несмотря на то, что игра на английском [а что... там слова короче!])

Исходный код стоит чисто символические $50.000, переводить мне на карту в порядке живой очереди, спасибо. Ну, а если серьезно, то код полностью открыт (open source, Unlicense license) и доступен для каждого желающего на моей страничке github абсолютно без-воз-мез-дно, то есть даром... а еще без смс и регистрации, так, на всякий случай...

Так что можете смело:

- скачивать исходники игры

- играть (в github-репозитории в файле README.ru-RU.md есть инструкция как запустить игру для тех, кто не знает)

- смотреть код, пытаться понять код, ковырять его (переписывать по своему), проклинать код, крутить и вертеть код игры на чем угодно, но только в пределах разумного :) — в общем делать с кодом все то, что там с ним еще обычно делают...

- создавать свои собственные версии игры, взяв за основу (при желании) мою реализацию, и предварительно написав, на всякий случай, трогательное прощальное письмо своему собственному мозгу.

В конце концов, вы можете просто использовать ее как рисовалку (пикселями) в свободное от чего бы то ни было время [при его наличии] :)

Feedback

Несмотря на всю мою ленивую человеческую природу, которую я периодически с переменным успехом пытаюсь преодолевать, приветствуются любые предложения, касающиеся этой реализации игры (например, по улучшению, по добавлению новых фич), которые можно:

- писать прямо сюда в комменты;

- создавать в виде issues на github (не парьтесь насчет правильности создания issue [корректно заполненные поля и прочая дребедень], просто создайте как-нибудь, описав свое предложение простыми словами, думаю я разберусь, а вот насчет ваших pull-реквестов в мой репозиторий — простите, но сразу нет: постоянно [или пусть даже периодически] изучать и принимать неизвестные мне pull-реквесты в своем репозитории я не имею ни малейшего желания, поэтому вместо этого смело форкайте мой репозиторий к себе на github или просто клонируйте/качайте код и изменяйте его как вашей душе угодно).

Если вам несказанно повезет (сойдутся все звезды, я увижу ваше сообщение, правильно его пойму, мне понравится предложенная вами идея и мне будет не лень и под силу ее реализовать), то с высокой долей вероятности я (не) добавлю ее реализацию в свой никому не нужный репозиторий (вау, вот это достижение).

Также (не)приветствуется критика (поливать говном желательно обоснованно и по возможности равномерно, чтоб красивее смотрелось).

Тут и сказочке конец. Кто прослушал - всем П...ц :0

Постскриптум: это мой первый пост на пикаЧу, поэтому смело судите все написанное мной по всей строгости здешних законов (не байт на плюсы, а просьба, честно, да).

Показать полностью 1
[моё] Игры Игра жизнь Разработка Веб-разработка Javascript Математика Conways Game of Life Gamedev Инди игра Инди Длиннопост
1
3
analcount
2 года назад
Лига программистов

Мечта о своей игре⁠⁠

Добрый вечер. Не буду томить и сразу начну.

Половину своей жизни мечтаю о своей игре,  а именно, собственной Guitar Hero, с блэкджеком и песнями. Простую, браузерную, в которую можно играть как на телефоне, так и на ПК.

В бородатые времена, было что-то подобное, называлось Flash Guitar Hero. Написанная на флэше, в которую можно было играть на сайте, либо скачать себе на ПК и играть без интернета.


Казалось, я уже дорос до того, что бы написать игру. Но, спойлер - нет, не дорос.

И я не программист, кстати.


Продумав механику игры, как она должна работать, я сел себя мучать.

Есть midi-файл, распарсив его, я получаю очень много информации:

Сами ноты:

[

{

"durationTicks": 1, //длинна ноты

"midi": 96,  //струна, на которой находится нота

"time": 2.016804  //секунда, на которой звучит нота

}, {

"durationTicks": 1,

"midi": 97,

"time": 2.016804

},

...

]

BPM:

[{

"bpm": 119, //bpm, собственно

"ticks": 0  //тик (он потом конвертируется в секунду), на которой меняется bpm

},

{

"bpm": 99,

"ticks": 768

},

...

]


Ну а дальше, дело за малым, я решил выбрать JQuery,  так как немного понимаю его.

var notesJSON = "notes.json";

var bpmJSON = "bpm.json";


$.getJSON(notesJSON, {format: "json"}).done(function(data) {

$.each(data, function(index,value) {

var TimeToPX = value['time']*762+50; //конвертирую секунды в пиксели

var height = parseInt(value['durationTicks'])+parseInt(109);

$('.notes').append('<div class="note"></div>');

var notesHeight = $('.notes .note:last-child').attr('data-px');

$('.notes').css({'height': parseInt(notesHeight) + parseInt(50)+'px'});

});

});


Поясняю:

var TimeToPX //конвертирую секунды в пиксели (шизик, да)

var height  //делаю высоту у нот


$.getJSON(bpmJSON, {format: "json"}).done(function(data) {

$.each(data, function(index,value) {

var ppq = 192;

var bpm = value['bpm'];

var bpmppq = bpm * ppq / 60;

var ticks = value['ticks'];

var speed = (289400 / bpm) *100;

var bpmtime = ticks / bpmppq;

song.addEventListener('timeupdate', function () {

var songStart = parseFloat(song.currentTime);

if (songStart > bpmtime) {

var notesHeight = $('.notes .note:last-child').attr('data-px');

var translate = parseInt(notesHeight) + parseInt(50);

$('.notes').animate({bottom: '-'+translate+'px'}, speed, 'linear');

}

}, false);

});

});


Тут все понятно. Все переменные для той самой конвертации тиков в секунды.

Переменная speed "прокручивает" блок с нотами в низ с той скоростью, которую мы распарсили из bpm.json. И которая меняется когда надо.


Так а что в итоге? А то, что, как я понимаю, JQuery не подходит для этого, на андроиде жутко все тормозит, как будто я запустил ПК-ашный Киберпанк на Редми 6. Но вот на Айосе тянет все отлично.

Вероятно, подойдет чистый жаваскрипт, без создания вот этих всех блоков (на каждую ноту отдельный див создается), возможно, с канвасом, и рисованием нот, но в нем я вообще дуб-дубом. Еще никогда так близко я не был к реализации своей мечты.

Если есть энтузиасты, помогите, пожалуйста. Или за донат на пиво с чипсонами. Можете себе забрать игру в конечном счете и монетизировать, я не против.

А можем вообще вместе ее доделать.


Живой пример того, что я сделал - http://z33376pn.beget.tech/gh/ - играть можно только на телефоне. Нажав на play в левом верхнем углу. Но посмотреть, как движутся ноты, можно на любом устройстве.


Пример другой игры на JS без тормозов:

https://github.com/jyschwrtz/JS-Hero


А вот пример того, что хочется получить в идеале:

https://github.com/henryzt/Rhythm-Plus-Music-Game

Показать полностью
[моё] Guitar Hero Jquery Javascript Gamedev Инди игра Длиннопост Текст
4
8
shaitan.vladimir
shaitan.vladimir
3 года назад
Web-технологии

Теги для создания форм. Часть №4. <datalist>⁠⁠

Теги для создания форм. Часть №4. <datalist> Разработка, IT, Инди игра, Программирование, Программист, HTML, Основы HTML, Html 5, CSS, Css3, Javascript, Верстка, Создание сайта, Собеседование, Баг

<datalist> - содержит набор опций (<option>), доступных для выбора. Выбранное значение будет установлено для элемента <input>, с атрибутом list.


Не стоит использовать его вместо тега <select>, но можно использовать как вспомогательный тег для <input>. Причина в том что его сложнее обрабатывать через JavaScript.

<form action="">
<label for="ice-cream-choice">Choose a flavor:</label>
<input list="ice-cream-flavors" id="ice-cream-choice" name="ice-cream-choice" />
<datalist id="ice-cream-flavors">
<option value="Chocolate">
<option value="Coconut">
<option value="Mint">
<option value="Strawberry">
<option value="Vanilla">
</datalist>
</form>

Открыть на CodePen


P.S. Больше уроков у меня на канале

Показать полностью
[моё] Разработка IT Инди игра Программирование Программист HTML Основы HTML Html 5 CSS Css3 Javascript Верстка Создание сайта Собеседование Баг
4
Партнёрский материал Реклама
specials
specials

Считаете себя киноманом 80 LVL?⁠⁠

Залетайте проверить память и сообразительность → Будет интересно

Киногерои Тест Текст
2
TR.0
4 года назад

Сказ о том, как я браузерную RPG делаю⁠⁠

Решил я тут, значится,  игрушку склепать. И спустя несколько приятных недель, решил, а почему бы не поделиться сий историей с теми кому она будет интересна.

Самого кода тут не будет, т.к. это не хабр, ей Б-гу. Кроме того, не обязательно знать код, что бы интересоваться процессом разработки. Да и, не хочу я сейчас делиться своим говнокодом.
Запускаться все это добро будет в браузере. Написан проект с использованием Phaser JS.

Без лишних предисловий (как видите словоблудие дается мне плохо) начнем.



Первое, что я начал, это создание игрового мира. Необходимо было придумать алгоритм по которому его построение (хотя бы базовое) занимало как можно меньше времени и было максимально лёгким. Полистав библиотеку фейзер я остановился на одном интересном варианте.


Суть его такова: Мы загружаем на сцену тайлсет со всеми необходимыми изображениями, указываем размер одного спрайта, и Фэйзер автоматически присваивает каждому указанному изображению соответствующий id.

Вот как это выглядит:

Сказ о том, как я браузерную RPG делаю Gamedev, Javascript, Разработка, Инди игра, Видео, Длиннопост

Теперь, зная какая из ячеек с которое изображения отвечает, можно загрузить этот набор в игру, при помощи простенькой таблицы:

Сказ о том, как я браузерную RPG делаю Gamedev, Javascript, Разработка, Инди игра, Видео, Длиннопост

И мы получаем вот такой результат:

Сказ о том, как я браузерную RPG делаю Gamedev, Javascript, Разработка, Инди игра, Видео, Длиннопост

Не дурно. При этом, ее можно на ходу редактировать, внося соответствующие изменения в игровой мир:

Сказ о том, как я браузерную RPG делаю Gamedev, Javascript, Разработка, Инди игра, Видео, Длиннопост
Способ не самый изысканный, но достаточно простой, чтобы меня устроить.

Вероятно, есть способ, вместо того чтобы склеивать разное количество спрайтов в один тайлсет - использовать их по отдельности, но я о сим не ведаю, так что готов склеивать в один файл.

Игрового персонаж работает следующим образом:

Это физический блок, который я "тяну" в нужное направление.

Однако, собственно, с передвижением возникли нюансы.

Поскольку я перемещаю персонажа физикой, а не меняю его пространственные координаты, то я решил, что хорошей идеей было бы использовать встроенные в фейзер методы, для реализации коллизии. Но столкнулся с проблемой: поскольку здешняя физика рассчитана больше для платформеров - при отсутствии гравитации персонажа колбасило каждый раз, когда тот упирался в препятствие.

Поэтому пришлось придумывать собственную систему коллизии.

Но для того, чтобы ее описать, сначала я должен объяснить, как здесь вообще реализовано перемещение.

Итак, когда пользователь нажимает на область среди игрового поля - игра сохраняет координаты курсора, и с помощью Phaser.Physics тянет персонажа в соответствующем направлении.

Как я сказал выше, я мог просто, в каждом кадре, менять координаты персонажа. Но в таком случае, скорость его движения зависела бы от FPS, и это пришлось бы учитывать. А встроенная физика, все делает за меня.

Сказ о том, как я браузерную RPG делаю Gamedev, Javascript, Разработка, Инди игра, Видео, Длиннопост

Также, я не делал систему поиска пути. И если перед главным героем появляется препятствие - он должен просто останавливаться. К элементарности простая система.

Вернёмся назад. Коллизию я реализовал следующим образом:
игра постоянно проверяет все соседние от Главного Героя ячейки, и если на одну из них перемещение запрещено - игра прекращает его "тянуть" в этом направлении. В результате, если попросить персонажа двигаться по диагонали, и перед ним окажется препятствие - он будет продолжать двигаться вдоль "стены". В общем, мне нравится

Теперь, создадим врагов.

Во время разработки, я использую вот такого вот зомбака:

Сказ о том, как я браузерную RPG делаю Gamedev, Javascript, Разработка, Инди игра, Видео, Длиннопост

Его логика аналогична оной у ГГ, исключая лишь что точку направления определяет не курсор, а положение игрока.

Работает это так: если ГГ подходит на достаточную дистанцию до врага, то начинает двигаться в его направлении, но не забывая о коллизии

Сказ о том, как я браузерную RPG делаю Gamedev, Javascript, Разработка, Инди игра, Видео, Длиннопост

Да, в сим разе возникают комичные ситуации, когда враг не может обойти стену, но это уже будут проблемы геймдизайна.
Продолжим.

Боевая система.
Сделал я оную совершенно не изысканно (как и всё прочее):
Когда игрок приближается к врагу достаточно близко - запускается расчет нанесенного ущерба (нанесённый урон = сила атаки - броня)
А для визуализации, я накладываю на всех участвующих в бою анимацию с соответствующим эффектом (простите за качество):

Как по мне -- уже выглядит пристойно.

На сим -- кланяюсь, т.к. пока это всё.

Надеюсь было занимательно.

Ныне моя головная боль -- это инвентарь, так что следующий пост будет не скоро.
Но коли не загнусь -- продолжу

Показать полностью 7 1
[моё] Gamedev Javascript Разработка Инди игра Видео Длиннопост
6
DeanG
DeanG
5 лет назад

Кто нибудь может предложить движок для создания игры The binding of Isaac?⁠⁠

Вот тут на видео чувак делает игру и вроде бы у него легко получается, однако он работает на движке который сделан на Javascript. А я не знаю Javascript, знаю только C#. Можете порекомендовать какой нибудь движочек или лучше самому состряпать? https://www.youtube.com/watch?v=9XtXplVN7fA

[моё] The Binding of Isaac Инди игра Игры Программирование Gamedev Javascript C Текст
13
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии