Вход

Просмотр полной версии : теория ИИ для 2д игры.



ALKO
01.04.2012, 20:05
Создаю игру AGGRESSOR http://cs10320.userapi.com/u53856147/98301119/y_cb67e0c8.jpg на движке ALKO-ENGINE.
При создании игровой логики всё было нормально, пока не напоролся на проблему создания ИИ.

Пока-что зачатки ИИ
можете узреть в данной версии.
(управление стрелки <v>)
телепортироваться - "стрелка вниз".
Выбор фильтра клавиши 1-5.

ALKO
01.04.2012, 20:07
мин. системные требования - ОЗУ 4 метра, процессор x86 совместимый, hdd жлательно не менее метра, GPU - не нужен. Ось -Linux, Windows любые версии.

goodboy
01.04.2012, 20:09
мин. системные требования - ОЗУ 4 метра, процессор x86 совместимый, hdd жлательно не менее метра, GPU - не нужен. Ось -Linux, Windows любые версии. а что эта тема делает в ZX Spectrum Software ???????????????

ALKO
01.04.2012, 20:09
Вобщем, нужен совет , как описать ИИ для данного вида платформера.

moroz1999
01.04.2012, 22:14
Эту бы графику - да на спектрум.

ALKO
01.04.2012, 22:19
Эту бы графику - да на спектрум.
так дерзайте, тайлы я залил.

goodboy
01.04.2012, 22:21
так спрайты или тайлы ?

ALKO
01.04.2012, 22:23
правда я их рисую в процессе создания игры. Ещё добавлю дополнительные тайлы монстров и двери, блокирующие проход, для их открытия нужно будет собирать ключи и открывать через терминалы....Но это потом, сейчас надо расхлебаться с ИИ.

---------- Post added at 21:23 ---------- Previous post was at 21:21 ----------


так спрайты или тайлы ?
Как бы странно это не звучало, но это тайлы без альфы.
А мой движок просто проходит последовательно по точкам, и если точка на bmp равна R00 G00 B00 , то он вырисовывает пиксел.

jerri
01.04.2012, 22:26
ALKO, сделай чтобы в окне работало - глаза ломает

ALKO
01.04.2012, 22:33
Windowed версия (чуть тормознее):

ALKO
01.04.2012, 22:46
Тормознутость происходит из-за того, что рисует CPU, а не GPU.
А так же из-за масштабирования.
Причём движок масштабирует не весь экран (как изначально я планировал, но потом чё-то намудрил с виртуальными экранами и передумал), а отдельные тайлы.

---------- Post added at 21:46 ---------- Previous post was at 21:37 ----------

Так вот....сейчас важен AI.
пока-что функция выглядит так:

void ai(char e){
if(flag==false){
int enx=karta.x;
flag=true;}
if(enx<penis.x){mirror=false;}
if(enx>penis.x){mirror=true;}
if(enx<penis.x-144){enx+=3;}
if(enx>penis.x+300){enx-=3;}
zoom(e,enx,144*2);
mirror=false;
}

переменная e - это номер тайла противника
karta.x - начальная координата противника (задаётся на матрице уровня)
penis.x - координата игрока.
zoom() процедура прорисовки отмасштабированного тайла

jerri
02.04.2012, 09:42
а что именно ты хочешь от ИИ?

ALKO
02.04.2012, 14:06
ну в первую очередь размножить (сделать массив хотя б на 3-х противников)
Так как в данный момент не более одного противника на весь экран.
(это кстати ещё один минус движка - не более одной стены на экран и не более одного телепорта)

jerri
02.04.2012, 14:24
как-то маловато 1 стена и 1 телепорт
а что мешает добавить еще элементов?

ALKO
02.04.2012, 15:03
а что мешает добавить еще элементов?
мой слабый мозг...:v2_dizzy_messed:

---------- Post added at 14:00 ---------- Previous post was at 13:57 ----------

цикл проходит по матрице карты, и если он находит стену - устанавливает значение переменной по соответствующей координате.
Дело в том , что переменная одна..........постойте-ка, можно через массив таких переменных сделать!!!
Гениально!!!

---------- Post added at 14:01 ---------- Previous post was at 14:00 ----------

но это дополнительно нужно будет ставить циклы между операторами условий.

---------- Post added at 14:03 ---------- Previous post was at 14:01 ----------

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

jerri
02.04.2012, 15:13
ALKO, я не знаю как сделано у тебя
но посмотри как сделано например у испанцев в их играх
ftp://ftp.worldofspectrum.org/pub/sinclair/games-extras/MaritriniFreelanceMonsterSlayer_SourceCode.zip

ALKO
03.04.2012, 23:53
как вам такой вариант ИИ ?

ALKO
03.04.2012, 23:55
Space - выбор\стрельба (чисто символическая стрельба)

