Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Игры";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Вниз

Как написать Стратегию???   Найти похожие ветки 

 
Grez   (2004-06-22 13:36) [0]

Нет, это НЕ ламерский вопрос типа "Вот я пошпилил в старкрафт, нада его улуччить, взялся за делф, но нихрена понять немогу что за хрень такая Директикс, что мне делать?"

Занялся самообразованием в виде написания стратегии. С апи туговато идет (очень напрягают разные выдиления памяти и преоброзования структур).
Взял DelphiX правда без движка спрайтов (не нравиться он мне).
Перерыл кучу инфы, в том числе и этот сайт. Таким мелочам как спрайтовая карта для пола посвящено много времени(она уже давно готова),а вот про юниты. Вобщем мож кто подскажет где есть стати на ету тему? по делфи, и желательно не привязаных к какому либо апи. Как ети юниты реализовать в динамическом масиве, или статическом, или ещо каком либо методе, движение, просчет столкновений, создание а главное отрисовка.
Как я уже говорил - цель не написать готовую игру, а понять как оно работает.
З.Ы Весб форум облазить очень тяжело, если гдето есть подобные темы, выкладуйте ссылки.


 
Servelat   (2004-06-22 14:10) [1]

На Mirgames.ru раньше качал ихнюю стратегию "В Осаде", старую версию, с исходниками (не знаю, доступна ли она сейчас), по ней можно разобраться. Там как в обычной RTS - мужички бегают, дерутся, только лучников нету. Та старая версия была под DelphiX, с исходниками. Если у них на сайте нету и очень надо, то могу найти и выслать.


 
NailMan ©   (2004-06-22 16:59) [2]

Grez
Рад что появиля чел который хочет писать RTS в познавательных целях.

> Как ети юниты реализовать в динамическом масиве, или статическом,
> или ещо каком либо методе, движение, просчет столкновений,
> создание а главное отрисовка

Можно реализовывать как хочешь - вариантов много.

Скажем я всегда хотел увидеть стратегию не аля варкрафт, где игрок сам должен направлять каждого юнита туда-то и туда-то и фактически управлять им в реалтайме(я считаю это недостратегией  и полушутером. Стратегией здесь и не пахнет полноценной), а стратегию в которой есть юниты(боссы  или мобильные коммандные пункты), которые обладая некоторым продвинутым АИ, могут самостоятельно управлять подчиненным взводом простых "пешек".

Скажем так игрок отдает приказ боссам расположиться в таком-то районе, разрешает им просить подмогу(в автоматическом режиме или в подтвердительном), задает цели и т.д. Боссы выдвигаются  на позиции и принимаются за выполнение задач - командуют подчиненными юнитами, предположим посылают их на разведку по кругу(радиус разведки может задаваться игроком в реальном времени). В случае если был обнаружен враг в пое видимости босса, то он сам выбирает последующие действия(или спрашивает у игрока что ему делать в этой ситуации). Если была дана команда на уничтожение, то вперед - босс начинает весь свой взвод(за исключением своего собственного прикрытия) посылать в атаку на врага.
Если у босса потеряно стролько-то процентов юнитов, то он будет запрашивать подмогу(или сам без разрешения игока).

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

Что касаемо самой реализации юнитов - можно сделать массивом классов, каждый из который есть TActor, то есть номинальная единица, которая может иметь собственное "я ".

TActor имеет методы рендера своих частей(если он должен содержать более одной части) из которой он состоит(скажем у танка есть части - корпус, башня, пушка и гусенницы по отдельности), и есть методы управления. Скажем вращения, движения и т.д.
В моем видении стратегии, каждый TActor может также иметь ссылки на подчиненных ему таких же TActor. Различать кто главней можно по какому-то идентификатору - скажем у TActor есть поле GID(Game IDentifier):Integer которое скажем будет иметь значения GID_BOSS_UNIT(=1) и GID_NORMAL_UNIT(2). Второй никак не может стать первым(или может но при каких-то особых условиях), а первый может быть подчиненным только игроку.

Реализация рендера - тут много тонкостей. Скажем для моего 3Д космосима, я рисую(вызываю на рендер) не актеров(у него нет методов рендера), а куски объектов(в моем понимании ИО-игровой объект лишь контейнер для геометрии, наделенный некоторыми уникальными свойствами). Куски - это группа фейсов с одним материалом(текстурой или без нее).

Рендер идет по списку(глобальному) в котором последовательно идут записи с инфой какой кусок какого объекта и какой номер текстуры юзает.
Собно список нужен для оптимизированного рендера(с сортировкой по статическому буферу и текстуре)

В случае с 2Д и спрайтовой графикой, то тут тоже можно такой подход сделать. В этом случае объекты - это спрайты куски: башня, торс, гусеницы.

---
WBR, NailMan aka 2:5020/3337.13


 
Колбасьев   (2004-06-25 13:09) [3]

Надо сделать класс (объект), но тиким:
1. У него есть массив (список и т.д.) записей с характеристиками юнитов.
2. Есть методы, которые рисуют сразу всей юнитов (проверяя, нуждается тот в рисовании или нет (допустим, когда он за экраном)).

Движение:
1. можно иметь реальную (или отмасштабируемую) карту в памяти где по цветам масок проверяются столкновения и т.д. (например 16 бит на цвет: белый - земля, 65355 - номер юнита на карте - помоему ни хило (тут же обгоняет старкрафт с 1600-4800 юнитами на карте).
2. Все основано на математике. Каждый юнит - окружность, квадрат и т.д. Геометрически проверяем столкновения (разными методами уменьшая количество проверок).

Отрисовка: совет: рисуй сначала на невидимом холсте, затем необходимые для перерисовки части методом CopyRect переноси на нужный холст (Canvas): форму, образ и т.д. Быстро будет и, главное, без мелькания.

Движение: используй таймер или пользовательские сообщения или зацикли программу и беспрерывано рисуй (тогда надо будет использовать ProgressMessages(вроде это) для обработки накопившихся сообщений, иначе программа "повиснет").

Надеюсь помог.


 
Proger   (2004-06-26 20:25) [4]

2 Grez.Посмотри на DelphiGFX, я на нём учусь



Страницы: 1 вся ветка

Форум: "Игры";
Текущий архив: 2004.10.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.037 c
1-1097590259
Expl
2004-10-12 18:10
2004.10.24
файл hlp на русском языке


1-1097355900
dock
2004-10-10 01:05
2004.10.24
Как сделать чтобы форма пропускала сообщения сквозь себя и не зад


9-1087820889
Zak3D[@Tm]
2004-06-21 16:28
2004.10.24
OpenGL на Делфи и на С.


4-1095629351
dms_main
2004-09-20 01:29
2004.10.24
Запуск от имени


11-1081662467
Delphi5.01
2004-04-11 09:47
2004.10.24
Msg.message, FAQ ne sovetovat, eto drugoi vopros!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский