RS Game Maker Community
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

 
Расширенный поиск
  Главная Форум Вики Блоги FAQ Игры Статьи Примеры Войти Регистрация  
  Просмотр сообщений
Страниц: 1 2 3 4 5 ... 8
1  Портал / Работа с GameMaker / Re: Азы оптимизации : 20 Декабрь 2016 в 21:06
если интересно то у деактиватора код onCreate такой

 
ObstacleCount=instance_number(obstacle_obj);

CurrentObstacle=0;
i=0;
Obstacle[999,2]=0;
for (i=ObstacleCount-1 ; i>=0 ; i-=1)
{
    Obstacle[i,0]=instance_find(obstacle_obj,i);
    Obstacle[i,1]=Obstacle[i,0].x;
    Obstacle[i,2]=Obstacle[i,0].y;
}
//______________________________________________________________________

WallDecorCount=instance_number(wall_decor_parent_obj);
//show_message(WallDecorCount);
CurrentWallDecor=0;
i=0;
WDecor[999,2]=0;
for (i=WallDecorCount-1 ; i>=0 ; i-=1)
{
    WDecor[i,0]=instance_find(wall_decor_parent_obj,i);
    WDecor[i,1]=WDecor[i,0].x;
    WDecor[i,2]=WDecor[i,0].y;
}

MaxDistanceToPlayer=(screen_rx-screen_lx)+200;


а onStep такой

 
repeat(10)
{
// Obstacles

if(instance_exists(Obstacle[CurrentObstacle,0]))
{
    Distance=point_distance(hero_obj.x,hero_obj.y,Obstacle[CurrentObstacle,1],Obstacle[CurrentObstacle,2]);
    if(Distance>MaxDistanceToPlayer)
        instance_deactivate_object(Obstacle[CurrentObstacle,0]);
}
else
{
    Distance=point_distance(hero_obj.x,hero_obj.y,Obstacle[CurrentObstacle,1],Obstacle[CurrentObstacle,2]);
    if(Distance<=MaxDistanceToPlayer)
        instance_activate_object(Obstacle[CurrentObstacle,0]);
}
CurrentObstacle+=1;
if(CurrentObstacle>=ObstacleCount)
    CurrentObstacle=0;
   
// Wal decor

if(instance_exists(WDecor[CurrentWallDecor,0]))
{
    Distance=point_distance(hero_obj.x,hero_obj.y,WDecor[CurrentWallDecor,1],WDecor[CurrentWallDecor,2]);
    if(Distance>MaxDistanceToPlayer)
        instance_deactivate_object(WDecor[CurrentWallDecor,0]);
}
else
{
    Distance=point_distance(hero_obj.x,hero_obj.y,WDecor[CurrentWallDecor,1],WDecor[CurrentWallDecor,2]);
    if(Distance<=MaxDistanceToPlayer)
        instance_activate_object(WDecor[CurrentWallDecor,0]);
}
CurrentWallDecor+=1;
if(CurrentWallDecor>=WallDecorCount)
    CurrentWallDecor=0;
   
//
}
2  Портал / Работа с GameMaker / Re: Азы оптимизации : 20 Декабрь 2016 в 20:55
2) Почему полное комментирование (но не удаление) кода Draw дает больший прирост чем невыполнение условие обработки кода?

Дело в том, что компилятор GM:S не оптимизирует условия, и в исполняемом коде так и остаётся что-то вроде:
push 0
jz 0xDEADC0DE
то есть ненужная проверка, жрущая время (впрочем немного).
Кстати, константные выражения оптимизируются на этапе компиляции: a = (2+2)*2; даст тот же код, что и a = 8;
Объявляю себя местным экспертом по байт-коду студии )


3) Почему  отключение логики дальних врагов само по себе дало прирост 65 фпс, но при работающем деактиваторе и возврате логики фпс упал не на 65 - с 235 до 170, а аж на 150  - с 235 до 90.

Очевидно, деактиватор сам по себе требует вычислительных ресурсов. Попробуй замерить без логики, но с деактиватором.
2. Не обьясняет разницу между 185 и 150 fps
3. В том то и беда : БЕЗ логики и уже С деактиватором - 230 фпс. Да и врядли он требует ресурсов. Он у меня сначала перебирал 1 инстанс за 1 step. Получилось что проверка всех 650 экземпляров декора занимала почти 11 секунд. Я взял этот код в блок repeat(10) - то есть ускорил в 10 раз до 1.1 секунды - как было 230 фпс так и осталось. Увеличение до repeat(20) тоже не понизило фпс
3  Портал / Работа с GameMaker / Re: Азы оптимизации : 20 Декабрь 2016 в 17:58
Вставлю свои 5 копеек. Заодно может кто-то обьяснит эту магию.