jerri
04.04.2012, 00:22
опять не в окне :)
жесть конечно :)

ALKO
04.04.2012, 00:27
ну графон квадратами то приятнее (ИМХО)
И стиль я затачивал под zx и разрешение пикселей под zx.(посмотрите на титулку 256*192)

NovaStorm
04.04.2012, 15:39
жесть конечно :)
А мне нравится =Р

ALKO, герою по сравнению с монстрами явно не хватает idle анимации, хоть ещё кадр-другой.

ALKO
04.04.2012, 17:27
ALKO, герою по сравнению с монстрами явно не хватает idle анимации, хоть ещё кадр-другой.
Ну у героя 3 кадра, у монстров 2.
Да и изначально я вообще планировал создать игру для 48кб спектрума, и поэтому так мало тайлов нарисовал.

---------- Post added at 16:27 ---------- Previous post was at 16:08 ----------

щас ломаю бошку, как прикрутить чиптюн.
Конечно есть вариант использовать движок BASS для запуска MOD файлов.
Но тут нужно ещё музыку наваять в стиле EBM, в MIDI очень геморно добиться годного звучания.

NovaStorm
05.04.2012, 08:04
Ну у героя 3 кадра, у монстров 2.
Да и изначально я вообще планировал создать игру для 48кб спектрума, и поэтому так мало тайлов нарисовал.

Я к тому, что в состоянии "покоя" монстров колбасит, а ГГ недвижим аки статический БГ.
Даже на 48к машине можно наверное рассчитывать килов на 30 графики. А если извращаться, то (тк экран не скроллится, а отрисовывается сразу) можно хранить тайлы бека сжатыми, и распаковывать только при выводе.

ALKO
05.04.2012, 17:52
Я к тому, что в состоянии "покоя" монстров колбасит, а ГГ недвижим аки статический БГ.
Ок....учту.


Даже на 48к машине можно наверное рассчитывать килов на 30 графики. А если извращаться, то (тк экран не скроллится, а отрисовывается сразу) можно хранить тайлы бека сжатыми, и распаковывать только при выводе.
Это да, не спорю....Но для меня всё это осуществить на горбатом очень сложно.

---------- Post added at 16:52 ---------- Previous post was at 16:44 ----------

И ещё....На счёт статического бэкграунда...На самом деле он динамично обновляется.
Так что,если малёхо поднатужиться, то можно абсолютно любой элемент бэкграунда анимировать.

ALKO
05.04.2012, 23:37
Оцените idle-animation
+ доделал менюшку

ALKO
05.04.2012, 23:42
PS. желающих(кроме меня) реализовать эту игру на спектруме не появилось?

NovaStorm
06.04.2012, 08:58
>Оцените idle-animation
Ну, даже с одним дополнительным кадром стало лучше. Можно попробовать пушку в лапах наклонно нарисовать, а при беге пару кадров эту пушку из стороны в сторону качать, а при стрельбе чтоб как сейчас горизонтально держал.
Кадры бега наверное помедленнее сменять надо.
>желающих(кроме меня)
Желания-то вагон, а вот реально потянуть - хз. Да и пока не совсем ясно, какой игра должна быть в финале. По текущему её виду, я бы предположил, что стоит развивать как эдакую metroidvani'ю, что-то близкое к Blackthorne. Потому что шутер в таком близком масштабе врядли будет играбелен(враги шмаляют ОЯЕ!, и это выглядит как дОлжно). Но для такой игры нужно будет реально много анимации.
Ну и очень важный момент, 48/128 и наличие/отсутствие скроллинга.
Про скролл в такой игре(по 4px) я и сам задумываюсь в последнее время, но на 48м это для меня пока недостижимо.

ALKO
06.04.2012, 16:17
Скроллинг не нужен
Если бы я его хотел впендюрить в игру , то впендюрил бы сразу.
Хотелось бы под 48 кб.
На создание игры вдохновился Obliterator'ом....Но в нём мне не нравится управление, дизайн ГГ и выстрелы.
Что же понравилось, так это дизайн монстров.
Опишу момент с выстрелами :
когда AI с крупными габаритами, он постепенно приближается к игроку и урон от его шмаляний больше (аля дробовик).
ежели AI мелкий и шустрый - он должен держаться на расстоянии и урон от его выстрелов больший именно с дальней дистанции (по принципу снайперской винтовки)

---------- Post added at 15:17 ---------- Previous post was at 15:13 ----------

ещё один вид монстров добавлю, которые не будут пулять , а просто атаковать, как к примеру Alien'ы

