LINUX.ORG.RU

К юбилею VVVVVV автор открыл исходники

 ,


1

3

10 лет назад вышла игра VVVVVV — инди платформер-головоломка в 8-битном стиле с красивой чиптюнной музыкой и необычным управлением — вместо прыжков герой меняет направление гравитации. Первая версия была на флеше, затем автор портировал игру на C++ и SDL. Игра получила немало хороших отзывов и, вроде, была чем-то награждена.

По случаю юбилея 11 января автор выложил исходные тексты на Гитхаб: https://github.com/TerryCavanagh/vvvvvv Доступны 2 версии: «desktop_version» на C++ — именно она продаётся в Humble Bundle, GOG.com и Steam — и «mobile_version» — форк флешовой версии, из которого собраны игры на Air для iOS и Android.

Лицензия запрещает коммерческое использование. Музыка и спрайты остались несвободными. Главная цель открытия — показать, что можно сделать хорошую игру, не будучи хорошим программистом. В частности, автор обращает внимание на конечный автомат с 309 состояниями, реализованный через switch и 309 case: https://github.com/TerryCavanagh/VVVVVV/blob/f7c0321b715ceed8e87eba2ca507ad2dc28a428d/desktop_version/src/Game.cpp#L612 Главное — не сдаваться.

Новость на OpenNet: http://www.opennet.ru/opennews/art.shtml?num=52168

>>> Блог автора

★★★★★

Проверено: a1batross ()

конечный автомат с 309 состояниями, реализованный через switch и 309 case

примерно таким г-ном и являются исходники большинства проектов в геймдеве.

можно сделать хорошую игру, не будучи хорошим программистом

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

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

anonymous ()
Ответ на: комментарий от eternal_sorrow

У меня и десктопный, и мобильный без проблем туда заходили. Ссылка на блог с http, и если у тебя автозамена на HTTPS, это — твои проблемы.

question4 ★★★★★ ()
Последнее исправление: question4 (всего исправлений: 1)
Ответ на: комментарий от Int64

Это боль. Особенно то, как оно там выглядит. Можно было хотя бы через enum switch case сделать, если совсем не хотелось думать над архитектурой, но нет, там 309 магических чисел.

peregrine ★★★★★ ()

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

какой смысл в этом?

По случаю юбилея 11 января автор выложил исходные тексты на Гитхаб

неужели открыли код в единственной надежде, что сейчас толпы энтузиастов начнут развивать проект забесплатно?

anonymous ()
Ответ на: комментарий от Spoofing

да уж, сразу видно, что автор новичок в программировании: зачем нужен case, когда есть goto.

Ну goto хоть как-то распарсить можно. А вот километровые вложенные if else только на одну функцию, и так весь код где таких функций убер дофига, без шуток, вообще писец. Это я не про топик, в жизни сталкивался с таким.

anc ★★★★★ ()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anonymous

Ну например у него в этом switch-case указывается куда телепорт телепортирует. А можно было сделать объект телепорт, ему сделать поле, где будет указанно куда телепорт телепортирует, и в общем то уже можно убрать много кейсов.

insw ()
Ответ на: комментарий от anonymous

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

Leupold_cat ★★★ ()
Последнее исправление: Leupold_cat (всего исправлений: 1)
Ответ на: комментарий от anonymous

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

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

anonymous ()

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

anonymous ()
Ответ на: комментарий от slackwarrior

Разупорись, Володенька:

Переход на заданную метку имеется конечно, а речь идет не о метке, а выражении в goto /в gcc имеется такая возможность/.

Владимир

anonymous ()
Ответ на: комментарий от anonymous

Автор не смог в стандартные метки, а ты приплел вижуалстудию из-за любви к расширениям gcc, которые прибили бы код гвоздями к нему, норм чо :)

а речь идет не о метке,

Дада, это «архиважно», при том что нормальный код, кроме царских извращений, даже не требует goto :)

https://en.cppreference.com/w/cpp/language/goto но «упоротые» были авторы студии, а не твои тараканы и автор сабжевой лапши с мэджик намберс :)

