Ответ на пост «Бухгалтера походу)»2
Всем привет 👋
Не ожидал увидеть видео на Пикабу. Пилил рилс в нельзяграмме.
Это я с женой в отпуске.
Маршрут Сургут-Новосибирск-южная Башкирия-Волгоград-Сургут.
Придумали игру во время езды. Полдня писали цифры ) точнее жена писала )
Потом вычеркивали.
Самые популярные числа 111, 222 и тд.
За 8000 км так и не смогли зачеркнуть все числа :(
Оставили на следующую длительную поездку.
Было очень интересно :)
П.С. я смотрел на дорогу, а телефоном имитировал взгляд глаз, поэтому дорога была под контролем.
В виде пруда прикрепил ролик написания чисел
Хотите антидот от деменции и скучных посиделок в одном флаконе?
Играйте в «Крокодила» 😄
Совсем недавно я попала в новую компанию и по-новому открыла для себя отдых во взрослой тусовке.
Среди прочего — игру «Крокодил».
Если вдруг кто не в курсе: один показывает движениями загаданное слово или фразу, остальные должны угадать.
Сначала я подумала: «Ну что за бред, детская же игра, фигня какая-то, неинтересно».
А потом поучаствовала… и кАк поняла, кааак дошло! Это ж, блин, кладезь!
Почему?
🔹Во-первых, игра перестаёт быть детской, как только загадывается слово.
Взрослым со своим опытом эта игра раскрывается намного ярче.
Мало того какие слова можно придумывать, так и то как именно ты пытаешься это показать.
🔹Во-вторых, мозг включается на скорости света. Нейрончики бегают только так 🤯 — и не важно, угадываешь ты или показываешь.
🔹В-третьих, креатив прёт.
Вот вы бы догадались показать «деликатес» через «делить кота»? А один парень додумался! И это не просто смешно — это гениально.
Ну вы ж уже наверно поняли - я обожаю анализировать всё и вся. И эта история не исключение)
И вот что заметила:
👉 Это вот прям абсолютно для любой компании.
Хоть для серьезных дядек "вертил" большого бизнеса, хоть для деток в садике и бабулек, и даже для самой разношерстной компании где все они вместе.
Сложность каждый определяет сам.
👉 Игра даёт возможность нам, «серьёзным взрослым», по-детски расслабиться и поржать до слёз.
👉 Она реально полезная. Прокачивает воображение, внимание, реакцию.
А рост нейрончиков — это антидот деменции 💪
(Кстати, наверно те, кто много путешествует по миру, но не знает языков - круто поднаторел в этом и скорее всего гуру в этой игре😆)
Теперь «Крокодил» у нас топ №1 на любых посиделках.
А бонус-лайфхак: с родственниками работает идеально. Пока все ржут и показывают «делить кота» — им некогда задавать неудобные вопросы 😜 Проверено!
Так что — сама попробовала и вам советую. Пользуйтесь 😉
Признавайтесь, кто играл недавно? Что заметили, какие находки были у вас? А может у вас какая-то другая игра в топе? - Поделитесь, оочень интересно😃
Как я пытался делать игры с фрилансерами
[Первое знакомство с фрилансом]
Действие происходило в конце 2024. Тогда еще можно было делать сомнительные проекты на яндекс. Сейчас нельзя. А еще на яндексе детская аудитория, и серьезные большие игры туда делать было бесполезно. Это надо иметь в виду
-
Осознавая нехватку времени, я решил попробовать полагаться не только на собственный труд.
Потому я попробовал запустить ещё несколько параллельных проектов для Яндекса.
Решил для начала попробовать нанять фрилансеров совсем за немного: 10–15к рублей. 💸
-
Идея такая: заказать 5 проектов, используя знания для выбора ниши — и посмотреть, окупится ли.
-
Были разные проблемы. В общем-то, они минимизируются, если:
- Понятно прописывать ТЗ, разделяя его на пункты (мне было удобно работать в экселевской гугл-таблице — и фрилансерам, по их отзывам, тоже);
- Обозначать приоритеты;
- Назначать промежуточные проверки;
- Работать через сервис, а не на устной договорённости;
- Найти свой лимит одновременных проектов, и не делать всё сразу.
-
Я был готов к тому, что у ребят, кто работает за такие деньги, будет не очень хороший код.
Всё-таки проекты планировались быть небольшими, и поддерживать их никто пока не планировал.
Я был готов к тому, что будет делаться как-то безвкусно или с багами. 🐞
В конце концов, я писал подробное ТЗ, следуя которому всё равно выходило бы неплохо: описывал спецэффекты, микроанимации, шейдеры, палитру, возможные проблемы, которые нужно избежать.
Я был готов к срыву сроков.
Не в такие уж мемные ниши делали.
-
Но вот к чему я не был готов — так это к тому, что будет игнорироваться ТЗ. ❌
Можно было бы винить себя — мол, неправильно выбрал нишу.
Но можно быть сколь угодно гениальным геймдизайнером — и всё равно не сделать хорошей игры, если разработчик делает работу на своё усмотрение.
-
Это происходило во всех пяти случаях. Это тенденция.
Может, я, конечно, совсем своего бревна не вижу, но мне бы и в голову не пришло, что такое может быть проблемой.
Я бы не позволил себе выдавать несделанное за сделанное.
Я бы, вероятнее, делал дольше — но прошёлся бы и проверил все пункты ТЗ перед сдачей.
-
Получалось, что:
Я проверял все пункты, находил кучу несделанного и кучу проблем, отправлял на доработку.
Потом человек говорил: якобы всё сделано. Надо было проверить все отмеченные мной пункты.
Обычно оказывалось, что человек сделал почему-то только некоторые из несделанных задач (а проверять-то нужно было всё).
Плюс по ходу проверки всплывало что-то ещё.
И так — бесконечно, снова и снова. 🔁
-
Поначалу хотелось сворачивать проекты по своей инициативе.
Но было жалко своего времени, уже на них потраченного.
Хочешь быть бескомпромиссным — потрать жизнь на такой сизифов труд подтирания за школьниками.
В итоге приходилось соглашаться на сомнительные решения.
-
Вот эти проекты:
1️⃣ Построй лабиринт https://yandex.ru/games/app/366605
2️⃣ Обби со скалолазанием — проект закрылся. Два разработчика друг за другом сами забросили проект. Что, опять же, говорит: нормальный дизайн уровней сделать сложно.
3️⃣ Раннер-мерж 3D фруктов 2048 https://yandex.ru/games/app/379020
4️⃣ Айдл блоки — разработчик не объявлял, что прекратил работу, но по факту прекратил
5️⃣ Спасательная машина https://yandex.ru/games/app/393150
-
Последний проект получился лучше других и был ёмким на развитие, так как:
— я был уже на опыте,
— а разработчик не школьником.
-
Но проект не показал больших результатов и не драйвировал меня.
А кор-механика реализована так, что не закрывает начальное ТЗ,
и развитие основных фич разработчику сделать не удавалось.
-
В целом итог такой:
Проекты либо не были доделаны,
либо не отбились на пике
и вошли в пятирублёвое состояние.
-
Я боялся, что я тут буду эксплуататором, но ощущалось, будто это школьники меня эксплуатируют. 🧃
Такую нишу посчитал для себя закрытой и невыгодной.
[Простая задача фрилансерам]
Во время того, как я заказывал те проекты, я совершил выбивающийся из той пятёрки заказ.
У разработчика, который делал игру про фрукты, на аккаунте была игра с механикой FNaF. А в то время начал вируситься кот, который: «Бу! Испугался?» 🐱💥
Я предложил за очень небольшую сумму сделать рескин — заменить персонажа на кота и ещё сделать несколько косметических изменений.
-
Получившийся проект: https://yandex.ru/games/app/383920
-
Мы потратили совсем мало времени, а игра многократно отбилась, а потом вошла в пятирублёвое состояние 🪙
И когда я закончил с той пятёркой, я решил попробовать повторить опыт.
Мне показалось это очень удобным: заказал в понедельник трэшовые мемные игры, а сам всю неделю делаешь что-то нормальное, пока они тебя кормят 😎🎮
-
Тогда был популярен мем «дуреет с этой прикормки», и всё ещё не угасла игра «Заходи» на Яндексе.
Я взял ассет с кафе — единственный шаблон, который нашёл, что был похож на уже готовую и не слишком унылую игру.
И разместил объявление на фрилансе: дополнить его мемами за 2к рублей.
-
ТЗ было очень обтекаемым, так как по плану я не должен был слишком заморачиваться.
Вышла игра: (на данный момент удалена из каталога)
Не только не отбилась, но и даже в пятирублёвом состоянии не осталась — умерла вскоре после релиза 💀📉
-
Одновременно с этим я разместил два объявления, где предлагал сделать что угодно.
Выбрал два актуальных на тот момент мема — «сидим с бобром» и «я хочу быть пылесосом» 🦫🌀
Сделал объявление за 1.5к: мол, не важно, что сделать — просто по шаблону, который у вас есть.
-
И… я не нашёл исполнителя.
Ни один школьник не написал: мол, у него есть игра, и он готов просто заменить персонажа 🤷♂️
Ну как так?
-
Тогда я написал два ТЗ, которые, на мой взгляд, должны быть выполнимы за день-другой.
И опять не мог найти, кто бы был готов их сделать.
Пришлось одну, про бобра, заказывать дороже.
А вторую, про пылесос — исполнителю Телекинеза, тоже дороже.
-
Игра про пылесос повторила судьбу игры про кафе.
-
Про бобра:
Чел взял предоплату, а потом не справлялся с полным выполнением ТЗ.
А ещё у него билд не собирался.
А ещё он пытался менять условия.
В итоге я заплатил ему полную сумму, потому что устал находить косяки.
А проект не выложил ❌
-
Почему я заплатил?
Вот не могу ответить себе нормально.
Потому что у школьника было больше воли, чем у меня?
Потому что боялся, что он про меня начнёт гадости писать?
Теперь добрая песня, где готовят полено, у меня вызывает чувство злости к себе 🪵😤
-
С котом, я думаю, хорошо получилось, потому что там было очень удачное сочетание механики и персонажа 🎯🐱
Наверное. можно было бы попытаться оптимизировать эту тему, было не очень приятно плодить информационный мусор, так что я потерял интереc.
[А что, если фрилансерам платить нормально?] 💸
В прошлые разы я ставил довольно небольшую оплату за проект. Но что, если поставить нормальную?
-
Я продумал хороший проект: делающийся недолго, но требующий опыта, чтобы сделать хорошо.
Нужно было сделать игру, похожую на «Кот и бабка». Она тогда была в топах.
-
Я поставил на Kwork цену в 50к рублей, написал большое ТЗ и получил отклики.
(Там ещё были надбавки за рейтинг игры на Яндексе, но площадка заставила меня их удалить.)
-
Я был несколько удивлён, что мне стали писать ТОЛЬКО такие же по уровню ребята, что и делали мне проекты за 10–15к. Два разработчика даже прямо повторились — написали парни, с которыми мы уже работали. Было приятно, но хотелось кого-то ещё.
-
После предыдущего опыта у меня развилось гигантское недоверие к способностям рынка фриланса.
Я, помня ключевую проблему в том, что людям сложно следовать ТЗ, провёл небольшой тест: я начинал общение со всеми, кто откликался, и просил выполнить небольшую просьбу. Какую — не скажу. Думаю, она мне ещё пригодится. Смысл в умении делать именно так, как написано, а не «как кажется».
Оказалось, более-менее справился с задачей только знакомый, уже работавший на моем проекте, разработчик.
-
Когда я поставил цену в 200к, Kwork мне вывел окно: мол, не рекомендует ставить такую сумму и предлагает поставить 70 000.
То есть для площадки вовсе не норма — хорошая оплата за проекты. Некоторые из тех людей, что там откликались, уже справлялись с моим тестом. Но в ходе разговоров я осознавал, что не готов столько платить — у них не было того уровня понимания геймдева, которого я ожидал.
-
Когда-то давно я думал, что фриланс — это для опытных специалистов уровня как минимум middle, что на фрилансе люди зарабатывают в среднем больше, чем в найме.
Что чтобы быть фрилансером, нужно, понимаешь, и архитектуру проекта продумывать, и вообще всё уметь делать самостоятельно и без косяков. Но как-то так выяснилось, что фрилансеры — это просто ребята, которые ПОЗВОЛИЛИ СЕБЕ откликаться. 🤷♂️
Скорее всего, это две категории разработчиков: либо те, кого не берут на нормальную работу, либо те, кто сделал фриланс своим образом жизни.
Последние не сосредоточены на геймдеве, а являются мастерами на все руки, отчего игры в их портфолио весьма посредственные.
Очень странно видеть в портфолио нормально сделанный лендинг с неплохим дизайном, а рядом — вырвиглазно задизайненную игру. 🧠🎨
-
В общем, этот проект так и остался на уровне ТЗ.
Кажется, если и работать через фриланс и сдельную оплату, то нужно либо находить человека по сарафанному радио, либо должно повезти. 🍀
Я осознаю ещё много вариантов — например, обращаться к студиям, которые делают под ключ.
-
Но сейчас я хочу сделать перерыв в делегировании:
— Во-первых, потому что хочу больше сил уделить своим проектам.
— Во-вторых, потому что хочу сэкономить. 🪙
— В-третьих, я боюсь опытных. А вдруг они меня обманут? Или иначе — из нашего взаимодействия я не выйду победителем.
Раз они могут сделать игру — зачем им я?
Кто может делать успешные игры, тот их делает.
Я ему нужен только, чтобы я заплатил больше, чем игра бы заработала сама по себе.
-
Может, строить студию — более хорошая стратегия? 🏗
Одному фрилансеру объяснишь, как что-нибудь делать — он кое-как сделает. Со вторым будет снова та же проблема.
А если человек работает в студии, то, если он научился, он, может быть, не забудет это знание к следующей задаче, а сможет применить.
-
Хорошо бы хотя бы просто до полного выполнения ТЗ допинать человека.
А ведь игры такие, что всё заранее не учтёшь.
И когда игра уже сделана — работа не заканчивается.
Вот только с фрилансером непонятно — будет ли он ещё работать и когда.
В итоге проект остаётся такой неотполированной заготовкой с кучей вещей, которые можно было бы сделать лучше. 🪞🎮
-
Пока на этом повременю с делегированием.
Есть несколько идей — может, попробую их позже. ✍️
Больше постов про приключения инди-разработчика у меня в телеге: https://t.me/MikhailAllowsHimself
Гонки от нейросети Qwen
Попросил нейросеть написать игру "Гонки" с максимально реалистичными машинками вид сверху, результат насмешил.
Вот код игры для запуска через Pydroid 3 с комментариями от нейросети.
import pygame
import random
import sys
# Инициализация Pygame
pygame.init()
# Автоопределение размера экрана
info = pygame.display.Info()
SCREEN_WIDTH = info.current_w
SCREEN_HEIGHT = info.current_h
# Создание экрана
screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT))
pygame.display.set_caption("Гонка")
# Цвета
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (220, 30, 30)
GREEN = (30, 180, 30)
BLUE = (30, 100, 220)
YELLOW = (255, 220, 0)
GRAY = (100, 100, 100)
DARK_GRAY = (50, 50, 50)
LIGHT_BLUE = (170, 220, 255)
ORANGE = (255, 140, 0)
# Часы для управления FPS
clock = pygame.time.Clock()
FPS = 60
# Функция для рисования машины игрока (реалистичные пропорции)
def draw_player_car(x, y, width, height):
# Основной корпус автомобиля (горизонтальный прямоугольник)
pygame.draw.rect(screen, GREEN, (x, y, width, height))
# Крыша (меньше по размеру)
pygame.draw.rect(screen, LIGHT_BLUE, (x + width//6, y - 8, width * 2//3, 12))
# Капот
pygame.draw.rect(screen, (20, 150, 20), (x, y, width, height//4))
# Фары спереди
pygame.draw.circle(screen, YELLOW, (x + 8, y + height//2), 6)
pygame.draw.circle(screen, YELLOW, (x + width - 8, y + height//2), 6)
# Задние фары
pygame.draw.circle(screen, RED, (x + 8, y + height//4), 5)
pygame.draw.circle(screen, RED, (x + width - 8, y + height//4), 5)
# Колеса
pygame.draw.rect(screen, BLACK, (x + width//6, y - 3, 12, 6))
pygame.draw.rect(screen, BLACK, (x + width - width//6 - 12, y - 3, 12, 6))
pygame.draw.rect(screen, BLACK, (x + width//6, y + height - 3, 12, 6))
pygame.draw.rect(screen, BLACK, (x + width - width//6 - 12, y + height - 3, 12, 6))
# Функция для рисования машины противника
def draw_enemy_car(x, y, width, height):
# Основной корпус автомобиля
pygame.draw.rect(screen, RED, (x, y, width, height))
# Крыша
pygame.draw.rect(screen, (150, 0, 0), (x + width//6, y - 8, width * 2//3, 12))
# Капот
pygame.draw.rect(screen, (180, 20, 20), (x, y, width, height//4))
# Фары спереди
pygame.draw.circle(screen, YELLOW, (x + 8, y + height//2), 6)
pygame.draw.circle(screen, YELLOW, (x + width - 8, y + height//2), 6)
# Задние фары
pygame.draw.circle(screen, ORANGE, (x + 8, y + height//4), 5)
pygame.draw.circle(screen, ORANGE, (x + width - 8, y + height//4), 5)
# Колеса
pygame.draw.rect(screen, BLACK, (x + width//6, y - 3, 12, 6))
pygame.draw.rect(screen, BLACK, (x + width - width//6 - 12, y - 3, 12, 6))
pygame.draw.rect(screen, BLACK, (x + width//6, y + height - 3, 12, 6))
pygame.draw.rect(screen, BLACK, (x + width - width//6 - 12, y + height - 3, 12, 6))
# Класс игрока (машина)
class Player:
def __init__(self):
self.width = SCREEN_WIDTH // 10
self.height = SCREEN_HEIGHT // 12
# Позиционируем машину игрока в середине экрана
self.x = SCREEN_WIDTH // 2 - self.width // 2
self.y = SCREEN_HEIGHT // 2 # Середина экрана
self.speed = SCREEN_WIDTH // 80
self.road_width = SCREEN_WIDTH // 2
self.road_x = SCREEN_WIDTH // 4
def draw(self):
draw_player_car(self.x, self.y, self.width, self.height)
def move_left(self):
# Ограничиваем движение дорогой
if self.x > self.road_x + 5:
self.x -= self.speed
def move_right(self):
# Ограничиваем движение дорогой
if self.x < self.road_x + self.road_width - self.width - 5:
self.x += self.speed
def get_rect(self):
return pygame.Rect(self.x + 5, self.y + 2, self.width - 10, self.height - 4)
# Класс препятствия
class Obstacle:
def __init__(self):
self.width = SCREEN_WIDTH // 10
self.height = SCREEN_HEIGHT // 12
# Спавним только на дороге
road_width = SCREEN_WIDTH // 2
road_x = SCREEN_WIDTH // 4
self.x = random.randint(road_x + 10, road_x + road_width - self.width - 10)
self.y = -self.height
self.speed = SCREEN_HEIGHT // 120 + random.randint(0, 3)
def draw(self):
draw_enemy_car(self.x, self.y, self.width, self.height)
def move(self):
self.y += self.speed
def is_off_screen(self):
return self.y > SCREEN_HEIGHT
def get_rect(self):
return pygame.Rect(self.x + 5, self.y + 2, self.width - 10, self.height - 4)
# Класс дороги
class Road:
def __init__(self):
self.road_width = SCREEN_WIDTH // 2
self.road_x = SCREEN_WIDTH // 4
self.line_width = 10
self.line_height = SCREEN_HEIGHT // 15
self.line_speed = SCREEN_HEIGHT // 80
self.lines = []
# Инициализируем линии разметки
for i in range(25):
self.lines.append([self.road_x + self.road_width // 2 - self.line_width // 2,
i * (self.line_height + SCREEN_HEIGHT // 18)])
def draw(self):
# Рисуем дорогу
pygame.draw.rect(screen, DARK_GRAY, (self.road_x, 0, self.road_width, SCREEN_HEIGHT))
# Рисуем края дороги
pygame.draw.rect(screen, WHITE, (self.road_x - 2, 0, 2, SCREEN_HEIGHT))
pygame.draw.rect(screen, WHITE, (self.road_x + self.road_width, 0, 2, SCREEN_HEIGHT))
# Рисуем разметку
for line in self.lines:
pygame.draw.rect(screen, YELLOW, (line[0], line[1], self.line_width, self.line_height))
def move(self):
# Двигаем линии разметки
for line in self.lines:
line[1] += self.line_speed
# Если линия ушла за экран, возвращаем её наверх
if line[1] > SCREEN_HEIGHT:
line[1] = -self.line_height
# Класс кнопки
class Button:
def __init__(self, x, y, width, height, text, color=GREEN):
self.rect = pygame.Rect(x, y, width, height)
self.text = text
self.color = color
self.font = pygame.font.Font(None, 36)
def draw(self):
pygame.draw.rect(screen, self.color, self.rect)
pygame.draw.rect(screen, BLACK, self.rect, 2)
text_surf = self.font.render(self.text, True, BLACK)
text_rect = text_surf.get_rect(center=self.rect.center)
screen.blit(text_surf, text_rect)
def is_clicked(self, pos):
return self.rect.collidepoint(pos)
# Основная функция игры
def main():
player = Player()
road = Road()
obstacles = []
score = 0
game_over = False
game_started = False
# Таймер для создания препятствий
obstacle_timer = 0
obstacle_frequency = 100 # каждые 100 кадров
font_large = pygame.font.Font(None, 48)
font_medium = pygame.font.Font(None, 36)
font_small = pygame.font.Font(None, 28)
# Кнопки
start_button = Button(SCREEN_WIDTH//2 - 100, SCREEN_HEIGHT//2, 200, 60, "Начать игру")
restart_button = Button(SCREEN_WIDTH//2 - 100, SCREEN_HEIGHT//2 + 50, 200, 60, "Играть снова")
quit_button = Button(SCREEN_WIDTH//2 - 100, SCREEN_HEIGHT//2 + 120, 200, 60, "Выйти")
while True:
mouse_pos = pygame.mouse.get_pos()
mouse_clicked = False
# Обработка событий
for event in pygame.event.get():
if event.type == pygame.QUIT:
pygame.quit()
sys.exit()
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1: # Левая кнопка мыши
mouse_clicked = True
# Очистка экрана
screen.fill((80, 180, 80)) # Зеленый фон (трава)
if not game_started:
# Экран приветствия
title_text = font_large.render("ГОНКИ", True, WHITE)
screen.blit(title_text, (SCREEN_WIDTH//2 - title_text.get_width()//2, SCREEN_HEIGHT//4))
instruction_text = font_medium.render("Касайтесь левой/правой части экрана", True, WHITE)
screen.blit(instruction_text, (SCREEN_WIDTH//2 - instruction_text.get_width()//2, SCREEN_HEIGHT//3))
# Демонстрационная машина
draw_player_car(SCREEN_WIDTH//2 - 60, SCREEN_HEIGHT//2.5, 120, 40)
start_button.draw()
quit_button.draw()
if mouse_clicked:
if start_button.is_clicked(mouse_pos):
game_started = True
elif quit_button.is_clicked(mouse_pos):
pygame.quit()
sys.exit()
elif game_over:
# Экран окончания игры
road.draw()
player.draw()
for obstacle in obstacles:
obstacle.draw()
overlay = pygame.Surface((SCREEN_WIDTH, SCREEN_HEIGHT))
overlay.set_alpha(128)
overlay.fill(BLACK)
screen.blit(overlay, (0, 0))
game_over_text = font_large.render("ИГРА ОКОНЧЕНА!", True, RED)
screen.blit(game_over_text, (SCREEN_WIDTH//2 - game_over_text.get_width()//2, SCREEN_HEIGHT//4))
score_text = font_medium.render(f"Ваш счет: {score}", True, WHITE)
screen.blit(score_text, (SCREEN_WIDTH//2 - score_text.get_width()//2, SCREEN_HEIGHT//2.5))
restart_button.draw()
quit_button.draw()
if mouse_clicked:
if restart_button.is_clicked(mouse_pos):
return main() # Перезапуск игры
elif quit_button.is_clicked(mouse_pos):
pygame.quit()
sys.exit()
else:
# Игровой процесс
# Сенсорное управление
if pygame.mouse.get_pressed()[0]: # Левая кнопка мыши (или касание)
mouse_x, mouse_y = pygame.mouse.get_pos()
if mouse_x < SCREEN_WIDTH // 2:
player.move_left()
else:
player.move_right()
# Создание препятствий
obstacle_timer += 1
if obstacle_timer >= obstacle_frequency:
obstacles.append(Obstacle())
obstacle_timer = 0
# Увеличиваем частоту появления препятствий со временем
if obstacle_frequency > 40:
obstacle_frequency -= 0.3
# Движение объектов
road.move()
for obstacle in obstacles[:]:
obstacle.move()
# Удаление препятствий, ушедших за экран
if obstacle.is_off_screen():
obstacles.remove(obstacle)
score += 1
# Проверка столкновений
player_rect = player.get_rect()
for obstacle in obstacles:
if player_rect.colliderect(obstacle.get_rect()):
game_over = True
# Отрисовка игровых объектов
road.draw()
player.draw()
for obstacle in obstacles:
obstacle.draw()
# Отображение счета
score_text = font_medium.render(f"Счет: {score}", True, WHITE)
screen.blit(score_text, (20, 20))
# Отображение инструкции управления
control_text = font_small.render("← Лево / Право →", True, WHITE)
screen.blit(control_text, (SCREEN_WIDTH//2 - control_text.get_width()//2, SCREEN_HEIGHT - 40))
# Индикаторы управления
pygame.draw.rect(screen, (200, 200, 200, 100), (0, SCREEN_HEIGHT - 60, SCREEN_WIDTH//2, 30))
pygame.draw.rect(screen, (200, 200, 200, 100), (SCREEN_WIDTH//2, SCREEN_HEIGHT - 60, SCREEN_WIDTH//2, 30))
pygame.display.flip()
clock.tick(FPS)
# Запуск игры
if __name__ == "__main__":
try:
main()
except Exception as e:
print(f"Ошибка: {e}")
pygame.quit()
Игра-лабиринт как когнитивный тренажер
Текущие взгляды на принципы ЗОЖ известны - умеренность и правильность питания и разумная физическая нагрузка. Но, наверное, эта часть здоровья вряд-ли будет в радость без сохранения в должной степени мыслительных способностей.
В понимании различных видов изменений умственных способностей достигнуто не мало и в общем понятно, что для их поддержания также необходима регулярная мыслительная активность, как для хорошего физического состояния необходима физическая активность (по некоторым исследованиям важно обязательное наличие обоих активностей). Но вот сказать точно и назвать вид и объем умственной активности, который гарантировано будет препятствовать развитию всяких деменций и Альцгеймеров или способствовать развитию умственных способностей, наука пока не может.
Хотя кое-какие варианты действий статистически проглядывают. Вполне полезно учить языки (но вроде как важно не просто учить, а постоянно пользоваться несколькими разными языками, часто переключаясь между ними), решать математические задачки, учить стихи, играть в традиционные игры, связанные с запоминанием комбинаций и вариантов.
Про пользу или вред относительно недавно появившихся в массовой доступности компьютерно-телефонных игр мнения разные, но для некоторых их видов исследования показывают вполне действенный результат.
Например, известен метод и соответствующая ему игра-тренажер "N-back", видимо единственная игра на сегодня, эффект от которой научно доказан. Смысл игры в том, чтобы отметить символы или звуки, которые воспроизводились N раз назад, что заставляет мозг задействовать и тренировать т. н. "рабочую память", действующий объем которой важен при различной мыслительной деятельности.
В 2017 году был опубликован авторитетный анализ эффективности методики N-back. В нем проанализировано 33 эксперимента из разных лабораторий со всего мира и показано, что методика N-back значимо увеличивает способности, лежащие в основе IQ, включая интеллект и рабочую память.
Публикация этой статьи:
Приложение, реализующее методику N-back, наиболее близкое к оригинальному варианту:
Использую это приложение для ежедневных упражнений минут по 15 в день больше 10 лет и могу сказать, что во вред оно точно не идет. Статистика результатов с годами точно не ухудшается, тем самым контролируя текущее состояние той самой "рабочей памяти". Хотя для чистого эксперимента надо было 10 лет назад сделать свою точную копию, жить одинаково, но играть в n-back копии не давать.
К сожалению, сам процесс игры в n-back точно увлекательным не назовешь. И дело не только в том, что его эффективное использование подразумевает обязательное мыслительное напряжение, но сам процесс как бы скучноват. Хотелось бы чего-то с теми же целями, но более увлекательного по "гейм-плею".
Недавно на глаза попалась интересная заметка о том, что по исследованию 2024 года водители такси и машин скорой помощи реже других сталкиваются с проблемами из-за болезни Альцгеймера. Исследование основано на анализе статистики смертности в США с 2020 по 2022 года. Данные сопоставили с видом трудовой деятельности, и что важно – начатой до широкого внедрения GPS на транспорте. Из 443 профессий, попавших в анализ, среди водителей такси и машин скорой помощи зафиксирована самая низкая доля смертей от болезни Альцгеймера. Интересно, что тенденция не распространяется на шофёров автобусов и пилотов самолётов, т. к. их маршруты, как правило, заранее определены и не требуют постоянного использования навыков навигации. Вероятно, что активное использование навыков навигации положительно влияет на мозг.
Публикация:
На эту же тему не так давно с интересом прочитал научно-популярную книгу "Путеводный нейрон. Как наш мозг решает пространственные задачи" (автор: Майкл Бонд, перевод: Юрий Гольдберг, 2022 г.):
Цитирую характерные места из книги:
"...Навыки навигации глубоко укоренились в нашей биологии. Способность находить путь на большие расстояния в доисторические времена дала Homo sapiens эволюционное преимущество, позволяя исследовать самые отдаленные уголки планеты. Умение ориентироваться тесно связано с другими важными когнитивными функциями, такими как абстрактное мышление, воображение и память. Майкл Бонд обобщает результаты новейших исследований в области психологии, нейробиологии, этологии и антропологии и приводит примеры из опыта людей, чья профессия или род занятий так или иначе связаны с навигацией.
...Современные люди взаимодействуют с окружающим миром точно так же, как их доисторические предки. Мы путешествуем дальше и быстрее, и у нас есть необыкновенно умные приборы, помогающие прокладывать путь, но то, как мы используем свой мозг, чтобы ориентироваться в пространстве, практически не изменилось. Мы ищем ориентиры, анализируем окружающий мир, запоминаем то, что видим, строим когнитивные карты и в целом никогда не отключаем систему ориентации в пространстве, как и наши предки, охотники и собиратели в эпоху плейстоцена. Некоторые справляются с этими задачами лучше остальных, но так было всегда, по крайней мере до начала XXI века, – потом наступили перемены. Многие из нас делегировали эту тяжелую навигационную работу приборам GPS-навигации, которые ведут туда, куда нужно, без всяких усилий с нашей стороны. Следуйте за синей точкой в приложении на смартфоне или выполняйте устные указания спутникового навигатора – и вы попадете в пункт назначения, не утруждая нейроны места в гиппокампе или цепи принятия решений в префронтальной коре. Вам не нужно знать, как вы туда попали, или даже что-то помнить о своем маршруте. Впервые в истории эволюции мы перестали пользоваться многими пространственными навыками, которые помогали нам выжить на протяжении многих тысяч лет. Стоит задуматься, к чему это нас может привести и что мы можем потерять.
...За последнее десятилетие множество исследований показали, что навигационные приложения и приборы спутниковой навигации ослабляют пространственную память.
...Замена когнитивных навыков технологией неизбежно скажется на мозге, – говорит нейробиолог Джузеппе Иариа, который изучает людей, страдающих от серьезной дезориентации. – Не думаю, что это удивит кого-нибудь из специалистов, работающих в данной области. Мозг рационален. Если вы всегда прокладываете путь с помощью телефона, мозг направит ресурсы, которые обычно использует для отображения окружающего мира, на что-то другое. Это не хорошо и не плохо, и я бы не впадал в панику по этому поводу. Примерно то же самое произошло, когда мы начали пользоваться компьютером и начали утрачивать навыки письма. Вопрос не в том, чтобы пользоваться телефоном, а в том, чтобы осознавать это решение и его последствия. Если вы действительно хотите эффективно ориентироваться и прокладывать себе путь, то должны знать, что использование GPS определенным образом повлияет на этот навык.
...Некоторые ученые опасаются, что угроза от GPS нашему когнитивному здоровью может быть гораздо серьезнее и глубже, чем мы думали, и это не столь невероятно, как может показаться. Нам уже известно, что у людей, использующих пространственную навигационную стратегию, предполагающую формирование ментальной карты, в гиппокампе больше серого вещества (нейронов и нейронных связей), чем у тех, кто пользуется более пассивной эгоцентрической стратегией. Удивляться тут нечему: они больше тренируют эту область мозга. Нам также известно, что у людей с меньшим объемом серого вещества в этой структуре мозга выше риск развития деменции и других когнитивных проблем в конце жизни – тренированный гиппокамп идет рука об руку с когнитивным здоровьем. Мы вовсе не хотим сказать, что постоянное использование GPS – высшая степень пассивной стратегии – и игнорирование гиппокампа сделает вас предрасположенным к ослаблению когнитивных способностей, или что вы сумеете защититься от этой угрозы, если выбросите телефон. Это не подтверждено исследованиями, а для их проведения необходимо изучать людей десятилетиями. Тем не менее такой вариант не исключен.
...Нейробиолог Вероника Бобот исследует связи между методом навигации и когнитивным здоровьем, пытаясь решить одну из самых серьезных медицинских проблем нашего времени: уменьшить вероятность развития деменции. О своем деле она говорит как о миссии, выполнение которой предотвратит огромную трагедию...За последнее десятилетие Бобот изучила строение мозга, активность нейронов, навигационные привычки и когнитивные функции сотен добровольцев с самым разным состоянием здоровья. Многие вопросы все еще остаются без ответа, но исследования убедили ее: если идти только по GPS и не обращать внимания на окружение и маршрут, это устранит из работы гиппокамп, отвечающий не только за навигационные и пространственные навыки, но и за эпизодическую память и другие важные когнитивные функции. Технология, говорит она, поощряет автоматические отклики, которыми управляет хвостатое ядро, и человек начинает вести себя как робот. Будущее нашего вида зависит от того, сумеем ли мы выйти за границы этого роботизированного поведения.
...Другие исследования показали, что упражнения на пространственную навигацию, если выполнять их регулярно, помогут защитить гиппокамп от угасания, которое обычно наблюдается с возрастом. Сознательная навигация – не единственный способ укрепить гиппокамп, но один из самых эффективных..." – Конец цитат из книги.
Прочитанное в книге, а также идея сделать какое-то приложение-тренажер рабочей памяти, более интересный по форме, чем классический N-back, подвигло меня сделать игру-тренажер в виде лабиринта. Чем мы хуже всяких мышек, крысок, рыбок и даже насекомых, которых ученые очень любят заставлять искать правильный путь в лабиринте?
Да, конечно, игр-лабиринтов уже существует весьма не мало. Но те, которые мне попадались, не делают акцента именно на запоминании "карты" лабиринта, разной в каждой новой игре. И речь не идет о лабиринтах с видом "сверху", когда он виден сразу весь. Также – в соответствии с идеей – не надо бродячих по лабиринту покойников и чудищ, которых надо стрелять-убивать или убегать от них, акцент должен быть на запоминании расположения лабиринта и его прохождении.
Сделанная игра-тренажер RandoMaze рассчитана на обычные телефоны и планшеты с Android.
По форме это 3D-лабиринт с видом "от первого лица".
Цель игры — пройти лабиринт с возможно-большим размером, найдя в нем четыре зоны (серые многоугольники) на полу, которые надо активировать (становятся яркими) просто пройдя по ним. После активации всех четырех зон пятое место в виде темно-синей круглой площадки на полу, с которой начинается прохождение лабиринта, превращается в полупрозрачный цилиндр, вход в который завершает прохождение, затем возможно прохождение следующего лабиринта.
Каждый новый лабиринт случаен, как и расположение зон активации и начала-завершения. "Граффити" на стенах лабиринта тоже случайны и помогают визуально лучше запомнить лабиринт. Также по лабиринту случайно расставляется несколько источников звуков, которые тоже можно и нужно использовать для запоминания мест.
Схема лабиринтов только с поворотами на 90 градусов и способ управления движением по лабиринту специально максимально упрощен для освобождения максимума "когнитивных способностей" на запоминание лабиринта. Для движения используется проведение по экрану ("свайп"): влево-вправо — поворот на 90 градусов, вверх-вниз — движение вперед-назад. Движение вперед происходит до места с вариантами дальнейшего направления (но назад — только на одну клетку).
Все лабиринты квадратные с нечетными размерами сторон — от 7x7, 9x9 и до 15x15. При прохождении "время не имеет значения", но ограничивается пройденное расстояние (счетчик оставшихся процентов). Повороты на месте не ограничиваются.
Максимальное пройденное расстояние ограничивается значением, пропорциональным размеру лабиринта. Если лабиринт пройден с остатком больше 50% от максимального — отлично! Тогда размер следующего лабиринта будет плюс 2 (до 15x15). При остатке меньше 50% размер следующего не меняется. При 0% прохождение прерывается, размер минус 2 (но не меньше 7х7).
Какие зоны активации из 4-х уже найдены, во время игры НЕ ПОКАЗЫВАЕТСЯ — надо запоминать! На то он и тренажер. Также не показывается "компас" направления и карта лабиринта — надо строить в голове и тоже запоминать!
А вот после завершения игры показывается весь лабиринт сверху и отмечается пройденный путь — для анализа проделанной работы.
Подробнее на странице приложения и справка в самой игре:
Сколько играть? Лучше меньше, да лучше. Наверное 15-20 минут в день вполне достаточно, но проходить надо максимально осознанно, запоминая свое положение, направление движения и строить в голове "ментальную карту" лабиринта. В этом и есть смысл данного тренажера.
На кого рассчитана - от 5 лет и до пока видят глаза и есть чем водить по экрану. Тестировал игру на своем 5-летнем внуке, начальные лабиринты вполне проходил. Хотя под детское восприятие вид и "гейм-плей" пока не адаптирован.
Наверное игра особенно полезна, когда уже пора задуматься о возрастных изменениях памяти. Хотя проверка и улучшение памяти никогда не вредны.
По собственному опыту игры ежедневно по 15-20 минут за пару месяцев результат в виде среднего размера лабиринта ощутимо увеличился.
Игра бесплатна, не требует никаких регистраций, не собирает никаких данных, и даже рекламу не показывает (по крайней мере пока).
Рекомендую с ее помощью проверить и укрепить свои навигационные способности и гиппокамп.
Несколько скрин-шотов игры:
Серый пятиугольник на полу - одна из 4-х зон, которые надо найти в лабиринте и активировать, пройдя по ней
Полупрозрачный сиреневый цилиндр в отдалении - зона выхода-окончания игры, такой она становится после нахождения и активации всех 4-х зон
Пример пройденного лабиринта, показывается после окончания. Точки на пройденных местах, чем чаще тут ходили, тем больше диаметр