Перейти к контенту

Курилка программистов


Рекомендуемые сообщения

@abramcumner, да меня в контакте на счет движка спросили, вот я и перебаламутился.

 

Я знаю точно, что http://www.gsc-game.ru/обратная связь не желает сотрудничать. Я год назад писал на почту и тишина.

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

Хотел спросить. Почему при нажатии Ctrl+F7(скомпилировать) у меня не создаётся исполняемый файл(xrGame.dll), то есть компиляция запускается, а этот файл не обновляется. Просто нажать F5(построить решение) слишком долго собирает, порядка 26 минут, а на Ctrl+F7, быстро, но файл не создаётся.

Изменено пользователем HellRatz

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий

 

 

лицензии на использование движка x-ray? Мне нужен пункт на коммерческое использование.

Почитай ридми к игре, раздел "лицензия". Там всё популярно расписано =)

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Почему при нажатии Ctrl+F7(скомпилировать) у меня не создаётся исполняемый файл(xrGame.dll), то есть компиляция запускается, а этот файл не обновляется

 

Потому что это компиляция одного выделенного файла. Скомпилировать проект (построить или build) - значит скомпилировать все изменённые файлы, входящие в этот проект, а также слинковать, что тоже занимает время. Да, и ещё конечно надо собрать и подчинённые проекты, если там что-то изменилось, а это почти все остальные проекты в случае xrGame.dll.

 

С другой стороны, если проект уже собирался, то все файлы уже скомпилированы, и если реально изменён всего один файл (и через заголовки не затронуты другие файлы), то сборка должна занять относительно немного: собственно скомпилировать один файл и слинковать. Время линковки - это обычно что-то в районе до минуты.

 

 

слишком долго собирает, порядка 26 минут

 

Что-то слишком долго. У меня минут 7 собирает с нуля. При оптимальных настройках меньше пяти Это конечно зависит от компьютера, но и у меня далеко не топовая машина (Intel Core i7 970 3.2Ghz).

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Да, долго код создаётся, можно конечно отключить оптимизацию, тогда минут 10 и файл xrGame.dll получается размером 10-12 МБ. Но опять проблемы, получаются не понятные вылеты, пока не разобрался где косяк, возможно скрипты или конфиги накрутил. Ах да, что лучше нажимать, "собрать xrGame.dll", или "собрать только xrGame.dll"?

ЗЫ

У меня русская версия.

Athlon II X4 640 3Ghz, 4-1 GB, WinXP 32 bit.

 

ЗЫЫ

В общем, разобрался, если собирать проект без оптимизации, то выскакивает ошибка в скрипте task_manager.script:222 - defend_object = nil. Я закинул себе в папку scripts этот скрипт и подправил код, но закинул не тот, т.е. из патча 1.0004 или 1.0005, в общем, мучился  целую ночь. Сейчас всё работает, но этот баг выскакивает если проект собран без оптимизации, т.е. алгоритмически код разный получается. Вот так то.

Изменено пользователем НаноБот

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий

Господа присяжные заседатели ! А не пора ли у нас уже как-то упорядочить темы, касающиеся движка ?

То есть, вот все эти правки "по интересам" расширить, углУбить © и вообще...

 

"Редактирование", "мелкие правки", ТЧ/ЗП, какие-то тематические правки - вот это вот все - во что-то большее ?

Какие есть мысли ?

 

Чтобы кто не знает "с чего начать ?" - нашел ответ на свои вопросы, у кого процесс достиг какой-то определенной стадии - на свои ?

Изменено пользователем Dennis_Chikin
Ссылка на комментарий

Так всего 3 темы: "редактирование движка", "xray-extensions" и "мелкие правки" из которых одна активная. "xray-extensions" строго по одному проекту, А мелкие правки ты сам сегодня поднял вопросом, место которому в курилке :)

Остается одна тема "редактирование движка", которая не больно-то и активная. Смысл что-то менять.

Ссылка на комментарий

Я сегодня видел ролики по движку NeoAxis (ред. двиг другой), на котором делается игра Hazescape с моделями из Сталкера. Конечно, графика не фонтан, но автор много смог реализовать там. Там и анимации сталкеровские есть, профессионально сделано, геймплей  - старый Doom напоминает....

 

Видео

 

Так, на каком движке еще сталкера не было?

На арме был, крайэгине был, биг ворлде есть...

 

Скачал: оказалось там другой движок GameGuru. Да уж такая муть. Явно мужик не туда свои способности направляет.

 

https://docs.google.com/uc?id=0B8PRi_7_FSasSFhxa3luZW1MUlk&export=downloadМожете посмотреть.

