Главная | Форум | Мой профиль | Выход | RSS
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: SHARKING, Фил  
Форум » Вопросы по GM » Общие вопросы » Генерация карты
Генерация карты
maximus1986Дата: Четверг, 06.05.2010, 14:59 | Сообщение # 1
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
Здравствуйте. Подскажите плиз, как можно сделать так, чтобы при каждой загрузке игры создавались каждый раз разные комнаты (случайным образом)? Это надо со скриптами работать?
URGIДата: Четверг, 06.05.2010, 16:04 | Сообщение # 2
null
Ведущии СевКав ТВ.
Группа: Модераторы
Сообщений: 500
Репутация: 28
Статус: Offline
попробуй воспользоваться командой choose(room1,room2,room3) итд

Если мутишь, мути тихо.
maximus1986Дата: Четверг, 06.05.2010, 16:38 | Сообщение # 3
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
Это ведь выбор среди уже готовых комнат?

Наверно я немного не так выразился. У меня есть определенный алгоритм для создания комнаты (случайным образом). Меня вот интересует, есть ли функции, рисующие стены, например? Т.е. чтобы не я сам перетаскивал эти блоки в комнату еще при создании игры, а чтобы согласно тому алгоритму эти стены рисовались сами собой при запуске игры:)

URGIДата: Четверг, 06.05.2010, 17:56 | Сообщение # 4
null
Ведущии СевКав ТВ.
Группа: Модераторы
Сообщений: 500
Репутация: 28
Статус: Offline
Можно сделать, но они будут рисоваться полностью рандомно.

Если мутишь, мути тихо.
maximus1986Дата: Четверг, 06.05.2010, 19:21 | Сообщение # 5
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
draw_sprite(sprite,subimg,x,y) - эта функция подойдет?
И еще вопрос, GM видимо работает только с 1- и 2-мерными массивами. Есть ли какие-нибудь дополнения, которые позволяют работать с массивами бОльших размерностей?
ФилДата: Четверг, 06.05.2010, 21:48 | Сообщение # 6
null
Группа: Модераторы
Сообщений: 55
Репутация: 4
Статус: Offline
Quote (maximus1986)
Есть ли какие-нибудь дополнения, которые позволяют работать с массивами бОльших размерностей?

зачем дополнения? ручками все, ручками)

Quote (maximus1986)
draw_sprite(sprite,subimg,x,y)

это ты просто нарисуешь картинки стен и все. Нужно либо через массив либо через объекты.

Quote (URGI)
Можно сделать, но они будут рисоваться полностью рандомно.

не факт. Можно написать алгоритм который генерит хорошие лабиринты.


URGIДата: Четверг, 06.05.2010, 23:50 | Сообщение # 7
null
Ведущии СевКав ТВ.
Группа: Модераторы
Сообщений: 500
Репутация: 28
Статус: Offline
Полностью рандомно нужно писать так draw_sprite(sprite,subimg,random,random) -что-то вроде этого, я просто в 2d не силен.

Если мутишь, мути тихо.
fedenkovadikДата: Пятница, 07.05.2010, 00:36 | Сообщение # 8
Группа: Друзья
Сообщений: 236
Репутация: 22
Статус: Offline
Ну раз на то пошло, то писать надо
draw_sprite(sprite,subimg,random(room_width),random(room_height)) но или как то так ...
maximus1986Дата: Пятница, 07.05.2010, 01:12 | Сообщение # 9
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
Quote (Фил)
не факт. Можно написать алгоритм который генерит хорошие лабиринты.

Вот-вот. Я когда-то на Бэйсике написал прогу, которая генерит лабиринты. Хочу теперь этот алгоритм переделать на GM. Только там используются как раз 3- и 4- размерные матрицы. Как их можно реализовать в GM? Или чем их заменить?

Добавлено (07.05.2010, 01:12)
---------------------------------------------
PS: как тут правильно цитаты вставлять?:)

fedenkovadikДата: Пятница, 07.05.2010, 09:11 | Сообщение # 10
Группа: Друзья
Сообщений: 236
Репутация: 22
Статус: Offline
жми на кнопчку, "цитата"
maximus1986Дата: Пятница, 07.05.2010, 12:58 | Сообщение # 11
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
Quote (fedenkovadik)
жми на кнопчку, "цитата"

