Среда, 28 Июля 2021, 23:23

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Художник пытается освоить GML (задаю вопросы по всем непоняткам)
Художник пытается освоить GML
QvantДата: Четверг, 10 Марта 2011, 12:50 | Сообщение # 101
почти ветеран
Сейчас нет на сайте
image_single заменит image_index=1; image_speed=0
аТнОтХоАн, не вешай лапшу на уши - на производительности не скажется , просто одна лишняя строка в коде

в 8 версии GM этого оператора официально нет , но он работает (он просто был в GM6 или в GM7)

NeZnayuДата: Четверг, 10 Марта 2011, 13:09 | Сообщение # 102
__танцуй!__
Сейчас нет на сайте
Вызов скрипта работает гораздо медленнее (если речь идет о степе, т.е. Скрипт вызывается каждый шаг) чем просто код, поэтому сильно рекомендую весь степ писать прямо в объекте.

CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу
NeZnayuДата: Четверг, 10 Марта 2011, 13:11 | Сообщение # 103
__танцуй!__
Сейчас нет на сайте
Разве что какие-то общие, небольшие функции для удобства выносить в скрипты.

CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу
GameMixДата: Четверг, 10 Марта 2011, 13:37 | Сообщение # 104
старожил
Сейчас нет на сайте
Quote (Qvant)
аТнОтХоАн, не вешай лапшу на уши - на производительности не скажется , просто одна лишняя строка в коде

Извините, ведь я следовал логике. Чем меньше в step или draw скрипт, тем быстрее он выполняется в игре. Поэтому, решил, что image_single = 0; выполняется быстрее. smile


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


Сообщение отредактировал аТнОтХоАн - Четверг, 10 Марта 2011, 13:38
Made_In_USSRДата: Четверг, 10 Марта 2011, 16:38 | Сообщение # 105
заслуженный участник
Сейчас нет на сайте
Quote (Ferrumel)
Насколько это оправдано, если я допустим для главного героя пишу здоровенную скриптовую портянку, где описываю абсолютно все его возможные действия и свойства, затем в объекте главного героя просто ставлю событие step и там вбиваю например script1() Тоесть больше ничего в объкте не существует кроме степ. Это нормально? Это не будет сильно напрягать систему? Или лучше делать по другому?

Насколько оправданно выполнять код, который нужен только при нажатии кнопки каждый шаг? Думаю что ни на сколько))
Опять же скрипты пишутся для автоматизации рутинных задач.
И как сказал NeZnayu Вызов скрипта работает медленнее чем код непосредственно из события.
Наверное лучше перед тем как писать код обдумать для чего и когда он нужен. Понимать все равно начнешь в процессе, так что сейчас самое главное это логика и интуиция.

Добавлено (10.03.2011, 16:38)
---------------------------------------------

Quote (аТнОтХоАн)
Извините, ведь я следовал логике. Чем меньше в step или draw скрипт, тем быстрее он выполняется в игре. Поэтому, решил, что image_single = 0; выполняется быстрее.

В скомпилированном виде это 1 и 1+1 байта памяти или как то так. В общем этого слишком мало чтобы втиснуться даже в погрешность smile


Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
FerrumelДата: Суббота, 12 Марта 2011, 13:11 | Сообщение # 106
почти ветеран
Сейчас нет на сайте
3 недели долбежа перемещения героя не дали результата, можно сделать несколько выводов. Либо мне необходимо забросить это дело и рисовать дальше не помышляя даже о скриптовом программировании. Либо это слишком маленький срок и я просто не понял какойто мелочи. Можно даже сказать что у меня есть подозрения, чтоя просто не понимаю значения функций (еще бы, таким языком они написаны)
А брать чужой код и заменить в нем спрайты, у меня совесть не позволяет.)))
Показываю плод моих мучений, по логике это должно работать, если кому не лень объясните почему он не работает, или я неправильно понимаю функцию place_free? Просто скажите почему не работает, своих решений лучше не предлагать. Этот код засунут в степ.

while (place_free (x,+4)) {y+=2};

if keyboard_check (vk_left) then
if place_free (x-4,y) then x-=1

if keyboard_check (vk_right) then
if place_free (x+4,y) then x+=1

if keyboard_check (vk_up) then
if !place_free(x,y+4) then
while (place_free(x,y-4)) {y-=2};


