Главная страница
Навигация по странице:

  • «Дальневосточный федеральный университет» (ДВФУ) ШКОЛА ЕСТЕСТВЕННЫХ НАУК кафедра информатики, математического и компьютерного моделирования О Т Ч Е Т

  • ___________

  • Оглавление Введение

  • 1.1 Характеристика предприятия

  • 1.5 Трудности

  • 1 Основная часть 1.1 Характеристика предприятия

  • 1.3 Разработка и реализация Во время практики были выполнены следующие задачи: Добавить в контекстное меню компонента возможность его вырезать (Cut) в буфер обмена.

  • Добавить опцию заблокировать панели и окна, чтобы нельзя было редактировать размер и положение.

  • Удалить из кода предустановки разрешений экрана и внести недостающие в EmptyProject.citproj.

  • Улучшить компонент выбора цвета.

  • 2 HSV цветовое пространство HSV – цветовая модель, в которой координатами цвета являются: 8  H

  • 3 CIELAB цветовое пространство CIELAB – цветовое пространство, которое часто сокращают как LAB. Оно отображает цвет в трех значениях:  L

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

  • Запретить удаление вершин в Distortion Mesh.

  • Убрать из интерфейса поле добавления компонент, если добавлять нечего.

  • Добавить обозначения для отступов в окне инспектор.

  • Задание на производственную практику

  • ЗАКЛЮЧЕНИЕ РУКОВОДИТЕЛЯ ПРАКТИКИ

  • Отчет по практике. Системное программирование


    Скачать 0.88 Mb.
    НазваниеСистемное программирование
    АнкорОтчет по практике
    Дата29.08.2021
    Размер0.88 Mb.
    Формат файлаpdf
    Имя файлаotchet_po_praktike_1.pdf
    ТипОтчет
    #228248

    МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
    Федеральное государственное автономное образовательное учреждение высшего образования
    «Дальневосточный федеральный университет»
    (ДВФУ)
    ШКОЛА ЕСТЕСТВЕННЫХ НАУК
    кафедра информатики, математического и компьютерного моделирования
    О Т Ч Е Т
    о прохождении производственной практики по получению профессиональных умений и опыта проектной и производственно- технологической; организационно-управленческой деятельности направление подготовки 01.03.02 «Прикладная математика и информатика» профиль «Системное программирование
    »
    Выполнил студент гр. Б8118-01.03.02систпро
    ____Савченко В.В __________
    Отчет защищен: с оценкой _______________________
    Зав.кафедрой
    ___________________А.Ю.Чеботарев
    «____» _______________ 2021 г.
    (Ф.И.О.) (подпись)
    Руководитель практики
    __доцент, к.т.н. ___________
    (должность, уч.звание)
    ___Боровик А.И. ___________
    (Ф.И.О.) (подпись)
    «_____»______________2021г.
    Рег. № Б8118-01.03.02систпро - ______
    «____»__________________2021 г.
    Практика пройдена в срок с «19» июля 2021 г. по «31» июля 2021 г.
    (2 недели)
    на кафедре ИМКМ
    г. Владивосток
    2021

    2
    Оглавление
    Введение ........................................................................................................... 3
    1 Основная часть ............................................................................................ 4
    1.1 Характеристика предприятия ............................................................. 4
    1.2 Постановка задачи ................................................................................. 5
    1.3 Разработка и реализация ...................................................................... 5
    1.4 Тестирование ........................................................................................ 11
    1.5 Трудности .............................................................................................. 11
    Заключение ................................................................................................... 12
    Список источников ...................................................................................... 13
    Приложения .................................................................................................. 14

    3
    Введение
    Производственная практика проходила на предприятии «Game Forest» с
    19.07.2021 по 31.07.2021.
    Цель практики: доработать игровой движок «Citrus», а именно редактор сцен «Tangerine».
    Задачи практики:

    Изучить структуры и работу движка.

    Развить навыки работы с системой контроля версий Git и системой отслеживания задач и проектов Jira.

    Получить опыт работы в коллективе.

    Сформировать профессиональные навыков.

    Изучить и пронализировать накопленный за длительный промежуток времени кодовой базы компании.

    Написать эффективный и поддерживаемый код.

    Выполнить предложенные задачи по доработке движка под руководством куратора.
    Содержание и программа практики:

    Авторизация в рабочих сервисах (Jira, GitLab), клонирование репозитория;

    Знакомство со структурой движка, с редактором сцен;

    Получение заданий, обсуждение их с куратором, выполнение задач;

    Отправка выполненных задач на тестирование, исправление замечаний и доработка, если есть.

    4
    1 Основная часть
    1.1 Характеристика предприятия
    «Game
    Forest»
    – российская компания, студия разработки компьютерных игр и мультимедийных приложений для настольных компьютеров и мобильных телефонов. Компания предоставляет полный цикл разработки: от исследования рынка и разработки прототипа до запуска в продажу и дальнейшей поддержки. Студия существует с 2005 года и за это время выпустила более 40 успешных проектов как на мобильный рынок, так и на ПК. Вся разработка ведётся на базе собственного движка. Сегодня ключевой проект компании - это Gummy Drop.
    Головной офис компании находится во Владивостоке, а филиал
    – в
    Калининграде.
    В настоящее время штат компании составляет более 100 человек, большую часть которой составляют программисты и художники. Каждый специалист закреплен за одним из проектов, ведет разработку под руководством менеджера проекта. Во главе подразделений стоят арт-директор и технический директор.
    Деятельность предприятия регулируется Конституцией РФ, ФЗ РФ «Об акционерных обществах», ФЗ РФ "О защите прав потребителей", уставом предприятия, а также другими нормативными документами и законодательными актами.
    Предприятие является самостоятельным хозяйственным объектом с правами и обязанностями юридического лица, самостоятельно осуществляет свою деятельность, распоряжается полученной прибылью, оставшейся в его распоряжении после уплаты налогов и других обязательных платежей, самостоятельно планирует свою деятельность и определяет перспективы развития, исходя из спроса на предоставляемые услуги и необходимости обеспечения коммерческого и социального развития.
    Предприятие действует на принципах полного хозяйственного расчета, самофинансирования и самоокупаемости, обеспечивает социальное развитие

    5 и стимулирование работников за счет накопленных средств, несет полную ответственность за результаты собственной хозяйственной деятельности и выполнение возложенных на себя обязательств перед клиентами, бюджетом, банками, а также перед трудовым коллективом согласно действующего законодательства РФ.
    1.2 Постановка задачи
    «Citrus» - игровой движок, разработанный компанией Game Forest. За долгое время разработки накопилось много идей по его улучшению и много ошибок. Ошибки мешают разработчикам и аниматорам комфортно работать, а улучшения помогли бы сделать работу более эффективной.
    Для доработки движка были выбраны следующие задачи:

    Добавить новую кнопку, которая запрещает изменение размера и перемещения окон и панелей;

    Добавить кнопку «cut» для компонент;

    Убрать из кода предустановленные расширений экранов и дополнить недостающими в настройках пустого проекта;

    Доработать компоненту вывода цвета — добавить новые ползунки
    CIELAB, HSV и RGB;

    Запретить удаление вершин меша;

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

    Добавить подписи к кнопкам изменения отступов.
    1.3 Разработка и реализация
    Во время практики были выполнены следующие задачи:
    Добавить в контекстное меню компонента возможность его вырезать
    (Cut) в буфер обмена.
    Раньше можно было только скопировать и удалить компоненту. Теперь имеется возможность вырезать компоненту. Для выполнения этой задачи потребовалось произвести анализ кода и найти, где добавляются команды

    6
    «Remove» и «Copy». Команда «Cut» работает, как последовательное выполнение команд «Copy» и «Remove». [Приложение 1]
    Добавить опцию заблокировать панели и окна, чтобы нельзя было
    редактировать размер и положение.
    Проблема была в том, что разработчик мог случайно вытащить панель в отдельное окно и наоборот или изменить размер, что было неудобно. Поэтому появилась необходимость добавить кнопку, которая бы запрещала подобные модификации. Для выполнения этой задачи требовалось изучить, как работает перемещение и модификация панелей. Был добавлен checkbox и кнопка меню, которая показывает, заблокирована ли модификация. [Приложение 2, 3] Для проверки флага требовалось изучить класс Task в C#.
    Удалить из кода предустановки разрешений экрана и внести
    недостающие в EmptyProject.citproj.
    Пресеты по умолчанию нельзя было поменять, поэтому они мешали в проектах, где другая схема именования маркеров разрешений экрана. Чтобы это исправить, нужно было найти участки кода, где задаются расширения экрана, и удалить их. Следовательно, все расширения будут браться из настроек проекта. Так же, в рамках этой задачи, требовалось исправить ошибку, которая возникала, если в настройках проекта нет расширений экрана.
    Улучшить компонент выбора цвета.
    Компонент выбора цвета представлял собой поле для ввода со значением цвета в RGB, треугольник со значением цвета и HSV кольцом и alpha ползунком. Компонент разворачивался по нажатию на кнопку.
    [Приложение 4] Требовалось добавить RGB, HSV и CIELAB ползунки и добавить ряд кнопок, каждая из которых открывала определенную часть компонента – alpha ползунок, HSV кольцо, RGB, HSV или CIELAB. В качестве примера был взят компонент выбора цвета из Paint.Net. [Приложение 5]

    7
    Для выполнения этой задачи было необходимо изучить RGB, LAB и
    HSV цветовые пространства, формулы конвертации из одного цветового пространства. Так же требовалось продумать архитектуру объекта, описывающего ползунок, механизм изменения значений ползунков и цвета треугольника.
    Механизм изменения цветов:
    1. Меняя значение одного из ползунков, происходит вызов события, в котором высчитывается новое значение треугольника. Для этого берутся все три ползунка из одной группы: LAB, RGB или HSV.
    Новое значение переводится в RGB, если нужно, и присвается треугольнику.
    2. После этого происходит перерисовка и изменение значения всех остальных групп ползунков: новый цвет трегольника конвертируется в HSV или LAB, перерисовывается текстура в соответсвии с полученными зветами.
    1 RGB цветовое пространство
    RGB

    аддитивная цветовая модель, описывающая способ кодирования цвета для цветовоспроизведения с помощью трёх цветов, которые принято называть основными – красный, голубой и зеленый.
    Текстура RGB ползунков представляет собой массив пикселей 256х1, каждый из которых представляет собой значение цвета трегольника. Значение
    R компоненты цвета R ползунка меняется от 0 до 255, а значение каретки совпадает со значением цвета треугольника. Для G и B ползунков так же меняются значения G и B компонент соответственно. Изменение значения каретки вызывает событие, меняющее цвет треугольника на цвет значения каретки и перерисовывающее все остальные ползунки в соответствии с новым цветом.
    2 HSV цветовое пространство
    HSV
    – цветовая модель, в которой координатами цвета являются:

    8

    Hue
    – цветовой тон, (например, красный, зелёный или сине- голубой). Варьируется в пределах 0

    360°, однако иногда приводится к диапазону 0

    100 или 0

    1. [Приложение 6]

    Saturation
    – насыщенность. Варьируется в пределах 0—100 или 0—1.
    Чем больше этот параметр, тем «чище» цвет, поэтому этот параметр иногда называют чистотой цвета. А чем ближе этот параметр к нулю, тем ближе цвет к нейтральному серому.

    Value (значение цвета) или Brightness
    – яркость. Также задаётся в пределах 0

    100 или 0

    1.
    Текстура Saturation и Value ползунков – массив пикселей 100х1. Массив для текстуры Hue ползунков содержит 360 пикселей. Каждый пиксель Hue ползунка содержит RGB цвет, который получен конвертацией HSV цвета по формулам, которые уже прописаны в движке. HSV цвет для каждого пикселя содержит максимальное значение S и V, а значение H меняется от 0 до 360.
    Для S и V ползунков значения пикселей предсталяют собой цвет RGB, сконвертированный из HSV цвета где:

    H компонента равна значению H ползунка;

    У V ползунка S компонента равна значению, а у S ползунка S компонента меняется от 0 до 100, деленное на 100;

    Для V компоненты все наоборот: у S ползунка V компонента равна значению, а у V ползунка V компонента меняется от 0 до 100, деленное на 100.
    3 CIELAB цветовое пространство
    CIELAB – цветовое пространство, которое часто сокращают как LAB. Оно отображает цвет в трех значениях:

    Lightness – яркость. Значение L* определяет черный цвет при 0 и белый при 100.

    a* ось отображает цвета от зеленого до красного, где отрицательные значения отвечают за зеленый цвет, а положительные – за красный.

    9

    b* ось отображает цвета от синего до желтого, где отрицательные значения отвечают за синий цвет, а положительные – за желтый.
    A* и b* оси не имеют границ и в зависимости от значения белой точки они могут достигать границ ±150 и охватить весь набор цветов, которые воспринимает человеческий глаз. Тем не менее, для разработки ПО часто устанавливают промежуток от -128 до 127 в практических целях. [Приложение
    7]
    CIELAB вычисляется относительно белой точки. CIE рекомендует использовать стандарт D65.
    Перемещая каретку одного из LAB ползунков, вызывается событие, задающее новый цвет треугольника. Цвет из CIELAB со значениями LAB ползунков переводится формулами перевода в XYZ цветовое пространство, которое потом конвертируется в RGB цвет. После этого все остальные ползунки получают значения, соответсвующие цвету треугольника. При изменении цвета треугольника, полученный цвет конвертируется из RGB в
    XYZ, и затем в LAB, и новое значение присваивается LAB ползункам.
    Для конвертации из LAB в RGB и наоборот в проекте не было кода.
    Требовалось выяснить, какие формулы отвечают за конвертацию и правильно запрограммировать. [Приложение 8]
    В ходе написания формул я столкнулась со следующей проблемой: конвертация из RGB в XYZ всегда дает валидные XYZ цвета, однако при конвертации XYZ в RGB могли появится отрицательные значения. Для того, чтобы это не происходило, я присваивала компонентам RGB цвета 0, если их значения оказывались меньше 0.
    Скрыть кнопку добавление новой компоненты, если все возможные
    компоненты уже добавлены.

    10
    Все виджеты, доступные для создания в редакторе, содержат компоненты, позволяющие менять свойства виджета. У каждого виджета имеется ограниченное число компонент. Все компоненты отображаются в окне
    «Inspector». Для добавления компоненты имеется поле с кнопкой «Add component». [Приложение 9]. После того, как все компоненты добавлены, кнопка добавления компоненты остается видимой. Для более понятного интерфейса было лучше сделать эту кнопку невидимой. Для выполнения этой задачи требовалось выяснить, какая часть кода отвечает за команду «Add
    Component» и где добавляется поле с кнопкой добавления. [Приложение 10]
    Запретить удаление вершин в Distortion Mesh.
    Если число вершин меньше, чем минимально возможное число вершин, то происходит ошибка программы. Для предотвращения этого требовалось убрать возможность удаления вершин. Для выполнения задачи нужно было проанализировать код и выяснить, какая часть программы отвечает за удаление вершин.
    Убрать из интерфейса поле добавления компонент, если добавлять
    нечего.
    После того, как все компоненты добавлены, кнопка добавления компонент остается ненужной и висит в меню. Более уместно было полностью убрать кнопку в этом случае. Если число компонент равно 0, то кнопка добавления компонент становится невидимой.
    Добавить обозначения для отступов в окне инспектор.
    Для изменения отступов от границ у объекта на сцене имеется компонента
    Padding, которая состояит из четырех изменяемых полей. Одно из них содержит значение для верхнего отступа, второе для нижнего, остальные для левого и правого. Но на тот момент было не очевидно, за какой именно отступ отвечает то или иное поле. Требовалось подписать эти поля буквами TBLR соответственно. [Приложение 11]

    11
    1.4 Тестирование
    Компания имеет отдел тестирования, который занимается проверкой работоспособности реализуемых решений и оценкой качества кода сотрудников. Весь написанный код был протестирован, были получены замечания и доработки по техническому заданию и по качеству кода. Все правки по задачам были выполнены.
    1.5 Трудности
    Во время выполнения задач я столкнулась со следующими трудностями:

    Было сложно ориентироваться в большом проекте;

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

    12
    Заключение
    В результате работы были выполнены все предложенные задачи, которые помогли улучшить интерфейс реадктора сцен движка и сделать работу разработчиков намного удобнее. Так же были исправлены некоторые ошибки, мешающие работе программистов.
    Помимо этого я получила дополнительные знания по языку C#, изучила и применила на практике такие классы как Task и Enumerator. Также стала уверенее ориентироваться в большом проекте, узнала о новых инструментах в
    Visual Studio для поиска в проекте, научилась писать более читаемый код.
    Укрепила свои знания и навыки по работе с системой контроля версий Git и с системой трекинга задач Jira.

    13
    Список источников
    1. CIELAB color space [Электронный ресурс]: Википедия. Свободная энциклопедия. URL: https://en.wikipedia.org/wiki/CIELAB_color_space;
    2. HSV (цветовая модель) [Электронный ресурс]: Википедия. Свободная энциклопедия. URL: https://en.wikipedia.org/wiki/
    HSV_(цветовая_модель);
    3. RGB [Электронный ресурс]: Википедия. Свободная энциклопедия. URL: https://en.wikipedia.org/wiki/
    RGB;
    4. Color math and programming code examples [Электронный ресурс]:
    EasyRGB. URL: http://www.easyrgb.com/en/math.php;
    5. Task
    Class
    [Электронный ресурс]:
    Microsoft.
    URL: https://docs.microsoft.com/en- us/dotnet/api/system.threading.tasks.task?view=net-5.0
    ;
    6. CIE 1931 color space [Электронный ресурс]: Википедия. Свободная энциклопедия. URL: https://en.wikipedia.org/wiki/CIE_1931_color_space

    14
    Приложения
    Приложение 1. Контекстное меню с кнопкой «Cut»
    Приложение 2. Настройки редактора с checkbox для блокировки панелей
    Приложение 3. Меню с кнопкой для блокировки панелей

    15
    Приложение 4. Изначальный вид компоненты выбора цвета
    Приложение 5. Пример выбора цвета из Paint.Net
    Приложение 6. Шкала цветов Hue

    16
    Приложение 7. Шкала цветов для a и b осей в CIELAB
    Приложение 8. Компонент выбора цвета с RGB, LAB и HSV ползунками

    17
    Приложение 9. Поле с кнопкой для добавления компоненты
    Приложение 10. Скрытое поле с кнопкой добавления компоненты
    Приложение 11. Поля для изменения отступов с подписями
    Все художественные материалы, программа прохождения практики, а так
    же материалы использованные для создания анимаций предоставлены
    компанией Game Forest, являются их авторской и интеллектуальной
    собственностью и защищены дополнительным договором

    Задание на производственную практику
    студентке
    Савченко Валентине Вячеславовне группы Б8118-
    01.03.02систпро
    (фамилия, имя, отчество) на тему «Доработка движка»
    Вопросы, подлежащие разработке (исследованию):
    Изучить работу и структуру движка, выполнить задачи по улучшению UI и исправлению ошибок
    Основные источники информации и другие материалы, используемые для разработки темы
    Документация компании по движку «Citrus»
    Дата выдачи задания «19» июля 2021 г.
    Руководитель _доцент, к.т.н. ____________ ____Боровик А.И._____
    (должность, уч.степень)
    (подпись)
    (и.о.ф)
    Задание получила
    ___________ ____В.В. Савченко__
    (подпись)
    (и.о.ф)

    Дневник студента
    (заполняется ежедневно)
    Дата
    Рабочее место
    Краткое содержание выполняемых работ
    Отметки руководителя
    19.07
    Game Forest
    1. Клонирование репозитория проекта
    2. Изучение структуры движка
    3. Отправление задачи на ревью: добавление кнопки «cut» для компонент
    4. Изучение кода и работа над новой задачей: добавление кнопки на окно с настройками проекта для запрета модификации размеров и положений панелей и окон
    20.07
    Game Forest
    1. Продолжение работы над вчерашней задачей
    2. Внесение правок в задаче с кнопкой «cut»
    3. Изучение работы с гитом, исправление истории коммитов
    4. Начало работы над новой задачей: удаление предустановленных расширений экранов и внесение недостающих расширений в настройки пустого проекта
    5. Отправка на ревью задачи с запретом модификации окон и панелей
    21.07
    Game Forest
    1. Доработка задачи с расширениями и отправка на ревью
    2. Исправление замечаний и доработка задачи с модификацией окон и панелей и отправка на ревью
    3. Продолжение изучения работы движка
    22.07
    Game Forest
    1. Исправление бага в задаче с расширениями: если расширения не добавлены разработчиком, то при выборе расширения
    происходит краш программы.
    Отправка на ревью
    2. Получение новой задачи: улучшение вкладки с выбором цветов – добавление HSV, LAB и
    RGB ползунков, кнопок, по нажатию на каждую появляется отдельный компонент для изменение цвета – HSV колесо, alpha ползунок или один из новых ползунков, вместо треугольника, разворачивающего вкладку с
    HSV колесом и alpha ползунком
    3. Изучение цветового простарнства CIELAB
    4. Добавление кнопок по заданию
    23.07
    Game Forest
    1. Работа над добавлением ползунков, изучение кода, обдумывание архитектуры
    26.07
    Game Forest
    1. Доработка задачи с запретом модификации окон. Добавление ещё одной кнопки для блокировки модификации окон и панелей на панель меню.
    Отправка на ревью
    2. Продолжение работы над lab,
    RGB и
    HSV ползунками.
    Добавлены ползунки с кареткой без текстуры
    27.07
    Game Forest
    1. Исправление замечаний в задаче с панелями и окнами, отправка на ревью
    2. Добавление текстуры на ползунки
    3. Продолжение изучения CIELAB, поиск формулы для конвертации
    RGB и LAB
    28.07
    Game Forest
    1. Поиск ошибки в коде
    2. Исправление текстуры
    LAB ползунков
    3. Изучение
    CIEXYZ для конвертации LAB и RGB
    29.07
    Game Forest
    1. Продолжение работы над ползунками, поиск ошибок в
    изменении цветов на слайдерах и их значений
    2. Получение новой задачи: запрет на удаление вершин в меше
    3. Изучение кода для выполнения задачи
    4. Отправка кода задачи на запрет удаления вершин на ревью
    30.07
    Game Forest
    1. Получение новой задачи: скрытие кнопки добавления новой компоненты, если все возможные компоненты уже добавлены
    2. Отправка кода на ревью
    3. Получение новой задачи: добавление подписей для редактирования отступов
    4. Отправка кода на ревью
    31.07
    Game Forest
    1. Подведение итогов практики
    2. Написание отчета
    Студент ____________________________________________В.В. Савченко
    _
    подпись
    Ф.И.О.
    Руководитель практики от ДВФУ _______________________ Боровик А.И
    _

    ЗАКЛЮЧЕНИЕ РУКОВОДИТЕЛЯ ПРАКТИКИ
    (в заключении указываются: охват работы, приобретенные навыки, качество,
    активность, дисциплина, общая оценка)
    За время прохождения практики студентка Савченко В. В. проявила себя как любознательная, внимательная, ответственная студентка. Самостоятельно изучала код и работу движка. Интересовалась мнением опытных разработчиков.
    Проявила знания отличного квалифицированного специалиста.
    Показала теоретические знания по программированию и практические.
    Внесла значительный вклад в доработку движка, выполнила все задачи.
    Соблюдала производственный режим и дисциплину работу. К порученным заданиям и поручениям относилась с прилежанием и ответственностью. Проявила инициативу при решении порученных задач.
    Прохождение производственной практики по доработке движка оценить
    «отлично».
    Дата _________
    Подпись ______________
    Подпись заверяю:
    ФИО, должность лица, заверившего подпись руководителя
    МП


    написать администратору сайта