Архив сообщества
2011 — 2019
Аватар оникс_админ0

Some переводs

Автор: оникс_админ0 · 19.05.2016, 19:01 · 50 сообщений

Сообщений в теме: 50

Code Talker#26
Super-Derven (19 May 2016 - 12:20) писал:

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

Что за образ жизни такой?

Скопировать ссылку
Onnyx#28

Super-Derven (19 May 2016 - 23:01) писал:

Дауна. Так и говори.

кудах

Super-Derven (19 May 2016 - 23:01) писал:

пермы не снимают, вот ты и бесишься

Между делом, снимают.

Super-Derven (19 May 2016 - 23:01) писал:

я прошел путь

От глуповатого мальчика до стремящегося глуповатого мальчика. Труды соответствуют.

Super-Derven (19 May 2016 - 23:01) писал:

Содержимое цитаты отсутствует в сохранённом тексте.

Это очень хорошо. Просто было бы уместным быть несколько скромнее.

Скопировать ссылку
оникс_админ0#29
Onnyx (20 May 2016 - 03:50) писал:

кудах

На жердочку-то приземлился?

Цитата

Это очень хорошо. Просто было бы уместным быть несколько скромнее.

Тебя-то я и ждал, чтобы послушать твой бесценный совет.

Цитата

Между делом, снимают.

Ого! Бан сняли, д - достижение достойное эпоса.

Цитата

Труды соответствуют.

Ну дык давай критику трудов, а не моей персоны, и не советы о скромности, которые как ты понимаешь, я на хую вертел. Авось стану делать лучше.

Скопировать ссылку
24twelve#30
Onnyx (20 May 2016 - 03:50) писал:

От глуповатого мальчика до стремящегося глуповатого мальчика. Труды соответствуют.

Он что-то делает + вниманиеблядствует на форуме. А ты, ну, только комменты в его тредах пишешь. Не обидно быть производной от Дервена?

Скопировать ссылку
Onnyx#31

EnoughConcrete (20 May 2016 - 07:12) писал:

А вот и петушок Твелв с соседнего сарая подкатил. Да, наверное, мне стоит сперва добиться.

Super-Derven (20 May 2016 - 05:17) писал:

Ну всё, начались стрелочки и КРИТИКУЙ ВЫСЕРЫ ПО СУЩЕСТВУ.

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

Скопировать ссылку
оникс_админ0#32
Onnyx (20 May 2016 - 08:14) писал:

Ну всё, начались стрелочки и КРИТИКУЙ ВЫСЕРЫ ПО СУЩЕСТВУ.

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

Просто проси в другом месте, и будешь услышан.

Сириусли, то, что у тебя горит жопа с нихуя - твое личное дело, ты не центр вселенной.

Скопировать ссылку
24twelve#33
Onnyx (20 May 2016 - 08:14) писал:

А вот и петушок Твелв с соседнего сарая подкатил. Да, наверное, мне стоит сперва добиться.

Я расписал тебе, как выглядит твое поведение. Дальше поступай как хочешь, производная.

Скопировать ссылку
Onnyx#34
EnoughConcrete (20 May 2016 - 09:24) писал:

производная

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

Пожалуй, довольно общения, развлекайте себя дальше сами.

Скопировать ссылку
оникс_админ0#35

Часть 3.

Этот учебник познакомит нас с созданием простых систем левелинга путем добавления переменных и процедур.

Если вы еще не прочли %ссылка на вторую часть% мы рекомендуем сначала ознакомиться с ним. Или, %ссылка на первый урок%, если вы совсем новичок.

Переменные!

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

игрокам или другим объектам.

Шаг 1.1 Начнем, сначала создадим код-файл в нашем проекте и назовем его "Vars.dm"

Шаг 1.2 Добавим следующий код:

http://pastebin.com/SJe18nQW

Здесь мы создаем 3 новых переменных для всех объектов типа /mob. Включая нашего моба игрока mob/Player, потому как это дочерний подтип от /mob; /mob/Player.

"Level" будет хранить информацию о уровне, на котором находится игрок, и начнется наш отчет с 1.

"Exp" - сколько опыта мы имеем на данный момент, начальное значение 0.

И "Nexp" - сколько нужно опыта, чтобы перейти на новый уровень, в данном случае это значение равно 100.

Процедуры!

В следующей части мы создадим нашу первую процедуру или "proc".

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

Шаг 2.1 Создадим новый код-файл в нашем проекте и назовем его "Procs.dm"

Шаг 2.2 Добавим следующий код:

