Понедельник, 28 Ноября 2022, 22:20

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Записи участника » mafon2 [21]
Результаты поиска
mafon2Дата: Пятница, 18 Ноября 2016, 17:44 | Сообщение # 1 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Спасибо за подробный разбор, буду пилить.

Код
...что-то мне подсказывает, что всё можно упростить как минимум в два раза


Я в этом и не сомневаюсь, но это и отличает программиста от энтузиаста. У меня, как говорится, – сплошные спагетти.
mafon2Дата: Четверг, 17 Ноября 2016, 20:20 | Сообщение # 2 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Да, LEVEL_1_SYS на месте.

Такая, вроде, простая вещь, а сколько проблем. Спасибо за внимание.

Скриншот:



Сообщение отредактировал mafon2 - Четверг, 17 Ноября 2016, 20:22
mafon2Дата: Четверг, 17 Ноября 2016, 19:42 | Сообщение # 3 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Экран с выбором уровней, объект SYSTEM_INI

Create

Код

globalvar GEMS; // я не могу задать, будет обнуляться
global.TOTAL_A1_GEMS = 0; // потом сложим
global.A1L1_GEMS = LEVEL_1_SYS.GEMS;
if (is_undefined(LEVEL_1_SYS.GEMS))
{LEVEL_1_SYS.GEMS = 0;}


Не по теме, но там же:


В комнате LEVEL_1 объект LEVEL_1_SYS, в нем

Create

Код
GEMS = 0;


Step

Код
A1L1_GEMS = GEMS;


Сообщение об ошибке:


Сообщение отредактировал mafon2 - Четверг, 17 Ноября 2016, 19:43
mafon2Дата: Четверг, 17 Ноября 2016, 08:49 | Сообщение # 4 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Цитата Rean ()
Вариантом для решения подобной проблемы будет проверка переменной на существование:


Это именно то, что мне нужно!

В общем, есть объект SYSTEM_INI в нем создаются все глобальные переменные: AXLY_GEMS, AXLY_PLAYED и GEMS.

Есть кнопки для перехода на уровни, в них проверяется запускался ли соответствующий ли им уровень или нет, и если да, то AXLY_GEMS = AXLY_SYS (объект с настройками уровня).GEMS.

GEMS, хоть и глобальная переменная, но обнуляется на каждом уровне (хранится в AXLY_SYS) и считается заново, после чего приравнивается к соответствующему AXLY_GEMS.

---

Позже проверю это проверку на существование и отпишу.

---

UPD

По-разному поигрался с «if is_undefined», посовал туда и сюда, синтаксис поменял, все равно ошибка. Всегда ссылается на строчку с «f is_undefined»



Сейчас лежит в draw :
Код

if is_undefined(A1L1_GEMS)
{A1L1_GEMS = 0;}
draw_text(160, 160, "A1L1 GEMS =:" + string(A1L1_GEMS));


Сообщение отредактировал mafon2 - Четверг, 17 Ноября 2016, 13:57
mafon2Дата: Среда, 16 Ноября 2016, 20:22 | Сообщение # 5 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Задача простая. В конец запутался. Пытаюсь сделать так, чтобы игра запоминала и выводила highscore. Но каждый раз, когда игрок возвращается в меню, globalvar'ы обнуляются, т.к. без заданных параметров gamemaker вылетает.

Есть

globalvar A1L1_GEMS и так для каждого уровня (A1L2, A1L3...).

есть GEMS, по которым считаются камни на каждом уровне отдельно.

Есть A1L1_PLAYED, чтобы определить запускался уровень или нет, если он не тру, то A1L1_GEMS = 0, иначе берет показатель GEMS из соответствующего уровня. На бумаге все окей. Но на деле A1L1_PLAYED всегда оказывается false, иначе все рушится, т.к. он должен определить в степе тру он или не тру, а когда параметр не задан заранее, то он рушится, но если я его задаю заранее, то каждый раз при запуске комнаты он обнуляется.

Что я делаю не так? crazy
mafon2Дата: Среда, 14 Сентября 2016, 22:36 | Сообщение # 6 | Тема: Digger-образный геймплей
был не раз
Сейчас нет на сайте
Ох, листал игры в стиме и осенило! Теперь бы до прототипа дожить бы.

P.S. Блин, желаемое название забито...


