Skip to content

Guide to Development (new)

Artemonim edited this page Oct 27, 2021 · 10 revisions

СТАТЬЯ В РАЗРАБОТКЕ

Добро пожаловать! Добро пожаловать в OnyxBay Development Team!

Сами вы его выбрали, или его выбрали за вас — это лучший билд из оставшихся. Я такого высокого мнения об OnyxBay, что решил разместить свой гайд здесь, на Гитхабе, столь заботливо предоставленного нашими Onyx Owners. Я горжусь тем, что называю Onyx своим домом.

Итак, собираетесь ли вы остаться здесь, или же вас ждут неизвестные дали, добро пожаловать в OnyxBay Development Team. Здесь интересно.

DreamMaker

Ещё в 1994 году, когда Интернет был безобидным младенцем, "сёрфинг" означал отдых на свежем воздухе, а "Yahoo!" было выражением ликования, Дэн обратился ко мне со следующим предложением: "Давайте создадим игру". Тогда, в разгар наших плодотворных студенческих лет, мы посвящали большую часть своего свободного времени попыткам разрушить квантовую механику, но наши многочисленные попытки не увенчались успехом. Честно говоря, это меня уже вымотало, а предложение Дэна звучало как идеальное развлечение, поэтому я спросил: "Что вы имеете в виду, коллега-учёный, убийца континуума?". Я и не подозревал, что это, казалось бы, безобидное изыскание проведёт меня по пути, столь полному идей и вдохновения, что, попав в ловушку, я никогда больше не смогу сбежать в безопасное убежище того мира, для которого предназначалась моя учёная степень. Если вы не хотите, чтобы вас постигла та же участь, я советую вам прекратить читать прямо сейчас!

Tom of Dantom; June 9, 2000; Irvine, California

Язык - это не одинокое существо. Оно социально по своей природе. Я искал компанию искателей приключений, обладающих острым умом и готовых отправиться в трудный поиск. Мы называли себя Дантом. Вскоре стало очевидно, что даже наша преданная группа исследователей не сможет составить достаточную компанию этому гостю, Языку Миров. Мы решили, что его обиталище должно находиться в самих эфирах - месте встречи тысяч и миллионов разумов. Поэтому мы начали строить такое место, которое называется BYOND

Dan of Dantom; November 11, 1999; Jalandhar, India

Нужные нам умы начали прибывать, привлечённые смелым и дразнящим заявлением: Build Your Own Net Dream. То, что начиналось как капля, вскоре превратилось в струйку, а затем в ревущий поток понимания. Мы говорили на языке творения! Добыча, которую мы так старательно искали, поселилась среди нас. Этот язык миров внутри миров, когда иллюзия становится реальностью, называется DM, Dream Maker, Строитель Мечт.

Хронология разработки DreamMaker

Подготовка рабочей среды

Для начала вам стоит подготовить себя - ознакомьтесь с процессом обработки багрепортов и фичреквестов

  1. Установите BYOND или обновите его до версии, рекомендуемой для использования нашего билда
  2. GitHub Desktop
  3. Visual Studio Code
    1. BYOND: Помогает VS Code понимать BYOND-код, а VSC в свою очередь поможет его писать.
    2. indent-rainbow: Раскрашивает табуляцию разных уровней в разные цвета. Помогает ориентироваться в коде.
    3. GitLens — Git supercharged
      1. Позволяет увидеть, когда и кто изменял код в последний раз и во все предыдущие коммиты
      2. Позволяет сравнить текущий код с актуальной и предыдущими версиями
    4. Yet another Discord Presence: Теперь в Discord-профиле видно, какой вы крутой кодер 😎
  4. DeskPins: Позволяет закрепить любое окно поверх всех окон. Можно закрепить маленькое окно клиента игры и удобно дебажить в развёрнутом на фоне VSCode.

Ознакомьтесь с нашим общим Гайдом по Разработке. Сейчас многое вам может быть не ясно, так что в ближайшие недели вы откроете его ещё не один раз, однако, прочитать его сейчас необходимо.

Работа с кодом

Компьютерный программист упорядочивает буквы, образуя слова с неясным значением, организует их в фразы, непонятные обычному уму, и формулирует на их основе алгоритм - своего рода эфемерный дух, который в мгновение ока может исполнить огромное количество работы, а, возможно, и какую-нибудь пакость, если его хозяин допустил малейшую ошибку. Компьютерный программист - это волшебник, человек, сами слова которого обладают силой.

Dan of Dantom; November 11, 1999; Jalandhar, India

Работа со спрайтами

Работа с картой

Итак, ты хочешь поиграть в бога. Это случается с определенной частью нас - с желанием создать мир. Это может быть фантастическое место, страна приключений и тайн, или это может быть уединённый остров, секретное убежище или аванпост на Марсе - кто знает.

Dan of Dantom; November 11, 1999; Jalandhar, India

Добравшись сюда автор этого куска гайда предполагает, что вы уже пробовали ставить объекты на карте, умеете их поворачивать и менять названия шлюзам. Тут мы пройдемся по более сложным вещам и тому, что следует учитывать в маппинге. P.S. Автор гайда рекомендует использовать StrongDmm, как инструмент для редактирования карт, однако заниматься маппингом можно и в стандартном бульоновском редакторе.