http://pastebin.com/uR3RvXG5

Во-первых, обратите внимание на тот важный факт, что мы используем  "src", а не "usr".

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

Далее разберем построчно:

"mob/proc/LevelCheck()" - новая процедура для моба, которая называется LevelCheck.

"if(src.Exp>=src.Nexp)" - проверяет, больше ли или равно Exp Nexp.

Все остальное, это то, что по табам дальше нашего условия и будет выполняться в зависимости от него.

"src.Exp=0" - сбрасывает src's Exp на 0 для следующего уровня.

"src.Nexp+=10" - Увеличивает необходимый опыт для получения уровня с каждым новым.

"src.Level+=1" - Увеличивает уровень.

"src<<"You are now Level [src.Level]" - Уведомляет нас о том, что наш уровень увеличился.

\* Источник(src) обозначает здесь нашего Игрока, но также вы можете использовать эту же процедуру и для левелинга врагов или других NPC, если вам нужно.

Сейчас нам нужно увидеть нашу работу.

Мы не имеем пока рабочую систему боя, потому на скорую руку сделаем verb для теста, который будет добавлять нам опыт.

Шаг 2.3 Добавим следующий код:

http://pastebin.com/AaRwtAPq

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

Он дает 100 опыта игроку и из него вызывается наша процедура LevelCheck().

Дополним!

В конце-концов, мы сделаем отображение нашей переменной Level из Who verb'a.

Шаг 3.1 Находим и открываем "Verbs.dm"

Шаг 3.2 Изменяем наш код:

http://pastebin.com/MYffGUHb

Теперь добавлено отображение "([M.Level]) ", что будет указывать нам на уровень игрока перед его именем.

Скопировать ссылку
оникс_админ0#37
sasichkamega (21 May 2016 - 04:46) писал:

Покажет же только созданную моботу. И тех, кто оффлайн.

Дело в том, что:

mob

	Logout()


		world<<"[src] has Logged Out"


		del src

При выходе из игры у нас моб удаляется. Это из первой части.

Скопировать ссылку
оникс_админ0#39

Часть 4

Этот учебник покажет простой путь показать игрокам их характеристики на специальной панели характеристик.

Если вы не читали %ссылка на третий урок%, то мы рекомендуем вам это сделать. Ну а если вы совсем

новичок, то %ссылка на первый урок%.

Характеристики!

Используя процедуру Stat() вы можете быстро и легко показать игроку некоторую информацию.

Шаг 1.1 Сперва добавим некоторые характеристики в файл "Vars.dm".

http://pastebin.com/P4UNsTvL

Эти характеристики будут довольно наглядны.

Здесь мы создали для ваших мобов здоровье, силу и защиту, и присвоили начальные значения этим

характеристикам.

Шаг 1.2 Сейчас создадим новый код-файл под названием "StatPanel.dm" и добавим туда следующий код:

http://pastebin.com/9PGU9tan

Stat() - встроенная в ДМ(дрим мейкер) процедура, которая может быть использована для того, чтобы

показывать информацию в специальной вкладке.

Stat() автоматически вызывается каждый 8-ой тик, или каждые 8/10 секунд, в этих промежутках информация и

будет обновляться.

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

Шаг 1.3 Вы также можете показывать несколько вкладок, если вам это нужно.

http://pastebin.com/vq4yD4kq

Не очень много, но это подверждает вышесказанные слова.

Дополним!

Мы добавили некоторые переменные, чтобы отобразить здоровье, силу и защиту; сейчас сделаем увеличение

наших характеристик с уровнем.

Шаг 2.1 Меняем некоторый код на следующий в "Procs.dm"

http://pastebin.com/rgkegQ2A

Мы добавили три строки кода, по одной на каждую характеристику.

MaxHP увеличивается случайно, целое значение в пределах от 1 до 5.

Str и Def увеличивается на 1.

Если вам нужно восполнение здоровья при новом уровне, используйте что-то вроде этого:

"src.HP=src.MaxHP" после добавления MaxHP

Скопировать ссылку
Derveeen#40

Часть 5.

Сейчас у нас есть некоторые характеристики и мы можем изменять свой уровень, теперь же нам нужно сохранять своего персонажа.

Если вы не читали %ссылка на четвертую часть%, то вам следует это сделать. Если же вы совсем новичок, то %ссылка на первую часть%

Сохранения!

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

Шаг 1.1 Во-первых мы создадим код-файл под названием Save.dm, и добавим туда следующий код:

http://pastebin.com/66n0NRqK

