Как се прави видеоигра
Ще разбереш как работи игровият цикъл, какво са кадри в секунда, кой прави една игра и как да създадеш свой прототип.
Бип-буп! Загадка: една игра рисува целия екран отново и отново, 60 пъти всяка секунда, а ти дори не го забелязваш. Как го прави? Хайде да надникнем под капака.
История от живота
През октомври 1958 г. физикът Уилям Хигинботъм работел в американска научна лаборатория. Всяка година там имало ден на отворените врати, а посетителите се отегчавали от скучните табла с уреди. Той решил да ги забавлява: свързал малък аналогов компютър с осцилоскоп (уред с кръгъл екран) и направил игра на тенис, гледан отстрани. Двама души въртели копчета и натискали бутон, за да удрят светеща точка над мрежата. Хората се редели на опашка, за да играят. Играта е сред първите игри, направени само за забавление, а е била сглобена за около три седмици.
Разбери го стъпка по стъпка
- Игровият цикъл
Сърцето на всяка игра е цикъл, който се повтаря непрекъснато: 1) прочети какво натиска играчът, 2) обнови света (движение, удари, точки), 3) нарисувай новата картина. Едно минаване през цикъла дава един кадър.
- Кадри в секунда (FPS)
Ако цикълът се върти 60 пъти в секунда, казваме 60 FPS. Тогава за всеки кадър компютърът има около 1000 / 60 = 16,7 милисекунди. Ако не успее, играта започва да насича.
- Движение с формула
Позицията на героя се смята така: нова позиция = стара позиция + скорост × време. Ако героят тича със 120 пиксела в секунда и кадърът трае 1/60 секунда, той се мести с 2 пиксела на кадър. Гравитацията пък всеки кадър добавя малко към скоростта надолу.
- Игрови двигател
Повечето игри не се пишат от нулата. Използва се игрови двигател (game engine): готова програма, която рисува, пуска звук, смята физика и сблъсъци. За начинаещи блоковият Scratch е чудесен старт, а по-големите екипи ползват професионални двигатели и езици като C++ и C#.
- Екипът и тестването
Голямата игра я правят десетки или стотици хора: дизайнери на игровия процес, програмисти, художници, аниматори, композитори, звукови дизайнери и тестери. Първо се прави прост прототип, после много хора го играят и екипът поправя скучното и трудното. Това се повтаря десетки пъти.
Представи си така: Играта е като тетрадка с рисунки в ъгъла: прелистваш бързо и човечето тича. Игровият цикъл е ръката, която прелиства, само че 60 страници в секунда и всяка страница се рисува в момента, според това какво натискаш.
- Време за 1 кадър при 60 FPS
- 1000 / 60 ≈ 16,7 ms
- Време за 1 кадър при 30 FPS
- 1000 / 30 ≈ 33,3 ms
- Движение
- нова позиция = позиция + скорост × време
- Гравитация
- скорост надолу = скорост + g × време
- Кадри за 1 минута при 60 FPS
- 60 × 60 = 3600
- Игровият цикъл
- вход → обновяване → рисуване → отначало
Решени примери
Герой тича със скорост 180 пиксела в секунда. Играта върви с 60 FPS. С колко пиксела се мести на кадър?
180 / 60 = 3 пиксела на кадър. Ако играта падне на 30 FPS, героят трябва да се мести с 6 пиксела на кадър, за да тича със същата скорост. Затова умножаваме по времето на кадъра, а не по броя кадри.
Защо в играта топката понякога минава през стената?
Ако топката е много бърза, за един кадър тя може да прескочи тънката стена: в единия кадър е пред нея, в следващия вече е зад нея. Програмистите решават това с по-малки стъпки на проверка или с по-дебели невидими стени.
Играта е готова, но тестерите казват, че нивото е скучно. Какво прави екипът?
Наблюдава къде играчите се отказват, сменя разположението на препятствията, добавя награда или изненада и тества отново. Забавлението рядко се получава от първия път, то се настройва.
Внимавай с тези грешки
- Една игра я прави един гениален програмист.Малки игри може да направи и един човек, но големите се правят от екипи с много различни професии: изкуство, музика, сценарий, програмиране, тестване.
- Най-важна е графиката.Красивата графика помага, но игрите се помнят заради това колко е забавно да ги играеш. Затова прототипите често са от прости квадратчета.
- За да правиш игри, трябва първо да си отличник по всичко.Можеш да започнеш още сега със Scratch или с хартиен прототип. Математиката ти потрябва постепенно, когато искаш по-сложни движения.
Задачи
Лесни
Назови трите стъпки на игровия цикъл в правилния ред.
Подсказка
Първо трябва да знаеш какво иска играчът, после да промениш света, накрая да го покажеш.
Отговор
Вход (какво натиска играчът), обновяване на света, рисуване на кадъра.
Изброй поне 4 професии в екип, който прави игра.
Подсказка
Помисли какво виждаш, чуваш и правиш в една игра. Някой е направил всяко от тези неща.
Отговор
Например: програмист, художник, аниматор, дизайнер на нива, композитор, звуков дизайнер, тестер, сценарист.
Средни
Играта върви с 30 FPS. Колко милисекунди има компютърът за един кадър? А колко кадъра ще нарисува за 10 секунди?
Подсказка
Една секунда има 1000 милисекунди.
Отговор
1000 / 30 ≈ 33,3 ms на кадър и 30 × 10 = 300 кадъра.
Кола в игра се движи с 240 пиксела в секунда, а играта е 60 FPS. С колко пиксела се мести на кадър? Колко пиксела изминава за 5 секунди?
Подсказка
Скорост × време дава разстоянието.
Отговор
240 / 60 = 4 пиксела на кадър и 240 × 5 = 1200 пиксела за 5 секунди.
Трудни
Екранът е широк 1920 пиксела. Герой с 4 пиксела на кадър при 60 FPS тръгва от левия край. За колко секунди ще стигне десния?
Подсказка
Първо намери скоростта в пиксели за секунда.
Отговор
Скоростта е 4 × 60 = 240 пиксела в секунда, а 1920 / 240 = 8 секунди.
Измисли правилата на своята игра на една страница: цел, какво управлява играчът, едно препятствие, една награда, кога печелиш и кога губиш.
Подсказка
Ако приятел може да изиграе играта само като прочете листа ти, правилата са ясни.
Отговор
Свободен отговор. Добрата страница има ясна цел, поне едно предизвикателство и ясно условие за победа.
Хартиен прототип на игра
Цел: Да направиш и тестваш игра без компютър, точно както правят истинските дизайнери в началото.
- Нарисувай ниво на лист А4: старт, финал, препятствия, бонуси.
- Изрежи фигурка на героя от картон и вземи зар.
- Напиши 3-5 правила, например: хвърляш зар и се местиш, на червено поле връщаш 2 полета назад.
- Дай играта на двама съученици и само гледай, без да обясняваш. Записвай къде се объркват или скучаят.
- Промени едно правило и тествайте отново.
- Ако искаш, пренеси играта в Scratch с разрешение на родител или учител.
Накрая: Показваш нивото, правилата и какво промени след тестването и защо.
Тест с точки
10 въпроса, 18 точки, оценка накрая и разбор какво да преговориш.