Как сделать стратегию

  Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
Game Maker Форум / Вопросы и Ответы (Для Опытных) / Как сделать стратегию

Страницы: 1 2 3 4 Next>> новая тема

Автор Сообщение

бывалый
Группа: Сообщество GM
Сообщений: 53
Добавлено: 26-01-2006 09:59
Hi! Увлекся GM и есть один вопрос: как сделать передвижение юнитов в стратегии. В частности мне надо, что-бы юнит мог передвигаться только в 8 направлениях(0,45,90,135,...) и обходил solid-преграды. Если не поняли то вспомните хотябы передвижение юнитов в Dune2000 или KKND. И помогите хоть частично с AI противника.Заранее Thank's.

маэстро
Группа: Сообщество 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 не нужно злоупотреблять,т.к. комп может стать дураком.
И нужно, чтобы некоторые действия зависели от действий юзра

маэстро
Группа: Администраторы
Сообщений: 666
Добавлено: 27-01-2006 20:40
Совет: проще будет сделать, чтобы объект двигался во всех направлениях, тогда в Step у Unit пишем
image_angle=direction

Это проще если он задумал вид сверху сделать,
правда в изометрии куда сложней, лучше такие стратегии делать
(видом сверху) проще будет...
Стратегия - дело долгое и сложное...
SerJ, если надо по кодам к стратегии конкретно,
то обращайся - готов помочь...

>PS<
Хотя сам стратегий никогда не видел.

На Game Maker или вообще???
Что для хорошего AI не нужно злоупотреблять,т.к. комп может стать дураком

Чё-то я эту фразу не понял...

мастер
Группа: Сообщество GM
Сообщений: 108
Добавлено: 28-01-2006 01:30
Про поиск пути смотри хелп ГМ (глава Motion planning)

AI делай через приоритет действий

Про изометрию: обрабытывай в нормальном 2д, просто при выводе проводи перерасчет координат отрисовки

бывалый
Группа: Сообщество GM
Сообщений: 53
Добавлено: 28-01-2006 11:01
Это конечно спасибо, но я как-раз и задумал изометрию намутить. Но в принципе, возможно, сделаю передвижение во всех направлениях. Кое сто уже набрасал, выглядит неплохо.
А вот можно создать объект с параметром? В частности у здания установлена точка сбора юнитов. Когда создается этот юнит ему присваиваются как цель координаты этой точки и он туда идет, а достигнув останавливается.
И можно ли из кода сделать команду, которая в редакторе графики называется 'Colorise Patrial'. Я видел только функцию 'Blend' но она не подходит, мне надо часть спрайта перекрашивать.

маэстро
Группа: Сообщество GM
Сообщений: 812
Добавлено: 28-01-2006 20:15
А вот можно создать объект с параметром? В частности у здания установлена точка сбора юнитов. Когда создается этот юнит ему присваиваются как цель координаты этой точки и он туда идет, а достигнув останавливается.

Легко...
Пусть у объекта здания есть некие две координаты xnew и ynew.
Тогда пишем
ii=instance_create(x,y,Unit)
ii.newx=xnew
ii.newy=ynew
А у Unit приписываем движение к этой точке.
Ксати если собираешся делать игру в изометрии, то не парься и лучше переходи к 3D

бывалый
Группа: Сообщество GM
Сообщений: 53
Добавлено: 28-01-2006 20:35
Спасибо, спасибо, спасибо. А вот насчет 3D, это ты загнул. Я и понятия не имею как там что-то сделать. Да и к тому-же сначала надо опыта набраться.

маэстро
Группа: Администраторы
Сообщений: 666
Добавлено: 28-01-2006 20:37
CRYSTALL m, сделать стратегию 3D на GM,
это ты загнул, излишне...

маэстро
Группа: Сообщество GM
Сообщений: 812
Добавлено: 28-01-2006 20:39
CRYSTALL m, сделать стратегию 3D на GM,
это ты загнул, излишне...

Ну,Ну.
Если не использовать сильно сложные спрайты и структуры, то можно сделать неплохую стратегию.

