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

 
Расширенный поиск
  Главная Форум Вики Блоги FAQ Игры Статьи Примеры Войти Регистрация  
  Просмотр сообщений
Страниц: 1 2 3 4 5 ... 8
1  Разработка / Вопросы и ответы по GameMaker / Re: Ответы@Gmakers.xyz — все вопросы сюда : 11 Июнь 2018 в 23:56
Я имел в виду это (8-9 строка)

draw_sprite(sprite_index,image_index,x,y);

var max_length, solid_object;
max_length = distance_to_point(mouse_x, mouse_y);
solid_object = objWall;

var lx, ly;
lx = x;
ly = y;

for (i = 0; i < max_length; i+=1) {
    lx = x + lengthdir_x(i, direction);
    ly = y + lengthdir_y(i, direction);
    if(collision_line(x, y, lx, ly, solid_object, 1, 0)) {
        break;
    }
}

draw_line(x,y,lx,ly);
2  Разработка / Вопросы и ответы по GameMaker / Re: Ответы@Gmakers.xyz — все вопросы сюда : 11 Июнь 2018 в 20:07
Всё просто – если max_length <= 0, то цикл ни разу не выполнится и переменные lx и ly останутся неопределенными. Чтобы победить это, достаточно задать им значение по умолчанию: х и у соответственно.

Кстати это напомнило мне одну фичу GM. А именно, что область видимости локальных переменных – весь скрипт, независимо от того, где они объявлены. Вот например
v = "self";

var v = "local";

show_message( v );   // "local"
show_message( self.v ); // Error: uninitialized variable 'v'

Кажется, что первое присваивание записывает значение в переменную объекта (self.v), но это не так, т.к. локальная переменная (local.v) в том месте уже видна. Соответственно, строка записывается в неё, а self.v остаётся неопределённой.
3  Портал / Песочница (статьи) / Re: Декомпилятор для GameMaker:Studio : 19 Май 2018 в 02:48
EPIC UPDATE

Официально заявляю об анонсе S.T.A.L.K.E.R. 2 о релизе версии 1.0

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

Дальнейшие планы – сделать распаковку .exe в проект для GMS 2, ну и чинить баги, очевидно.
4  Проекты и Релизы / Проекты в разработке / Re: Fungeoid [игра для программистов, головоломка] : 01 Май 2018 в 04:28
Да, адресация по двум индексам приносит боль.

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


P.S. А все-таки перевернуть бы стек обратно, или переставить вниз, или как-нибудь отметить его "верх".

UPD Удалось разогнать до 1797
5  Проекты и Релизы / Проекты в разработке / Re: Fungeoid [игра для программистов, головоломка] : 21 Апрель 2018 в 18:50
О вреде глобальных переменных: ты переопределяешь Task в tasks/task_*.lua
Если писать local Task = {}, то всё ок. Правда непонятно почему Task.new() во втором случае вообще вызывался, так как Task к этому моменту уже должен был перезаписаться.
6  Проекты и Релизы / Проекты в разработке / Re: Fungeoid [игра для программистов, головоломка] : 20 Апрель 2018 в 21:18
Мне кажется, так правильнее. Ведь во всех книжках есть аналогия со "стаканом", в который помещают значения. "Перевернутый" стек - как раз очень похож на стакан =)
Тогда пусть стакан снизу заполняется

Блин, вот такого читинга я и боялся, ага. Как думаете, как обезопасить игру от таких решений? Тупо сделать поле меньше - не хочется =(
В TIS-100 на каждое задание четыре теста, из них один рандомный (каждый раз разный)

А теперь решение 320 / 153:
ПоказатьСпойлер
ПоказатьСПОЙЛЕР
Ну или как-то так

Но это будет быстрее чем мой честный 613.
Не знаю, какой смысл ты вкладываешь в понятие "честный". Для меня это решение, печатающее правильный ответ для любых корректных входных данных.
7  Проекты и Релизы / Проекты в разработке / Re: Fungeoid [игра для программистов, головоломка] : 20 Апрель 2018 в 03:05
Илья, ты зачем стек перевернул?)


UPD
Самый быстрый, который возможно сделать - 615.
Это если без читов.

Хотя я кажется понял, как это сделать. Эх, было бы поле 16х16...

UPD 2
Что, если я скажу тебе, что это можно честно пройти за 320 циклов?
(Блин, чем я занимаюсь в два часа ночи...)
8  Проекты и Релизы / Проекты в разработке / Re: Fungeoid [игра для программистов, головоломка] : 16 Апрель 2018 в 00:13
Лучше я 11.0 скачаю
9  Проекты и Релизы / Проекты в разработке / Re: Fungeoid [игра для программистов, головоломка] : 16 Апрель 2018 в 00:00
Хз почему, но если в setColor не передавать четвертый параметр (альфа), то все ок.

10  Проекты и Релизы / Проекты в разработке / Re: Fungeoid [игра для программистов, головоломка] : 15 Апрель 2018 в 23:09
Löve 0.10.2: на полсекунды появляется интерфейс потом чёрный экран. Что-то ты там сломал.
11  Проекты и Релизы / Проекты в разработке / Re: Fungeoid [игра для программистов, головоломка] : 15 Апрель 2018 в 21:34
Renamed APIs
All renamed APIs in 11.0 are deprecated rather than removed, until the next major release.

Renamed love.window.getPixelScale to love.window.getDPIScale.
...
12  Проекты и Релизы / Проекты в разработке / Re: Fungeoid [игра для программистов, головоломка] : 15 Апрель 2018 в 19:57
Как бы ты хотел удалять символы? Как тебе будет удобно?
На самом деле ничего лучше удаления текущего символа через delete я тоже не придумал.
Сделай еще love.keyboard.setKeyRepeat(true) в love.load()
13  Проекты и Релизы / Проекты в разработке / Re: Fungeoid [игра для программистов, головоломка] : 15 Апрель 2018 в 18:30
У меня 80

