|
[ На главную ] -- [ Список участников ] -- [ Правила форума ] -- [ Зарегистрироваться ] |
On-line: |
Game Maker Форум / Вопросы и Ответы (Для Опытных) / Как сделать стратегию |
Страницы: 1 2 3 4 Next>> |
Автор | Сообщение | ||
SerJ бывалый Группа: Сообщество GM Сообщений: 53 |
Добавлено: 26-01-2006 09:59 | ||
Hi! Увлекся GM и есть один вопрос: как сделать передвижение юнитов в стратегии. В частности мне надо, что-бы юнит мог передвигаться только в 8 направлениях(0,45,90,135,...) и обходил solid-преграды. Если не поняли то вспомните хотябы передвижение юнитов в Dune2000 или KKND. И помогите хоть частично с AI противника.Заранее Thank's. | |||
CRYSTALL m маэстро Группа: Сообщество GM Сообщений: 812 |
Добавлено: 27-01-2006 20:25 | ||
По простому это делается так: Делаем объект MouseFollow в Step пишем x=mouse_x y=mouse_y и в комнате устанавливаем, чтобы вид следовал за MouseFollow Потом делаем объект Unit в Create ставим choose=0 Совет: проще будет сделать, чтобы объект двигался во всех направлениях, тогда в Step у Unit пишем image_angle=direction и нужно создать спрайт с одним поворотом - вправо. Для выбора юнита делаем так: в событии нажатия кнопки мыши(для MouseFollow) пишем ui=collison_point(mouse_x,mouse_y,Unit,0,0) if ui>0 then { ui.choose=1; } else { with Unit { if choose=1 then choose=0; } } А для другой кнопки так: with Unit { global.mx=mouse_x global.my=mouse_y if choose=1 then move=1; } В Step у Unit добавляем: if move=1 then { mp_potential_step(gobal.mx,global.my,<speed>,0) } if x=global.mx and y=global.my then { move=0; } Что-то вроде того... Хотя сам стратегий никогда не видел. А с AI пока ничем помочь не могу, сам буду разбираться на днях, могу сказать только то, что для хорошего AI не нужно злоупотреблять,т.к. комп может стать дураком. И нужно, чтобы некоторые действия зависели от действий юзра |
|||
Drake маэстро Группа: Администраторы Сообщений: 666 |
Добавлено: 27-01-2006 20:40 | ||
Это проще если он задумал вид сверху сделать, правда в изометрии куда сложней, лучше такие стратегии делать (видом сверху) проще будет... Стратегия - дело долгое и сложное... SerJ, если надо по кодам к стратегии конкретно, то обращайся - готов помочь... >PS<
На Game Maker или вообще???
Чё-то я эту фразу не понял... |
|||
PaVeLius мастер Группа: Сообщество GM Сообщений: 108 |
Добавлено: 28-01-2006 01:30 | ||
Про поиск пути смотри хелп ГМ (глава Motion planning) AI делай через приоритет действий Про изометрию: обрабытывай в нормальном 2д, просто при выводе проводи перерасчет координат отрисовки |
|||
SerJ бывалый Группа: Сообщество GM Сообщений: 53 |
Добавлено: 28-01-2006 11:01 | ||
Это конечно спасибо, но я как-раз и задумал изометрию намутить. Но в принципе, возможно, сделаю передвижение во всех направлениях. Кое сто уже набрасал, выглядит неплохо. А вот можно создать объект с параметром? В частности у здания установлена точка сбора юнитов. Когда создается этот юнит ему присваиваются как цель координаты этой точки и он туда идет, а достигнув останавливается. И можно ли из кода сделать команду, которая в редакторе графики называется 'Colorise Patrial'. Я видел только функцию 'Blend' но она не подходит, мне надо часть спрайта перекрашивать. |
|||
CRYSTALL m маэстро Группа: Сообщество GM Сообщений: 812 |
Добавлено: 28-01-2006 20:15 | ||
Легко... Пусть у объекта здания есть некие две координаты xnew и ynew. Тогда пишем ii=instance_create(x,y,Unit) ii.newx=xnew ii.newy=ynew А у Unit приписываем движение к этой точке. Ксати если собираешся делать игру в изометрии, то не парься и лучше переходи к 3D |
|||
SerJ бывалый Группа: Сообщество GM Сообщений: 53 |
Добавлено: 28-01-2006 20:35 | ||
Спасибо, спасибо, спасибо. А вот насчет 3D, это ты загнул. Я и понятия не имею как там что-то сделать. Да и к тому-же сначала надо опыта набраться. | |||
Drake маэстро Группа: Администраторы Сообщений: 666 |
Добавлено: 28-01-2006 20:37 | ||
CRYSTALL m, сделать стратегию 3D на GM, это ты загнул, излишне... |
|||
CRYSTALL m маэстро Группа: Сообщество GM Сообщений: 812 |
Добавлено: 28-01-2006 20:39 | ||
Ну,Ну. Если не использовать сильно сложные спрайты и структуры, то можно сделать неплохую стратегию. |
|||
PaVeLius мастер Группа: Сообщество GM Сообщений: 108 |
Добавлено: 29-01-2006 01:22 | ||
Я точно не помню, но воде можно было как то рисовать по маске |
|||
SerJ бывалый Группа: Сообщество GM Сообщений: 53 |
Добавлено: 29-01-2006 15:47 | ||
А!!! Вопрос. Я хотел использовать А*алгоритм поиска пути, но чего-то не работает. Что я неправильно сделал. Объект курсора создает сетку Global.Setka. Юнит при создании создает дорожку Put и если он куда либо идет, то он сначала ищет путь в сетке и добавляет его в дорожку а потом идет по ней. Так ли это делается и стоит использовать этот алгоритм. Если можно то выложите ссылку с примером... | |||
CRYSTALL m маэстро Группа: Сообщество GM Сообщений: 812 |
Добавлено: 29-01-2006 19:25 | ||
Есть идея как сделать colorise partial. Создай скрипт в котором проверяй пикселы спрайта, а потом изменяй их цвет, вроде есть какая-то функция... |
|||
SerJ бывалый Группа: Сообщество GM Сообщений: 53 |
Добавлено: 29-01-2006 20:06 | ||
Собственно и у меня такая идея была, хэлп к GM просмотрел, функций подходящих не нашел. |
|||
SerJ бывалый Группа: Сообщество GM Сообщений: 53 |
Добавлено: 30-01-2006 16:42 | ||
Кхэ!... Я тут собственно тестовую версии намастрячил. Кому интересно, смотритетут Не знаю, если работает то хорошо, если нет то вручную откройте www.SelSerJ.narod.ru Жду пожеланий, предложений... ну и критику тоже. P.S. Токо сино не ругайте, ето мой первый серьезный проект на GM. |
|||
PaVeLius мастер Группа: Сообщество GM Сообщений: 108 |
Добавлено: 31-01-2006 01:30 | ||
Поиск пути есть в ГМ | |||
SerJ бывалый Группа: Сообщество GM Сообщений: 53 |
Добавлено: 31-01-2006 17:58 | ||
Не понял тебя. Если ты про функции и хэлп, то я и говорю, что хочу использовать А* алгоритм(он в хэлпе описан), но при нем движения у юнитов, как бы по мягче безобразное, его постоянно трясет, причем сильно. А если про эксампл, то у меня такого нет. Ну, пока неважно, щаз врага делаю и опять таки проблема. Не могу придумать, как выбрать один образец на определенном расстоянии и озадачить его или поставить на него цель? К примеру выбрать любого раба и заставить его строить здание. |
|||
CRYSTALL m маэстро Группа: Сообщество GM Сообщений: 812 |
Добавлено: 31-01-2006 20:02 | ||
Стратегии я на GM невидел, в смысле хорошей. А насчёт AI если слишком много употреблять random, то у компа начинается такой хаос.... А тебе, SerJ, по поводу Colorize Partial скажу, что придумал как это можно реализовать в GM. Сделай скрипт, который попиксельно берёт цвет. В цикле пиши: color=draw_getpixel(x,y) bcol=color_get_blue(color) rcol=color_get_red_(color) gcol=color_get_green(color) Потом проверка диапазона, типа: if rcol>argument0 and rcol<argument1 и т.д. И в конце вот так: make_color_rgb(argument<n>,argument<n+1>,argument<n+2>) А потом сохраняй его как новый спрайт и возвращай его индекс,т.е сдвиг цвета желательно производить до начала игры. |
|||
SerJ бывалый Группа: Сообщество GM Сообщений: 53 |
Добавлено: 31-01-2006 20:22 | ||
Схема слухай!!! Ща буду пробовать. Насчет Ai и его random: мне для того и надо, чтоб он озадачил какого-нибудь юнита, но не обязательно самого близкого. И еще было бы неплохо, чтоб юнит нападал на врага у которого какой-то параметр наименьший, из тех юнитов, которые в дальности обзора. Типа у юнита есть 'type' и другой юнит проверяет ближайшие объекты и атакует того, у которого 'type' наименьший. Этакий приоритет процессов. | |||
SerJ бывалый Группа: Сообщество GM Сообщений: 53 |
Добавлено: 31-01-2006 21:36 | ||
CRYSTALL m , я не совсем тебя понял, какой функцией сохранить в новый спрайт? И так ли должен выглядить цикл ( на примере перегона красного цвета в синий) { bcol=0; for(yy=0;yy<sprite_height;yy+=1){ for(xx=0;xx<sprite_width;xx+=1){ color=draw_getpixel(xx,yy); rcol=color_get_red(color); if rcol=255 then {rcol=0 ; bcol=255} else bcol=0; make_color_rgb(rcol,0,bcol); }} sprite_index=/*функция сохранения в файл*/} |
|||
CRYSTALL m маэстро Группа: Сообщество GM Сообщений: 812 |
Добавлено: 01-02-2006 13:54 | ||
Всё правильно, только если спрайт находится в верхнем правом углу. И желательно писать вместо if rcol=255 then{...} а так if rcol>... and rcol<... then {...} и вроде есть такая функция sprite_create_from_screen подробнее смотри в хэлпе. |
Страницы: 1 2 3 4 Next>> |
Game Maker Форум / Вопросы и Ответы (Для Опытных) / Как сделать стратегию |