Спецкурс Тессеракт
Основная информация
  Пункт Содержание
1 Направление Третий Путь
2 Класс 9 - 11
3 Тип курса зачётный только для 9-11-ти классников
4 Преподаватели Кузнецов Дмитрий, Моисеева Елизавета
5 Стажёры Нет
6 Время проведения Четверг 18:55 - 20:15
7 Цель курса Познакомить школьников с основами программирования и алгоритмами, на которых строятся компьютерные игры и симуляции
8 Задачи курса 1. Освоить базовые конструкции языка программирования Python
2. Изучить устройство компьютерных, а также цифровых вариантов настольных игр с точки зрения логики
3. Освоить библиотеку arcade и создание игровых прототипов с её помощью
9 Особенности курса Курс обучает многим аспектам программирования, которых нет в школьных курсах. Мы делаем акцент на функционале, который необходим для написания компьютерных игр и симуляций.
10 Формат проведения занятия (включая использование classroom) Занятия по Python проводятся в формате леминара. Занятия по теме конкретного алгоритма/игры проводятся в виде интерактивной лекции: описание идеи, лежащей в основе алгоритма, примеры использования, обсуждение программного кода, демонстрация работы. За участие в обсуждении темы на паре школьники получают баллы.
11 Целевая аудитория Школьники, желающие научиться базовым аспектам программирования, а также интересующиеся математическими моделями и компьютерными/настольными играми.
12 Краткое описание курса Курс программирования начального уровня о создании двухмерных компьютерных игр и симуляций на языке Python.
13 Количество слушателей от 10 до 20 человек
14 Отбор Школьникам предлагается вступительный тест на эрудицию в математике и информатике, а также анкетирование с целью узнать опыт учащихся в компьютерных играх. В случае, если на курс придёт много желающих, вступительный тест станет отборочным.
15 Формы контроля и
система отчётности
В обоих семестрах:
Посещаемость: 15%
Работа на семинаре: 20%
Домашние задания: 30%
Проект: 35%

Проектом в первом полугодии является написание простого симулятора эволюции. После занятия 08.12 будет проведена предварительная оценка работы. Защита проектов проводится на занятии 15.12, пересдача — на занятии 22.12.

Проект второго полугодия предполагает написание клеточного автомата "Жизнь". После занятия 13.04 будет проведена предварительная оценка работы. Защита проектов проводится на занятии 20.04, пересдача — на занятии 27.04.

Проекты выполняются в командах по 2-3 человека, но, при желании, ученик может делать проект в одиночку.
16 Формат курса: онлайн/оффлайн/гибрид. В случае онлайн, какие платформы используются? Курс проводится офлайн. В случае онлайн-обучения учащиеся будут подключаться к занятию в Discord и работать с языком программирования на своих домашних компьютерах.
20 Дополнительная информация о курсе На компьютерах ЭФ для программирования будет использоваться онлайн-компилятор repl.it, на котором можно писать необходимые базовые конструкции Python.
Для занятий в режиме онлайн, а также выполнения домашних заданий требуется домашний компьютер с 4 ГБ оперативной памяти и набор программ для использования языка Python.
В течение первой недели занятий учащиеся должны установить на свой компьютер Python 3.9 или выше и IDE PyCharm 2022.2 или выше. Необходимые инструкции для установки будут выложены в группе курса ВКонтакте и в Discord.
Позанятийный план
№ занятия Дата (Четверг) Тематический блок План занятия
1 06.10.2022 Введение Знакомство с учениками. Вступительный тест для на эрудицию в математике и информатике. Мини-лекция о содержании курса, демонстрация игр и симуляторов.
2 13.10.2022 Основы Python Начало знакомства с языком Python. Настройка среды для работы с Python. Переменные, оператор присваивания, математические и логические операторы, циклы.
3 20.10.2022 Основы Python Продолжаем знакомиться с Python. Кортежи, массивы, словари, множества.
4 27.10.2022 Основы Python Осваиваем более сложные понятия. Определение функций. Библиотеки os, math, random, time.
5 03.11.2022 Основы Python Укрепляем знания о Python. Системы координат. Практикум по предыдущим темам.
6 10.11.2022 Python Объектно-ориентированный подход в программировании. Классы, атрибуты и методы.
7 17.11.2022 Основы arcade Введение в arcade. Шаблон проекта. События клавиатуры и мыши. Рендер простой геометрии и шрифтов. Создаём "крестики-нолики".
8 24.11.2022 Основы arcade Работа со спрайтами. Поиск в интернете, обработка и рендеринг изображений. Дорабатываем крестики-нолики при помощи полученных знаний. 
9 01.12.2022 Разработка алгоритмов Алгоритмы, на которых строятся игры. Подготовка к написанию проекта простого симулятора "Чашка Петри"
10 08.12.2022 Разработка алгоритмов Разработка шахмат. Поведение фигур. Просчитывание компьютером возможных ходов. Игра вдвоём на одном компьютере. 
11 15.12.2022 Защита проектов Защита проектов по созданию симулятора.
12 22.12.2022 Чаепитие Пересдача и чаепитие.
  29.12.2022    
  05.01.2023    
  12.01.2023    
