Скорость рисования изображения

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

Игрушка относится к необычному типу гонок. Здесь вы не управляете машиной непосредственно, а лишь указываете по какой траектории и как ей ехать. А вот авто ведет себя так же как в классических гонках, поэтому придется учитывать характеристики машин, сложность поворотов и тип покрытия на трассе. В некоторой степени можно почувствовать себя в команде “B” – одним из тех ребят, которые корректируют действия гонщика по рации.

Drawrace 2 предлагает несколько режимов игры: карьера и три варианта мультиплеера. Но сразу в сеть игра не пустит, сначала придется немного покататься в режиме карьеры. Одиночная игра предполагает прохождение заездов в обмен на медали. И чем больше драгметалла вы соберете, тем быстрее откроются новые трассы и машины. А как наберете определенное количество очков – станут доступны остальные этапы помимо “Rookie”.

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

Как только нарисуете необходимое количество кругов, начнется гонка и вам будет отведена роль зрителя. Зрителя, да не совсем: во время гонки можно влиять на дополнительное кратковременное ускорение с помощью кнопки в углу экрана. Получается что-то вроде популярной “закиси азота”, активировав которую в нужный момент можно сгладить шероховатости не очень удачно нарисованного маршрута.

Физика поведения машин от реальной отличается некоторой резкостью и оптимизмом в отношении тормозов. Нет и повреждений, а жаль – было бы интересно кататься по трассе с чьим-нибудь оторванным бампером посередине. Сами машинки в игре “бестелесные”. В том смысле, что проехать сквозь соперника вообще не проблема. Это исключает потерю позиции от непредвиденного столкновения, но лишает игру дополнительного драйва и непредсказуемости. Что касается сложности, то с этапа “Talent” легко и с первого раза вы “золото” срывать не будете. И чем дальше, тем чаще придется картину гонки перерисовывать.

В сетевой игре вам предлагают сыграть с товарищем на 1 устройстве поочередно или через Game Center. Если же товарища рядом нет, можно поиграть через интернет. Вам автоматически подберут одного более опытного игрока и двух слабее. Наверняка многопользовательский режим будет традиционно популярнее одиночного, ведь всегда интереснее соревноваться на время с человеком, чем с менее искушенным компьютером.

Графически игра выглядит прекрасно. Текстуры четкие, модели машин и окружающей обстановки довольно детальные и правдоподобные, следы от шин и пыль при заносе тоже есть. Игра на iPhone 4 идет плавно и без каких-либо подтормаживаний. Под стать графике и звуковое оформление: здесь нет навязчивых пиликающих мелодий, лишь нейтральная тема в меню и приличные звуковые эффекты во время гонки.

На самом деле, играть довольно интересно. Особенно если стараться с умом подходить к гонкам, без многочисленных попыток в духе “когда-нибудь повезет”. В таком случае игра приобретает некоторые черты головоломки. Но больше всего мне понравилось, что играть можно бесконечно: даже если вы пройдете все заезды на золото, никто не мешает постоянно улучшать результаты, сокращая время прохождения круга и избегая ошибок в поворотах. Я уж не говорю о многопользовательском режиме, где возможности для самосовершенствования безграничны. Так чего тут думать-то?

Поставьте оценку.

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

Результат зависит от усилий: за 1-2 минуты у вас будет максимум набросок. 5 минут - добавили цвета и тени, уже неплохо, но в целом посредственно. Дополнительные 10 минут - и перед вами великолепный рисунок, губы с отблеском, цвет переливается, видна каждая деталь.

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

Флордже также регулярно выкладывает «вызовы реализма», где максимально реалистично имитирует предметы на время.



1. Набросайте фигуры.
2. Добавьте основные цвета.
3. Проработайте форму и смешайте цвета.
4. Внесите последние детали и чуть-чуть разбавьте цвет.

1. Делаем легкий набросок.
2. Добавляем основные цвета и придаем форму.
3. Добавляем тени, разбавляем цвет.
4. Еще немного тени и побольше детализации.


1. Набросок.
2. Цвет.
3. Тени и отблески.
4. Последние штрихи.


Те же шаги: эскиз - цвет - тени и свет - детали.


1. Легкий набросок.
2. Наполняем цветами.
3. Ключевой шаг - уточняем форму - делаем цветок объемным, добавляя тени.
4. Сглаживаем углы и добавляем детали.

1. Делаем контур и заполняем его основным цветом.
2. Затемняем одну сторону и добавляем света на другую.
3. Рисуем под каплей тень - при этом позволяем свету проходить через нее.
4. Добавляем отражение и делаем тень чуточку сильнее под тем местом, куда падает свет.

1. Эскиз.
2. Основные тона - начните с темного.
3. Внесите динамику - разнообразьте тон светлыми и темными участками, добавьте тени.
4. Детализация: сделайте отблески яркими, а углы - острыми.


Эскиз - цвет - уровень света и теней - детали.




Знакомая инструкция: эскиз - цвета - тени - детали.

Мы часто говорим, что графика в играх не является решающим элементом, ведь если продукт не интересен сам по себе, то никакая графика его не спасет. Это именно так игра, где простой и довольно казуальный геймплей выезжает на качественной графике и увлекает на очень длительное время. На первый взгляд простенькая игрушка с однотипным управлением и стандартными уровнями, но на самом деле продукт затягивает с первой секунды прохождения. Вы любите рисовать символы или просто рисовать что-то на листках бумаги, салфетках и прочих предметах? Тогда эта игрушка подарит вам массу часов приятного времяпровождения, не требуя ничего в замен. Конечно, здесь есть система встроенных покупок, но она не давит на пользователя и никаким образом не принуждает к донату. Вы можете играть год и не вложить ни копейки, при этом имея полный функционал игры и все уровни. Разве не такие игры должны рас радовать в серые будни?

Геймплей

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

Точность рисунка

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

Донат

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

Итог

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


Комментарии:

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

Популярная торговая площадка umkamall.ru готовится к Международному женскому дню 8 Марта и в честь...

Компания Oppo представила смартфоны F11 и F11 Pro, которые можно отнести к среднему ценовому сегменту. ...

Не так давно компания Xiaomi закончила обновлять свои смартфоны до MIUI 10 на основе операционной системы...

Я работаю над игрой, но в настоящее время я использую тесты.

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

Что я делаю, я запускаю событие paint на панели, когда я нажимаю кнопку запуска, с помощью этого кода:

Private void startToolStripMenuItem_Click(object sender, EventArgs e) { try { pnlArea.Invalidate(); } catch (Exception) { throw; } }

Затем я делаю это в своем событии рисования:

Private void pnlArea_Paint(object sender, PaintEventArgs e) { try { stopwatch = new Stopwatch(); // Begin timing stopwatch.Start(); if (gameStatus == GameStatus.PlaceHead) { e.Graphics.DrawImage(dictHead["HeadRight"], 100, 100, 15, 15); } //e.Graphics.Clear(Color.White); if (gameStatus == GameStatus.GameTest) { int x = 0; int y = 0; for (int i = 0; i < 5000; i++) { x += 15; if (x > 1000) { x = 0; y += 15; } e.Graphics.DrawImage(body.Value, x, y, 15, 15); } } toolTimer.Text = Math.Round((stopwatch.Elapsed.TotalMilliseconds / 1000), 2).ToString() + "s"; // Stop timing stopwatch.Stop(); } catch (Exception) { throw; } }

Это часть тела, которую я рисую в коде выше:

Это точный размер → 15px x 15px

но иногда это занимает до 1,2 секунды!!! есть ли способ улучшить это?

это пример экрана конечного результата:

2 ответов

В дополнение к информации, которую все мне дали, я пришел к заключению, чтобы удвоить буфер панели. Это исправило мою проблему →

Class DoubleBufferedPanel: Panel { public DoubleBufferedPanel() : base() { DoubleBuffered = true; } }

И я просто использовал эту двойную буферную панель.

Новый тест без каких-либо мерцаний!:

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

Итак, первое, на что вы могли бы обратить внимание, - найти более эффективные способы рисования изображения - например, DrawImageUnscaled может работать быстрее, чем DrawImage , и достичь желаемого результата. Но это оптимизация неэффективного алгоритма - то, что вам нужно сделать, чтобы получить реальную выгоду от производительности, - это увидеть, можете ли вы принять новый, более эффективный алгоритм.

Если вы должны выполнить рендеринг с использованием растровых изображений, посмотрите, как повторяется шаблон - можете ли вы сделать более крупное растровое изображение, которое обеспечивает группу ячеек 4x4 или 16x16, и сделать это? Или растровое изображение, представляющее целый столбец или строку? Затем вы можете сделать 50 вызовов вместо 5000.

Но если вам не нужно использовать рендеринг растровых изображений, вы можете сделать гораздо лучше. Например, если вы gfx.Clear(backgroundColor) , а затем нарисуете около 140 черных линий вниз и поперек, вы можете создать один и тот же дисплей с 141 вызовом. Или, если вы нарисуете около 70 прямоугольников, вы можете эффективно выполнять 2 строки за звонок. Это значительно уменьшает количество вызовов методов, которые вы должны выполнить, и позволяет графической системе рисовать больше пикселей в пакете с использованием оптимизированных линий рендеринга и рендеринга прямоугольников (фактически, прямоугольник может работать значительно быстрее, чем обобщенная линия из-за системы, зная, что линии всегда вертикальны и горизонтальны).

(Если есть биты, которые не соответствуют этому шаблону, то можете ли вы по-прежнему отображать фоновую сетку, а затем нарисовать изменения сверху?)

Далее, если только небольшие области изображения меняются от одного кадра к другому, тогда ваш алгоритм будет отображать 5000 боксов, хотя из них 4999 из них не меняются (или 70 прямоугольников, когда 1 будет достаточно). Таким образом, вы можете значительно улучшить ситуацию, если вы (а) только аннулируете часть представления, которая должна быть изменена, и (б) напишите свою процедуру рендеринга, чтобы определить, какие квадраты сетки находятся за пределами клипа, и поэтому бессмысленно рисовать. Это может сократить ваши обновления до рисования 1 прямоугольника вместо 5000 кадров. (Еще один способ добиться того же самого - сохранить изображение в растровом изображении вне экрана и просто нарисовать на нем изменения. Когда вы визуализируете это на главном экране, графическая карта закрепит его для вас и достигнет того же результата - намного более быстрая скорость перерисовки)

Все о достижении одного и того же отображения, будучи "ленивым" и думая попеременно делать как можно меньше работы. (Получение компьютера, чтобы идти быстрее, всегда сводится к тому, чтобы попросить его сделать меньше)