Изменено пользователем Дизель
  • Нравится 1

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

можно задать вопрос по C++?  :blush:

собственно сам вопрос - в неком файле идёт объявление класса допустим class CUIStatic, далее без инклуда этот класс используется во всю. Добавил свой класс - ругается на "неразрешённые символы", приходится прописывать инклуд. Только тапками сильно не кидайтесь)

Ссылка на комментарий

@mortan,

без инклюда класс использовать невозможно, поскольку компилятор ничего о нём не знает. Вообще же мало информации, и не вполне понятна проблема. Лень прописать инклюд перед использованием типа?

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

@Malandrinus, я имел ввиду другое - в заголовочном файле идёт перечисление классов,например UIActorMenu.h:

#include "UIDialogWnd.h"
#include "UIWndCallback.h"
#include "../../xrServerEntities/inventory_space.h"
#include "UIHint.h"
#include "../ActorBackpack.h"
#include "../ActorVest.h"
#include "../script_game_object.h"


class CUICharacterInfo;
class CUIDragDropListEx;
class CUIDragDropReferenceList;
class CUICellItem;
class CUIDragItem;
class CUIListBox;
class ui_actor_state_wnd;
class CUIItemInfo;
class CUIFrameLineWnd;
class CUIStatic;
class CUITextWnd;
class CUI3tButton;
class CInventoryOwner;
class CInventoryBox;
class CArtContainer;
class CUIInventoryUpgradeWnd;
class UIInvUpgradeInfo;
class CUIMessageBoxEx;
class CUIPropertiesBox;
class CTrade;
class CUIProgressBar;

 

 

далее эти классы используются так будто инклуды есть. Мб я чего-то не так понял, но вроде инклудов нету.

 

Ссылка на комментарий

@mortan,

понятно. Это называется опережающее объявление класса. Такого объявления достаточно для объявления в свою очередь указателя или ссылки на переменную такого класса, поскольку в этом случае не надо знать размер класса (и вообще ничего не надо о нём знать, кроме того, что это класс, а не, скажем, имя шаблона или переменной). Т.е. объявив существование класса CTrade таким образом далее можно написать например так:

CTrade* ptrade;

Но уже разыменование указателя потребует полного объявления, т.е. инклюда.

Как правило, опережающее объявление класса используется в заголовках, если в заголовках в свою очередь только объявления прототипов методов классов, где идёт передача по ссылке или указателю. Типа такого:

class CTrade;

class some_class
{
    CTrade* ptrade;
public:
    void member_fun(CTrade* pt);
};

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

 

Это всё позволяет не раздувать объём заголовков (реальный, после фазы препроцессора). В ряде случаев это позволяет решить циклические зависимости между заголовками. Это также один из стимулов не злоупотреблять инлайновыми функциями-членами, поскольку они как раз могут заставить включить заголовок вместо простой декларации.

  • Нравится 1
  • Полезно 2
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

могут ли пакеты microsoft redistributable c++ негативно влиять на процесс сборки проекта, порождая неприятные вылеты? Уже и не знаю что делать с таким логом :

0023:7159F189 MSVCR120.dll

 

[error][       8] : Недостаточно памяти для обработки команды. 

Добавлено Malandrinus,

Вряд ли. Ищи косяк у себя.

Ссылка на комментарий

Интересная мысль недавно пришла. Вырезать актора, да вырезать собаку, как и тупого Сидора ака CAI_Trader. В место актора делаем класс CCreator, т.е. реанимируем то что было вырезано, он то и подключается к CAI_Stalker под именем актор, так же можем без проблем подключится к любому существу ЗОНЫ, хоть крысы, хоть даже вороны. Вот бы ещё ворон переделать, добавить ума побольше, а то тупая декорация, научить садится на ветки деревьев и на землю, клевать трупы, нападать на других существ, ну и конечно на таком классе можно делать других мутантов, вроде летающих вампиров. В прочим ИИ займусь потом, сейчас оружейку пилю усилено. 

  • Нравится 3

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий

@НаноБот, ты еще вывел бы смещение развёртки для материалов при перемещении объекта, цены бы тебе не было.

 

Глянь на скрин и ты поймёшь, для чего:

 

f692bf3b30e3t.jpg

 

Изменено пользователем Дизель

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

 

 

Вырезать актора, да вырезать собаку, как и ... CAI_Trader. В место актора делаем класс CCreator, т.е. реанимируем то что было вырезано, он то и подключается к CAI_Stalker под именем актор, так же можем без проблем подключится к любому существу ЗОНЫ, хоть крысы, хоть даже вороны.

