Comments 14
Предыдущий пост не читал, но и этот, честно говоря, ни о чем.
+3
Статья хорошая, написана именно на уровне смыслов. Хорошо что написали про редактор внутри игры, как раз раздумываю в каком виде его реализовать. Возможно, действительно нужно сделать только UI-интерфейс и обмен данными через сообщения.
+1
А какие нибудь подробности будут?
Одна вода, никакой конкретики…
Одна вода, никакой конкретики…
0
>Там никаких сложностей, кроме отрисовки в текстуру и доступа к произвольному пикселю текстуры, у нас не возникло
Один вопрос — «Зачем?», проверка на попадание курсором в спрайт?
Один вопрос — «Зачем?», проверка на попадание курсором в спрайт?
0
Да. В играх этого вида издатели, по крайней мере, наши требовали, чтобы был «pixel perfect hit». В наших прошлых играх это реализовалось тупым доступом к пикселю текстуры и проверки его альфы. Теперь же мы от этого полностью отказались и при загрузке строим битовые маски, и потом уже проверяем клики по ним.
0
зачем фабрики?
смотрите
file.h
File open(FileName name);
void close(File file)
file_win32.cpp
File open(FileName name)
{
CreateFile(… );
}
void close(File file)
{
…
}
file_mac.cpp
File open(FileName name)
{
NS_…
}
void close( File file)
{
…
}
в зависимости от платформы подключаете нужный cpp файл, либо прямо в файлах ставите проверку платформы и подключаете все
завернуть в неймспейсы по вкусу
да и для таких случаев существует статическая типизация.
фабрика это усложнение на ровном месте, наверное еще и синглтон используете — в общем 2 паттерна там где они не нужны.
смотрите
file.h
File open(FileName name);
void close(File file)
file_win32.cpp
File open(FileName name)
{
CreateFile(… );
}
void close(File file)
{
…
}
file_mac.cpp
File open(FileName name)
{
NS_…
}
void close( File file)
{
…
}
в зависимости от платформы подключаете нужный cpp файл, либо прямо в файлах ставите проверку платформы и подключаете все
завернуть в неймспейсы по вкусу
да и для таких случаев существует статическая типизация.
фабрика это усложнение на ровном месте, наверное еще и синглтон используете — в общем 2 паттерна там где они не нужны.
0
Фабрика, в нашем случае, это класс, который занимается инстанцированием объектов. Экземпляр фабрики не создается — используются статические функции.
А внутри функций используются вот такие конструкции:
А внутри функций используются вот такие конструкции:
File open(FileName name)
{
#ifdef PLATFORM_iOS
NS_CreateFile(… );
#endif
#ifdef PLATFORM_WIN
CreateFile(… );
#endif
...
}
0
и где тут фабрика?
0
Да, согласен. В этом примере её нет. Вот пример получше:
nE_Texture* nE_Factory::MakeTexture( void )
{
#ifdef NE_PLATFORM_IOS
return new nE_Texture_iOS();
#endif
#ifdef NE_PLATFORM_PL4
return new nE_Texture_Pl4();
#endif
return NULL;
}
0
тут можно было обойтись
typedef nE_Texture nE_Texture_iOS;
поэтому пример еще более неудачный
typedef nE_Texture nE_Texture_iOS;
поэтому пример еще более неудачный
0
почитайте что-то о компонентных архитектурах либо о миксинах. это сильно сократит количество вашего кода и упростит его расширение.
0
Sign up to leave a comment.
Articles
Change theme settings
Постмортем создания кроссплатформенного казуального движка