slackwarrior ★★★★★ ()
Ответ на: комментарий от slackwarrior

Автор не смог в стандартные метки, а ты приплел вижуалстудию из-за любви к расширениям gcc, которые прибили бы код гвоздями к нему, норм чо :)

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

Владимир

anonymous ()
Ответ на: комментарий от Int64

В частности, автор обращает внимание на конечный автомат с 309 состояниями, реализованный через switch и 309 case

Это невероятно

а для не программистов можно объяснить в чем соль ?

dada ★★★★★ ()
Ответ на: комментарий от anonymous

Нет, скорее так, что ты не в курсах что такое стандартный цепепе и портирование на N платформ (код собирается не только gcc, о чем у автора написано) – и предпочтение тобой gcc тут ниачом, а его расширения вообще лесом :)

slackwarrior ★★★★★ ()
Ответ на: комментарий от dada

свитч. Он длинный, «N-сколько» экранов, а «309 кейсов» – это тупо числа, которые запоминать для скачков между экранами «ну такоЭ». В общем, код у автора «врайтонли».

slackwarrior ★★★★★ ()
Последнее исправление: slackwarrior (всего исправлений: 1)
Ответ на: комментарий от slackwarrior

Нет, скорее так, что ты не в курсах что такое стандартный цепепе и портирование на N платформ

Мне откуда знать что вы там домысливаете …
Разрабатываю как раз кроссплатформенный код.

PS: «Чужая душа потемки».

Владимир

anonymous ()
Ответ на: комментарий от slackwarrior

Если так, то он у тебя состоит из вилок препроцессора и макросов, либо «платформы» используют только gcc :)

Microsoft критиковал как раз за «горе от ума».

Владимир

anonymous ()
Ответ на: комментарий от grem

Игра вышла, продаётся 10 лет. Чего там развивать то?

Грубо говоря, развивать и не нужно. Но вполне возможно, что найдутся фанаты, которые спустя годы решат поддержать игру адаптацией под актуальные ОС и портировать на новые платформы. Многие проекты со свободными фанатскими движками (речь о всяких dhewm3, ioRtCW и прочих) относительно недавно перетащили на тот же Nintendo Switch.

Лишним не будет, в общем.

StalinEXE ★★★★★ ()
Ответ на: комментарий от slackwarrior

А что поменялось бы, если бы он описал этот же код пачкой структур-состояний? Запоминать столько же, кода станет на 2*N экранов, из которого половина бойлерплейт для структур.

это тупо числа

Вот разве что числам надо было через define имена дать.

monk ★★★★★ ()
Ответ на: комментарий от grem

Музыка и спрайты остались несвободными.

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

StalinEXE ★★★★★ ()
Ответ на: комментарий от monk

А какой смысл в шифровании публичного блога?

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

skyman ()
Ответ на: комментарий от eternal_sorrow

А какой смысл в нешифровании?

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

monk ★★★★★ ()
Ответ на: комментарий от skyman

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

Это же блог разработчика ПО, а не порносайт. Или где-то программирование считается извращением?

P.S. Если на этом IP всего два сайта, один из них этот блог, а второй — порно для извращенцев, то ты всё равно захочешь, чтобы никто не смог узнать, к какому именно из сайтов ты ходишь?

и уверенности, что никто по пути не вставляет мне рекламу или левую информацию

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

monk ★★★★★ ()
Последнее исправление: monk (всего исправлений: 1)
Ответ на: комментарий от monk

Есть разница, кто вставит рекламу из (разработчик браузера, разработчик ОС, провайдер Интернета, владелец блога)?

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

alpha ★★★★★ ()

[…] можно сделать хорошую игру, не будучи хорошим программистом.

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

Это прекрасно :) А игра хороша.

xaizek ★★★★★ ()
Последнее исправление: xaizek (всего исправлений: 1)

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

Никогда не понимал, подобные цели для открытия кода.

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

Хотя я всегда выступаю за открытие кода, уж тем более когда прятать особо не чего!

abondarev ()
Последнее исправление: abondarev (всего исправлений: 2)