Pull to refresh

Comments 24

Всё так, TDD в геймдеве не приживается обычно. Ровно по той причине, что даже когда примерно понятно, что делаем, все равно какой-то постоянный RnD — механики, идеи, дизайн меняются. Так что не расстраивайтесь.

Цель то какая? Игру зачем делаете? Научиться и пойти в геймдев? Продать мильонам школьников через стим? Занять свободное время?

Задача минимум — повысить навыки проектирования в целом и С++ в частности.
Задача максимум — заработать. Положительные эмоции, если кому-то окажусь полезным, репутацию и, конечно, деньги.

Школьники — в негативном контексте? Почему? Я тоже был школьником. А Вы?
«продать школьникам» в негативном контексте)) Они неплатежеспособны, наверно))

Не буду врать, опыт в играх у меня околонулевый, как создании, так в игрании))
Но мне казалось более важной «играбельность», чем графика. Вы вот в свою игру позалипали хотя бы часик-другой, пусть даже играя квадратиками, стреляющими треугольничками? «Азарт» какой-то у вас был? И уж тем более инди не могут себе позволить упираться в графику… Она на то и инди, что пытается найти какие-то мелкие фенечки, а не сделать графику уровня ААА.
Что же вы так сразу суровой реальностью больно колете? Думаете, быстрее спустится на землю — быстрее за ум возьмётся? Раз Хабр позволяет такие мечтательные статьи, то не надо мешать таким романтикам, пусть генерируют тут активность :)
Обозлиться на мир все всегда успеют, лучше оттягивать этот момент.

Добрый день, джиниус! Спасибо за комментарий и правки. Рискну предположить, что мечтательность — необходимая (но не достаточная) часть любого прогресса и технического в частности.

Да все так начинают, и очень вредно мешать начальному становлению. Всё будет со временем.

Я тоже так примерно начинал, упорно игнорировал unity (конечно появилась огромная база, помогает, но...) А потом оказалось, что код — самое простое по большей части. Берите Юнити и делайте игру… просто писать код вы и так умеете.

Основной ресурс по OpenGL, упомянутый в статье, полностью переведён здесь, на Хабре.
habr.com/ru/post/310790 — ссылка на первую статью. Правда содержание там неполное, но по мере продвижения оно будет появляться. Где то к 3 или 4 части в содержании появятся все ссылки.
Настоятельно рекомендовал бы использовать готовый движок. Я знаю случаи, когда «любители собственных движков» тратили огромное количество времени и сил на разработку, а затем, после запуска, игра полностью сливала репутацию из-за большого количество крашей, несовместимостей и другими непредвиденными прелестями, которые никак не проявлялись в течении всего срока тестирования на, казалось бы, довольно большой аудитории.

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

Если хотите делать игры, то берите релевантный движок (современный и поддерживающий ваш стек — в частности, C++) и делайте игры. Тогда вы точно так же будете прокачивать и знание языка, и знание актуального движка, и знание архитектуры игр, и всё остальное.
На самом деле от типа игры зависит. Не для всех игр нужен «навороченный» движок, и вполне можно задумать игру, в которой от всего «движка» придётся написать как раз самую выжимку, нужную для конкретного случая.

ЗЫ: Вон, вспомнить тех же Battle Brothers, написанных на electron. Мягко говоря не самая типичная обертка для игрушек, а получилось очень даже отлично.
Не для всех игр нужен «навороченный» движок

А никто и не говорит про навороченный движок. Просто актуальный движок.

ЗЫ: Вон, вспомнить тех же Battle Brothers, написанных на electron. Мягко говоря не самая типичная обертка для игрушек, а получилось очень даже отлично.

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

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

Но есть и такие как я: для меня использование системы, тонкостей которой я не понимаю, полно сомнений, а значит ошибок. Как пример CAD для математики — ок, а Blender сейчас — боль. Всё потому что я не понимаю пока, как устроена CG.

PS ну ладно, ладно, я всё же хочу выпуска игры, денег, славы и мирового господства, хе-хе.
А вы думаете, что написав игру на фреймворках, затем сможете эффективно работать с тем же Unreal? Вовсе нет. Это до какой-то степени улучшит ваше понимание конвейера (а вообще, кто сказал, что там будет что-то похожее на то, что делали вы? ведь вероятность того, что вы сразу сможете организовать грамотную архитектуру, почти нулевая), но не более того. Движок точно так же придётся учить с нуля. И чем быстрее начнёте, тем быстрее достигнете качественного результата. Не теряйте время зря. Что вы почувствуете, потратив, например, 3 года на разработку, после того, как вам скажут, что то же самое можно было сделать за пару месяцев, а почти все полученные знания — бесполезны?

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

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

Окей, отвечу более предметно:
1) Готовый движок не научит меня проектированию библиотечного кода на ++
2) Готовый движок не научит меня проектированию клиентского кода на ++
3) Готовый движок лишит меня радостей жизни, таких которые были описаны в статье.


Утверждение о том, что мои 3 года разработки можно уложить в то же самое очень сильное. Вы же не знаете, о чём идёт речь и что будет через 3 года.


Утверждение про более слабую архитектуру ещё сильнее. Всё, чем Вы оперируете — это опыт Ваших друзей, что спорно.


Что будет, если вообще игра не получится? Не жалейте моего времени.
Лучше дайте ссылки на движки, которые пилят 10 лет.

Что вам мешает делать тоже самое на каком-то готовом движке?
Я вот изучаю Godot и там целый мешок есть чего написать в проект на ++, и радостей жизни лишён не будешь. Тот же оклуд и ЛОДы ждут своего героя.
Я думаю, у Вас применение TDD упирается в слабую абстрактную модель проекта. Я конечно скажу банальщину, но постарайтесь провести декомпозицию на каждом рассматриваемом уровне, естественно с выделением интерфейсных частей.

У вас есть опыт TDD именно в геймдеве? Расскажите, я бы послушал. Серьезно.

Я полностью согласен про модель. Это навык, который я стараюсь развить. Тем не менее для меня RnD = "нестабильные интерфейсы". А последние делают тесты хрупкими.

Отличная статья! И очень правильная идея писать движок с нуля, а не брать готовый, многое перестает быть загадкой если придется взять Unity или Unreal. Сам проходил похожий путь год назад с Opengl/assimp/imgui/glm, правда обертка у меня была SDL2. Не хватило терпения дойти до чего-то играбельного, понял что тянет ковырять графическое апи и шейдеры и всё свободное время ушло в развитие и рефакторинг движка, а не самой игры. Так что автор молодец раз не остановился, обязательно продолжай!

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

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

Sign up to leave a comment.

Articles