Анимация
1 пост
1 пост
Я эту игру использую как образовательную по математике. Компьютерные игры, конечно, неспособны заменить системное обучение. Да и вообще компьютерные игры - вещь спорная в образовании. Но игры любят многие, их много в нашей жизни, и их будет становиться все больше. Эта, надеюсь, больше про пользу, чем про эскапизм.
Тут игрок использует математические операции (и некоторые специфические) для снижения баллов соперника до нуля:
вычитание;
деление;
сложение;
отражение с конца;
зачеркивание цифры;
остаток от деления;
вычитание ближайшего числа Фибоначчи.
Если в данной Лиге Образования компьютерные игры тоже котируются, то прошу оценить, можно ли её отнести к образовательным играм (на Яндекс-Играх). https://yandex.ru/games/app/matematicheskaia-taverna-i-vampurr-501885
Для разработки использовал Inkscape, а формат svg позволяет на лету менять слои и цвета внутри игры (и делать двух- или трехголовую гидру). Вот пример из игры:
Хранение кадров в SVG позволяет получать более гладкую картинку и сильно экономит память жесткого диска, но больше ест ресурсов оперативной памяти в самой игре. Хотя для несложных и небольших изображений SVG оказался вполне годной альтернативой для PNG атласов спрайтов.
А ещё использование SVG позволяет довольно легко заменять цвета отдельных элементов картинки налету. Или показывать один слой изображения, вместо другого, так создавая анимацию, храня сам источник данных всего в одном небольшом файле.
Но в итоге я бы полностью использовать SVG вместо PNG не советовал. Время на разработку такой картинки весьма приличное. Слишком много деталей добавлять нельзя, т.к. тогда картинка начинает весить больше обычных изображений. Ну памяти жрать начинает совсем нехорошо. В итоге, например, основная игровая картинка с соперником-котом была переделана из SVG в ПНГ атласы. Но почти все остальные мелочи остались в свгэшках.
Игра в итоге выглядит вот так:
Игра про комбинаторику для уменьшения баллов соперника до 0 с помощью математических операций:
- вычитания,
- сложения,
- деления,
- а также более экзотических типа зачеркивания, модуля, переворачивания и числа Фибоначчи.
Попробовать математическую игру про Вампурра пока можно только в Яндексе. Я сейчас занимаюсь внедрением АПИ для Пикабу, но это у меня явно займёт ещё какое-то время.
На экране вы видите Калиостро, для него я добавил ключевые игровые анимации, по которым можно получать подсказки об успешности своих и его карт.
Игру я пилил целый год, хотя конечно и не чистым временем, а периодически вечерами. Эта пока первая (и надеюсь не последняя) игра, в которую я сам могу поиграть уже после её завершения. Сюжета тут примерно на 2 часа игры.
Прошу заценить эту игру: https://yandex.ru/games/app/matematicheskaia-taverna-i-vampurr-501885
Чуть позже ещё повыкладываю раскадровку гифок и svg-кадров на которых игра и сделана. Но это уже наверное будет где-то в разделах разработки.
Ниже еще пару скриншотов, чего от неё можно ожидать:
Сейчас появились множество систем с ИИ, которые позволяют генерировать приключения. Они непреодолимо стараются сделать хорошо, а героя показать хорошим победителем. К сожалению они это делает ещё с тонной воды.
Я попытался сделать героя-неудачника. Посмотрим, насколько у меня получилось победить ИИ. Форматированием цитаты я буду выделять свои промпты, которыми пытался повернуть историю в нужное мне русло.
Все картинки тут генерировались с помощью Fusion Brain от Сбера: https://fusionbrain.ai/
Ты — Конхан, маг, живущий в королевстве Ларион. У тебя есть посох и книга заклинаний. Ты завершил долгий путь и, наконец, добрался до руин, которые искал. Ты пришел сюда в поисках мистической книги заклинаний великой силы, называемой книгой сущности. Осмотревшись, ты видишь каменную лестницу, ведущую в темноту. Спускаясь по ступеням, по спине пробегает холодок, и ты чувствуешь тяжесть век, давящую на тебя. На дне лестницы ты оказываешься в большой тускло освещенной камере. Стены сделаны из грубо обработанного камня, а воздух пахнет сырой землей и плесенью.
Ты осторожно осматриваешь комнату в поисках признаков опасности и замечаешь древний каменный алтарь в центре камеры. Подходя к нему, ты видишь, что он покрыт странными символами и знаками. Воздух становится холоднее, когда ты приближаешься, и ты слышишь тихий шепот в ушах.
Сосредоточив внимание на символах и знаках на алтаре, ты пытаешься расшифровать их значение. Вдруг порыв холодного воздуха ударяет тебя сзади, и ты чувствуешь резкую боль в спине. Повернувшись, ты видишь темную фигуру, стоящую за тобой, с глазами, светящимися зловещим красным светом. Фигура поднимает руку, и ты видишь, что в ней острый, как бритва, нож.
Когда фигура бросается на тебя, ты быстро приседаешь и уклоняешься, едва избегая клинка, который свистит рядом. Ты размахиваешь своим посохом, и из его конца вырывается всплеск искр, освещая лицо нападающего. Его черты искажены, а кожа болезненно бледная.
С яростной решимостью ты произносишь заклинание из своей книги, заставляя землю под тобой задрожать, а темная фигура отлетает назад от магической силы. Болезненно бледная кожа твоего противника выглядит хрупкой и слабой, как будто вот-вот треснет.
Ты используешь момент и быстро приближаешься к фигуре, вонзая посох вперед, чтобы нанести мощный удар. Фигура падает на землю, ее нож гремит о каменный пол. Ты стоишь над ней, победитель, но, обернувшись к алтарю, не можешь избавиться от чувства, что опасность еще не миновала.
Когда ты снова обращаешь внимание на алтарь, ты замечаешь, что символы и знаки начали светиться зловещим синим светом, а шепот стал громче. Ты чувствуешь, как что-то тянет тебя к алтарю, побуждая подойти ближе. Воздух искрится магической энергией, и ты ощущаешь силу, исходящую от древней каменной структуры.
Затем ты разворачиваешься и покидаешь это место. Тебе не нужна эта книга. Ты почти забыл, что не умеешь читать.
Когда ты поворачиваешься, чтобы покинуть камеру, тебя охватывает внезапное разочарование, как будто что-то важное ускользнуло от тебя. Твои шаги отдаются эхом по каменной лестнице, когда ты поднимаешься на поверхность, а мысли о том, что могло бы быть, мчатся в голове. Выйдя на daylight, ты глубоко вдыхаешь свежий воздух, чувствуя, как облегчение накрывает тебя.
Ты понимаешь, что опасность, с которой ты столкнулся в руинах, не стоила риска, и что сила книги сущности могла бы обернуться неприятными последствиями. Хотя ты и разочарован, ты испытываешь гордость за свое решение поставить безопасность выше любопытства. Ты направляешься обратно в Ларион, благодарный за то, что выбрался из руин живым.
Идя по дороге, ты не можешь не чувствовать удовлетворения от того, что справился с таким серьезным испытанием и вышел победителем. Ты размышляешь о тех опасностях, с которыми столкнулся, и заклинаниях, которые произнес, думая о том, что мог бы сделать иначе и чему научился из этого опыта. 😒
Ты возвращаешься в Ларион, чувствуя себя мудрее и сильнее, чем прежде. Знания, полученные в ходе путешествия, безусловно, помогут тебе в будущих начинаниях, и ты с нетерпением ждешь, чтобы применить их на практике. Прогуливаясь по улицам города, люди приветствуют тебя с уважением и восхищением, осведомленные о твоих недавних подвигах. 😖
Но на одной из темных улиц какой-то простолюдин швыряет в тебя навоз и камни, проклиная твое трусливое решение. Ты горько плачешь. И даже хуже — ты обосрался себе прямо в штаны.
Прогуливаясь по шумным улицам города, наслаждаясь похвалами и восхищением окружающих, ты вдруг слышишь голос, доносящийся из близлежащего переулка. Повернувшись, ты видишь грубого простолюдина, стоящего в тенях и смотрящего на тебя с презрением. "Смотри на него, убегает как трус!" — насмехается он, его голос полон горечи.
Без предупреждения он вдруг швыряет в тебя горсть навоза и камней, попадая прямо в лицо и грудь. Ты отшатываешься в ужасе, твои чувства поражены вонью и болью от ударов. Ты пытаешься ответить, но мужик ловок, быстро исчезая в тенях, прежде чем ты успеваешь ударить его своим посохом.
Униженный и смущенный, ты спотыкаешься от переулка, слезы катятся по твоему лицу. Идучи, ты чувствуешь, как внутри поднимается горячая волна гнева, смешанная с глубоким стыдом и смущением. И, что еще хуже, ты вдруг понимаешь, что в хаосе атаки обосрался.
Ты пытаешься скрыть свое смущение, проходя по улицам, но запах выдает тебя, вызывая отвращенные взгляды и шепот вокруг. Ты чувствуешь себя совершенно побежденным и одиноким, желая, чтобы никогда не покидал безопасное место своего дома. Бредя обратно в свои апартаменты, ты не можешь не задумываться, было ли правильным решение покинуть руины.
Ты ищешь заклинание, чтобы очистить свои штаны.
Ты входишь в свои апартаменты и начинаешь рыться в книге заклинаний, ища заклинание, которое поможет очистить штаны. После нескольких минут перелистывания страниц ты натыкаешься на заклинание, обещающее удалить любые пятна и запахи с одежды. Быстро произнося заклинание, ты водишь своим посохом над испачканными штанами.
Твое заклинание срабатывает неправильно. Оно вызывает сильную диарею.
Когда ты заканчиваешь произносить заклинание, ты вдруг чувствуешь резкую боль в животе. Прежде чем успеть среагировать, мощная сила, кажется, прорывается через твои кишки, и ты осознаешь, что заклинание пошло ужасно не так. Ты издаешь крик тревоги, когда волна сильной диареи накрывает тебя, заставляя упасть на колени в агонии.
Вонючий запах наполняет воздух, пока ты пытаешься контролировать свои телесные функции. Ты пытаешься произнести другое заклинание, чтобы остановить диарею, но твое тело судорожно дергается с каждой попыткой, что делает невозможным сосредоточиться. Боль и дискомфорт продолжаются, кажется, целую вечность, пока ты наконец не падаешь, истощенный и побежденный.
Ты лежишь на земле, слабый и побежденный, размышляя о том, как ты мог совершить такую ошибку. Закрыв глаза, ты чувствуешь, как на тебя накатывает чувство отчаяния, будучи уверенным, что твоя карьера мага подошла к концу.
В конце концов, ты удается подняться и начать убирать беспорядок, унижение от ситуации тяжело давит на тебя. Ты даешь себе обещание быть более осторожным с заклинаниями в будущем и никогда больше не опускать свою бдительность. Закончив уборку, ты глубоко вдыхаешь и готовишься к любым вызовам, которые могут встретиться на твоем пути.
Твои соседи присуждают тебе титул "Говноед года".
Когда ты выходишь из своих апартаментов, ты чувствуешь, как тяжесть унизительного инцидента накануне все еще витает в воздухе. Ты готовишься к неизбежным насмешкам и издевательствам со стороны соседей, но то, что ты находишь, удивляет тебя. Вместо насмешек и смеха ты встречаешь удивительное количество уважения и почтения. Люди обращаются к тебе с титулами, такими как "мастер ночных горшков" и "великий обсиратель". Сначала ты поражен странными титулами, но вскоре понимаешь, что жители Лариона начали воспринимать твой инцидент как свидетельство твоей смелости и стойкости. Они видят в твоей способности выдержать унижение и продолжать двигаться вперед знак истинной силы и характера.
Ты испытываешь чувство облегчения и недоумения, прогуливаясь по улицам, смиренный перед неожиданным поворотом событий. Ты размышляешь о силе восприятия и о том, как оно может формировать мнение людей о тебе, к лучшему или к худшему.
Ты решаешь принять новые титулы, врученные тебе, и использовать их в своих интересах. Прогуливаясь по улицам Лариона, наслаждаясь уважением и восхищением со стороны сограждан, ты начинаешь осознавать, что твой инцидент, возможно, не был таким препятствием, как казалось.
На самом деле, это открыло новые возможности использовать твои новые титулы в своих интересах. Ты начинаешь вплетать эти титулы в свои разговоры и взаимодействия с другими, используя их как способ разрядить обстановку и привлечь людей. Ты замечаешь, что многих интересует твоя история, и они хотят узнать больше о твоем опыте.
Я потерпел поражение. Попытки унизить героя приводили его только к ещё большим успехам. И даже "великий обсиратель" стал достижением.
Возможно, вместе со следующей попыткой мне удастся заставить ИИ меня слушаться и не создавать слащавую историю с добрым концом.
Похоже моё чувство юмора бесповоротно испорчено, но мне сама попытка борьбы с генератором историй ИИ показалась смешной. Не знаю, покажется ли она таковой и вам.
Сообщение было написано в рамках продвижения бесплатной браузерной сюжетной игры в стиле старых флэш игр. Написана без текстов от ИИ ) Если вам будет интересно, попробуйте, пожалуйста: Король гоблинов и его королевство (это на Яндекс играх https://yandex.ru/games/app/371939?lang=ru ).
Всем привет! Сделал безопасную браузерную игру для школьников младших классов для обучения таблице умножения в Яндекс.Играх. Мой ребёнок мне помог в озвучке, тематике и стилистике. Ну и помогал в генерации графики (ИИ 🚉 использовал, ибо сам я так рисовать не умею, и бюджета на найм дизайнеров у меня нет).
Очень сильно заморочился (по мере своих сил), чтобы процесс был максимально эффективным в плане обучения. И вот какие нюансы я учёл:
⏳ в игре нет никаких таймеров, можно повспоминать не дёргаясь;
никаких внутриигровых покупок покупок за реальные деньги;
есть бонусные мышки-рыбки 🐀 для разнообразных игровых скинов;
сложность примеров растёт постепенно (т.е. вначале всякие 3*5, а 5*9 уже в конце);
симметричные примеры 3*5 и 5*3 точно не попадутся один за другим;
периодически выдаётся статистика правильности ответов и показываются неправильные (исправленные) примеры, чтобы и визуально быстрее запоминалось;
за одну сессию выдаются все комбинации из таблицы умножения (по одному разу);
не выдаются малополезные примеры с числами 1 и 10, т.к. результат в них итак очевиден и дополнительно их учить не требуется, в отличие от каких нибудь 7*7 и 6*8.
Получилась, конечно, не совсем прям игра, а скорее игровой тренажер 🧠. Но в этом проекте я именно этого и хотел. Проект принёс рублей 30 чистейшего дохода, и от подобной этой рекламы принесёт уж точно не больше. Но зато если у игры не будет 0 игроков, то её не удалят из площадки. Потому я с ней и пиарюсь )
Прошу попробовать и заценить👀. Адекватная и даже неадекватная критика и отзывы приветствуются.
Я, всем довольный, работаю в Cocos Creator 3 [1]
Хорошая новость в том, что на нём гарантированно можно довести игру до завершения и стабильного состояния. И это важно, т.к. в процессе разработки у меня не было уверенности в удачном финале. У движка есть увесистые плюсы и минусы.
Cocos Creator 3 [1] - это китайский опенсорсный игровой движок, заточенный на разработку браузерных игр и интерактивных/игровых рекламных блоков. Он весьма популярен в Китае, и очень слабо известен в остальном мире.
Статистика использования игровых движков в играх на Стиме [2]
В статистике Стима их набралось 740 штук, что равно примерно 0,9%. В принципе это весьма солидно. Вероятно тут в статистике очень хорошо помогли китайские коллеги. Сюда входят и игры на прошлых версиях Кокоса, который довольно сильно отличается от текущей третьей. Есть немного даже и популярных игр.
Сначала я перечислю всё то хорошее, что я смог выделить лично для себя. Так-то список хорошего возможно всё-таки больше, но я указал только важное для себя, разработчика-одиночки.
1. Это полноценный рабочий инструмент, на котором уже другие люди смогли добиться хорошего результата.
2. Это китайский движок, он бесплатный, опенсорсный, и есть основания полагать, что он не станет вдруг банить/блокировать российских разработчиков. С Construct, Unity, Unreal Engine, Phaser и т.д. у меня сомнений по этому поводу несколько больше.
3. Он заточен на браузерные 2D игры/рекламу и в итоговом билде вес от самого движка минимален. У меня при поверхностной оптимизации получилось меньше 2 МБ.
4. Язык разработки - typescript/javascript, и нет блюпринтов.
5. Интерфейс слизан с Unity, и он довольно удобный.
Игра "Король гоблинов" в процессе разработки [3]
А теперь о сложностях, с которыми столкнулся я, и с которыми скорее всего столкнётся любой другой разработчик, впервые работающий с Кокосом.
1. Маленькое англоязычное и русскоязычное сообщество. В китайских соцсетях всё очень хорошо. А в остальных не очень.
Есть туториал Флеппи Бёрда от самой команды Кокоса [4], что полезно, но разработка простого игрового процесса ооочень далека от разработки реальной игры. На их канале есть ещё туториал, но я не нашёл в нём чего-то дополнительно ценного.
Есть англоязычные уроки[5], которые хоть и для 2-ой версии, но зато сжатые и краткие без воды.
Есть русский туторила от Grozamir[6] - уроков у него немного, но зато он ещё ведёт группу в Телеграме, где я смог найти несколько решений для своих проблем.
Есть конечно ещё, но в процессе поиска Вы будете натыкаться на китайские туториалы, очень старые туториалы и онлайн-разработку. Если примеры для Вас важны - лучше выбирайте Unity или другие популярные.
Официальный гайд сохранения игровых данных [7] - лажа
2. Официальная документация неполная и иногда с ошибками. Простой пример. Вы захотите сохранять игровой процесс и попробуете воспользоваться официальным гайдом [7]. В реальности же, вы должны воспользоваться вот таким кодом: `window.localStorage.setItem('configData', JSON.stringify(configData))`. А всё дело в том, что гайд написан для версии Кокоса 2.x, а в третьем всё по другому. И неважно, что на этой странице гордо висит плашка - актуализировано пару недель назад.
3. Во время модерации на Яндекс-площадку была выявлена ошибка, что при некоторых разрешениях экрана появляется горизонтальная и вертикальная прокрутки. В любом браузере. Это было не очень весело, но удалось выявить причину. В игровом блоке id=GameDiv движок сам вычисляет ширину width=770px. Так вот, иногда ширина экрана оказывается равна 769.6px, а движок её округляет до 770. При этом родительский блок самой игровой площадки выделяет 769px на игру.
Мы получаем лишний пиксель, который создаёт горизонтальную прокрутку. Но т.к. горизонтальная прокрутка тоже занимает место, то из-за неё возникает и вертикальная прокрутка. Я это исправил костылём, добавив в шаблон билда Кокоса для тега body css свойство `overflow: hidden;`. Мне как-то казалось, что подобные проблемы не должны возникать в таких местах в игровых движках. Какая наивность.
4. Рынок труда. Он очень не очень для специалистов в Cocos Creator. Если Вы хотите работать в Геймдеве программистом, то найти хорошо оплачиваемую работу будет сложнее, чем с навыками в более популярных движках. Я работать в Геймдеве программистом не хочу, поэтому для меня этот пункт недостатком не является. Но для многих может.
О чём я не могу судить
1. Готовых ассетов немного, но я ими не пользуюсь, поэтому не принципиально.
2. 3D есть и игру в нём сделать можно. Не пробовал, но беглый взгляд со стороны указывает, что тут всё слабовато с 3D. Мне в 3D сейчас не хочется, поэтому тоже не принципиально.
3. Меня несколько пугает процесс сборки билда под Стим, т.к. по косвенным признакам лёгким этот процесс назвать нельзя. Официального шаблона или гайда я не нашёл, а это уже тревожный признак.
Как результат, я доделал и опубликовал игру на Яндекс-площадке. Это слямзенная версия старой флеш игры "Sort the court", но только про злых и циничных гоблинов. Улучшил игровой процесс в меру своих возможностей, сделав 7 концовок и сильно уменьшив повторяемость диалогов оригинала. Прошу попробовать. Надеюсь, что фатальных багов не обнаружится. (перевёрнутый дварф после казни и воскрешения не считается)
Я пока и сам не уверен, стоит ли соло-разработчику работать с Кокосом. Есть плюсы, но и много минусов. Если минусы Unity Вас не волнуют, то вероятнее всего он будет оптимальным выбором. А может даже Godot или Unreal, если Вас зовёт дорога приключений.