Быстрый чеклист после создания комнаты

  • Есть ли в зоне АПЦ, Air и Fire Alarm?

  • Проведены ли провода к АПЦ?

  • Достаточно ли в комнате света?

  • Не забыл ли ты поставить интеркомы?

  • Камеры наблюдения точно покрывают всю комнату?

  • В комнате достаточно ventов и scrubberов?

  • Все венты и скрабберы подключены к общей атмосферной магистрали?

  • Правильно ли выданы доступы на шлюзах?

  • Верно ли настроены все id для кнопок, если те используются?

  • Случайно нигде не стоит два провода/две одинаковые трубы на одном тайле?

  • Не слишком ли много места ты выделил под эту комнату?

Общие правила Маппинга

Атмосфера

  • Каждая зона должна иметь как минимум одну панель воздушной тревоги.
  • Каждая КОМНАТА (отделённый стенами кусок пространства) должна иметь как минимум один вентиляционный насос и один газоочиститель, которые подключены к общей системе воздухоснабжения.
  • Убедитесь, что Вы расположили Fire Alarm и Fire Doors в пределах зоны, чтобы она могла быть заблокирована. Любая точка, в которой и должно происходить горение, не должна иметь тревогу у источника тепла (например, в камере смешивания токсинов). Убедитесь, что все используемые простыми гражданскими входы и выходы (кроме техтоннелей, чтобы сбежать от пожара) могут быть закрыты.
  • Безвоздушный пол (Airless Floor) подходит для комнат, в которых происходит смешивание газов или клеток в космосе, но не для мест, в которых часто находятся люди. Ставьте их на внешних клетках (во избежание лагов) и в комнатах, требующих смешивания газов (полигон токсинов, печь). Проверьте дважды, что мобы в новой комнате не задохнутся.

Энергоснабжение

  • В каждой зоне, если ей нужна энергия, необходим минимум один АПЦ. Каждой комнате с большим количеством оборудования необходим дополнительный АПЦ для разделения напряжение и предотвращения раннего отключения питания.
  • Удостоверьтесь что провода идут от основной сети и соединены с АПЦ в вашей зоне. Если оборудование в вашей зоне требует прямого подключения к энергосети, то проведите провода от энергосети под необходимый аппарат. Провода могут использоваться для создание наэлектризованной решетки (просто проведите провода под решётку), удостоверьтесь что провода соединёны с энергосетью (а то решетки не будут бить людей током при соприкосновении).

Мусоропровод

Грузопровод работает в циклическом потоке, начинающемся и заканчивающемся в карго (Cargo Office). Грузопровод начинается тут и тут же заканчивается. У этого цикла есть несколько ответвлений: Мусоропровод (Trash), который соединяется с основным грузопроводом и Посылочное ответвление со своей системой сортировки в примыкающих частях. Помните, что добавляя новые ответвления, не стоит смешивать поток мусора и посылок.

Шлюзы

  • Названия шлюзов должны в кратко обозначать комнату, в которой они находятся. Не нужно называть шлюз для аплоуда "Artificial Intelligence Uploading Room With Bolts", если можно просто "Upload"
  • Следует выдавать достаточный доступ на все шлюзы (переменная req_access), не забывая про доступы в технические помещения. Полный список всех доступов находится тут.

Оборудование

  • Лампочки используют довольно много энергии, так что постарайтесь поставить достаточно, чтобы полностью осветить комнату, но не настолько много, чтобы питание закончилось через десять минут после начала раунда.
  • Если какая-то комната требует или производит материалы, поставьте как минимум одну консоль запросов (Request Console) в месте, на котором её будет видно.
  • В каждой комнате должно быть как минимум по одному интеркому (intercom). Нужен он для того, чтобы радиосвязь была и без наушников. В больших комнатах может потребоваться больше одного.
  • В большинстве зон должно быть достаточно камер (security cameras), чтобы можно было разглядеть территорию с одной консоли, но не слишком рядом. В больших комнатах может понадобиться больше одной.

Прочее

Подумайте, насколько обезопасена будет комната. Если эта зона будет важна, используйте укреплённые стены и электрифицированные окна. Для менее подверженных риску помещений используйте обычные стены и окна на Ваше усмотрение (хотя обычные стёкла очень легко бьются). В каждой комнате должно быть одно наиболее слабое место (задний ход, другой вход или окно) на случай, если основной вход выйдет из строя (или, что более вероятно, чтобы было предателям легче вламываться).

Понимайте, что должно быть в зоне, старайтесь соблюдать баланс между размером комнаты и количеством оборудования. В больших комнатах может понадобиться несколько АПЦ, чтобы избежать быстрого истощения энергии. Не забывайте ставить аппаратуру, связанную с комнатой - раздатчик лекарств в медотсеке, охранные компьютеры в бриге и т.п.

Step_x, step_y и синдром сломавшегося передвижения

Итак, Вы скомпилировали карту и, внезапно, вместо того, чтобы увидеть анимацию Вашего передвижения с клетки на клетку, Вы просто появляетесь на другой клетке?

Поэтому в движок были добавлены переменные step_x и step_y, позволяющие движение по пикселам. Они присутствуют у каждого атома. Принцип их работы в том, что когда Вы ставите новый объект на карте, чтобы использовать эти самые переменные, игра думает, что Вы избавились от всех стандартных настроек движения и написали свои собственные, хоть Вы ничего и не писали.

Чтобы избавиться от этой проблемы, нужно сохранить карту, закрыть Dream Maker и открыть файл карты (с расширением .dmm) в текстовом редакторе, например, в блокноте. Найдите в файле строки с step_x и step_y, а затем уберите все их упоминания. Когда их в коде карты не останется, сохраните файл, снова откройте её в Dream Maker и перекомпилируйте код.