06.12.2007, 00:37 | #1 | ||
Пугатель
Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,103
Репутация: 1085
|
Выработка концепции для учебного игрового проекта
Теперь нам необходимо определиться с концепцией игры, а именно, правилами игры и ее воплощением. Всен, что мы тут нарешаем, будет использовано в диздоке.
__________________
Хорошо смеется тот, кто стреляет первым! (танкистская мудрость) |
||
|
06.12.2007, 05:17 | #2 | ||
Новичок
Регистрация: 26.11.2007
Сообщений: 9
Репутация: 0
|
Есть несколько предложений:
1. Несколько видов гонок: круг и дрэг, можно еще чего-нибудь. 2. Смена раскраски автомобиля, хотя бы только основной цвет. Можно реализовать через шейдры. 3. В какой-то OpenSource гонке я видел такую фишку: управление поворотом колес с помощью мышки. Это позволяло плавно поворачивать на поворотах тем, у кого не было руля. Больше я такого нигде не видел. 4. Выезд с дороги определять по карте поверхности или карте проходимости. Она похожа на карту высот, только каждый пиксель показывает, в какому типу поверхности относиться соответствующий участок трассы. Типы поверхности, их физические свойства и соответствующие им цвета описываются в отдельном файле. И вопросов: 1. В чем будут создаваться трассы? В 3dmax целиком с последующей загрузкой, или в спец редакторе из отдельных объектов и поверхности с картой высот? + если все в 3dmax, то все равно где-то надо описывать триггеры на финиш etc. 2. Кто будет моделировать машины? И сколько их будет? В принципе можно связаться с авторами машин для GTA и попросить разрешения использовать их творения в нашем проекте. 3. Насколько сложной будет физическая модель машин? 4. Какова реалистичность? Разбиваются машины или нет? 5. Какие это гонки? Ралли, формула1, стрит-рейс? |
||
|
06.12.2007, 06:10 | #3 | ||
Мастер
Регистрация: 20.06.2007
Сообщений: 255
Репутация: 156
|
А чему именно должна обучать игра?
__________________
Подписи нет |
||
|
06.12.2007, 09:37 | #4 | |||||
Кандидат наук
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,356
Репутация скрыта
|
[CCCP] Monster, всё-таки сейчас мы проектируем ядро игры - это не помешает отметить. Нам нужны глубины реализации, а не её поверхностная часть. Если глубины потребуют конкретного определения поверхности - уточним, если нет - тем лучше и универсальнее будет ядро проекта.
Посему в рамках "учебности" проекта внесу ясность: К базовой концепции отношения не имеет. Виды гонок - это правила, в соответствии с которыми рассчитывается победа/поражения игрока. В ядро игры их зашивать бессмысленно и откровенно вредно. Скорее, они потом будут добавлены как расширение ядра. Цитата:
Цитата:
Цитата:
Цитата:
Логически карта будет разбита как минимум на две части - собственно, часть для логики игры (эта точно будет задаваться в отдельном редакторе - в ней как раз будут уравнения поверхностей, физические свойства, высоты..., препятствия) и визуальная часть - т.е. объекты, грузящиеся на карту. Не думаю, что эти части должны быть как-то связаны. Т.е. для в версии редактора для пользователя, может, и будут - но для программистов - нет. Цитата:
Предстоит обсудить, однако я со своей склонностью к микромашинкам предлагаю достаточно простую. Все машины являются либо просто параллерограммами, либо (чуть сложнее) призмами с многоугольниками в основаниях. Возможен также предложенный мною вариант, сводящий весь мир к сферам, для которых у меня уже почти готова физическая модель (ага, "сферический конь в вакууме"). Нет. По крайней мере, изменение характеристик производиться не будет. Это вносит дополнительную сложность в учебный проект. Имеет отношения к базовой концепции ещё меньше, чем вопрос №1. Однако точно не формула - там слишком высокие скорости. AXEL SONIC Своему созданию.
__________________
Товарищ, верь: пройдет она - Эпоха лживых, злых понятий. Весь мир очнется ото сна, И на обломках "демократий" Напишут наши имена! Мы были волшебницами (оригинальное фентези) Тень Войны (фанфик по ГП) |
|||||
|
06.12.2007, 16:42 | #6 | ||
Юзер
Регистрация: 30.08.2007
Адрес: Запаришься искать
Сообщений: 121
Репутация: 14
|
С чего именно начинать и как мы будем работать, каждый одинаково как и все пишет у себя (на форуме предложения толкать будем) или соединять потом будем.
__________________
Нет победы без боя!!! Победа над слабым - позор... Битва не только повод показать силу, но и интелект... Самые красивые битвы, да и самые умные полководцы были до изобретения пороха...раньше честь и доблесть, сейчас кнопка решает все. |
||
|
07.12.2007, 06:22 | #7 | ||||
Новичок
Регистрация: 26.11.2007
Сообщений: 9
Репутация: 0
|
Цитата:
Цитата:
Цитата:
Цитата:
|
||||
|
07.12.2007, 08:49 | #8 | ||
Юзер
Регистрация: 30.08.2007
Адрес: Запаришься искать
Сообщений: 121
Репутация: 14
|
,
Цитата:
Хотя второй тоже мене больше нравиться.
__________________
Нет победы без боя!!! Победа над слабым - позор... Битва не только повод показать силу, но и интелект... Самые красивые битвы, да и самые умные полководцы были до изобретения пороха...раньше честь и доблесть, сейчас кнопка решает все. |
||
|
07.12.2007, 15:13 | #9 | |||||||||||
Пугатель
Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,103
Репутация: 1085
|
Цитата:
2. Делается текстурами. Несложно. Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
В нашем случае, описание канвы, главной мысли, принципов игры. О том, как все это будет работать, что игрок будет иметь и т.д. На основе этих данных можно собрать диздок, который вберет в себя более подробное описания движка как такового. Цитата:
__________________
Хорошо смеется тот, кто стреляет первым! (танкистская мудрость) |
|||||||||||
|
08.12.2007, 15:08 | #10 | ||
Юзер
Регистрация: 30.08.2007
Адрес: Запаришься искать
Сообщений: 121
Репутация: 14
|
[CCCP] Monster
Полагаю основу будете делать вы с pokibor'ом, но её написание то вы дадите? Тоесть с помощью чего и как вы это сделали?
__________________
Нет победы без боя!!! Победа над слабым - позор... Битва не только повод показать силу, но и интелект... Самые красивые битвы, да и самые умные полководцы были до изобретения пороха...раньше честь и доблесть, сейчас кнопка решает все. |
||
|
08.12.2007, 18:14 | #11 | ||
Пугатель
Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,103
Репутация: 1085
|
GSUR
Да, разумеется Мы выложим полное описание архитектуры, дадим рекомендации, скажем, почему использовали именно такой вариант, а не другой. Ведь в этом и есть цель учебного проекта
__________________
Хорошо смеется тот, кто стреляет первым! (танкистская мудрость) |
||
|
10.12.2007, 13:23 | #12 | ||
Пугатель
Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,103
Репутация: 1085
|
Ну что, все закисли?
Вобщем я вот что предлагаю. Сделать что-то типа ралли Дакара, но на небольшой площади. Во-первых это избавит от необходимости делать линии трасс, по которым система будет определять, где вообще игрок и его соперники едут - по трассе или нет. Там понядобятся триггеры для чекпоинтов, и все вобщем-то. А трассу как таковую можно имитировать естественным ограничениями, заборами, деревьями и т.д. Нужно определить, как все это будет выглядеть. Кроме того, мы должны будем написать редактор трасс и редактор автомобилей.
__________________
Хорошо смеется тот, кто стреляет первым! (танкистская мудрость) |
||
|
10.12.2007, 20:55 | #13 | ||
Кандидат наук
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,356
Репутация скрыта
|
Я за обсуждение в первую очередь ядра, и, собственно, физики. Скрипты, трассы и т.п. - это хорошо, но это находится над физикой. Мы же сейчас не обсудив фундамент пытаемся обсудить крышу. Итак, вопросы следующие:
1) Как будут задаваться машины? Я вижу такие варианты: - простой - прямоугольник и только он - также простой, возможно, даже проще предыдущего - набор сфер - система отрезков; многоугольник 2) Как будут задаваться препятствия: - система отрезков, многоугольник - аналогично предыдущему пункту, но при приближении автомобиля вдоль отрезков будут выстраиваться сферы, что облегчит рассчёт пересечений - Довольно изощрёный способ - как уравнение. Тут можно задать что угодно, но как определять пересечения? Хотя методы решения системы из двух уравнений есть. 3) Как будет вообще рассчитываться физика?
__________________
Товарищ, верь: пройдет она - Эпоха лживых, злых понятий. Весь мир очнется ото сна, И на обломках "демократий" Напишут наши имена! Мы были волшебницами (оригинальное фентези) Тень Войны (фанфик по ГП) |
||
|
10.12.2007, 23:28 | #14 | ||
Юзер
Регистрация: 07.06.2006
Адрес: this
Сообщений: 162
Репутация: 112
|
pokibor
ИМХО: я считаю, что и автомобили и препятствия нужно представлять в виде наборов сфер. Это мое предложение.
__________________
www.rodionovstepan.ru Последний раз редактировалось pokibor; 10.12.2007 в 23:40. Причина: наверное, опечатка |
||
|
11.12.2007, 00:41 | #15 | ||
Пугатель
Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,103
Репутация: 1085
|
pokibor
А как мы поймем, какая физика нам нужна? Как ты говорил, мы же не движок просто делаем, а игру. Давай вот как поступим. Напиши в отдельной теме последовательность работ по проектированию, которые ты считаешь нужным провести в ходе разработки. Насчет физики - не совсем ясно, 2Д или 3Д, но поскольку упомянуты сферы, пусть будет 3Д. Я считаю, что физику следует построить на основе выпуклых пространственных многоугольников. На их основе легче всего строить системы обнаружения столкновений. Какой алгоритм будет - я напишу. По физике вообще. Любой объект, с которым возможно взаимодействие в игрвом мире должен обладать несколькими основными параметрами. Во-первых - скорость. Думаю, представить ее в виде вектора. Длина вектора будет у нас величиной скорости. Второй параметр линейного движения - ускорение, представим аналогично скорости. Теперь движение вращательное. Моменты инерции, моменты сил, действующих на тело. Результат их действия можно задавать как скорсоть вращения. Задаваться будет плоскость вращения и угловая скорость враения в рад/с. Эти параметры в процессе обсчета движения будут влиять на самый основной параметр любого объекта - матрицу положения в пространстве, которая в сочетании с видовой матрицей дает возможность взглянуть на объект по ту сторону монитора. Не менее важным параметром является точка - центр масс. Центр масс, думаю, нужно считать в локальных координатах объекта (т.е. на его пространственное положение действует вышеописанная матрица положения объекта). Плюс к этому будет введен элемент - сила, действующая на тело. Исходя из массы объекта можно посчитать ускорение объекта. Также моменты сил и инерции можно посчитать. В остальном физика фактически легко программируется с помощью этой физической модели. Важное дополнение: Также есть параметр "дельта времени" - время, которое занял обсчет игрового цикла (время между сменой кадров, величина, обратная FPS). Это время будет использоваться для расчетов физики и изменений в сцене. К примеру, для того, чтобы вычислить, на сколько нужно переместить объект, обладающий скоростью v=1м/с, если известно, что время между сменой кадров t=0.037 сек. Нужно просто умножить v*t, и в итоге получится 0.037 метров. Вычислять думаю с помощью функции получения значения системного счетчика времени. Такой метод позволяет на компах с разной производительностью моделировать течение времени игрвого мира без проблем с задержкой (или ускорением времени). Однако время между кадрами иногда меняется, из-за совпадения перидоа чтения из видеобуфера ЦАП и записи туда нового кадра, что приводит к рывками дерганию ФПС. Для предотвращения такого эффекта считаю необходимым расчитывать среднее значение дельты времени за последние 5 кадров. Кроме того, умножив дельту времени на коэффициент времени можно увеличить или замедлить ход времени в игровом мире.
__________________
Хорошо смеется тот, кто стреляет первым! (танкистская мудрость) Последний раз редактировалось [CCCP] Monster; 11.12.2007 в 00:56. |
||
|
11.12.2007, 01:05 | #16 | |||||
Кандидат наук
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,356
Репутация скрыта
|
Цитата:
Далее, мы делаем игру, да. Мы уже поняли, какую игру мы делаем - это хорошо. Я не запрещаю проектировать её целиком - лишь говорю, что неплохо было бы оценить наши возможности в написании физики сперва. Кстати, я за микромашинки. Цитата:
Я понимаю физику как 2,5-мерную, скажем так. Т.е. силы будут чётко разделяться на действующие по вертикали (тяжесть) и горизонтали (сила тяги, сила реакции опоры и соударении и т.д.). То есть гонка по сути будет всё же 2-мерной. Цитата:
И, кстати, мы так до сих пор и не определились, что будем ли двигаться на дискретное время каждый раз или всё-таки будем рассчитывать момент времени, когда происходит касание. Второй алгоритм куда сложнее, поверь мне. Там нелинейное уравнение со временем под синусами-косинусами от вращательной компоненты выходит... Цитата:
Цитата:
Насколько будет легко эту физическую модель сделать, да ещё так, чтобы она не тормозила...
__________________
Товарищ, верь: пройдет она - Эпоха лживых, злых понятий. Весь мир очнется ото сна, И на обломках "демократий" Напишут наши имена! Мы были волшебницами (оригинальное фентези) Тень Войны (фанфик по ГП) |
|||||
|
11.12.2007, 01:42 | #17 | ||
Пугатель
Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,103
Репутация: 1085
|
Цитата:
Цитата:
Тогда определяемся. 2Д микромашинки с видом сверху, реализованные в "условно трехмерной" среде. Т.е. координата Z будет нам предоставлена самим графическим API (Директ3Д или OpenGL), но мы ее не будем использовать при выводе графики (пока что), кроме как для подвещшивания камеры на заданном расстоянии от "земли". Соответственно ландшафт у нас будет плоским. Объекты будут представлены как второй слой над ландшафтом. У объектов будут ограничивающие многоугольники. Чтобы узнать о столкновении, достаточно узнать о пересечении пары отрезков. А теперь главный твой вопрос - как считать коллижн. Берем BoundingBox вокруг машинки. Берем вектор скорости. Считаем расстояние, на которое надо подвинуть машинку до следующего кадра. Параллельно получившемуся отрезку "расстояния" откладываем пару точно таких же отрезков, так, чтобы получился прямоугольник. В конце и в начале отрезка впиливаем копию Bounding Box'а. После чего считаем пересечения с точно таким же набором отрезков, представляющих вторую машину. Там, где пересекаются, смотрим координату и соответствующее время. Ежели время не совпадает, то столкновения небыло.
__________________
Хорошо смеется тот, кто стреляет первым! (танкистская мудрость) |
||
|
11.12.2007, 02:26 | #18 | ||
Юзер
Регистрация: 18.08.2005
Сообщений: 275
Репутация: 218
|
Цитата:
|
||
|
11.12.2007, 02:39 | #19 | ||
Кандидат наук
Регистрация: 13.06.2005
Адрес: 0x00000000
Сообщений: 8,356
Репутация скрыта
|
Цитата:
Не учтено вращательное движение (я что, просто так про синусы-косинусы говорил? или мы ими пренебрегаем?), плюс не учтено ускорение (ибо оно даёт t^2, и там уже так просто время пересечения не посчитаешь). Иначе говоря, ты абсолютно прав, но несколько упростил исходную задачу. В остальном согласен. Эх, сам говорю, что нужно правильно писать диздок, но самому так лениво! Ладно, завтра будет на работе совещание важное, если в сознании останусь - попытаюсь что-нибудь набросать. CMogilko Верно предложение, но тогда придётся каким-то образом подстраиваться под возможности конкретного процессора компьютера. Хотя в нашем простеньком проекте при возможностях современных процессоров такой вопрос не стоит, но всё же с учебной точки зрения это ни есть хорошо, как говорит [CCCP] Monster.
__________________
Товарищ, верь: пройдет она - Эпоха лживых, злых понятий. Весь мир очнется ото сна, И на обломках "демократий" Напишут наши имена! Мы были волшебницами (оригинальное фентези) Тень Войны (фанфик по ГП) |
||
|
11.12.2007, 02:43 | #20 | ||
Юзер
Регистрация: 18.08.2005
Сообщений: 275
Репутация: 218
|
Цитата:
а разве в современных играх это не так? если так, то помоему, как раз это полезно. |
||
|
|