Формат: Работу нужно сделать в формате PSD, объекты на отдельных слоях. Размер 4K 5000x1615 (самый широкий вариант, должен поддерживать обрезку до 16x9 формата). Приложен файл с пропорциями в которые предполагается затем кадрировать базовый формат. Так же отдельным слоем название игры в виде шрифта чтобы можно было быстро менять на другой язык.
Стиль близкий к реализму военный ампир на подобии Наполеоновских войн. Яркий, контрастный. Можно использовать флаги европейских великих держав, сцены битв, военные элементы, пейзажи, крепости-форты, парусные корабли, геймплей из игры и.т.д на вкус художника.
Акценты: - сложная экономка и промышленность (заводы фабрики кирпичные здания с трубами дыма), индустриализация 18-19 века - парусный или паровой флот, - армия и война - дипломатия
Нужна идея и реализация.
Должна быть: высокая детализация и яркие контрастные цвета, помпезность, обложка должна выделяться среди других. Не должно быть: смазано, детский стиль, комедийный стиль, блеклое, серое темное.
Если будут вопросы, то готов ответить подробнее.
Прошло времени с момента публикации:
1 год 2 месяца 15 дней 16 часов 51 минута
Раздел: Другое / Рисунки и иллюстрации
Имеется файл с 3D элементами, он подгружен. Нужно расставить элементы по порядку по сетке, чтобы получился вид от 1 лица. То есть пол с потолком ставится друг к другу на дальность 6-7 клеток и затем камеру выставить для вида от 1 лица.
Прошло времени с момента публикации:
3 года 2 дня 12 часов 35 минут
Раздел: 3D Графика / 3D Моделирование
1. Нужно разработать сетку перспективы с дальностью видимости 6 рядов вперед. Чтобы максимально слипался горизонт. То есть чтобы дальняя слепая зона была как можно меньше (но тут дело вкуса, эту зону можно скрыть туманом например). Центральные клетки должны быть самыми большими по размеру, то есть сильно длиннее боковых. 2. Отрисовать набор объектов на ней (1 вариант стены, 1 пола c потолком и 1 объект например бочка или сундук). Набор – это вид этого элемента со всех клеток на сетке. То есть комбинируя разные элементы на разных позициях они должны смотреться органично друг с другом. В стиле пиксель арт.
То есть в начале рисуется сетка перспективы, затем в ряд рисуется объект например стена, затем слева и справа соседние стены скрываются и объект корректируется исходя их проходящих линий, чтобы он корректно смотрелся отдельно сам по себе.
Размер области видимости строго 640X376 (то что видит игрок). Размер холста может быть больше для удобства отрисовки. Формат PSD, наборы элементов как отдельные папки, внутри папок слои по ячейкам. То есть условно стена на клетке номер 7 выполнена отдельным слоем с названием 7, и лежит в папке стена.
Примеры приложены.
С победителем, помимо приза, планируется заключить сделку на добавление новых компонентов.
Почта для связи и по вопросам: manking-1@yandex.ru
Прошло времени с момента публикации:
3 года 4 дня 50 минут
Раздел: Дизайн
Нужно в готовом проекте на Unity добавить рендер 2D линий. Каркас с классами уже есть. Линия представляют из себя GameObject с прикрепленным классом CurvedLine.cs. После того как этот класс на C# добавляется к какому нибудь GameObject нужно задать ему публичные переменные fromHandler и toHandler. То есть от какой точки рисовать линию и куда. Далее указать стиль линии, цвет и другие указанные в файле CurvedLine публичные параметры в том числе стрелки в начале и конце линии (по параметрам и по цвету линий нужно дополнительно согласовать в зависимости от способа реализации).
Необходимо сделать: 1. Вывод линий в режиме кривой Безье и в режиме прямоугольных линий. 2. Линии должны обновляться при изменении позиции элементов к которым они привязаны как в режиме редактора, так и в игровом режиме. Но в игровом режиме обновление позиций происходит только при вызове метода updateMe. 3. Линии должны огибать особые объекты. У этих объектов есть 2D collider и будет специальный флаг. 4. Нельзя подключать какие либо сторонние библиотеки (либо их нужно согласовать). 5. Разработка ведется именно на тех объектах которые уже присутствуют в проекте, то есть это объекты внутри канваса и расположенные в строгой иерархии. То есть линия не должна создавать какие то еще дополнительные объекты вне себя.
К задаче приложен проект на Unity(его можно открыть через unity hub) и скриншоты. После открытия проекта если не будет сцены ее нужно перетащить из папки Assets/Scenes.
Прошло времени с момента публикации:
3 года 6 месяцев 8 дней 11 часов 12 минут
Раздел: Игры / Unity
Нужно разработать алгоритм размещения текста по линии поверх регионов карты в наиболее подходящем месте внутри региона. Карта выполнена через tilemap. Сам тестовый проект на unity с 2 картами приложен. Его достаточно просто запустить.
Нужно доработать метод drawText класса TilemapController. Остальные методы изменять нельзя.
Для вывода текста по линии используется готовый класс EasyTextDeformer который уже встроен. Ему задаются позиции по которым рисуется линия. Можно реализовать отризовку текста и по другому, но это нужно согласовать.
Что дано: 1. Регионы. Состоят из точек тайлмап карты, цвета и названия. List<CellPoint> points; // 0x0 4x6 – это точки на карте, а не мировые координаты transform! 2. Tilemap tilemap; – стандратный unity Tilemap. С помощью него можно получать координаты клеток в пространстве (transform)
Что нужно сделать: 1. Первый алгоритм: Рассчитать координаты для размещения текста в регионе, чтобы он максимально вписался в регион (с учетом отступов). Причем не прямым квадратом, а текст бы размещался по линии как в представленном примере. То есть текст может изгибаться, поворачиваться, уменьшаться или увеличиваться в размере и.т.д. 2. Второй алгоритм: размещает текст строго горизонтально, то есть он не может его поворачивать или изгибать, только менять размер.
То есть можно передать параметр, чтобы указать какой из алгоритмов использовать. bool onlyHorizontal = true; 3. Изменять размер шрифта(нужно учитывать что это может быть любой шрифт, не только arial), но не менее указанного размера(минимальный размер шрифта определяется переменной).
Что нужно учитывать: 1. Регионы могут состоять из кластеров клеток которые располагаются на других островах или континентах. Тут нужно размещать текст поверх самого крупного из них. Например на примере 1. Слева сверху есть государство Майя. Текст тут нужно расположить поверх самого крупного острова. Над остальными островами не нужно его рисовать. 2. Текст не должен быть вверх ногами. Нужно ограничить максимальные углы повората переменными. 3. Нужно только рассчитать координаты точек, шрифт и transform позиции и scale для компонента Text<EasyTextDeformer>. Подключать какую то внешнюю библиотеку можно только после согласования.
Как запустить: Открыть папку проекта через unity hub. И открыть сцену SampleScene и запустить. Логика в файле TilemapController.cs. Там сразу запускается tilemap и выводится карта. А дальше уже нужно подкорректировать функцию public void drawText(Region region). Поменять карту на большую можно указав widthMap и heightMap в TilemapController.
Прошло времени с момента публикации:
3 года 6 месяцев 25 дней 7 часов 47 минут
Раздел: Другое / Программирование игр
Нужно разработать на unity, используя стандартные встроенные инструменты (например tilemap), кликабельную карту регионов в которой можно выделять регионы, задавать им цвет или спрайт(чтобы цвет не был монотонным) или шейдер. Операции с картой будут выполняться через код C#. Этот объект с картой будет добавлен в canvas и он должен будет подстраиваться под ширину и высоту родительского объекта. Контуры и обводка границ не должны быть ровными(можно искривлять кривыми безье). Если наводим мышь на регион, то он подсвечивается(выделяется его граница) заданным цветом, например как тут белым. Точки региона могут располагаться в разных местах и быть окруженными другими точками других регионов. При подсветке выделяются границы всех точек региона.
int ширина карты в клетках. // например карта 30x40 или 300x200 int высота карты в клетках. List<VisualRegion> регионы; // список регионов
public class VisualRegion{ Int regionId; // уникальный id региона List<Position2D> points; // точки из которых состоит регион внутри int x и int y. Color bgColor; // цвет заливки региона Color borderColor; // цвет границы региона int borderWidth; // толщина границы региона }
Класс карты предоставляет методы:
// вызывается после клика по региону // возвращает id региона и Position2D точку в которую кликнули onRegionClicked(); // слушаем событие
// Клик вне региона onRegionOutSideClicked();
// Задаем активный регион то есть он выделяется setActiveRegion(int region);
Дополнительная задача разместить передаваемый текст (указываем его размер, шрифт) по центру региона в наиболее свободном месте (включая точки на других островах) + 5000 рублей. Как на картинке с примером из игры выводится текст.
Прошло времени с момента публикации:
3 года 7 месяцев 1 день 1 час 28 минут
Раздел: Другое / Программирование игр
Нужно доработать симплекс метод написанный на языке C# чтобы он мог поддерживать добавление целочисленных переменных. Сам метод взял отсюда vscode.ru/prog-lessons/si...
Задача для примера: Есть переменные стол и стул. Есть ресурсы доски – 20 штук и гвозди – 50 штук.
Стол – требует 5 досок и 20 гвоздей и стоит 200 рублей. Стул – требует 2 доски и 7 гвоздей и стоит 50 рублей.
Симплекс таблица будет выглядеть вот так: double[,] table = { {20, 5, 2}, {50, 20, 7}, { 0, -200, -50} }; // целевая функция
Где 2,5 это стол, то есть 2.5 стола. А нужно доработать симплекс метод так, чтобы для конкретных переменных можно было задавать являются ли они целочисленными или нет. То есть например можно будет произвести только 2 или 3 стола, но не 2.5. Естественно нужно найти решение без округление результата. Консольное приложение приложил.
Прошло времени с момента публикации:
3 года 7 месяцев 13 дней 50 минут
Раздел: Игры / Программирование игр
Нужно написать универсальный класс для решения задачи линейного программирования на C# LPSolver. На чистом C#, без использования сторонних библиотек. Внутри класса нужно все типы ключей преобразовать в int и работать с массивами для максимальной производительности.
Вот с таким интерфейсом // String – тип ключа // double – тип данных LPSolver<String, double> lPSolver = new LPSolver<string, double>();