Это статья для новичков в геймдеве. Для тех, кто хочет сделать игру, но не знает с чего начать.
Я постараюсь, по шагам, объяснить весь процесс от желания до релиза. Погнали!
Кто я такой?
Я гейм-дизайнер с 10-летним стажем. Работал в многих компаниях, например в Playgendary. Делал разное: и казуалки для мобилок, и танковый шутер для PC.
Теперь я инди-разработчик. Живу за счёт продажи своих игр. Выпустили 4 игры для PC и Консолей. Сейчас разрабатываю игру They Are Here: Alien Abduction Horror — хоррор от 1-го лица, про похищение пришельцами.
Шаг 1. Запасись энтузиазмом
Энтузиазм — это топливо, которое ты сжигаешь при разработке. Оно позволит тебе делать игру после работы, когда устал, когда хочется отдохнуть.
Как пополнять запас энтузиазма? Смотри документалки, читай истории успеха разработчиков. Это мотивирует!
Смотри по сторонам: на другие игры, фильмы, кино, на новые технологии. Желание изучить что-то новое или сделать что-то похожее — это то, что нужно.
Шаг 2. Собери команду или сделай всё сам!
Одному — проще. Проще придумать идею и принимать решения. Не надо спорить и описывать задачи. Сделать игру одному — возможно. Я например сделал 4 игры один.
С командой — лучше. Лучше получается качество. Твои решения критикуются, и результат улучшается. Можно распределить обязанности и сделать игру быстрее. Последнюю игру я делаю в команде со своей женой. Она отвечает за историю, критикует мои решения, помогает с артом, ищет стримеров.
Короче – есть команда, круто! Нет команды — делай всё сам, это не трудно.
Шаг 3. Сформулируй цель разработки
Очень важно понять — для чего тебе всё это?
Ну например:
1. Трудоустройство в геймдев компанию.
Продукт — портфолио. Приоритет – качество исполнения.
Вопросы: На какую должность хотим устроиться? В какую компанию(и)? Какими играми занимается компания(и)? Чему нужно научиться?
2. Научиться делать игры, освоить навык.
Продукт — опытный образец. Приоритет- новые знания.
Вопросы: Какой навык освоить? Как сделать какую-то конкретную штуку?
3. Рассказать о чём то важном.
Продукт — манифест. Приоритет – донести идею до масс.
Вопросы: Поймут ли мою идею? Как сделать продукт более массовым?
4. Сделать игру о которой мечтал.
Продукт — мечта. Приоритет — воплотить своё видение.
Вопросы: Что я хочу видеть? Чем можно пренебречь? Как закончить проект?
5. Построить свой бизнес.
Продукт — актив. Приоритет – получить доход.
Вопросы: Какие игры лучше продаются? Сколько времени займет разработка? Как сократить это время?
Цель может быть не одна. Цели могут меняться от игры к игре.
Короче – ты должен ответить на вопрос — зачем я делаю эту игру?
Шаг 4. Вспомни, что ты умеешь или любишь
Например, я и моя жена — фанаты фильмов ужасов про пришельцев. Типа «Знаки», «Мрачные небеса», «Секретные материалы». Поэтому нам проще работать над идеями и сценарием для They Are Here
А может, ты на досуге рисуешь анимешных девочек. А твой друг изучает программирование искусственного интеллекта. Значит вам будет проще сделать игру про девушек, которые будут чатиться с игроком, словно живые.
Короче – твои умения и увлечения — это твои преимущества. Учитывай их при выборе платформы, движка, жанра игры. А пока, просто подумай над этим.
Шаг 5. Выбери платформу
Если просто, то есть 2 пути: Мобилки или ПК + Консоли.
Исходя из целей и умений нужно будет выбрать что-то одно. Это разные платформы, с разными играми, аудиторией и монетизацией.
Путь 1. Мобики
Аудитория:
- Массовая аудитория. Дети, пенсионеры, скучающие продавщицы. Это не геймеры. Всё должно быть очень понятно и просто.
- Играют по 1 — 5 минут. В перерывах, в очередях, на работе. Чтобы «убить время».
- Ценится простая яркая графика.
- Упор на простой, но залипательный кор-геймплей.
Плюсы:
- Некоторые жанры (головоломки, аркады) — наиболее просты в разработке. Можно сделать небольшой прототип (1-5 уровней) и показать его работодателю, например.
- Не требуется красивая или сложная графика. Главное — чтобы было понятно.
- Простой геймплей и гейм-дизайн.
- Будет плюсом, если сам привык к мобильным девайсам и играм.
Минусы:
- Очень. Высокая. конкуренция. Игр миллионы и почти все они — бесплатные. Игроки приходят только с рекламы. Нет рекламы — нет игроков. Нет денег.
- Монетизация. Нужно встраивать рекламу или внутри-игровые покупки в игру. Знать куда и как. Тестировать чтобы всё это работало.
- Аналитика. Нужно понимать что такое LTV. Почему он должен быть > чем CPI. Встраивать аналитику в игру.
- Будь готов делать по 20 прототипов или улучшать продукт, пока LTV не станет > CPI.
- Заработать денег небольшой команде, можно только с издателем. Я лично не знаю других путей.
Короче – мобилки, это огромный супер-маркет. На полке лежит то, что окупает рекламу. Это конкуренция рекламных бюджетов. Если хочешь заработать на мобилках, то советую делать гипер-казуалки и работать с издателем.
Если пофиг на доход — классная, лёгкая платформа.
Если решишься, узнай подробнее про:
- Гипер-казуальные игры (всё по теме гейм-дизайна и производства).
- Как найти издателя гипер-казуальных игр.
- Казуальная графика.
- Low-poly графика.
- Казуальные игроки (сложность казуальных игр и туториалы).
- Аналитика мобильных игр (CPI, LTV, Retention).
- Монетизация мобильных игр.
- Оптимизация мобильных игр.
- Google Play и App Store. Регистрация аккаунта разработчика. Правила и рекомендации. SEO.
- Рекламные медиаторы и сети (Iron Source, AdMob и т.п.).
- Сервисы рыночной аналитики мобильных игр (Sensor Tower, App Annie).
Путь 2. ПК + Консоли
Аудитория:
- Хардкорные геймеры.
- Играют по несколько часов. Дома. Чтобы погрузиться в игру.
- Ценится реалистичная или стильная графика.
- Упор на интересную историю или глубокий геймплей.
Плюсы:
- Меньше конкуренция, чем на мобилках. Особенно на консолях.
- Легче получить игроков и отзывы.
- Можно хорошо заработать портировав игру на консоли, с помощью издателя.
- Не надо возится с аналитикой и монетизацией.
- С детства понятная платформа (ПК / Консоль) и аудитория (Геймеры).
- Аудитория любит авторские, творческие, интересные игры.
- Будет плюсом, если сам играешь на компе или приставке.
Минусы:
- Плохо заходят простенькие игры (головоломки, аркады). Геймеры хотят получить опыт, вжиться в роль. Залипнуть надолго. Игра не должна выглядеть как что-то на пару минут.
- Игры дольше в производстве. Но можно хитрить — делать маленькие игры, которые выглядят как большие, а также использовать готовые ассеты.
- Нужно поработать над интересной идеей. Найти отличительные черты (USP), которые выделят проект.
- Нужно продумать интересную историю или геймплей.
- Более сложный геймдизайн.
- Большая требовательность к качеству графики.
Короче – ПК, а особенно Консоли это элитный бутик. На полке лежит то, что пользуется спросом. Это конкуренция качества. Если хочешь заработать, то сделай интересную игру, и обязательно портируй её на консоли (через издателя). Подумай как сэкономить на производстве!
Если решишься, узнай подробнее про:
- Геймдизайн компьютерных игр.
- Нарратив, сторителлинг.
- Как питчить игры.
- Фичи игры / USP.
- Что такое вертикальный срез.
- Steam. Регистрация аккаунта разработчика. Оформление страницы. Тэги. Правила и рекомендации.
- Маркетинг и продвижение инди-игр на Steam (рекомендую http://howtomarketagame.com/) Как сделать крутой постер, трейлер, скриншоты, ГИФки.
- Портирование игр на консоли.
- Издатели игр на консолях.
- Конкурсы и фестивали инди-игр.
- Работа с инфлюенсерами (ютуберами, стримерами).
- Реалистичная графика.
- Стилизованная графика.
- Сервисы аналитики тэгов и жанров (SteamDB, Steamspy, SteamCharts, Game Data Crunch).
- Сервисы рассылки ключей (Keymailer, Woovit)
Шаг 6. Узнай про геймдизайн и производство игр
Интересуйся тем Как делают игры (классный подкаст в твои наушники)
Рекомендую погуглить про:
- Игровые механики, жанры и сеттинги.
- Геймдизайн. Есть книга Джесси Шелла, она хорошая, но большая. Можешь гуглить про конкретный жанр.
- Кор-геймплей и Мета-геймплей.
- Левел-дизайн. Лучше гуглить про отдельный жанр.
- Пользовательский интерфейс (UI) в играх.
- Ассеты и маркетплейсы.
Короче – сперва узнай поверхностно о всех непонятных терминах. Глубже изучай только то, что нужно будет для разработки конкретно твоей игры.
Шаг 7. Выбери движок и глянь уроки
Движок — это программа, в которой собирается игра. Это большой кухонный комбайн, в котором есть всё. Там программируется логика, собираются уровни, выставляется освещение, настраивается анимация, создаются материалы, вставляются звуки и т.п.
Про выбор движка написано много статей — погугли.
Если ты один, и не знаешь языков программирования, рекомендую Unreal Engine 4.
- Там есть Blueprints — это визуальное программирование. Это проще чем писать код.
- Красивый рендер «из коробки».
- Есть большой маркетплейс с гововыми ассетами
- Это популярный коммерчесский движок, на котором сделано очень много игр.
- Можно сделать игру под все платформы. Можно встроить рекламу, инапы, аналитику.
- Много уровков. Рекомендую Unreal Engine Rus
- Классный интерфейс.
- Куча встроенных функций.
- Бесплатный до ляма баксов дохода.
Перед началом работы над игрой, сделай пару очень простых подделок «в стол».
Сделай змейку, пинг-понг и т.п. Пофиг на качество, пофиг на геймдизайн. Главное — попрактиковаться «на кошках», пощупать функции движка.
В движке будет работать вся команда — поэтому каждый должен изучить его, хотя-бы поверхностно. Вы должны понимать друг друга, а еще помогать программисту собирать игру.
Короче – почитай про выбор движка. Потрать время на его изучие.
Шаг 8. Выбери жанр
Жанр — это твоя ниша. Жанр — это очень важно. Есть жанры, в которые никто не играет. А для некоторых нужно изучить много дополнительного материала.
Лучше выбрать жанр который:
- Популярен на платформе. Игры этого жанра часто покупают или скачивают. Используй сайты для аналитики жанров.
- Не слишком сложен в производстве. мморпг — не твой выбор.
- Нравится тебе или команде. Ты разбираешься в нём или много играл в детстве.
Как только ты определилися с жанром — гугли всё по производству игр в этом жанре. Геймдизайн, графика, уровни, звуки. На что сделать акцент?
Поиграй в лучшие игры в этом жанре. Посмотри видео об этом жанре.
Короче – выбери жанр и узнай про него всё что можешь!
Шаг 9. Придумай идею, концепцию, USP
Идея — ядро твоей игры. Зерно, из которого вырастет проект.
Какая идея хорошая?
- Понятная. Должна быть понятна каждому. Например, твоей маме.
- Интересная. Уже хочется поиграть в это! Люди любят риск и новый опыт, который хотят, но не могут пережить в реальной жизни. Например GTA — это симулятор крутого парня, которым все хотят быть, но не могут.
- Популярная. Это не артхаус, не что-то странное или специфичное. Идея обращается к понятным образам из жизни или массовой культуры.
- Выделяющаяся. Такого раньше не было. Или было, но давно. Или в другом жанре. Или в другом стиле. Или плохо сделано.
Что поможет тебе в выборе идеи?
- Каталог игр на твоей платформе. Смотри что популярно. Думай как это изменить, подать под другим углом. Хмм…игра про постройку железной дороги в топе. А что если, мы играем за машиниста?
- Сайты-сервисы с аналитикой тэгов и жанров на платформе. Можно отследить популярность жанра, количество игр в нем. Можно скрестить отдельные тэги между собой.
- Массовая культура. Фильмы, книги, комиксы, короткометражки, гифки, картинки из интернета.
Скорее всего у тебя будет рождаться много идей. Записывай их. Дай полежать. А потом выбери ту, что не даёт тебе покоя и кажется лучшей.
Про питч
Идея может казаться масштабной. Но она должна умещаться в Питч, чтобы быть понятной игрокам, прессе и твоей маме.
На основе Питча, описываем концепт игры. Более развернутое описание игры на одну страничку. За кого мы играем? В чем цель? Что можно делать? Какие эмоции вызываем?
Про USP
Продумай ключевые фичи — USP, которые будут продавать твой проект. Они вытекают из твоей идеи.
Например, идея Панка — издевательство над массовой культурой и модой.
Ключевые фичи (USP) Панка: вызывающее поведение, агрессивная музыка и странные прически.
Показывай свои USP везде — в трейлере, скриншотах, постере, описании игры. Говори про них общении с прессой и издателями.Тычь ими в лицо!
Например, у They Are Here — это пришельцы, кукурузные поля как фильме Знаки, и НЛО.
Кароче – почитай про идею, концепцию, питч, USP игры. Сформулируй чёткое видение твоего проекта и доноси это видение до всех. Без него — всё развалится и поплывет.
Шаг 10. Составь список ассетов и задач
Ассеты — это кирпичики, из которых состоят игры.
Составь список того, что нужно сделать. Хотя-бы крупными мазками. Сделать уровнь, найти музыку, вставить персонажа. А еще надо 20 видов мечей.
Оцени время, а потом умножь его на 2. Даже если тебе кажется это глупым. Умножь его в 2 раза!
Если видишь, что проект большой — отрезай всё ненужное. Ненужное — всё, что не показывает идею. Или редко появляется на экране.
Например, если идея игры — ультра-насилие, то можно не делать 20 видов мечей, а лучше проработать физику расчленения тела.
Прикинь, что для мобильных гипер-казуалок нужно сделать минимум 30 минут геймплея. А для ПК и Консолей, лучше сделать игру на 2 часа. Если можешь больше — круто!
Настоятельно рекомендую!
Покупай и используй готовые ассеты. Это лучший способ сократить время производства и не потерять качество. Это не стыдно, это нормально. Это вообще огонь!
Шаг 11. Организуй процесс
Записывай, всё что надо сделать. Каждую мелочь. Иначе — забудешь.
Ставь задачи. Себе и команде. Рекомендую Trello (проще) или Asana (функциональнее).
Cобирай инфу по проекту в одном месте. Можно юзать доски типа “Miro” или вики типа Notion.
Если ты один, или у вас небольшая команда, не парься над большой и красивой документацией. Лучше покажи пример, начерти схему, объясни на пальцах ЧЁ НАДО сделать.
Референс — лучшее описание задачи для художника! Например, я сказал жене — хочу обложку как у Слендера, но с пришельцем. Этого — достаточно!
Собирай и храни нужную инфу. Ссылки на классные статьи. Контакты возможных партнёров. Скриншоты багов. И т.п.
Шаг 12. Сделай демку
Демо-версия / Вертикальный срез / MVP — очень близкие по смыслу понятия. Это маленький кусочек игры финального качества.
Демо-версия решает множество задач:
- Поможет записать видео, скриншоты, гифки
- Покажет окупаемость мобильной игры
- Поможет устроиться на работу
- Ускорит набор вишлсистов в Steam
- Получит отзывы от игроков и стримеров
- Можно участвовать в фестивалях и конкурсах
- Только с ней можно найти издателя.
Короче – сделай демонстрационную версию игры. Это твоя визитная карточка. Показывай её всем. Говори — я сделаю так-же, только больше.
Шаг 13. Фигачь! Прорывайся к релизу!
Не буду вдаваться в подробности о релизе. Всё зависит от игры и платформы.
Лучше дам рекомендации как дожить до релиза:
- Не меняй идею на ходу. Сильно. По чуть-чуть можно.
- Не начинай другие проекты. Не распыляйся. Делай, что запланировал.
- Составь график работы. Работай над игрой постоянно. Хотя бы по 3 дня в неделю, по 2 часа в день. Больше — быстрее!
- Надоела разработка? Поиграй в похожие игры. Посмотри похожие фильмы. Найди, что было бы круто сделать.
- Всё равно надоела? Мечтай о релизе. Представь как это будет здорово и вечно!
- Показывай свою работу — пиши посты, пости гифки, давай поиграть стримерам. Твоя цель — получить позитивную обратную связь. Ну или отрицательную.
- Узнавай что-то новое про производство игр. Слушай подкасты, смотри доклады. Это мотивирует, помогает в производстве.
Спасибо, что дочитал!
Эта статья — вводная. Тебе много предстоит узнать и загуглить на каждом шаге.
Короче – ты можешь сделать это! Реально!
Информация воспринимается легче, если представлена наглядно. Один из способов презентации отчетов, планов, показателей и другого вида делового материала – графики и диаграммы. В аналитике это незаменимые инструменты.
Построить график в Excel по данным таблицы можно несколькими способами. Каждый из них обладает своими преимуществами и недостатками для конкретной ситуации. Рассмотрим все по порядку.
Простейший график изменений
График нужен тогда, когда необходимо показать изменения данных. Начнем с простейшей диаграммы для демонстрации событий в разные промежутки времени.
Допустим, у нас есть данные по чистой прибыли предприятия за 5 лет:
Год | Чистая прибыль* |
2010 | 13742 |
2011 | 11786 |
2012 | 6045 |
2013 | 7234 |
2014 | 15605 |
* Цифры условные, для учебных целей.
Заходим во вкладку «Вставка». Предлагается несколько типов диаграмм:
Выбираем «График». Во всплывающем окне – его вид. Когда наводишь курсор на тот или иной тип диаграммы, показывается подсказка: где лучше использовать этот график, для каких данных.
Выбрали – скопировали таблицу с данными – вставили в область диаграммы. Получается вот такой вариант:
Прямая горизонтальная (синяя) не нужна. Просто выделяем ее и удаляем. Так как у нас одна кривая – легенду (справа от графика) тоже убираем. Чтобы уточнить информацию, подписываем маркеры. На вкладке «Подписи данных» определяем местоположение цифр. В примере – справа.
Улучшим изображение – подпишем оси. «Макет» – «Название осей» – «Название основной горизонтальной (вертикальной) оси»:
Заголовок можно убрать, переместить в область графика, над ним. Изменить стиль, сделать заливку и т.д. Все манипуляции – на вкладке «Название диаграммы».
Вместо порядкового номера отчетного года нам нужен именно год. Выделяем значения горизонтальной оси. Правой кнопкой мыши – «Выбрать данные» – «Изменить подписи горизонтальной оси». В открывшейся вкладке выбрать диапазон. В таблице с данными – первый столбец. Как показано ниже на рисунке:
Можем оставить график в таком виде. А можем сделать заливку, поменять шрифт, переместить диаграмму на другой лист («Конструктор» – «Переместить диаграмму»).
График с двумя и более кривыми
Допустим, нам нужно показать не только чистую прибыль, но и стоимость активов. Данных стало больше:
Но принцип построения остался прежним. Только теперь есть смысл оставить легенду. Так как у нас 2 кривые.
Добавление второй оси
Как добавить вторую (дополнительную) ось? Когда единицы измерения одинаковы, пользуемся предложенной выше инструкцией. Если же нужно показать данные разных типов, понадобится вспомогательная ось.
Сначала строим график так, будто у нас одинаковые единицы измерения.
Выделяем ось, для которой хотим добавить вспомогательную. Правая кнопка мыши – «Формат ряда данных» – «Параметры ряда» – «По вспомогательной оси».
Нажимаем «Закрыть» – на графике появилась вторая ось, которая «подстроилась» под данные кривой.
Это один из способов. Есть и другой – изменение типа диаграммы.
Щелкаем правой кнопкой мыши по линии, для которой нужна дополнительная ось. Выбираем «Изменить тип диаграммы для ряда».
Определяемся с видом для второго ряда данных. В примере – линейчатая диаграмма.
Всего несколько нажатий – дополнительная ось для другого типа измерений готова.
Строим график функций в Excel
Вся работа состоит из двух этапов:
- Создание таблицы с данными.
- Построение графика.
Пример: y=x(√x – 2). Шаг – 0,3.
Составляем таблицу. Первый столбец – значения Х. Используем формулы. Значение первой ячейки – 1. Второй: = (имя первой ячейки) + 0,3. Выделяем правый нижний угол ячейки с формулой – тянем вниз столько, сколько нужно.
В столбце У прописываем формулу для расчета функции. В нашем примере: =A2*(КОРЕНЬ(A2)-2). Нажимаем «Ввод». Excel посчитал значение. «Размножаем» формулу по всему столбцу (потянув за правый нижний угол ячейки). Таблица с данными готова.
Переходим на новый лист (можно остаться и на этом – поставить курсор в свободную ячейку). «Вставка» – «Диаграмма» – «Точечная». Выбираем понравившийся тип. Щелкаем по области диаграммы правой кнопкой мыши – «Выбрать данные».
Выделяем значения Х (первый столбец). И нажимаем «Добавить». Открывается окно «Изменение ряда». Задаем имя ряда – функция. Значения Х – первый столбец таблицы с данными. Значения У – второй.
Жмем ОК и любуемся результатом.
С осью У все в порядке. На оси Х нет значений. Проставлены только номера точек. Это нужно исправить. Необходимо подписать оси графика в excel. Правая кнопка мыши – «Выбрать данные» – «Изменить подписи горизонтальной оси». И выделяем диапазон с нужными значениями (в таблице с данными). График становится таким, каким должен быть.
Наложение и комбинирование графиков
Построить два графика в Excel не представляет никакой сложности. Совместим на одном поле два графика функций в Excel. Добавим к предыдущей Z=X(√x – 3). Таблица с данными:
Выделяем данные и вставляем в поле диаграммы. Если что-то не так (не те названия рядов, неправильно отразились цифры на оси), редактируем через вкладку «Выбрать данные».
А вот наши 2 графика функций в одном поле.
Графики зависимости
Данные одного столбца (строки) зависят от данных другого столбца (строки).
Построить график зависимости одного столбца от другого в Excel можно так:
Условия: А = f (E); В = f (E); С = f (E); D = f (E).
Выбираем тип диаграммы. Точечная. С гладкими кривыми и маркерами.
Выбор данных – «Добавить». Имя ряда – А. Значения Х – значения А. Значения У – значения Е. Снова «Добавить». Имя ряда – В. Значения Х – данные в столбце В. Значения У – данные в столбце Е. И по такому принципу всю таблицу.
Скачать все примеры графиков
Готовые примеры графиков и диаграмм в Excel скачать:
Скачать шаблоны и дашборды с диаграммами для отчетов в Excel.
Как сделать шаблон, дашборд, диаграмму или график для создания красивого отчета удобного для визуального анализа в Excel? Выбирайте примеры диаграмм с графиками для интерактивной визуализации данных с умных таблиц Excel и используйте их для быстрого принятия правильных решений. Бесплатно скачивайте готовые шаблоны динамических диаграмм для использования их в дашбордах, отчетах или презентациях.
Точно так же можно строить кольцевые и линейчатые диаграммы, гистограммы, пузырьковые, биржевые и т.д. Возможности Excel разнообразны. Вполне достаточно, чтобы наглядно изобразить разные типы данных.
Прежде чем мы начнём программировать что-то полезное на Python, давайте закодим что-нибудь интересное. Например, свою игру, где нужно не дать шарику упасть, типа Арканоида. Вы, скорее всего, играли в детстве во что-то подобное, поэтому освоиться будет просто.
Логика игры
Есть игровое поле — простой прямоугольник с твёрдыми границами. Когда шарик касается стенки или потолка, он отскакивает в другую сторону. Если он упадёт на пол — вы проиграли. Чтобы этого не случилось, внизу вдоль пола летает платформа, а вы ей управляете с помощью стрелок. Ваша задача — подставлять платформу под шарик как можно дольше. За каждое удачное спасение шарика вы получаете одно очко.
Алгоритм
Чтобы реализовать такую логику игры, нужно предусмотреть такие сценарии поведения:
- игра начинается;
- шарик начинает двигаться;
- если нажаты стрелки влево или вправо — двигаем платформу;
- если шарик коснулся стенок, потолка или платформы — делаем отскок;
- если шарик коснулся платформы — увеличиваем счёт на единицу;
- если шарик упал на пол — выводим сообщение и заканчиваем игру.
Хитрость в том, что всё это происходит параллельно и независимо друг от друга. То есть пока шарик летает, мы вполне можем двигать платформу, а можем и оставить её на месте. И когда шарик отскакивает от стен, это тоже не мешает другим объектам двигаться и взаимодействовать между собой.
Получается, что нам нужно определить три класса — платформу, сам шарик и счёт, и определить, как они реагируют на действия друг друга. Поле нам самим определять не нужно — для этого есть уже готовая библиотека. А потом в этих классах мы пропишем методы — они как раз и будут отвечать за поведение наших объектов.
Весь кайф в том, что мы всё это задаём один раз, а потом объекты сами разбираются, как им реагировать друг на друга и что делать в разных ситуациях. Мы не прописываем жёстко весь алгоритм, а задаём правила игры — а для этого классы подходят просто идеально.
По коням, пишем на Python
Для этого проекта вам потребуется установить и запустить среду Python. Как это сделать — читайте в нашей статье.
Начало программы
Чтобы у нас появилась графика в игре, используем библиотеку Tkinter. Она входит в набор стандартных библиотек Python и позволяет рисовать простейшие объекты — линии, прямоугольники, круги и красить их в разные цвета. Такой простой Paint, только для Python.
Чтобы создать окно, где будет видна графика, используют класс Tk(). Он просто делает окно, но без содержимого. Чтобы появилось содержимое, создают холст — видимую часть окна. Именно на нём мы будем рисовать нашу игру. За холст отвечает класс Canvas(), поэтому нам нужно будет создать свой объект из этого класса и дальше уже работать с этим объектом.
Если мы принудительно не ограничим скорость платформы, то она будет перемещаться мгновенно, ведь компьютер считает очень быстро и моментально передвинет её к другому краю. Поэтому мы будем искусственно ограничивать время движения, а для этого нам понадобится модуль Time — он тоже стандартный.
Последнее, что нам глобально нужно, — задавать случайным образом начальное положение шарика и платформы, чтобы было интереснее играть. За это отвечает модуль Random — он помогает генерировать случайные числа и перемешивать данные.
Запишем всё это в виде кода на Python:
# подключаем графическую библиотеку
from tkinter import *
# подключаем модули, которые отвечают за время и случайные числа
import time
import random
# создаём новый объект — окно с игровым полем. В нашем случае переменная окна называется tk, и мы его сделали из класса Tk() — он есть в графической библиотеке
tk = Tk()
# делаем заголовок окна — Games с помощью свойства объекта title
tk.title('Game')
# запрещаем менять размеры окна, для этого используем свойство resizable
tk.resizable(0, 0)
# помещаем наше игровое окно выше остальных окон на компьютере, чтобы другие окна не могли его заслонить
tk.wm_attributes('-topmost', 1)
# создаём новый холст — 400 на 500 пикселей, где и будем рисовать игру
canvas = Canvas(tk, width=500, height=400, highlightthickness=0)
# говорим холсту, что у каждого видимого элемента будут свои отдельные координаты
canvas.pack()
# обновляем окно с холстом
tk.update()
Мы подключили все нужные библиотеки, сделали и настроили игровое поле. Теперь займёмся классами.
Шарик
Сначала проговорим словами, что нам нужно от шарика. Он должен уметь:
- задавать своё начальное положение и направление движение;
- понимать, когда он коснулся платформы;
- рисовать сам себя и понимать, когда нужно отрисовать себя в новом положении (например, после отскока от стены).
Этого достаточно, чтобы шарик жил своей жизнью и умел взаимодействовать с окружающей средой. При этом нужно не забыть о том, что каждый класс должен содержать конструктор — код, который отвечает за создание нового объекта. Без этого сделать шарик не получится. Запишем это на Python:
# Описываем класс Ball, который будет отвечать за шарик
class Ball:
# конструктор — он вызывается в момент создания нового объекта на основе этого класса
def __init__(self, canvas, paddle, score, color):
# задаём параметры объекта, которые нам передают в скобках в момент создания
self.canvas = canvas
self.paddle = paddle
self.score = score
# цвет нужен был для того, чтобы мы им закрасили весь шарик
# здесь появляется новое свойство id, в котором хранится внутреннее название шарика
# а ещё командой create_oval мы создаём круг радиусом 15 пикселей и закрашиваем нужным цветом
self.id = canvas.create_oval(10,10, 25, 25, fill=color)
# помещаем шарик в точку с координатами 245,100
self.canvas.move(self.id, 245, 100)
# задаём список возможных направлений для старта
starts = [-2, -1, 1, 2]
# перемешиваем его
random.shuffle(starts)
# выбираем первый из перемешанного — это будет вектор движения шарика
self.x = starts[0]
# в самом начале он всегда падает вниз, поэтому уменьшаем значение по оси y
self.y = -2
# шарик узнаёт свою высоту и ширину
self.canvas_height = self.canvas.winfo_height()
self.canvas_width = self.canvas.winfo_width()
# свойство, которое отвечает за то, достиг шарик дна или нет. Пока не достиг, значение будет False
self.hit_bottom = False
# обрабатываем касание платформы, для этого получаем 4 координаты шарика в переменной pos (левая верхняя и правая нижняя точки)
def hit_paddle(self, pos):
# получаем кординаты платформы через объект paddle (платформа)
paddle_pos = self.canvas.coords(self.paddle.id)
# если координаты касания совпадают с координатами платформы
if pos[2] >= paddle_pos[0] and pos[0] <= paddle_pos[2]:
if pos[3] >= paddle_pos[1] and pos[3] <= paddle_pos[3]:
# увеличиваем счёт (обработчик этого события будет описан ниже)
self.score.hit()
# возвращаем метку о том, что мы успешно коснулись
return True
# возвращаем False — касания не было
return False
# обрабатываем отрисовку шарика
def draw(self):
# передвигаем шарик на заданные координаты x и y
self.canvas.move(self.id, self.x, self.y)
# запоминаем новые координаты шарика
pos = self.canvas.coords(self.id)
# если шарик падает сверху
if pos[1] <= 0:
# задаём падение на следующем шаге = 2
self.y = 2
# если шарик правым нижним углом коснулся дна
if pos[3] >= self.canvas_height:
# помечаем это в отдельной переменной
self.hit_bottom = True
# выводим сообщение и количество очков
canvas.create_text(250, 120, text='Вы проиграли', font=('Courier', 30), fill='red')
# если было касание платформы
if self.hit_paddle(pos) == True:
# отправляем шарик наверх
self.y = -2
# если коснулись левой стенки
if pos[0] <= 0:
# движемся вправо
self.x = 2
# если коснулись правой стенки
if pos[2] >= self.canvas_width:
# движемся влево
self.x = -2
Платформа
Сделаем то же самое для платформы — сначала опишем её поведение словами, а потом переведём в код. Итак, вот что должна уметь платформа:
- двигаться влево или вправо в зависимости от нажатой стрелки;
- понимать, когда игра началась и можно двигаться.
А вот как это будет в виде кода:
# Описываем класс Paddle, который отвечает за платформы
class Paddle:
# конструктор
def __init__(self, canvas, color):
# canvas означает, что платформа будет нарисована на нашем изначальном холсте
self.canvas = canvas
# создаём прямоугольную платформу 10 на 100 пикселей, закрашиваем выбранным цветом и получаем её внутреннее имя
self.id = canvas.create_rectangle(0, 0, 100, 10, fill=color)
# задаём список возможных стартовых положений платформы
start_1 = [40, 60, 90, 120, 150, 180, 200]
# перемешиваем их
random.shuffle(start_1)
# выбираем первое из перемешанных
self.starting_point_x = start_1[0]
# перемещаем платформу в стартовое положение
self.canvas.move(self.id, self.starting_point_x, 300)
# пока платформа никуда не движется, поэтому изменений по оси х нет
self.x = 0
# платформа узнаёт свою ширину
self.canvas_width = self.canvas.winfo_width()
# задаём обработчик нажатий
# если нажата стрелка вправо — выполняется метод turn_right()
self.canvas.bind_all('<KeyPress-Right>', self.turn_right)
# если стрелка влево — turn_left()
self.canvas.bind_all('<KeyPress-Left>', self.turn_left)
# пока игра не началась, поэтому ждём
self.started = False
# как только игрок нажмёт Enter — всё стартует
self.canvas.bind_all('<KeyPress-Return>', self.start_game)
# движемся вправо
def turn_right(self, event):
# будем смещаться правее на 2 пикселя по оси х
self.x = 2
# движемся влево
def turn_left(self, event):
# будем смещаться левее на 2 пикселя по оси х
self.x = -2
# игра начинается
def start_game(self, event):
# меняем значение переменной, которая отвечает за старт
self.started = True
# метод, который отвечает за движение платформы
def draw(self):
# сдвигаем нашу платформу на заданное количество пикселей
self.canvas.move(self.id, self.x, 0)
# получаем координаты холста
pos = self.canvas.coords(self.id)
# если мы упёрлись в левую границу
if pos[0] <= 0:
# останавливаемся
self.x = 0
# если упёрлись в правую границу
elif pos[2] >= self.canvas_width:
# останавливаемся
self.x = 0
Счёт
Можно было не выделять счёт в отдельный класс и каждый раз обрабатывать вручную. Но здесь реально проще сделать класс, задать нужные методы, чтобы они сами потом разобрались, что и когда делать.
От счёта нам нужно только одно (кроме конструктора) — чтобы он правильно реагировал на касание платформы, увеличивал число очков и выводил их на экран:
# Описываем класс Score, который отвечает за отображение счетов
class Score:
# конструктор
def __init__(self, canvas, color):
# в самом начале счёт равен нулю
self.score = 0
# будем использовать наш холст
self.canvas = canvas
# создаём надпись, которая показывает текущий счёт, делаем его нужно цвета и запоминаем внутреннее имя этой надписи
self.id = canvas.create_text(450, 10, text=self.score, font=('Courier', 15), fill=color)
# обрабатываем касание платформы
def hit(self):
# увеличиваем счёт на единицу
self.score += 1
# пишем новое значение счёта
self.canvas.itemconfig(self.id, text=self.score)
Игра
У нас всё готово для того, чтобы написать саму игру. Мы уже провели необходимую подготовку всех элементов, и нам остаётся только создать конкретные объекты шарика, платформы и счёта и сказать им, в каком порядке мы будем что делать.
Смысл игры в том, чтобы не уронить шарик. Пока этого не произошло — всё движется, но как только шарик упал — нужно показать сообщение о конце игры и остановить программу.
Посмотрите, как лаконично выглядит код непосредственно самой игры:
# создаём объект — зелёный счёт
score = Score(canvas, 'green')
# создаём объект — белую платформу
paddle = Paddle(canvas, 'White')
# создаём объект — красный шарик
ball = Ball(canvas, paddle, score, 'red')
# пока шарик не коснулся дна
while not ball.hit_bottom:
# если игра началась и платформа может двигаться
if paddle.started == True:
# двигаем шарик
ball.draw()
# двигаем платформу
paddle.draw()
# обновляем наше игровое поле, чтобы всё, что нужно, закончило рисоваться
tk.update_idletasks()
# обновляем игровое поле, и смотрим за тем, чтобы всё, что должно было быть сделано — было сделано
tk.update()
# замираем на одну сотую секунды, чтобы движение элементов выглядело плавно
time.sleep(0.01)
# если программа дошла досюда, значит, шарик коснулся дна. Ждём 3 секунды, пока игрок прочитает финальную надпись, и завершаем игру
time.sleep(3)
# подключаем графическую библиотеку
from tkinter import *
# подключаем модули, которые отвечают за время и случайные числа
import time
import random
# создаём новый объект — окно с игровым полем. В нашем случае переменная окна называется tk, и мы его сделали из класса Tk() — он есть в графической библиотеке
tk = Tk()
# делаем заголовок окна — Games с помощью свойства объекта title
tk.title('Game')
# запрещаем менять размеры окна, для этого используем свойство resizable
tk.resizable(0, 0)
# помещаем наше игровое окно выше остальных окон на компьютере, чтобы другие окна не могли его заслонить. Попробуйте 🙂
tk.wm_attributes('-topmost', 1)
# создаём новый холст — 400 на 500 пикселей, где и будем рисовать игру
canvas = Canvas(tk, width=500, height=400, highlightthickness=0)
# говорим холсту, что у каждого видимого элемента будут свои отдельные координаты
canvas.pack()
# обновляем окно с холстом
tk.update()
# Описываем класс Ball, который будет отвечать за шарик
class Ball:
# конструктор — он вызывается в момент создания нового объекта на основе этого класса
def __init__(self, canvas, paddle, score, color):
# задаём параметры объекта, которые нам передают в скобках в момент создания
self.canvas = canvas
self.paddle = paddle
self.score = score
# цвет нужен был для того, чтобы мы им закрасили весь шарик
# здесь появляется новое свойство id, в котором хранится внутреннее название шарика
# а ещё командой create_oval мы создаём круг радиусом 15 пикселей и закрашиваем нужным цветом
self.id = canvas.create_oval(10,10, 25, 25, fill=color)
# помещаем шарик в точку с координатами 245,100
self.canvas.move(self.id, 245, 100)
# задаём список возможных направлений для старта
starts = [-2, -1, 1, 2]
# перемешиваем его
random.shuffle(starts)
# выбираем первый из перемешанного — это будет вектор движения шарика
self.x = starts[0]
# в самом начале он всегда падает вниз, поэтому уменьшаем значение по оси y
self.y = -2
# шарик узнаёт свою высоту и ширину
self.canvas_height = self.canvas.winfo_height()
self.canvas_width = self.canvas.winfo_width()
# свойство, которое отвечает за то, достиг шарик дна или нет. Пока не достиг, значение будет False
self.hit_bottom = False
# обрабатываем касание платформы, для этого получаем 4 координаты шарика в переменной pos (левая верхняя и правая нижняя точки)
def hit_paddle(self, pos):
# получаем кординаты платформы через объект paddle (платформа)
paddle_pos = self.canvas.coords(self.paddle.id)
# если координаты касания совпадают с координатами платформы
if pos[2] >= paddle_pos[0] and pos[0] <= paddle_pos[2]:
if pos[3] >= paddle_pos[1] and pos[3] <= paddle_pos[3]:
# увеличиваем счёт (обработчик этого события будет описан ниже)
self.score.hit()
# возвращаем метку о том, что мы успешно коснулись
return True
# возвращаем False — касания не было
return False
# метод, который отвечает за движение шарика
def draw(self):
# передвигаем шарик на заданный вектор x и y
self.canvas.move(self.id, self.x, self.y)
# запоминаем новые координаты шарика
pos = self.canvas.coords(self.id)
# если шарик падает сверху
if pos[1] <= 0:
# задаём падение на следующем шаге = 2
self.y = 2
# если шарик правым нижним углом коснулся дна
if pos[3] >= self.canvas_height:
# помечаем это в отдельной переменной
self.hit_bottom = True
# выводим сообщение и количество очков
canvas.create_text(250, 120, text='Вы проиграли', font=('Courier', 30), fill='red')
# если было касание платформы
if self.hit_paddle(pos) == True:
# отправляем шарик наверх
self.y = -2
# если коснулись левой стенки
if pos[0] <= 0:
# движемся вправо
self.x = 2
# если коснулись правой стенки
if pos[2] >= self.canvas_width:
# движемся влево
self.x = -2
# Описываем класс Paddle, который отвечает за платформы
class Paddle:
# конструктор
def __init__(self, canvas, color):
# canvas означает, что платформа будет нарисована на нашем изначальном холсте
self.canvas = canvas
# создаём прямоугольную платформу 10 на 100 пикселей, закрашиваем выбранным цветом и получаем её внутреннее имя
self.id = canvas.create_rectangle(0, 0, 100, 10, fill=color)
# задаём список возможных стартовых положений платформы
start_1 = [40, 60, 90, 120, 150, 180, 200]
# перемешиваем их
random.shuffle(start_1)
# выбираем первое из перемешанных
self.starting_point_x = start_1[0]
# перемещаем платформу в стартовое положение
self.canvas.move(self.id, self.starting_point_x, 300)
# пока платформа никуда не движется, поэтому изменений по оси х нет
self.x = 0
# платформа узнаёт свою ширину
self.canvas_width = self.canvas.winfo_width()
# задаём обработчик нажатий
# если нажата стрелка вправо — выполняется метод turn_right()
self.canvas.bind_all('<KeyPress-Right>', self.turn_right)
# если стрелка влево — turn_left()
self.canvas.bind_all('<KeyPress-Left>', self.turn_left)
# пока платформа не двигается, поэтому ждём
self.started = False
# как только игрок нажмёт Enter — всё стартует
self.canvas.bind_all('<KeyPress-Return>', self.start_game)
# движемся вправо
def turn_right(self, event):
# будем смещаться правее на 2 пикселя по оси х
self.x = 2
# движемся влево
def turn_left(self, event):
# будем смещаться левее на 2 пикселя по оси х
self.x = -2
# игра начинается
def start_game(self, event):
# меняем значение переменной, которая отвечает за старт движения платформы
self.started = True
# метод, который отвечает за движение платформы
def draw(self):
# сдвигаем нашу платформу на заданное количество пикселей
self.canvas.move(self.id, self.x, 0)
# получаем координаты холста
pos = self.canvas.coords(self.id)
# если мы упёрлись в левую границу
if pos[0] <= 0:
# останавливаемся
self.x = 0
# если упёрлись в правую границу
elif pos[2] >= self.canvas_width:
# останавливаемся
self.x = 0
# Описываем класс Score, который отвечает за отображение счетов
class Score:
# конструктор
def __init__(self, canvas, color):
# в самом начале счёт равен нулю
self.score = 0
# будем использовать наш холст
self.canvas = canvas
# создаём надпись, которая показывает текущий счёт, делаем его нужно цвета и запоминаем внутреннее имя этой надписи
self.id = canvas.create_text(450, 10, text=self.score, font=('Courier', 15), fill=color)
# обрабатываем касание платформы
def hit(self):
# увеличиваем счёт на единицу
self.score += 1
# пишем новое значение счёта
self.canvas.itemconfig(self.id, text=self.score)
# создаём объект — зелёный счёт
score = Score(canvas, 'green')
# создаём объект — белую платформу
paddle = Paddle(canvas, 'White')
# создаём объект — красный шарик
ball = Ball(canvas, paddle, score, 'red')
# пока шарик не коснулся дна
while not ball.hit_bottom:
# если игра началась и платформа может двигаться
if paddle.started == True:
# двигаем шарик
ball.draw()
# двигаем платформу
paddle.draw()
# обновляем наше игровое поле, чтобы всё, что нужно, закончило рисоваться
tk.update_idletasks()
# обновляем игровое поле и смотрим за тем, чтобы всё, что должно было быть сделано — было сделано
tk.update()
# замираем на одну сотую секунды, чтобы движение элементов выглядело плавно
time.sleep(0.01)
# если программа дошла досюда, значит, шарик коснулся дна. Ждём 3 секунды, пока игрок прочитает финальную надпись, и завершаем игру
time.sleep(3)
Что дальше
На основе этого кода вы можете сделать свою модификацию игры:
- добавить второй шарик;
- раскрасить элементы в другой цвет;
- поменять размеры шарика; поменять скорость платформы;
- сделать всё это сразу;
- поменять логику программы на свою.
График работ — это документ, с помощью которого распределяется время труда и отдыха сотрудников в течение определенного периода для рационального использования трудовых ресурсов. Его применяют на непрерывных производствах, чтобы не превысить нормальную продолжительность отработанного месяца, квартала или года.
Что собой представляет график работ
Про режим или расписание работы обычно ведут речь в контексте статьи 103 ТК РФ, когда продолжительность производственного процесса превышает нормальную продолжительность трудовой деятельности (8 часов в течение дня и 40 часов в течение недели).
Возьмем металлургический комбинат, который функционирует круглосуточно.
Литейщикам или крановщикам прокатного стана необходимо постоянно обслуживать технологические процессы. И для них руководству придется подготовить график сменности, когда первая, вторая и третья смены, перекрывая друг друга, обеспечивают непрекращающийся технологический процесс изготовления продукции. Режим работодатель разрабатывает самостоятельно и утверждает локальным нормативным актом.
Но, к примеру, бухгалтеру нет смысла присутствовать на предприятии в течение 24 часов. Для него и остальных административных сотрудников устанавливают односменный режим — пятидневку с двумя фиксированными выходными.
Составлять регулярно график дежурств — прерогатива руководителей подразделений, которые обязаны планировать деятельность своих подчиненных и вести учет отработанного ими времени постоянно. Для этого разрешается распечатать шаблон графика дежурств на месяц и заполнить его вручную. Другой вариант — заполнять на компьютере в Excel или другой программе.
Для тех, кто работает на пятидневке или шесть дней в неделю, график не требуется, режим работы для таких сотрудников указывается в их трудовых договорах. Все, что необходимо работодателю, — это осуществлять учет их рабочего времени.
Какие бывают
В разговорах о том, какие бывают графики работы, встречаются следующие формулировки:
- скользящий;
- гибкий;
- индивидуальный;
- свободный и пр.
Однако все эти выражения относятся к учету рабочего времени, а не к сменному режиму деятельности, в том числе при трудоустройстве вахтовым методом. Таким образом, режим бывает:
- постоянным — при пятидневной или шестидневной рабочей неделе с фиксированными или скользящими выходными днями;
- сменным — когда профессиональная деятельность осуществляется в очередности, установленной нормативным актом работодателя.
Чем сменный отличается от обычного
Обычный
Работник трудится в строго отведенное время: с понедельника по пятницу с девяти утра до шести вечера с перерывом на обед с 13:00 до 14:00 ч. В этом случае каждый день, каждый месяц и весь год работник приходит и уходит в одно и то же время. Для такой категории работников на предприятиях существуют готовые таблицы для заполнения графика работы в установленных временных рамках. Но подходит такое расписание только тем работодателям, у кого нет технологической и производственной необходимости выполнения задач за нормальными временными рамками. Как следствие, у организации отсутствует необходимость вести суммарный учет времени персонала, поскольку нормальная продолжительность рабочей недели сотрудников не превысит 40 часов, что соответствует требованиям законодательства.
Сменный
Чтобы понять, как сделать график работы на месяц в Excel (или любой другой программе), вспомните наш пример про металлургический комбинат. У работодателя в силу его производственных и технологических особенностей (непрерывное производство или оказание услуг населению) есть необходимость выполнять профессиональную деятельность либо круглосуточно, либо в течение времени, которое значительно превышает нормальную продолжительность (40 часов человек может отработать всего за несколько дней, а не за неделю), в связи с чем устанавливается сменность работников.
Для чего он нужен на предприятии
Законодательство обязывает работодателя:
- с одной стороны, создавать для всех сотрудников одинаковые условия труда;
- с другой стороны, исключить дискриминацию по любым признакам.
Этот документ позволяет одновременно обеспечить:
- нормальное функционирование предприятия (если технологические и иные условия этого требуют);
- соблюдение требований законодательства при превышении нормальной продолжительности рабочего времени.
Поэтому работодатель и организует поочередные смены: тот, кто трудился сегодня в утреннюю смену, завтра трудится в дневную, потом у человека выходной. Потом он пойдет в ночь и после этого опять получит выходной. Затем опять в день и т. д. Исключений нет ни для кого, кто занят в этом режиме. Вот пример, как выглядит график работы на месяц в виде таблицы с днями недели в Эксель для трехсменной работы.
Другой пример — режим работы в магазине, руководство которого установило сменный режим для четырех продавцов. Время работы объекта — с 9:00 до 21:00 ч, ночью магазин не работает.
Расчет времени работы
Чтобы рассчитать норму работы на определенное время, потребуется:
- Определить учетный период.
- Утвердить его нормативным актом, закрепить его в правилах внутреннего трудового распорядка.
- При расчете сменности каждому работнику необходимо отработать положенную норму часов и дней в соответствии с производственным календарем.
Графики сменности рассчитывают онлайн или в специальных программах (1С и др.). Главное, чтобы он существовал и работники были с ним ознакомлены.
За учетный период разрешено принимать один месяц, квартал, полугодие или год. Максимальная продолжительность этого периода — один год, а для персонала, трудящегося во вредных или опасных условиях, — три месяца.
Продолжительность рабочего времени в учетный период не должна отличаться от показателей, установленных производственным календарем.
Так, если за учетный период принимается один месяц, то работники, к примеру, в марте не должны работать больше:
- 175 часов при 40-часовой неделе;
- 157,4 часа при 36-часовой неделе;
- 104,6 часа при 24-часовой неделе.
Кроме того, количество рабочих дней в марте — не более 22, а количество выходных — не менее 9.
Потому рекомендуется брать период не меньше трех месяцев (одного квартала). Такой учетный период позволяет гибко регулировать деятельность подчиненных.
Например, при учетном периоде, равном одному кварталу (возьмем первый квартал 2022 года):
- 57 рабочих дней;
- 33 выходных и праздничных.
Рабочее время составляет при:
- 40-часовой неделе — 454 часа;
- 36-часовой неделе — 408,4 часа;
- 24-часовой неделе — 271,6 часа.
Поэтому если:
- в январе 2022 года работники трудились в рамках производственного календаря 16 дней и 128 часов;
- а в феврале персонал отработал 21 день и 167 часов, что больше, чем по норме, —
то в марте, чтобы выйти на расчетную норму рабочих дней и часов за учетный период, работодателю придется сократить рабочее время сотрудников на два рабочих дня и 16 рабочих часов.
Иначе придется платить работникам дополнительные деньги, и немалые.
Начинающим разобраться, как составить график дежурств на месяц в виде таблицы, несложно, поскольку это делается даже онлайн, при помощи Google Docs. Создав копию этого файла, вы сможете формировать смены в режиме реального времени.
На каждом отдельном предприятии утвержден собственный рабочий график. Для любой компании он определяется в индивидуальном порядке, в соответствии с характерными особенностями ее производственного процесса. Тем не менее существуют общепринятые требования к составлению расписания, которые мы рассмотрим далее, а также разберем, как правильно составить график работы.
Принципы составления рабочего распорядка
Основное правило, действующее при составлении графика – соблюдение правовых норм. Чтобы график соответствовал этим нормам, важно в процессе формирования расписания учитывать продолжительность трудового дня на предприятии. К примеру, если организация работает в одну смену, то продолжительность трудового дня должна быть максимально приближена к 8 часам, а также учитываться время на часовой обеденный перерыв. Кроме того, необходимо обращать внимание на род деятельности конкретного предприятия, особенности обслуживания посетителей и их суммарное количество. Трудовой график будет соответствовать требованиям правовых норм, регулирующим этот род деятельности только после анализа вышеуказанных аспектов. Изучая вопрос, как составить график работы, следует знать, что сделать это можно несколькими способами.
Виды рабочих распорядков
В трудовом законодательстве РФ существует несколько рабочих распорядков, регламентируемых установленными нормами внутреннего устройства или коллективным соглашением. График работ подразделяется на следующие типы:
- Работа в одну смену.
- Ненормированное расписание.
- Гибкое расписание.
- Сменный график.
- Вахтовый метод.
- Неполный рабочий день.
Что такое сменный график
Посменная работа – это такой распорядок, когда в разные дни график сотрудника может изменяться. Такая система необходима в организациях, работающих круглосуточно. К ним относятся:
- Скорая помощь.
- Полиция.
- Пожарная часть.
- МЧС.
- Супермаркеты.
- Круглосуточные кинотеатры.
- Заправочные станции.
- Кафе и прочие.
Кроме этого, составляют график работы 2/2 (сменный) часто для банковских учреждений. Здесь это нужно не для круглосуточной работы отделения, а для обслуживания клиентов по телефону (служба поддержки). Восьмичасовой рабочий день в этом случае накладывает на работников и управляющий состав некоторые неудобства, которые легко решаются путем введения сменного рабочего расписания. Как составить график работы по сменам, вы узнаете ниже.
В законодательной базе прописано, что в сутки должно непременно отрабатывать две смены, продолжительность работы каждой из которых не должна быть длиннее 12 часов. Тем не менее на практике довольно часто встречаются случаи, когда работает только одна смена на протяжении 24 часов.
Особенности посменного трудового расписания
В зависимости от рода деятельности организации, особенностей производственного процесса, социально-экономических моментов и согласования работы по коллективному соглашению, выделяется несколько вариантов смен:
1. Итак, рассмотрим первый вариант — как составить график работы по 12 часов? Такое расписание предполагает работу в две смены. Как правило, это дневная — с 8 утра до 8 вечера и ночная — с 8 вечера до 8 утра, смены по 12 часов.
2. Три смены с расписанием для 4 бригад. На фабриках, осуществляющих непрерывный цикл производства и большим штатом работников выгоднее всего составлять график работы сотрудников в три смены по 4 бригады, три из которых трудятся, а одна отдыхает. Чаще всего в таком графике разделение рабочего времени происходит по следующему принципу:
- 4 ночных выхода по 8 часов (с 11 вечера до 7 утра), далее 2 выходных дня.
- 4 дневных выхода (с 7 утра до 15.00), далее отдых.
- 4 вечерних выхода (с 15.00 до 23.00), после выходной.
3. Три смены на 5 бригад. В этом случае составить график работы сотрудников можно следующим образом:
- Два восьмичасовых рабочих дня с утра (8.00– 16.00), потом два выходных.
- Две восьмичасовые вечерние смены (с 16.00 до 24.00), сутки на отдых.
- Две ночные смены (с 0.00 до 08.00), три дня выходных.
4. А график работы 3/3 как составить? Здесь важно помнить, что длительность еженедельного непрерывного отдыха не может быть меньше 42 часов (статья 110 ТК РФ), а время рабочей смены не превышать отметки 12 часов.
5. Не знаете, как составить график работы на 4 человека? В этом случае можно воспользоваться распределением времени как во втором пункте, когда трое работают, а один человек отдыхает. Или использовать первый вариант – график работы 2/2: двое работают, двое отдыхают.
Ночная смена – это трудовая деятельность, осуществляемая сотрудником с 10 вечера до 6 утра. Продолжительность этой смены должна быть короче на один час, без необходимости доработки. Пункт регламентирован 96 статьей Трудового кодекса.
Кто не может трудиться в ночную смену
Есть некоторые категории работников, которых нельзя привлекать к работе в ночную смену:
- Беременные женщины.
- Лица, возраст которых менее 18 лет.
- Лица, которые не могут быть привлечены для работы в ночное время, в соответствии с отраслевой документацией и внутренними нормами.
Кроме этого, определены категории работников, которые могут быть задействованы в работе ночью только с их письменного согласия. К ним относятся:
- Женщины, у которых на руках дети до трех лет.
- Инвалиды.
- Лица, опекающие детей-инвалидов.
- Работники, осуществляющие уход за больными родственниками (этот факт должен быть подтвержден медицинской справкой).
- Матери-одиночки и опекуны, возраст ребенка которых менее 5 лет.
Наниматель вправе самостоятельно выбирать, как составлять график работы в соответствии со своими потребностями. При этом важно отметить, что оптимальным вариантом является график с работой в четыре смены. Работа в две смены не очень благоприятно сказывается на работоспособности сотрудников, а деятельность в три смены не позволяет максимально задействовать все ресурсы, поскольку человек не может войти в трудовой режим из-за постоянной перемены рабочего времени.
Законодательная база
Отношения между нанимателем и работником регулируются Трудовым кодексом, в том числе и составление сменных графиков работы, этот вопрос освещает статья 103.
Поскольку чаще всего рабочий режим по сменам обязует нанимателя формировать малочисленные группы внутри структурных подразделений, то оформляется коллективное соглашение, где прописываются интересы каждого сотрудника.
При заключении этого соглашения, наниматель обязан побеседовать с представителем органа, выступающего в интересах сотрудников, как правило, им является профсоюз. Наниматель обязан самостоятельно ознакомить работников с утвержденным вариантом договора за месяц до начала его действия.
Опираясь на Трудовой кодекс, можно отметить несколько моментов, которые должны быть непременно учтены при составлении коллективного соглашения:
- Один трудящийся не может работать подряд две смены.
- Каждый работник должен отдыхать не меньше 42 часов подряд в неделю.
- Суммарно количество трудовых часов не должно превышать отметки 40 в неделю.
- Перерывы в течение трудового дня.
Формирование графика
Не знаете, как составить график работы? Чтобы четко организовать рабочий процесс необходимо сделать официальное расписание по сменам. Оно должно содержать в себе следующую информацию:
- Сведения о составе смен.
- Время начала и окончания смены.
- График трудовой деятельности.
- Время на перерыв.
Определенного образца для формирования графика не установлено, поэтому он формируется уполномоченным лицом организации в свободной форме.
Что важно учитывать при составлении трудового графика
Однозначного ответа на этот вопрос нет, поскольку у каждой компании собственная специфика, соответственно сформировать определенный шаблон невозможно. При составлении рабочего расписания управляющий должен принимать во внимание все специфики работы, сильные и слабые стороны работников, и уже отталкиваясь от этой информации, формировать подходящий состав смен и устанавливать для них оптимальное время работы.
Самый незатейливый способ составление трудового расписания – пронумеровать смены. После этого объединить несколько фамилий сотрудников под один номер и установить для них рабочее время. Получается понятно и просто.
Особенности составления графика
При формировании рабочего расписания важно помнить следующие особенности:
- Перед праздничными днями продолжительность смены требуется сокращать на час.
- При равной оплате дневной и ночной смены, время последней должно быть сокращено на час.
- В расписание не включаются сверхурочные часы.
- Если на смену выпадает календарный выходной день, он все равно является рабочим. Предпраздничные и праздничные дни, выпадающие на календарные выходные, не переносятся.
- Праздничные дни оплачиваются по двойному тарифу.
- За работу в рабочий праздничный день сотрудник может попросить лишний день отдыха, тогда плата за смену производится по стандартной форме.
Введение рабочего расписания в действие
Как уже говорилось выше, для того чтобы ввести в работу новый трудовой график, необходимо составить коллективное соглашение. Расписание работ по сменам непременно должно быть регламентировано нормами внутреннего распорядка.
С графиком смен каждый сотрудник должен быть ознакомлен еще при приеме на работу, этот факт фиксируется в трудовом соглашении.
Чаще всего трудности появляются в процессе перехода на рабочее расписание по сменам. Об изменении графика работников требуется уведомлять в письменной форме не менее чем за 2 месяца. Если работа посменно негативно влияет на выполнении прочих обязанностей, то в трудовой договор должны быть внесены официальные изменения. Если сделать это невозможно, то по истечении двухмесячного срока работы по предыдущему расписанию, при нехватке места либо отказе работника, он может быть уволен.
В действие новый рабочий график чаще всего вводится локальным нормативным актом. Директором издается приказ или инструкция с указанием всей необходимой информации о работе смен. Каждый сотрудник обязан, ознакомится с документом, и дать свое письменное согласие.
Как исключить переработку
Предприятия, переходящие на новый рабочий режим, чаще всего меняют и порядок учета трудового времени, переходя со стандартной недельной нормы на суммированный учет. При этой схеме высчитать переработку можно следующим образом:
- Нанимателем определяется большой отчетный отрезок времени — месяц, квартал, а чаще всего именно в год (соответственно и составить график работы на год тоже необходимо заранее).
- Подсчитывается, какое количество смен может быть при доступном трудовом расписании.
- Сопоставляется количество смен с бригадами.
- Делаются актуальные выводы о переработке.
Пример
Итак, рассмотрим образец, как составить график работы, чтобы исключить переработки? При разборе самого популярного рабочего расписания «один через три» сотрудник за год отработает примерно 1974 часа. При делении этого показателя на 24 (часа в сутки) получается 82 смены в год. То есть 4 сотрудника, в соответствии с законодательством, могут отработать только 329 трудовых дня. Даже с учетом переработок, численность которых не может превышать 120 часов в год, сотрудники смогут отработать только 342 трудовых дня. Для того чтобы исключить переработки нужно будет привлечь 5 или 6 работников на производство.
Так выглядит суммарный учет рабочего времени. Выполнив несложные математические подсчеты, наниматель легко может понять укладываются ли его смены в трудовое расписание или нет. Кроме того, можно для этой цели использовать специальные программы, позволяющие выстраивать рабочие процессы. А также в них вы узнаете, как составить график работы на 3 человека, например, поскольку сделать это вручную достаточно сложно. С их помощью можно гораздо быстрее разобраться с составлением графика.
Заключение
Итак, в заключение можно сказать, что сотрудники, осуществляющие трудовую деятельность по сменному графику, обладают всеми правами, предусмотренными Трудовым кодексом. Среди них необходимо выделить следующее:
- Длительность непрерывного рабочего времени не может быть выше установленного законодательством.
- Количество часов на отдых работника за неделю регламентируется статьей 110 ТК РФ.
- Одному рабочему запрещается трудиться две смены подряд.
- Смена считается ночной, когда больше 50% ее времени приходится на отрезок времени с 10 вечера до 6 утра.
- В случае несогласования трудового расписания с профсоюзом либо нарушения принятого распорядка, его правомерность может быть оспорена в судебном порядке.
- При необходимости работать в праздничный день, сотрудник имеет право получить еще один день отдыха либо оплату труда по двойному тарифу.