Как мы оптимизировали свой Theme Hospital под разные платформы

Project Hospital — это игра об управлении зданием больницы со всеми стандартными аспектами жанра: динамическими сценами, создаваемыми игроком, множеством активных персонажей и объектов, развёрнутой системой UI. Чтобы заставить игру работать на разном оборудовании, нам пришлось приложить много усилий, и это стало отличным примером печально известной «смерти от тысячи порезов» — множества мелких шагов, решающих кучу очень специфических проблем и кучи времени, потраченного на профилирование.
Уровень производительности: чего мы хотели достичь
На раннем этапе разработки мы определились с основными параметрами: максимальной величиной сцен, уровнем производительности и системными требованиями.
Мы поставили перед собой задачу обеспечить поддержку не менее сотни активных и полностью анимированных персонажей на одном экране, трёх сотен активных персонажей суммарно, тайловых карт размером примерно 100×100 и до четырёх этажей в здании.
Мы твёрдо были уверены, что игра должна работать в 1080p с приличной частотой кадров даже на интегрированных графических картах, и саму по себе эту цель достичь было не так трудно: основным ограничивающим фактором является ЦП, особенно при увеличении объёмов больницы. Современные интегрированные видеокарты начинают испытывать проблемы только при разрешениях примерно от 2560 x 1440.
Чтобы упростить поддержку модов, бОльшая часть данных сделана открытой, то есть нам пришлось пожертвовать производительностью, достигаемой благодаря упаковке файлов, но это не оказало особо сильного влияния, за исключением чуть увеличившегося времени загрузки.
Графика
Project Hospital — это «классическая» изометрическая 2D-игра, поэтому можно понять, что всё отрисовывается сзади вперёд — в Unity это реализуется заданием соответствующих значений по оси Z (или расстояния до камеры) для отдельных графических объектов. По возможности не взаимодействующие друг с другом объекты упорядочиваются в слои, например, полы не зависят от объектов и персонажей.

Вся геометрия в изометрически рендерящейся сцене динамически создаётся на C#, поэтому одним из двух наиболее важных аспектов для производительности графики является частота перестроения геометрии. Второй аспект — это количество вызовов отрисовки (draw calls).
Вызовы отрисовки
Количество отрисовываемых в одном кадре отдельных объектов, вне зависимости от их простоты — это главное ограничение, особенно на слабом оборудовании (кроме того, сам движок Unity добавляет избыточное потребление ресурсов). Очевидным решением является группирование (батчинг) по возможности нескольких графических объектов в один вызов отрисовки. Так можно получить довольно интересные результаты, например, сгруппировать объекты, находящиеся на одинаковом расстоянии от камеры, чтобы вся остальная графика правильно рендерилась за или перед ними.

Вот немного цифр: на карте размером 96 x 96 тайлов теоретически можно разместить 9216 объектов, для чего потребуется 9216 вызовов отрисовки. После батчинга это число снижается до 192.
Однако в реальной жизни всё немного сложнее, потому что можно группировать только объекты с одинаковой текстурой, из-за чего результаты оказываются немного менее оптимальными, но система всё равно работает достаточно хорошо.

