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

Пикман

Аркады, На ловкость, 2D

Играть

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

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

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

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

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

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

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

Gamedev + Libgdx

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

Инди Разработка Инди игра Игры Unity Компьютерные игры YouTube Android Open Source Все
16 постов сначала свежее
16
BXJIAM
BXJIAM
2 года назад
Лига Разработчиков Видеоигр

Первая работа в команде. Проект «Коммерсант»⁠⁠

О проекте.


Жанр: экономический симулятор.


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

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

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

Ссылка на посвящённый идеям и разработке телеграм канал: https://t.me/comersnt


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

Часть первая. Погружение в историю.


В девяностых годах, десятиклассником, я познакомился с «Коммерсантом», знаменитой в то время игрой авторства Владимира Харченко. Отсиживался в оборудованном машинами Gold Star (ныне LG) компьютерном классе взамен уроков (кто сказал что я прогульщик?) и играл преимущественно в «Dangerous Dave» 1 и 2 части, да «Коммерсанта». Между делом, конечно же, изучал программирование на QBasic и Pascal (так что я не совсем прогульщик, а может даже совсем не прогульщик). Доброе время, светлые денёчки, всем привет.

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Главное окно «Коммерсанта» 1991 года.


Ссылку на «Коммерса», как мы его называли, не вставляю. По поиску «играть онлайн коммерсант 1991» легко можно найти и запустить даже браузере. И никаких дискет 5.25.

Суть игры отражена в названии. Игроку необходимо богатеть, торгуя нефтью и землёй. Так сказать, основной способ заработка спекуляция.


По меркам современных игр «Коммерсант» простой, но тем не менее цепляющий в те времена «экономический симулятор». Возможно, популярность ему обеспечило происходящее в стране – лихие 90-е, люди внезапно богатеют, внезапно беднеют, всё происходит очень быстро, а экономические отношения крепнут и бурлят, как дедовская брага.


Именно с тех самых времён голопузого моего детства за мной неотступно следует призрак «Коммерсанта», желание написать свою версию, своё «казино с блэк-джеком и дамами». Расширить и углубить, вникнуть и увеличить, показать и дать возможность.


Этим и занимаемся.

Часть вторая. Начало.


В 2020 году обсуждали идею с друганом, оба прониклись, заразились и преисполнились. Но незаконченные разработки, работа, текущие дела и прочая суета не позволяли засесть за детализацию. Но в декабре прошлого года пришло просветление и, наконец, сели за разработку «Коммерсанта».


Перво-наперво надо было понять, хватит ли у нас сил и умений реализовать задуманное. У обоих высшее экономическое образование, есть практическое понятие о рыночных процессах и даже можем отличить доллар от евро. Технически подкованы: я преподаю информатику, в то же время действующий разработчик; что такое алгоритмы и всякие структуры данных понимаю и оперирую. Единственный минус в том, что работал я всегда сам на себя и для себя, без командных проектов и без руководства. Работал больше для удовольствия и саморазвития, чем на коммерческой основе. Впрочем, здесь есть и плюс – никто не стоял над душой и не пугал сроками.


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

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Схема проработки одного из многоступенчатых событий.


Любой проект требует неимоверных организационных усилий. Довольно просто писать код для самостоятельных задумок: сам знаешь, чего хочешь, знаешь свои силы и возможности, мысленно видишь процесс и результат. Когда же идею надо донести до широкого круга людей и, что важно, организовать эти самые широкие круги, наступают некоторые сложности. Тем не менее, я надеюсь на свой преподавательский опыт, включающий в себя в обязательном порядке организацию и контроль процессов.


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


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


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

На начальном этапе мы очертили список слабых мест. Например, у нас не было никого, кого можно было пригласить в дизайнеры. Искали, читали, в конце концов вариант нашли.


Эти вроде бы простые выводы на самом деле заложили довольно серьёзную основу для действий. В процессе принимать решения приходится «на ходу», и здесь важно, чтобы каждый из нас владел ситуацией целиком и полностью.


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

Часть третья. Теоретическая практика.


В декабре 21-го года начали «давать продукт»: набрасывать первые варианты. Выбрали онлайн доску с возможностью лепить схемы и соединять их путеводными стрелками. И чтобы было бесплатно и красиво.


Заметил одну такую вещь: красиво (по своим меркам) и аккуратно нарисованное вдохновляет продолжать работу. Тогда как сваленная в кучу информация, набросанная «на коленке» только путает и раздражает, как беспорядок в доме.


Суровая реальность показала, что на 100% детализировать проект нам не удалось, тут бы хотя бы процентов семьдесят вытащить...

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Первоначальная детализация данных биржи.


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


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

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Одна из версий главного экрана.


Нас спасло то, что мы следовали советам «из учебников» и не ленились тратить время на работу над схемами и прототипами. Затраченное окупилось организационным преимуществом и тем, что вся наша команда чётко понимает, что мы делаем. И даже отчасти «видит» в виде схем и графиков. Безусловно, можно доносить смысл проекта словами, жестами и энергичным матом. Но лучше один раз увидеть...


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


