Понедельник, 06 Апреля 2026, 01:59

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
YellowAfterlifeДата: Пятница, 08 Мая 2015, 18:46 | Сообщение # 161 | Тема: Умножение палок. И баг в Construct 2.
Сейчас нет на сайте
Цитата last2424 ()
Кароче, дело такое, когда ложишь две палки рядом, сталкиваешься с обоими и выкидываешь палку то переменная палки увеличивается в обоих стаках палок.
Как можно подобное пофиксить?

Зависит от реализации. Полагаю, сейчас сделано как "если нажата кнопка > если есть столкновение > для всех пересекающих объектов > (увеличить количество)"? Если так, то третье условие можно заменить на выборку ближайшего объекта (Pick Nearest).




Сообщение отредактировал YellowAfterlife - Пятница, 08 Мая 2015, 18:47
YellowAfterlifeДата: Суббота, 09 Мая 2015, 19:41 | Сообщение # 162 | Тема: Появляется видимая сетка между тайлами
Сейчас нет на сайте
Факт того, что видны лишь вертикальные "зазоры", вызывает у меня вопрос - округлены ли координаты вида? Если изображения рисуются на дробных координатах, зачастую "стыкуются" они не очень хорошо.
Если это не помогает, для избежания перестановки тайлов на уровнях можно на старте комнаты пройтись по всем "клеткам" с помощью tile_layer_find, и поменять им координаты в фоне (tile_set_region) для соответствия правкам Tileset Champion.
Другое решение - нарисовать все интересующие тайлы на поверхность, и рисовать на экран уже ее. На HTML5 это так же неплохо помогает с производительностью, но трюк нужно повторять при движении камеры (когда на экране должна появится пока еще не нарисованная в поверхность полоска тайлов).
Tile:Horizontal, Tile:Vertical на спрайтах делают вещи аналогичные действиям Tileset Champion для тайлов - они определяют, каким образом будут добавлены "рамки" вокруг изображений в странице текстур для избежания наблюдаемых глюков. "Use for 3D" дает изображению отдельную страницу текстур (это полезно лишь для непосредственного 3D, где может возникнуть потребность рисовать замощенную текстуру).


YellowAfterlifeДата: Воскресенье, 10 Мая 2015, 10:18 | Сообщение # 163 | Тема: Появляется видимая сетка между тайлами
Сейчас нет на сайте
Цитата Raven84 ()
Почему-то так и подумал. Тогда возникает вопрос: почему эта штука не работает, а ручная дорисовка даёт положительный эффект?

Потому что tile:* добавляет "рамки" вокруг фона в целом, а не отдельных тайлов в нем. Если бы каждый тайл был отдельным фоном, это бы помогло.
`Global Game Settings - /HTML5\ - /Graphics\ - /Texture Pages\ - [Preview]` чтобы посмотреть на генерируемую страницу текстур.


YellowAfterlifeДата: Воскресенье, 10 Мая 2015, 10:23 | Сообщение # 164 | Тема: Как удалить несколько объектов одного тега?[Решено]
Сейчас нет на сайте
Код
GameObject[] list = GameObject.FindGameObjectsWithTag("telo");
int i = list.Length;
while (--i >= 0) {
      GameObject obj = list[i];
      // удалить obj
}
? Заодно проверить, находится ли нужные объекты вовсе.




Сообщение отредактировал YellowAfterlife - Воскресенье, 10 Мая 2015, 10:23
YellowAfterlifeДата: Воскресенье, 10 Мая 2015, 17:44 | Сообщение # 165 | Тема: Сурфейс под деревом
Сейчас нет на сайте
Цитата MrSlap ()
Тогда я поигрался с глубиной, и теперь дерево растёт выше темноты ночной! Это плохо.

А чем это плохо? Разве дерево (по крайней мере, его ветви) не должно быть полностью черным и над всеми объектами, поскольку свет до его вершины его кроны никак достать не может?

Уточнение: Я имею в виду, что дерево не может быть "ярким"/"освещенным" в любом случае, поскольку свет на него сверху попадать не может. Следовательно, можно оставить его над всеми объектами, и просто затемнить с помощью какого-нибудь image_blend.




Сообщение отредактировал YellowAfterlife - Воскресенье, 10 Мая 2015, 17:54
YellowAfterlifeДата: Воскресенье, 10 Мая 2015, 23:17 | Сообщение # 166 | Тема: Конструктор\движок 2D, работающий в linux
Сейчас нет на сайте
Цитата vadim74a ()
Разве у него есть экспорт под Android?

Есть поддерживаемый сообществом порт для Android.


YellowAfterlifeДата: Среда, 13 Мая 2015, 13:08 | Сообщение # 167 | Тема: API для "двухстраничного" интерфейса
Сейчас нет на сайте
Цитата Gudleifr ()
(Например, в HTML фреймы обмениваются информацией в целом, один не может адресовать конкретный фрагмент другого)

Не совсем. В JS разрешается управлять содержимым iframe в документе если он находится на том же домене, в том числе и адресовать document/window iframe'а. Следовательно, при загрузке iframe можно просто присвоить ссылку на "внешний" документ в одну из переменных, и из iframe можно будет через эту переменную работать с содержащим его документом. А далее - дело техники - разработать набор функций, что позволят достаточно удобно находить нужный элемент в том или ином фрейме.
Чтобы не разбрасываться пустыми словами, сделал пример, в котором ссылка в каждом из двух фреймов меняет содержимое отдельного элемента в другом.


YellowAfterlifeДата: Среда, 13 Мая 2015, 13:16 | Сообщение # 168 | Тема: as3+nape как сделать колесо круглым? :)
Сейчас нет на сайте
Круглые объекты делают через nape.shape.Circle а не полигонами. Тут есть пример (в 40+ строках создается круглый объект).

YellowAfterlifeДата: Среда, 13 Мая 2015, 16:14 | Сообщение # 169 | Тема: Dropbox старая папка Public
Сейчас нет на сайте
В какой-то момент включение публичной папки убрали, и теперь ее можно получить лишь в составе платной подписки.
Я писал запись о использовании Google Drive для прямых ссылок. GD регулярно переставляет кнопки по интерфейсу но функционал остается на месте.


YellowAfterlifeДата: Воскресенье, 24 Мая 2015, 17:21 | Сообщение # 170 | Тема: Выбор юнита
Сейчас нет на сайте
Создание вспомогательного объекта (контроллера):
global.unit_selected = -1
Событие глобального нажатия левой кнопки мыши для этого объекта:
global.unit_selected = -1
with (obj_unit) {
    if (position_meeting(mouse_x, mouse_y, id)) {
        global.unit_selected = id
    }
}

События юнита, где нужна проверка на "выбранность":
if (global.unit_selected == id) {
    // сейчас выбран данный юнит, можно реагировать на ввод пользователя.
}

Чтобы не разбираться с разграничением, когда клик должен выделять, а когда двигать юнитов, движение\следование за мышью можно установить на ПКМ (если оно еще не там).


YellowAfterlifeДата: Воскресенье, 24 Мая 2015, 18:24 | Сообщение # 171 | Тема: Выбор юнита
Сейчас нет на сайте
Цитата Miseri ()
Спасибо за совет...
А по поводу разбирательства с кликом и движением... А как это будет выглядеть допустим на Андроиде? Ведь по сути там нет правой и левой кнопки мыши.

По умолчанию, два быстрых касания считаются GMS за клик правой кнопки мыши.
В зависимости от игры, для мобильных платформ можно поменять функции ЛКМ/ПКМ местами, если двигать юниты игроку придется чаще, чем их выбирать.

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


YellowAfterlifeДата: Четверг, 28 Мая 2015, 20:09 | Сообщение # 172 | Тема: ini создается, записывается, не читается.
Сейчас нет на сайте
Вариант 1: Записывать индекс комнаты:
// сохранение:
ini_open("some.ini")
ini_write_real("room", "index", room)
ini_close()
// загрузка:
ini_open("some.ini")
if (ini_key_exists("room", "index")) {
room_goto(ini_read_real("room", "index", -1))
} else {
// INI нет вовсе или номер комнаты в нем не записан.
}
ini_close()


Вариант 2: Записывать имя комнаты и правильно его считывать:
// сохранение:
ini_open("some.ini")
ini_write_string("room", "name", room_get_name(room))
ini_close()
// загрузка:
ini_open("some.ini")
if (ini_key_exists("room", "name")) {
room_goto(asset_get_index(ini_read_string("room", "name", "")))
} else {
// INI нет вовсе или имя комнаты в нем не записано.
}
ini_close()

(если версия 8.1 или ниже то заменить asset_get_index скриптом отсюда)




Сообщение отредактировал YellowAfterlife - Четверг, 28 Мая 2015, 20:09
YellowAfterlifeДата: Пятница, 05 Июня 2015, 14:29 | Сообщение # 173 | Тема: Тайловые узоры
Сейчас нет на сайте
Если искать в google images по запросу "swirl plant pattern texture" или "swirl flower pattern texture", можно найти много похожего. Упор на наличие в запросе "pattern" (узор). Можно и "seamless pattern" вместо "pattern texture".

YellowAfterlifeДата: Воскресенье, 07 Июня 2015, 10:33 | Сообщение # 174 | Тема: [GMS] Разница device_mouse_check_button и mouse_check_button
Сейчас нет на сайте
device_mouse_check_button позволяет указать номер "мыши" (касания) что необходимо если хочется сделать мультитач (например, для "джойстиков" в углах экрана). mouse_check_button(b) работает как device_mouse_check_button(0, b).

YellowAfterlifeДата: Воскресенье, 07 Июня 2015, 11:32 | Сообщение # 175 | Тема: [GMS] Рисование опр. части спрайта
Сейчас нет на сайте
В общем случае:

http://yal.cc/get/15-06/xm/draw_sprite_cutup.gmk
/// draw_sprite_cutup(sprite, subimg, x, y, cut)
// cut ranges from 0 (entire sprite visible) to 1 (entire sprite hidden)
var sprite, height, cut;
sprite = argument0
height = sprite_get_height(sprite)
cut = round(max(0, min(argument4, 1)) * height)
draw_sprite_part(sprite, argument1, 0, cut, sprite_get_width(sprite), height - cut, argument2, argument3)


YellowAfterlifeДата: Вторник, 09 Июня 2015, 09:27 | Сообщение # 176 | Тема: Ввод текста
Сейчас нет на сайте
Данная проблема - баг (ссылка на рапорт), который слишком уж неспешно исправляют.
Ещё риведенный код можно немного упростить с помощью "else if"
draw_set_font(font0) //заранее выбрать шрифт и вбить в него русский алфавит
draw_text(10,10,string(str)) //рисуем строку

if keyboard_check_pressed(vk_anykey) //нажатие клавиши
{
    if keyboard_check_pressed(vk_backspace) //бэкспейс
    {
        if (string_length(str) > 0) //в строке есть символы
        {
            str=string_delete(str,string_length(str),1) //удаляем последний символ
        }
    }
    else if keyboard_check_pressed(vk_delete)
    {
       str=string_delete(str,1,1) //удаляем первую букву
    }
    else if !keyboard_check_pressed(vk_shift)
    {
        if (string_length(str) < 30) // максимум символов в строке
        { 
            key=keyboard_lastchar //нажатая клавиша
            str += key //добавление буквы в строку
        }
    }
}

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




Сообщение отредактировал YellowAfterlife - Вторник, 09 Июня 2015, 09:28
YellowAfterlifeДата: Пятница, 12 Июня 2015, 23:02 | Сообщение # 177 | Тема: GameMaker' Visualizer
Сейчас нет на сайте
Название: GameMaker' Visualizer
Жанр: Программа/утилита
Платформы: Веб
Автор: YellowAfterlife (VK | Twitter)
Ссылка: yellowafterlife.itch.io/gmvisualizer
Описание:
GameMaker' Visualizer это веб-программа с двумя основными функциями:
1. Подсветка DnD/GML: Программа может взять кусок кода или отрывок "object information", подсветить код/выражения/DnD иконки в них, и вывести HTML (для сайтов/блогов) или BB (для форумов) код.
2. Перевод DnD в GML: Если дать программе ранее упомянутый фрагмент "object information", она может перевести его в эквивалентный GML код. Процесс преобразования довольно точный и учитывает причуды DnD (к примеру, особенности обработки "applies to" для разных типов действий).