Мы уже создавали процедуры, потому первая строка должна быть вам знакомой.

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

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

fexists() - встроенная процедура которая и делает эту проверку. fdel() также встроенна, и она может удалить файл.

Следующая строка создает переменную типа savefile и дает ей имя F.

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

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

Шаг 1.2 Сделаем так, чтобы игроки всегда(и автоматически) сохранялись при вызове процедуры Logout(). Её

мы можем найти в файле Main.dm

http://pastebin.com/RsDfG71M

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

Шаг 1.3 Мы должны, очевидно, дать игрокам возможность вручную сохраняться, иначе мы конченные ублюдки!

Этот простой код может быть добавлен в Verbs.dm

http://pastebin.com/TAakL9wK

Загрузка!

На очереди загрузка. Это покажет, как хорошо работает наше сохранение.

Шаг 2.1 Мы добавим процедуру LoadProc() в Save.dm, чуть пониже SaveProc()

http://pastebin.com/0Lxhg2tn

Как вы можете видеть, это очень похоже на SaveProc(). Но все равно есть некоторые различия.

На сей раз по табуляции под fexists(). Это способ выполнять все только в случае если файл есть.

Также нам здесь не нужно удалять файл. Несмотря на то, что мы создали переменную типа savefile.

Мы по-прежнему обращаемся в каталог с сохранением, мы устанавливаем для встроенной переменной loc наше

значение. Мы также используем встроенную процедуру locate(). Мы также обращаемся к значениям savefile переменной.

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

В итоге, мы возвращаем 1("return 1") внутри if(). Если файла не существует, то эта процедура вернет ноль

(возвращает ноль по умолчанию). Используя return мы оканчиваем процедуру или verb. Это также может быть использовано, чтобы возвращать значения, в данном случае 1. Я включил пример в конце для лучшего понимания.

Шаг 2.2 Сейчас нам нужно загрузиться. Мы сделаем это при входе в игру. Процедура Login() может быть

найдена в Main.dm

http://pastebin.com/pKQPGvbf

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

В противном случае при выполнение LoadProc вернет ноль, false(0) для if(), и следовательно выполнение

пойдет по ветви else. Внутри esle наш старый код вхождения в игру.

return!

Быстрый пример как мы можем использовать return

http://pastebin.com/FNcV4RKp

Скопировать ссылку
PlIn#43

sasichkamega (28 May 2016 - 06:51) писал:

Завези еще защитку от редактирования файла сохранения. Just for fun.

sasichkamega (26 May 2016 - 16:39) писал:

Сделай это сам.

Скопировать ссылку
Derveeen#44

6 часть.

Далее, мы начнем создавать некоторых базовых врагов для нашей игры.

Если вы еще не прочли %ссылка на пятый урок%, вы должны сперва сделать это. Или %ссылка на первую часть% если вы совсем новичок.

Анимированные иконки!

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

Шаг 1.1 Сперва сделаем новый файл с иконками для наших врагов.

File > New > Icon File Type > Name: EnemyRed.dmi

Шаг 1.2 Сейчас мы перейдем к созданию анимированного icon_state для врагов. Хоть это и будет только смена направлений при движении.

Кликните на иконку камеры наверху файла с иконками.

Изображение

Шаг 1.3 Сейчас используйте настройки внизу слева чтобы сбросить счетчик кадров до 1.

Изображение

Шаг 1.4 Два раза кликните на любой из кадров чтобы изменить его. Вставьте злой смайл в каждый, разверните в направлении стрелки слева. Но не делайте смайл большим!

Вы можете использовать инструменты внизу чтобы быстро развернуть icon_state.

Изображение

Шаг 1.5 Сейчас мы создадим анимацию атаки. Используйте стрелку назад справа, чтобы выйти из редактирования нашего icon_state. Потом кликните на камеру вновь.

Шаг 1.6 Самое время, чтобы установить счетчик кадров на 2. Потом просто вставьте кадры которые вы создали в icon_state

Изображение

Шаг 1.7 В вторых кадрах передвиньте злой смайлик к краю по его направлению. Это сделает его вид таким, будто бы он кинулся вперед, чтобы напасть на вас. Это также объясняет, почему мы не делали его большим - очевидно, нам нужно пространство для движения! Вы должны увидеть его анимацию слева от редактора кадров.

Шаг 1.8 Нажимайте кнопку назад, пока не вернетесь назад к файлу  с иконкой. Сделайте правый клик на нашем новом icon_state и назовите его Attack. Мы также проходили это в %ссылка на первую часть%, когда создавли нашу траву и прочие турфы.

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

