Как стать автором
Обновить

Комментарии 29

Здесь globalTimer — это написанная мной система обработки событий по таймеру javascript setInterval.

какая практическая проблема вызвала создание этой системы?

Да. Можно просто запустить много setInterval-ов с разными периодами. Однако, я заметил, что это плохо сказывается на рендере. Движение становится рваным: видимо, браузер пихает выполнение этих интервалов в любое свободное время. И выполняются иногда они слишком долго и сбивают плавность фреймрейта. Даже requestAnimationFrame не помогает. А с одним интервалом в Хроме — все гладко. Однако, в Firefox все равно наблюдаются рывки. И пропадают только, если отключить setInterval вообще. Думаю, я вообще откажусь от setInterval и все его события перенесу в функцию рендера. И буду там уже управлять моментами вызовов вручную.
НЛО прилетело и опубликовало эту надпись здесь
Попробовал так. Теперь стало и в Хроме дергаться. Я подозреваю, что из-за requestAnimationFrame. Он у меня используется еще и в 3D рендере. Возможно, не надо вызывать его дважды. Все-таки, думаю, стоит перенести все таймеры в функцию рендера под единый requestAnimationFrame.
У меня был опыт работы с Cannon.js, совместно с Three.js. Да, готовые движки — это тоже неплохо. Но в них есть свои ограничения, с которыми приходится мириться. А самому можно сделать, как тебе надо. К тому же, я стремлюсь уйти даже от Three.js, написав свою прослойку на GLSL. Поэтому путь в сторону очередного стороннего движка для меня видится неправильным. Мне, скорее, в противоположную сторону.

А зачем запихивать игру в exeшник и если уж так, то, раз уж игра на js, почему не воспользоваться готовыми кроссплатформенными упаковщиками?

В идеале, я бы вообще хотел выпустить браузерную версию, которая бы работала просто в браузере на любой ОС. А чем и во что еще можно упаковать javascript, я что-то не совсем понимаю?

Electron, какой-нибудь, например. Webkit, по идее, тоже реально сбилдить под Mac, и например, в виде deb пакета. Просто, очень много ценителей "того" принца персии сидят сейчас не под виндой.

Да, собственно, в Webkit есть возможность билдить под MacOS и Linux. Просто я сейчас так занят непосредственно созданием игры, что тестирую ее исключительно под Windows. Но обязательно попробую собрать и под другие ОС.
В оригинальной игре, кстати, анимация персонажа была лучше ;)
В оригинальной игре разработчик снял на пленку самого себя во всех прыжках и прочих движениях и оцифровал все по кадрам. По этому там анимация такая хорошая.
Он снимал своего младшего брата.
С этим я согласен. Именно поэтому и ищу спеца по 3D анимации. У меня к этому нет таланта. Но если не найду, то придется все делать самостоятельно. Но то, что анимацию надо переделывать — это 100%.
Еще один важный момент по поводу анимации — сейчас персонаж все время находится по центру. Малейшее движение — и фон сразу смещается. Это приведет к быстрому раздражению во время игры. Необходимо дать возможность персонажу перемещаться по текущему экрану в некоторых пределах без скроллинга. Дошел до края — начинается скроллинг. Пошел назад — и пока до противоположного края не дошел — экран стоит на месте.
А как же гонки и шутеры? Там такое движение не раздражает, а, наоборот, придает динамику. Или вы считаете, что целевая аудитория моей игры — абсолютная противоположность той? А как же пиксельные 2D платформеры, раннеры? Там тоже, в большинстве случаев, постоянно движется фон.
Ну и, мне кажется, с вашим вариантом у меня будет ломаться геймлей. Некоторые препятствия в игре будут представлять собой летящие предметы (камни и т.п.) с катапульт, к которым игрок будет приближаться. Если давать ему доходить до края, то останется слишком мало времени на реакцию. Хотя, конечно, можно эти орудия расставить в таких точках, при которых экран, как раз, подвинется и игрок окажется в центре…
В общем, я попробую сделать так, но не уверен, что эта возможность войдет в финальный билд.
Я не про отсутствие скроллинга совсем, а про небольшой люфт при мелких движениях. В пределах от 2-5 см, и до краев экрана, как лучше будет до геймлпея. Но минимальный все равно нужен. Иначе сильно рябит в глазах при мелких движениях. Создается впечатление, что персонаж на месте стоит все время, а движется только фон.
Вот идея не двигать экран при мелких движениях мне нравится. А когда игрок перемещается чуть дальше, тогда — чтобы экран как бы догонял его и с продолжением движения персонажа уже бы двигался, как сейчас. Надо будет попробовать. Можно даже сделать это как опцию.
Проблема еще может быть в мониторе. У меня он почти не оставляет шлейфов, а вот играл у друга — у него при скроллинге все размазывается.
Вообще, в платфомерах скроллинг был основной фишкой. На этом Марио и взлетел, в целом. Хотя в Принце персии, конечно, скроллинга не было…
Кстати, там, видимо, отсутствие скроллинга отчасти было обусловлено техническими возможностями старого железа: насколько я знаю, игра изначально была выпущена для Apple II.
Да, скорее всего, так и было.
Выглядит очень круто. Отличная работа!
Не подскажите, как много ресурсов ушло на разработку?
Спасибо. А в чем бы вы предложили измерить эти ресурсы? В дошираках? Я занимаюсь этой игрой где-то с начала года. Но параллельно еще и работаю над своей библиотекой. Кроме того, немало времени уходило на то, чтобы найти решения всевозможных задач. Но, думаю, следующую игру буду делать уже намного быстрее.
В человеко-часах и деньгах, конечно)
Вы работаете в одиночку? Может отдавали что-то на аутсорс, покупали звуки или текстуры? Сколько еще придется потратить времени и денег по прогнозам?
Как, кстати, собираетесь монетизировать браузерную игру?
В общем, интересна финансовая сторона вопроса.
Все делал один. Ничего не покупал. Текстуры сделал сам, звуки — какие-то бесплатные, какие-то сгенерированы самостоятельно. Как монетизировать подобную браузерную игру — пока не знаю. Но планирую выйти на краудфандинг со сборкой игры под Windows, она сейчас есть в Стиме. Далее, если что-то соберу, то уже на эти средства найму 3D моделера, чтобы улучшить графику и сделать нормальную анимацию персонажей. Релиз пока поставил на 3 августа 2020. Ну а вложенных средства там пока только $100 за размещение на Стиме. Сколько ушло моих человеко-часов — не считал.
Круто! Удачи с проектом!
Может где упустил, но где можно потрогать в живую?
Можно набрать в поиске и поиграть на Steam или скачать с Itch. Домашняя страничка:
m3d.me/index.html?lang=ru&go=percylancaster

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории