Оффтоп Alexander Kulkov
747

Утада, город великого потока

В закладки

Прототип локации сказочного города, собранный в Unity 3d.

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

Одним из таких миров, к которому я обращаюсь чаще всего, является мир сказочный, который буквально сочится магией и чудесами. А особенно одна из частей этого мира - город водопадов, Утада. Именно с этого города начинается знакомство читателей с базовой волшебной вселенной в моих системах Twisted Terra и Монстробой, и целиком внутри города великого потока происходят события Муршамбалы, где игроки играют котиками.

Изначальный набросок

Когда сам мир ещё только придумывался, то я сделал примерный набросок города водопадов. Позже, художник, иллюстрирующий книжку Twisted Terra сделал по этому наброску свой цветной вариант.

Альтернативный цветной вариант

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

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

Начальный вариант схемы левой части города
Улучшенная схема. Буквами обозначены Таверны, башня Растворителей, Королевский замок и Причал воздушных кораблей.

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

Первоначальный костяк локации

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

{ "items": [{"title":"\u041f\u0435\u0440\u0432\u044b\u0435 \u0437\u0430\u0431\u0435\u0433\u0438 \u043f\u043e \u043a\u0430\u0440\u0442\u0435 \u0441 \u043c\u0438\u043d\u0438\u043c\u0443\u043c\u043e\u043c \u043e\u0431\u044a\u0435\u043a\u0442\u043e\u0432","image":{"type":"image","data":{"uuid":"66bdfd30-6365-5a65-f316-8d0adfac99bb","width":1287,"height":725,"size":227540,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"6458468e-7728-8b82-7cda-e51520003c04","width":1287,"height":725,"size":208236,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"73b935db-2466-eeea-c987-531ffdbefeeb","width":1287,"height":725,"size":234517,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"e13dc4e4-8a22-4dc5-a66c-f9cb1d13ced9","width":1287,"height":725,"size":320511,"type":"jpg","color":"","external_service":[]}}}] }

Затем, добавляя новые части архитектуры, я не стал перезагружать локацию заново, а крепил новые детали к существующей 3д-модели, окрасив их в другой цвет. Потом, когда таких деталей набралось много, то экспортировал только их в качестве новой большой модели. В Unity осталось только выставить такой же масштаб, как у базовой части локации, совместив их. Если со временем набирается много таких отдельных "слоёв", то можно заменить их новой общей моделью.

{ "items": [{"title":"\u041d\u0430\u043a\u043e\u043f\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0435 \u043e\u0431\u043d\u043e\u0432\u043b\u0435\u043d\u0438\u0435 \u043b\u043e\u043a\u0430\u0446\u0438\u0438 :)","image":{"type":"image","data":{"uuid":"c7838be0-eefe-c205-c0ed-6c3f023881b2","width":1185,"height":693,"size":220488,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"e5841369-0c05-9feb-ca25-cb050272d8b1","width":1340,"height":636,"size":356088,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"7c6b536e-198f-021f-7e41-befefcebf31c","width":1169,"height":665,"size":139955,"type":"jpg","color":"","external_service":[]}}}] }

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

{ "items": [{"title":"\u0412 \u0433\u043e\u0440\u043e\u0434\u0435 \u0441\u0442\u0430\u043b\u043e \u0431\u043e\u043b\u044c\u0448\u0435 \u0434\u0435\u0442\u0430\u043b\u0435\u0439","image":{"type":"image","data":{"uuid":"43700985-aebe-0a78-412d-47527ca5a0de","width":1280,"height":728,"size":148367,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"75c94956-82e4-6fbb-8e76-faca64bfd74a","width":1278,"height":726,"size":356001,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"50eb8c81-2c5f-6411-b467-4d68d9fbdfc7","width":1366,"height":768,"size":292018,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"46dd7a5f-cfe2-f527-12ce-f8ae207cdb77","width":1366,"height":768,"size":428304,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"b9a18fc1-90b3-a802-5e0e-4d5d67de0393","width":1278,"height":730,"size":345911,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"8d8b70a7-d0ff-42db-e503-4250bd03d4e2","width":1366,"height":768,"size":492035,"type":"jpg","color":"","external_service":[]}}}] }

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