Как работали над частями целого? Первым шагом описываем абстрактные механики (например, «Глобальные цели», которые должен профинансировать игрок для победы), после начинаем их детализировать. Надеюсь, что к финалу схема изменится не принципиально, а лучше не изменится вообще. Коней же на переправе не меняют, в конце концов.

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Одна из глобальных целей и этапы для её достижения.


Очертили границы? Детализируем каждую подцель. Например, финансирование проекта «Светофор на перекрёстке» потребует порядка 50000 единиц внутриигровой валюты и две внутриигровых недели на реализацию (а как долго ставят светофор в реальности?)


Итого: в разработке нам очень помог онлайн сервис, где чертили схемы и диаграммы. Описали всё, что только возможно – в цифрах, примерах, расчётах на Python (для отслеживания зависимостей). Даже проработали изменение биржевых цен и построение графиков.


Пусть код на Python не попадёт в андроид-версию, но зато мы увидели на графиках, как поведут себя цены при работе наших алгоритмов. И заранее скорректировали.

Часть четвёртая. Практическая практика.


Для реализации решили использовать Java и Android Studio, плюс движок LibGDX.


Можно долго спорить на счёт целесообразности инструментов. Отмечу лишь, что выбор обусловил опыт разработки именно с помощью указанного. Будем делать с минимальным привлечением сторонних библиотек, контролируя каждый шаг алгоритма. К тому же, у нас в планах реализовать только минимально рабочую версию (MVP). Надо обрести осознание, насколько интересным выйдет продукт и, если что, продолжить его, расширяя и углубляя хотя бы по графике.


Почему не Unity? Мне кажется оно громоздко и не даёт полного контроля над обработкой данных так, как нам надо. Да и опыта в Unity совсем мало.

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Часть схемы биржевых фаз и расчёта динамики стоимости активов.


В процессе расчёта формул и создании механик первое, с чем мы столкнулись, - нехватка информации. И непонимание, насколько наша идея «зайдёт», особенно во времена всеобщей любви к разного рода «три в ряд», «шарикам», «собери слово» и разным кликерам. Но сомнения оставили. Раз лично нам идея нравится, значит, она понравится ещё хотя бы одному человеку. Будем самореализовываться, выражая свои интересы и стремления.


Но замечу, что коммерческую составляющую (при разработке «Коммерсанта», ага) мы не просчитывали «от и до», проект отчасти носит энтузиастовый... энтузиазный... энтузиазочный характер.


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


Надо признать, что отзывы до реализации офигенная штука. В своё время демо-проектом я разрабатывал (опубликовано в Google Play) «Супер-защитник Земли от хищных инопланетян» на манер Space Invaders. Когда код был готов и протестирован, создал чат с посылом «подскажите, что ещё можно сделать». И поразился до глубины души (в положительном смысле), когда мне посоветовали внедрить боссов (привет, Андрей!) и добавить настраиваемую вибрацию на выстрелы и смерть врагов (привет, Илья!) (Подсказали ещё с десяток улучшений, перечислять их уже не буду). Всё успешно внедрено и реализовано, благо архитектура кода позволила сделать это без глобальной перекройки.


Так вот. Поразило меня то, что я вроде бы и сам знал, что можно сделать «боссов», понимал, как реализовывать вибрацию, но в голову не приходило вставить эти механики в игру! Почему – без понятия. Вот просто мозг не сработал. Супор какой-то. Чёрная дыра. Задним умом сижу думаю, блин, да вообще на изичах можно прописать боссов, вибрацию, дополнительные настройки, а в момент разработки идеи игры и написания кода вообще на ум не пришло!

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Босс в «Супер-защитнике…»


Если первой трудностью выступает нехватка информации, то второй выделю отсутствие дизайнера и звукорежиссёра. Мы, одинокие разработчики, в душе своей универсальны – и музыку пишем, и картинки какие-никакие рисуем (или знаем, где скачать). И код тестируем, и правим, и ругаемся. Но для идеи «Коммерсанта» нужны более-менее профессионалы, а не нарисованные хвостом непокорного мула иконки, кнопки и пиктограммы.


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


С этого момента можно начинать реализацию. В нашем активе долгие беседы, выстраданные правила, оговоренные сомнения, рождённые и умершие идеи, решённые и не очень проблемы, проведённый анализ схожих продуктов. Плюс целая куча тестового кода, схем, диаграмм, путеводных стрелок, точек, заметок, комментариев, созвонов, сообщений в мессенджерах. И есть дизайнер и звуковик. Уиии! Ещё на шаг ближе к блэк-джеку с дамами.


В общем, приобрёл опыт. Пусть не останавливает то, что вы сами не обладаете в нужной мере какими-то навыками. Если поступить с умом, то можно найти себе в проект неравнодушных людей, которым требуется портфолио/пет-проекты и/или практика. А то и удастся найти спецов, вдохновлённых идеей.


Задумку надо обязательно обсуждать, показывать её, сообщать о неё. Да, будут и негативные отзывы, но в таких случаях я вспоминаю фразу Гёте: «Самое смешное желание - это желание нравиться всем». Не надо нравиться всем. Ерунда это. Люди имеют право не любить и меня, и мои идеи, как бы это иронично не звучало. Важно лишь, чтобы идея нравилась самим, чтобы был хотя бы один единомышленник. Но написанное отнюдь не означает, что нужно игнорировать мнения, ведь мы делаем не для себя, любимых, а стараемся заинтересовать как можно больше людей!

