{"id":3824,"url":"\/distributions\/3824\/click?bit=1&hash=a0d33ab5520cacbcd921c07a49fc8ac5b78623b57936b992ce15c804b99210d4","title":"\u041a\u0430\u043a\u0443\u044e \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u043d\u0430 DTF \u0438 \u043a\u0442\u043e \u0435\u0451 \u0443\u0432\u0438\u0434\u0438\u0442","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"75ec9ef4-cad0-549d-bbed-1482dc44e8ee","isPaidAndBannersEnabled":false}

Разработчик платформера VVVVVV открыл доступ к исходному коду игры Статьи редакции

Терри Кавана выложил на GitHub как мобильную, так и ПК-версию — в честь десятилетия своей работы.

VVVVVV — платформер, который рассказывает о космическом корабле, потерпевшем бедствие. Из-за него команда оказывается запертой в разных отсеках, а на их спасение отправляется капитан судна, Виридиан.

Критики высоко оценили VVVVVV — рейтинг ПК-версии на Metacritic составил 81 балл. До 2017 года игру портировали на мобильные платформы, а также на Nintendo 3DS, Switch, PS4 и PS Vita.

Как отметил Терри Кавана, в исходном коде VVVVVV можно увидеть, какие ошибки и просчёты он допустил, когда только начинал разрабатывать игры, а также понять, как сказалось портирование платформера с Flash на C++.

Так, при использовании Flash возникали трудности с доступом к внешним данным, из-за чего все уровни VVVVVV экспортируются в игру через редактор карт. Кавана добавил на GitHub код этого редактора, однако для его запуска требуются компиляторы Allegro и Mingw, поэтому разработчик создал альтернативный инструмент для экспорта уровней.

В честь десятилетия VVVVVV разработчик Серхио Корнага предложил поклонникам игры создать для неё новые уровни — все желающие могут использовать для этого бесплатный редактор Make and Play, который Терри Кавана выпустил в 2014 году.

Терри Кавана выпустил помимо VVVVVV ещё две игры — в 2012 году разработчик представил минималистичный экшен Super Hexagon, а в 2019 году — «рогалик» Dicey Dungeons.

0
48 комментариев
Написать комментарий...
def1NeXUA

У него там свитч на 4к кейсов 
('._.)

Ответить
Развернуть ветку
Минимальный пёс_анон

Ну да, ну да, можно ведь иначе.

Ответить
Развернуть ветку
Vitaliy A.

Хз, имхо, конечно, но даже в таком стиле будет лучше: там любое исправление может сломать что-нибудь в самом неожиданном месте.

Ответить
Развернуть ветку
Минимальный пёс_анон

Спорно, потому что в случае с кодом который щас его хотя бы понять легче, а с кодом в "ООП" стиле порог входа до небес поднимается и там черт ногу сломит.

Ответить
Развернуть ветку
Vitaliy A.

А если не использовать мемасики как аргумент? У ООП свои плюсы и фабрики не на пустом месте возникли. Вот элементарно: найти как связаны состояния в таком коде то ещё удовольствие, даже если ты один это программируешь. А если несколько человек? Кто-то где-то воткнул state+=10, и удачи выяснять почему у тебя при телепортации персонажа внезапно взрывается корабль.

Ответить
Развернуть ветку
Минимальный пёс_анон
 А если не использовать мемасики как аргумент?

Дискуссия скучной станет, а так хоть и над мемами покекать, и обсудить интересное.

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

Ответить
Развернуть ветку
GKLeight

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

Интерфейсы,  стремление к SOLID (не забывая о KISS) и модульность это минимальный мастхев, который очень тяжело оспорить.

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

Разделение сложной задачи на мелкие тестируемые части это тру, а стрельба по воробьям из БФГ нет, это разумеется.

Ответить
Развернуть ветку
Минимальный пёс_анон

Тут соглашусь, даже в CSS верстке соблюдается модульность (БЭМ, OOCSS), так что это мастхэв в любой системе крупной.

Ответить
Развернуть ветку
Колоссальный фонарь

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

Ответить
Развернуть ветку
Михаил Быстрянцев

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

Ответить
Развернуть ветку
realavt

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

Ответить
Развернуть ветку
Vitaly

Его Дарси денжен пару дней назад на главной Стима была

и он не просто попал он своим vvvvv создал инди хайп

Ответить
Развернуть ветку
Владислав Егоров

Причем тут инди-хайп и везение, он просто талантливый гейм-дизайнер. VVVVVV - один из лучших платформеров своего времени. У него отличные флеш-игры были на Kongregate, тот же Don't Look Back - игра абсолютно потрясающая.

Ну да, говнокод, но кому какое дело? VVVVVV сначала писался на флеше - может так было удобнее портировать с флеша.

Ответить
Развернуть ветку
Demian

Тот случай, когда можно не бояться, что украдут даже имея на руках исходники

Ответить
Развернуть ветку
Vitaliy A.

Поменьше, на самом деле, но да - god function как она есть. Впрочем там и остальное в схожем стиле.

Ответить
Развернуть ветку
Различный меч

Вы шарите в программировании? Свич хорош с точки зрения оптимизации?

Ответить
Развернуть ветку
Vitaliy A.

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

Онтопик: Конкретные конструкции языка очень слабо влияют на производительность, поэтому без разницы что именно будет использовать if или switch-case.

Ответить
Развернуть ветку
Korvin El

Песос.

Ответить
Развернуть ветку
ZGMarty

SHIIIIIIIIIIIIIIIIIIIIIIIIT

Ответить
Развернуть ветку
Ипполит Моржовый

может что-то автогенеренное

Ответить
Развернуть ветку
CJMAXiK

Это код уровней))