Сообщение отредактировал mafon2 - Среда, 14 Сентября 2016, 22:38
mafon2Дата: Среда, 14 Сентября 2016, 13:19 | Сообщение # 7 | Тема: Just Hero [SteamStore!]
был не раз
Сейчас нет на сайте
Визуальный стиль прям очень колоритный.
mafon2Дата: Вторник, 13 Сентября 2016, 18:16 | Сообщение # 8 | Тема: Digger-образный геймплей
был не раз
Сейчас нет на сайте
Обдумываю дизайн игрушки с элементами Digger'а, т.е. рытьем ходов, но ничего интересного придумать не могу. Кто-нибудь может подсказать игрушки типа Boulder Dash'а / Diggers или каких-нибудь головоломок с рытьем, чтобы поискать в них вдохновения?
mafon2Дата: Четверг, 08 Сентября 2016, 19:45 | Сообщение # 9 | Тема: Почти бесплатная GameMaker Studio Pro в Humble Bundle
был не раз
Сейчас нет на сайте
*Я опечатался тогда, я имел в виду RPG Maker. Прошу прощщения.
mafon2Дата: Среда, 07 Сентября 2016, 20:05 | Сообщение # 10 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
И снова я возвращаюсь с вопросами про place_meeting...

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

Код следующий:

Код
if (place_meeting(x,y-Movable_block.speedY,Movable_block))
{
        instance_destroy();
}


Но проблема в том, что это работает, только когда Movable_block один, а их может быть и несколько. Пытался поколдовать с "other", но без толку. Вообще не понимаю, как выделить один объект из множества подобных.

UPD

Попробовал решить тем, что переписал столкновение на Movable_block, а не на obj_rubble. Но т.к. у obj_rubble родитель obj_block через который просчитываются все столкновения, окончательно запутался.

UPD

Решено с помощью волшебного
Код
With Movable_block


Сообщение отредактировал mafon2 - Вторник, 13 Сентября 2016, 22:07
mafon2Дата: Среда, 07 Сентября 2016, 20:01 | Сообщение # 11 | Тема: Почти бесплатная GameMaker Studio Pro в Humble Bundle
был не раз
Сейчас нет на сайте
Да, подозрительно все это. ВОт помню Game Maker тоже раздавали аккурат перед премьерой новой версии.

Но, ИМХО, GameMaker слишком офигенный, чтобы пропустить эту сделку.
mafon2Дата: Среда, 22 Июня 2016, 22:24 | Сообщение # 12 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Выделил полужирным.

Не уверен, что проблема в падении. Когда я убираю Obj_block из "родителя", они не ззалипают, но персонаж начинает на них наслаиваться + мне хотелось бы, чтобы они считались "твердыми" для взаимодействия с другими предметами. Дело где-то в Obj_block'ах. Но, как я писал, сам Obj_block – пустой, т.е. я даже не знаю, из-за чего он залипает.

Цитата
// Горизонтальные столкновения

if (place_meeting(x + speedX,y, Obj_block))
{
isMoving = false;
moveTimer = gridSize;
speedX = 0;
speedY = 0
}

if (isMoving == false)

{

// Падение

if (!place_meeting(x,y+speedY,Obj_block))
{
isMoving = true;
moveTimer = gridSize;
speedX = 0;
speedY = 1.25*moveSpeed;
}

// Вертикальные столкновения

if (place_meeting(x,y + moveSpeed, Obj_block))
{
isMoving = false;
moveTimer = gridSize;
speedY = 0;

}


// Движение вправо

if (place_meeting(x-moveSpeed,y,PLAYER_CHAR) && keyboard_check(vk_right))
{
isMoving = true;
moveTimer = gridSize;
speedX = moveSpeed;
speedY = 0;}

// Движение влево

if (place_meeting(x+moveSpeed,y,PLAYER_CHAR) && keyboard_check(vk_left))
{
isMoving = true;
moveTimer = gridSize;
speedX = -moveSpeed;
speedY = 0;
}
}

if (isMoving == true)
{
x += speedX;
y += speedY

moveTimer -= moveSpeed;
if (moveTimer == 0) {isMoving = false;}
}




UPD: Дело оказалось в увеличенной на 25% скорости падения, я провел эксперимент и обнаружил, что при двойной скорости, персонаж проскакивает мимо объектов. Поставил везде единицы и все норм. Т.е. из-за разницы в скорости столкновения и падения блоки залипали, персонаж пролетал. Хотя у персонажа все чуть по другому... в общем, я запутался, но это уже не важно, главное – проблема видна и единицы спасут мир.