все серо и пусто
NeZnayuДата: Суббота, 12 Марта 2011, 13:27 | Сообщение # 107
__танцуй!__
Сейчас нет на сайте
Первая строчка:
while (place_free (x,y+4))

Забыл у ?


CombatForce - 2d TDS долгожданный релиз
Noobster - самый простой конструктор игр в мире
LaLaLaLAMA! - игра не про Ламу
BornInUSSRДата: Суббота, 12 Марта 2011, 16:37 | Сообщение # 108
почетный гость
Сейчас нет на сайте
Quote (Ferrumel)
while (place_free (x,+4)) {y+=2};

if keyboard_check (vk_left) then
if place_free (x-4,y) then x-=1

if keyboard_check (vk_right) then
if place_free (x+4,y) then x+=1

if keyboard_check (vk_up) then
if !place_free(x,y+4) then
while (place_free(x,y-4)) {y-=2};


Какой то странный разнобой в коде.
То ты используешь скобки, то нет. Постоянно проскакивает этот then, который только затрудняет чтение кода.
Почему то вместо or/and ты используешь два if. Ты явно используешь этот код в степе, зачем запускаешь цикл, если событие выполняется каждый шаг, почему не все тот же if?
Мне кажется тебе нужно выработать какой то один стиль кодинга ну и внимательнее просматривать написанный код.

Код к стати не работает из-за циклов, и вообще вешает машину.

Dva_KotaДата: Понедельник, 14 Марта 2011, 13:06 | Сообщение # 109
заслуженный участник
Сейчас нет на сайте
Quote (NeZnayu)
Почему то вместо or/and ты используешь два if

Если использовать два if то вторая проверка не будет выполняться если первая будет false, а если писать and то всегда будут выполняться обе проверки (это для увеличения производительности).


Новый пример инвентаря! /20.06.2012/

Energy Wars
Made_In_USSRДата: Понедельник, 14 Марта 2011, 14:13 | Сообщение # 110
заслуженный участник
Сейчас нет на сайте
Quote (BornInUSSR)
if keyboard_check (vk_left) then
if place_free (x-4,y) then x-=1

if keyboard_check (vk_left) && place_free (x-4,y)
x-=1
Без всяких then и if*2. Компактно и легко читается.
Тут в любом случае выполняются две проверки, Очередность та же. Каким образом это может повлиять на производительность?!?

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


Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
Dva_KotaДата: Понедельник, 14 Марта 2011, 14:24 | Сообщение # 111
заслуженный участник
Сейчас нет на сайте
Code
if (keyboard_check (vk_left))
   {
   if (place_free (x-4,y))
     {
     x-=1  
     }
   }

Вторая проверка (place_free()) будет выполняться только если нажата клавиша vk_left


Новый пример инвентаря! /20.06.2012/

Energy Wars
Made_In_USSRДата: Понедельник, 14 Марта 2011, 15:28 | Сообщение # 112
заслуженный участник
Сейчас нет на сайте
Quote (Dva_Kota)
Вторая проверка (place_free()) будет выполняться только если нажата клавиша vk_left

Ну возможно, просто мне казалось, что если первая проверка терпит неудачу, то if возвращает неудачу не доходя до второй проверки.


Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
Dva_KotaДата: Понедельник, 14 Марта 2011, 15:31 | Сообщение # 113
заслуженный участник
Сейчас нет на сайте
Нет, это не так. Я раньше тоже так думал.

Новый пример инвентаря! /20.06.2012/

Energy Wars
Made_In_USSRДата: Понедельник, 14 Марта 2011, 15:40 | Сообщение # 114
заслуженный участник
Сейчас нет на сайте
Ну тогда спасибо тебе за ценную информацию, возьму на вооружение.

Новичкам изучающим GML кликать сюда.
Много примеров, исходников, библиотек и вообще всего что вам только может пригодиться. Автор портала, прости меня за ссылку, наболело =)
FerrumelДата: Вторник, 22 Марта 2011, 17:31 | Сообщение # 115
почти ветеран
Сейчас нет на сайте
Ух народ! спасибо вам за беседу внутри темы.
Наконец то добил движения. Всмысле оживил персонажа заставил бегать, прыгать, приседать, не застревать и не проваливаться. Более того, стрельбу реализовал в течении дня. Складывается впечатление, что что обучаться начинаю все быстрее и быстрее.