Есть комната с кучей объектов и плохим ФПС. Пытаюсь улучшить ФПС. Меняю ситуацию и делаю замеры. Замеры делаются так: каждый тик счетчик FPS увеличивается на fps_real, а на экран выводится счетчик FPS разделенный на кол-во тиков. Т.е. средний FPS.

Больше всего объектов на карте, это декор (мебель, стены и т.п.) и персонажи.

И так, список действий:

1. Ничего не делаем, изначальное состояние комнаты - 70 фпс
2. Отключаем логику у дальних врагов. Поиск пути, проверка видимости игроков. Проверка типа "если расстояние до игрока больше N, то не выполнять весь следующий код" - 135 фпс
3. Пробую деактивировать дальний декор - 235 фпс
4. Пробую  деактивировать дальних врагов - 200 фпс
5. Пробую  деактивировать дальних врагов и декор - 360 фпс
6. Пробую закомментировать врагам и декору код в эвенте Draw - 185 фпс
7. Пробую прописать в эвенте Draw врагов и декора условие if(false) - 150 фпс (в ситуации когда на экране ни одного врага или элемента декора)
8. Запускаю автоматический деактиватор дальнего декора. Объект все время проходится по списку инстансов декора, проверяет расстояние до игрока, включает ближние и выключает дальние - 235 фпс
9. Запускаю деактиватор, но возвращаю просчет логики дальних врагов - 95 фпс

Собственно вопросы
1. Почему отключение декора и врагов вместе дает больший прирост чем по отдельности?
2. Почему полное комментирование (но не удаление) кода Draw дает больший прирост чем невыполнение условие обработки кода?
3. Почему  отключение логики дальних врагов само по себе дало прирост 65 фпс, но при работающем деактиваторе и возврате логики фпс упал не на 65 - с 235 до 170, а аж на 150  - с 235 до 90.
4  Разработка / Вопросы и ответы по GameMaker / Re: Ответы@Gmakers.ru — все вопросы сюда : 11 Декабрь 2016 в 20:05
Если моя игра тормозит, как узнать, в каком объекте проблема? Есть ли способ узнать, сколько фпс отжирает каждый объект?
5  Разработка / Вопросы и ответы по GameMaker / Re: Ответы@Gmakers.ru — все вопросы сюда : 08 Декабрь 2016 в 20:24
Я нашел в сторе такой скрипт для рисования шрифта с обводкой
///draw_text_outline(x,y,str,outwidth,outcol,outfidelity)
//Created by Andrew McCluskey http://nalgames.com/
//x,y: Coordinates to draw
//str: String to draw
//outwidth: Width of outline in pixels
//outcol: Colour of outline (main text draws with regular set colour)
//outfidelity: Fidelity of outline (recommended: 4 for small, 8 for medium, 16 for larger. Watch your performance!)

var dto_dcol=draw_get_color();

draw_set_color(argument4);

for(var dto_i=45; dto_i<405; dto_i+=360/argument5)
{
    draw_text(argument0+lengthdir_x(argument3,dto_i),argument1+lengthdir_y(argument3,dto_i),argument2);
}

draw_set_color(dto_dcol);

draw_text(argument0,argument1,argument2);
6  Разработка / Вопросы и ответы по GameMaker / Re: Ответы@Gmakers.ru — все вопросы сюда : 01 Декабрь 2016 в 19:54
спасибо
7  Разработка / Вопросы и ответы по GameMaker / Re: Ответы@Gmakers.ru — все вопросы сюда : 01 Декабрь 2016 в 14:37
Есть ли способ получить все ID объектов попавших в collision_circle?
8  Разработка / Вопросы и ответы по GameMaker / Re: Доработать пример за деньги : 27 Ноябрь 2016 в 23:10
Раз пошла такая пьянка, то запощу это:

Задача такая. Есть главный герой, который управляется на WASD.

Нужно сделать код камеры, которая

1. Будет привязана к точке на расстоянии N пикселей от герой в направлении курсора мыши
2. Будет следовать за этой точкой с скоростью X
3. При необходимости будет дрожать как при взрыве с настраиваемой силой и длительностью.
4. При необходимости будет дергаться в нужную сторону с настраиваемой силой (например, героя пырнет ножом персонаж над ним и камера дернется  вниз, в направлении этого тычка)

