Перейти к содержимому

  •      Вход   
  • Регистрация

Фото

Вопрос к разрабам.


  • Please log in to reply
1 ответов в этой теме

#1 Андрій Коваль

Андрій Коваль

    Капитан

  • Бета-тестеры
  • PipPipPipPip
  • 158 сообщений

Отправлено 05 Ноябрь 2014 - 16:09

Сразу перейдем к вопросам.

1. Как реализовано добавление 3й оси к 2д движку?

2. Как реализована реакция на собития в движке? Что взято за основу (от каких обьектов отталкиваетесь)? (интересует логика, а языки, инструменты, не играют роли)

 

Немного разжую для простых обывателей.

 

Надоело в каждой теме отписываться. Да и надо освежить этот вопрос, так как много всего разбросано.

 

Этой игре удается сделать то, что уже не сделать ни одной игре. Ей удается УДИВЛЯТЬ!!!

А удивлять старого программера поколесившего по свету могут только 2 вещи. Девки и баги.

Тему девок (простите мне) опустим. А тему багов сведем к еще одному вопросу - "Ну как так может быть?"

 

Мне просто в голову не укладывается как могут "шахматы" жадно жрать ресурсы да и еще с таким низким КПД на выходе; как (приделав 3ю ось) грены не влетают то в окна, то в двери, упираюстя об пакет мусора и не дают возможности кинуть на соседнюю клетку, не влетают под металические каркасы (антены и тому подобное. Боец забегает, а гренам вход запрещен);

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

 

Много еще подобного наталкивает на дурные мысли и я все время гоню их прочь.

Я просто не понимаю.

Вот по етому и задал 2 вопроса которые откроют корень проблем.

 

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

 

(много букв, старался писать поинтересней)

 

Начинаем деление.

Игра - серверная часть, клиентская часть.

Серверная часть - все что касается передачи и защиты данных, логика движка.

Клиентская часть - передача данных, движок, защита данных.

Движок - логика, визуализация.

 

И так приступим к фундаменту игры. К движку.

 

Что самое главное в шахматах?

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

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

Это не фигуры ходят по доске 8х8, а на доске каждая клетка меняет свои свойства. И каждая клетка говорит, я черная/белая, одна из 64 похожих, со своими координатами, не занятая фигурой, не в состоянии атаки. И все.

Доске наплевать на то как ходят фигури и на правила шахмат.  Ее основная задача менять состояние.

 

Так и здесь в игре мы имеем доску размером n*m которая будет менять состояние.

Самое интересное, что нет нималейших запретов и сложностей для построения доски любой формы.

Всего лишь массив обьектов со свойствами с возможностью легко добавить новые свойства наследованием.

 

Дальше на доску надо раставить фигуры - статические, динамические.

Динамические фигуры - бойцы. Статические фигуры все остальное.

 

Теперь надо собрать конструктов. Тут без держания общей картины в голове не обойтись.

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

Подумать как реализовать отверстия по вертикальной оси. Это важный вопрос. Он касается размера клетки и вида. Стоит ли клетку превратить в куб? А может просто сделать прокецию сверху вниз и вложить в свойства нужные данные? Как решить проблему с балистикой. Ведь пули будут лететь по прямой, а надо реализовать кривую. Если клетки будут слишком большими, то будет слишком много мертвых зон. Если слишком маленькие - много ненужной информации(хотя тут как посмотреть бойцы ведь тоже не толщиной с картон). Ну и про нагрузку на процессор надо не забыть.

 

И еще немаловажный фактор. Делается ли движок снуля или дорабатывается старый.

Ставлю себя на место разрабов.

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

Три проблемы:

1. Отверстия в обьектах и сами обьекты.

2. Мертыве зоны.

3. Реализация кривой полета.

 

Просматрываю текстуры и вижу, что поширине все отверстия кратные клетки. С высотой проблемы. Значит нужно.....

А нифига не нужно. :) Можно в свойства клетки прописать массив координат отверстий для окон, дверей и подобным обьектам. С крышами, антенами сложней. Разбиваем клетку на меншие и делаем "оцыфровку"(имеем динамический массив массивов [n,2]. В маленький вписываем 2 числа. Начальную и конечную высоту пустоты). Вспоминаю, что стены имеют же толщину и вношу поправку. Потом смотрю на это чудо в большую и мелкую клетку и как это все будет впустую висеть когда кривую рисовать придется и доходит, что можно мелкую разбивку делать налету (динамическое создание обьектов).

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

(Мелочь, а приятно. вещи обретают обьем.)

 

А теперь довольный на покурить.

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

 

Тааак. Полет. Есть пару вещей.

1. Просчитать кривую раз плюнуть. Мат. формул по балистике не надо решать. Переводим в код.

2. Игровая дальность и отсутствие стартовой скорости снаряда, вес, тип оружия.

Тут надо плюнуть на вес. И отталкиваться от дальности. Немножко магии подтасовки и получим все что надо.

3. Специфика действия оружия и снаряда, визуализация.

 Специфику отрабатываем через 1й пункт.

динамически рисуем нужную (согласно оружия) дугу. Любая преграда (непопадание по высоте в малую клетку учитывая размер снаряда) и кривая пропадает. (Все высоты знаем.)

Не забываем о точки начала полета снаряда. Опять спасают динамически созданные малые квадратики.

Они же и позволяют выбрать любую точку начала полета.

 

И на этом етапе приходит прозрение, что появляется возможность реализовать (полностью переработать) стрельбу.

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

Правда ширина и толщина достаточно грубая. Но именно для бойцов можно и создать 3й тип еще мельче клеток.

 

Что еще можно сказать. Ура. 3я ось заработала.

Фигуры раставили, стрелять научились. Надо научиться видеть. (описываю методы)

1. Обзор 360 градусов с заданным радиусом видимости.

Все большие клетки получают свойство "под прицелом"

2. Проверка видимости. Масштаб 3 типа клеток.

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

 

На этом пока все. Слишком много текста :)

Думал, что надо меньше. Придется завести тему в правильном разделе.

Малыми шажками идея игры опускается на доску.


  • 3

#2 Андрій Коваль

Андрій Коваль

    Капитан

  • Бета-тестеры
  • PipPipPipPip
  • 158 сообщений

Отправлено 05 Ноябрь 2014 - 18:05

Кстати. Выше описанное - это скелет. После слов Администрации "Мы добавили 3 ось" выше сказанное должно было воплотиться в жизнь.

 

К етому скелету должна прилагаться тестовая(вые) карта(ы) где происходит демонстрация возможностей движка. Ето я забегаю наперед. На той тестовой площадке с слегкостью можно оттачивать баланс, доработки движка. Это первая линия теста. На 2й линии бета. (Такое чувство, что таких карт у разрабов нет, как и первичного тестирования.)

 

Почему этого не случилось? Еще один маленький вопрос.

 

Тут даже не дело в воплощении всего и сразу. Доработки должны расширать функционал, а не вносить в него бардак.

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

Ведь можно было написать базу и "оцифровать" понемножку все нужные обьекты и потом снять заглушки и перевести карту на более гибкую.

Потом запустить наполную механику боев.

 

Можно не останавливая игры потихоньку переехать на новый движок. Только надо этого хотеть.


  • 0




0 посетителей читают эту тему

0 пользователей, 0 гостей, 0 скрытых