ВВЕДЕНИЕ
С тех пор, как мы начали работать в 2Performant как команда из 4 стажеров, прошли 3 недели в очень быстром темпе. Нашей первой задачей было создание небольшой игры на рубине по нашему выбору. После некоторых исследований и обсуждения некоторых идей мы решили создать текстовую RPG-игру. Мы придумали простой дизайн игры: герой, который перемещается по карте, состоящей из нескольких комнат. Оттуда мы добавили детали и обогатили игру оружием, монстрами и так далее. Теперь у героя есть оружие и снаряжение, которые помогут ему сражаться с монстрами, он может найти зелья и больницы, чтобы залечить свои раны, хранилища, наполненные сокровищами, и некоторые сюрпризы по пути. Конечная цель - добраться до Win Room (если можете).
Ожидания и запросы
Этот проект был для нас хорошим способом привыкнуть к программированию на Ruby, а также узнать, как следует выполнять ООП. Никто из нас не был хорошо знаком с Ruby, но самой большой проблемой, которую нужно было преодолеть, было создание действительно модульного и простого в обслуживании приложения. Большинство проблем, которых нам приходилось избегать, сначала были неочевидны, но по мере разработки игры добавлялись новые запросы и предложения о том, как создать хороший код. Мы получили больше предложений по мере добавления новых функций, что было очень важно, потому что мы действительно понимали, почему нам пришлось принять этот дизайн вместо другого.
Основные концепции в нашей игре
С самого начала мы знали, что нам нужно придумать сильный дизайн для нашей игры. Мы постарались предвидеть множество будущих обновлений и дополнений к нашей программе и способы, чтобы их было легко реализовать. К сожалению, кое-что мы упустили, но об этом позже. А пока давайте взглянем на некоторые концепции, которые мы разработали:
- Персонаж - может быть как наш могучий герой, так и ужасное чудовище.
- Статистика - он будет включать в себя очки здоровья, атаку, защиту и может использоваться более чем в одном месте
- Комната - это обычная комната, которая может выполнять действие за героя.
- Предмет - мы разбиваем его на разные типы предметов.
- Карта - способ расположить комнаты определенным образом
- Позиция и курсор - используются в основном для того, чтобы герой мог перемещаться по карте.
- Игра - менеджер, который мог бы связать воедино компоненты
Некоторые из наиболее общих концепций были далее разделены на конкретные примеры.
Комната:
- Больница - где можно лечить
- Логово - где вы встретите монстра
- Магазин - можно было покупать разные предметы
- Хранилище - комната, наполненная сокровищами, но вы могли выбрать только одно
- Win Room - где вы хотите быть, чтобы выиграть игру
Элемент:
- Расходные материалы - зелья, дающие постоянное изменение характеристик.
- Носимые - например, головной убор или ботинки - их можно было изменить в игре.
- Оружие - похоже на носимое, но более остроумное.
Выводы
Я чувствую даже сейчас, узнав так много нового из программирования, а также из дополнительных исследований, что наш дизайн был хорош. Он разделил разные концепции на простые в обслуживании части, которые также могли развиваться с разной скоростью. В то же время мы упустили некоторые детали. В общем, для первого проекта на Ruby, а также для одного из первых, где нам действительно пришлось работать как одна команда, мы очень гордимся тем, чего достигли.
Из следующего выпуска…
В основе нашего дизайна лежали все идеи, которые у нас были о том, как со временем улучшить эту игру и будет ли это легко для нас. Но мы никогда не думали поиграть в эту игру на наших телефонах или использовать голосовой помощник. Теперь вы можете подумать, что отсутствует какая-то отдельная концепция ввода-вывода, и это правда. Мы подробнее рассмотрим технические проблемы и способы их решения в следующем посте: https://tech.2performant.com/the-obstacles-of-our-first-app-as-interns-2223781edc0a