Среда, 27 Ноября 2024, 14:17

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Результаты поиска
YellowAfterlifeДата: Воскресенье, 29 Марта 2015, 11:18 | Сообщение # 321 | Тема: Примеры для Game Maker
Сейчас нет на сайте
Цитата Lucckyy ()
Скиньте пример начала для платформера где игрок прыгает и опускается,а если нет блока то падает.
Не могу найти


http://yal.cc/get/xm/simple/dd-platformer.gmk
Самый что ни есть минималистичный платформер. При желании легко переводится на код.




Сообщение отредактировал YellowAfterlife - Воскресенье, 29 Марта 2015, 11:21
YellowAfterlifeДата: Воскресенье, 29 Марта 2015, 10:52 | Сообщение # 322 | Тема: Сохранение игры внутри игры
Сейчас нет на сайте
Запаковывать файлы в сам .exe файл тяжело - это требует разбора структуры формата приложения (чтобы заменить какие-то стандартные ресурсы на свои), либо ухищрений с перепаковкой файла внешним ПО (с UPX, например)

Можно взять какую-нибудь DLL-ку для работы с архивами, запаковывать пользовательские уровни в архив, и ложить архив в папку возле "плеера" (что потом будет вытягивать и обрабатывать файлы из архива). В самом GameMaker: Studio по-умолчанию (без YYC) это так и работает (ресурсы игры складываются в data.win).


YellowAfterlifeДата: Воскресенье, 29 Марта 2015, 08:02 | Сообщение # 323 | Тема: Ищу игру (Master of Monsters)
Сейчас нет на сайте
На Sega Megadrive/Genesis было очень ограниченное количество стратегий.
Полагаю, имеется в виду Master of Monsters (совпадает: глобальная карта, ограничения по ходам, бои с видом сбоку, прокачка юнитов). Игра, правда, не об одних лишь драконах.


YellowAfterlifeДата: Воскресенье, 29 Марта 2015, 07:43 | Сообщение # 324 | Тема: Песочницы. Вид с верху.
Сейчас нет на сайте
Из того что легко вспомнить на данный момент:
Minicraft (тот, что был сделан на Ludum Dare; не путать с Minecraft)
Planetscape (небольшая но вполне пригодная игра)
Можно сказать, что тема "песочниц" с видом сверху толком не раскрыта, поскольку проекция поощряет генерацию много-уровневых подземелий и иных сооружений, что в общей сложности вносят риск превращения игры в roguelike.


YellowAfterlifeДата: Воскресенье, 29 Марта 2015, 02:02 | Сообщение # 325 | Тема: id объекта при клике мыши на него
Сейчас нет на сайте
instance_place, instance_position, и все collision_ функции возвращают ID найденного экземпляра.
Следовательно, можно проделывать следующим образом в шаге юнита:
if (selected && mouse_check_button_pressed(mb_left)) { // если текущий юнит выбран и мышь нажата
    target = collision_point(mouse_x, mouse_y, obj_enemy, false, true)
    if (target) { /* найден враг, можно атаковать */ }
}


Цитата EfimovMax ()
objTest.id возвратит идентификатор объекта.

Утверждение верно, но obj_name.id возвратит id первого экземпляра объекта, а не какого-то отдельно взятого [на который нажали мышью].




Сообщение отредактировал YellowAfterlife - Воскресенье, 29 Марта 2015, 04:04
YellowAfterlifeДата: Суббота, 28 Марта 2015, 16:48 | Сообщение # 326 | Тема: Можно ли gamemaker создавать переменные сам?
Сейчас нет на сайте
Цитата EfimovMax ()

Код
Array[999]='Ты не прав'

if Array[998]='Сам проверь' game_end()

Сравнение строкового значения с числом выдает ошибку. Ты читал текст ошибки? В GMS оно даже отчетливо говорит "Invalid comparison type" (неправильный тип сравнений).
Можно с таким же успехом написать "if 0='Сам проверь' { }" и говорить, что в GameMaker не работают сравнения.


Array[999] = ''
if (Array[998] == 0) {
show_message("What are you doing with your life.")
}




Сообщение отредактировал YellowAfterlife - Суббота, 28 Марта 2015, 16:49
YellowAfterlifeДата: Суббота, 28 Марта 2015, 16:29 | Сообщение # 327 | Тема: Можно ли gamemaker создавать переменные сам?
Сейчас нет на сайте
Цитата EfimovMax ()
Это где ты такое вычитал? GM не создаёт автоматом предыдущие индексы массива. Код array[99] = 0 создаст только один элемент массива с индексом 99 и значением 0.
Пользуйтесь только достоверными источниками