Часть пятая. Организационные трудности.


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


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


У нас нет UI/UX дизайнера, поэтому приходится делать всё самим. Основываясь на опыте и понимании прекрасного, вдвоём с друганом размечаем экраны в известном приложении на «ф». Далее экраны попадают в руки художника, которая вносит свои замечания и вчерновую рисует необходимое. После черновиков обсуждаем, пойдёт или нет, а дальше каждый занят своим делом.

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Экран поликлиники «до» и «после». Возможно (надеюсь, нет), что он ещё изменится.


На самом деле нам очень повезло с художницей и звукорежиссёром. На удивление ребята ответственные, сроки и слова держат, не нужно постоянно им напоминать, мол, ещё надо сделать это или то. Степень самостоятельности высокая, решения в своей сфере принимать умеют, что, на мой взгляд, является одним из важнейших качеств специалиста. С вами приятно работать, Эля и Алексей!


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


С другой стороны, программисту и художнику можно работать независимо. Для этого потребуется потратить тысячу семьсот триста двести восемьсот часов и подготовить всевозможные экраны, указав на них хотя бы приблизительное расположение объектов.


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

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Экраны перехода в локации в зависимости от наличия у игрока автомобиля.


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


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

Так что если готовы реализовать свой командный проект – сделайте опорный материал для единомышленников.

Часть шестая. Мотивация.


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


Если вы собираетесь реализовать свою великую идею и написать сногсшибательную игру в команде, то приготовьтесь стать паровозом, стержнем, тем, кто будет постоянно двигать процессы вперёд. Напоминать, уговаривать, хвалить и поддерживать. Это на самом деле нелегко и от этого просто устаёшь. Вы должны очень сильно любить своё дело и свою идею, чтобы ваша эмоциональная преданность заражала других и поддерживала на плаву всю глыбу проекта.


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


Пусть хотя бы символически.

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Толком ничего ещё не сделано, а количество обслуживающих классов зашкаливает.


Так что если вы хотите взяться за командный проект, пусть даже с друзьями (как обычно и делается), то будьте готовы к следующему. Первая неделя пройдёт по кайфу – обсуждения, планы, мечтания. На вторую неделю к обсуждениям добавятся шутки, а на третью – чёрный юмор. Острота вашей идеи будет угасать, она перестанет казаться столь уникальной, какой была месяц назад. А когда придётся трудиться по-настоящему, - рисовать схемы или писать код, - тут держитесь крепко. Однообразие и рутина погасят пламя вашего энтузиазма, и поддерживать огонь стремления придётся за счёт внутренних резервов. Для этого нужно обладать достаточно крепким характером (сам о таком мечтаю).

Часть седьмая. Обобщение.


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


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


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

Первая работа в команде. Проект «Коммерсант» Длиннопост, Gamedev, Libgdx, Приложение, Симулятор жизни, Android разработка, Биржа, Финансы, Экономика, Мат

Экран кабака. А сегодня пятница... Не пора ли за здоровье?


Словом, если есть желание делать и воплощать – делайте и воплощайте! Это аксиома. Лучше проиграть в реальном споре, чем вести спор внутренним голосом.


А мы продолжаем тянуть лямку реализации, «дневник разработчика», события и новости ждут вас в канале (ссылка в начале поста), лично приглашаю вас поучаствовать, поделиться опытом, сделать замечания или просто понаблюдать, как оно происходит в реальности. Добро пожаловать, и спасибо за внимание, дорогие пикабушники! Буду держать вас в курсе!


P.S. Тут такой внутренний голос – ну ёпта, можно было ограничиться текстом седьмой части, просто обобщить и не плодить простыни, загаживая интернет рассказами о себе.


A.P.S. Нет. Было написано в надежде, что кого-нибудь вдохновит реализовывать свою мечту, побудит к действию и в мире станет больше прекрасных игр, разработок и вообще всего!

Показать полностью 11
[моё] Длиннопост Gamedev Libgdx Приложение Симулятор жизни Android разработка Биржа Финансы Экономика Мат
9
111
Aterniad
Aterniad
4 года назад
Pixel art

Первые опыты в пиксельной анимации⁠⁠

Какое-то время разрабатываю свою собственную игру, жанр - рогалик.

И если о коде рассказывать некогда, то рисовашки хотя бы можно показать : )


Это у нас Wraith, или просто Призрак:

Первые опыты в пиксельной анимации Pixel Art, Анимация, Пятничный тег моё, Gamedev, Roguelike, Paintnet, Гифка, Инди, Libgdx, Длиннопост

Это малыш Паук, самый первый персонаж:

Первые опыты в пиксельной анимации Pixel Art, Анимация, Пятничный тег моё, Gamedev, Roguelike, Paintnet, Гифка, Инди, Libgdx, Длиннопост

(ещё надо будет поправить его цветовую гамму под уровень)


Старина Скелет:

Первые опыты в пиксельной анимации Pixel Art, Анимация, Пятничный тег моё, Gamedev, Roguelike, Paintnet, Гифка, Инди, Libgdx, Длиннопост

А так выглядит Мимик:

Первые опыты в пиксельной анимации Pixel Art, Анимация, Пятничный тег моё, Gamedev, Roguelike, Paintnet, Гифка, Инди, Libgdx, Длиннопост

В движении, потому что не двигаясь, он бочка или сундук.


Привидение:

Первые опыты в пиксельной анимации Pixel Art, Анимация, Пятничный тег моё, Gamedev, Roguelike, Paintnet, Гифка, Инди, Libgdx, Длиннопост

Земляной элементаль:

Первые опыты в пиксельной анимации Pixel Art, Анимация, Пятничный тег моё, Gamedev, Roguelike, Paintnet, Гифка, Инди, Libgdx, Длиннопост

Первый мини-босс, Драйдер (Drow + Spider):

Первые опыты в пиксельной анимации Pixel Art, Анимация, Пятничный тег моё, Gamedev, Roguelike, Paintnet, Гифка, Инди, Libgdx, Длиннопост

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


Впереди ещё отрисовка почти 30-ти монстров.


Они же в действии:

Первые опыты в пиксельной анимации Pixel Art, Анимация, Пятничный тег моё, Gamedev, Roguelike, Paintnet, Гифка, Инди, Libgdx, Длиннопост

Для поста выложил на статичном фоне, на самом деле в динамике они выглядят лучше!

Выложил в Pixel Art, потому что Лига разработчиков видеоигр говорит что одни только гифки из игры постить не стоит)

Буду рад критике или идеям.

Показать полностью 6
[моё] Pixel Art Анимация Пятничный тег моё Gamedev Roguelike Paintnet Гифка Инди Libgdx Длиннопост
22
16
gmassta
5 лет назад

Конструкторы VS фреймворки⁠⁠

Конструкторы VS фреймворки Gamedev, Игры, Конструктор, Libgdx, Unity, Игровой движок

Вазяп дудс!


Что лучше для начинающего игродела, начать юзать конструкторы, или окунуться с головой в глубины игровых движков, ковыряя фреймворки?


Давным-давно, когда небо светило ярче, а солнце было выше я начал изучать разные конструкторы. Времен было убито море. В ход шло все, от RPGMakerа до UE. Я качал примеры, изучал решения разных задач, создавал свои проектики.

Мне очень нравилась скорость создания игр, визуальные редакторы почти всех ресурсов, а разработка 3D игр без подобных конструкторов очень сложна.


Но даже при всех их плюшках чего-то мне не хватало:

Дорогие лицензии, что не подходит для хобби.

Большие объёмы памяти пустых проектов, что негативно сказывается при разработке под мобилы.

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


Тогда я начал изучать фреймворки. Вот несколько бодрых: Cocos2d, MonoGame, LibGdx… Я их все попробовал и остановился на LibGDX. Он больше всего мне подошёл для моих творчеств. Он полностью бесплатный (что очень важно, если вы просто учитесь). Для него есть визуальные редакторы (шрифты, упаковщики текстур, редактор полигонов для Box2D, редактор эффектов (как 2D так и 3D), nine_path редактор, для разработки карт можно юзать TileMap, Spine и его аналог Dragon Bones) В общем все, что нужно, чтобы делать игры.


Что мне это дало? После того, как я засел за LibGDX прошло несколько лет. Я практически полностью знаю, как он работает. Знаю в какой момент что загружается, полностью управляю всеми этапами работы в своих проектах. Эти знания открывают мне понимание работы игровых движков в целом. Изучая исходники я даже написал свой движок на C++.

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

Показать полностью
[моё] Gamedev Игры Конструктор Libgdx Unity Игровой движок
31
Партнёрский материал Реклама
specials
specials

Сколько нужно времени, чтобы уложить теплый пол?⁠⁠

Точно не скажем, но в нашем проекте с этим можно справиться буквально за минуту одной левой!

Попробовать

Ремонт Теплый пол Текст
cyberbach
cyberbach
6 лет назад
Лига Разработчиков Видеоигр

Видео-блог разработки игры # 18⁠⁠

■ intro


Всем привет. Это 18-ая часть блога о разработке игры.

Видео для ютуба я выкладываю уже 9 месяцев. Мне нравится это делать.

Вообще, мне нравится всё, что я делаю =)


За прошедшие 2 недели я сделал большой рефактор кода, прошёл всего Ведьмака с дополнениями и дочитал "Призраков" Чака Паланика.

■ Misery / Нищета


"Людям нравится смотреть на трэш. Где хуже, чем у них" - это цитата из "Призраков".

Испытание нищетой - не самое легкое.


Хорошо, когда ты родился в богатой семье, у тебя всё есть. Ты живёшь в красивом месте и тебя окружают умные и красивые люди. Ты находишься внутри красоты и сам становишься красивым.


Но если ты родился в трущобах, где тебя окружают только пьяницы и лентяи без цели в жизни. Как быть красивым? Как делать красивые вещи?


Вот место, в котором я живу всю жизнь. (см. видео в начале поста)

Каждое утро меня встречают трещины на стенах, замазанные дырки, грязь на двери от следов рук. Доброе утро!