Я вроде так и делаю: выделяю текст, нажимаю "цитата", оно всё вставляется между quote, но вот результат. С браузером что ли проблемы?

Добавлено (07.05.2010, 12:58)
---------------------------------------------
Да, и еще. Вот, например, в Visual Basic можно было одну функцию вызывать из другой по имени. Можно ли что-нибудь подобное сделать в GM?

Незнаю у меня всё норм ) цитаты исправил...

fedenkovadikДата: Пятница, 07.05.2010, 15:09 | Сообщение # 12
Группа: Друзья
Сообщений: 236
Репутация: 22
Статус: Offline
Quote (maximus1986)
жми на кнопчку, "цитата"

Ну и что трудного?? Это наверное у тебя что то, ты на опере, попробуй через мазилу зайти
maximus1986Дата: Пятница, 07.05.2010, 15:51 | Сообщение # 13
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
Quote (fedenkovadik)
Ну и что трудного?? Это наверное у тебя что то, ты на опере, попробуй через мазилу зайти

Добавлено (07.05.2010, 15:51)
---------------------------------------------
Ну вот опять. Это уже через мозилу. Но ладно. Хрен с ними с цитатами. У меня еще вопрос до кучи:) Есть где-то пример игры на GM, где реализован 3D шутер от первого лица. Но там поворот камеры осуществляется с помощью стрелок. А можно ли поворот камеры осуществить мышью?

fedenkovadikДата: Суббота, 08.05.2010, 00:28 | Сообщение # 14
Группа: Друзья
Сообщений: 236
Репутация: 22
Статус: Offline
конечно.
http://www.box.net/shared/gdnu1qy6o8 вот хороший шутер! Исходник, на нем научился делать 3Д игры ...

или вот тоже крутой пример

скачать
http://www.yoyogames.com/games/show/42763#
или
http://host-a.net/Jesper/Final_Editable.zip

maximus1986Дата: Суббота, 08.05.2010, 12:00 | Сообщение # 15
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
О, спасибо большое за ссылки :) Только вот по первой ссылке игра из GM на запускается, вот что пишет:

COMPILATION ERROR in Script: load_resources
Error in code at line 12:
ds_list_add(global.bac,background_add("Backgrounds/"+cfile,true,false,true));
^
at position 79: Wrong number of arguments to function or script.

Подскажите плиз, как исправить. У меня GM8.
PS: да и спасибо, что цитаты подправили. Я уж боюсь их вставлять:)

fedenkovadikДата: Суббота, 08.05.2010, 15:05 | Сообщение # 16
Группа: Друзья
Сообщений: 236
Репутация: 22
Статус: Offline
не, нужен ГМ7 .. но ща, может чото исправлю ...

Добавлено (08.05.2010, 15:05)
---------------------------------------------
исправил,
открой скрипты
папка misc
октрой load_resources
удали оттуда весь текст, и впиши

Code
{
  var cfile,i,model_var;
  loaded = false;  // wether the external files are loaded
  screen_redraw();  // redraws the screen so it says loading
  global.bac = ds_list_create();  // ds_list for loaded backgrounds
  global.bac_name = ds_list_create();  // ds_list for names of loaded backgrounds
  cfile = file_find_first("Backgrounds/*.*",0);
  while (cfile != "")
  {
   if (string_count("transp",cfile))
   {
    ds_list_add(global.bac,background_add("Backgrounds/"+cfile,true,0));
   }
   else
   {
    ds_list_add(global.bac,background_add("Backgrounds/"+cfile,false,0));
   }
   ds_list_add(global.bac_name,cfile);
   cfile = file_find_next();
  }
  file_find_close();
  global.snd = ds_list_create();  // ds_list for loaded sounds
  global.snd_name = ds_list_create();  // ds_list for names of loaded sounds
  cfile = file_find_first("Sounds/*.*",0);
  while (cfile != "")
  {
   ds_list_add(global.snd,sound_add("Sounds/"+cfile,0,true));
   ds_list_add(global.snd_name,cfile);
   cfile = file_find_next();
  }
  file_find_close();
  global.model_name = ds_list_create();
  cfile = file_find_first("Models/*.d3d*",0);
  while (cfile != "")
  {
   model_var = string_replace(cfile,".d3d","");
   variable_global_set(model_var,d3d_model_create());  // creates model named same as file
   ds_list_add(global.model_name,model_var);
   d3d_model_load(variable_global_get(model_var),"Models/"+cfile);  // loads model file to previously created model
   cfile = file_find_next();
  }
  file_close();
  loaded = true;
}
maximus1986Дата: Суббота, 08.05.2010, 18:16 | Сообщение # 17
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
Спасибо:) Все работает. Буду теперь разбираться что к чему)
ФилДата: Воскресенье, 09.05.2010, 19:53 | Сообщение # 18
null
Группа: Модераторы
Сообщений: 55
Репутация: 4
Статус: Offline
про генерацию карты:
вот мой пример генерирования карты (все генерится от балды, никакого алгоритма.)