БОльшая часть батчинга выполняется вручную, чтобы иметь контроль за результатами. Кроме того, в крайнем случае мы также пользуемся динамическим батчингом Unity, но это палка о двух концах — он и в самом деле помогает снизить количество вызовов отрисовки, но приводит к излишней трате ресурсов в каждом кадре, а в некоторых случаях может быть непредсказуем. Например, два наложенных друг на друга спрайта на одинаковом расстоянии от камеры в разных кадрах могут рендериться в различном порядке, что вызывает мерцание, которого при батчинге вручную не появляется.
Многоэтажность
Игроки могут строить здания с несколькими этажами, и это повышает сложность, но, на удивление, помогает производительности. Рендерить и анимировать нужно только персонажей на активном этаже и на улице, а всё на других этажах больницы можно скрыть.
Шейдеры
В Project Hospital используются относительно простые самописные шейдеры с небольшими трюками, например, заменой цвета. Допустим, шейдер персонажа может заменять до пяти цветов (в зависимости от условий в коде шейдера), а потому довольно затратен, но это, похоже, не вызывает проблем, потому что персонажи редко занимают много места на экране. Шейдер оправдал вложенные в него усилия, потому что возможность использования бесконечного количества цветов одежды позволяет сильно повысить вариативность персонажей и окружения.
Кроме того, мы достаточно быстро научились избегать задания параметров шейдеров и вместо этого использовали по возможности цвета вершин.
Качество текстур
Интересный факт — в Project Hospital мы не используем никакого сжатия текстур: графика выполнена в векторном стиле, и на некоторых текстурах сжатие выглядит очень плохо.
Для экономии памяти ЦП в системах с менее 1 ГБ мы автоматически уменьшаем размер внутриигровых текстур до половинного разрешения (за исключением текстур интерфейса пользователя) — это можно понять, увидев в опциях параметр «texture quality: low». Для текстур UI сохраняется исходное разрешение.
Оптимизация производительности процессора — многопоточность
Хотя логика скриптов Unity по сути является однопоточной, мы всегда имеем возможность запустить несколько потоков непосредственно в C#. Возможно, такой подход не подойдёт для игровой логики, но часто существуют не критичные ко времени задачи, которые можно выполнять в отдельных потоках, организовав систему задач. В нашем случае потоки использовались для двух функций:
1. Задачи поиска пути, особенно на больших картах с запутанным расположением, могут занимать до сотен миллисекунд, поэтому это был основной кандидат на перенос из основного потока. Параллельные задачи учитывают количество аппаратных потоков машины.
2. Карты освещения тоже можно обновлять в отдельном потоке, но только по одному этажу за раз — это не критичная система, а автоматические лампы в комнатах гаснут с такой скоростью, для которой достаточно редкого обновления.
Анимации
Почти в самом начале разработки мы решили использовать двухмерную скелетную систему анимаций. Изучив различные современные программы анимации, мы в конечном итоге приняли решение модифицировать простую систему, созданную мной несколько лет назад (по сути в качестве хобби-проекта), подстроив её под нужды Project Hospital — она напоминает упрощённый Spine с прямой поддержкой создания вариаций персонажей. Аналогично Spine она использует исполняющую среду C#, что очевидно более затратно, чем нативный код, поэтому в процессе разработки мы провели пару циклов оптимизаций. К счастью, наши риги довольно просты, всего около 20 костей на персонажа.
Любопытный факт: самым полезным улучшением при оптимизации доступа к transform отдельных костей оказался переход от поиска по карте к простому индексированию массивов.

Кроме того, что персонажи не анимируются за пределами камеры, есть ещё один трюк: персонажей, скрытых за окнами основного UI, тоже анимировать не нужно. К сожалению, в финальной версии игры мы перешли к полупрозрачному UI, поэтому использовать его не удалось.
Кэширование
По возможности мы стараемся выполнять самые затратные вычисления только при изменениях, влияющих на их значения. Самый хороший пример этого — комнаты и лифты: когда игрок размещает лифт или строит стены, мы запускаем алгоритм заливки, помечающий тайлы, из которых доступны лифты и комнаты. Это ускоряет последующий поиск путей и может использоваться для того, чтобы показать игроку, какие из комнат пока недоступны.
Рассеянные и отложенные обновления
В некоторых случаях бывает логично выполнять определённые обновления только частично. Вот несколько примеров:
Некоторые обновления можно выполнять в каждом кадре только для части персонажей, например, скрипты поведения половины пациентов обновляются только в нечётных кадрах, а для второй половины — в чётных (хотя анимации и движение выполняются плавно).
В определённых состояниях, особенно когда персонажи находятся в режиме ожидания, но вызывают затратные части кода (например, сотрудники, проверяющие, что нужно заполнить и ищущие незанятое оборудование), операции выполняются только через определённые промежутки времени, допустим, раз в секунду.
Один из самых затратных, и в то же время распространённых вызовов — проверка того, какие анализы доступны для каждого пациента. При этом нужно оценить множество факторов — например, кто из персонала отделения в данный момент занят и какое оборудование зарезервировано. Кроме того, эта информация не является общей для всех пациентов, потому что на это влияют, например, назначенный им врач и их способность говорить. Необходимо проверять десятки доступных видов анализов, поэтому в одном кадре обновление выполняется только для некоторых, и продолжается в следующем.