Дыры в стенах в ванной комнате, и протекающие трубы. Эти дырки сделал сантехник, когда менял смеситель. Он делал не для себя, а для каких-то "незнакомых ему людей". Пофиг какой результат, будут жить и всю жизнь смотреть на эту дыру в стене.


Я чищу свои остатки зубов, стараюсь их как-то сохранить. С детства боюсь стоматологов. Когда мне было 5 лет, мне удалили зуб без наркоза. Родители говорили, что это лучший врач в городе - он всё делает отлично. Врач мне удалил зуб раскурочил два соседних. Одно из самых ярких воспоминаний из детства. Доброе утро!


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

Знаешь, что самое страшное - в моём окружении большинство людей копят деньги, чтобы купить такую квартиру. Это их заветная мечта - собственное жильё.


Меня встречает серое небо за окном. Серые угрюмые люди, грязь и реклама.

Хотел бы я написать о чём-то красивом, что меня окружает. Я всё мечтаю о том, что с домов исчезнет реклама и будет видна архитектура. А не разноцветная мазня на стенах. Я мечтаю о том, что смогу надеть ботинки с кожанной подошвой, чтобы пройтись по асфальту без трещин и ям. Я мечтаю, что когда-нибудь одену черные брюки и сяду на скамейку, которая не порвёт мне брюки неотёсанными досками, или испачкает грязью и мусором. И красивая рекламная наклейка не приклеится ко мне в самое неприличное место. Но пока что у меня не достаточно денег, чтобы просто переклеить обои. Чак Паланик абсолютно прав, что людям нравится смотреть на трэш. Где сильно хуже, чем у них. Но если вся твоя беда в дырке на стене - это не достаточно хуже. Это не интересно. Есть ведь вещи поважнее этой дырки, на которую ты смотришь всю жизнь.


Я прекрасно понимаю людей, которые хотят всю жизнь проводить в онлайн-мирах. Там красиво и приятно находится. Там всегда светит солнце, там всегда приветливые продавцы. Там всегда есть, чем заняться.


На эту мысль меня подтолкнуло видео с канала DANIL K

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

■ Core GamePlay loop


Базовое приложение на libgdx выглядит так:

public class MyGdxGame extends ApplicationAdapter {


// область переменных, которые доступны на всём протяжении жизни приложения


public MyGdxGame () {} // пустой конструктор

public void create () {} // инит основных синглетонов и инит работы со СкрИнами (Screen/Экран)

public void resize ( int width, int height ) {}

public void render () {} // бесконечный цикл, этот метод вызывается каждый кадр (очень часто)

public void pause () {} // при переводе приложения в режим Паузы (например, свернули приложение)

public void resume () {} // когда приложение возвращается из режима Паузы

public void dispose () {} // когда мы запустили метод Gdx.app.exit();

}


За нас уже написана работа с мобильным приложением. И для нас уже создан бесконечный цикл. Наша первая задача внутри этого бесконечного цикла (метода render) переключать Скрины и сделать возможность выйти из цикла, чтобы закрыть приложение.


Делаем переключение Скринов.

В области переменных объявляем Screen screen = null; Структура класса Screen идентична нашему приложению, есть точно такие же методы. А ещё есть метод void show (), который выступает в роли конструктора.

Чтобы нам было удобно переключать Скрины, добавляю

enum SCREEN_TYPE { LOADING_MENU, LOADING_GAME, MENU, GAME, CUT, EXIT }

и метод переключения void switchTo ( SCREEN_TYPE screenType ){} в котором я свичом создаю нужный класс: screen = new LoadingScreen() или screen = new MenuScreen().

И здесь же вызываю метод screen.show();


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

screen = new GameScreen( this );


Теперь нужно передать из основного класса MyGdxGame управление Скринам. Сделать это просто, так как я уже говорил, что названия методов класса Screen дублируют методы нашего главного класса. Выход из приложения сделан в методе switchTo(). Я передаю в этот метод SCREEN_TYPE.EXIT, никаких Скринов не создаю, а просто вызываю Gdx.app.exit();


Теперь игровой цикл из MyGdxGame.render() мигрирует в класс render() определённого Скрина.

По сути, мы внутри нашего основного приложения делаем несколько маленьких приложений и можем их переключать из главного приложения. Больше можно ничего не писать в MyGdxGame и работать только со Скринами. Это удобно.


На википедии пишут, что для каждой игры нужно писать собственный игровой цикл, я считаю это бредом. Достаточно написать один шаблонный игровой цикл и делать на нём игры ЛЮБОГО жанра.


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


Для удобства, мы разделим каждый render() метод на 2 части: draw() и update(). Всё что связано с выводом на экран будет в методе draw(), а всё что касается внутренних вычислений - это в update().

