Рубрики
Без рубрики

Журнал развития: все о структуре

Мы на полпути в режиме игры 2020 – я знаю, время летит, верно? – и проект начинает та … Tagged с Python, Gamedev, Hackathon, участниками.

Game Mode 2020 (4 серии деталей)

Мы на полпути в режиме игры 2020 – я знаю, время летит, верно? – и проект начинает обретать форму. Но если бы вы попытались запустить игру прямо сейчас, вы могли бы задаться вопросом, что мы провели последние две недели.

После названия вещей структура, вероятно, является самой сложной частью разработки приложений.

Цель: просто что -то показывать!

Трудно построить игру, когда у вас нет возможности увидеть результаты. Вот почему одна из первых целей в игровом дизайне – просто получить что -то рендеринг в соответствующем контексте, который в нашем случае будет окном.

Рендеринг изображения в окне с помощью Pygame? Насколько это могло быть? Хотя это правда, есть десятки учебных пособий, описывающих именно это, он не принесет пользы команде разработчиков, если код, используемый для того, чтобы что -то отобразить на экране, является одному коду без повторного использования.

Здесь вступает структура программы. Кто управляет окном и его поверхностями? Как доступны эти поверхности для обновления? Как игра вообще известна, когда что -то перерисовать?

Harley, один из наших участников с открытым исходным кодом, предложил использовать структуру модели-контроллера довольно рано. Это определенно соответствует проблеме, которую мы пытаемся решить, но выбор техники – это легкая часть. Теперь нам пришлось ответить на сотню вопросов, которые стали очевидными, когда мы начали строить:

  • Перераспределение окна стоит дорого! Как MapView узнает, когда MapModel была обновлена?
  • Как мы будем отслеживать позицию игрока?
  • Предоставление математической головоломки на экране сложнее, чем рендеринг игровой карты, похожей на сетку; Как мы узнаем, когда перерисовать части этого?
  • Все зависит от окна, или Window действительно управляет вещами?
  • Какая часть кода решает, когда обновлять представления?
  • Какая часть кода решает (примерно), где на экране одна вещь по отношению к другой?

Список можно продолжать, и ни один из этих вопросов не имел простых ответов. Мы даже не могли выработать большинство решений, пока не начали Просто что -то строит Анкет

Радости живого кодирования

Mousepaw Media Team широко использует Visual Studio Code Live Share. До игрового режима 2020 года мы делали много парных программ, но как только мы начали работать над этой игрой, мы нашли больше способов его использовать.

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

Мы не производили рабочий код в этих первых двух сессиях, но мы произвели что -то , и у нас было смутное представление о том, что было куда.

Мы также использовали живое кодирование Анкет Особенно я опубликую ссылку на Live Share только для чтения в проектном чате, когда я работаю, чтобы любой мог зайти и посмотреть. Это предоставляет возможности для обучения с обеих сторон; Они поднимают часть моей техники Python, и я иногда получаю ценные отзывы, когда работаю. Однако, поскольку это не требует такого же уровня внимания, как и парное программирование, наблюдатели могут работать на своем собственном деле даже во время наблюдения за мной.

Как насчет отслеживания проблем, во всяком случае?

Наша цель – получить раннюю версию игры, созданную к концу месяца, в сочетании с задержками из строя структуры, означала, что отслеживание проблем довольно упало на обочине.

Мы не без направления, заметьте! Наша первоначальная работа по планированию на вики обеспечивает довольно прочную дорожную карту. Однако, когда вы не можете по -настоящему определить, как программа даже структурирована, отслеживание проблем становится трудным.

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

Да, вы правильно прочитали … мы временно отказались от обзоров кода! Поскольку мы строили саму структуру, на которую опирается все работы, я не хотел держать четырех других людей, ожидая, когда работа одного человека будет одобрена. На данный момент мы двигаемся так быстро, что исправления в код происходят быстрее, чем сами отзывы! Легче просто разрешить несколько разбитый код на Мастер ветвь и получите его в последующем коммите. Мы начали использовать это вообще в середине этой недели, и обзоры в основном «в следующем коммите, обращайтесь к этим». Драгоценное маленькое сдерживается.

Обзоры кода и отслеживание проблем не навсегда. После того, как основная структура стабильна, мы можем восстановить оба полностью, если мы уверены, что они дополнят наши усилия, а не мешают им.

Почему да, мы делаем прогресс!

Прошлой ночью мы попали в веху. Незадолго до 9 часов вечера я наконец получил классы MapModel, MapView и Windows, общающиеся прямо в правильном способе, чтобы позволить основному игровому циклу Harley запустить обновление экрана.

Результат?

Это отдельные блоки, загруженные с изображения блоксет Wightking, обрезаны, масштабируются и отображаются на экране в соответствии с картой, сгенерированной кодом.

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

Хотя я имел честь быть первым человеком, который забрал карту на экране, эта победа действительно принадлежит всей команде! Все сыграли роль в том, чтобы получить DiamondQuest так далеко.

Это может выглядеть не так много, но это огромно. Наша структура почти сделана.

Блок -изображения являются частью DiamondQuest Tileset от Wightking for Mousepaw Media. Лицензировано в соответствии с Creative Commons Attribution-Noncommercial-Sharealik 4.0

Познакомьтесь с шахтером!

Я не могу закончить этот журнал развития, не признавая удивительную художественную работу Элизабет Ларсон, которая создает спрайты для майнера:

Они будут обработаны так, чтобы выглядеть как 16-битный персонаж, которого вы ожидаете от нашей игры. Честно говоря, я думаю, что шахтер восхитителен!

Арматный персонаж искусство Элизабет Ларсон для Mousepaw Media. Лицензировано в соответствии с Creative Commons Attribution-Noncommercial-Sharealike-Noderivative 4.0

Присоединяйся!

Видишь что -то, что тебе нравится? Мы хотели бы получить вашу помощь!

  • Если вы программист, подумайте, где вы хотите помочь: генерация карт, движение игрока, математический экран или журнал шахтеров. Конечно, если вы не можете решить, вы всегда можете подкоренить, пока не найдете что -то интересное.

  • Если вы графический дизайнер, нам нужно сокровища ! Это было бы больше 16-битной графики всех видов вкусностей: древние горшки, кости динозавра, вешалки для пальто (да, действительно), рубины, золотые самородки и, конечно же, бриллианты. Чем больше сокровищ, которые можно найти в игре, тем веселее это будет!

  • Если вы музыкант, мы любим вклад в OST. В более позднем посте я поделюсь образец оригинальной музыки меню, которую я написал для игры.

  • Если у вас есть какие -либо другие навыки, которые могут быть полезны, и хотите присоединиться, мы тоже хотим вас! Всегда есть много задач, которые нужно выполнять, даже за пределами очевидного кодирования, рисования и записи. Заходи!

Посетите наш сайт, чтобы узнать больше и присоединиться к веселью: mousepawmedia.com/developers/contributing

Game Mode 2020 (4 серии деталей)

Оригинал: “https://dev.to/mousepawmedia/development-log-all-about-structure-i8b”