Ответить
Развернуть ветку
Ипполит Моржовый

ну там же редактор уровней есть, как я понял?) Вот эта портянка и есть наверное output этого редактора, которая потом подается как input в саму игру. Вряд ли он руками эти простыни писал) 

Ответить
Развернуть ветку
CJMAXiK

Редактор уровня был написан отдельно, чтобы портировать уровни из Flash.

Ответить
Развернуть ветку
Ипполит Моржовый

Мне очень сложно поверить, что он эти простыни писал и отлаживал руками, но если это так, то это очень сильная грусть

Ответить
Развернуть ветку
CJMAXiK

Вы мой комментарий читали?

Ответить
Развернуть ветку
Netless
Ответить
Развернуть ветку
Глупый рубин

функцию немного раздуло, подумаешь

Ответить
Развернуть ветку
Загадочный якорь

Комментарий недоступен

Ответить
Развернуть ветку
Dima Teiker
Ответить
Развернуть ветку
Darkusoid

Тебя не смущает время?

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Darkusoid

Хз, я думал в милом котике. То что время пошло назад - ломает всю шутку.

Ответить
Развернуть ветку
perfect_genius

Что кот отправился в прошлое?

Ответить
Развернуть ветку
Раненый велосипед

...что прошло больше 12 часов (а судя по окну - больше 24)?

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Old School Gamer

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

Ответить
Развернуть ветку
Роман Николаев

Помню как от балды купил за 3 копейки и очнулся уже пройдя. Странно аддиктивная игра.

Ответить
Развернуть ветку
Чушеляпник Лицокнига

А музон какой зачётный...

Ответить
Развернуть ветку
Yourepicfail

Купил только из-за саундтрека.

Ответить
Развернуть ветку
landy

Десять лет. Как вчера играл. 

Ответить
Развернуть ветку
Алексей Травкин

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

Ответить
Развернуть ветку
DarthFelus

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

Ответить
Развернуть ветку
Настя Иванова

Очень крутые игрушки делает, попробуйте поиграть в super hexagon

Ответить
Развернуть ветку
Мягкий микроскоп

Комментарий недоступен

Ответить
Развернуть ветку
Ac1dBeef
This engine is super fussy about optimization levels and runtime checks. In particular, the Windows version absolutely positively must be compiled in Debug mode, with /RTC enabled. If you build in Release mode, or have /RTC disabled, the game behaves dramatically different in ways that were never fully documented (bizarre softlocks, out-of-bounds issues that don't show up in tools like Valgrind, stuff like that).

Классика! Почему-то я примерно этого и ожидал.

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Vitaly

Играю в кубики сейчас. Очень неплохо 

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Читать все 48 комментариев
null