Когда один мелкий косяк руинит тебе весь код
А если серьезно, если бы не лист ошибок - я бы дальше первых уроков из курса не ушел из-за своей невнимательности. Хвала Горку и Морку, что данная вафля исправно помогает таким новичкам как я!
А если серьезно, если бы не лист ошибок - я бы дальше первых уроков из курса не ушел из-за своей невнимательности. Хвала Горку и Морку, что данная вафля исправно помогает таким новичкам как я!
Всем привет, хочу представить вам мой эмулятор CHIP8 под названием CHIP8DALE.
Особенности:
- Звук игры и интерфейса
- Настройка громкости звука интерфейса и игры
- Настройка яркости и цвета подсветки
- Настройка скорости эмуляции
- Сохранение настроек для игр (и автоматическая загрузка настроек при запуске игры)
- Возможность вывести информацию по игре в специальную вкладку
Обзор:
Скачать: https://vk.com/topic-75040291_49930902
Также, можете посетить нашу группу по эмуляторам: https://vk.com/rpcs3
ПС поддерживает только игры CHIP8, в дальнейшем, возможно, добавлю поддержку SUPERCHIP.
Спасибо!
Игровая индустрия уже давно захватила практически все современные бизнес-процессы и зацепила максимально широкую аудиторию. Ответом на вопрос «почему именно так происходит» является старый добрый гормон счастья и радости дофамин. Проще говоря, игры — это весело, они помогают отвлечься от рутины и погрузиться в мир полный приключений.
К тому же, игры располагаются на лидирующих местах по популярности среди всех развлечений, обогнав даже таких гигантов, как кино и спорт суммарно. Что касается более предметного разговора, то это $179,7 млрд прибыли против $100 млрд и $75 млрд соответственно уже в 2020 году.
Не хотели вас «пугать» цифрами, но вы просто обязаны это увидеть. Аналитики Sensor Tower оценили доходы мобильных игр за первое полугодие 2022 года и составили топ-3 прибыльных. Honor of Kings принесла создателям $1,4 млрд, PUBG Mobile - $1,1 млрд, Genshin Impact - $986,2 млн.
Кстати, не так давно Аналитический центр НАФИ провёл крутое исследование и выявил, что 60% россиян в возрасте от 18 лет проводят время в играх. После несложных математических подсчётов выясняется, что это более 88 млн человек. Доля геймеров заметно возросла с 2018 года, их стало в три раза больше. Воодушевляющие цифры.
Пока что, геймдев это огромный океан, где каждому найдётся своё место, поэтому, если вы до сих пор никак не связаны с этой индустрией, то настоятельно рекомендуем хотя бы ознакомиться с ней более подробно. А уж влезать в это дело с головой или остаться в стороне, решать вам.
Начнём с того, что заработок на играх может быть самый разнообразный, начиная от тренда на NFT, заканчивая созданием контента вокруг игр и киберспортом. В отдельную секцию мы бы поставили тестировщиков, но об этом как-нибудь в другой раз.
Играть и подстраиваться под условия можно по-разному, но вершину этого очень калорийного пирога, конечно же, снимают люди, которые именно ДЕЛАЮТ игры.
Портал GamesIndustry.biz любезно поделился итогами индустрии за 2022 год и назвал общую выручку цифровых и физических изданий: $173,8 млрд и $10,7 млрд по направлениям, причём 50% объёма рынка ушло на мобильные игры, 28% — на консоли и 22% — на игры для ПК.
Как бы мы не фантазировали, розовые очки придётся всё-таки снять. Чтобы сделать качественный и отлаженный продукт нужно потратить много времени и ещё больше энергии. Даже самый простой кликер может содержать «подводные камни», из-за которых вы просто можете перегореть к этой идее и закинуть проект на дальнюю полку.
Однако, если вы геймдев-энтузиаст, который не жаждет финансового успеха от своего продукта, то можете смело погружаться в мир инди-игр в одиночку или с командой друзей. Как раз про это есть интересная документалка Indie Game: The Movie, после просмотра на вас обязательно нахлынет вдохновение и растворитесь в разработке, попутно разгребая тонну багов.
Для тех, кто рассматривает эту индустрию с точки зрения получения прибыли и у кого нет времени на ошибки и обучение, есть только два варианта — отдать все важные технические процессы команде-профессионалов или собрать их самих, но тут тоже не всё гладко.
В работе со слабой командой вы можете столкнуться с неправильным расчётом бюджета, некомпетентными сотрудниками, необъективной оценкой собственных сил, проблемами с художниками и программистами, трудностями работы с движком и далее по списку.
Давайте представим, что хотим создать простенькую игру жанра «Аркада».
Например, вспомним старый добрый «Марио», нестареющую классику, в которую играло не одно поколение. Вроде бы ничего сложного. А на самом деле проект «Марио» – существенный пласт работы: где нужны гейм-дизайнеры, художники, программисты, левел дизайнеры, и те, кто озвучит персонажей.
То есть, разбирая детали игры, поймём, что там объём работы, который не делается в одиночку. Благодаря сплочённой команде эта игра стала культовой и осталась в наших сердцах. В каждом уровне, в каждой частичке этой игры работал профессионал.
Начиная разработку игры, например, Fallout или «Ведьмак» важно спроектировать те механики и вещи, которые хотим видеть, а потом реализовать на экране в виде некого чертежа, где будет описано, как персонаж будет прыгать, и как будет выглядеть, каким образом и что будет собирать на уровне.
Все детали, которые будут в проекте описываем в проектной документации. Данную техническую составляющую разрабатывает гейм-дизайнер. Он знает, как составить документацию, разделяет игру на много маленьких частей и описывает конкретику, которая пойдёт в технические задания для художников, программистов, звуковых инженеров, и для тех, кто будет участвовать в реализации этого проекта.
Подытожим: нужна структура, хорошая команда, время, ну и конечно же деньги. А если делать это с плохим подходом, то уйдёт в два или даже в три раза больше денег.
Теперь давайте подумаем, а стоит ли разработка сил, которые нужно потратить на игру? И если все-таки решились создать, то возникает вопрос – а что делать дальше?
Мы в DreamCraft Studio, не первый год создаём игры и разрабатываем их как для себя, так и для заказчиков, которые приходят к нам.
Наша команда профессионалов поможет реализовать вашу идею максимально качественно и бюджетно, поэтому вам не придётся тратить лишние деньги и время.
Давайте ещё раз пробежимся по самому главному в каждом пункте:
1. С игровой индустрией нужно считаться, она уже обогнала по прибыли доходы кино и спорта вместе взятых
2. Зарабатывают на играх многие, но именно разработчики забирают себе большую часть этого пирога
3. Если вы не преследуете финансовую цель, можете смело разрабатывать «для души», в прочих случаях — лучше обратиться к команде
4. Если вы собираете собственную команду, будьте готовы преодолевать все «подводные камни». А их будет много, это факт
5. Для создания нужен качественный подход, далеко не у всех он есть
6. Цель есть, а реализовать сложно? Вам всегда поможет DreamCraft Studio.
Прошло больше месяца с тех пор, как я написал о том, что хочу создать игру для программистов. Это время я не провел даром: продумывал концепцию, играл в аналоги и самое главное, пытался найти ответ, как с помощью игры обучать новичков и вызывать интерес у практикующих разработчиков. Обо всем по порядку.
Для начала расскажу об аналогах, в которых я искал вдохновение и ответы на свои вопросы. Их можно разделить на две группы: замена кнопок действий на код типа “object.moveTo();” и игры, в которых необходимо прочитать тонны информации, прежде чем начать играть. В некоторых играх красивая графика, анимации, видно что над ней реально старались, но это не то. В итоге я понял, что сейчас то, что называют “Обучающими играми для программиста”, этим не является. Оба варианта мне не нравятся от слова совсем и я продолжил искать. Единственное что я почерпнул из этого - я не хочу делать так же!
Далее я решил посмотреть обычные браузерные игры, посмотреть концепции игр, их механику. Одним из правил было относительно простая реализация (Не забываем, что я пишу игру один). Из всего многообразия мне понравился захват территорий (обезличенные ячейки, в которые ты перемещаешь своих юнитов для захвата). С этим можно работать - подумал я. Как игрок в ММО в прошлом, мне не хватало вызова. Проходить уровни - не вызывает интереса, если нет никакой конкуренции. Тогда почему бы не сделать общую карту, каждому игроку дать начальную точку и дать возможность играть с другими разработчиками? Это показалось хорошей идеей.
Добавить постройки разных зданий на точках по типу “шахт”, “казарм” и “главного здания” для большей вариативности стратегии игрока и можно лить в прод.
На чем писать? Не осознавая масштабов, я думал, что лучше написать на javascript, с использованием библиотек для работы с canvas. Игра же простая как 5 копеек… Ага…
Забуксовал на создании карты, не стал пытаться дальше и ушел в Unity. Хорошо, что опыт был. После открытия редактора увидел сколько бы мне всего пришлось писать, прежде чем дойти до функциональности, которая существует в Unity “из коробки”. А там и идеи про выпуски на все платформы, и наивные мечты о миллионах установок. Со всеми же такое случалось, не правда ли?
На данный момент реализовано динамическое создание тайлов, действие при наведении на них мышкой, клики по тайлам и перемещение камеры - все что успел написать за пару дней.
Так а при чем тут вообще программисты? Сейчас объясню. Игра делится на две части: логика и алгоритмы. С помощью логики игрок описывает взаимодействие ваших точек, а с помощи алгоритмов улучшает их. Например, для захвата точки, необходимо написать алгоритм по поиску в матрице определенного паттерна, которых может быть несколько типов. Для “майнинга” валюты необходим алгоритм генерации уникальных чанков и так далее.
И самый главный вопрос: как обучать новичков и дать возможность провести хорошо время разработчикам. Сделать программирование дополнением к игре, а не ставить во главу угла. Хочешь лучше? Попробуй написать сам! Таким образом у игрока пробудится интерес к программированию и появится цель. Это и будет разновидность геймификации обучения.
А теперь, расскажу зачем я это все делаю. Игра - это не основной проект, а скорее дополнение и поиск лучшего метода обучения студентов. Основным проектом является курс по программированию PHP. Я все время в поисках крутых практик обучения, и вижу большой потенциал в обучении через игры. Толчком к созданию курса, а точнее сервиса по обучению, стал взгляд изнутри и снаружи на все “магазины на диване”, которые называют себя обучающей платформой. Моя цель сделать обучение доступным и обучить как можно больше людей. Постоянно улучшая программу курса, я ищу снова и снова крутые методики обучения и встраиваю их в программу. Мне нравится учить людей и нравится писать код. Почему бы не совместить это в один проект?
Всем привет. Примерно год назад я с двумя коллегами начали разработку нашей игры. Владимир - автор идеи, Азат - участвовал во всех обсуждениях, помогал с организационными задачами, рисовал самый первый дизайн и я - программист, 90% всего кода игры моего авторства.
Идея игры у Владимира родилась очень давно. Он даже когда-то самостоятельно написал прототип на Flash. Но дальше дело у него не пошло. И вот на прошлом корпоративе он презентовал идею игры Олегу, учредителю Neti - нашей организации где мы все работаем. Олег подумал и взял Владимира в свой акселератор стартапов. Инвестировал денег и разработка началась.
На этом этапе подключились я и Азат. Мы единственные, кто откликнулся на призыв поучаствовать в стартапе Владимира. Лично я давно хотел попробовать разработать какую-нибудь игру и вот мне выпал шанс. У меня как раз закончился клиентский проект и мне ещё не нашли новый. За работу я принялся с большим энтузиазмом.
Сам я 1С программист. В прошлом изучал C++ в институте и по бесплатным курсам в интернете. Начать писать на C# для меня оказалось достаточно просто. Неделя просмотра курсов по Unity и вперед.
Идея игры заключалась в том, чтобы выставлять на игровое поле определеные комбинации фишек, тем самым зарабатывая победные очки, и мешать это делать противнику. Прототип игры был пошаговый, но мы решили добавить игре динамичности и сделали игру в реальном времени. У каждого игрока с течением времени накапливается энергия, которую он может тратить на игровые действия, вроде выставления фишек или смены фишек местами, чтобы разрушить комбинацию противника. Благодаря этому длительность партии стала не больше пяти минут.
Для мультиплеера я решил использовать Photon server. Сначала игра была организована по стандартной схеме с мастер клиентом, но из-за того, что она идёт в реальном времени, это дало игроку, которому повезло стать мастер клиентом, несправедливое преимущество. Поэтому я развернул у себя выделенный сервер Фотона и написал к нему плагин, который помог мне реализовать честный клиент-серверный мультиплеер.
Разработка основного функционала игры у меня заняла 3 месяца. И тут как никогда точно сработало правило Парето. Остальные 20% доработок у нас заняли ещё 9 месяцев. Мы нанимали художницу, чтобы она перерисовала нам дизайн, нанимали фрилансера, который написал нам интерактивное обучение и интеграцию с AppMetrica. На тот момент я уже был занят следующим рабочим проектом и практически не мог выделить время на разработку.
У нас ещё куча идей, как можно доработать игру, но пришло время проверки концепта. Нет смысла что-то ещё делать, пока мы не поймём в правильную ли сторону мы движемся. Поэтому мы опубликовали игру в открытый доступ. В этой версии совершенно нет монетизации и рекламы. Сейчас важнее всего получить отзывы игроков или хотя бы собрать метрики по пользовательскому поведению в игре. Так что welcome!
Я начал писать мобильную игру на Python 3.10, где нужно на время нажать на правильную кнопку. Таймер я сделал и он работает, но когда я нажимаю на неправильную кнопку, счёт не сбрасывается. Кнопка которая показывает правильную кнопку называется but_0 кнопка but_0(которая находится выше 9 кнопок, на которые надо нажимать) меняет цвет с цифрой. Цель игры: нажать за время на ту кнопку, которая показывает but_0. Если нажатая кнопка совпадает с кнопкой but_0 то добавляется 1 к счёту, при неправильной счёт сбрасывается.
------------------------------------------------------------------------------------------------------------------------------------------------------------------
from tkinter import *
import random as rn
import time
rn.seed()
timer = TIME = 5
root = Tk()
root.title('game')
root.geometry('720x1280')
global true
global count
count = 0
true = 0
clicks = 0
def click_button():
global clicks, timer
clicks += 1
timer = TIME
labelClick['text'] = str(clicks)
labelClick.pack() #Variable
count = rn.randrange(1,10,1)
print(count)
count = str(count) #randomizer of the correct button
if count == '1':
bgcolor='blue'
if count == '2':
bgcolor='green'
if count == '3':
bgcolor='red'
if count == '4':
bgcolor='yellow'
if count == '5':
bgcolor='orange'
if count == '6':
bgcolor='brown'
if count == '7':
bgcolor='violet'
if count == '8':
bgcolor='grey'
if count == '9':
bgcolor='pink'
#bgcolor='blue' #random numbers and colors
but_0 = Button(text=count, width=3, height=1, bg= bgcolor, font='Hack 30', command=click_button)
print(bgcolor)
but_0.place(x=310, y=140)
but_0['state'] = 'disabled'
counter = 1000
def countdown():
global timer, counter
global clicks
print(timer)
timer -= 1
counter -= 5
if timer <= 0:
clicks -= clicks
timer = 5
root.after(counter, countdown)
but_10 = Button(text=timer, width=3, height=1, font='Hack 30', command=click_button)
print(timer)
but_10.place(x=310, y=40)
but_10['state'] = 'disabled' #A button with the right button
labelClick = Label(root, text=clicks)
labelClick.pack()
but_1 = Button(text='1', width=3, height=1, bg='blue', font='Hack 30', command=click_button)
but_1.true=1
but_2 = Button(text='2', width=3, height=1, bg='green', font='Hack 30', command=click_button)
but_2.true=2
but_3 = Button(text='3', width=3, height=1, bg='red', font='Hack 30', command=click_button)
but_3.true=3
but_4 = Button(text='4', width=3, height=1, bg='yellow', font='Hack 30', command=click_button)
but_4.true=4
but_5 = Button(text='5', width=3, height=1, bg='orange', font='Hack 30', command=click_button)
but_5.true=5
but_6 = Button(text='6', width=3, height=1, bg='brown', font='Hack 30', command=click_button)
but_6.true=6
but_7 = Button(text='7', width=3, height=1, bg='violet', font='Hack 30', command=click_button)
but_7.true=7
but_8 = Button(text='8', width=3, height=1, bg='grey', font='Hack 30', command=click_button)
but_8.true=8
but_9 = Button(text='9', width=3, height=1, bg='pink', font='Hack 30', command=click_button) #Buttons
but_9.true=9
if true == count:
clicks += 1
else:
clicks = 0
but_1.place(x=210, y=240)
but_2.place(x=310, y=240)
but_3.place(x=410, y=240)
but_4.place(x=210, y=340)
but_5.place(x=310, y=340)
but_6.place(x=410, y=340)
but_7.place(x=210, y=440)
but_8.place(x=310, y=440)
but_9.place(x=410, y=440) #button layout
root.after(1, countdown)
root.mainloop()
В ноябре прошлого года мы с другом-художником решили принять участие в Сибирском Гейм Джеме. Game Jam - это конкурс для разработчиков игр, где за ограниченное время нужно сделать игру на случайно выбранную тему.
Тема этого джема - Закон Мёрфи.
Если что-нибудь может пойти не так, оно пойдёт не так
Не хотелось бы обсуждать, насколько хорошо тема подходит для джема, но холиваров она вызвала предостаточно. Так как допускается любое трактование темы, многие пошли простым путём, и переформулировав закон в "Бутерброд всегда падает маслом вниз" пошли делать игры про бутерброды с маслом, или просто про масло :-)
Ещё было несколько игр, где главный герой теряет ключи от машины, у него ломается кофе-машина, протекает раковина, и т.д. Мы захотели пойти другим путём. У нас давно было желание сделать игру жанра Tower Defence. И мы интерпретировали тему вот так
Если в данный момент может выйти монстр, от которого ты меньше всего защищен, то именно он и выйдет, и пойдёт по самому безопасному для себя пути.
Мы нарисовали монстров 4 разных цветов, и решили, что их могут бить только башни своего цвета.
И нарисовали карту с 4 возможными путями. Сразу покажу получившийся геймплей с последних минут игры, на нём видно, что как только меняешь цвет башен, ИИ сразу же начинает выпускать других монстров. Получается, игрок постоянно находится в напряжении, ведь ему нужно всё время реагировать на меняющуюся обстановку. И более того, нельзя заранее выучить волны, и подготовиться под них, каждая новая попытка уникальна, и зависит от твоих действий.
В джеме было много номинаций, несколько шуточных, несколько серьёзных. Многие не поняли наше трактование темы, либо не увидели его в геймплее, поэтому в номинации Попадание в тему мы заняли только 41-ое место. Зато в номинации Приз зрительских симпатий мы заняли 10 место, что было для нас огромным достижением, так как это наше первое участие в джемах, да и в принципе мы только начинаем свой путь в геймдеве.
В добавок к оценке, мы собрали несколько десятков положительных отзывов о этой игре, и пожелания развить её в полноценную игру. Чем мы естественно и решили заняться. В полноценной игре появятся
1. Несколько десятков уровней
2. Разнообразные монстры со своими особенностями
3. Апгрейд и усиление башен
4. Герой, находящийся на поле боя, со своими умениями и прокачкой
5. Умения, которые активирует сам игрок
Прототип, сделанный на джеме, выявил и некоторые минусы. Например, темп игры был слишком высок, монстры слишком огромные и двигаются слишком быстро. Поэтому, в процессе разработки, пока не нарисованы новые монстры, игра состоит из квадратиков и прямоугольников.
Вот так выглядит игра на данный момент, буквально позавчера добавили эффект молнии (тоже черновой вариант).
Спасибо, что прочитали!
Сыграть в игру, разработанную на джеме: https://sinedsem.itch.io/sneaky-forest
Следить за разработкой в группе ВК: https://vk.com/sneaky_monsters
И заходить на стримы, где я разрабатываю игру: https://www.twitch.tv/spellsingergames
Такую задачу поставил Little.Bit пикабушникам. И на его призыв откликнулись PILOTMISHA, MorGott и Lei Radna. Поэтому теперь вы знаете, как сделать игру, скрафтить косплей, написать историю и посадить самолет. А если еще не знаете, то смотрите и учитесь.
while True learn() , взятая в Epic Game Store на бесплатной раздаче, под предлогом "почему бы и нет, может и поиграю" оправдала свои надежды и даже превзошла их. Когда выбирал ее на прохождение, думал, что она не очень то интересна. Однако мне понравилось. Хорошо вписан в сюжет игры мем о том, что котики - гении и могут взломать пентагон,или Google, но к сожалению мы их не понимаем. Еще интереснее концовка, которая хорошо привязана к истории человечества.
В игре мне понравилось многое: строить схемы, ломать голову над задачами, наблюдать за стартапами, хоть и не обошлось без одного минуса - это задачи с управлением автомобиля, с помощью программы. Не смог понять как именно надо управлять машиной, чтобы научить программу ехать правильно. Однако это всего лишь 1/5 или 1/6 от всей игры, наполненных задачами. Особенно понравились Стартапы. Написать программу для простого быстрого решения сортировки, и не важно сколько блоков потратишь и сколько времени это все будет сортироваться, мне понравилось больше чем всё остальное. А самый последний этап, когда пошли буквы и цифры, стало куда интереснее, хоть и в основном принцип не так уж и изменился. Еще хочу отметить юмор в парочке писем, когда писали с ошибками, говорили что люди, но от письма веяло кошачьими лапками.
Игру к сожалению могу посоветовать малому кругу лиц, из-за ее очень сильной повторяемости в плане геймплея. Многим покажется геймплей нудным и не интересным, а не усидчивым любителям поиграть во что-то более энергичное в такое играть, скорее всего, противопоказано. К сожалению, кроме нервного срыва и плохих впечатлений игра ничего вам не даст. Но а если вам нравятся скрупулёзный геймплей, вы обладаете усидчивостью и вам интересна история программирования, то стоит попробовать поиграть. Игра не такая сложная, как выглядит с первого раза. Она сложна больше в нахождении ошибок. Иногда такую схему накидаешь, что легче снести и сделать всё с нуля. Игра к слову заняла у меня без учета задач с управлением машинкой и с учетом того, что по большей части все задачи прошел на серебро, 16,5 часов.