Пугатель
Регистрация: 26.06.2005
Адрес: Москва, СССР
Сообщений: 6,111
Репутация: 1096
|
pokibor
Я еще добавлю, что идея разработки с использованием разных сред и компиляторов будет подразумевать то, что люди, которые подключатся к разработке не в начале ее, а в середине, вынуждены будут иметь у себя на машине несколько компиляторов, чтобы смотреть, пробовать и работать с кодом, который будет нами за это время выложен, что не есть очень удобно. Ну и, как ты уже справедливо заметил, у нас есть ограничения по механизмам абстракции на стыке DLL и EXE. Кроме того, механизм модульности несет одну важную трудность, связанную с динамической памятью. Это не очень страшное ограничение, но при написании может вызвать затруднения, если не знать этого. Дело в том, что если вы выделили блок памяти в DLL (функциями new или calloc/malloc), то освободить ее вы должны в этой-же DLL(вызвать функцию Delete или free для указателя на ваш объект). Если вы попытаетесь освободить память, выделенную в ЕХЕ или другой DLL в коде своей, то это приведт к ошибке нарушения доступа.
Далее. Если у нас все-таки победит 3D Action, то нужно сказать, что они бывают двух разных типов, игровой мир которых по-разному реализуется. Есть такие, которые представляют собой чисто коридоры. Открытые пространства там могут пристутствовать, но они строго ограничены, и на самом деле являются закрытыми пространствами, а иллюзия пристутсвия неба реализуется путем рисования 6 сторон куба с текстурами неба перед тем, как нарисовать сам игровой уровень. Яркие предстваители - Quake, Half-Life. Второй тип представляет собой экшены на открытых пространствах, такие как Operation Flashpoint и Far Cry. Отличаются пониженной детализацией игрвого мира (вследствие его размеров) и остутствием повсеместной технологии применения лайтмепов. В Фар Крае, как я помню, лайтмепы юзались только для поверхностей островов. Кроме того, объекты типа растительности, домов, камней и проч. делаются объектами, а сам уровень - поверхностью.
Я думаю, что следует делать экшен первого типа - попроще в реализации. Во-первых с точки зрения базовых физических возможностей (сила тяжести, твердые стены и пол, чквозь которые нельзя провалиться). Это реализуется клипнодами - фактически, копия уровня, только воспринимается физическим движком. Во-втроых, игровые объекты, так называемые Entity. В отличие от простых элементов мира, типа стен, пола, камней, и т.п., энтити - это объекты мира, могущие взаимодействовать с игроком, монстрами или между собой. Ентити бывают двух типов. Первый тип - осязаемые энтити, которые меют некоторое объемное воплощение в игровом мире (т.е. имеют конкретную длину, ширину и высоту). Такими являются двери, кнопки, триггеры, статичные модели объектов и т.п. Второй тип - неосязаемые. Этот тип представляют такие элементы игровго имра, как, например, источники света, точки респавна монстров, источники звуков на карте и т.п. Они не имеют конретного объема, для игрвого мира у них есть только координаты точки, и действие, которое они производят. Все это придется реализовать и нам.
И кстати, те кто будет участвовать, или просто читать и разбираться в ходе разработки, следует очень хорошо подучить высшую математику, особенно ее раздел про матрицы. Без матриц можно попросту непонять многих алгоритмичиеских решений.
__________________

Хорошо смеется тот, кто стреляет первым! (танкистская мудрость)
|