Сообщение отредактировал mafon2 - Среда, 22 Июня 2016, 23:16
mafon2Дата: Среда, 22 Июня 2016, 18:56 | Сообщение # 13 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Короче, у меня был какой-то остаточный код в Персонаже. Из-за него все было плохо. Теперь лучше (по клеточкам двигаются, персонаж не накладывается), но все равно, после первого падения movable_block'и прилипают к obj_block'ам – сдвигаются чутка и застревают.
mafon2Дата: Воскресенье, 19 Июня 2016, 14:30 | Сообщение # 14 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Пытаюсь сделать Movable_block (блок, кот. персонаж будет толкать перед собой) – ничего не выходит.

Родительский объект – obj_Block (он сам по себе пустой, просто определяет твердые предметы)

Код в крите

Код
gridSize = 32;
isMoving = false;
moveTimer = 0;
moveSpeed = 4;
speedX = 0;
speedY = 0;

(хотелось, чтоб он двигался, как и персонаж, по клеткам)

Код в степе

Код


    // Горизонтальные столкновения

if (place_meeting(x + moveSpeed,y, Obj_block))
{
        isMoving = false;
        moveTimer = gridSize;
        speedX = 0;
}

if (isMoving == false)

{

    // Падение (такой же, как у персонажа, но персонаж не проваливается, а блок, то проваливается, то повисает в moveSpeed от пола)

if (!place_meeting(x,y+moveSpeed,Obj_block))
{
        isMoving = true;
        moveTimer = gridSize;
        speedX = 0;
        speedY = 1.25*moveSpeed;
}

    // Вертикальные столкновения

if (place_meeting(x,y + moveSpeed, Obj_block))
{
        isMoving = true;
        moveTimer = gridSize;
        speedY = 0;
        
}

    // Движение вправо (простым методом)

if (place_meeting(x-moveSpeed,y,PLAYER_CHAR) && keyboard_check(vk_right))
{
        x+=moveSpeed;
        isMoving = true;
}

    // Движение влево (по клеточкам)   

if (place_meeting(x+moveSpeed,y,PLAYER_CHAR) && keyboard_check(vk_left))
{
        isMoving = true;
        moveTimer = gridSize;
        speedX = -moveSpeed;
        speedY = 0;
}
}

if (isMoving == true)
{
   x += speedX;
   y += speedY
   
   moveTimer -= moveSpeed;
   if (moveTimer == 0) {isMoving = false;}
}


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

Если убрать из родителей «obj_Block», то он двигается и после падения, но персонаж начинает наслаиваться на него и обгонять, не смотря на одинаковую скорость.

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


Сообщение отредактировал mafon2 - Воскресенье, 19 Июня 2016, 15:20
mafon2Дата: Среда, 25 Мая 2016, 07:32 | Сообщение # 15 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Цитата Minskii ()
Ты зырь,у тебя создаётся верёвка при нажатии alt НО НЕ ОДИНАРНО ,то есть,пока альт зажат,верёвки создаются.
Достаточно сделать таймер что-бы они не создавались так быстро


Да, ты прав. Спасибо.

Цитата Minskii ()
Передвигатся танк будет ТОЛЬКО ВВЕРХ ВНИЗ И ВПРАВО ВЛЕВО.ПО КЛЕТКАМ(всмысле его положение не должно пересекать черту клетки,да и сам танк по размеру как клеточка)


Я движение по клеточкам брал из этого (отличного) туториала: http://www.8bitwarrior.com/?p=344

P.S. У самого персонаж двигается по клеточкам.


Сообщение отредактировал mafon2 - Среда, 25 Мая 2016, 07:33
mafon2Дата: Понедельник, 23 Мая 2016, 15:38 | Сообщение # 16 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Я так понял, что из-за степа создавалось несколько веревок поверх друг друга.

Решил включением:

Код
}
if (place_meeting(x, y, ROPE))
{
instance_destroy();
}


Я не допер, почему они накладывались друг на друга.


Сообщение отредактировал mafon2 - Понедельник, 23 Мая 2016, 15:39
mafon2Дата: Вторник, 17 Мая 2016, 22:39 | Сообщение # 17 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
В общем, тема простая.

