Войти
ПрограммированиеФорумОбщее

Разработка игры как хобби, нужны советы

Страницы: 1 2 Следующая »
#0
8:07, 29 июля 2021

Добра всем,
Есть задумка в качестве хобби делать игру, опыт программирования есть на языках уровня Java, с# (с++ уже не смогу). В геймдеве опыт отсутствует.
Прошу вас дать краткие напутствия, так сказать базовые глобальные архитектурные решения в разработке игры , по ее краткому описанию.

Экономическая/градостроительная стратегия/конструктор (по типу факторио)
Игра скорее всего 2D, наверно пиксельная.
2 режима: глобальная карта, карта местности
Глобальная генерируется динамически в виде острова/архипелага - структура сотовая
Местная карта - тоже динамическая, но более упрощенная в зависимости от типа соты глобальной карты (По сути как это все сделано в rimworld с картами, только у меня игровой процесс так же завязать на деятельностях по строительству и на глобальной карте)

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

Основные вопросы на данный момент:
1. Движок игры, склоняюсь к unity 2D (не знаю, планирую изучать);
2. Алгоритмы/библиотеки (возможно платные) по генерации ландшафта островов / архипелагов - тут очень важно чтобы они были реалистичными (сам я уже экспериментировал с Шумом Перлина для генерации) результат не очень или сильно гористая или плоская, генерация карт местности проще там по сути простой квадрат с тайлами ландшафта)
3. Архитектурный вопрос, есть какие то шаблоны, предопределенные модели для таких игр, практики (книги).

Спасибо, если кто наставит на путь и даст свои советы новичку.


#1
8:15, 29 июля 2021

4 . Как хранить сгенерированную глобальную карту, которая будет состоять и нескольких тысяч сот, не отрисовывать же отдельно каждую соту, лучше как то записать ее в какой то единый объект типа bitmap(или что то другое оптимизированное для отрисовки большого количества блоков)?

#2
10:31, 29 июля 2021

NWsFF
> Экономическая/градостроительная стратегия/конструктор (по типу факторио)
А в чем будет стратегия?

#3
10:59, 29 июля 2021

NWsFF
> Движок игры, склоняюсь к unity 2D (не знаю, планирую изучать);
https://gamedev.ru/flame/forum/?id=262525&page=2&m=5422647#m25

#4
12:26, 29 июля 2021

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

qGrin
Почитал комментарии, я так понял совет начать с UGC? Дело в том что так как это хобби, не хочется идти простым путем, хочется сразу изучать правильный инструменты 

#5
12:30, 29 июля 2021

NWsFF
> Такая же как в других градостроительных стратегиях, чтобы доходы были выше расходов и население было счастливо.
Это не стратегия. Это "питательная среда для стратегии". Нужно, чтобы было, по крайней мере, две противоборствующие силы, взаимодействующие по неким математическим законам, которые 1) не дадут системе выродится; 2) как-то наложаться на чаяния потенциальных игроков.

#6
(Правка: 13:08) 12:32, 29 июля 2021

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

NWsFF
> опыт программирования есть на языках уровня Java, с#
в таком случае Unity - выбор хороший.

NWsFF
> базовые глобальные архитектурные решения в разработке игры , по ее краткому описанию
1. Отделяйте данные и логику.
2. Отделяйте статичные данные (конфиги, ScriptableObjects, Prefabs) и данные состояния
3. Удержитесь от соблазна делать прослойки абстракции над движком. Делайте игру так, как выбранный движок предлагает - для юнити это композиция игровых объектов путем обвешивания абстрактных узлов маленькими самодостаточными компонентиками (MonoBehavior). Как привыкнете к такому подходу, можно пробовать ECS (например LeoECS)
4. Если надо рисовать очень много объектов, то да, объекты дают слишком большой оверхед. Нужно рисовать в обход объектов с помощью https://docs.unity3d.com/ScriptReference/Graphics.html (DrawInstanced)

NWsFF
> (книги)
Книги имеют смысл только для фундаментальных вещей. Для игродела на готовом движке -  этотолько если для C#. По остальным аспектам все слишком многообразно и свежо, чтобы это как-то адекватно структурировать. Так что только практика и гугол по конкретным проблемам.