13 19.01.2023 Python Продолжаем изучать Python. Построение графиков функций и диаграмм при помощи mathplotlib.
14 26.01.2023 Алгоритмы и игры Алгоритмы поиска пути. Создание генератора уровней. Применение алгоритма Дейкстры для прохождения лабиринтов.
15 02.02.2023 Графика и рендеринг Вид сбоку или вид сверху? А может, изометрия? Квадраты или хексы? Графический дизайн 2D-игр. Виды графики в двухмерных играх. Движение камеры.
16 09.02.2023 Алгоритмы и игры Процедурная генерация. Как шум Перлина позволяет создавать бесконечные миры. Феномен rogue-like.
17 16.02.2023 Алгоритмы и игры Применение ООП при написании игр. Юниты, предметы и снаряды. Структурирование данных в файлах сохранения.
  23.02.2023    
18 02.03.2023 Алгоритмы и игры Физические движки. Обработка столкновений. Скорость и ускорение объектов, игровые тики.
19 09.03.2023 Графика и рендеринг Как создаются 3D-модели. Анимация 2D и 3D-персонажей. Смена анимаций. Немного о хитростях 3D-графики.
20 16.03.2023 Графика и рендеринг Как графический интерфейс в играх помогает игровому опыту. Диалоговые окна и сценарии.
21 23.03.2023 Алгоритмы и игры Способности и модификаторы юнитов. Как устроены игры жанра MOBA с точки зрения кода.
22 30.03.2023 Системный дизайн Игровая экономика и баланс. Как создаются идеальные пошаговые стратегии и стратегии в реальном времени.
23 06.04.2023 Разработка алгоритмов Лекция об устройстве клеточного автомата «Игра "Жизнь"». Подготовка к написанию проектов.
24 13.04.2023 Графика и рендеринг Дизайн уровней. Как создать реалистичный игровой мир при помощи оптических иллюзий.
25 20.04.2023 Защита проектов Защита проектов по созданию клеточного автомата.
26 27.04.2023 Чаепитие Пересдача и чаепитие.
Список литературы
1 Лучано Рамальо. «Python. К вершинам мастерства»
2 Tynan Sylvester. «Designing Games. A guide to engineering experiences»
3 Сид Мейер. «Жизнь в мире компьютерных игр»
4 Документация Python. // Интернет-источник: https://pydocs.ru/
5 Документация arcade // https://api.arcade.academy/en/latest/
6 Как создаются изометрические миры // https://habr.com/ru/post/332922/
7 Простое объяснение алгоритмов поиска пути и A* // https://habr.com/ru/post/444828/
8 Шум Перлина // https://habr.com/ru/post/342906/
9 Линейная алгебра для разработчиков игр // https://habr.com/ru/post/131931/