Проверка крепления веревки. Веревка состоит из блоков ROPE_R и ROPE_L с общим родителем ROPE.

Если блок, к которому веревка крепится уничтожается, то веревка должна порваться, в моем случае, уничтожиться (или возможно создать спрайт / объект порванной веревки).

На правой веревке такой степ (на левой почти такой же):

Код
if (!place_meeting(x+16, y, ROPE) && !place_meeting(x+16, y, Obj_block))
{
instance_destroy();
}

if (!place_meeting(x-16, y, ROPE) && !place_meeting(x-16, y, Obj_block))
{
instance_destroy();
}





Хотелось бы, чтобы ничего не оставалось висеть.

UPD: Я создал веревки через редактор, а не через персонажа и они работают... проблема в создании веревки персонажем:

Код
if (keyboard_check(vk_alt) && keyboard_check(vk_up)  && LADDER == false)
    {
        isMoving = false;
        speedX = 0;
        speedY = 0;
        instance_create(x-32,y, ROPE_left);
        instance_create(x,y, ROPE_right);
    }


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


Сообщение отредактировал mafon2 - Вторник, 17 Мая 2016, 22:59
mafon2Дата: Среда, 11 Мая 2016, 01:07 | Сообщение # 18 | Тема: Поиск вдохновениия - идеи для статей по GMS
был не раз
Сейчас нет на сайте
Может быть обратиться к классике – Тетрису?
mafon2Дата: Суббота, 07 Мая 2016, 17:43 | Сообщение # 19 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Цитата Fill_Freeman ()
if (нет кирпича) ИЛИ (нет воды) - в любом случае будет либо вода либо кирпич. а тебе надо чтобы не было ни воды ни кирпича, поэтому надо использовать И.


Черт, ты – гений! Спасибо большое. Я просто, никак не могу разобраться с и / или / последовательностями и т.п. Как бы это просто другим не казалось. Теперь все течет. Пока даже слишком хорошо. Опять, что-то напутал, но я сам разберусь.



Цитата
Нужно, чтобы при создании каждого нового объекта в его координатах появлялся текст из переменной. Я пытался, но максимум - это текст обновляется около самого первого объекта.


Я добавил ивент Draw к моим блокам-кирпичикам и написал: draw_text(x, y-30, "WC:" + string(Water_block_count)); Все выводится и обновляется.

UPD: Разобрался, красота:


Теперь у меня есть два типа воды: всезаполняющая и текучая.


Сообщение отредактировал mafon2 - Суббота, 07 Мая 2016, 18:29
mafon2Дата: Суббота, 07 Мая 2016, 00:47 | Сообщение # 20 | Тема: Вопрос - Ответ (Game Maker)
был не раз
Сейчас нет на сайте
Спасибо, да, без лишнего else, она течет в обе стороны, но все равно пока что гейммейкер производит бесконечное число водяных блоков, которые вешают "игру". Я замедлил скорость и проследил, что с каждым последующим блоком кол-во созданных блоков увеличивается на порядок. Что-то в роде: 3-15-150-300-1000-...

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

Код

if (FLOW==0)
{
    // Нижний чек
    if (!place_meeting(x,y+16, Obj_block) || !place_meeting(x,y+16, Water_flowing))
    {
    instance_create(x, y+32, Water_flowing);
    Water_block_count = Water_block_count + 1;
    //FLOW = FLOW+1;
    }
        else
        // Чек по сторонам
        {
                // Правый чек
                if (place_meeting(x,y+16, Obj_block) && (!place_meeting(x+16,y, Water_flowing) || !place_meeting(x+16,y, Obj_block)))
                {
                instance_create(x+32, y, Water_flowing);
                Water_block_count = Water_block_count + 1;
                //FLOW = FLOW+1;
                }
                
                // Левый чек
                if (place_meeting(x,y+16, Obj_block) && (!place_meeting(x-16,y, Water_flowing) || !place_meeting(x-16,y, Obj_block)))
                {
                instance_create(x-32, y, Water_flowing);
                Water_block_count = Water_block_count + 1;
                //FLOW = FLOW+1;
                }
        }
// FLOW = FLOW+1;
}




Сообщение отредактировал mafon2 - Суббота, 07 Мая 2016, 00:52
Форум игроделов » Записи участника » mafon2 [21]
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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