Выглядит круто, аж TIS-100 захотелось пройти. Но как, блин, удалять символы из клеточек?
14  Проекты и Релизы / Проекты в разработке / Re: Fungeoid [игра для программистов, головоломка] : 13 Апрель 2018 в 14:01
Для игры подойдет интерфейс как в SpaceChem, где с хоткеями набор "программы" занимает секунды. Ну, после того как ты час (два, три...) придумывал решение.
Точнее там есть два способа ввода – первые 5-10 уровней, пока не выучишь хоткеи, перетаскиваешь элементы мышкой и тебе норм. Хотя с самого начала использовать WASD на смену направления интуитивно очевидно.
15  Проекты и Релизы / Проекты в разработке / Just another match-3 : 23 Февраль 2018 в 03:33
[attachment=4]

Я тут для развлечения разрабатывал клон известной в узких кругах игры Bejeweled Twist. Много часов было потрачено в ней еще на кнопочном сименс С75. Главная фишка игры, отличающая её от большинства подобных, в том что при совершении хода нужно не поменять местами два соседних элемента, а повернуть квадрат из четырёх. С тех пор мне, кстати, не попадались match3, использующие ту же идею (не то чтобы я их специально искал, но всё же).

Со стороны игровой процесс выглядит не очень сложно для реализации: яжпрограммист, я могу проверить что три соседних элемента одинакового цвета!
Но как выяснилось, сделать хороший match3 не так просто. Все эти каскады падающих кристаллов генерировали просто потоки трудновоспроизводимых багов...
...пока я не взял в руки пулемёт автомат.
Это просто прекрасно - достаточно один раз описать все состояния (и не лезть грязными руками в fsm_set_state(...)), и все события происходят в нужном порядке. По крайней мере, все ошибки будут в описании, а не в реализации. Но в общем, этот пост не о победе матлогики над кривыми руками.

В этой демке самое главное уже сделано: можно крутить кристаллики, собирать их в линии и т.д. Также при собирании длинных линий появляются бонусные кристаллы с различными эффектами. Их можно сдвинуть в кучку и каскадно подорвать.
Планируется когда-нибудь добавить меню, кампанию, режим испытания и всё остальное, что было в оригинале.

[attachment=1]
[attachment=2]

P.S. Отпишитесь, кому удалось собрать ряд из 8.
[attachment=3]
[attachment=5]
16  Портал / Примеры для GameMaker (GML) / Re: Маленькие хитрости GML : 20 Февраль 2018 в 16:34
бамп треду

Померил скорость доступа к переменным: глобальным, переменным экземпляра, локальным и переменным других экземпляров (активных и деактивированных).

var N = 10000000;
var t;

globalvar v_global;
v_global = 0;
v_instance = 0;
var v_local = 0;

var active = instance_create(0, 0, o_dummy);
active.v_other = 0;

var inactive = instance_create(0, 0, o_dummy);
instance_deactivate_object( inactive );
inactive.v_other = 0;

t[0] = get_timer();

repeat N {
    v_global++;
}

t[1] = get_timer();

repeat N {
    v_instance++;
}

t[2] = get_timer();

repeat N {
    v_local++;
}

t[3] = get_timer();

repeat N {
    active.v_other++;
}

t[4] = get_timer();

repeat N {
    inactive.v_other++;
}

t[5] = get_timer();

show_message(
    "Global: " + string( ( t[1] - t[0] ) / 1000 ) + "#" +
    "Instance: " + string( ( t[2] - t[1] ) / 1000 ) + "#" +
    "Local: " + string( ( t[3] - t[2] ) / 1000 ) + "#" +
    "Active: " + string( ( t[4] - t[3] ) / 1000 ) + "#" +
    "Inactive: " + string( ( t[5] - t[4] ) / 1000 )
);
game_end();

Как и ожидалось, локальные самые быстрые, а из других объектов самые медленные. Но в целом разница между ними небольшая.
17  Разработка / Вопросы и ответы по GameMaker / Re: Ответы@Gmakers.xyz — все вопросы сюда : 14 Январь 2018 в 02:38
И surface_get_texture() даже не нужен.
18  Проекты и Релизы / Готовые проекты / Re: Master Mind : 21 Ноябрь 2017 в 19:31
Кстати, формат data.win у GMS2 такой же, как и у GMS1, только добавилась секция EMBI (что бы это ни значило).
Неплохой стимул для допиливания декомпилятора, осталось разжиться где-нибудь студией 2.0
19  Проекты и Релизы / Готовые проекты / Re: Master Mind : 21 Ноябрь 2017 в 04:14
Мне тупо выпали все пары подряд ¯\_(ツ)_/¯

20  Разработка / Вопросы и ответы по GameMaker / Re: Ответы@Gmakers.xyz — все вопросы сюда : 28 Сентябрь 2017 в 02:44
как сделать так что бы он появлялся в месте попадания, например в стену?
Очевидно, создавать его в месте попадания в стену.

2 - Что бы выстрел был из дула оружия (сейчас он немного ниже)
Это буквально предыдущий пункт FAQ II.2.17.

3 - Разброс пуль по сторонам (просто если оставить тот код, что был в примере, спрайт начинает дергаться из-за постоянно меняющегося direction)
Сейчас пули вылетают в направлении direction, разброс это отклонение от линии прицеливания, следовательно... посылать пули в направлении direction ± random(accuracy). Кстати, тоже есть в FAQ.
Страниц: 1 2 3 4 5 ... 8
RSGMC (gmakers.ru) © 2007—2018
Счётчик–@Mail.ru