■ Dynamic Levels logic (подробный туториал на 17 листах https://docs.google.com/document/d/1bKQQjRncCmYqcC9405jfC2Rv...)


Основная логика Динамических уровней.

Пусть у нас есть несколько уровней: A, B, C, D, E.

Текущий уровень - A.

Уровни B и E - соседние с A.

Уровни C и D - соседние с B.

Уровень E соседний с D.


Связь между уровнями такая:

A-B

A-E

B-A

B-C

B-D

С-B

D-B

D-E

E-A

E-D


Уровни D и C "не видят" уровня A.

В программе это дело записывается направленным графом.


Сначала наш персонаж стоит на уровне А. Уровни A, B, E - загружены, больше ничего не загружено.

[A] [b] [e]


Персонаж перемещается на уровень B. В этот момент он теряет контакт с землёй A, Игрок_стоит_на_земле = false;

Но сразу же получает новый контакт с землёй B, Игрок_стоит_на_земле = true;

Текущий уровень под ногами меняется, происходит загрузка того, что нужно, согласно списку связей - нужно догрузить С и D. Уровень A - не загружается, так как уже загружен. Но кроме этого нужно выгрузить из памяти E, так как его нет в текущем списке связей.

[a] [B] [c] [d]


Флаг Игрок_стоит_на_земле - важен. Игрок может подпрыгнуть или перепрыгнуть на новую локацию.


Персонаж перемещается на уровень C. Смотрим на список связей: всё что лишнее - выгружаем. Дополнительно загружать ничего не нужно. Отсюда можно отправится только в сторону уровня B.

[b] [C]


Опять перемещаемся на уровень B. Уровни D и A догружаются, согласно списку связей.

[B] [c] [d] [a]


Персонаж переходит на уровень D. Отсюда можно попасть в B или в E.

[b] [D] [e]


■ Dynamic Levels code


DynamicLevel - синглетон. За время работы программы он 1 раз инициализируется, и при закрытии приложения сам будет удалён, если этого захочет System.GC =)


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


Сердце DynamicLevel - это два метода: update и reload. Update работает всегда и он при необходимости что-то подгружает и что-то выгружает. А reload - даёт знать, что именно нужно подгружать.


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


В физическом движке в ContactListener, во время контакта ГГ и физического уровня, в DynamicLevel посылаются сообщения - какой именно уровень сейчас под ногами. Если уровень не отличается от того, что был ранее, то DynamicLevel пробует выгрузить что-нибудь лишнее. Если уровень под ногами изменился, то сразу же начинается загрузка новых уровней. А после этого, с небольшой задержкой, выгрузка тех уровней, что больше не нужны.


Все добавления/удаления из движка Ashley происходят не мгновенно, а в момент простоя всех систем, в том числе и физической системы bullet. Этим очень хороша компонентная система, что исключает проблемы добавления/удаления физических тел.


■ GAME DESIGN


Сейчас я активно занимаюсь кодом. Делаю все возможные механики, которые будут в игре. До этого рано переходить к оформлению игры. Вообще неправильно заниматься оформлением игры до того, как готов рабочий прототип. А рабочего прототипа у меня всё ещё нет.


Готовые механики:

- перемещение персонажа по уровням

- динамические ресурсы на уровнях

- работа с триггерами

- скрипты NPC

- инвентарь


Не готовые механики - это то, чем я сейчас занимаюсь:

- стрельба

- разрушаемые объекты

- использование предметов из инвентаря, взять предмет в руку

- скрипты камеры для кат-сцен

- диалоги между персонажами

- передача анимации из референц-модели в другие модели

- раздельная анимация для верха и низа модели

- тени (к сожалению не смогу сделать)


■ LITERATURE


Пока я не купил "Бойцовский клуб" буду читать старые книги свой библиотеки. Сначала небольшая поэма Пушкина "Руслан и Людмила". Потом книги Эдгара Берроуза про Тарзана. А потом фантастика Герберт Уэллса.


■ outro


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


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


Спасибо за внимание.


Открытый исходный код игры: https://github.com/cyberbach/dunno

Показать полностью 1
[моё] Libgdx Gamedev Gamedev log Видеоблог Dynamic levels Геймдизайн Видео Длиннопост
8
cyberbach
cyberbach
6 лет назад
Лига Разработчиков Видеоигр

Видео-блог разработки игры # 16⁠⁠

Привет Пикабу!

Это блог о разработке игры про Незнайку. Игра-платформер на фреймворке libgdx.


MODELLING


На прошедшей неделе я решил заново моделировать локации.

Сейчас я стал активно использовать группы в Maya. Это очень удобно для исправления топологии.

А ещё научился скрывать и показывать выбранные группы.

Кнопки <Ctrl + H> - скрыть, <Shift + H> - показать.


Дома я моделирую вот так:

- после того, как определился где будет стоять дом, вырезаю из земли плоский меш

- создаю plane и заполняют им отверстие в земле

- расставляю столбы-заготовки на углах этого plane

- расставляю стены между столбами и подтягиваю края стен внутрь столбов. Мои стены 3 типов: сплошная, стена с окном и стена с дверью.

- для крыши: дублирую пол, перетаскиваю этот меш до верхнего уровня стены, делаю "extrude" вверх


HAND-MADE


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


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


LITERATURE


На прошлой неделе я читал рассказы Антуана Де Сент-Экзюпери про полёты на самолёте. Мне они не понравились. Единственный рассказ у Экзюпери, который мне нравится - это Маленький принц.


После того, как я дочитаю Маленького принца я куплю книги Чака Паланика.