NovaStorm
06.04.2012, 16:47
Поглядел геймлей Облитератора на Амиге. По-моему, это эталонный случай хреновой попытки скрестить синематик платформер с шутером. Игра ТОРМОЗИТ, она вялая, с долгими анимациями(в том числе попаданий по гг и его падений), как и положено синематик платформеру, но при этом вполне может вылезти пара пушек с потолка и устроить картинку чуть-ли не из буллет-хелл шмапа! Мне вот очень понравилось решение этой проблемы Близзардами в Блэкторне - просто сделали уклонение.
Масштабирование урона от расстояния - имхо лишнее. Да и если такая тварь подползёт поближе логичнее выглядело бы, если б она хватала гг и хавала его =)
Без скроллинга надо как-то решать вопрос стрельбы за экран и беганье монстров между экранами.
>ещё один вид монстров
Пушки из пола/потолка надо - это ж классика.
PS:Я не одобряю, но тебе может и забавно будет...
http://www.charliesgames.com/wordpress/?page_id=18

ALKO
06.04.2012, 17:02
МЕГАДРАЙВ!!!
Тоже хочу нечто бодобное сделать на opengl.(сайд скроллинг шутер) только без фалусов.

PS.что мне не нравится в играх с закосом под ретроконсоли - при вращении вращаются и пиксели (квадраты)

NovaStorm
06.04.2012, 17:13
>при вращении вращаются и пиксели
Угу, жутко бесит... =Е
Ещё раздражают отсутствие клэшинга и палитры от балды.
http://www.ufunk.net/en/univers-geek/gif-animees-3d-spinning-8-bit-sprites/

NovaStorm
08.04.2012, 10:30
Можно попробовать пушку в лапах наклонно нарисовать, а при беге пару кадров эту пушку из стороны в сторону качать

Вот так
http://www.avatarist.com/avatars/Games/Sprites/Bill-from-Contra.gif
Жаль такие сиськи на спеке не нарисуешь =(
http://www.grasskiller.ru/fotos/folders/158/Lucia_Run_by_Kuritarou.gif
Надо бы ГГ наверное ноги отрезать и анимировать отдельно.
Сейчас заметил, ты не оставляешь по краям спрайтов по пикселю на маску, это может сильно аукнуться в дальнейшем. Я, скорее, сторонник "рамки" вокруг персонажей.
Offtop:

http://www.youtube.com/watch?feature=player_embedded&v=UCmMebE0pIg
http://www.youtube.com/watch?src_vid=UCmMebE0pIg&annotation_id=annotation_722522&feature=iv&v=7omF6b576bA
http://www.youtube.com/watch?v=R4tJnjkVSnM&feature=plcp&context=C4109dadVDvjVQa1PpcFNcg2cHmJBfMNlGwFvr0X34 IDiGsbTk5ng%3D
И другие ништяки от leehardcastle =)

moroz1999
08.04.2012, 16:00
Готового движка, чтобы воплотить задумку на 48к, наверное, нет. А вот готовый движок под ZX Evolution есть, может его попробовать? Всяко увеличит шансы на то, что хоть что-нибудь получится.

ALKO
08.04.2012, 17:04
Жаль такие сиськи на спеке не нарисуешь =(
Сиське - да зачётные.
Но вот пропорции ног - не очень.

Сейчас заметил, ты не оставляешь по краям спрайтов по пикселю на маску, это может сильно аукнуться в дальнейшем. Я, скорее, сторонник "рамки" вокруг персонажей.
над маской работаю.

---------- Post added at 15:59 ---------- Previous post was at 15:58 ----------

только нужно знать какие биты отвечают за красный цвет (решил его использовать в качестве маски)
Сюрфейс 8-ми битный.
Нужно проверять состояние битов красного цвета.

---------- Post added at 16:02 ---------- Previous post was at 15:59 ----------

и тех врагов с оружием убрал....Пожалуй они будут главарями.

---------- Post added at 16:04 ---------- Previous post was at 16:02 ----------


Готового движка, чтобы воплотить задумку на 48к
А как же exolon-подобные игры, коих сотни?

AER
08.04.2012, 17:31
ALKO, а игра будет нецветная?

ALKO
08.04.2012, 18:24
ALKO, а игра будет нецветная?
на ПКешке цветная - чёрный и серый цвета.

AER
08.04.2012, 18:47
эффект телепортации (исчезание\появление) прибить бы ровно к телепортаторам, а не там где стоит герой. )

ALKO
08.04.2012, 18:56
Щас гемор с маской.
Чему будет равен краный цвет в восмибитном изображении?
нужно значение в DEC системе счисления.
если в 32-х битной FF0000 (HEX)

Vitamin
08.04.2012, 19:15
Чему будет равен краный цвет в восмибитном изображении?
Про палитру слышал?

ALKO
08.04.2012, 19:37
Про палитру слышал?
Не только слышал, но и видел.

---------- Post added at 18:37 ---------- Previous post was at 18:37 ----------

и?

NovaStorm
08.04.2012, 20:38
Маска традиционно 0xFF00FF.
И в SDL ЕМНИП пох на биты, там же просто colorkey задаётся вроде.

Vitamin
08.04.2012, 21:00
Не только слышал, но и видел.

---------- Post added at 18:37 ---------- Previous post was at 18:37 ----------

и?
Красный цвет в 8-битном изображении будет равен индексу цвета 0xff0000 в палитре.

ALKO
08.04.2012, 21:14
ff0000 - 24-х битное значение.
в 8-мибите это ff , то есть 255 чтоли?

Vitamin
08.04.2012, 21:14
в 8-мибите это ff , то есть 255 чтоли?
Откуда ты взял, что это ff?

ALKO
08.04.2012, 21:24
И в SDL ЕМНИП пох на биты, там же просто colorkey задаётся вроде.
У меня движок не сурфэйсами рисует , а попиксельно.

---------- Post added at 20:15 ---------- Previous post was at 20:14 ----------


Откуда ты взял, что это ff?
а как приравнять 24 к 8 битам?

---------- Post added at 20:16 ---------- Previous post was at 20:15 ----------

в 24-х разрядном коде первый байт отвечает за красный цвет, а 8-ми битах байт один.

---------- Post added at 20:19 ---------- Previous post was at 20:16 ----------

тут вроде написано 3- бита отведено на красный.
это 11100000 bin ?
http://ru.wikipedia.org/wiki/%D0%93%D0%BB%D1%83%D0%B1%D0%B8%D0%BD%D0%B0_%D1%86% D0%B2%D0%B5%D1%82%D0%B0

---------- Post added at 20:19 ---------- Previous post was at 20:19 ----------

224 DEC ???

---------- Post added at 20:24 ---------- Previous post was at 20:19 ----------

....не...всё-таки не 224

Vitamin
08.04.2012, 21:28
а как приравнять 24 к 8 битам?

---------- Post added at 20:16 ---------- Previous post was at 20:15 ----------

в 24-х разрядном коде первый байт отвечает за красный цвет, а 8-ми битах байт один.

---------- Post added at 20:19 ---------- Previous post was at 20:16 ----------

тут вроде написано 3- бита отведено на красный.
это 11100000 bin ?
http://ru.wikipedia.org/wiki/%D0%93%...B5%D1%82%D0%B0

---------- Post added at 20:19 ---------- Previous post was at 20:19 ----------

224 DEC ???

---------- Post added at 20:24 ---------- Previous post was at 20:19 ----------

....не...всё-таки не 224
Возвращаемся к изначальному вопросу. Расскажи, что такое палитра (это я спрашивал несколькими постами выше).

ALKO
08.04.2012, 21:37
пол-литра это как литр, только половина.
В современных графических редакторах зачастую представлена в виде цветового круга.
Код цвета отображается шестнадцатиричным 24-х разрядным числом.

А к чему сей вопрос?

Vitamin
08.04.2012, 21:39
Код цвета отображается шестнадцатиричным 24-х разрядным числом.

А к чему сей вопрос?
Читать до просветления http://ru.wikipedia.org/wiki/Палитра_(компьютерная_граф ка)

ALKO
08.04.2012, 21:44
то есть вместо того, что б сказать какой всё-таки код у красного цвета, проще ссылками на педовикию закидать...
Спасибо и на том...

Vitamin
08.04.2012, 21:48
то есть вместо того, что б сказать какой всё-таки код у красного цвета, проще ссылками на педовикию закидать...
Спасибо и на том...
"Вместо того, чтоб сказать какой по порядку книгой на моей полке является букварь, мне рассказывают о том, как считать предметы"

ALKO
08.04.2012, 21:48
это выходит, что и BMP является индексированым файлом?

Vitamin
08.04.2012, 21:50
это выходит, что и BMP является индексированым файлом?
8-битный- да.

ALKO
02.07.2012, 17:09
переделываю агрессора под аппаратное 2д, в этом движке допустимо наличие нескольких стен и телепортов на одном экране.

для сравнения SDL
http://sderni.ru/134736

и HGE
http://sderni.ru/134737

baxter
02.07.2012, 18:46
Круто! А когда будет мясо?

ALKO
25.07.2012, 02:59
Круто! А когда будет мясо?
мясо уже есть, но глав. ге-й пока-что неуязвим.
Если клепать все уровни по одному принципу, то игра уже готова.
Но я хочу разнообразить геймплей. Добавлю ещё сайд-скроллер.

---------- Post added at 01:59 ---------- Previous post was at 01:57 ----------

Сложность построения уровней только в телепортах заключается, там вручную приходится прописывать условия if else - куда и откуда телепортировать, а так можно было бы конструктор уровня создать , но это лишняя морока.