Я тут вот с каким вопросиком. Где можно почитать про тайлы, стрипы и все что с этим связано. Мне не как это рисовать (это уж сумею), а как это реализовано в GM.

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


все серо и пусто
LunarPixelДата: Вторник, 22 Марта 2011, 18:05 | Сообщение # 116
старожил
Сейчас нет на сайте
Ferrumel, вообще, всё что тебе нужно можно найти КЛИКНУВ ВОТ СЮДА кроме этого и головы на плечах больше ничего не нужно.

FerrumelДата: Вторник, 22 Марта 2011, 18:16 | Сообщение # 117
почти ветеран
Сейчас нет на сайте
LunarPixel, Если я пишу сюда, значит кривая справка с кривым переводом не дала мне необходимый объем информации. Гугл в своем большинстве выдает ссылку на ЭТОТ ФОРУМ! или yoyo (а я варварского языка не знаю).
Написав здесь пост я либо прошу объяснить что это за фигня в справке непонятная. Или дайте углубленную информацию по тому или иному вопросу. Потому давайте не будем плодить неинфомативных и пустых постов.


все серо и пусто
Robin_LocksleyДата: Вторник, 22 Марта 2011, 18:51 | Сообщение # 118
постоянный участник
Сейчас нет на сайте
Quote (Ferrumel)
Где можно почитать про тайлы, стрипы и все что с этим связано.

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

Чуть позже я тебе отвечу smile
FerrumelДата: Вторник, 22 Марта 2011, 19:16 | Сообщение # 119
почти ветеран
Сейчас нет на сайте
Quote
Конкретизируй,

листы стрипов, в каком они должны быть формате, с прозрачным фоном или нет, каким образом осуществляется выдирка изображений в код, каким образом собирается на основе стрипа анимация, какие тонкости при это необходимо учитывать, какую нагрузку в конечном итоге играет лист на компьютер в отличие если использовать отдельные спрайты и анимированные спрайты. Можно ли использовать к одному объекту несколько стрипов, можно ли использовать на несколько объектов один стрип, целесообразность объеденения изображения в стрип, если его можно использовать как отдельный анимированный спрайт, общая теория и практические советы (справку не предлагать)
Я спрашиваю, есть ли где почитать об этом? Или шишки себе на примитивных вещах набивать? Тоесть есть ли где нибудь объедененная информация?

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


все серо и пусто
LunarPixelДата: Вторник, 22 Марта 2011, 19:51 | Сообщение # 120
старожил
Сейчас нет на сайте
Формат - любой, но желательно чтобы без потери качества (bmp, png), дабы можно было сделать прозрачный фон
Фон прозрачный можно сделать уже в самом Game Maker'е
Из стрипа формируешь спрайты. Выдергиваешь изображение и собираешь в анимацию. Для этого можно использовать команды Create from Strip или Add from Strip которые находятся в редакторе спрайтов в меню File. Жмешь на любую из этих команд, выбираешь стрип, выделяешь нужный кусочек изображения и жмешь ОК. Из этой части изображения сформируется спрайт. Create from Strip создает один спрайт, а Add from Strip добавляет новый спрайт к уже добавленному.
Собственно говоря стрип - это просто анимированный спрайт. Он в любом случае состоит из кадров. Просто может, как художнику, тебе проще будет нарисовать анимацию покадрово вряд и сохранить в один фаил, а потом при помощи Create from Strip и Add from Strip создать анимацию в Game Maker'е.
Что имеется в виду под "использовать к одному объекту несколько стрипов"?! Как я уже сказал из стрипа формируется спрайт. Для одного объекта в один момент времени можно использовать один спрайт. По ходу игры, кодом, спрайт можно изменять.
Ну а для нескольких объектов один спрайт собранный из стрипа использовать можно.

Вроде ничего не напутал ))

Почитать кое что можешь вот тут: ТЫК СЮДА там и про стрипы и про тайлы есть статьи небольшие.
Информации, больше чем в справке, я не встречал.

Добавлено (22.03.2011, 19:51)
---------------------------------------------
Вот набросал тебе для примера стрельбу с перезарядкой:

Особо не заморачивался, просто чтобы принцип понятен был.
Пробел - стрельба.
Ентер - перезарядка.


Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Художник пытается освоить GML (задаю вопросы по всем непоняткам)
Поиск:

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