{ "items": [{"title":"\u041a\u0430\u0434\u0440\u044b \u0438\u0437 \u0442\u0435\u043a\u0443\u0449\u0435\u0439 \u0432\u0435\u0440\u0441\u0438\u0438","image":{"type":"image","data":{"uuid":"38e924da-0939-e176-10f9-3e7b30d44be6","width":1366,"height":768,"size":675112,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"37858906-e08a-14f8-a654-a8fd799bbfac","width":1366,"height":768,"size":622462,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"860a8083-6eb2-63e4-f98b-1749f726e637","width":1366,"height":768,"size":212962,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"c0ded0f1-9c0c-473a-72c7-716a7ce3f7c8","width":1366,"height":768,"size":371425,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"d0c226d3-7e0c-1d5d-0505-4c8d316248e5","width":1366,"height":768,"size":259430,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"2b3cc973-e0af-9899-5f90-3bf219dd8c7e","width":1366,"height":768,"size":279571,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"8f1efaa3-cc7e-46fd-0076-9522ee7e3309","width":1366,"height":768,"size":293306,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"4c6526f8-3600-664f-70ef-eb00547b30b0","width":1366,"height":768,"size":310974,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"9037ca2f-dac8-f2a4-b76a-0304832853da","width":1366,"height":768,"size":505769,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"f21f7439-6493-1b96-169d-4b1c8a56a28b","width":1366,"height":768,"size":248522,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"48bfbf17-cd3c-da99-eaf9-dfc0886c5c99","width":1366,"height":768,"size":249692,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"0d7625a7-5dd9-8814-5282-320b63813b1a","width":1366,"height":768,"size":370878,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"0963b00c-3337-e4dc-0e81-e7212bb273eb","width":1366,"height":768,"size":605899,"type":"jpg","color":"","external_service":[]}}},{"title":"","image":{"type":"image","data":{"uuid":"ad701e39-3d25-6fb8-4b0e-1fd5d4575957","width":1366,"height":768,"size":279050,"type":"jpg","color":"","external_service":[]}}}] }
{ "author_name": "Alexander Kulkov", "author_type": "self", "tags": [], "comments": 16, "likes": 14, "favorites": 5, "is_advertisement": false, "subsite_label": "flood", "id": 14048, "is_wide": false }
{ "id": 14048, "author_id": 25870, "diff_limit": 1000, "urls": {"diff":"\/comments\/14048\/get","add":"\/comments\/14048\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/14048"}, "attach_limit": 2, "max_comment_text_length": 5000 }

16 комментариев 16 комм.

Популярные

По порядку

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

Выглядит адовенько, например.

Ответить
0

Все делал в одиночку?

Ответить
1

Ну, если не учитывать задействованные ассеты, выложенные в свободный доступ - в одиночку.

Ответить
1

Выглядит круто! Если будет возможность записать короткое видео - оно могло бы лучше показать весь созданный труд. -)

Скрины впечатляют и респект за ваш труд!

Ответить
0

Спасибо! Да, планировал снять ролик при случае.

Ответить
0

Попробуйте сделать его в Cities: Skylines
Там получаются фантастические вещи.

Ответить
1

Да, но зачем мне собирать его в конструкторе, если я могу замоделить его себе так?

Ответить
0

Другие игроки смогут в это поиграть.

Ответить
0

В unity же собирается запускаемый файл. Экзешник с данными этой локации сейчас весят чуть больше ста мегабайт.

Ответить
0

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

То есть игры не будет?

Ответить
0

Ну что вам, нормальных игр мало разве? :)

Ответить
0

Та просто читал с интересом, думал типа это всё для чего-то делается, а в конце тебе показали дырку от бублика))) То есть всё мною прочитанное не важное, так ничего не будет, а я не Шерлок - удалять из головы не нужную информацию не умею)))

Ответить
0

Ныне популярный симулятор ходьбы.

Ответить

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

0

Долго моделировали это?

Ответить
0

Не особо, всё в целом несколько дней. Это же лоуполи модельки. Кораблик взял из старых моделек, которую моделил по одному из своих скетчей. Сейчас добавил ему окошки и дверь. Основной домик моделил на основе фермы из WoW. Потом, из основного, вариант с крышей крест накрест и балкончиком и более маленький домик. Почту и таверну с нуля, близко к тому как они были описаны в приключениях. К почте ещё нужна будет маленькая пристройка сзади. Деревья взял в одном из ассетов, пока они подходят, потом можно будет их переосмыслить.

Ответить
0

Постэффекты скроют некоторые неровности.

Ответить
0

Прямой эфир

[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]
В Steam появилась функция продажи
подержанных цифровых копий игр
Подписаться на push-уведомления