История о том, как я не смог сделать игру за 8 месяцев. Глава первая
Пару лет назад я наткнулся на один крутой проект: ребята взяли легендарную Pong от Atari и сделали её физическую версию.
Всё выглядело максимально весело: реальные "ракетки", мячик, механика — короче, чистый кайф. Раньше они даже продавали наборы для сборки, но как у них дела сейчас — без понятия. Я погряз в собственной попытке воплотить нечто подобное.
Как раз в это время мне пришлось задуматься о проекте для колледжа, так что решение пришло в голову моментально: я сделаю свою версию.
Мне вообще не понравился размер и то, как исключались игроки из игры (натягивание ленты в пазы, они даже не захотели добавить это в превью).
Разрешили работать в группе над проектом в третьем семестре, так что я воспользовался возможностью взять двух неопытных помощников (я-то прям опытный, ахахахаха).
Pong² — так я решил назвать сие творение.
С самого начала я решил: никаких готовых решений — только ручная работа, самодельные платы, собственный код и разработка механики с нуля (дурак да и только). Цель была не просто "скопировать игру", а создать своё видение этой игры от первого винтика до последнего байта прошивки.
Провал первый: курсовая за третий семестр
Начали с простого — концепта. Нужно было:
чтобы мячик действительно катался по полю, а не просто мигал на экране;
игроки управляли платформами с контроллеров;
ну и пока можно было не заморачиваться с печатными платами — хватит бредбордов.
Прикинул схему: 8 Ардуин (по 2 на каждый контроллер — одна в руке у игрока, вторая — в “центре управления полётами”). Для движения ракеток - Nema 17, да пару лимит-датчиков, что на 3д принтерах стоят.
Тут подключился один из участников — Саша. Сказал: “Я никогда не моделировал, но хочу попробовать сделать корпус контроллера. Научи.”
А я и не дурак отказываться. Показал ему основы работы в Fusion 360, объяснил как пользоваться скетчами, экструзией, зеркалами и прочими страшными словами — и отпустил в свободное плавание.
Честно? Основу он сделал сам. Да, на финальной стадии я вмешался — сгладил углы, убрал пару «аварийных» мест, но общий дизайн — его заслуга. И, учитывая, что это был его первый опыт в 3D, — респект.
С дизайном заглядывали наперёд, добавив окошко для ведения счёта. В этой версии счёт показывать не планировалось.
Такое было моё видение игры. Шароуловители должны были появиться позднее, просто было сложно остановиться. Шестерни, натяжители, крепления и тд - всё вычерчено с нуля. За основу взят V-slot 2020, полтора метра в длину (помним, что я хотел побольше, да?), пришлось заказать 20шт.
В качестве толкателей заказаны на алишке соленоиды-толкатели на 20 Ньютонов и ходом сердечника в 10мм.
Связь - пятижильный провод, два провода из которого - питание, два - ШИМ сигнал и ещё один к транзистору, управляющему соленоидом.
Часы фантазирования, подглядывания и проектирования; многочисленные попытки печати, за которыми обязательно следовали правки дизайна и новые испытания. Уже и не вспомнить, сколько было итераций — процесс оказался долгим, но невероятно увлекательным!
На фото — готовое шасси. Жёсткости конструкции вполне достаточно, а ход кареток получился плавным. Также можно увидеть нарезанную ДСП: два нужных нам куска были покрыты коричневой матовой краской в три слоя для аккуратного внешнего вида, а так же для контраста с белым шариком для софтбола. Шарик для пинг-понга не подошёл - слишком лёгкий и быстро терял бы скорость, не долетая до стороны противника.
Осталось дело за малым - натянуть ремни, собрать бредборды, написать код и убедиться, что нихрена не работает! К сожалению, код и фото бредбордов увидеть не получится, безвозвратно канули в цифровое небытие, вместе со старым ноутбуком...
Поиск ошибок, пот, ненависть, страдания — и всё ради одной цели. И вот, результат перед вами:
Да, можно увидеть, что осталась одна серьёзная проблема: усилия в 20 ньютонов оказалось недостаточно для комфортной игры. Времени на заказ более мощных соленоидов уже не было, поэтому игру демонстрировали в таком виде. К счастью, преподаватели отнеслись с пониманием — всё-таки, создать что-то подобное в отведённые сроки (4 месяца. Ещё про четыре будет в следующей главе) и без единого изъяна почти невозможно. В итоге "провал" был признан успехом, а на будущее заказаны более мощные соленоиды.
Спасибо за внимание! Продолжение следует...
От Pong до Portal. Сделать 10 игр на Godot. Что из этого получилось?
Введение
Кратко расскажу о себе (если вдруг кто забыл): имею около 10 лет опыта с GameMaker, выпустил пару игр в Steam. Делал пару-тройку конкурсных игр на Unity, один раз на Unreal Engine 4 (об этом даже детально рассказывал). У меня нет цели попробовать абсолютно все движки, однако, взглянуть на мейнстрим и что попали в руки — почему бы и нет? Таким движком оказался Godot. Много о нём слышал, решил попробовать в деле.
Очень давно попробовал взглянуть на Godot сделав на нём «ремейк» своей старой игры-шутки Zhulik.exe. В движке есть готовые вещи для работы с User Interface (UI). А этот интерфейс это важная основная часть Zhulik. Но я скажу честно: я открыл движок и закрыл его. Забыв на, боюсь сказать, годы. Это сложно назвать даже попыткой, честно говоря.
Настоящей «первой попыткой» знакомства с Godot было участие в конкурсе разработки игр Gamainator 25. Назвал проект очень странно и просто — «1». Это буквально её название. А выглядела она примерно так:
Конкурс не накладывал ограничений на движок игры. Поэтому решил поэкспериментировать и взять Годот. На моё удивление, но я смог собрать некий прототип за 2 дня! Игрой это было назвать сложно. Сделал прототип и написал статью о разработке где-то в мае 2023 года. (ссылки на сторонний ресурс)
Challenge (вызов-испытание)
Под конец апреля 2023 года было решено создать крохотный чат в ТГ по этому движку. Целью было совместное обучение и изучение небольшой группой знакомых. Похоже, мы все видели потенциал Godot. И мы подумали себе challenge — каждый делает свой рогалик. Печальный исход такой: за 5 месяцев никто не сделал игру. Это был провал. Я смог сделать только вот такое:
К началу марта 2024 года один из участников предложил взять уже состоявшийся 20 games challenge. Хоть в названии 20 игр, но на деле челлендж на создание 10 игр с нарастающей сложностью. Никаких временных рамок в оригинале не было, поэтому мной были предложены и приняты такие условия: до конца 2024 года сделать все 10 игр, получается по одной игре в месяц.
И так, поехали!
Игра 1. Понг | Pong
На выбор были Pong или Flappy Bird.
Достаточно простая игра, осилил за 7 дней. Вся сложность заключается в непонятном для меня движке. Не так просто принять идею Nodes, а именно что всё кругом Node. У Ноды может быть только один скрипт расширяющий функционал, а наследовать скрипт можно лишь от одного родителя. Приходилось выдумывать странные конструкции. Впрочем, иерархический подход понятен — примерно как в Unity, но такого не было в GameMaker, что может вызывать сложности с переходом с ГМ на Годот. Графикой я решил пренебречь и выглядела игра примерно вот так:
Сложно рассказать что-то интересное о Понге. Разве что я решил замахнуться дальше, чем просит челлендж и сделал: игру на двух игроков, на игрок против ИИ, ИИ против ИИ, а ещё зачем-то меню и паузу. Но главное что там было — это костыли, которые я городил даже в таком простом проекте.
Игра 2. Арканоид | Breakout
На выбор были Breakout или Jetpack Joyride.
Прогресс по этой игре пошёл куда лучше: взял за основу прошлый Понг, переименовывал и изменял какие-то моменты. И игра готова! Из особенностей: эта игра стала первой из нескольких, которые делал на стриме. Вот, можете глянуть даже запись на Twitch. Управился за 3 часа, если не считать основу в виде Понга. Результат такой:
Но есть нюанс. Начались проблемы с дедлайном и эту игру я делал в спешке в последний день месяца. Собственно, поэтому похоже и успел за 3 часа!
Уже с этой игры появляется базовые знания сохранения hi score, что, конечно, не сильно отличается от такового из того же GameMaker. Однако, не все игры будут использовать это, особенно последние.
Игра 3. Космические Инвайдорзы | Space Invaders
На выбор Space Invaders или Frogger или River Raid.
Эта игра уже посложнее будет. Вновь я срываю свои сроки и бегу делать игру прямиком на стриме. В этот раз почти 5 часов ушло. Графику я взял из своего старого прототипа аркады, который должен был стать ремейком ещё более старой игры. Прототип недоделал. А вот графика хоть так пригодилась.
Конечно у меня были различные баги, но здесь меня поджидали особо коварные: почему-то коллизия на дне не работает. Коллизия снаряда с врагом-клоном не работает. Под врагом-клонами я подразумеваю врагов, которые наследуются от сцены врага. Проблема оказалась в том, что почему-то слой коллизии у клонов был отличный от своего родоначальника. Было ли это связано с каким-то багом в наследовании сцен? Не знаю. Впрочем, я читал, что лучше не использовать наследование сцен в Годоте.
Игра 4. Астероиды | Asteroids
На выбор Asteroids или Spacewar! или Indy 500
Снова взял за основу прошлый проект. Т. е. ещё с Понга тянется эта «игровая династия». И вновь стримил это дело на 4 часа. Опять взял графику со своего старого прототипа-аркады, но теперь ещё и разбавил старой же графикой с совсем древнего проекта, который был написан ещё на Си++ и OpenGL, есть древнее видео.
С этого проекта я попробовал заливать на youtube короткие shorts.
Это первая игра, из-за которой стал срывать сроки. По плану её нужно было закончить в июне, а я отчитался в нашу группу по движку только в июле, правда, 2-го числа. Забегая вперёд, это будет крайне плохой тенденцией. Кстати, кажется, в игре не работает условие победы, ха.
Игра 5. ПАК МЭН | Pac Man
На выбор Pac Man или Tic-Tac-Toe или Conway’s Game of Life
Я начал этот проект скопировав Астероидс. Странное решение, но я решил пробовать именно продвигаться «от прошлой игры к следующей». Конечно, пришлось заменить практически всё.
Данная игра резко отличается как по своей структуре, так и по сложности создания. Это я, разумеется, заметил на контрасте с прошлыми играми. Мне даже казалось, что в челлендже что-то напутали, так как комплексность ПакМэна сильно отличается в сторону усложнения.
Я прибегнул к статье-разбору (ссылку потерял), где описывается как работает оригинал, а главное, как работает ИИ призраков. Признаюсь, что всё было не так-то просто реализовать.
https://www.youtube.com/watch?v=5og2VNmDpm4 Или посмотреть прямо здесь:
В этой разработке я познакомился с тайловыми картами в Годот и авто-тайлингом (не совладал, ставил руками), что он предлагает. Честно сказать — я запутался в этих тайлах. Ещё одной особенностью этой игры стало то, что я решил использовать сторонние графические ассеты. Меня всегда тянет сделать новую уникальную графику, даже если это какой-то «технический» спрайт, который увидит только я сам. А вот тут решил попробовать побороть себя (у нас же всё же «вызов»!) и вот получался ПакМэн с волшебником и скелетами.
Намучился с искусственными интеллектом призраков. Хоть и использовал чит в виде статьи-разбора. Смог реализовать только лишь один уровень, без изменения скорости игрока или призрака. Должен признать, что я сильно устал от этой игры и движка. У меня появились мысли о завершении челленджа на полпути.
Игра должна была быть «сдана» в июле, однако, я закончил её только 18 августа. Вот и пошёл я по наклонной с этими дедлайнами.
Игра 6. Супер Игарио Братаны | Super Mario Bros.
На выбор Super Mario Bros. или Pitfall или VVVVVV
Конечно же выбрал делать Марио. Я, кстати, толком не играл в Супер Марио на NES, а лишь относительно недавно проникся этой серией уже с современных воплощений. Но я знаю, что это икона видеоигр.
Сначала всё казалось достаточно просто, потому что я смотрел на игру с опытом GameMaker.
После ПакМэна я начала «выгорать» или как назвать то, что я устал и не хотел больше копаться в Годоте? Но именно с проблемами и трудностями узнаёшь о движке (а может и себе? Ну это уже философия). Марио продолжал подкидывать дров. Я был готов уже бросить этот челлендж.
Простая с виду затея оборачивалась сложностью на сложности, проблемой на проблеме. Мой игрок стал походить на кучку квадратов, а не персонажа игры — весь в специальных коллайдерах Area2D для детекции столкновений, подбора предметов или разбивания ящиков головой. Я уже реализовывал всё как мог, а не прибегая к лучшим практикам.
Продолжаю учиться использовать чужие готовые ассеты — скачал из интернета, кажется, даже несколько ассет-паков, а потом намешал в игре. Было проблемой вырезать нужный спрайт из spritesheet. В Годот почему-то область текстуры\спрайта называется TextureAtlas, а не TextureRegion, например. Да и если такому региону поставить repeat в «как обрабатывать края», то он не повторяет их. Для этого, похоже, предлагается писать свой шейдер. Копилось множество мелких проблем, которые в совокупности выводили из себя.
Было множество различных багов и проблем, но завершил игру с двумя уровнями. Один из уровней полностью или частично повторяет первый уровень из Супер Марио с NES.
https://www.youtube.com/watch?v=Am_pSK4jV94 Или смотреть на Пикабу:
Эту игру я успел сделать в срок. Нужно было в августе — в августе и сделал. Исправился с дедлайнами … так мне казалось.
Игра 7. Колотить-Копать | DigDug
На выбор Worms или Dig Dug
Хоть мне и нравятся Червячки (Worms), но мне показалась какой-то нереальной задачей сделать такую игру на Годот. И я имею ввиду скорее разрушаемость мира. О DigDug я не слышал ничего, но выбрал её посмотрев как она играется. Выглядело это проще — разрушаемость уровня можно было реализовать тайлами. Достаточно просто, несмотря на то, что до этого я кое-как совладал с тайлами.
Максимальный срыв дедлайнов. Эту игру было нужно сделать в сентябре, но я сдал её лишь в декабре! Но у меня уважительная причина связанная с делами в реальном мире. Тем не менее, сроки все под откос. У меня оставалось пара месяцев до окончания года и челленджа. Начал я этот проект в середине ноября. За основу взял предыдущего Марио. И началось всё так:
Продолжая попытки использовать сторонние ассеты для этой игры я выбрал использовать выдранные из оригинальной игры. Не знаю что привело меня к этой мысли, но вероятно я подумал, что так будет эффективнее, чем искать спрайты и придумывать как их использовать.
С этой игрой тоже всё было не так гладко. Хоть разрыв в разработке с прошлой игрой дал немного времени передохнуть и остудиться после перегрева, но всё же ситуация вновь быстро нагнеталась. Я очень долго мучился с ИИ, а конкретнее с поиском пути, который никак не хотел работать правильно! То игрок застревал в стенах, то враги вставали как вкопанные (ха!), то они уходили куда-то совершенно непонятно куда.
С мучениями, но я завершил и эту игру! Чем дальше, тем проекты всё сложнее, а нервов завершить их не хватает. Лично я начинал разочаровываться в Годот натыкаясь на различные, казалось бы, мелкие недочёты и нелогичности, но которые ломали общий поток разработки. Вот что вышло:
https://www.youtube.com/watch?v=qfxju4VeSRg Или смотреть здесь и сейчас:
Игра завершена 8 декабря 2024 года. Осталось меньше месяца, чтобы сделать ещё 3 игры. Это просто нереально.
Игра 8. Крэш Бэндикут | Crash Bandicoot
На выбор Super Monkey Ball или Star Fox или Crash Bandicoot
Ощущал себя героем фильма, где он по непонятным причинам продолжает бессмысленную борьбу со злом. Столь же нелогичным, как и это сравнение, было решение продолжать челлендж. Ожидая, что в 3D будет проще. Не знаю почему я так думал.
По понятным причинам я не стал брать за основу прошлые проекты, ведь они были 2D. Хотя по условиям нужно было сделать 2.5D платформер, если выбираешь Крэша. Однако, в Годот чёткое разделение 2д и 3д, от чего нет совместимости между этими измерениями. Ноды прописаны в своём родителе к какому пространству относятся, конечно, кроме более абстрактных нод вроде Анимационного проигрывателя.
Как с прошлыми играми у меня не получилось. Ранее я садился и делал игру смотря на список, который описан на сайте челленджа. Например, что игрок ходит-прыгает, монеты собираются и т. д. Для Крэша мне показалось всё достаточно расплывчато и обобщённо было. Добавить какие-то ловушки, каких-то врагов, какие-то ещё вещи. Крэш первая игра, для которой я взял листок бумаги и начал обдумывать что необходимо сделать.
12 декабря 2024 года началась разработка. Своим прогрессом я делился не только в ТГ группе, но и в своём BlueSky (на самом деле там и другие игры были). Например, анимацией походки Крэша, которую я сделал наспех.
Продолжая тематику использования готовых ассетов скачал текстуры и модели из игр про Крэша. Было несколько моделек, но я решил остановиться на классическом с Sony PlayStation 1. Я быстро сделал свои анимации в Blender, потому что выдернутые имелись только текстуры и модели. Уровни я тоже делал в Blender используя аддон ReSprytile. Не смог подобрать модельку для врага, поэтому взял свою старую. Звуки нашёл выкаченные из оригинальной игры, подобрал их. Фоновую музыку взял свою, которую делал для одного проекта-прототипа, который так и не увидел свет.
Могу сказать, что в эти моменты, несмотря на какие-то недочёты во время разработки, у меня аж проснулось второе дыхание, вдохновение! И даже желание поиграть в Крэша!
Казалось, что все те недочёты и выгорания ушли, а Крэш игра компенсировала всё. Или может это говорил опыт? Так или иначе, дело шло. И достаточно быстро, как мне кажется. Декабрь я считаю «ленивым месяцем», когда уже скоро новый год, работать не хочется, у многих «выходные дни». Вот и я так «лениво» решил удариться максимально в последние игры.
В качестве ориентира, чтобы хоть как-то разобраться как надо делать 3д в Годоте, скачал себе пример от GDQuest с их контроллером от третьего лица. Это был тоже платформер, но я взял скорее какие-то идейные вещи по организации, хотя, некоторые строчки кода таки скопировал.
Пытался заставить Годот открывать blend файлы от Блендера, такое возможно, однако, у меня сыпались какие-то ошибки и это заставило мне передумать подход к моделям — я их моделировал и экспортировал, хотя, всё как в нормальных движках. Но Годот как-то умеет загружать бленд-сцены, но мне это осилить не удалось.
Были некоторые недопонимания у меня. Мне казалось, что если Годот загрузил модель\сцену из файла 3д модели, то у него есть доступ к mesh. И я могу назначить этот mesh на любой нод класса MeshInstance3D, но как оказалось — ничего я не могу! Это сбивало с толку. Вот же Mesh! Установи его как Mesh для этого Instance! Но нет, Годот так не хочет. И разные такие вещи не помешали мне дойти до завершённой игры.
Крэша я разрабатывал с 12 по 26 декабря 2024 года, ровно две недели у меня ушло на этот проект.
В итоге вот так выглядит игра:
https://www.youtube.com/watch?v=zl1sFd5ITqQ или смотреть:
Особо сил придало то, что когда я выложил игру и видео на Reddit в ветку по Godot, то оно набрало целых 1000+ upvotes, не знаю как для вас, но для меня это значительное достижение! Получив воодушевление я выложил помимо самого исполняемого файла ещё и исходники!
Ещё две игры. До нового года осталось 4 дня. Это невозможно. Невозможно сделать даже одну игру…
Игра 9. DrOOwN | DooM
На выбор Wolfenstein/Doom или Mario Kart
Уже было 28 декабря. Хоть я и понимал, что челлендж невозможно завершить к нужному сроку, но я продолжал идти упорно. Под вдохновением от Крэша.
Я решил, что воспользуюсь уже готовой графикой из своей игры Drawngeon, что сократит время разработки. По намеченным планам с челленджа всё выглядело достаточно просто: пара видов оружия, пара врагов, да и одного уровня хватит.
Всё как в тумане. Я просто брал и делал. Но я и снова использовал хитрости-читы так как время поджимало, а успеть хотелось. Взял со своего старого челленджа по рогалику, о котором я писал в самом начале статьи, контроллер игрока от первого лица, который основан на контроллере из игры «1»! Вот такие моменты в разработке мне кажутся очень показательными — помимо опыта в дело идёт и то, что остаётся от прошлых проектов, нарабатывается база, которую можно пере-использовать. А вот лифты для этого проекта я сделал из платформ из Крэша.
Одной из небольших проблем было то, что я не научил игрока шагать по лестницам. Я знал хитрость, что можно поставить на визуальную модель лестницы коллайдер плоского рампа, однако, хотелось «как в Думе» всё же. Не осилил этот момент.
Хотел я добавить и второй уровень, прямо из Дума. Найдя такой уровень готовой моделью посмотрел как он выглядит в игре и мне это не особо понравилось, потому что 1) там есть весьма высокие лестницы 2) его будет очень сложно пере-текстурировать. Поэтому я пошёл нелогичным путём и начал делать свой единственный уровень.
Для уровня использовал аддон Cyclops Level Builder для Годота. И когда я уже был он практически готов, вся игра более-менее работала, как вдруг …
Посыпался весь уровень, сломав отображение и насыпав кучу ошибок. Меня так сильно это расстроило и подкосило, что я побежал на тот же самый Реддит жаловаться, чего никогда не делал. Но в итоге мне удалось исправить, путь и немного откинув прогресс обратно:
Игровой процесс финальной версии выглядит вот так:
https://www.youtube.com/watch?v=wpvl1qZL9yI или на Пикабу:
Как и с Крэшем я пошёл показывать своё достижение на Реддит. Да и в своём ТГ канале упомянул. Однако, на Реддите оно не получило столь же ажиотажа, как Крэш. Звучит ожидаемо, ведь где Крэш и где нарисованный от руки шутер.
С этой игрой вышла забавная ситуация: по совету я отправил в Discord оригинального челленджа 20 игр Крэша и Дум. По ошибке держатель сайта указал, что у Дума есть веб-билд, чего на деле не было. Но тогда я подумал и решил попробовать сделать это! Оказалось всё достаточно просто и действительно можно сыграть в неё онлайн теперь!
Это тоже очень крутой момент, как по мне. Теперь как минимум мои Крэш и Дум увековечены на сайте оригинального 20 games challege!
Я успел сделать игру к 31 декабря 2024! За 3 дня! Ура! 9 из 10 игр! Успех! Хотя, я так не считал, но мне писали, что 90% челленджа можно считать успехом однозначно. Путь действительно был непростой и есть результаты.
На этом можно было бы и заканчивать …
Игра 10. Godortal | Portal
На выбор Minecraft или Portal
… если бы не моё упорство!
Не удалось воплотить челлендж как я задумывал (в оригинале не было сроков). Мне пару раз писали, что «челлендж ведь на год, а год не прошёл» намекая, что ещё не конец. Я подумал, что это может быть интересным проведением январских каникул, ещё одного «ленивого месяца». Да что там, сделаю за недельку. Как же я ошибался…
Одной этой игры хватит на целую отдельную статью, поэтому постараюсь покороче.
Начал 3 января. Очень давно на GameMaker я уже частично реализовывал технологию порталов — попытался найти бумажные заметки и адаптировать их, но ничего не вышло. Пришлось начать с самого начала. Вновь начал исписывать бумагу различными идеями и вычислениями. Спустя всю реализацию понимаю, что решение было достаточно простое и делится на две части: визуальная и математическая.
Под визуальной я понимаю то, как портал выглядит. И, как я её назвал, математической визуальной просто не может быть. А математика достаточно проста: нужно трансформировать точку и взгляд наблюдателя относительно одного портала и трансформировать это потом на относительность другого портала. Возможно, звучит непонятно.
Как же я намучился с этим! Всё было экспериментально. По логике выстраиваю вычисления — не работают! Пробую ещё, работает, но не так! Это немного начало напоминать мне ситуацию с ПакМэном или Марио! Но раз уж я взялся за это дело, то должен довести до конца! Мне потребовалось достаточно много времени, чтобы верно сообразить какие надо проделать трансформации. И это с учётом того, что есть куча статей и видео на эту тему. Но я словно специально старался пере-придумать всё сам, хотя потом и сдался и подглядывал в одну статью по порталам, но на движке Unity.
Для быстрого наброска уровней я использовал ноды CSG объектов, мне хватило лишь кубов. Из них я строил базовую форму уровня. А по началу тестировал всё на playgound-локации. Сами локации я решил делать как в проекте Крэша — в Blender через аддон ReSpryTile. Текстуры рисовал в программе Aseprite. Совмещал Blender и Aseprite через аддон-мост под названием Pribambas.
Графику я решил делать специально для этого проекта. Мне показалось, что хорошо будет смотреться pixel art 3D. Такой стиль и сделал, хотя изначально я думал взять наработки старого проекта из 2011 года, который не ушёл дальше идеи. От проекта этого в наследство достался разве что дизайн портальной пушки и частично дизайн дверей.
Следующим шагом после визуального портала была телепортация. Сложности с этим я испытывал ещё больше! Хотя я почти разу же сообразил как можно реализовать их в Годот — нужно менять слой коллизии у объекта телепортации когда он входит в портал, а когда выходит из зоны портала, то восстанавливать оригинальный слой. Сама концепция работает хорошо. А вот нюансы вновь заставили попотеть и потерять несколько нервных клеток. С какими-то аспектами я до сих пор не совладал и у меня просто уже нет сил на них.
Сначала у меня были простые коробки для коллизии портала, чтобы игрок не проваливался. Затем я сделал специальную модель для коллизий (что кстати не удобно в Годоте — пришлось добавить визуальную модель, а затем ей создать коллизию). А в конечном итоге сделал добавочный коллайдер пола, который включается и подстраивается под высоту оригинального пола уровня — сделал это, потому что иногда игрок таки проваливался вниз.
Сцена (префаб, класс) персонажа игрока стал настоящим «нодовым монстром». В нём столько нод, столько скриптов, столько логики, что пара игр вместе взятых из начала челленджа целиком сравнится по объёмам!
Телепортация объектов на скорости не работала должным образом. Мне помогли решением в ТГ чате, где организовали наш челлендж. Правда, работает это не на все 100% как надо. А игрок по-прежнему не может преодолевать порталы на высоких скоростях — бьётся ногами в пол, а иногда застревает в потолке.
Периодически я отдыхал от проблем с логикой и математикой отвлекаясь на создание текстур и\или 3д моделей. Например, я решил сделать модель персонажа на основе болванки-капсулы, а вышел персонаж Амонгус (популярный в некоторых кругах персонаж игры Among Us)!
Попробовал сделать модель не в Blender, а Blockbench, который ориентирован на низко-полигональное моделирование и использование текстур низкого разрешения. Казалось, что это то, что надо! Но на практике мне это не особо понравилось. Блендер оказался лучше, что логично.
Придумав уровни и создав их graybox, решил сделать их модель в Блендере. В том же чате ТГ мне сказали, что это не правильный подход, когда делаешь модель уровня целиком — лучше бы я делал модульные уровни. Третий уровень моей игры — копия первого уровня из Portal. А вот четвертый уровень я даже попытался сначала сделать в редакторе Portal 2!
Какое-то время, после основных визуальных порталов и телепортаций объектов, я занимался созданием логических схем. Вернее таких базовых объектов, которые можно было бы таскать из игры в игру и строить из них загадки как логические схемы. Вышло это правда весьма сомнительным.
Все недочёты и баги начали раздражать и создавать хаос, что я завёл список багов, которые нужно пофиксить. В список записал и то, что нужно сделать, например, модельки. И я медленно, но верно двигался к цели. Но признаться, на какие-то баги я просто закрывал глаза и убирал их из списка подальше как «не очень важные», хотя они были критическими (вроде застревания в потолке). Ближе к концу у меня словно уже не выдерживали нервы и я хотел просто отделаться от этой игры!
Хоть графика была вся моя, но вот звуки я решил взять готовые. В игре есть пара-тройка моих звуков, но большая часть из них это звуковые ассеты, которые как-то давно купил. Пак там был внушающий конечно.
А вот музыку написал сам, пытаясь подрожать оригинальному Portal. Вышло ли у меня это? Не знаю. Учитывая, что на это ушло не так много времени из всего срока разработки, то хорошо, если люди не будут выключать звук в 0% услышав то, что я там насочинял. Кстати, я добавил в игру подобие музыкального плеера — во время паузы игрок может выбрать трек. Или выключить музыку (если это работает).
Заключительной вещью стало перетаскивание кубе через портал. Сам по себе куб телепортировался хорошо. Игрок проходил тоже приемлемо. Но переход персонажа с кубом был кошмаром, в первую очередь для куба — его кидало по всем возможным вселенным и уровням, возможно, он даже видел зарождение Вселенной! Мне такой расклад не нравился и я решил потратить время если не на решение проблемы, то на её маскировку — сделал так, что когда игрок берёт куб, то он визуально подменяется ложным кубом! Настоящий всё ещё существует, сталкивается, но игрок не видит как его носит из стороны в сторону во время прохода через портал. Пара трюков и костылей позволяет снизить риск потери куба в меж-пространстве. Обманная, но победа!
И вот. 31 января 2025 года. Я доделал этот проект как смог. Что было в моих силах. Я сделал Портал. На это ушёл целый месяц! УРА! Я очень рад, что смог завершить не столько челлендж, сколько эту игру!
Получился такой магнум опус этого челленджа:
https://www.youtube.com/watch?v=Mz53WqnUyl8 Или смотреть 3 из 5 минуты прохождения:
Написал о своих результатах на Реддит, задали несколько вопросов, а я ответил на них. Вновь набрал 1к местных плюсов. Игру можно скачать с itch, я не осилил Web-билд.
Итог
Это было грандиозное путешествие в изучение движка Godot длиною почти в год! От простого Понга до сложного Портал! Честно говоря, жаль, что из нашего небольшого сообщества в Телеграмм канале до финала (пусть и с опозданием в 1 месяц) дошёл только я. Последние три игры вышли, на мой взгляд, особо хороши и даже потенциальны! Можно сделать свой 3д платформер по типу Крэша, бумажный шутер или некую портальную игру. Или совместить всё это в одном проекте!
Огромный опыт движка, основанный на граблях ценен, как мне кажется. И я постараюсь высказаться по этому поводу.
Пользователи движка, пожалуйста, не обижайтесь, но Годот штука крайне нестабильна. Мне кажется, что брать этот движок это очень огромный риск того, что какой-то элемент внутри движка окажется с багом, фикс которого вы будете ждать несколько лет! Если дождётесь. Он очень страдает от банальных UX болячек, куча казалось бы крохотных недочётов делает инструмент сложно используемым. Я бы не рекомендовал делать коммерческие или длительные в разработке проекты. У движка есть потенциал и если исправить огрехи, то это будет весьма крутая штука. Но пока Годот сгодится для небольших конкурсов, где и проекты не столь объёмны.
Буду ли я использовать этот движок? Не в ближайшее время. У меня есть некоторые планы по возвращению в GameMaker, возможно, на контрастах я осознаю что был неправ и Годот идеален, а может наоборот это лишь закрепит моё ощущение сомнительности движка. Но использую ли я его когда-нибудь в будущем? Определённо. Как вы понимаете, мои вкусы весьма специфичны.
Если вам понравился этот материал, то я был бы благодарен вашей поддержке (подписке) в соцсетях. В статье были ссылки, но продублирую более явно:
Всем спасибо за внимание! Прочитавшим до конца — медаль!
Pong 1972
#6 Обзор Pong (1972)
Привет всем. На этот раз хочу вам рассказать про игру Pong. Если вы живете в Америке, то скорее всего можете знать эту игру. Остальным странам эта игра вряд ли она известна. Дело в том что с этой игры началась великая история компании Atari. Компании, которая стала обязательным членом поп-культуры 80-х. Именно благодаря Pong компания смогла стать популярной. Она превратилась из небольшой компании энтузиастов в полноценный бизнес. Помимо этого сама игра наплодила столько клонов, что наверное до сих пор нет такой игры, у которой было бы столько. Самое смешное. Я недавно играл в GTA V и там есть теннис. Вроде как времяпрепровождение. Я осознал, что эта возможность, может быть отсылкой к Понгу. Хотя вряд ли. Но всё же хочу вам рассказать про Понг.
В прошлой публикации я уже говорил про Бушнелла, но хочу рассказать еще. Это ведь великий человек. Его история в целом начинается со Стэндфордского университета, где он впервые увидел игру SpaceWar. После этого он вместе с Тедом Дабни создал первую коммерчески успешную игру Computer Space. Но тогда им пришлось работать с партнером, а скорее на партнера. Они поняли, что всё-таки им удобнее развиваться отдельно и они начали принимать заказы от других компаний на разнообразные игры. Например, одним из первых заказов был заказ на гоночную игру от Bully Manufacturing. Но сейчас не об этом. Ключевым человеком в создании Понга был Алан Алкорн. Его пригласил Бушнелл после презентации Magnavox Odyssey и предложил поэкспериментировать с игрой в пинг-понг. Алкорн как новый сотрудник был заинтересован в развитии и понимании работы Бушнелла и Дабни.
Алкорн начал изучение Computer Space, но понял что для него это слишком сложно. Он взялся за проект со своими знаниями и работа пошла. Брать за основу игру Magnavox казалось слишком скучным, поэтому Алкорн начал её улучшать. Он разделил ракетки на несколько сегментов, которые отражали мяч под разными углами. Плюс сделал ускорение мяча со временем. Один баг превратился в фичу. Дело в том что ракетки не могли дойти вплотную до верхней и нижней граней, поэтому оставался просвет. Это усложняло игру. Через три месяца работы Бушнелл попросил добавить звуки. Ему хотелось создать иллюзию ревущей толпы. Алкорн не придумал как сделать такой эффект с помощью цифровых плат, но оказалось, что звуки можно получить из генератора синхронизации. Он купил телевизор за 75 долларов, и автомат стал цельным.
Что по геймплею? Я не думаю что нужно объяснять, что такое настольный теннис. Думаю все знают этот спорт. На экране Понга была одна длинная полоска имитирующая сетку, две маленькие линии для имитации ракеток и мяч который летал между ними. Игрок управляет ракеткой двигая её вверх и вниз, чтобы отбивать мяч, который летает с лева на право. Цель каждого игрока состоит в том, чтобы отбить мяч и не дать отбить сопернику. Нужно набрать одиннадцать очков раньше соперника. Всё просто.
В августе 72-го первый прототип разместили в местном баре Andy Capp’s Tavern. Это был успех. Главной проблемой стал переполненный монетоприемник. Бушнелл понял что такое сокровище не стоит продавать. Он рассказал заинтересованным компаниям, что конкурент не заинтересован. Так игра стала чисто продукцией Atari. Бушнелл открыл кредитную линию и запустил собственное производство. После успеха оригинальной игры Бушнелл решил создать домашнюю версию. Бушнелл отдал проект Алкорну и Гарольду Ли. Сложность была в создании миниатюрного чипа для консоли, но ребята выкрутились, и прототип был готов к 74-ому году. Появилась новая проблема. Нужно было найти через кого продавать консоли. Консоль презентовали на Американской ярмарке игрушек. Благодаря ей Atari заключили договор с Sears, магазином спортивного инвентаря. Но тут на Atari подали в суд Magnavox. Magnavox тогда начали судиться с кучей компаний. Мол у них украли идею для Pong. В то время как другие компании решили судиться, Бушнелл пошел на выгодную сделку. Atari платит и информирует о своих продуктах следующий год.
Сказать что Понг был успехом мало. По словам журналистов эта игра стала огромной вехой в развитии игровой индустрии. Все начали её копировать, а Atari ничего не могли сделать, та и не хотели. Они сосредоточились на будущих проектах. Домашняя консоль тоже стала успешной. Она стала вдохновением для таких компаний как Nintndo, Coleco и Magnavox. Эти консоли во многом помогли этим компаниям встать на ноги. Журналисты расхваливали игру и говорили, что Понг стала началом целой отдельной категории развлечений, которой до этого не было. Бума аркад в 80-х не было бы без Понга. В 99-ом году Next Generation поместила Понг на 34-ое место в списке «50 лучших игр всех времен». Бушнелл называл игру «социальной смазкой». К нему подходили с фразами, что благодаря игре они познакомились с друзьями или женами. Конечно. Ведь для игры нужен соперник. Вот такая вот история Pong. Спасибо за внимание.
Pong - Стоит ли в это играть?
Здравствуйте, товарищи!
В мире существует довольно-таки много видеоигр и видеоигровой литературы, связанной с ними, собственно, меня заинтересовала книга с интересным названием "1001 video games you must play before you die" и я решил потихоньку пройтись по списку, поиграть во все и составить своё мнение. Задумывается всё как серия роликов на Youtube, но сокращённая текстовая версия будет дублироваться тут.
Собственно, само видео для тех, кому интересно.
Pong - это одна из самых первых аркадных видеоигр. По сути - это попытка перенести теннис на экран аркадного автомата. Pong считается первой в истории коммерчески успешной видеоигрой и именно ей приписывают зарождение целой индустрии интерактивных развлечений. Игра была разработана и выпущена компанией Atari в 1972 году
Существует легенда, вскоре после того, как первый прототип Pong был установлен в Andy Capp's Tavern в Саннивейл, Калифорния, Atari получили телефонный звонок от владельца бара о том, что автомат сломан. Создатель игры, Аллан Алькорн, сразу проехал в бар для проверки и обнаружил, что оборудование в норме. Проблема заключалась в другом - клиенты скормили автомату слишком много монет и он просто не мог принять больше. Так и зародилась целая индустрия.
Pong начал захватывать бары и аркадные залы, да даже просто просто дома и квартиры с появлением первых pong консолей. Игра, инструкция к которой умещалась в одну строку - "Старайтесь не пропускать мяч, чтоб набрать максимальное количество очков" была проста настолько, чтоб каждый, только взяв в руки контроллер, мог начать игру. Просто управлять одной или двумя прямоугольными ракетками по краям экрана и стараться отбить мяч так, чтобы его не смог отбить соперник. Как электронная версия пинг-понга, игра была максимально проста и интуитивно понятна и этим и смогла покорить массы.
Также Pong показал важность искусственного интеллекта в играх - компьютерный противник в игре был неплохой заменой реального противника - он был в меру хорош, но допускал ошибки, позволяя его обыграть.
В целом, Pong не просто так завоевал место в топах видеоигр, и вполне заслуженно остаётся там по сей день
Pong стал первой видеоигрой, разработанной компанией Atari.
Идея пинг-понга как видеоигры была предложена Ноланом Бушнеллом программисту Аллану Алькорну как тренировочный проект, ведь Аллан не имел опыта в разработке видеоигр. Причём подобная игра уже была к тому времени реализована на консоли Magnavox Odyssey и Atari пришлось судиться с ними впоследствии.
Версия игры от Atari была более продвинутой, чем у конкурентов. Шарик в игре, в зависимости от попадания в различные места ракетки, стал вести себя по-разному: при попадании в центр ракетка отбивает согласно углу отражения; дальше от центра происходит рикошет под меньшим углом, а попадание в крайние сегменты приводит к тому, что шарик отскакивает в обратном направлении. Также Алькорн решил добавить постоянное ускорение мяча, так как одна и та же скорость показалась ему слишком скучной.
После грандиозного успеха игрового автомата, в 1975 году вышла домашняя версия Pong и имела оглушительный успех. Сразу же появилось множество клонов, и даже первая консоль от Nintendo - Color TV Game 6 - по сути клон той самой консоли от Atari. После игра переиздавалась на множестве консолей, лишь минимально изменяясь.
В оригинальной версии ракетки управляются с помощью Paddle-контроллера, поворотом ручки вокруг своей оси, что может быть непривычно для современных игроков.
Правила игры просты и знакомы всем - поэтому на них мы подробно останавливаться не будем - отбиваем мяч ракеткой, стараемся не пропустить. Пропустил - противник получает очки. У кого больше очков - тот и победил. Со временем скорость движения мяча растёт и игра усложняется. Особенность оригинальной игры в том, что ракетка не может дойти до самого края экрана, соответственно, отбить мяч, летящий в самый край невозможно.
В оригинальной версии игры не было искусственного интеллекта, он появился только в более поздних версиях игры.
К сожалению, в оригинал мне поиграть не довелось - ни в аркадную версию, ни в домашнюю. Но с paddle-контроллером я знаком и это та ещё дичь, но в этом и заключается шарм. Сейчас оригинальную консоль можно найти и приобрести, но, если честно, сомневаюсь, нужно ли это кому-либо кроме коллекционеров.
Заслуживают внимания и некоторые продолжения, но мне интересны только парочка из них.
Начну с Pong Doubles - это версия для четырёх игроков, всё тот же Pong, просто двое на двое. Забавно, конечно, но мне оригинальная версия нравится намного больше
Quadrapong - а это уже интереснее. Также версия для четырёх игроков, но ракетки расставлены по всем четырём сторонам экрана, что добавляет веселья и непредсказуемости. Если есть возможность собраться вчетвером и запустить именно эту версию - люто рекомендую, веселье и безумие гарантировано. Лишь бы все играли относительно на равных.
Так стоит ли в это играть? Конечно стоит, вы что? Это же классика, это знать надо! Да и 5 минут уделить на то, чтоб попробовать одну из главных видеоигр в истории - небольшая плата, если вы до сих пор не дорвались.
Игра остаётся неплохой вещью чисто посоревноваться с друзьями, повеселиться под настроение, ведь абсолютно любой сразу же въедет в правила и сможет начать игру. В простоте и заключается этот шарм. единственный минус для меня - это недоступность в массах paddle-контроллеров, ведь с ними было бы намного веселее проводить время за игрой, но стандарты управления за практически 50 лет изменились и остаётся лишь клавиатура или стандартный геймпад. Ну или купить одну из консолей первого поколения или их клон, например, или pong-контроллер для того же Famicom, но это уже совсем другая история.
Pong - это классика, игра, которая не может устареть, в принципе, и останется в памяти поколений надолго как то, с чего всё и началось, хоть и не является первой видеоигрой в целом. И будущие поколения также будут знать о существовании понга и, возможно, даже играть в него на своих новых устройствах, подключенных через нейроинтерфейс напрямик к мозгу. В отличие от того же Oregon Trail Pong более дружелюбен к игроку, здесь нужно меньше думать и больше веселиться, здесь больше классического геймплея и игра подойдёт для игры в любом возрасте от 3 лет. И именно за это его и стоит ценить и помнить.
Все в сборе!
Итак, вся игровая рать в строю. Теперь это интерактивный видеоигровой уголок местного музея, куда любой желающий вскоре может буквально прикоснуться к консольному прошлому.
"Электроника ВидеоСпорт3" 1990 года и "Шилялис" 1991 г.в. Вышедшие в свет под советским флагом, полностью отечественная видеотехника. Да, вдохновленная западными образцами, но из советских комплектующих.
Видавший виды "Сапфир-412" и многострадальная "Веста-ИК-30", выпущенная таки в 1992 году, а в прошлых постах ошибся, написав год 1990. Сложно было заснять экран, в данном случае нужно подбирать правильный ракурс и наклон камеры. Это- лучший снимок из нескольких. Артефакты и помехи связанны с проблемами телевизора, конденсаторы могли не дожить до нашей эры.
"Dendy Junior" компании "Steepler" середины 1990-х гг. и цветной "JVC". Начала нулевых. Вот не везло мне найти отечественный исправный телеящик девяностых в радиусе 3 километров, но качество картинки вполне хорошее. На новодельном картридже весьма хорошее собрание восьмибитных хитов, не 999999 в одном, но и так сойдет))
В тумбе лежат предметы, которые можно потрогать, включить, поиграть с ними. Посетителям музея часто хочется преодолеть запрет "Трогать предметы запрещается". Правила есть правила, но мы стараемся идти людям навстречу. Итак, в наличии есть арифмометр с счетами, кассетный магнитофон, видеомагнитофон, кассетная видеокамера, диапроектор "Дэлфи" и слегка "тюнингованный" VEF-12 1969 года. Пока просто для фона, в дальнейшем эти и не только вещи смогут рассказать об своей эпохе, попав в руки экскурсантов.
Увы, на видео не слышно в полной мере шума кинескопных телеков.