Заключение
Оптимизация игры-менеджера со множеством взаимодействующих частей оказалась длительным процессом. Мне регулярно приходилось работать с профилировщиком Unity и устранять самые очевидные проблемы, это стало неотъемлемой частью процесса разработки.
Разумеется, всегда есть возможности для улучшения, но мы вполне довольны результатами. Игра справляется с поставленными нами задачами, а игроки постоянно создают для неё моды, значительно превышая исходное ограничение на количество персонажей.
Стоит также сказать о том, что даже по сравнению с некоторыми AAA-играми, над которыми я работал, в Project Hospital я встретился с самой сложной игровой логикой в своей практике, поэтому многие из проблем были специфичными именно для этого проекта. Тем не менее, я всё равно рекомендую оставлять в любом проекте достаточно времени для оптимизации в соответствии со сложностью игры.
Двухточечная больница: как вращать объекты
Есть несколько различных методов вращения объектов. Если вам посчастливилось разместить что-то в неправильном направлении, вы также можете поднять это обратно. После этого вы можете исправить поворот, чтобы он был правильным.
Ниже у нас есть краткое руководство, которое напомнит вам, как вращать объекты в Two Point Hospital. Пока у нас есть еще несколько руководств по игре.
Вращение в двухточечной больнице
Итак, есть два разных метода вращения предметов и мебели. Вы можете увидеть их обоих на изображении ниже, в диалоговом окне внизу экрана.
Первый способ — удерживать левую кнопку мыши. Удерживая его, переместите указатель мыши в том направлении, в котором должна располагаться мебель. Это может показаться немного неинтуитивным и сбивающим с толку, к счастью, есть альтернативный способ.
Вместо этого вы можете нажать клавишу Z или X. Если вам не нравятся эти привязки, вы можете перейти в настройки управления, нажав ESC. Оттуда вы можете выбрать свои собственные ключи и привязки.
Сочетания клавиш в приложении Project
Многие пользователи находят, что использование внешней клавиатуры с сочетаниями клавиш для Project помогает им работать эффективнее. Для пользователей с ограниченными возможностями или плохим зрением клавиши быстрого доступа могут быть более удобными, чем работа с сенсорным экраном или мышью.
Сочетания клавиш в этой статье соответствуют принятой в США раскладке клавиатуры. Сочетания клавиш для других раскладок клавиатуры могут отличаться от приведенных здесь.
Знак «плюс» (+) в сочетании клавиш означает, что одновременно необходимо нажать несколько клавиш.
Знак запятой (,) в сочетании клавиш означает, что необходимо нажимать несколько клавиш по порядку.
В этой статье описываются сочетания клавиш вProject 2010, Project 2013, Project 2016,Project 2019,Project 2021 и Project для Microsoft 365 наWindows Desktop.
Важно: Некоторые сочетания клавиш доступны только для подписчиков Project Online. Новые возможности становятся доступны подписчикам по мере выхода, поэтому в вашем приложении эти функции пока что могут отсутствовать.
Примечание: Чтобы быстро найти сочетание клавиш в этой статье, воспользуйтесь поиском. Нажмите CTRL+F, а затем введите слова поиска.
В этом разделе
Часто используемые сочетания клавиш
Открытие файла проекта (вывод диалогового окна Открыть)
Откройте файл проекта (откройте вкладку « Открыть» в меню «Файл «).
Сохранение файла проекта
Создание нового проекта
Активация строки ввода для изменения текста в поле
Активация строки меню
Активация меню управления проектом
ALT+Дефис (-) или ALT+ПРОБЕЛ
Перемещение в представлениях и окнах
Активация строки ввода для изменения текста в поле
Активация строки меню
Активация меню управления проектом
ALT+Дефис (-) или ALT+ПРОБЕЛ
Закрытие окна программы
Отображение всех отфильтрованных задач или ресурсов
Отображение диалогового окна Параметры поля
Открытие нового окна
Уменьшение выделения до одного поля
Включение сортировки по идентификатору и отключение группировки
Вывод сведений о задаче
Вывод сведений о ресурсе
Вывод сведений о назначении
Включение или отключение режима «Добавить в выделенный фрагмент»
Включение или отключение автовычисления
Включение или отключение режима «Расширить выделенный фрагмент»
В окне «Печать» перейдите влево, вправо, вверх или вниз, чтобы просмотреть различные страницы в области предварительного просмотра.
ALT+клавиши со стрелками
Использование главного окна
Используйте следующие сочетания клавиш для работы в главном окне Project 2013, Project 2016,Project 2019, Project 2021 и Project для Microsoft 365. Эти сочетания клавиш недоступны в Project 2010.
Переключение между активными диалогами и основным приложением.
Откройте контекстное меню для выбранного элемента (контекстное меню).
SHIFT+F10 или клавиша Windows меню
Активация разделителя представлений
Отображение раскрывающегося меню автофильтра для выбранного столбца.
Повторное применение текущего фильтра
Открытие объектного меню для выделенной ячейки
Использование представления «Планировщик группы»
Используйте следующие сочетания клавиш для работы в представлении «Планировщик групп» в Project 2013, Project 2016,Project 2019, Project 2021 и Microsoft 365. Эти сочетания клавиш недоступны в Project 2010.
Развертывание и свертывание сгруппированных строк или строк ресурсов
ALT+SHIFT+ЗНАК ПЛЮС (+) или ALT+SHIFT+ЗНАК МИНУС (-)
Прокрутка шкалы времени влево
Прокрутка шкалы времени вправо
Перенос запланированной задачи на другое время
CTRL+клавиши со стрелками
Откройте диалоговое окно сведений о задаче.
ВВОД при выделенной задаче
CTRL+СТРЕЛКА ВВЕРХ или СТРЕЛКА ВНИЗ
Использование представления временной шкалы
Используйте следующие сочетания клавиш для работы в представлении временной шкалы в Project 2013, Project 2016,Project 2019,Project 2021 и Project для Microsoft 365. Эти сочетания клавиш недоступны в Project 2010.
Перейдите по типам элементов ( панели задач, вехе, выноске и временной шкале), если один из них уже выбран.
TAB или СТРЕЛКА ВНИЗ
Циклически прокрутка типов элементов в обратном порядке — панель временной шкалы, выноска, веха, панель задач — если один из них уже выбран.
SHIFT+TAB или СТРЕЛКА ВВЕРХ
Переход к следующему или предыдущему элементу выбранного типа, например, к следующей вехе
СТРЕЛКА ВЛЕВО ИЛИ СТРЕЛКА ВПРАВО
Прокрутка шкалы времени влево
Прокрутка шкалы времени вправо
Перемещение элемента вверх или вниз по временной шкале или в соседний канал
CTRL+СТРЕЛКА ВВЕРХ или СТРЕЛКА ВНИЗ
Откройте диалоговое окно сведений о задаче.
Управление структурой проекта
ALT+SHIFT+дефис (-) или ALT+SHIFT+МИНУС на цифровой клавиатуре (-)
Понижение уровня выбранной задачи
ALT+SHIFT+ЗНАК РАВЕНСТВА (= ) или ALT+SHIFT+ПЛЮС на цифровой клавиатуре (+)
Отображение всех задач
ALT+SHIFT+Звездочка на цифровой клавиатуре (*)
Удаление отступа задачи.
Выделение и изменение в диалоговом окне
Перемещение между полями в нижней части формы
Клавиши со стрелками
Переход к таблицам в нижней части формы
Левая клавиша ALT+1 или справа ALT+2
Переход к следующей задаче или ресурсу
Переход к предыдущей задаче или ресурсу
Работа в представлении листа
Узнайте, как изменять, перемещать и выбирать элементы, а также использовать шкалу времени в представлении листа.
Изменение в представлении
Добавление новой задачи
Project 2010: недоступно.
Отмена ввода данных
Очистка или сброс выбранного поля
Копирование выделенных данных
Вырезание выделенных данных
Удаление выделенных данных
Удаление строки с выделенной ячейкой
CTRL+МИНУС на цифровой клавиатуре (-)
Отображение диалогового окна Поиск
CTRL+F или SHIFT+F5
Переход к следующему совпадению в результатах поиска в диалоговом окне Поиск
Используйте команду «Перейти » в меню «Правка «.
Вставка скопированных или вырезанных данных
Уменьшение выделения до одного поля
Отмена последнего действия
Разрыв связей задач
Задайте для задачи расписание вручную.
Задайте для задачи автоматическое расписание.
Перемещение в представлении
Переход в начало проекта (по шкале времени)
Переход в конец проекта (по шкале времени)
Перемещение по шкале времени влево
Перемещение по шкале времени вправо
Переход в первое поле строки
Клавиши HOME или CTRL+СТРЕЛКА ВЛЕВО
Переход в первую строку
Переход в первое поле первой строки
Переход в последнее поле строки
Клавиши END или CTRL+СТРЕЛКА ВПРАВО
Переход в последнее поле последней строки
Переход в последнюю строку
Перемещение в боковой панели
Переместите фокус между боковой панелью и представлением справа.
Project 2013, Project 2016, Project 2019, Project 2021 и Project для Microsoft 365: F6
Project 2010: CTRL+TAB или CTRL+SHIFT+TAB
Выберите различные элементы управления на боковой панели, если фокус находится на боковой панели.
Установите или снимите флажки и кнопки параметров, если фокус находится на боковой панели.
Выбор элементов в представлении
Расширение выделения вниз на одну страницу
Расширение выделения вверх на одну страницу
Расширение выделения вниз на одну строку
Расширение выделения вверх на одну строку
Расширение выделения до первого поля в строке
Расширение выделения до последнего поля в строке
Расширение выделения до начала содержимого
Расширение выделения до конца содержимого
Расширение выделения до первой строки
Расширение выделения до последней строки
Расширение выделения до первого поля в первой строке
Расширение выделения до последнего поля в последней строке
Выделение всех строк и столбцов
Переход в выделении вниз на одно поле
Переход в выделении вверх на одно поле
Переход в выделении вправо на одно поле
Переход в выделении влево на одно поле
Выделение и изменение в строке ввода
Отмена ввода данных
Удаление одного символа слева от курсора
Удалить один знак справа.
Удаление одного слова справа от курсора
Расширение выделения до конца текста
Расширение выделения до начала текста
Включение и отключение режима замены
Работа со шкалой времени
Перемещение по шкале времени влево на одну страницу
Перемещение по шкале времени вправо на одну страницу
Перемещение по шкале времени в начало проекта
Перемещение по шкале времени в конец проекта
Прокрутка шкалы времени влево
Прокрутка шкалы времени вправо
Уменьшение единиц времени
CTRL+Косая черта на цифровой клавиатуре (/)
Увеличение единиц времени
CTRL+Звездочка на цифровой клавиатуре (*)
Представление «Сетевой график»
Переход в другую рамку сетевого графика
Клавиши со стрелками
Добавление рамок сетевого графика к уже выделенным рамкам
SHIFT+клавиши со стрелками
Перемещение рамки сетевого графика
Примечание: Прежде всего необходимо настроить перемещение вручную. Выберите рамку, которую требуется переместить. Выберите «Формат«, а затем выберите » Макет». Выберите «Разрешить размещение полей вручную».
CTRL+клавиши со стрелками
Переход к самой верхней рамке сетевого графика в представлении или проекте
CTRL+HOME или SHIFT+CTRL+HOME
Переход к самой нижней рамке сетевого графика в представлении или проекте
CTRL+END или SHIFT+CTRL+END
Переход к самой левой рамке сетевого графика в представлении или проекте
HOME или SHIFT+HOME
Переход в самой правой рамке сетевого графика в представлении или проекте
END или SHIFT+END
Переход вверх на одну высоту окна
Страница вверх или SHIFT+PAGE UP
Переход вниз на одну высоту окна
Page down или SHIFT+Page down
Переход влево на одну ширину окна
CTRL+PAGE UP или SHIFT+CTRL+PAGE UP
Переход вправо на одну ширину окна
CTRL+PAGE DOWN или SHIFT+CTRL+PAGE DOWN
Переход к следующему полю в рамке сетевого графика
Ввод или ввод клавиши TAB
Переход к предыдущему полю в рамке сетевого графика
Использование объектов OfficeArt
Используйте следующие сочетания клавиш для работы с объектами OfficeArt в Project 2013, Project 2016, Project 2019, Project 2021 и Project для Microsoft 365. Эти сочетания клавиш недоступны в Project 2010.
Перемещение фигур OfficeArt
Сдвиг фигуры вверх, вниз, вправо или влево
Клавиши со стрелками
Увеличение ширины фигуры на 10%
Уменьшение ширины фигуры на 10%
Увеличение высоты фигуры на 10%
Уменьшение высоты фигуры на 10%
Увеличение ширины фигуры на 1%
Уменьшение ширины фигуры на 1%
Увеличение высоты фигуры на 1%
Уменьшение высоты фигуры на 1%
Поворот фигуры на 15 градусов вправо
Поворот фигуры на 15 градусов влево
Выделение и копирование объектов и текста OfficeArt
Выделение объекта (вместе с текстом внутри него)
Выбор объекта (с выделением объекта)
Клавиша TAB или SHIFT+TAB, пока не будет выбран нужный объект
Выделение текста внутри объекта (с выделением объекта)
Выделите несколько фигур.
Нажимайте и удерживайте клавишу CTRL при выделении фигур
Выделите несколько фигур с текстом.
Нажимайте и удерживайте клавишу SHIFT при выборе фигур
Вырезание выделенного объекта
Копирование выделенного объекта
Вставка вырезанного или скопированного объекта
Копирование только форматирования
Вставка только форматирования
Группирование фигур, рисунков или объектов WordArt
CTRL+G после выделения элементов, которые требуется сгруппировать
Разгруппирование фигур, рисунков или объектов WordArt
CTRL+SHIFT+G после выделения группы, которую требуется разгруппировать
Отмена последнего действия
Повторить последнее действие.
Добавьте следующий объект к выделению с несколькими объектами.
Добавьте следующее текстовое поле в выделение с несколькими объектами (позволяет выбрать текстовый элемент в текстовом поле).
Изменение текста и текстовых полей OfficeArt
Выделение всего текста
Удаление одного слова слева от курсора
Удаление одного слова справа от курсора
Отмена последнего действия.
Перемещение курсора влево на одно слово
Переместить курсор вправо на одно слово
Переход в начало строки
Переход в конец строки
Перемещение курсора вверх на один абзац
Перемещение курсора вниз на один абзац
Перемещение в начало текста объекта
Перемещение в конец текста объекта.
См. также
В этой статье описываются сочетания клавиш в Project в Интернете.
Project в Интернете является современной и рекомендуемой версией Project веб-средства для создания проектов и стратегий, отслеживания хода выполнения и управления задачами и назначениями.
Примечание: Чтобы быстро найти сочетание клавиш в этой статье, воспользуйтесь поиском. Нажмите CTRL+F, а затем введите слова поиска.
В этом разделе
Работа в представлении «Доска»
Когда фокус находится на контейнере в представлении « Доска», перетащите контейнер, чтобы переместить его влево или вправо.
CTRL+SHIFT+ЛЕВАЯ угловая скобка (<) или CTRL+SHIFT+ПРАВАЯ угловая скобка (>)
Работа в представлении «Сетка»
Разверните родительскую задачу, чтобы просмотреть дочерние задачи.
Shift+ALT+Plus (+) или SHIFT+ALT+Знак равенства (= )
Свернуть родительскую задачу, чтобы скрыть дочерние задачи.
SHIFT+ALT+МИНУС (-) или SHIFT+ALT+Подчеркивание (_)
Увеличение отступа задачи.
Уменьшение отступа задачи.
Выделите столбец текущей ячейки.
Выделите строку текущей ячейки.
Непрерывно выделите несколько строк.
SHIFT+ПРОБЕЛ+СТРЕЛКА ВВЕРХ или СТРЕЛКА ВНИЗ
Откройте контекстное меню (контекстное меню).
Переместите фокус из ячейки вправо, влево, вверх или вниз.
Стрелка вправо, влево, вверх или вниз
Прокрутите страницу, чтобы отобразить нижнюю или верхнюю строку.
Page down или Page up
Переместите фокус на первую или последнюю ячейку в строке с фокусом.
Переместите фокус на первую или последнюю ячейку в первой или последней строке.
CTRL+HOME или CTRL+END
Расширите выделение на одну ячейку справа, слева, вниз или вверх.
SHIFT+СТРЕЛКА ВПРАВО, ВЛЕВО, ВНИЗ или СТРЕЛКА ВВЕРХ
Откройте сведения о задаче.
Клавиша TAB для задачи, а затем ALT+I
Использование ярлыков быстрых действий
Повторно активировать задачу.
Пометка задачи как завершенной.
Отображение сведений о задаче.
Откройте контекстное меню задачи.
Отмена последнего действия
Повторить последнее действие.
Работа в представлении временной шкалы
Переместите фокус на разделитель.
Переместите разделитель, когда фокус находится на разделитете.
CTRL+СТРЕЛКА ВЛЕВО или СТРЕЛКА ВПРАВО
Откройте сведения о задаче.
Клавиша TAB для задачи, а затем ввод
См. также
В этой статье описываются сочетания клавиш в Project Online.
Project Online — это классическая веб-версия Project, веб-средство для управления несколькими проектами, отслеживания хода выполнения и балансировки потребностей в ресурсах. Чтобы получить доступ к современной и рекомендуемой версии в Интернете, перейдите к Project веб-сайта.
Чтобы быстро найти сочетание клавиш в этой статье, воспользуйтесь поиском. Нажмите CTRL+F, а затем введите слова поиска.
В этом разделе
Навигация с помощью клавиш
В следующей таблице перечислены сочетания клавиш для перемещения в Project Online:
Переместите выделение между ссылками на верхней панели ссылок.
Переместите выбор из одной веб-части в следующую веб-часть на страницах, использующих несколько веб-частей.
Разверните раскрывающиеся списки.
Использование элементов управления сеткой
Project Online, веб-клиент Microsoft Project Server 2019, использует элементы управления сетки AJAX и HTML для отображения различных фрагментов информации. На некоторых страницах в Project Web App для просмотра и редактирования информации используется таблица HTML. Например, на странице «Задачи » используется сетка на основе таблиц HTML. В htmL-сетках можно использовать следующие сочетания клавиш:
Перейдите к следующей ячейке или строке.
Клавиша стрелки вправо или клавиша TAB
Перейдите к предыдущей ячейке или строке.
Клавиша СТРЕЛКА ВЛЕВО или SHIFT+TAB
Клавиша СТРЕЛКА ВВЕРХ
Клавиша СТРЕЛКА ВНИЗ или ВВОД
Перейдите по URL-адресу в выбранной ячейке.
Переход к заголовку ячейки.
Удалите фокус из выделенной ячейки.
Перейдите к последней ячейке или строке.
Перейдите к первой ячейке или строке.
Переключение выделения строки.
Развертывание раскрывающегося меню в заголовке ячейки
Разверните или свернуть группирование.
Разверните или свернуть элемент сетки с дочерними элементами.
Откройте раскрывающийся список.
Project Online также использует элементы управления сеткой AJAX для просмотра и редактирования информации. Например, на странице Project сведений используется сетка AJAX. В сетках AJAX можно использовать следующие сочетания клавиш:
Активация режима редактирования для ячейки.
Вверх на одну страницу.
Вниз на одну страницу.
Отступ для выбранной задачи.
Отступ для выбранной задачи.
Отмена записи или изменение.
Удаление выделенных данных
Delete, CTRL+V или CTRL+Z
Переход в первое поле строки
Переход в первую строку
Переход в последнее поле строки
Переход в последнее поле последней строки
Если на странице есть две сетки, можно использовать клавишу F6 для перемещения фокуса из одной ячейки сетки в соответствующую строку другой сетки. При наличии исходной сетки и целевой сетки можно использовать следующие сочетания клавиш:
Переместите выбранные элементы из исходного списка в целевой список.
Клавиша доступа+одна правая угловая скобка (>)
Переместите все элементы из исходного списка в целевой список.
Переместите все элементы из целевого объекта в исходный список.
Переместите выбранный элемент из целевого объекта в исходный список.
Клавиша доступа+одна левая угловая скобка (<)
Установите флажки под флажком «Имя ресурса».
Доступ к календарю в ячейке таблицы.
ALT+СТРЕЛКА ВНИЗ (например, дата начала или дата окончания)
Используйте следующие сочетания клавиш для навигации по календарю:
Перейдите к следующему месяцу.
ALT+Одна правая угловая скобка (>)
Перейдите к предыдущему месяцу.
ALT+Одна левая угловая скобка (<)
Используйте следующие сочетания клавиш для ключей доступа к буферу элементов:
Одна правая угловая скобка (>)
Двойная правая угловая скобка (>>)
Двойная левая угловая скобка (<<)
Одна левая угловая скобка (<)
Приведенные ниже сочетания клавиш можно использовать в серверных Параметры.
Удаление отчетного периода времени.
Удаление классификации строк.
Удаление подключенного SharePoint сайта.
Удаление Enterprise или таблицы подстановки.
Удаление Enterprise календаря.
Приведенные ниже сочетания клавиш можно использовать в разделе «Внешний вид и функции« Параметры > «Управление заданиями представлений«.
Удаление выбранного представления.
Скопируйте выбранное представление.
Дополнительные сведения
Техническая поддержка пользователей с ограниченными возможностями
Корпорация Майкрософт стремится к тому, чтобы все наши клиенты получали наилучшие продукты и обслуживание. Если у вас ограниченные возможности или вас интересуют вопросы, связанные со специальными возможностями, обратитесь в службу Microsoft Disability Answer Desk для получения технической поддержки. Специалисты Microsoft Disability Answer Desk знакомы со многими популярными специальными возможностями и могут оказывать поддержку на английском, испанском, французском языках, а также на американском жестовом языке. Перейдите на сайт Microsoft Disability Answer Desk, чтобы узнать контактные сведения для вашего региона.
Если вы представитель государственного учреждения или коммерческой организации, обратитесь в службу Disability Answer Desk для предприятий.