Если кто-то хочет заняться, пишите в скайп andrew.petkevich и предлагайте свою цену
9  Портал / Новости / Re: GameMaker Studio 2 : 27 Ноябрь 2016 в 22:24
Кто-то знает, как работает импорт проектов из GM:S1 ?
10  Разработка / Вопросы и ответы по GameMaker / Re: Ответы@Gmakers.ru — все вопросы сюда : 01 Ноябрь 2016 в 21:38
Сори, если неуместно в этой теме. Мб мне кто-то зааутсорсит код для гамака за деньги? Не могу справится сам.

Задача такая. Есть главный герой, который управляется на WASD.

Нужно сделать код камеры, которая

1. Будет привязана к точке на расстоянии N пикселей от герой в направлении курсора мыши
2. Будет следовать за этой точкой с скоростью X
3. При необходимости будет дрожать как при взрыве с настраиваемой силой и длительностью.
4. При необходимости будет дергаться в нужную сторону с настраиваемой силой (например, героя пырнет ножом персонаж над ним и камера дернется  вниз, в направлении этого тычка)

Если кто-то хочет заняться, пишите в скайп andrew.petkevich и предлагайте свою цену
11  Разработка / Вопросы и ответы по GameMaker / Re: Ответы@Gmakers.ru — все вопросы сюда : 24 Октябрь 2016 в 13:29
Есть ли у кого-то пример реализации множества движущихся объектов, которые стараются не сталкиваться друг с другом? Обычные инструменты поиска пути гамака не подходят.
12  Разработка / Вопросы и ответы по GameMaker / Re: Ответы@Gmakers.ru — все вопросы сюда : 23 Октябрь 2016 в 13:08
вообще-то в теории можно получить легкий зависон, когда несколько раз подряд выпадает неугодный кадр. почему не сделать тупо

image_index=floor(random(image_number))
if (image_index=n) {image_index+=1}
13  Разработка / Вопросы и ответы по GameMaker / Re: Ответы@Gmakers.ru — все вопросы сюда : 23 Октябрь 2016 в 01:05
т.е. если у меня большой уровень, по которому игрок перемещается, и бОльшая часть которого всегда за кадром,то я выиграю овердохера fps если в каждом draw напишу в начале  if(за краем экрана) return(0);  ?
14  Разработка / Вопросы и ответы по GameMaker / Re: Ответы@Gmakers.ru — все вопросы сюда : 22 Октябрь 2016 в 23:44
Наверное тупой вопрос, но я на всякий случай уточню.

Объекты за пределами экрана тратят производительные мощности на отрисовку? У них вообще воспроизводится draw эвент?

Если за пределами экрана генерятся партиклы, они влияют на производительность? Насчет партиклов уточняю отдельно, поскольку предполагаю, что даже если они не рисуются, то все равно просчитывают изменение своего вижуала (меняет прозрачность, размер и тп)
15  Проекты и Релизы / Готовые проекты / Re: Мой второй провал :) : 18 Август 2016 в 14:39
Мне кажется, что создать заранее хайп вокруг очередного раннера - это что-то из другой реальности.

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

Чего я хотел, так это не бросая основную работу, каждые несколько месяцев выпускать очередную игру, и чтобы она зарабатывала от 100 баксов за месяц. Я бы все лучше понимал, что заходит аудитории, делал бы более умные и прибыльные проекты. Может быть когда-то мне бы повезло сделать нечто невероятно актуальное, и это был бы тот самый хит.

Сейчас я вижу такой путь невозможным, потому, что нужно приложить несоразмерные усилия, чтобы просто получить прибыль выше чем 0.
16  Проекты и Релизы / Проекты в разработке / Re: [2D] - Время Войны [2D Shooter / Platformer] : 18 Август 2016 в 14:32
1. Я прятался
2. Под размахиванием я и имел ввиду попытки ударить ножом
3. Не знаю, кто это - "вы". Лично мне сюжет не нужен. Особенно плохой.
4. Сделать так, чтобы противник не просто палил в игрока, а иногда приседал, это не называется продвинутый ИИ :)
5. Графика мне просто не нравится. Я считаю некрасивыми этих персонажей, и эти декорации.
17  Проекты и Релизы / Готовые проекты / Re: Мой второй провал :) : 17 Август 2016 в 13:53
Ребята,  ваши утверждения и советы не отменяют того факта,  что про игру никто не знает. Уточню по поводу своей рассылки :она вовсе не прошла незамеченной. Я получил огромное множество ответов примерно одинакового содержания : "хорошо,  что вы сделали игру,  мы обязательно про нее напишем в следующем тысячелетии,  но можем и в этом,  всего за 100-200-300 долларов"долларов.  И я не думаю,  что вам на моем месте поможет качество вашей игры. Писем гораздо больше чем у меня скачиваний, а значит присылаемые игры они даже не смотрят
18  Проекты и Релизы / Проекты в разработке / Re: [2D] - Время Войны [2D Shooter / Platformer] : 16 Август 2016 в 15:21
Поиграл, 12 раз умер там, где нужно залазить на домик, и вышел.


Их минусов:
- Сложно
- Надоели диалоги
- Малая дискретность укрытий. Прячешься за укрытием, и гадаешь, поможет оно, или нет. Такие функциональные элементы должны быть понятными. Игрок должен четко понимать, спасет его укрытие, или нет. И если нет , то что сделать и как его использовать, чтобы спасло.
- Хреновая обработка коллизий. Размахивал возле немца мечом и наносил 0 урона. Расстреливал в упор и наносил 0 урона. Возможно это и стало основной причиной высокой сложности.
- Пополнение здоровья работает странно. Во-первых, если у тебя предусмотрено постепенное восстановление ХП, то между боями оно должно восстанавливаться мгновенно. Поскольку я не хочу умирать, перед каждой группой врагов я все равно буду ждать, пока оно восстановится полностью. Вопрос только в том, буду ли я нудно ожидать этого 30-60 секунд, или сразу рвану в следующий бой. Во-вторых оно не должно восстанавливаться в бою вообще. Иначе я буду заниматься очень скучным задротством и прямо посреди перестрелки засиживать за укрытием, ожидая восстановления.
- Хотелось бы иметь интересные различия между оружием. Например, я ожидал, что если достану пистолет, то он будет сильно точнее автомата, и я застрелю врага вдалеке, но не вышло.


Из плюсов:
- Хорошие эффекты огня и озвучка. Чувствуется мощь огнестрельного оружия.
- Задел на хороший геймплей. Но было бы лучше, если бы противники вели огонь очередями, попеременно прячась в укрытие, чтобы у игрока была возможность делать перебежки. Сейчас они кажется прячутся только для перезарядки, это очень редко.
- Графика не ахти конечно - все одноцветное, нарисовано коряво имхо - но круто, что движутся деревья, проработаны мелочи, вроде анимации смерти и брызгов крови , когда немца убивают ударом топора.

В целом игра скорее понравилась. Я люблю 2Д игры с хорошими сражениями, и если бы в ней была нормальная графика, и нормальный баланс, я бы возможно даже купил ее.
19  Проекты и Релизы / Готовые проекты / Мой второй провал :) : 16 Август 2016 в 14:45
Привет, друзья.

Зарелизил еще одну игру в Гугл Плей.

Вот ссылка на нее. Не буду перепечатывать сюда скриншоты и видео, которые и так есть на страничке игры.

https://play.google.com/store/apps/details?id=com.APetkevich.SilverfangInc

Помимо обычной приятности поделится с другими юзерами гейм-мейкера своим творением, пишу, чтобы привести краткую статистику.

Если в прошлый раз (со своей игрой Killrow) я жаловался на ничтожную популярность игры, имея весьма утлую страничку, и нулевой маркетинг, то теперь я постарался лучше.

Я сделал рассылку на примерно 550 англоязычных сайтов, и примерно 60 ютуберов. По совету сервиса ispreadnews, чтобы обеспечить рассылку максимальным доверием, был создан сайт и домен https://silverfang-inc.com/  , соответственно рассылка производилась с платного мыла.

Текущий профит от рассылки (за неделю):
Вот эта новость:
http://www.adweek.com/socialtimes/mobile-game-roundup-satellina-zero-logic-traces-and-more/643460
Вот этот обзор:
http://www.howzurapp.com/#!unusual-space-runner/c1kux  (так же тут попали в топ-10 приложений)

Благодаря этой невероятной информационной буре игра сейчас имеет 30(!) скачиваний.

О качестве игры и странички судите сами. Лично я считаю, что быть инди ппц как тяжело.
20  Разработка / Вопросы и ответы по GameMaker / Re: Ответы@Gmakers.ru — все вопросы сюда : 02 Август 2016 в 13:47
у меня в консоли разработчика гугл плей сообщение о ошибке libpng то появляется то пропадает само по себе =\
Страниц: 1 2 3 4 5 ... 8
RSGMC (gmakers.ru) © 2007—2017
Счётчик–@Mail.ru