В GameMaker не бывает "дыр" в массивах. Если запись происходит за границу массива, массив расширяется (происходит пере-выделение памяти под него) и все "новые" ячейки обнуляются,
arr[9] = 1
for (var i = 0; i < 10; i += 1) {
show_message("arr[" + string(i) + "] -> " + string(arr[i]))
}

отобразит серию 0 и 1 в конце, без ошибок.

Что смешно, в предоставленной ссылке на документацию описывается эта же концепция (поиск по фразе "You will notice that the array has been initialised backwards"), и все примеры кода в документации инициализируют массивы задом наперед, поскольку
for (var i = 0; i < 100; i += 1) arr[i] = 0
Уничтожит и выделит массив заново 100 раз. И время выполнения растет с каждой новой итерацией, поскольку памяти выделять и освобождать нужно все больше и больше.

Ну и раз уж мы заговорили о критике кода, хотелось бы заметить, что инициализировать массив значениями "noone" - сомнительная идея, потому что noone это просто спец. константа, равная -4.


YellowAfterlifeДата: Суббота, 28 Марта 2015, 15:50 | Сообщение # 328 | Тема: Можно ли gamemaker создавать переменные сам?
Сейчас нет на сайте
Если нужен список значений, использовать вышеупомянутые массивы.
Еще про массивы:

  • Достаточно присвоить значение в "последнюю" ячейку - остальные будут заполнены нулями,
    array[99] = 0 // array[0..99] автоматически будут установлены в 0 при выделении памяти
  • Есть двухмерные массивы (см. справку)
  • Если используете GameMaker: Studio, можно даже записывать один массив в другой массив.

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


YellowAfterlifeДата: Пятница, 27 Марта 2015, 22:53 | Сообщение # 329 | Тема: Время вылета пути!
Сейчас нет на сайте
Вариант без alarm'ов:
Цитата

Information about object: obj_player
Sprite: <no sprite>
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: <no parent>
Mask: <same as sprite>
Create Event:
set variable cooldown to 0

Step Event:
set variable cooldown relative to -1

Mouse Event for Glob Left Button:
if cooldown is smaller than 1
. . start of a block
. . set variable cooldown to 10
. . create instance of object obj_bullet at relative position (0,0) with speed 4 in direction point_direction(x, y, mouse_x, mouse_y)
. . end of a block
"cooldown" используется как таймер до возможности следующего выстрела.


YellowAfterlifeДата: Пятница, 27 Марта 2015, 15:59 | Сообщение # 330 | Тема: При нажатии действие.
Сейчас нет на сайте
В качестве нехитрого способа, можно добавить в активацию проверку того, что объект видимый, вместо непосредственной активации создавать "активированный объект" и скрывать основной, и через нужное количество секунд (с помощью alarm) делать его вновь видимым.

YellowAfterlifeДата: Пятница, 27 Марта 2015, 03:33 | Сообщение # 331 | Тема: Бегущая строка и ее обновление
Сейчас нет на сайте
GMK
Create:
Код
keyboard_string = "Type something..."
runline_text = keyboard_string
runline_pos = 0 // offset (in pixels)
runline_space = 30 // space after the end of text

Step:
Код
runline_text = keyboard_string
runline_pos += 4

Draw:
Код
draw_set_font(fnt_runline)
var p, w, i, dw;
w = string_width(runline_text) + runline_space
if (w > 0) {
     p = runline_pos
     p = (p mod w) + (p < 0) * w
     dw = room_width // output width
     i = max(2, ceil(dw / w))
     while (i >= 0) {
         draw_text(i * w - p, 50, runline_text)
         i -= 1
     }
}


YellowAfterlifeДата: Пятница, 27 Марта 2015, 02:01 | Сообщение # 332 | Тема: Анимация.
Сейчас нет на сайте

GMK
spin_pos это смещение (в "строках")
spin_speed это скорость вращения (опять таки в "строках")
Пример включает прокрутку текста и прокрутку фона, поскольку я не совсем уверен о том, что из двух является желаемым эффектом.
Полагаю, сделать замедление или прочий нужный эффект не составит большого труда.


YellowAfterlifeДата: Четверг, 26 Марта 2015, 10:41 | Сообщение # 333 | Тема: Вопрос - Ответ (Game Maker)
Сейчас нет на сайте
Цитата Banan4ik ()
ООО, спасибо! Все работает!
Пользуясь случаем, ты же автор Terrasavr, или я что-то путаю?
Верно.
Занимаюсь различным времяпрепровождением, в общем-то говоря.