мастер
Группа: Сообщество GM
Сообщений: 108
Добавлено: 29-01-2006 01:22
И можно ли из кода сделать команду, которая в редакторе графики называется 'Colorise Patrial'. Я видел только функцию 'Blend' но она не подходит, мне надо часть спрайта перекрашивать

Я точно не помню, но воде можно было как то рисовать по маске

бывалый
Группа: Сообщество GM
Сообщений: 53
Добавлено: 29-01-2006 15:47
А!!! Вопрос. Я хотел использовать А*алгоритм поиска пути, но чего-то не работает. Что я неправильно сделал. Объект курсора создает сетку Global.Setka. Юнит при создании создает дорожку Put и если он куда либо идет, то он сначала ищет путь в сетке и добавляет его в дорожку а потом идет по ней. Так ли это делается и стоит использовать этот алгоритм. Если можно то выложите ссылку с примером...

маэстро
Группа: Сообщество GM
Сообщений: 812
Добавлено: 29-01-2006 19:25
Есть идея как сделать colorise partial.
Создай скрипт в котором проверяй пикселы спрайта, а потом изменяй их цвет, вроде есть какая-то функция...

бывалый
Группа: Сообщество GM
Сообщений: 53
Добавлено: 29-01-2006 20:06
Есть идея как сделать colorise partial.

Собственно и у меня такая идея была, хэлп к GM просмотрел, функций подходящих не нашел.

бывалый
Группа: Сообщество GM
Сообщений: 53
Добавлено: 30-01-2006 16:42
Кхэ!... Я тут собственно тестовую версии намастрячил. Кому интересно, смотритетут
Не знаю, если работает то хорошо, если нет то вручную откройте www.SelSerJ.narod.ru
Жду пожеланий, предложений... ну и критику тоже.
P.S. Токо сино не ругайте, ето мой первый серьезный проект на GM.

мастер
Группа: Сообщество GM
Сообщений: 108
Добавлено: 31-01-2006 01:30
Поиск пути есть в ГМ

бывалый
Группа: Сообщество GM
Сообщений: 53
Добавлено: 31-01-2006 17:58
Поиск пути есть в ГМ


Не понял тебя. Если ты про функции и хэлп, то я и говорю, что хочу использовать А* алгоритм(он в хэлпе описан), но при нем движения у юнитов, как бы по мягче безобразное, его постоянно трясет, причем сильно. А если про эксампл, то у меня такого нет.
Ну, пока неважно, щаз врага делаю и опять таки проблема. Не могу придумать, как выбрать один образец на определенном расстоянии и озадачить его или поставить на него цель? К примеру выбрать любого раба и заставить его строить здание.

маэстро
Группа: Сообщество GM
Сообщений: 812
Добавлено: 31-01-2006 20:02

...На Game Maker или вообще???...
...Чё-то я эту фразу не понял...

Стратегии я на 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>)
А потом сохраняй его как новый спрайт и возвращай его индекс,т.е сдвиг цвета желательно производить до начала игры.

бывалый
Группа: Сообщество GM
Сообщений: 53
Добавлено: 31-01-2006 20:22
Схема слухай!!! Ща буду пробовать. Насчет Ai и его random: мне для того и надо, чтоб он озадачил какого-нибудь юнита, но не обязательно самого близкого. И еще было бы неплохо, чтоб юнит нападал на врага у которого какой-то параметр наименьший, из тех юнитов, которые в дальности обзора. Типа у юнита есть 'type' и другой юнит проверяет ближайшие объекты и атакует того, у которого 'type' наименьший. Этакий приоритет процессов.

бывалый
Группа: Сообщество 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=/*функция сохранения в файл*/}

маэстро
Группа: Сообщество 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 Форум / Вопросы и Ответы (Для Опытных) / Как сделать стратегию

Отвечать на темы в данном разделе могут только зарегистрированные пользователи

Отвечать на темы могут только зарегистрированные пользователи

KXK.RU