Можно ли сделать шейдеры в Game Maker 8.0 ?
| |
Reker | Дата: Понедельник, 05 Ноября 2018, 09:35 | Сообщение # 21 |
почетный гость
Сейчас нет на сайте
| WerSioPesk, слова про холст сразу приводят к мысли про сурфейсы, но сурфейсами я делал только освещение и поэтому не знаю как помочь. Raven84 опытнее, может поможет.
|
|
| |
WerSioPesk | Дата: Понедельник, 05 Ноября 2018, 14:51 | Сообщение # 22 |
частый гость
Сейчас нет на сайте
| Хорошо...
|
|
| |
Raven84 | Дата: Вторник, 06 Ноября 2018, 05:54 | Сообщение # 23 |
старожил
Сейчас нет на сайте
| WerSioPesk, Да, Reker совершенно прав, говоря про сурфейсы. Теперь , когда вы объяснили, что именно вам нужно, мне стало ясно, что вам именно эти сурфейсы и нужны. Вы создаете с помощью них что-то типо ограниченного холста на экране, на котором и рисуете все что угодно, и если нарисованный предмет будет выступать за край этого холста, то выступающая часть не будет видна. Это как раз то, что вам нужно. Ну новичку будет сложновато наверное объяснить, как с ними работать. Судя по вашим вопросам, вам бы для начала основы подтянуть. )) Дело в том, что сурфейсами нужно пользоваться очень аккуратно. Нужно постоянно проверять существует ли он, прежде чем на нем рисовать, иначе может возникнуть ошибка (а при некоторых обстоятельствах сурфейс и правда может пропасть, например при сворачивании игры). Плюс сурфейсы нужно не забывать удалять из памяти и т.д. Но если все это понимать и учитывать, то пользоваться ими на самом деле не так уж и сложно. Вкратце алгоритм такой: 1) Создаем новый объект 2) В событии создания этого объекта (в Create) пишем код:
surf=surface_create(60,60)
Где цифры в скобках (60,60) - это ширина и высота создаваемого нами холста. Соответственно размеры вы выбираете сами. 3) В событии шага этого объекта (в Step) пишем код:
if !surface_exists(surf) {surf=surface_create(60,60)} - проверяем есть ли наш холст, и если его нет, то создаем его заново surface_set_target(surf) - этой функцией мы говорим, что все, что будет далее рисоваться, будет рисоваться именно на этом холсте draw_clear_alpha(c_black,0) - очищаем наш холст перед рисованием тут с помощью draw_sprite и прочих команд рисуем все что нам нужно на холсте surface_reset_target() - отменяем наш холст как основную цель, т.е. все, что будет идти далее уже будет мимо холста
4) В событии рисования этого объекта (в Draw) пишем код:
draw_surface(surf,x,y)
Этой командой мы выводим сам наш холст на экран, т.е. рисуем его в координатах x и y. А все то, что мы рисовали в степе между surface_set_target(surf) и surface_reset_target() - это было как бы в уме. Т.е. мы говорим, что изобразить на холсте в степе. А потом в событии рисования уже рисуем сам наш холст на экране с изображенными на нем предварительно вещами. Вот и все! Ничего сложного. Ну это я в упрощенной форме конечно написал.
Добавлено (06 Ноября 2018, 05:55) --------------------------------------------- Правда я не совсем уверен будет ли это работать в GM8. Давно на нем не работаю. Я в GMS в основном сижу. ))
Добавлено (06 Ноября 2018, 06:01) ---------------------------------------------
Цитата да у меня Game Maker 8.1 и есть комната: 416 на 288 и при запуске игры пиксели... ну... одним словом некоторые пиксели больше, другие меньше, некоторые узкие некоторые широкие... вот. Это происходит потому, что у вас разрешение экрана отличается от разрешения вашей игры (416 на 288). А в настройках GM скорее всего где-то стоит так, чтобы игра при запуске растягивалась на полный экран. Нужно сделать так, чтобы она запускалась в оригинальном разрешении, которое вы указываете. Т.е. чтобы при запуске у вас слева и справа были черные полосы и т.д. К сожалению опять же по GM8 я вам не подскажу где это сделать. Давно пора перейти на GMS. Он намного удобнее по сравнеию с восьмеркой и с гораздо большими возможностями. Как-то помню стандартную лицензию раздавали бесплатно. Не знаю как сейчас. )) Вам нужно подбирать разрешение игры кратное разрешению вашего монитора (чтобы делилось без остатка), ну или равное ему. Тогда проблем возникать не должно. Но тут надо понимать, что при запуске на других мониторах игра, которая на вашем идет идеально, будет выглядеть так же с дефектами. По этому нужно писать специальный алгоритм, который будет выдавать картинку без искажений на всех мониторах. Но это конечно уровень не новичка уже. ))Добавлено (06 Ноября 2018, 06:06) ---------------------------------------------
Цитата Raven84 - по подробнее про эти хитрости ... Ну я пример одной из них привел. Это то, что можно под объектом рисовать чуть увеличенный его силуэт. Но боюсь это уже уровнем повыше, чем ваш. Долго прийдется объяснять да и результат будет все равно не идеальный. Так, что тут либо рисуйте спрайты обычные и с обводкой и меняйте их в игре, либо нужно использовать шейдеры. Шейдеры явно вам пока не по плечу, да и в восьмерке с ними сложнее. А вот рисовать копии спрайтов с обводкой и без - вполне себе неплохой способ для начала. Сам так когда-то делал. ))
Super Knight Story (в разработке) Idolzzz - игра доступна в Steam и Play Market Oliver's Adventures in the Fairyland
Сообщение отредактировал Raven84 - Вторник, 06 Ноября 2018, 06:03 |
|
| |
WerSioPesk | Дата: Вторник, 06 Ноября 2018, 11:33 | Сообщение # 24 |
частый гость
Сейчас нет на сайте
| Спасибо Raven84 вы мне очень помогли =)
А с окантовкой я разобралась, в принципе за 8 часов справилась. Вспомнила про примитивы и про шаги, сделала тень от объекта, сделала тень непрозрачной и другого цвета, увеличила её и у меня получилась окантовка которая заняла у меня всего лишь 8 часов и огромное количество строчек. Да и по моему последняя старая и новая студия почти совсем не отличаются друг от друга... ну кроме сурфейсов и физики объектов =) Да и не новичок я совсем, а уже как с 2012 на нём сижу так и не встаю ¯\_(ツ)_/¯ . Так что я просто дура... *не воспринимать всерьёз*
Скоро приду за новыми вопросами! Спасибо всем тем кто мне помог!
До встречи
*спасибо*
...
\*ещё раз спасибо*/
*не я от вас так просто не отстану =)*
Сообщение отредактировал WerSioPesk - Вторник, 06 Ноября 2018, 21:23 |
|
| |
Raven84 | Дата: Вторник, 06 Ноября 2018, 12:21 | Сообщение # 25 |
старожил
Сейчас нет на сайте
| WerSioPesk, Цитата Да и по моему последняя старая и новая студия почти совсем не отличаются друг от друга... ну кроме сурфейсов и физики объектов =) Не совсем понял какую новую и старую студию вы сравниваете? ) До Game Maker Studio шли просто версии Game Maker (без приставки Studio) 8,7,6 и т.д. Если вы их сравниваете, то отличий гораздо больше, чем просто сурфейсы и физика. Кстати для GM8 есть очень хорошее расширение для физики (Extreme Physics вроде называется), я его использовал, когда на GM8 работал. Ну это так, к слову. ) Если вы сравниваете новую вторую версию Game Maker Studio 2 с первой Game Maker Studio, то там тоже океан возможностей. Дьявол кроется в деталях. Хоть я пока и работаю на GMS1.4, но уже дико не хватает возможностей второй студии. Просто для первой у меня много модулей порта куплено (под HTML5, под Андроид).
Цитата Да и не новичок я совсем, а уже как с 2012 на нём сижу так и не встаю Аж с 2012 года?! Я просто просмотрел те вопросы, что вы задаете и с опытом в 7 лет почти вы все это должны были с лихвой уже знать. Странно. Я не на много дольше. Года на два наверное раньше вас сел. Ну если вы так долго сидите на гамаке, то я тогда тем более рекомендовал бы вам перейти на первую студию хотя бы. Это замечательный инструмент! Я на ней уже давно! Тоже изначально с восьмерки не хотел спрыгивать. Но часто не хватало ее возможностей. Сначала искал и подключал сторонние библиотеки, типо той же Extreme Physics. Потом устал. И все таки решил попробовать студию. Все! Радости нет предела. Уже на ней наклепал игр 15 наверное! Возможность портировать под различные платформы тоже крутая. Я под HTML5 казуалки создавал и продавал какое-то время. Потом на Андроид несколько игр выпустил ради интереса. Какие-то еще можно найти в Play Market'е. Сейчас хочу полностью переключиться на PC. Как раз в данный момент заканчиваю игру для Steam в жанре метроидвания.
У вас есть что-то из готовых проектов? Интересно было бы взглянуть. Может группа своя в ВК? Или блог какой-то есть, где можно было бы следить за разработкой?Добавлено (06 Ноября 2018, 12:21) ---------------------------------------------
Не за что! Обращайтесь.
Super Knight Story (в разработке) Idolzzz - игра доступна в Steam и Play Market Oliver's Adventures in the Fairyland
|
|
| |
WerSioPesk | Дата: Вторник, 06 Ноября 2018, 13:13 | Сообщение # 26 |
частый гость
Сейчас нет на сайте
| Raven84 - а как сделать градиентный сурфэйс? Ну ... вот как на этой картинке...
на счёт Game Maker - они для меня одинаковы ¯\_(ツ)_/¯
и да я так долго сижу но... я ничего при этом не учила, самоучка одним словом =). Просто в комплект не входила справка и ну... так далее ツ. да и инет у меня слабый, ничего не посмотришь o(>< )o. Вот недавно поставили роутер.
а игру я так только одну и делаю. Называется она "Попробуй изменить." ну или "Ты не сможешь изменить." ну и там говорится про странные обстоятельства которые произошли с девочкой по имени Лиза.
*не знаю как пользовать спойлерами но вот:* !!! ЭТО СПОЙЛЕР !!!
кратко:
когда Лиза играла со своими друзьями в прядки она зашла слишком далеко в лес и нашла развалины кирпичного дома, дверь дома была закрыта и она решила взглянуть под коврик и по традиции находит там ключ она открывает дверь и через некоторое количество времени ей надоедает прятаться и она выходит из этого дома бежит опять по тому же лесу но друзей уже нет она решила пойти домой решив что все вернулись домой взобравшись на третий этаж по лестнице она открывает дверь и обнаруживает записку в которой говорится что родители уехали и она остаётся с тётей Машей, лиза не обнаруживает тёти и ложится спать. Неожиданный грохот на кухне заставил Лизу проснуться она взяла телефон и включила на нём фонарик зашла на кухню но ничего не обнаруживает решив что это случилось у соседей но войдя в свою комнату она видит как некая чёрная липкая грязь из под кровати раздался страшный рык и открылись страшные красные глаза девочка побежала к выходу но вдруг услышала мамин голос она обернулась и увидела маму которая включает свет в колидоре но девочка замечает за мамой это страшное существо она открывает дверь и это существо бежит за ней когда девочка выбежала из подъезда ей показалась знакомая площадка которая освещалась луной но присмотревшись внимательно она увидела полчища монстров которые медленно двигались к ней она побежала прочь от них забегает в лес и заходит опять в эту дверь опять берёт ключ из под коврика но она уже была открыта поэтому она забегает в неё но неожиданно вместо пола показывается яма она проваливается в неё. Очутившись в знакомом лесу возле двери развалин она побежала из этого леса и вместо города очутилась в непонятном месте где только одни скалы и свинцовые облака заволокли небо и солнце лиза реши спустится в низ где светило какое то окошко она подошла к этому свету поближе и увидела что это были развалины но не развалившееся развалины она воспользовалась ключом но внезапно на её плечо легла рука старухи она обернулась и увидела очень старую старуху старуха рассказала что случилось и что пока она лежала в этом мире в том прошли сталетия и из-за того что Лиза открыла дверь и из этого мира туда пробрались чудовища и что то чудовище которое было у неё дома называется похитителем тел и он похитил её родителей, теперь Лизе придётся пойти через большое количество измерений чтобы найти все 31 ключ старуха дала Лизе связку ключей с одним ключом а тот который был у Лизы она забрала и опять забрала связку ключей и с помощью одного ключа открыла дверь в новое пространство и она отдала обратно связку, старуха одела Лизу и дала зарядку для телефона оправдываясь тем что во всех измерениях есть разетки и что она может заряжать свой телефон где угодно, Лиза зашла в дверь. И теперь начинается её путишествие по мирам, она должна собрать команду чтобы она смогла стать кем то кто сможет противостоять злу в интро мире. Теперь выбор ра Лизой сохранить свой мир или попытаться изменить прошлое своего мира или уничтожить все миры кроме еёшнего чтобы разорвать связь монстров с ихним миром и освободить людей от вечного сотрясания. И лишь у тебя надо спросить... сможешь ли ты изменить ... В С Ё
... что?
Сообщение отредактировал WerSioPesk - Вторник, 06 Ноября 2018, 14:32 |
|
| |
Raven84 | Дата: Вторник, 06 Ноября 2018, 14:42 | Сообщение # 27 |
старожил
Сейчас нет на сайте
| WerSioPesk, Цитата а как сделать градиентный сурфэйс? Т.е. чтобы у сурфейса как бы тень градиентная была? Если да, то просто в событии Draw перед отрисовкой самого сурфейса (т.е. перед draw_surface) сначала рисуйте этот самый градиент. Сам градиент можно либо спрайтом заготовить, либо стандартными функциями рисовать. В GMS можно рисовать градиентный прямоугольник. Как в восьмерке, повторюсь, не подскажу. Но думаю тоже можно. Короче ты как бы под самим сурфейсом сначала градиент рисуешь, а над ним уже сам сурф. )
Добавлено (06 Ноября 2018, 14:43) --------------------------------------------- По гамаку и обучению все ясно )) Тоже по началу информации не доставало. Что касается игры, то не совсем понял, а что за жанр-то? )
Super Knight Story (в разработке) Idolzzz - игра доступна в Steam и Play Market Oliver's Adventures in the Fairyland
Сообщение отредактировал Raven84 - Вторник, 06 Ноября 2018, 14:44 |
|
| |
WerSioPesk | Дата: Вторник, 06 Ноября 2018, 17:00 | Сообщение # 28 |
частый гость
Сейчас нет на сайте
| Ну не совсем... чтобы верхушка сурфейса была градиентом и когда объект заходит на этот градиент он тоже становился постепенно прозрачным по градиенту, то есть уровень прозрачности градиента это уровень прозрачности объекта. То есть та часть объекта которая зашла на градиент будет точно такой же прозрачности что и сам градиент.
====== Игра жанра: RPG, аркада, шутер, хоррор, "Действие" ну и ещё стратегия и пазл в отдельных местах =) ======
Сообщение отредактировал WerSioPesk - Вторник, 06 Ноября 2018, 17:01 |
|
| |
TLT | Дата: Вторник, 06 Ноября 2018, 17:43 | Сообщение # 29 |
Сейчас на сайте
| Цитата WerSioPesk ( ) когда Лиза играла со своими друзьями в прядки она зашла слишком далеко в лес и нашла развалины кирпичного дома, дверь дома была закрыта и она решила взглянуть под коврик и по традиции находит там ключ она открывает дверь и через некоторое количество времени ей надоедает прятаться и она выходит из этого дома бежит опять по тому же лесу но друзей уже нет она решила пойти домой решив что все вернулись домой взобравшись на третий этаж по лестнице она открывает дверь и обнаруживает записку в которой говорится что родители уехали и она остаётся с тётей Машей, лиза не обнаруживает тёти и ложится спать. Неожиданный грохот на кухне заставил Лизу проснуться она взяла телефон и включила на нём фонарик зашла на кухню но ничего не обнаруживает решив что это случилось у соседей но войдя в свою комнату она видит как некая чёрная липкая грязь из под кровати раздался страшный рык и открылись страшные красные глаза девочка побежала к выходу но вдруг услышала мамин голос она обернулась и увидела маму которая включает свет в колидоре но девочка замечает за мамой это страшное существо она открывает дверь и это существо бежит за ней когда девочка выбежала из подъезда ей показалась знакомая площадка которая освещалась луной но присмотревшись внимательно она увидела полчища монстров которые медленно двигались к ней она побежала прочь от них забегает в лес и заходит опять в эту дверь опять берёт ключ из под коврика но она уже была открыта поэтому она забегает в неё но неожиданно вместо пола показывается яма она проваливается в неё. Очутившись в знакомом лесу возле двери развалин она побежала из этого леса и вместо города очутилась в непонятном месте где только одни скалы и свинцовые облака заволокли небо и солнце лиза реши спустится в низ где светило какое то окошко она подошла к этому свету поближе и увидела что это были развалины но не развалившееся развалины она воспользовалась ключом но внезапно на её плечо легла рука старухи она обернулась и увидела очень старую старуху старуха рассказала что случилось и что пока она лежала в этом мире в том прошли сталетия и из-за того что Лиза открыла дверь и из этого мира туда пробрались чудовища и что то чудовище которое было у неё дома называется похитителем тел и он похитил её родителей, теперь Лизе придётся пойти через большое количество измерений чтобы найти все 31 ключ старуха дала Лизе связку ключей с одним ключом а тот который был у Лизы она забрала и опять забрала связку ключей и с помощью одного ключа открыла дверь в новое пространство и она отдала обратно связку, старуха одела Лизу и дала зарядку для телефона оправдываясь тем что во всех измерениях есть разетки и что она может заряжать свой телефон где угодно, Лиза зашла в дверь. И теперь начинается её путишествие по мирам, она должна собрать команду чтобы она смогла стать кем то кто сможет противостоять злу в интро мире. Теперь выбор ра Лизой сохранить свой мир или попытаться изменить прошлое своего мира или уничтожить все миры кроме еёшнего чтобы разорвать связь монстров с ихним миром и освободить людей от вечного сотрясания. И лишь у тебя надо спросить... сможешь ли ты изменить ... В С Ё
Жесточайший сюжет из всех, когда бы то ни было прочтённых мною.
Цитата WerSioPesk ( ) Игра жанра: RPG, аркада, шутер, хоррор, "Действие" ну и ещё стратегия и пазл в отдельных местах Кто бы сомневался.
Дао, выраженное словами, не есть истинное Дао.
|
|
| |
WerSioPesk | Дата: Вторник, 06 Ноября 2018, 18:57 | Сообщение # 30 |
частый гость
Сейчас нет на сайте
| Я знаю, хотела сделать что - то что могло врезаться в память. А психология говорит что самое запоминающееся зрелище это потеря чего то родного, любимого, близкого. Ну и вот так у меня началось с обычной доброй сказки... но она была скучна "жила была девочка, она потерялась в лесу, нашла хижину - бла, бла, бла - нашла друзей - бла, бла, бла х 100 - победила ведьму, ведьма стала доброй, ведьма отправила девочку домой и дала ей зеркало и ключ чтобы она могла возвращаться к своим друзьям - бла, бла скука!" мои глаза, мозг , уши и кожа хотели чего то большего - глаза хотели зрелища, мой мозг хотел сложные решения, уши хотели атмосферы, а кожа хотела мурашек. И так я думала что сделать, и придумала запутанный сюжет из множество концовок которые были бы совсем не похожи друг на друга. А чтобы не путаться в этих концовках я решила сделать... ну скажем так, примитивный искусственный интеллект *пока на стадии разработки* чтобы он понимал в какую сторону клонит игрок.
Ну добавить ещё несколько жанров *от себя *таких жанров не существует... наверное** : 1. Эффект бабочки 2. Неожиданный поворот сюжета (даже если игрок идёт к одной концовке он получает другую или смежную) 3. Приключение и бродилка 4. Different. Gaming. Process. или DGP
ну пока всё... Запланировано 100 глав и сейчас разрабатываю 56 и 57 по обратной концовки. Затратила колоссальное время чтобы это всё реализовать... но чёт не понравилось и я решила зайти сюда чтобы посоветоваться как улучшить актинг в своей игре.
Сообщение отредактировал WerSioPesk - Вторник, 06 Ноября 2018, 19:04 |
|
| |
Quad69 | Дата: Вторник, 06 Ноября 2018, 20:48 | Сообщение # 31 |
заслуженный участник
Сейчас нет на сайте
| Цитата WerSioPesk ( ) 1. Как сделать так чтобы объект крутился вокруг какой либо точки но сам не вертелся, как планета вокруг солнца =) 2. Как сделать окантовку для объекта. 3. Как сделать так чтобы один объект рисовался на другом. (Я знаю что можно так сделать... но не знаю как.) 4. Как сделать так чтобы пиксели были ровными.
1. Ну я бы такое делал с помощью lengthdir_x, lengthdir_y. 2. Мой способ:
Код draw_sprite_ext(sprite, 0, x - 1, y, 1, 1, 0, c_black, 1); draw_sprite_ext(sprite, 0, x + 1, y, 1, 1, 0, c_black, 1); draw_sprite_ext(sprite, 0, x, y - 1, 1, 1, 0, c_black, 1); draw_sprite_ext(sprite, 0, x, y + 1, 1, 1, 0, c_black, 1);
draw_sprite(sprite, 0, x, y);
Но тут обводка может быть только черной. 3. depth = Объект.depth - 1; 4. можно прибавлять к координатам всего что рисуется .001, например draw_sprite(spr, 0, x + .001, y + .001);
Сообщение отредактировал maksim1221232 - Вторник, 06 Ноября 2018, 20:49 |
|
| |
WerSioPesk | Дата: Вторник, 06 Ноября 2018, 20:57 | Сообщение # 32 |
частый гость
Сейчас нет на сайте
| Спасибо maksim1221232 что помог с окантовкой =) Добавлено (07 Ноября 2018, 08:08) --------------------------------------------- Пожалуйста помогите с этим:
Цитата WerSioPesk ( ) Нужно чтобы верхушка сурфейса была градиентом и когда объект заходит на этот градиент он тоже становился постепенно прозрачным по градиенту, то есть уровень прозрачности градиента это уровень прозрачности объекта. То есть та часть объекта которая зашла на градиент будет точно такой же прозрачности что и сам градиент.
Сообщение отредактировал WerSioPesk - Вторник, 06 Ноября 2018, 20:57 |
|
| |
Raven84 | Дата: Суббота, 10 Ноября 2018, 06:21 | Сообщение # 33 |
старожил
Сейчас нет на сайте
| WerSioPesk, Цитата Ну не совсем... чтобы верхушка сурфейса была градиентом и когда объект заходит на этот градиент он тоже становился постепенно прозрачным по градиенту Ну алгоритм на самом деле тот же тогда, только рисуем градиент не под сурфейсом, а прямо на нем. Только порядок отрисовки нужно будет соблюдать. Т.е. на сурфе в степе сначала рисуем сам объект, который должен находится под этим градиентом, а потом сам градиент, чтобы объект был под ним. И потом просто так же в Draw выводим этот сурф. Сам градиент как сделать я описывал выше. Можете его просто спрайтом предварительно нарисовать, где градиент будет идти от темного до прозрачного (т.е. со сменой альфа-канала).
Super Knight Story (в разработке) Idolzzz - игра доступна в Steam и Play Market Oliver's Adventures in the Fairyland
|
|
| |
WerSioPesk | Дата: Пятница, 16 Ноября 2018, 15:14 | Сообщение # 34 |
частый гость
Сейчас нет на сайте
| Raven84, Спасибо!
|
|
| |
|