YellowAfterlifeДата: Четверг, 26 Марта 2015, 10:11 | Сообщение # 334 | Тема: Массив в мультиплеере
Сейчас нет на сайте
С Unity RPC все довольно странно. Вызывает подозрения, что им занимались те же люди, что сделали встроенный API для геймпадов.

Есть несколько вариантов:
1. Запаковать массив более плотно, преобразовав его в буфер, и после вызвав Convert.ToBase64. Это подразумевает 4 байта base64 на каждые 3 байта буфера с массивом, что обычно вполне приемлемо. Тут есть пример кода.
2. Воспользоваться незадокументированным фактом того, что по RPC кроме описанных в документации типов можно еще отправлять массив байт (byte[]). Полагаю, преобразование массива int в массив byte и обратно не требует дополнительных пояснений. Данный трюк используется тут чтобы отправить/принять сериализированный класс.


YellowAfterlifeДата: Четверг, 26 Марта 2015, 10:05 | Сообщение # 335 | Тема: Программа для создания модов
Сейчас нет на сайте
"Универсальных" программ для создания модов не бывает, поскольку принципы и технологии создания игр значительно отличаются, и особой стандартизации не подлежат.
А что мешает поискать приложения для моддинга SimCity 5 в отдельности? Небольшой поиск выдал SimCityPak, что позволяет просматривать и редактировать файлы игры.
... а еще можно рассмотреть возможность перехода на Cities: Skylines, в котором есть поддержка моддинга "из коробки", и созданные работы можно загружать в Steam Workshop.


YellowAfterlifeДата: Среда, 25 Марта 2015, 22:14 | Сообщение # 336 | Тема: Ввод текста в GMS
Сейчас нет на сайте
Цитата Randall ()
Большое спасибо, этот видел, много лишнего правда там, но порою. Крупное окно и многострочность не нужна.
Мне просто нужно вводить до ста, скажем, знаков в одной строке.

В примере нет многострочности, это просто демонстрация варианта вывода вводимых значений.
Если нужно ограничивать длину то можно просто делать
Код
if (string_length(keyboard_string) > 100) {
     keyboard_string = string_copy(keyboard_string, 1, 100)
}
if (keyboard_check_pressed(vk_enter) && keyboard_string != "") {
     var ins = keyboard_string;
     // сделать что-то с введенной строкой (ins)
     keyboard_string = ""
}
И рисовать значение keyboard_string через draw_text.
Пример добавляет над этим надстройку для возможности копирования, вставки, и перемещения курсора по тексту (чего keyboard_string изначально не предусматривает).


YellowAfterlifeДата: Среда, 25 Марта 2015, 21:42 | Сообщение # 337 | Тема: Ввод текста в GMS
Сейчас нет на сайте
А в чем подвох и для каких платформ?
Если для ПК то я делал пример.
Если iOS/Android то покупайте какое-нибудь расширение для аппаратной клавиатуры.


YellowAfterlifeДата: Среда, 25 Марта 2015, 20:37 | Сообщение # 338 | Тема: Вопрос - Ответ (Game Maker)
Сейчас нет на сайте
Цитата Banan4ik ()
Бьюсь с этими таймлайнами, как сделать чтобы каждую секунду срабатывало событие. Я так понимаю, одна секунда - это 30 кадров (по стандарту).
Это делается через таймлайн, таймер или все проще?

Для такого используют alarm'ы. Timelines больше рассчитаны на серии событий, что происходят один раз. Можно, конечно, "зациклить" timeline кодом, но при одном действии это лишь лишние хлопоты.
Цитата

Information about object: obj_example

Create Event:
Код
alarm[0] = 30 // время до первого срабатывания


Alarm 0:
Код
// [выполнить действия]
alarm[0] = 30 // время до следующего срабатывания



YellowAfterlifeДата: Среда, 25 Марта 2015, 15:06 | Сообщение # 339 | Тема: Селектор карт. (Что-то не так).
Сейчас нет на сайте
Цитата valeranagato ()
room_goto=(room3)

А что тут делает "="? GameMaker: Studio такой бы код и скомпилировать не дал бы.
Можно перестроить как
Код
{
     with (info)  
     {  
         global.persona=1  
     }  
     with (info2) {
         if (global.roome=2) room_goto(room3)
         if (global.roome=1) room_goto(room1)
     }
}


YellowAfterlifeДата: Вторник, 24 Марта 2015, 03:07 | Сообщение # 340 | Тема: iGUI
Сейчас нет на сайте
CheckboxGroup.selectedIndex указывает на номер выбранного пункта (первый пункт имеет индекс 0, второй 1, и так далее); содержит -1 если ни один пункт не выбран.
Если включена возможность выбора нескольких элементов за раз, selectedIndexes (ниже на той же странице документации) содержит их список.


Поиск:

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