PLAY FOR STUDY


Мне очень нравилась игра Fallout Shelter, когда она вышла на андроид 2 года назад на выставке E3. Особенно из-за удобного управления на мобильном устройстве. Сейчас эта игра вышла на PlayStation4 и я ждал что игра будет классной. Но сильно разочаровался.


Мне не понравились следующие вещи:

- когда слишком много комнат в подземелье, то разбегаются глаза, не понятно куда смотреть

- абсолютно не удобное управление!


Кроме этого, я обнаружил в GooglePlay игру "Космические рейджеры". В далёких 2000-ых я играл в неё с удовольствием на компьютере. Особенно мне нравились сложные квесты, в стиле Алгоритмики. Я помню, что мне приходилось для решения головоломок выписывать на листочек некоторые вещи. Сейчас же сложные квесты из игры пропали, но сохранилась атмосфера той старой игры. Управление более чем достойное. Особенно понравилось удобное прокладывание маршрута для задания - двумя кликами.


Что же объединяет эти две игры, кроме того, что я играл в них одновременно? То, что в них нет определённой цели. И это печально. Я планировал за 2 дня пройти одну игру и начать следующую. Но игру не пройти, в неё нужно играть "пока не надоест". Не знаю, хорошо это или плохо, но эти игры не для меня.


CREDITS


Последнее время моей главной ошибкой было - ожидание музы. Ребят, запомните, муза приходит в процессе и не надо её сидеть ждать.


На этом всё, желаю вам прекрасной продуктивной недели и лайков под видео!

Всем пока.


Ссылка на список GAME DEV log: https://www.youtube.com/playlist?list=PL1q24GVioU4fQlsOEEQMH...

Стримы, на которых я моделирую: https://www.twitch.tv/cb_online

Показать полностью
[моё] Libgdx Autodesk Maya Gamedev Видеоблог Видео Длиннопост
3
2
cyberbach
cyberbach
6 лет назад
Лига Разработчиков Видеоигр

Неделя хардкода 14⁠⁠

Всем привет.

На прошлой неделе я учился моделировать, текстурировать модели, работать в UV-editor-е, сворачивать и выравнивать точки UV.


Сначала про референсы. Мои папки с референсами моделей и текстур продолжают пополнятся. В предыдущем видео я забыл рассказать откуда беру эти референсы. Есть отличное приложение pinterest для мобильника. И в свободное время я листаю картинки в этом приложении и сохраняю. Алгоритм поиска картинок в сто раз лучше, чем картинки в гугле или яндексе, имхо.

Кстати, когда сохраняете картинки на комп, обязательно подписывайте почему вам эти картинки понравились в название файла. Это очень удобно.


(Смотрите какая шляпа, когда не подписаны картинки)

Неделя хардкода 14 Libgdx, Мобильные игры, Игры на Android, Autodesk Maya, Photoshop, Текстуры, Gamedev, Видео, Длиннопост

По моделированию. Я продолжаю учиться, искать примеры на ютубе, и сам придумывать новые техники. Раньше очень категорично относился к неправильной топологии. Сейчас мнение изменилось. Время на "вылизывание" топологии - тратится не оправдано.

(Не улучшай графику всуе =) Всуе - напрасно, без необходимости )


В связи с этим, я могу в сто раз быстрее сделать домик, просто накидав примитивов. Потом проверю в игре, как выглядит весь дом, и если всё ОК, то дорабатываю такой дом. Тоже самое с землей и горами. Не нужно сразу стараться сделать мега-локацию. Сначала из примитивов (из говна и палок) делается черновая локация, тестируется в игре. И только после теста можно ее детализировать и делать для неё развёртку.


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

Неделя хардкода 14 Libgdx, Мобильные игры, Игры на Android, Autodesk Maya, Photoshop, Текстуры, Gamedev, Видео, Длиннопост

У меня на окне растут 4 дерева лимонов, я их выращиваю из семечек. Уже 2,5 года их ежедневно поливаю. Этим летом, по моей глупости, они поджарились на солнце и плохо себя чувствуют. Надеюсь к зиме оклемаются. А ещё я им формирую положение веток проволочками-растяжками. Плодов нужно будет ждать около 5-8 лет, так пишут на форумах. Подождём =)

Неделя хардкода 14 Libgdx, Мобильные игры, Игры на Android, Autodesk Maya, Photoshop, Текстуры, Gamedev, Видео, Длиннопост

На предыдущей неделе я дочитал Ивана Ефремова "Лезвие бритвы", в обязательном порядке всем рекомендую! Там про био-физику, психологию и поиски прекрасного. А ещё, прочитал небольшой томик Пушкина. Очень заметно влияние на него Шекспира.

Ещё на прошлой неделе написал небольшой рассказ-утопию про биороботов. Вот тут: https://pikabu.ru/story/biorobot_6071124


Желаю вам хорошего здоровья и прекрасного настроения на будущую неделю.


Ссылки:

Плей-лист Hardcode hardweek: https://www.youtube.com/playlist?list=PL1q24GVioU4fQlsOEEQMH...

Исходный код здесь: https://github.com/cyberbach/dunno

