|
|
|
Канал Игры Мечты: «Архитектура Игры» |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Так, млин, поактивней! В КИМ по 1 сообщению в день. Непорядок!!
Значит, вот вопрос появился. Пришло время писать игру, движок готов. Я раньше уже писал, но вот терзали смутные сомнения - а правильно ли..
Вот решил узнать, как архитектура игры реализована в различных играх (ссори за тафтологию и на фсякий случай за туфтологию )
Ну например, если кто писал моды, или.. ах, да. Скрипты на х2-х3 тоже катят - там можно узнать как оно организовано. Ну вообще как организованы события, взаимодействия, хранение данных и т.п.
Важно всё - мелочи тож. Как там, что. Особенно это к модам относится, как они к движку присобачиваюццо.
Перечитал 2 раза.. Мысль "наверно, не поймут" появляется. Ну и ладно, всё расскажу и проясню, если вопрос не ясен.
_________________ MOV topka, C++ |
|
|
YogSagot
1175 EGP
  Рейтинг канала: 1(8) Репутация: 275 Сообщения: 2796 Откуда: Daugavpils, Latvija Зарегистрирован: 17.08.2003
 |
|
Блин, Юрик, ну почему ты не дотнетчик! А то холивар разводить не хочеться (да и НРГы на страже), но сказать есть что только про дотнет.
|
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
2YogSagot
Ну.. Я может и не пойму ничё но попробовать стоит. А холивар не надо - за этим местом следят гонеры.
_________________ MOV topka, C++ |
|
|
Sh.Tac.
151 EGP
  Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005
 |
|
там усё просто, главное чтоп поменьше графики было
опычный цикл
графика
физика (считаем на следующий цикл графики)
ИИ (если времени в цикле не хватило, то переносится на след. цикл)
ну и по мелочи (как правило это усё, что перечислено выше)
_________________ This is what you get ...
(c) Radiohead |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Это понятно и слишком поверхностно. А как взаимодействия происходят, например?
Какие есть типы объектов?
_________________ MOV topka, C++ |
|
|
DreamZzz
430 EGP
   Репутация: 90 Сообщения: 642 Откуда: Мурманск Зарегистрирован: 15.04.2006
 |
|
В идеале все должно быть объектами с деревом подчинения. Так, чтобы от солнца можно было получить ссылки на планеты, от планет ссылки на спутники планет и т.д. Объект игра с методами сохранить, загрузить и т.п. Объект звук с методами плэй, стоп...
Для кораблей можно создать объект "крыло". Объекты которых много - в массив. Общие объекты - в статик.
_________________ Космос лучше всего исследован научными фантастами |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Ладно, напишу как у меня, для примеров, так сказать.
Движок..
-Геометрия
-Система частиц
-Спрайт
-Источник света
-Камера
они наследники одного базового типа, в котором хранится:
- объект "трансформация", где лежит матрица
- уникальное имя
- список "детей", для построения чего-то вроде дерева, чтоб можно было привязать объекты друг к другу. Например, чтоб когда корабль(геометрия) летел, то его выхлоп от двигателей(система частиц или геометрия, может и источник света) был к нему привязан, а не оставался на месте.
Это структура движка, описанная довольно поверхностно. Цель - написать на нем игру.
Так, вот. Опишите ИГРУ, так же как я описал ДВИЖОК, или поподробнее.
_________________ MOV topka, C++ |
|
|
himem
210 EGP
  Репутация: 24 Сообщения: 343 Откуда: Дзержинск- Нижегородский Зарегистрирован: 24.01.2004
 |
|
В ИВ2 встроен си подобный язык... Усе написано на нем (данные)... Двиг - черный ящик - реагирует на события и берет данные из переменных/файлов по прописаным путям... Скрипт - суть прога на ентом языке с функцией main и другими...
ЗЫ По мойму идеально...
Плюс - независимость от структуры двига...
Минус - невозможность расширить(я споткнулся о невозможность из скрипта сгенерировать ПС)
_________________ -Что ты чувствуешь став богатым?
-Опустошенность.
-Да,ты подойдешь для Темного Колеса.Это точно! |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
himem, а теперь то же самое но поподробней. Меня интерисует какие данные ты "видишь" и можешь "потрогать" из скрипта.
О движке поподробей...
_________________ MOV topka, C++ |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Да, или вот еще вопрос. Какие свойства и методы должны быть у типа "Корабль"?
Ну там.. скорость, маневренность, цена, щиты, прочность.
методы: Поворот, ускорение(хотя, можно матрицу трансформации вынести..), выстрел и т.д.
Нужно назвать как можно больше.
_________________ MOV topka, C++ |
|
|
DreamZzz
430 EGP
   Репутация: 90 Сообщения: 642 Откуда: Мурманск Зарегистрирован: 15.04.2006
 |
|
В ffe, например, нет объекта типа "корабль". Там любая модель имеет одинаковую структуру. Но тут уж кому как удобней.
_________________ Космос лучше всего исследован научными фантастами |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
А какую структуру? Что туда входит?
_________________ MOV topka, C++ |
|
|
DreamZzz
430 EGP
   Репутация: 90 Сообщения: 642 Откуда: Мурманск Зарегистрирован: 15.04.2006
 |
|
Туда входит все. Матрица поворота, координаты, указатель на модель, указатель на предыдущий объект, установленное оборудование... Если это планета, то температура, орбитальный радиус и т.п. Указатель на модель указывает на объект, содержащий параметры типа: координаты выхлопов движков, масса, радиус (для коллизии), указатель на 3d модель и т.д.
_________________ Космос лучше всего исследован научными фантастами |
|
|
Vladimir Kladov
218 EGP
    Репутация: 84 Сообщения: 80 Откуда: Novosibirsk, Russia Зарегистрирован: 11.04.2006
 |