Скриншоты:
Генерация BB кода:

Генерация HTML кода:

Перевод DnD в GML:

GIF-ка с вышеперечисленными:


О случаях использования:


Ещё у программы открытый исходный код, который можно найти на Github.
Не уверен, лучшее ли место данной теме в "готовых проектах", так как такое в идеальном случае крепится в разделе по GameMaker (что и было сделано на англ. форуме с согласия администрации).
Должно быть полезным.




Сообщение отредактировал YellowAfterlife - Пятница, 12 Июня 2015, 23:03
YellowAfterlifeДата: Пятница, 12 Июня 2015, 23:14 | Сообщение # 178 | Тема: Конструктор игр на планшете...
Сейчас нет на сайте
Цитата Excelsiorer ()
Flow, А для подобного вида работы требуется лишь подключиться к любой беспроводной сети, и можно хоть из другого города этим заниматься, если компьютер включен?

Да. Расстояние лишь определяет время между действием и изменением на экране (пока действие дойдет до компьютера и назад вернется обновление области экрана), но при наборе кода это не очень сильно мешает, если задержка невелика.

Если пока ещё ведется выбор устройства, упоминание планшетов на Win8[.1] это дельный совет - у меня на столе рядом с компьютером расположен Asus Vivotab Smart, и GMS на нем работает вполне нормально.
Ещё выбор устройства на базе Windows позволит использовать его в качестве дополнительного монитора на основном компьютере с помощью Mouse Without Borders или Synergy.
Одно лишь примечание - желательно приобрести какую-нибудь bluetooth клавиатуру, так как счастья в наборе кода на сенсорной клавиатуре очень мало.


YellowAfterlifeДата: Суббота, 13 Июня 2015, 19:57 | Сообщение # 179 | Тема: GameMaker' Visualizer
Сейчас нет на сайте
Цитата TLT ()
С особеностями GMS работает или с GML от GM8?

Поддерживает и GM8 и GMS.
Кнопочки у обоих преимущественно одинаковые. Файл с описанием действий для их распознания дает неплохую картину происходящего -- несколько кнопок убрали, несколько добавили, в нескольких поменяли параметры.
GMS-специфичный синтаксис и функции тоже поддерживаются, пример:
var array = undefined;
var grid = ds_grid_create(1, 1);
array[0] = 1;
grid[#0, 0] = array;
show_debug_message(array_get(grid[#0, 0], 0)); // 1
array[@0] = 2;
show_debug_message(array_get(grid[#0, 0], 0)); // 2


YellowAfterlifeДата: Воскресенье, 14 Июня 2015, 22:25 | Сообщение # 180 | Тема: Снижение нагрузки ЦП.
Сейчас нет на сайте
Создать список, занести значения, перемешать список, достать первые 8 значений:
var list;
list = ds_list_create()
for (var i = 0; i < 16; i += 1) ds_list_add(list, i)
ds_list_shuffle(list)
n_1 = ds_list_find_value(list, 0)
n_2 = ds_list_find_value(list, 1)
n_3 = ds_list_find_value(list, 2)
n_4 = ds_list_find_value(list, 3)
n_5 = ds_list_find_value(list, 4)
n_6 = ds_list_find_value(list, 5)
n_7 = ds_list_find_value(list, 6)
n_8 = ds_list_find_value(list, 7)
n_1 = ds_list_find_value(list, 0)
ds_list_destroy(list)

Но проблема правда вряд ли в этой части - даже для 8-ого значения шанс того что оно совпадет с каким-либо из предыдущих будет 1/2.


Поиск:

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