Мой твич - я иногда транслирую процесс моделирования: https://twitch.tv/cb_online

Инстаграм: https://www.instagram.com/cb_wuz_here/


Кстати, в мое оправдание, почему я так мало делаю по игре =) Я живу один и мне приходится самому себе покупать еду и готовить, что сильно отнимает время. Самому убираться в квартире, чтобы не зарасти в грязи. Ну и пару раз в неделю я работаю, но на работе я тоже стараюсь заниматься полезными именно для меня вещами. И часто приходится комбинировать какие-то дела:

- если мою посуду или готовлю, то слушаю аудиокурсы по английскому

- если смотрю ролики в ютубе, то занимаюсь спортом или играю на гитаре/миди-клаве

- если играю на плойке, то записываю в тетрадку интересные вещи, которые можно использовать в своих играх


Не будь ленивкой, напиши в комментариях, как ты комбинируешь свои домашние дела!


Теперь точно всё.

gl & hf

Показать полностью 3
[моё] Libgdx Мобильные игры Игры на Android Autodesk Maya Photoshop Текстуры Gamedev Видео Длиннопост
11
4
loginivsetakoe
7 лет назад
Лига Разработчиков Видеоигр

Вторая игра. Это как первая, только вторая⁠⁠

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


Начну по порядку. Инструментами для разработки, как и в прошлый раз послужили Android Studio в компании с библиотекой libGDX. В этот раз даже воспользовался некоторыми полезными свойствами двумерного физического движка, очень даже помогло.  И так к игре.


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


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

Вторая игра. Это как первая, только вторая Gamedev, Libgdx, Android, Мобильные игры, Разработка игр, Гифка, Длиннопост
Вторая игра. Это как первая, только вторая Gamedev, Libgdx, Android, Мобильные игры, Разработка игр, Гифка, Длиннопост

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

Вторая игра. Это как первая, только вторая Gamedev, Libgdx, Android, Мобильные игры, Разработка игр, Гифка, Длиннопост

Все (или почти все) иконки взяты с сайта http://game-icons.net/. Может кому-то будет полезно.

Игровая картинка хоть и стала значительно лучше относительно первой игры, но все равно далека от совершенства. От этого явно не уйти действуя по принципу «я его слепила из того, что было». Но если сказать что это ретро стиль, то кто-нибудь да поверит. Так, что это ретро стиль. Элементы управления в игре мне действительно нравятся, кнопки удались на славу

Вторая игра. Это как первая, только вторая Gamedev, Libgdx, Android, Мобильные игры, Разработка игр, Гифка, Длиннопост

Да и остальное не режет глаз

Вторая игра. Это как первая, только вторая Gamedev, Libgdx, Android, Мобильные игры, Разработка игр, Гифка, Длиннопост

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

https://play.google.com/store/apps/details?id=mendel.vasilii.spacerace

Показать полностью 5
[моё] Gamedev Libgdx Android Мобильные игры Разработка игр Гифка Длиннопост
7

Оформить подписку для бизнеса

Перейти
Партнёрский материал Реклама
specials
specials

Ваш бизнес заслуживает большего!⁠⁠

Оформляйте подписку Пикабу+ и получайте максимум возможностей:

Ваш бизнес заслуживает большего! Малый бизнес, Предпринимательство, Бизнес

О ПОДПИСКЕ

Малый бизнес Предпринимательство Бизнес
4
cyberbach
cyberbach
7 лет назад
Лига Разработчиков Видеоигр

Неделя хардкода 2⁠⁠

Привет =)


Я делаю игру на libgdx. Игра - бегалка/прыгалка/собиралка для мобильников.


За прошедшую неделю я сделал: youtu.be/1gn2xK7eEfQ

Исходный код: github.com/cyberbach/Adventure


- озвучены монетки и звёздочки

- при расстановке бонусов, нужен GMmode, а не долгое тупое копирование координат из Майи

- добавил пальмы

- сделал подсчёт звёздочек в рюкзаке

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

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

- скрипт движения NPC - горбатый, нужно его протестировать step-by-step. И, кстати, расстановка точек скрипта тоже делается в GMmode.

- смоделированы уже 4 больших уровня с физикой

- протестировал, обнаружил просадку фпс на 150+ рендер моделей с физикой на экране. Физику нужно тщательно упрощать. У моделей тщательно сокращать количество полигонов и обязательно (что я не делаю) сворачивать UV.

- при тесте меньше 100 рендер моделей на экране - фпс 61. По полигонам - меньше 5000 полигонов, хотя тут количество полигонов не сильно решает.



TODO:


- рефактор GameScreen

- упростить и улучшить GameMaster (GM) Mode в игре

- звуки шагов и звуки окружения/музыка

- заменить иконку для ingameMenu

- протестировать скрипт движения NPC

- свернуть UV на уровнях. Доработать модель лестницы.

- моделить 04-ую локацию со стеной и 05-ую за стеной


Всё что касается игры я делаю в прямом эфире на twitch.tv/cb_online , на ютубе, в контакте и на гуд-гейме. Чатики читаю =)


gl & hf

Показать полностью
[моё] Libgdx Bullet Physical Engine Open Source Текст Gamedev
17
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии