Четверг, 14 Ноября 2019, 18:50

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Создание TBS. Нужна помощь. (Боевка на подобии Shining Force)
Создание TBS. Нужна помощь.
nekroo98Дата: Воскресенье, 13 Ноября 2011, 03:50 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Итак, здравствуйте!
Скажу сразу, я знаком с программированием, но только не игр. Ни разу не сталкивался с таким.

Однако, появилась необходимость для перенесения выдуманной игры и на комп. Но появилось несколько трудностей.
Для начала немного об игре. Если кто играл в Shining Force то имеет представление.Остальные же могут представить боевку HoMM5, где не гексоганальное поле, а "квадратиковое" smile . ах да, есть ещё одна похожаа игра - шахматы, только сдесь все гораздо запутаннее и сложнее. Так вот, я хочу создать нечто подобное, но более сложное, а в чем то и более простое.

По порядку, в чем нужна ваша помощь, советы, ссылки, и тыкания в поиск:

1. Самое наверное для ВАС простое - как создать поле состоящее из квадратов? Более того, как сделать так, чтобы персонажи двигались по полю следующим образом: нажатие влево - перемещение на 1 клетку влево, вниз - на 1 клетку вниз? При этом, за каждую пройденную клетку вычитаются очки. Ах да, о них ниже.

2. Каждое дейтвие стоит очков. Как то атака, передвижение, использование скиллов...Игра для 2х игроков, в режиме хот-сит, в начале хода одного игрока бросаются кубики, выпавшее значение он может потратить на действия. Когда у него кончаются очки, ход переходит к другому. Вопрос - как реализовать это? Чтение, запись, генератор случайных чисел в Game Maker.

Да, я полнейший нуб, но очень быстро учусь, пожалуста отнеситесь с пониманием cry

3. Возможно ли создание нечто подобного - нажатие клавиши вызывает менюшку, в менюшке есть 2 кнопки - атака и применение скилла. Так вот, происходит проверка на возможность атаки в данном месте, и собственно происходит атака. Более того, я даже не знаю как сделать Жизни персонажам, а точнее их уменьшение при атаке. Ну и саму атаку тоже. Тут есть тонкость - если все же кто то помнит боевку Sh. Force, там например воины могут атаковать только в упор. Лучники атаковать в упорн НЕ могут, но стреляют на несколько клеток вперед, в том числе и по диагонали. Ну и все такое прочее.

4. При каждой атаке происходят 3 вещи: Просчет шанса критического удара, если есть, то наносится увеличенный урон; просчет блокировки врага - если сработало, то урон не наносится, если не сработало то идем дальше; просчет уворота врага, если сработало урон не наносится, если не сработало, то атака проходит и только тогда наносит урон. Я предполагаю, что сделать это можно с помощью рандомайзера, но вот незадача, я совершенно не знаю и его(как сделать, куда писать, куда вставлять..... wacko ). Более того, урон который вычтется из здоровья персонажей зависит от атаки атакующего(lol) и защиты обороняющегося, а точнее от разницы этих параметров. Как, что?

5. Важным моментом игры является то, в какую сторону "смотрит" персонаж. Обьясню - ты всегда повернут вверх, враг всегда повернут вниз. Так вот, возможно ли это просчитать? Так же и боковые напрвсления. При атаке это важный момент, который должен участвовать в формуле просчета блока например(сзади блокирование невозможно, кто то наносит дополнительный урон сзади).

На графику мне пока что наплевать. как и на анимацию событий(это я допилю потом, когда прокачаю навык владения ГМ-ом.
Это пока что все. Думаю, к тому моменту, как разберусь с этим, научусь создавать прочие тонкости сам.
Пожалуйста, я расчитываю на вашу помощь. И, да, создаю я это в Game Maker`е, хотя если для таких задач есть более подходящие конструкторы, буду рад узнать о них.

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

Если кто то делал что либо подобное(самое похожее - Наемники краслина), отзовитесь пожалуста своими контактами - аська, скайп, контакт, etc.

Спасибо за внимание, и помощь!

P.S. Да, я понимаю, что со стороны это выглядит, словно цыпленок хочет создать свою HoMM 3, c квадратиками и блоками. Прошу вас, не переживайте по этому поводу. Очень мало чего можно достич сразу smile


Сообщение отредактировал nekroo98 - Воскресенье, 13 Ноября 2011, 04:15
Animan2010Дата: Воскресенье, 13 Ноября 2011, 09:11 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Буду следить за этой темой, самому интересно)
Разве что насчёт карты - обычно её представляют в виде массива, каждому элементу добавляют аттрибут. К примеру: 1 - земля, 0 - вода, и прочее.
Кстати, если тебе jrpg (наподобие финал фентези) нравятся, то присмотрись к RPG Maker'у, он очень прост в освоении.


Anima Games
Animan Publishing
MrIncrofДата: Воскресенье, 13 Ноября 2011, 09:13 | Сообщение # 3
Lite Programmer
Сейчас нет на сайте
nekroo98, так много требуется, давай я ПОПРОБУЮ сделать исходник. И да - это всё сделать можно и даже не трудно, я постараюсь biggrin
Ex3mDMДата: Воскресенье, 13 Ноября 2011, 09:41 | Сообщение # 4
участник
Сейчас нет на сайте
Я могу ответить на все сразу одной фразой: "Если руки прямые, то получится", а иначе только максимум половина.
Вообще по теме посоветую smile
Quote (nekroo98)
Самое наверное для ВАС простое - как создать поле состоящее из квадратов

Это пожалуй не самое простое, а нечто среднее, т.к. вывод графики можете делать процедурно или написав свой графический движок, после нужны модели, их отрисовка, отрисовка ландшафта, д.р. объектов и т.п. и это только один пункт. А можете взять готовый движок, такой как UDK, CryENGINE 3, NeoAxis Engine, еще есть замечательный конструктор Unity3D, я думаю что это то что вам нужно на данный момент. Подробней о юнити => http://gcup.ru/load/unity/2-1-0-197
Если юнити не нравится можете использовать движки-AAA класса, которые я привел выше.
Подробней о UDK => http://gcup.ru/load/unreal_development_kit/3-1-0-636
Подробней о CryENGINE 3 => http://gcup.ru/load/cryengine_3/3-1-0-689
Подробней о NeoAxis Engine => http://gcup.ru/load/neoaxis_engine/3-1-0-19
Если вас не устраивают эти движки то можете посмотреть в этом разделе десятки других => http://gcup.ru/load/igrovye_dvizhki/14

П.С. Это в 3D.
Добавлено (13.11.2011, 09:31)
---------------------------------------------
Я так понимаю, автор говорил о 2D ? smile

Добавлено (13.11.2011, 09:41)
---------------------------------------------
nekroo98, простите, не дочитал сразу до конца smile в гм это реализуемо, но объем кода давольно таки большой там будет.
Я бы сделал вам исходник, если бы мой комп не сгорел smile

Сообщение отредактировал Ex3mDM - Воскресенье, 13 Ноября 2011, 09:35
nekroo98Дата: Вторник, 15 Ноября 2011, 13:32 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Хм, многим даже понравилась идея, я рад smile
Да, игру я хочу сделать в 2д, и это будет не jRPG, это будет просто боевка. Внесем ясность - поле 10х10, выбираем себе юнитов(они я думаю будут иметь разную цену, так как есть имбовые...хотя у меня там баланс "камень-ножницы-бумага", на всех есть контрюниты, ну щас пока не об этом), ну и собственно начинается тактика. И кстати в поле 10х10 будет тока земля, тоесть как в шахматах - ходить можно везде, ну это пока.

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

Насчет RPG Makera - там можно сделать такое? Чисто боевочку вот такую вот?

Добавлено (15.11.2011, 13:32)
---------------------------------------------
Парочка вопросов:

1. Как организовать выбор текущего персонажа? Я сделал так - по клику мыши на обьекте, в отдельную переменную всем присваивается 0, выбранному 1. И собственно все действия - хотьба, атака и тд будут выполнятся, только если эта переменная = 1. Это так и должно быть, или есть пути попроще?

2. Как организовать атаку? Я сделал следущее - при нажатии на клавишу, создается новый обьект - прямоугольник, который можно перемещать, и вроде бы даже вызывать действие, если например внутри прямоугольника кто то есть. Но. Как мне сделать запрос на параметры того кто атакует, и атакуемого? Тоесть мне нужно узнать например атаку и защиту, чтобы подставить их в формулу, которая в собитии "атака". Надеюсь вы поняли? Опять же, может как то попроще это все можно сделать?

Animan2010Дата: Пятница, 18 Ноября 2011, 17:45 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Да, на рпг мейкере с помощью скриптов можно сделать такую боевку. Нужно только скрипт изучить, поковыряться в нём... Они легко приделываются к мейкеру.

Anima Games
Animan Publishing
nekroo98Дата: Суббота, 26 Ноября 2011, 16:38 | Сообщение # 7
почетный гость
Сейчас нет на сайте
Итак, порция вопросов. Прошу ответить тех, кто знает.

Первое:
Как проверить расстояние до обьекта? Приведу пример: клетки-50х50 пикселей. При нажатии на кнопку атаки создается предмет, которым мы выбираем,кого атаковать. Но нужно сделать проверку, чтобы атаковать можно было только в упор. и нельзя по диагонали.

И второе:
Как сделать движение обьекта до определенной точки, относительно текущего положения? Как вообще указать в коде действие "относительно" чего то? Конкретнее нужно например движение на 50 пикселей вверх, для движения вверх на одну клетку. Я пока сделал передвижение прыжками, но это некрасиво, неэстетично и эти болваны застревают рядом друг с другом, или вообще прыгают во внутрь других...

Добавлено (26.11.2011, 16:38)
---------------------------------------------
Апчег.

Не могу сделать переключатели. Нужно чтобы за 1 ход можно было атаковать или контратаковать только 1 раз. Данные о атакующем и защищающемся записываются в момент выбора в отдельный обьект, другого способа я не нашел, и нельзя сделать следующее winRAR.name.counterattack программа распознает первые 2 слова. Это название обьекта-хранилища информации(winRAR), и 'name' - туда записывается название выбранного в данный момент обьекта. а дальше никак. не могу придумать, как сделать это. Хелп wacko .

Ещё одно - здоровье соответственно хранится в winRAR.name.Health, и что странно нормально вычитается при атаке, по такой же формуле, но вот только вычитается оно у обоих: того кто атаковал и атакуемого. Я в ступоре. winRAR.name.Health - атакующий, winRAR.name1.Health - защищающийся.

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

Сообщение отредактировал nekroo98 - Пятница, 25 Ноября 2011, 19:12
GameMixДата: Суббота, 26 Ноября 2011, 17:07 | Сообщение # 8
старожил
Сейчас нет на сайте
Quote (nekroo98)
Не могу сделать переключатели. Нужно чтобы за 1 ход можно было атаковать или контратаковать только 1 раз. Данные о атакующем и защищающемся записываются в момент выбора в отдельный обьект, другого способа я не нашел, и нельзя сделать следующее winRAR.name.counterattack программа распознает первые 2 слова. Это название обьекта-хранилища информации(winRAR), и 'name' - туда записывается название выбранного в данный момент обьекта. а дальше никак. не могу придумать, как сделать это. Хелп .

Ещё одно - здоровье соответственно хранится в winRAR.name.Health, и что странно нормально вычитается при атаке, по такой же формуле, но вот только вычитается оно у обоих: того кто атаковал и атакуемого. Я в ступоре. winRAR.name.Health - атакующий, winRAR.name1.Health - защищающийся.

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

Возникает вопрос: зачем так всё усложнять? Можно же массивами, или обычными переменными: WinRAR_health, WinRAR_health1 .


Steel Standoff - 2D аркада.
Мои статьи
nekroo98Дата: Воскресенье, 27 Ноября 2011, 01:55 | Сообщение # 9
почетный гость
Сейчас нет на сайте
Затем, что персонажей множество, да ещё и по 2 экземпляра каждого, и одновременно все на карте. И я не придумал, как ещё считывать параметры ихние...
Если есть идеи, то скажи конкретно, что и как сделать? Обычные переменные...что, можно как то записывать переменные, не присоединяя их к обьектам, чтобы они просто висели в карте???
А массивы...что с ними, как? Тоже поконкретней пожалста.


Сообщение отредактировал nekroo98 - Воскресенье, 27 Ноября 2011, 02:16
GameMixДата: Воскресенье, 27 Ноября 2011, 05:52 | Сообщение # 10
старожил
Сейчас нет на сайте
Quote (nekroo98)
Это название обьекта-хранилища информации(winRAR)

Можно сделать так:
  • создать объект и назвать его winRAR;
  • поставить в объекте флажок Persistent (Постоянный) и в событии создания объявить переменные, если их значения нужно сохранять при переходе в другую комнату:
    Code
    name_Health = 100; // здоровье атакующего
    name1_Health = 100; // здоровье защищающегося

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

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

    Steel Standoff - 2D аркада.
    Мои статьи


    Сообщение отредактировал GameMix - Воскресенье, 27 Ноября 2011, 05:56
  • nekroo98Дата: Вторник, 29 Ноября 2011, 12:45 | Сообщение # 11
    почетный гость
    Сейчас нет на сайте
    комната только одна и все происходит в ней. есть несколько обьектов(персонажей), например 2(ты и враг). они находятся как бы в противоположных командах. обоими можно управлять на своем ходу. выбираем кого то своего щелчком мышки(при этом все его параметры(атака, защита, здоровье, имя обьекта и тд.) записываются в обьект winRAR, при выборе щелчком мышки кого то другого эти данные обнуляются и записываются новые), теперь выбранногоперсонажа можно перемещать, или атаковать им. Если нажать клавишу атаки, создается обьект( при этом выбор с персонажа снимается, и им уже нельзя ходить), обьект наводим на врага, нажимаем клавишу атака. Записываются параметры врага в обьект winRAR(atk1,def1,name1 и тд) а затем запускается код расчета урона(damage:=def1-atk;), затем просчитываем шанс блокировки у врага, шанс уворота, шанс нанесения ему критического повреждения, и если он не блокирует и не уворачивается, то вычитаем name1.Health:=name1.health-damage;.(вот тут например здоровье вычитается у обоих у атакующего и защищающегося, что странно). Затем обьект "атака" уничтожается, и можно снова выбрать своего персонажа(одного из них), если очки хода не закончились. Если закончились, ход переходит второму игроку...

    Это сложновато все описать на самом деле, и не очень понятно.

    Ещё раз повторюсь, обьектов(персонажей) с уникальными параметрами в одной комнате много. Если бы их было 2 - ты и враг, все было бы проще.

    К тому же надо ещё прикрутить отслеживание:
    например кто то атаковал на этом ходу, больше атаковать не может. Когда ход переходит второму игроку, это должно обнулятся, давая возможность снова атаковать.

    Quote (GameMix)
    Можно сделать так: создать объект и назвать его winRAR; поставить в объекте флажок Persistent (Постоянный) и в событии создания объявить переменные, если их значения нужно сохранять при переходе в другую комнату:Code

    так и сделано, только никто никуда не переходит.
    atk
    def
    name
    .......
    atk1
    def1
    name1

    там длинный список переменных...


    Сообщение отредактировал nekroo98 - Среда, 30 Ноября 2011, 10:09
    GameMixДата: Вторник, 29 Ноября 2011, 15:48 | Сообщение # 12
    старожил
    Сейчас нет на сайте
    Quote (nekroo98)
    Эх, похоже ещё один человек, пытавшийся помочь мне, сломал мозг об задачку...

    Не знаю, о ком ты. Но я ещё не садился за решение этой задачки. В принципе, не так сложно. Время надо найти.


    Steel Standoff - 2D аркада.
    Мои статьи
    nekroo98Дата: Суббота, 07 Января 2012, 04:03 | Сообщение # 13
    почетный гость
    Сейчас нет на сайте
    Аа, ну хорошо, будем ждать.

    Добавлено (07.01.2012, 04:03)
    ---------------------------------------------
    Ну что, господа? Никто таки не желает помочь? smile

    Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Создание TBS. Нужна помощь. (Боевка на подобии Shining Force)
    • Страница 1 из 1
    • 1
    Поиск:

    Все права сохранены. GcUp.ru © 2008-2019 Рейтинг