Переиспользуем спрайты!

Создадим копию нашего красного врага и по-быстрому перекрасим.

Шаг 2.1 Создайте новый файл с иконкой и назовите его EnemyGreen.dmi

Шаг 2.2 Перейдите назад к оригинальному EnemyRed.dmi файлу с иконками, и выберите оба icon_state'а. Затем копируйте их с помощью ctrl+c

Изображение

Шаг 2.3 Сейчас перейдите в EnemyGreen.dmi, и нажмите ctrl+v, чтобы вставить выбранные icon_state'ы сюда.

EnemyRed.dmi и EnemyGreen.dmi должны выглядеть сейчас идентично.

Шаг 2.4 Выберите Colors > Edit... из меню файлов.

Изображение

Шаг 2.5 Сделайте двойной клик на красную часть и выберите новый цвет. Я сделал свой светло-зеленым. Нажмите ОК чтобы закончить.

Изображение

Эти простые действия заменили все красные иконки на зеленые, и сейчас мы получили "новых" врагов!

Скопировать ссылку
Bitch_Fucker#45

Часть 6. "А Сейчас мы сделаем говноспрайты наших врагов!"

Часть 7 "А сейчас мы сделаем говноспрайты последнего босса"

.....

Часть 800 "А сейчас мы сделаем говноспрайты воды"

Ну вот, игра почти готова, осталось совсем немного: написать код.

Скопировать ссылку
Bitch_Fucker#47
Derveeen (28 May 2016 - 10:27) писал:

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

Ну, я и не ожидал угадать. Но таки можно было бы и объединить.

Скопировать ссылку
Derveeen#48

Эпизод семь

The Force Awakens

Поехали дальше, мы будем создавать базовых врагов для нашей игры, и verb атаки, который смогут использовать и игрок и враги.

Если вы не читали %ссылка на шестой урок%, то советуем вам это сделать. Если же вы совсем новичок, то %ссылка на первую часть%

Атака!

Чтобы начать, мы создадим общий Attack verb, который может быть использован и NPC и игроками.