Откуда эти странные идеи, особенно про что было вырезано? Если же предметно это обсуждать с точки зрения ОО дизайна, то отдельные классы вводят потому, что нужно другое поведение. Каким образом ворона и сталкер могут быть соединены в одном классе? Интересно было бы послушать.

 

Мысль сделать актора на "управляемом" сталкере имеет право на жизнь. Однако надо помнить, что актор с технической точки зрения на самом деле сильно отличается от сталкера. К примеру, управляется физикой, а не навигацией по сетке. Это тянет за собой много мелочей, которые на первый взгляд неочевидны.

 

Сидора, АКА CAI_Trader, на самом деле можно вырезать и заменить специализированным сталкером, особенно в ЗП, где вопрос с анимациями проработан куда лучше.

 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

А Сидора же делали сталкером в ОП-1 ещё, так что и в ТЧ можно полноценно сделать, анимации скриптом отыгрываем, сидеть на стуле НПС тоже в ТЧ умеют.

На счёт актора, просто под управлением CCreator перехватываем управление НПС, т.е. НПС как бы отключается и мы полностью им управляем.

...в конце концов, важен лишь, машинный код.

СТАЛКЕР только для ПК!

Ссылка на комментарий
А Сидора же делали сталкером в ОП-1

Торговец - почти в чистом виде подмножество сталкера: инвентарь, торговля, диалоги, но без навигации и боёвки. Поэтому это и возможно. Вряд ли возможно ещё какое-то обобщение классов существ.

 

просто под управлением CCreator перехватываем управление НПС, т.е. НПС как бы отключается и мы полностью им управляем.

Всё-таки наверное CCreature, а не CCreator. Для начала, сейчас и так есть класс CEntityAlive, от которого унаследованы все остальные существа. Это мало что даёт для реализации твоей идеи, поскольку в этом классе, как и положено, только самый общий функционал и данные для живых существ, т.е. практически ничего там нет. А непосредственное управление включает множество деталей, относящихся к конкретному существу. Ну скажем собака ходит не так, как человек, а снорк не так, как собака, и даже актор ходит не так, как сталкер. Атакуют они по-разному. Инвентарь у них разный, если вообще есть, и т.д. и т.п. Для реализации такого управления надо по-сути для каждого существа реализовать свою отдельную схему управления, включая худ, интерфейс и т.д. Само по себе это работать не будет. Так и в чём тут простота?

Изменено пользователем Malandrinus
 

Плагины Total Commander для работы с игровыми архивами:

Архиваторный плагин (для работы с одиночным архивом): link1 link2

Системный плагин (для распаковки установленной игры): link1 link2

 

Ссылка на комментарий

Что то мне подсказывает, что смещение развертки, это не забота движка, а возможность Директа. Это уже давно применяется в играх. Короче, надо копать не двиг, а взять и убить в тесте какой нибудь шейдер, например на руках худа ГГ.

 

Я посмотрел шейдеры  в Нео Аксис и там только один, что то напоминает подобное:

 

Это может быть искомым мной шейдером?

 

 

void main_vp(
//uniform float4x4 worldViewProjMatrix,
uniform float4x4 worldMatrix,
uniform float4x4 viewProjMatrix,
uniform float3 cameraPosition,

float4 position : POSITION,
float4 vertexColor : COLOR0,
out float4 oPosition : POSITION,
out float4 oVertexColor : TEXCOORD0
)
{
const float depthOffset = -.05f;

float4 worldPosition = mul(worldMatrix, position);
float3 dir = normalize(worldPosition.xyz - cameraPosition);
worldPosition.xyz += dir * depthOffset;
oPosition = mul(viewProjMatrix, worldPosition);
//oPosition = mul(worldViewProjMatrix, position);

oVertexColor = vertexColor;
}

///////////////////////////////////////////////////////////////////////////////////////////////////

void main_fp(
half4 vertexColor : TEXCOORD0,
out half4 oColor : COLOR
)
{
oColor = vertexColor;
}

 

 

Еще где то вычитал, что за это отвечает вертексный или пиксельный шейдер...моя память, меня подводит....

Изменено пользователем Дизель

andreyholkin.gif

rod_cccp.gif

 

Ссылка на комментарий

Создайте аккаунт или авторизуйтесь, чтобы оставить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

Создать аккаунт

Зарегистрировать новый аккаунт в нашем сообществе. Это несложно!

Зарегистрировать новый аккаунт

Войти

Есть аккаунт? Войти.

Войти
  • Недавно просматривали   0 пользователей

    • Ни один зарегистрированный пользователь не просматривает эту страницу.
×
×
  • Создать...