maximus1986Дата: Воскресенье, 09.05.2010, 22:00 | Сообщение # 19
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
Спасибо. Код с коментами даже:)
И все-таки, как быть с 3- и более размерными матрицами? Если изгаляться над 1- и 2-мерными, то это слишком большой код получается:(
ФилДата: Понедельник, 10.05.2010, 12:11 | Сообщение # 20
null
Группа: Модераторы
Сообщений: 55
Репутация: 4
Статус: Offline
maximus1986, надо найти в интернете алгоритм создания этих массивов, и попробовать перенести на гм smile

Добавлено (10.05.2010, 12:11)
---------------------------------------------
maximus1986, сейчас попробовал 3х мерный массив замутить)

Code
Error in code at line 7:
                mass[_x,_y,_z]=0;
                    ^
at position 28: Only 1- and 2-dimensional arrays are supported.

мол, поддерживаются только одномерные и двух мерные массивы) можно конечно сделать два двухмерных массива и объединить их в трехмерный, но это извращение)


maximus1986Дата: Понедельник, 10.05.2010, 22:27 | Сообщение # 21
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
Плохо( Скажите плиз, а индексы в массивах изменять можно? Например, массив q[]={2,4,12,6}, т.е. q[0]=2, q[1]=4, q[2]=12, q[3]=6. А можно сделать, например, так: q[3]=2, q[5]=4, q[8]=12, q[13]=6 ?
FIXMAXДата: Понедельник, 10.05.2010, 23:44 | Сообщение # 22
null
Группа: Проверенные
Сообщений: 45
Репутация: 0
Статус: Offline
maximus1986, можешь попробовать записать массив 2*2*3 так:
1-2
3-4
---//условный разделитель
5-6
7-8
---//условный разделитель
9-10
11-12
Можно написать функцию перевода из 2-х мерного массива в данные псевдо 3-х мерного.
Из написанного выше, массив m[1,1,2]=m[1,3]=5
m[2,1,3]=m[2,5]=10

Надеюсь смысл понятен.

ПС. Это один из вариантов, на самом деле все массивы одномерны (написаны в одну строку)

maximus1986Дата: Вторник, 11.05.2010, 09:26 | Сообщение # 23
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
FIXMAX, хорошая идея) А в условном разделителе можно, например, в качестве первого элемента ставить номер блока, чтоб удобней работать с массивом было) Спасибо, попробую так.
FIXMAXДата: Вторник, 11.05.2010, 12:52 | Сообщение # 24
null
Группа: Проверенные
Сообщений: 45
Репутация: 0
Статус: Offline
maximus1986, я же написал что это один из вариантов. Можно было бы использовать и одномерные массивы, но ограничение в 32000 как-то не очень воодушевляет. Когда то создавал мобов на карте, и заносил их в массив, и нащелся один игрок, который убил их 32000 и вылетела ошибка=) так что тут нужно аккуратно.
maximus1986Дата: Суббота, 15.05.2010, 16:17 | Сообщение # 25
Группа: Проверенные
Сообщений: 35
Репутация: 0
Статус: Offline
У меня еще вопрос возник: как сделать так, чтобы объекты комнаты рисовались программно? Про draw_sprite(sprite,subimg,x,y) писалось выше:
Quote (Фил)
это ты просто нарисуешь картинки стен и все. Нужно либо через массив либо через объекты.

Но как это сделать через массив (или через объекты)?
Форум » Вопросы по GM » Общие вопросы » Генерация карты
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:


Школа Ultimate3D 2009-2010 год