Разработка клиент-серверного игрового приложения

NovaInfo 67, с.1-6
Опубликовано
Раздел: Физико-математические науки
Просмотров за месяц: 1
CC BY-NC

Аннотация

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

Ключевые слова

ОНЛАЙН, КОЛЛЕКЦИОННАЯ КАРТОЧНАЯ ИГРА

Текст научной работы

Коллекционная карточная игра (ККИ) — разновидность настольных и компьютерных игр. В отличие от традиционных карточных игр, коллекционные карточные игры используют специальные карты, схожие с коллекционными карточками. В крупных коллекционных карточных играх могут существовать тысячи различных карт. Нельзя приобрести все существующие карты одновременно; вместо этого от игроков ожидается, что они будут приобретать карты небольшими наборами и составлять свои индивидуальные колоды. Собственно игра между игроками ведётся с использованием различных правил, которые могут сильно различаться для разных игр.

В XIX веке в США появилось новое хобби — коллекционирование бейсбольных карточек. Именно оно и было началом ККИ. Но для ККИ им не хватало двух аспектов: особенностей каждой карточки и правил игры. В связи с этим в 1997 году математик Ричард Гарфилд разработал свою ККИ — Magic: The Gathering. Тысячи людей становились игроками, покупая, выигрывая и обменивая карты. Вскоре начали организовываться первые крупные игровые турниры, на которых собирались лучшие игроки, чтобы определить сильнейшего из них [2].

Существует большое количество ККИ разных издателей. Каждая ККИ имеет свою структуру, свои правила, свои карты. Тем не менее, у них есть общие черты:

  • В подавляющем своём большинстве ККИ представляют собой стратегические игры с элементом случайности;
  • Играющие сами составляют колоды карт. В ККИ имеется огромное количество карт — намного больше, чем может попасть в колоду;
  • Карты продаются в виде случайных наборов. Поэтому, чтобы собрать конкурентоспособную колоду, приходится не только покупать эти наборы в магазине, но и покупать, продавать и менять карты «из рук в руки».

Именно этот аспект будет рассмотрен в данной статье, учитывая следующее:

  • Игра ведется между двумя игроками;
  • Для игры необходима колода, созданная игроком из игровых карт;
  • Игровой процесс проходит на игровом поле, по которому происходит передвижение карт.

Проанализировав все имеющиеся варианты используемых компиляторов, было решено остановиться на компиляторе от компании Embarcadero — RAD Studio XE10.1 Berlin.

Embarcadero RAD Studio XE представляет собой полнофункциональный набор средств разработки приложений, который позволяет быстро и наглядно создавать приложения с графическим пользовательским интерфейсом для Windows, .NET, PHP и веб-решений [1].

Опираясь на вышеописанные положения, в приложении было реализовано:

  1. База данных имеющихся игровых карт;
  2. Редактор колоды, в котором каждый игрок создаст себе персональную колоду карт;
  3. Игровое поле, на котором и будет проходить сама игра;
  4. Онлайн-соединение, с помощью которого и будет выполняться связь игроков между собой;
  5. Чат для общения игроков;
  6. Лог действий, запоминающий все действия игроков и позволяющий решить возможные проблемные ситуации.

Были изучены структура и содержание игровой карты (Рис. 1), на основе которых была реализована база данных в СУБД SQLite.

Пример игровой карты
Рисунок 1. Пример игровой карты

Для хранения информации об одной карте будем использовать переменную Card заранее созданного типа-записи — TCard:

TCard = record    name, race, nation, clan: string;    skill: array [1 .. 6] of string;    trigger, cardtype, grade, power, def: integer;    crit: byte;  end;

Процедура ReadCard переписывает значения переменной Card, считывая данные из базы данным по номеру (id):

procedure ReadCard(id: integer);begin  Form1.SQLQuery1.SQL.Clear;  Form1.SQLQuery1.SQL.Add    ('SELECT CardName, CardRace, CardNation,  CardClan, CardSkill_1, CardSkill_2, CardSkill_3, CardSkill_4, CardSkill_5, CardSkill_6, CardTrigger, CardType, CardGrade, CardPower, CardShield, CardCrit');  Form1.SQLQuery1.SQL.Add    ('FROM CardStats INNER JOIN CardInfoEng ON CardStats.rowid = CardInfoEng.rowid WHERE CardStats.rowid = :id;');  Form1.SQLQuery1.ParamByName('id').value := id;  Form1.SQLQuery1.Open;  with Card do  begin  name := Form1.SQLQuery1.Fields[0].AsString;  race := Form1.SQLQuery1.Fields[1].AsString;  nation := Form1.SQLQuery1.Fields[2].AsString;  clan := Form1.SQLQuery1.Fields[3].AsString;  skill[1] := Form1.SQLQuery1.Fields[4].AsString;  skill[2] := Form1.SQLQuery1.Fields[5].AsString;  skill[3] := Form1.SQLQuery1.Fields[6].AsString;  skill[4] := Form1.SQLQuery1.Fields[7].AsString;  skill[5] := Form1.SQLQuery1.Fields[8].AsString;  skill[6] := Form1.SQLQuery1.Fields[9].AsString;  trigger := Form1.SQLQuery1.Fields[10].value;  cardtype := Form1.SQLQuery1.Fields[11].value;  grade := Form1.SQLQuery1.Fields[12].value;  power := Form1.SQLQuery1.Fields[13].value;  def := Form1.SQLQuery1.Fields[14].value;  crit := Form1.SQLQuery1.Fields[15].value;  end;end;

Для составления и редактирования колод был реализован Редактор колоды (Рис. 2), включающий в себя следующие функции:

  • Вывод информации о карте;
  • Поиск карт с определенными параметрами в базе данных;
  • Добавление и удаление карт из колоды;
  • Сохранение колоды для дальнейшего использования;
  • Загрузка заранее собранной колоды для ее редактирования.
Редактор колоды
Рисунок 2. Редактор колоды

Помимо игровых карт, было изучено игровое поле, которое и было в дальнейшем реализовано в Основном игровом окне (Рис. 3).

Основное игровое окно
Рисунок 3. Основное игровое окно

Представленные приложения позволяют игрокам всего мира играть между собой в коллекционную карточную игру «Cardfight!! Vanguard» без покупки реально существующих игровых карт на удаленном расстоянии друг от друга. Каждый игрок может воспользоваться приложением, создав свою виртуальную колоду карт, а также испытать ее в игре с другими людьми, находящимися в данный момент на игровом сервере. Кроме того, игровой сервер хранит в себе информацию о результатах игры — победах, поражениях и последних противников, что позволяет оценивать игроков по их умениям.

Читайте также

Список литературы

  1. Дмитрий Осипов, «Delphi. Профессиональное программирование», Издательство Символ-Плюс, 2006.
  2. Сайт энциклопедия ККИ «Cardfight!! Vanguard Wiki» [Электронный ресурс]. – Режим доступа: http://cardfight.wikia.com/wiki/Cardfight!!_Vanguard_Wiki/, свободный

Цитировать

Хасанова, С.Л. Разработка клиент-серверного игрового приложения / С.Л. Хасанова, Е.А. Кузнецов. — Текст : электронный // NovaInfo, 2017. — № 67. — С. 1-6. — URL: https://novainfo.ru/article/13317 (дата обращения: 20.04.2022).

Поделиться