Главная

Правообладателям

Скачать Симулятор Кар Механик

23 января в 16:10 Разработка → Оптимизация механики и графики в игре жанра «симулятор» на iOS Разработка под iOS*, Разработка мобильных приложений*, Разработка игр*, Unity3D*, Блог компании Everyday Tools Взлет игр-симуляторов как жанра несколько лет назад показал, что геймификации поддается любая рутина. Апофеозом стал хайп вокруг Goat Simulator, удостоившегося упоминания в ключевой презентации WWDC 2015. Мы не остались в стороне и от этого тренда, поучаствовав в разработке движка для серии приложений, симулирующих работу подземки. Subway Simulator – серия игр-симуляторов метро. Самая первая версия игры, вышедшая в 2014 году, хоть и была довольно абстрактной, подтвердила спрос на продукт подобной тематики, причем довольно высокий — проект занял лидирующие позиции в своей нише практически сразу после запуска. Последующие апдейты и новые версии продукта были направлены на то, чтобы сделать Subway Simulator реалистичнее: моделирование поездов и станций вышло на новый уровень, а также появились «локализованные» версии игры, отображающие метрополитены Нью-Йорка, Пекина, Москвы и других городов. В данный момент суммарное число установок первой версии игры на iOS почти достигло миллионного значения. Одновременно игра становится доступна для других платформ. Разрабатывая движок, основанный на симуляции движения в пространстве достаточно больших размеров, необходимо учитывать пределы памяти для адекватной работы на девайсе. В играх, требующих серьезного расхода ресурса, оптимизация становится определяющим фактором для пользовательского опыта. Именно с ее помощью можно обеспечить реалистичную, привлекательную картинку и плавный процесс геймплея. В данной статье речь пойдет о нашей работе над симулятором Subway Simulator 3D и различных типах оптимизации, которые применялись, чтобы свести расход памяти к минимуму без потери в качестве. Разработка приложения велась на самом доступном игровом движке Unity. Учитывая тот факт, что для апдейтов планируется периодическая подгрузка моделей новых станций в движок, мы остановились на самом, пожалуй, тривиальном, но единственно возможном решении — модульном ядре игры. Принцип работы у него, по сути, такой же как и у классических раннеров. Есть префаб игрока (в данном случае это состав поезда, в который подгружается необходимая модель состава, и другие параметры — скорость, износ, мощность, звук и т.д.). Есть блоки, или тайлы, объектов, в каждом из которых имеется объект для вложения модели, а также pivot'ы нулевой координаты модели и противоположного ее конца, по которым автоматически будет вычисляться местоположение для спауна следующего блока. В игре представлены блоки нескольких типов: Тоннель — линейный или искривленный — не имеет значения. Станция — блок со своим листом событий и кат сцен для игры. Содержит префабы пассажиров. Кастомный блок события — может содержать в себе тоннель с развилкой, где, скажем, поезду нужно экстренно остановиться, сбавить скорость и т. д. Суть работы движка: Как видно из схемы, основным персонажем у нас является поезд. Соответственно, относительно него мы и выстраиваем путь. С поездом связаны, прежде всего, Route Controller, выстраивающий динамическую линию маршрута по которой движется состав. Сама линия строится по заранее подготовленным Transform'am в каждом блоке, причем каждый Transform расположен ровно посередине колеи рельс. Динамическая составляющая геймплея наиболее ресурсозатратна; чтобы должным образом ее оптимизировать, нам пришлось применить целый ряд решений. Рассмотрим их ниже. Реализация движения поезда При создании движка поезда главный вопрос в том, насколько детально следует воссоздавать процесс движения. Здесь необходимо хорошо представлять себе поезд как физическое тело, понимать, что это многотонный объект, требующий постепенного разгона и остановки, что его положение и наклон определяются в зависимости от градуса поворота колеи. Имитировать движение поезда в полном соотвествии с законами физики было бы проблематично. Как минимум, нам пришлось бы учитывать трение WheelCollider'ов, которые в Unity не всегда ведут себя адекватно, особенно если речь идет о более сложных и крупных колесных транспортных средствах, чем просто машина. И это только один из множества факторов. Самое же серьезное препятствие состоит в том, что такие подробные просчеты физики дали бы слишком большую нагрузку на движок. Это плохо сказалось бы на производительности, да и багов бы прибавило. На наш взгляд, оптимальный выход из положения — сделать так, чтобы движение по физике выполнялось только как смещение по позиции по заданному маршруту. Ротация поезда в симуляторе рассчитывается на основании разницы между двумя углами — действующим и предыдущим. Чем больше разница — тем сильнее поезд будет наклоняться в сторону, что и даст соответствующий крен. private void Change() { target.position = Vector3.Lerp(target.position, currentPoint.position, lerpSpeed * Time.deltaTime); //Если расстояние до цели минимальное - меняем цель if (Vector3.Distance (PivotTrain.position, target.position) < damper) { //Делаем отклонение поезда относительно поворотов, если такие есть на нашем пути float DeltaR = Roll - (currentPoint.rotation.z - previousPoint.rotation.z); //Крен поезда только в заданных границах if (!(DeltaR > 0.05f || DeltaR < -0.05f)) Roll = Mathf.Lerp(Roll, currentPoint.localRotation.z - previousPoint.localRotation.z, 10 * Time.deltaTime); //Выполняем смену цели NextCall (); } private void NextCall() { //Обращаемся к последнему элементу, он же всегда первый в списке, так как после просчетов мы удаляем первый элемент if(!CurrentPoints[0].GetComponent<itemWay>().Last) previousPoint = currentPoint; CurrentPoints [0].GetComponent<itemWay> ().EndBlock (); CurrentPoints.Remove (CurrentPoints [0]); currentPoint = CurrentPoints [0]; } Тряска поезда производится за счет анимации камер (машинист покачивает головой в темпе, который определяется скоростью движения) и анимация тряски самой модели состава в зависимости от скорости или степени торможения. Цикличную анимацию камер или объекта довольно легко сделать обычными TweenPosition или TweenTransform, которые являются стандартными компонентами в движке NGUI. Главное при этом — чтобы соблюдалась зависимость анимации от скорости состава. Пример зависимости с учетом коэффициентов скорости поезда приводим ниже: void FixedUpdate() { speed = TrainEngine.Instance.speed; maxSpeed = TrainEngine.Instance.maxSpeed; tweenRot.dutation = (speed / maxSpeed) * 10; tweenRot.from.y = speed / (maxSpeed)/30; tweenRot.to.y = -tweenRot.from.y; } С физикой разобрались, переходим к следующей проблеме. Создавая движок, основанный на блоках, следует иметь в виду необходимость считывать дистанцию от объекта действующего блока до поезда. В идеале нужно свести количество операций по вычислению расстояния к минимуму. Логика работы нашего движка подразумевает, что в каждый конкретный момент дистанция рассчитывается только между поездом и ближайшими к нему блоками. Остальные тоннели и станции находятся в пуле (Object Pooling) и никак не взаимодействуют с основным контроллером. Как только поезд проехал действующий блок, происходит перенаправление последнего из активного листа в пассивный. lenghtBegin — длина блока, после достижения которой мы можем его убрать и строить путь дальше ItemType — тип блока private void DistanceCheck() { if ((Vector3.Distance(transform.position, player.transform.position) > lenghtBegin)) { //Отключаем рассчет ActiveBlock=false; Model.SetActive(false); //Возвращаем блок в кучу, чтобы не было повторений сразу WayController.Instance.ReturnBlock(ItemType); //Генерируем следующий блок WayController.Instance.GenerateWay(); } } WayController.cs //Определяем что строить дальше public void GenerateWay() { //Если длина не равна общей длине перегона то спауним еще один блок тоннеля if (CurrentLenght < LenghtTunnel) { RespawnTunnel (); } else { //Иначе спауним станцию RespawnStation(); } } //Определяем что спаунить, прямой блок или блок с ротацией. Если с ротацией то сбрасываем счетчик public void RespawnTunnel() { countLinear++; if (countLinear > LenghtLinear) { countLinear = 0; if (turnTunnel!=null) LoadTurn (Random.Range (0, turnTunnel.Count)); else LoadLinear (Random.Range(0,frontTunnel.Count)); } else { LoadLinear (Random.Range(0,frontTunnel.Count)); } } //Выгрузить линейные блоки на локу publi...

Нашлось

58651 статья по запросу «скачать симулятор кар механик»

скачать симулятор кар механик
08.02.2017 01:22:57

Первый взгляд - Car Mechanic Simulator 2015 - YouTube

25 апр 2015 ... Свежевышедшая игра Car Mechanic Simulator 2015 отличается от предыдущих серий в лучшую сторону - теперь это почти реальный ...

скачать симулятор кар механик
06.02.2017 01:22:57

Car Mechanic Simulator 2015 ОФИЦИАЛЬНАЯ ГРУППА | ВКонтакте

Симулятор автомеханика. ... 1 сообщение ⋅ Последнее от Car Mechanic Simulator.. 26 янв 2014 ... Car Mechanic Simulator 2015 - Phlex–Light Me Up Feat.

скачать симулятор кар механик
11.02.2017 02:22:57

Car Mechanic Simulator 2015: Все для игры Cars Mechanic 2015 ...

23 апр 2015 ... Скачать бесплатно файлы для Car Mechanic Simulator 2015: моды, ... версию Симулятор Автомеханика 2015, бесплатные картинки и ...

скачать симулятор кар механик
06.02.2017 01:22:57

[Official Group] Car Mechanic Simulator 2015 | ВКонтакте

Car Mechanic Simulator 2015 v.1.1.0.6 + 11 DLC .... народ помогите можно ли скачать трассы и установить?!?!? а то в игре ни одной ??? Показать список ..... Мне одному так кажется или 14 кар механик лучше 15? 25 янв в 11:18.