|
Я бы добавил вот что. По сути, есть смысл различать тип "корабль" для описания данной модели корабля "вообще", и для характеристик данного конкретного экземпляра (как объекта, который движется, сражается, и т.п - т.е. игрового "персонажа"). То же касается, к примеру, планеты или астероида.
А, вот, DreamZzz уже сказал выше: ссылка на модель. Так вот, координаты выхлопов - это все-таки часть модели, а не данного экземпляра (если у вас не переменное число двигателей, конечно. Ну, если реактивная тяга все еще используется. Я вот не уверен, что на таком будут летать в космосе лет так через 1000. Нет, даже наоборот: уверен, что реактивная тяга уйдет в прошлое).
Опять я невнимательно прочитал: DreamZzz про то и говорит, что это часть модели. Неудобно отвечать в редактировании получается: все собщения треда в этот момент не видно. Ну ладно, спишем на недосып и перетруд
|
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Да. Ракета, корабль, мертвое тело(астероид, остатки корабля), выстрел и т.д. надо бы выносить в отдельные классы.
А насчет выхлопов, то это как-бы эффект графический, создающий ощущение реальности, и отказыватся от него не стоит, если, конечно, нет красивой альтернативы.
_________________ MOV topka, C++ |
|
|
Vladimir Kladov
218 EGP
    Репутация: 84 Сообщения: 80 Откуда: Novosibirsk, Russia Зарегистрирован: 11.04.2006
 |
|
Я не возражаю. Ктати в каком-то фантастическом произведении встретил интересную мысль: звездные корабли будущего обязаны иметь на борту движки всех типов, и реактивный тоже сгодится (вдруг все остальные из строя повыходят). Но маневренные реактивные движки например - их так вообще не видно почти как они работают. Ничего красивого, скажу я вам. Старт лунного модуля с поверхности луны оказался таким неэффектным, что это дало повод (один из многих) критиковать американцев, что они вообще на Луне не были. Может и не были, но не настолько же они дураки, чтобы давать повод и фальсифицировать так некрасиво Любой фальсификатор такой эффект бы забабахал, что критики было бы на порядок меньше.
|
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
Реалистичность в играх - не всегда хорошо.
Вот теперь такой вопрос. Какие команды можно отдавать кораблю. И давайте попробуем разбить их на более простые.
Пожалуй я начну.
Команда "Атаковать цель" разбивается на:
-увеличить/уменьшить скорость
-нацелиться на какую-то точку в пространстве
-выстрелить
-выпустить ракету
вроде всё.. Задача в том, чтобы найти все подзадачи и организовать их.
Активнее жмем на клаву, пилоты!
_________________ MOV topka, C++ |
|
|
Sh.Tac.
151 EGP
  Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005
 |
|
на мой скромный взгляд када типов и объектов вагон лучше не наследоваться, и уж точно не строить длинные цепи, лучше плоско агрегироваться, условно говоря корабель имеет в своём составе индекс модели, индекс элементов анимации, индекс силовой установки в сборе и т.д.
все перечисленные входящие также представляют собой набор индексов объектов рангом помельче. UID'ы хороши тем, что позволяют без проблем сериализовать объекты хошь в файл хошь в сетевой пакет + их можно использовать как seed для ГСЧ. Единственная проблема это целостность объекта, сам по себе он таковую не гарантирует
архитектурно сердцевина объека представляет собой список ASCII строк или вектор элементарых типов, целых и с плавающей точкой. Эта сердцевина обёрнута различными обёртками, которые содержат лишь методы работы (не данные, данные есть сердцевине) с объектами.
что-то подобное мне пришлось заимплементить по работе, так что иногда работа совсем не мешает досужим увлечениям
З.Ы. хе-хе, Jurec, не иначе как ИИ удумал делать
_________________ This is what you get ...
(c) Radiohead |
|
|
Jurec
348 EGP
   Рейтинг канала: 4(76) Репутация: 102 Сообщения: 1441 Заблокирован Откуда: Seattle Зарегистрирован: 25.02.2006
 |
|
http://www.gamedev.ru/community/gamedev_lecture/articles/?id=18
вот, aruslan, наверно, слишком крутой Гуру гамедёва, чтобы быть понятным для нас - простых смертных. Но архитектуру он описывает железно, если поймете хоть 20%, считайте вы крутой мэн.
Это я к тому, что подходов огромное количество.
Sh.Tac. : |
на мой скромный взгляд када типов и объектов вагон лучше не наследоваться
|
Дело в том, что объектов не слишком много. Да и наследование, особенно в Делфи - это КРУТО! очень удобно.
ИИ, да, вот, обычно руки не доходили, а тут решил ВЕСЬ упор на него.
_________________ MOV topka, C++ |
|
|
Sh.Tac.
151 EGP
  Рейтинг канала: 5(108) Репутация: 14 Сообщения: 1426
Зарегистрирован: 27.07.2005
 |
|
тяжело читать этого гуру
я бы порекомендовал нормальные книжки, одна старая
Гамма Э. и др. - Приемы объектно-ориентированного проектирования
другая поновее Александреску
Обобщенное программирование и прикладные шаблоны проектирования
единственная незадача, что примеры там на Smalltalk и C++
Jurec, мож того, рано плюсы в топку?
_________________ This is what you get ...
(c) Radiohead |
|
|
|
|
|
Канал Игры Мечты: «Архитектура Игры» |
|