В этой статье я хотел бы поделиться опытом разработки моего последнего проекта, Мафия: Игра Отказ
Mafia – это социальная загадка партии, которую играет группа людей. Это также известно как оборотень, но если вы не знакомы с этим, проверьте Эта страница Википедии Отказ
Приложение iOS 📱
Большая часть моего опыта в разработке программного обеспечения до этого момента была в разработке приложений IOS. По этой причине я начал этот проект с приложением iOS, построенным с SWIFT и SWIFTUI. Наивно, я верил, что только база данных CloudKit будет достаточно, чтобы включить многопользовательские возможности игры.
После многих часов программирования я в конечном итоге получил приложение, работающую только с базой данных, но результаты были смешаны:
Плюсы:
- Нет необходимости изучать разработку Server-Side
- Весь код – это сторона клиента
- Push-уведомления управляются сервером CloudKit
Минусы:
- Одно устройство должно быть посвящено как хост (в основном сервер)
- Никакие игровые файлы не использовались, только строковые сообщения для обновления состояния. Это означало, что устройство пропустило Уведомление Push (как часто бывает так), их игровое состояние было бы совершенно неправильно
Хотя я гордился своей работой до сих пор, я решил, что это будет полезно изучать серверную сторону.
Остальное API 💻
До этого я никогда не развил API для отдыха Поэтому у меня действительно не было подсказки, на каких языках или технологиях я должен использовать. Я начал с поиска Google («Как сделать API для отдыха»), который привел меня к учебнику для использования Express.js.
Я использовал Js, когда создание простых веб-сайтов HTML-CSS-JS лет назад Поэтому я был довольно нарисован, чтобы работать с этим. Возможно, самый большой потягивание в экспресс, однако, был тот факт, что я встал на простую API и бегаю в течение 20 минут.
Отвлекается моей новой способностью сделать отдых API, я бросился к разработке полной функции для создания игр, присоединяясь к играм и на самом деле играть в них. Я полностью наслаждался этой сменой сцены из развития iOS, но у меня есть несколько комментариев:
- Ухождение от сильно напечатанного языка, такого как Swift – тяжело Отказ Я не был готов к количеству ошибок и ошибок, которые я бы столкнулся с тем, что не было компилятора, чтобы забрать ошибки во время компиляции. Оглядываясь назад, я должен был вложить больше времени для изучения Typescript и использовал это вместо этого.
- Я использовал простое чтение файлов и запись для хранения игровых файлов. Хотя это все еще текущее решение на моем сервере, это не здорово, и я бы порекомендовал, чтобы другие нашли время, чтобы использовать правильный провайдер базы данных.
После того, как у меня был разработан сервер, я был вполне намерен использовать экземпляр AWS EC2 для развертывания его, потому что я прочитал о AWS в прошлом. Тем не менее, я наткнулся на Героку в моих исследованиях и решил использовать это вместо этого. Это было для трех основных причин:
- Щедрый свободный план. Да, сервер «идет спать» через 30 минут бездействия, но я только что добавил полезные сообщения об ошибках в мое приложение, объяснив 20 секунд ожидания, пока сервер снова начнется.
- Супер простая настройка. Я всегда боялся на самом деле настроить сервер только с командной строкой, а не решать, чтобы отступить. С Heroku это не так: я просто выбрал мой репозиторий, и им удалось установить для меня!
- GitHub Repo интеграция. Он был удивительным, чтобы мой сервер был развернут почти мгновенно после каждого толчка к производственной ветви. (Возможно, это только так удивительно для меня из-за моего опыта в качестве мобильного Dev. Я привык в течение длительного времени, чтобы пройти обзор приложений, сделать скриншоты и т. Д. Для каждого обновления.)
С моим сервером вверх и работает, пришло время идти вперед и использовать его в приложении.
Улучшение приложения iOS 📱
Теперь Остаток API работал, я решил реализовать сетевой слой клиента в качестве Swift Package, чтобы правильно модулировать мой код. Хотя я был нерешительным об использовании этого в пределах Проект Xcode, к моему удивлению, он пошел очень хорошо. Я даже использовал иерархию Swift Packages, чтобы управлять всеми способами от API к модели для UI. Ключ на вынос: Swift Package Manager – это круто! 🎉
Другие улучшения, которые я сделал, были виджеты для просмотра статистики с домашнего экрана. Хотя это было только короткое упражнение, было очень приятным для изучения нового API Widgetkit.
Сайт 💻.
Я понял, что правильно сделать эту многопользовательскую игру, мне нужен способ, которым все (есть ли у них iPhone или нет) смогут сыграть его. Я кратко рассмотрел узнать больше о развитии Kotlin и Android, но это не решило проблему доступа с настольных компьютеров.
В конце концов, я решил предоставить интерфейс разработки, попробуйте использовать реагирование. Для этого я впервые использовал Узнать реагировать Курс о кодекадемии, чтобы похваться с основы.
Я решил использовать чакра-пользователь для стилизации. Я действительно любил опыт работы с ним, поскольку он избегал файлов CSS. Я не дизайнер, кроме сайта, который я произвел, был хотя бы приемлемым!
Другая технология, которую я использовал, был Это подсчет API Отказ Он предоставил простой способ отслеживания просмотров страниц, не полагаясь слишком сильно на третьих сторонах, таких как Google и Facebook. Я бы порекомендовал это кому-либо как простой способ достичь этого.
Я был удивлен тем, как быстро я сделал весь сайт, особенно учитывая, что это мой первый проект, использующий реагирование. В конце я думаю, что он был до большого потока данных между компонентами. Я старался максимально сохранить этот Uni-Disional, и он, безусловно, окупился. Один источник правды – это файл игры, который предоставляется всем дочерним компонентам в их реквизит .
После того, как я создал все страницы, я начал смотреть на методы развертывания. Моя первая мысль была страницы Github. Тем не менее, требование использовать Hasthrooter а не Бросастрофер Для навигации отложил меня. В конце концов, я остановился на попытке выписывания неtlify. Это было здорово, потому что они управляли правильными командами для создания каталога сборки для меня, поэтому мне просто пришлось сосредоточиться на том, чтобы нажать код на производственную ветку. Как и Хероку, это был чрезвычайно простой опыт.
Больше платформ 📺.
Теперь веб-сайт был сделан, я вернулся в свой проект Xcode и решил использовать мою текущую кодовую базу, чтобы добавить больше яблочных платформ в игру.
Во-первых, я включил катализатор Mac. Это позволило мне быстро сделать приложение Mac без добавления любого дополнительного кода. Однако один вопрос, который я столкнулся, должен был сделать с резюмируемыми окнами; Это привело к глючному интерфейсу, который выглядел странно в экстремальных соотношении сторон. Чтобы исправить эту проблему, я решил установить фиксированный размер окна.
Я также построил простую версию приложения TVOS. Это позволило игрокам принять игры из своей гостиной, чтобы каждый мог видеть, кто мертвый/живой и поддерживает в курсе последних в наличии в игре. Используя Swiftui и Swift Packages, это также требует минимальный код.
Запуск! 🚀
С этим мой сайт был в Интернете, и мой набор приложений был готов к App Store!
Будущие улучшения 🕰.
Есть так много функций GamePlay, которые я хотел бы реализовать, такие как новые роли игрока и более интерактивный интерфейс. Переезд в постоянную базу данных, а не локальную файловую систему на сервере Heroku, является еще одной проблемой, которую я смотрю на предприятие.
Вывод
Мои ключевые выводы:
- Не бойтесь на серверной стороне и веб-разработке. Это действительно весело.
- Реагировать и чакра-пользовательские UI удивительны!
- Модульный код в пакеты с самого начала.
- Сделайте приложение Mac Catalyst для каждого приложения iPad – это займет так мало времени.
- Развертывание через GIT для NetLify и Heroku потрясающее.
Я абсолютно любил работать над этим проектом, и я так много узнал – Node.js, Express и реагирует. Если у вас есть время, я бы понравилось, если бы вы могли проверить мой интернет сайт или Приложение iOS – это бесплатно! Я также очень ценю любые отзывы о Охота на продукт .
Спасибо и счастливый кодирование !
Эта статья была первоначально опубликована на Мой хэшхнодный блог .
Оригинал: “https://dev.to/benrobinson16/my-development-experience-mafia-the-game-59la”