Шаг 1.1 Следующий код может быть вставлен в конец файла Verbs.dm (под verb'ом Who)

http://pastebin.com/HsJqkULb

Изображение

flick() - встроенная процедура, которая проигрывает анимацию объекта от начала до конца.

Поскольку мы не сделали анимацию атаки для нашего игрока мы просто исчезнем.

get_step() - другая встроенная процедура, она возвращает тайл, который находится на растоянии одного шага в желаемом направлении от указанного объекта.

В нашем случае, мы используем get_step чтобы найти тайл спереди атакующего.

Мы используем цикл for() чтобы  пройтись по каждому мобу спереди атакующего, и обозначить его M.

Далее мы считаем, как много урона мы нанесли. Здесь мы используем базовую формула Сила - Защита.

Мы используем max() десь, для того чтобы наш урон не был отрицательным.

Потом мы выводим простое сообщение каждому мобу поблизости о атаке и уроне.

Следующая строка нужна для вызова новой процедуры(TakeDamage), которую мы создадим в следующей части.

Шаг 1.2 Сейчас, когда мы можем атаковать, начнем обрабатывать урон. Следующий код может быть вставлен в конец файла Procs.dm (под процедурой LevelCheck())

http://pastebin.com/ida43zXg

Изображение

TakeDamage() процедура требует(берет) два аргумента. Один для урона который будет получен, и другой - переменная с типом моба, для того кто это делает.

Потом производится вычитание: хитпоинты цели минус урон.

В итоге запускается процедура DeathCheck, которую мы создадим ниже.

Шаг 1.3 Сейчас нам нужно проверить, не умерли ли мы? Следующий код также может быть вставлен в конец файла Procs.dm

http://pastebin.com/M9RFhLUp

Эта процедура принимает(требует, берет) аргументы также, но точнее только один, который обозначает убийцу.

TakeDamage() процедураиспользуется атакующим.

Во-первых, мы проверяем не умерли ли действительно вы, это проийзодет если ваши хитпоинты(HP) меньше или равно нулю.

Потом мы делаем быструю проверку, игрок ли это(обладающий клиентом) или просто NPC, поскольку мы хотим обрабатывать их смерти по-разному.

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

Далее мы сбросим их HP на max.

В конце-концов кинем их в относительно безопасное место.

Если убит NPC, мы даем тому, кто убил немного Exp(опыта).

Мы используем переменную Exp во врагах, чтобы показать как много с них набьем опыта.

Потом мы запускаем процедуру LevelCheck() на убийце, чтобы увидеть, достаточно ли ему опыта, чтобы поднять уровень.

Далее мы удаляем NPC из бытия(лол) из игрового мира.

Скопировать ссылку
Derveeen#49

8 часть.

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

Создаем врагов!

Сейчас мы действительно сделаем врагов! Наконец-то...

Шаг 4.1 Создаем новый код-файл под названием Enemies.dm

Шаг 4.2 Создадим /Enemies тип и немного вражеских мобов используя следующий код:

http://pastebin.com/2bL0EZkQ

Изображение

Тут мы создали два врага типа /mob/Enemies, Red Guy и Green Guy, нижние подчеркивания будут преобразованы в пробелы внутри игры(в названии, по всей видимости).

Мы установим иконки для этих двух типов, далее настраиваем их базовые характеристики.

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

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

Шаг 4.3 Сейчас, сделаем кое-что для врагов и их ИИ.

http://pastebin.com/4x5PMG2Z

New() - процедура которая автоматически вызывается всякий раз, когда что-то создается.

Если объект расположен на карте, это сработает при запуске игры. В противном случае, это случится когда мы создадим объект через код, или загрузим объект из файла.

Вы можете заметить, что мы не выставили HP ля наших врагов, только MaxHP. Вместо того, чтобы писать две строки с одними и теми же значениями для бесчисленных врагов, мы просто установим это значение через процедуру New() для каждого их них.

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

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

spawning() нашего ИИ предотвратит остановку всего остального, когда новый врга будет создан, потому как их ИИ будет работать пока они существуют.

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

Шаг 4.4 Мы почти закончили! Нам просто нужно написать некоторый простой боевой ИИ. Этот код также должен быть в Enemies.dm

http://pastebin.com/SYkgdpUk

Первая строка создает процедуру, эта процедура предназначена только для /mob/Enemies, и называется CombatAI(). Это значит, что Игроки или другие не вражеские NPC не могут этим пользоваться.

while(src) заставляет все, что ниже по табуляции повторяться до тех пор пока src существует.

Первое, что мы делаем в этом цикле, это идем с помощью цикла по каждому мобу типа /Player в oview()(радиусе видимости) врага.

Если мы находим любого /Player, то мы выполянем некоторые действия:

Мы проверяем расстояние до цели используя встроенную процедуру get_dist().

Если цель в одном тайле, то идем далее:

Враг повернется к цели с помощью get_dir()

Ну а Attack verb() мы создали на прошлом уроке.

Если они не оказались рядом игроком: Враг идет к целям используя встроенную процедуру step_to().

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

После того как сделали два этих действия, мы используем break, чтобы выйти из цикла for(). Это предотвратит наших врагов от того, чтобы пытаться охотиться сразу на нескольких игроков.

Далее, в самом конце, мы вызываем sleep() используя случайное число от 4 до 8 (тиков).

Заметьте, что sleep() находится под while() по табуляции. Если мы не сделали бы задержку в конце цикла while(), то это просто выполнялось нонстопом(без остановки) и вызывало серьезные лаги/падение игры.

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

Скопировать ссылку
оникс_админ0#50

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

Множество людей говорят мне, что это довольно сложно для них, подобрать идеальную цветовую палитру для своих спрайтов.

В этом самоучителе я попытаюсь показать вам некоторые основные трюки для создания собственной палитры.

Начинаем: RGB и HSB/HSL

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

Это довольно важно для работы с цветовыми величинами. RGB(RED(красный) GREEN(зеленый) BLUE(синий)) код создает цвет из чисел от 0 до 255.

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

Итак...

! Меняем RGB на HSB/HSL(Hue Saturation Brightness/Lightness(Оттенок Насыщенность Яркость))

Оттенок

Оттенок определяется значением от 1 до 360 и изменяет выбранный цвет.

Насыщенность

Маленькие значения делают цвет более серым, большие менее серым.

Яркость

Это значение меняет яркость выбранного цвета, высокие значения делают цвет более ярким.

Свет для начинающих

"Изменяем оттенок правильно"

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

Когда цвет становится ярче, вы должны менять оттенок до следующего более яркого цвета.

Хорошая палитра всегда содержит много темных синих/фиолетовых цветов и очень ярких желтых и зеленых. Потому что так более реалистично.

Цвет контуров

- Этот цвет всегда один и тот же, для всех ваших спрайтов.

- Всегда выбирайте темно-синий или темно-фиолетовый цвет для контура.

Скопировать ссылку

Обратно в Кодинг