NWsFF
> Игра скорее всего 2D, наверно пиксельная.
Если вы сами не умеете рисовать или не готовы это делать в ооочень больших объемах, то лучше 3d. С точки зрения кода и пайплайна 3d не сложнее. А с точки зрения изготовления и адаптации арта - проще.

#7
(Правка: 12:52) 12:50, 29 июля 2021

NWsFF
> Почитал комментарии, я так понял совет начать с UGC? Дело в том что так как это
> хобби, не хочется идти простым путем, хочется сразу изучать правильный
> инструменты 
Нет "правильных инструментов".
И простого пути тоже нет.

Но новичкам я предлагаю не браться сразу за Анрил/Юнити, а попробовать себя в более приспособленных под их задачи средствах.

NWsFF
> Экономическая/градостроительная стратегия/конструктор (по типу факторио)
> Игра скорее всего 2D, наверно пиксельная.
> 2 режима: глобальная карта, карта местности
Гейм мэйкер будет норм.

Принцип такой: выбираешь самый простой инструмент под свою задачу. А если ты новичко, то выбираешь просто что нибудь попроще.

ЗЫ хотя если тебе лет 14-16, присутствуют аналитические способности(ну там условная пятерка по математике, геометрии, физике), то тогда да бери плюсы или шарп, да хоть ассемблер, 3-5 лет обучения/праткики и будешь мидлосеньором =)

ЗЗЫ вообще, если всерьез увлечешься, то лет за 10 все равно изучишь несколько ЯПов/движков.

#8
12:58, 29 июля 2021

qGrin
> Гейм мэйкер будет норм.
Для знающего C#/Java - врядли. тамошний скриптовый язык ну очень ограниченный.

#9
13:02, 29 июля 2021

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

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

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

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

Также сфера геймдев и сфера юнити программирования не развита абсолютно, и не родилось еще людей которые смогли бы ее развить. Это должно быть 2 отдельных сферы программирования, со своей особой спецификой, сложность которых помножена друг на друга. Но об этом ни кто даже не подозревает, потому тут что как на фантазирует и подглядит в других сферах тот то и использует, что не редко является ошибочным подходом(что то к месту, что-то нет). Есть древние книжки где какие-то случайные люди что-то там писали по про программирование в геймдеве. Еще тут нет профессионалов и уже не когда не будет, потому что сложность сферы умножается со временем, весь професионализм ограничивается субъективным ощущением собственной значимости личности конкретного человека).

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

#10
13:27, 29 июля 2021

Vandallord
> Делать грамотную архитектуру игры это практический навык,
Голимая математика. Практика здесь только в выборе подходящего языка для описания этой математики.

#11
13:51, 29 июля 2021

kkolyan
> Для знающего C#/Java - врядли. тамошний скриптовый язык ну очень ограниченный.
Например?

#12
(Правка: 15:18) 15:18, 29 июля 2021

qGrin
> ЗЫ хотя если тебе лет 14-16
37 лет, вышка в ИТ, начинал в C#, но дальше пошел кривой дорожкой 1С, но проблем с программированием нет, все еще легко осваиваю новые технологии (старческий маразм не наступил). 

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

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

Арты для игры на начальном этапе будут на уровне прототипов, затем буду заказывать перерисовку у художников фрилансеров если игра будет получаться. 

#13
17:22, 29 июля 2021

NWsFF
> В геймдеве опыт отсутствует.
начни с более простого, и немного освоившись, берись за боле сложное. Не надо сразу в дебри кидаться, забросишь, даже вернуться не захочешь. Очень много подводных камней когда начинаешь делать какую-то игру.

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

Да, и важно, надо уметь играть в игры и желательно не мало из них проходить. Это так же способствует пониманию в разработке игры.

#14
(Правка: 17:27) 17:27, 29 июля 2021

gudleifr
> Нужно, чтобы было, по крайней мере, две противоборствующие силы,
> взаимодействующие по неким математическим законам, которые 1) не дадут системе
> выродится; 2) как-то наложаться на чаяния потенциальных игроков.
"Алёша", экономическая стратегия, не? Не слышал?

gudleifr
> Голимая математика.
бред супер-программиста. Который явно сделал тысячи таких архитектур и все на разных ЯП.

Страницы: 1 2 Следующая »
ПрограммированиеФорумОбщее