скачать симулятор кар механик
10.02.2017 01:22:57

Car Mechanic Simulator 2015 - дата выхода, системные ...

23 апр 2015 ... Очередное обновление симулятора механика, предлагающего оборудовать собственную СТО. В Car Simulator 2015 добавлены новые ...

скачать симулятор кар механик
07.02.2017 01:22:57

Car Mechanic Simulator 2015 on Steam

New cars, new tools, new options, more parts and much more fun in the next version of Car Mechanic Simulator! Take your wrench! Create and expand your ...

скачать симулятор кар механик
04.02.2017 01:22:57

Simulator — Бесплатные игры — RePack от R.G. Механики

скачать торрент Игры на ПК Site RePack Games For Windows by R.G. Механики сайт лучшего репакера, уникальные репаки найдете только на этом ...

скачать симулятор кар механик
10.02.2017 02:22:57

Car Mechanic Simulator 2015 [RePack] [RUS / ENG / MULTI12 ...

RuTracker.org » Другие симуляторы » Скачать торрент Car Mechanic Simulator 2015 [RePack] [RUS / ENG / MULTI12] (2015) (1.0.7.7hf1 + ...

Скачать И Слушать Русские Песни 2016 Скачать На Андроид Гравити Фолз 1 Сезон Скачать На Телефон Скорый Москва Россия Скачать Песню Человек-хороший Барбарики Скачать Майнкрафт 1.5 2 Через Медиа Гет Скачать Песни Егор Крид-папина Дочка Скачать Интонация-давай Давай Выше Неба Скачать Каспийский Груз Новинки 2016 Скачать Игру Гта 4 Гта Через Торрент Скачать Кристина Си В Моих Твоих Мечтах Скачать Музыку Ревность Елена Темникова Скачать На Планшет Учебники 10 Класс Скачать Песню Мурат Тхагалегов-не Уходи Скачать Песню Олег Пахомов-белые Лебеди Скачать Давай Займемся Любовью Песня Скачать На Андроид Вк Скачать Музыку Скачать Песню Кукушка.даша Волосевич Скачать Полина Гагарина Клип Кукушка Скачать Майнкрафт 1.6.4 С 4 Модами Скачать Песню Docker Ft.soriwan-кто Она Скачать Игру Far-cry 2 Через Торрент Скачать Мод На Гта 5 Гта Сан Андреас Скачать Песню Ben Delay I Never Felt Скачать Игру Анжела Говорящая Анжела Скачать Варвара Визбор Альбом Земляника