Как сделать террарию плавной
Timeweb - компания, которая размещает проекты клиентов в Интернете, регистрирует адреса сайтов и предоставляет аренду виртуальных и физических серверов. Разместите свой сайт в Сети - расскажите миру о себе!
Виртуальный хостинг
Быстрая загрузка вашего сайта, бесплатное доменное имя, SSL-сертификат и почта. Первоклассная круглосуточная поддержка.
Производительность и масштабируемые ресурсы для вашего проекта. Персональный сервер по цене виртуального хостинга.
Выделенные серверы
Быстрая загрузка вашего сайта, бесплатное доменное имя, SSL-сертификат и почта. Первоклассная круглосуточная поддержка.
Надеюсь, все хотя бы раз играли в такую замечательную игрушку, как Terraria, ведь сегодня речь пойдет о ней и о том, как не стоит писать игры с точки зрения безопасности. Если интересно — добро пожаловать под хабракат!
Начнем, пожалуй, с того, что такое Terraria и как она появилась.
Больше вы можете узнать, почитав специальные статьи об этой игре. Ну а хабр требует технической информации.
Как оно работает?
Купив игру, поиграв в нее около двух недель со своими друзьями — она мне немножко наскучила, я решил более детально изучить её структуру. Как особенности структуры — можно использовать в своих целях.
Открываем Terraria.exe, ищем точку входа Main (Program):
Видим забавные строки:
Т.е. если обычный пользователь возьмет файлы игры из папки стима и даст их другу, у которого этого стима нет — игра выдаст ошибку и откажется запускаться.
Вспомним, что игра написана с использованием — XNA, а значит, у нее должен быть главный класс игры, который наследуется от Microsoft.XNA.Framework.Game, далеко идти не пришлось, это класс Main.
А теперь давайте подумаем, что можно сделать?
Главный класс у нас Main и он имеет модификатор public (public class Main: Game )!
Чем это грозит? Мы можем создать новое приложение, которые будет импортировать наш Terraria.exe в качестве библиотеки и запустит её, а дальше — можно добавить свой компонент игры, и этот компонент будет иметь почти полный доступ к игре.
Пройдясь еще по всяким классам, увидим, что основная идея этих классов — это индийская версия синглтона статический доступ, который, кстати, тоже public.
Стоило бы придать главному классу модификатор доступа отличный от public, как все бы у нас провалилось.
Потом, я еще раз взглянул на класс Main, у него отсутствовал модификатор sealed, что так же доставило и упростило мне жизнь. Идея стала куда проще: просто унаследоваться от нашего Main.
Создаем новое консольное приложение, подключаем в качестве библиотек Microsoft.Xna.Framework.*, Terraria.exe.
Теперь создадим класс, который будет наследоваться от Main:
Теперь идем в точку входа и заставим запустится наш игровой класс:
Ну и нарисуем что-нибудь, добавим в наш переопределенный Draw:
Результат:
Работает, а значит, мы можем рисовать какие-то данные, например, где находится сундук с пиратскими сокровищами, ведь весь доступ к логике у нас есть.
Ну и напоследок сделаем что-нибудь эффектное, какой-нибудь хак.
У игрока террарии есть одно интересное свойство: ghost, которое превращает игрока в каспера приведение и позволяет проходить сквозь стены и летать по миру (наверняка, фишка для девелопера). Так сделаем же так, чтобы при нажатии и удержании Left Shift — игрок становился злым и коварным.
Идем в метод Update:
Запускаем игру и становимся приведением по клику на шифт:
Как вы понимаете, рисованием текста и другим преферансом — дело тут не ограничивается, на игру можно влиять почти полностью, отдельно надо сказать про кривость синхронизации мультиплеера — все эти изменения им не пресекаются и дают играть на серверах с этими хаками.
Отдельно хочется сказать про класс Player, где есть функция Save/Load, которая позволяет сохранять и загружать игроков соответственно, принимает и отдает она сам класс игрока Player. Т.е. мы можем изменить игрока чуть менее, чем полностью, сохранить его и использовать в игре. Или же, например, сохранить всех игроков на сервере в файлы, а потом закинуть их в папку Players и играть ими.
Всегда используйте модификаторы доступа как надо, а классы, которые конечны — sealed (запрещает наследование). Для таблетки от паранойи верности можно еще и обфусцировать код.
Так же, если реализуете мультиплеер — сделайте достойную синхронизацию и так, чтобы вся логика проверялась на сервере, а в случае резкого несоответствия — отключать игрока. К примеру, как игрок может моментально переместиться из одной точки карты в другую за время, которое меньше секунды? Увы, сервер террарии считает это нормальным.
Эта статья писалась исключительно в ознакомительных целях: как на примере простых модификаторов — можно написать нехилый хак.
Terraria является доказательством того, что для того, чтобы игра была успешной, она не должна быть мощным графическим ядром с трассировкой лучей, высокополигональными моделями и средой, требующей аппаратного обеспечения. Некоторые игры могут быть невероятными, и их можно запускать на репа, основанный исключительно на его творческом видении и игровом процессе. И хотя величайшая 2D-игра-песочница по-прежнему популярна, все платформ, остается некоторая путаница в отношении некоторых простых функций игры, в частности, как увеличивать и уменьшать масштаб в Terraria.
Итак, если вы сжигаете глаза, щурясь на меню крафта в течение десяти минут, прежде чем в конечном итоге бросить кости и заняться крафтом, просто что бы ни, читайте дальше, чтобы узнать, как управлять масштабированием в игре Terraria на более популярных платформах, таких как Android, iOS, ПК, Xbox и PS4.
PS4 / XBOX
Мобильный
Terraria Mobile — это почти то же самое, что уменьшение масштаба в любом другом телефоне; удерживайте два пальца на экране на секунду перед тем, как сдвинуть / раздвинуть. Это особенно полезно для пользователей Android и iOS, у которых больше всего проблем с пользовательским интерфейсом возникает на небольших экранах.
Как далеко вы можете приблизить Terraria
Terraria, по умолчанию, уменьшена до максимально допустимого размера и разрешения вашего экрана; увеличение до 200% от исходного значения. Вы всегда можете привязать отдельные клавиши в меню элементов управления, если по какой-то причине вам не нравятся элементы управления по умолчанию на соответствующей платформе.
Вот и все. Теперь вы знаете, как предотвратить непрекращающийся дебафф зрения, который возникает при игре в Террарию в течение нескольких часов подряд.
16 мая Terraria получила своё последнее большое дополнение под названием Journey’s End. Разработка игры ещё не завершена – за прошедший месяц к ней вышли четыре патча с оптимизациями, правками багов и другими мелкими изменениями, – но нового контента, как утверждают разработчики, в ней больше не будет.
Девятилетняя разработка Terraria подходит к концу на мажорной ноте. В день выхода Journey’s End Steam-версию игры одновременно запустили почти 500 тысяч человек – больше игроков в тот день было только в CS:GO, PUBG и Dota 2. В марте было объявлено о 30 миллионах проданных копий – этого рубежа не достигли ни The Witcher 3, ни The Last of Us, ни даже любая Call of Duty. Столь колоссальный успех небольшой инди-игры – это совокупность множества факторов, и вряд ли кому-то под силу перечислить их все. Но в этом материале я, не претендуя на всеохватность, перечислю восемь особенностей игры, которые точно поспособствовали её популярности.
1. Выход в нужное время
Внешний вид игры за девять лет почти не изменился, но кнопок в меню инвентаря стало заметно больше. Спустя годы первая версия интерфейса даже кажется почти лаконичной.
В 2013 году в честь выхода версии Terraria для iOS Эндрю Спинкс лично приехал на Е3. Его игра собирает меньше внимания, чем Payday 2, – но это пока.
2. Низкая (может быть, даже слишком низкая) цена
Все девять лет цена PC-версии Terraria оставалась неизменной: 9.99 доллара (249 рублей в России). Никаких платных DLC и микротранзакций: заплатил один раз – получаешь игру целиком, вместе со всеми вышедшими и грядущими обновлениями. Очень выгодная сделка.
Конечно, даже при такой низкой цене 30 миллионов проданных копий – это колоссальные деньги, особенно если в твоей студии всего дюжина сотрудников. Безусловно, выручки могло быть намного больше: любой уважающий себя инвестор сказал бы, что для максимизации дохода Re-Logic должна штамповать сиквелы к Terraria или хотя бы вешать ценник на дополнения. Но Re-Logic решила, что не будет этого делать.
«За прошедшие годы мы много раз обсуждали, стоит ли брать деньги за новый контент, – говорит Спинкс. – Например, мы могли продавать большое обновление 1.3 за какую-нибудь символическую сумму типа одного доллара и наверняка заработали бы таким образом несколько миллионов. И сообщество вряд ли стало бы нас за это проклинать. Но нет. Мы твёрдо убеждены, что такой лёгкий заработок – это путь в никуда.
If Terraria is our competition, I'm damned proud to compete against it. It's one seriously awesome game. *takes notes of things to copy*— Notch (@notch) May 28, 2011
3. Свобода действий
Первый разговор с гидом. Обратите внимание на темноту нижней половины экрана – так игра намекает, что под землёй есть что-то интересное. Мини-карта в правом верхнем углу и вовсе почти вся чёрная – желание исследовать мир появляется само собой.
На поверхности, впрочем, делать особенно нечего – только рубить деревья да убивать слизней. Всё самое ценное – руды драгоценных металлов, самоцветы, полезные предметы – ждёт под землёй. Нагулявшись на свежем воздухе, вы решите спуститься в пещеру – и наверняка быстро там погибнете от ловушки, летучей мыши или падения с высоты.
4. Постоянное ощущение прогресса
Вы понемногу учитесь. Спускаясь в пещеру, вы с каждым разом будете заходить всё дальше и дальше. В какой-то момент собранной руды накопится достаточно, чтобы создать из неё мощное оружие и броню – уже исследованные области после этого станут совсем простыми, и вы отправитесь в более сложные биомы, где враги опаснее, а лут ценнее. В глубинах пещер полно сундуков, где встречаются полезные предметы, но самые нужные вещи вы, как правило, будете создавать сами, выбивая нужные компоненты из врагов и ломая горные породы киркой. Доступные занятия не ограничиваются спелеологией: вы также кузнец, строитель, садовник, шахтёр, дровосек, рыбак, электрик, гольфист, музыкант, ландшафтный дизайнер и бравый воин (лучник, маг, призыватель – нужное подчеркнуть).
Пропылесосив несколько локаций и почувствовав свою силу, вы сможете призвать босса. Его убийство даст вам ресурсы невиданной прежде мощи и одновременно откроет доступ к зонам, где обитают ещё более опасные противники. Кривая сложности в Terraria похожа на лестницу: вы плавно наращиваете свою силу, в какой-то момент решаете, что играть стало слишком легко, убиваете босса, резко поднимаетесь на следующую ступеньку и снова боитесь каждого встречного врага. Никаких новых механик по ходу игры не открывается, просто у новых монстров здоровья и урона кратно больше, чем у старых.
Помню, как у меня отпала челюсть, когда я впервые увидел Уничтожителя: я и не представлял, что враги в видеоиграх могут быть такой длины.
На выбранном по умолчанию уровне сложности все найденные предметы останутся вашими навсегда, а идти к месту гибели за потерянными медяками обычно недолго: все ведущие туда туннели вы уже выкопали, осветили факелами и очистили от ловушек. Фактически вы каждую секунду побеждаете: что бы вы ни нашли, это обязательно окажется полезным и поспособствует вашему продвижению к концовке.
Этот мем содержит спойлеры, но повороты сюжета Terraria вряд ли вас поразят – да и сама игра показывает своего финального босса уже в трейлере.
5. Предсказуемый мир
Возвращаться к собственной могиле, конечно, необязательно – в этой игре вообще ничего не обязательно. Главная прелесть геймплейного цикла Terraria в том, что вы с лёгкостью можете предсказать результат любой конкретной вылазки: вы знаете, за каким ресурсом отправляетесь, где примерно его искать и что вы собираетесь из него крафтить, – но процесс каждого похода, особенно успешного, всегда уникален. Вы можете быть уверены, что в пещерах вас ждёт приключение, но заранее не знаете, какое именно, и просто идёте куда глаза глядят вслед за собственным любопытством.
В углу экрана что-то заблестело, и вот вы уже знаете, куда отправитесь после того, как разберётесь с уже найденными залежами руды. В Minecraft так не получится: там из-за перспективы от первого лица вы видите намного меньше пространства за раз.
Причём, если вы нашли какое-то интересное место, но решили туда пока не идти, вы точно знаете, что в любой момент сможете туда вернуться. Несобранная руда останется на месте, потолок пещеры не обрушится, даже монетки останутся лежать там, где были. Приходя домой, вы можете быть уверены, что персонажи, которых вы туда поселили, будут живы, а ваши сундуки с припасами не разграблены. Миры в Terraria недружелюбны к чужакам вроде вас, но при этом понятны и прогнозируемы.
Ничто в этой игре не произойдёт без вашего ведома – и, как правило, без вашего согласия. Вы практически всегда действуете проактивно, то есть, каждое ваше решение – это осознанный выбор без давления извне. Встречаются исключения: например, вторжение гоблинов или дождь из слизней, когда поверхность мира становится опаснее, чем подземелья, – но эти события происходят сравнительно редко и только после того, как игра решит, что вы к ним готовы. По меньшей мере первые пять часов вы будете жить спокойно.
Вторжение гоблинов всегда некстати. К счастью, вы возрождаетесь бесконечно, а они туповаты, так что хитрый способ расправы напрашивается сам собой: вырыть глубокую яму, уронить туда захватчиков, а потом закидать их взрывчаткой. Безотказно и дёшево: нужны только бомбы по три серебряных монеты за штуку.
Terraria дарует покой. Люди тревожатся, потому что реальность хаотична и непредсказуема – детерминированность мира игры, наоборот, успокаивает. Здесь можно проводить часы, выращивая растения, сортируя предметы по сундукам или блок за блоком добывая руду. Включите фоном интересную аудиокнигу или любимого стримера, и вам обеспечены пара безмятежных часов и гарантированный прогресс.
6. Свобода самовыражения
Каждый мир в Terraria – это несколько миллионов блоков, которые вы (и только вы) можете переставлять как заблагорассудится. Вооружившись мощным буром, можно сломать вообще все блоки в мире, сложить их к себе в инвентарь и потом расставить как угодно – было бы время и желание.
7. Сюжетная кампания длиной 100 часов
В первой версии игры было около 250 доступных для крафта и поиска предметов, всего три босса и полное отсутствие какой-либо конечной цели. Всё ещё много: если учесть, что Terraria 1.0 пробыла в разработке немногим больше четырёх месяцев, получается, что в среднем в ней появлялись по два новых предмета в день.
В 1.4 контент буквально не заканчивается: сюжетная кампания длится почти 100 часов (в 1.0 на убийство всех боссов уходило раз в 10 меньше времени), и, на каком бы этапе игры вы ни находились, вы постоянно держите в уме десяток-другой предметов, которые прямо сейчас оказались бы очень кстати. Часть из них вы рано или поздно найдёте, пока будете исследовать мир, но другие добываются только гриндом: каждого босса ради нужного лута приходится убивать по нескольку раз, а вероятности выпадения тех или иных предметов из рядовых противников астрономически малы. Полпроцента, как в случае с Ледяной косой, – это ещё по-божески: посох Слизней выбивается с шансом 1/10 000 (одна сотая процента), а у Uzi эта вероятность какое-то время была равна 1/80 000 (0.00125 %).
Зенит, самый сильный меч в игре, создаётся в общей сложности из 15 других. Некоторые из этих клинков нужно выбивать из боссов (один даже дважды), другие – крафтить из различных руд, третьи – искать в сундуках в особых локациях. Теория вероятности утверждает, что если вы зададитесь целью разжиться Зенитом, то как минимум один из мечей вам наверняка придётся добывать через боль.
8. Две игры в одной
Впрочем, все жалобы на гринд и неумолимость генератора случайных чисел справедливы только для одиночного режима. В мультиплеере игра преображается, хотя все механики остаются без изменений.
Читайте также: