Тест на возраст
Только при виде этой картинки в голове начинает играть музыка
Я разработчик игр. И раз уж на этом форуме можно просто так поделиться своим творчеством, то я бы хотел это периодически делать. Собственно вот что-то из моего творчества.
Карантин — третий месяц свободного времени. Вспомнил я о своем хобби написание андроид игр.
Первая сложность, с которой столкнулся, это естественно тема и сюжет.
Подумав несколько дней идеальный баланс между «придумал» и «смогу сделать» так и не был найден.
Поэтому полистав странички Гугл маркета, решил взять старые добрые танчики «Battle city» и сделать в них то — чего там не хватало)))
Тем более что найти в интернете материалы было совсем не сложно.
На всё ушло около двух месяцев.
И вот я готов Вам презентовать результат!
За основу игры World of tanks 1990 Operation Eagle Claw.
Взята классическая игра Battle city! Известная своей культовостью с 1985 года.
В игре World of tanks 1990: Operation Eagle Claw задача игрока уничтожить все вражеские танки и защитить свою базу - орла!
В World of tanks 1990 в дополнение к классическому варианту Battle city добавлены улучшения танка игрока, покупка новых танков, сражения с боссом после каждого десятого уровня!
За каждый пройденный уровень игроку начисляются игровые монеты, за которые Вы можете покупать новые танки и улучшения к ним!
Улучшения Вашего танка:
1. Бронебойный снаряд – пробивает броню в локации и уничтожает одним попаданием бронированные танки противника.
2. Форсированный двигатель – ускоряет танк игрока на 30%
3. Навесная броня – принимает на себя урон от первого попадания вражеского снаряда в танк игрока.
4. Ускоренная перезарядка – повышает скорострельность танка игрока на 30%
5. Ракетная установка – наводится на вражеский танк и выпускает самонаводящуюся ракету.
6. Залповая ракетная установка – выпускает три ракеты, каждая ракета наводится на отдельный вражеский танк. Что позволяет уничтожить сразу три вражеских танка одним выстрелом, или нанести существенный урон боссу!
Покупка танков игрока.
На Ваш выбор представлены шесть классических танков, каждый из которых имеет свои свойства и характеристики:
• Скорострельность
• Броня
• Скорость движения
Один премиум танк – «Буря в пустыне»:
• Высокая скорострельность
• Прочная броня
• Высокая скорость движения
• Вращающаяся башня – наводится на врага в зоне поражения, что позволяет поражать танки противника находящиеся с боку или сзади от танка игрока!
Вам предстоит сражаться с танками противника на пятнадцати локациях, подбирая под каждую свою тактику.
По мере прохождения повышается сложность игры - количество вражеских танков возрастает.
Всего в игре 50 классических и 5 босс уровней
В босс уровнях нет штаба игрока орла. Единственная задача – уничтожить противника!
Каждый босс имеет свою уникальную тактику и вооружение:
1. Green Dragon - классический танк с вращающейся башней, тяжелой броней и быстрой перезарядкой.
2. Double Dragon – два быстрых, маневренных танка со средним бронированием, вращающимися башнями и средней скоростью перезарядки.
3. Vertol – боевой вертолет с двумя скорострельными пушками и самонаводящейся ракетной установкой.
4. Big Shot – тяжелый, большой, двух – башенный танк с залповой ракетной установкой и усиленным бронированием.
5. War Ship – боевой корабль с двумя скорострельными орудиями, двумя залповыми ракетными установками и одной тяжелой ракетной установкой!
Привет!
То что вы видите сверху - диаграмма клиент-серверного взаимодействие в главном меню игры с момента запуска и до момента попадания обоих игроков в основное меню.
Как вы можете догадаться, речь пойдет о мультиплеере и о сетевом его части в частности.
После билда 1.0.0 (последнего опубликованного на сайте) я решил что пришло время заняться мультиплеерной составляющей. Выбор пал на локальный мультиплеер. В меня появилась функция начать вдвоем, а код был вынужден изрядно перестроиться под натиском новых требований. Показывать тут особо нечего, ну, разве что, как выглядело главное меню:
Во всем остальном внешне ничего не поменялось, за исключкнием того, что все экраны (выбор класса, меню перед боем) повторялись дважды, по разу для каждого игрока.
В самой же битве появлялись (да, впрочем и появляются) 2 танка вместо одного, первый управляется на WASD, второй же на стрелки.
К тому моментуу меня уже давненько терзали смутные сомнения по поводу того насколько впринципе актуален локальный мультиплеер (когда все сидят по домам и общаются через интернет), но когда я начал непосредственно щупать это в бою, вскрылась еще одна проблема: управление. Где брать вторую мышку для управления башней второго танка? Управление башней на клавиатуре? Джойстики?
Такие думы окончательно меня догрызли и было принато решение заняться сразу сетевым кодом, поскольку он решает обе проблемы сразу. Я примерно понимал во что я ввязываюсь, но даже мои самые писсимистичные ожидания были недооценкой того с чем я столкнулся на самом деле.
Тезисно покажу основные проблемы, чуть подробнее, как всегда, в видео. В порядке влияния на сложность:
* Нулевой опыт разработки мультиплеерных игр и лишь базовое понимание основных концептов клиент - серверного взаимодействия.
* Очень базовая поддержка сетевых функций движком игры.
* Внутренние ограничения движка, которые непосредственно влияют на сетевой код.
* Отсутсвие внятных гайдов по созданию мультиплеерных игр на движке, а те что есть не выдерживают никакой критики и годятся лишь в плане обучения самым базам.
В итоге разработка превратилась в замкнутый цикл:
* Долго заставляешь себя сесть за разработку.
* Садишься, долго вспоминаешь что и где.
* Пытаешься решить последнюю нерешенную проблему.
* Тратишь кучу времени в попытках ее решить.
* Выясняешь, что проблемы глубже и нужно решить еще пару проблем прежде чем разобраться с этой.
* Свободное время заканчивается, ты вынужден остановиться на полпути.
И так по кругу. Иногда бывало и хуже, например, тебе не просто нужно решить еще пару проблем, но и переделать много из того что было сделано до этого, так как оно просто не работает или концептуально неправильно.
Кто знаком с тем как работает система мотиваций человева знает, что для того чтобы было желание за что-то браться, человеку нужно достигать долгосрочных целей, в моем случае это было написание базового скелета сетевой игры. Если долгосрочная цель выполняется, мозг получает дозу серотонина и это подстегивает его на заниматия новыми делами. А если мозг этот серотонин не получает, желание продолжать или браться за новые начинания угасает. В моем случае это и происходило на протяжении 10 месяцев, так как ровно столько я не мог довести сетевой код до состояния, которое меня хоть сколько-бы удовлетворяло.
Так было до вчерашнего дня.
Наконец, я нахожусь в той стадии когда могу сказать да, это готово, двигаемся дальше.
Слева - сервер, справа - клиент. Как видите, действия танков точно реплицируются, и, что более важно, они точно синхронизированы по времени. Не обращайте внимание на положение башен, это действие еще не отправляется по сети.
Самый базовый скелет сетевой игры готов, теперь буду наращивать на нем мышцы. Но впереди еще очень и очень много работы.
Буду стараться держать вас в курсе, по мере возможностей.
Рекомендую проверять youtube канал, так как буду выкладывать там небольшие видео прогресса, тех. сложности и просто рассуждения, которыми не хотел бы захламлять свой профиль здесь.
Всем пока!