Сообщение от HolyDel
и к чему пришел щас?
я пока не нашел более удобный способ разделения интерфейсов и реализации.
|
1) data driven & data oriented design
скажем если гейм\левел дизайнер не может взять ваш движок и вставить туда спрайт или скрипт сам - нафиг такой движок нужен
2) everything is data pipeline
если движок сам не может себе автоматически конвертить контент быстро и удобно - нафиг надо, юнити умеет потому юнити и популярное
3) object as pure aggregation
http://cowboyprogramming.com/2007/01...your-heirachy/
node ? component ? не нужно
4) SoA
вы все еще пишите float x,y,z ? не нужно
5) хардкод техник рендер пайплайна, как в UE, CryEngine и прочих
делать возможность впилить свое HBAO на уровне данных ? ой, а как вы его сделаете на мобилках ? рендер техники это code path forever
6) data flow programming, reactive programming для некоторых вещей наподобие пайплайна рендера и шейдеров
императивные подходы не всегда решают однако
7) clear C11 only
если подходить со стороны интерфейсов в data driven движке то ооп там не сильно надо, ибо это тупо плеер данных, как пример могу показать интерфейс моей библиотеки которая агрегирует разные социальные сдк под мобилки :
https://github.com/Goortom/dd-publis...d_publishing.h, посмотрите насколько он чистый и простой, даже почти не нужна справка
или например интерфейс библиотеки загрузки изобрежаний :
http://pastebin.com/xbdcZPC8 (пока не в паблике), посмотрите насколько он простой, нужно добавить к нему всего две функции и вы получите сверх мощную либу которая умеет грузить данные напрямую через memory mapped files
C11 это мощнейший язык, после того как перенесли потоки и атомарные операции в библиотеку мы почти полностью отвязались от POSIX, теперь стало возможно делать библиотеки без убер фреймворка, и писать их на чистом C11
и вообще
8) dual quaternions graph
как показывает практика - скейл объектов это очень вырожденный случай, и скейл в самом дереве трансформов не нужен, потому можем отказаться от матриц вообще и сильно ускорить все вычисления
9) lua
похоже что это единственный язык на котором возможно программировать именно игру, тяжелую логику можно выносить в нативные модули, но проще всего делать игру на луа, таким образом программист ничего не сломает, плюс в луа можно пилить всякие реактивные плюшки
10) heap ? malloc ? new ?
тупо не нужно, вообще, просим страницы виртуальной памяти напрямую у ОС
11) everything is async, no callbacks
если можно сделать без коллбеков - делаем без коллбеков
ps. плюс еще куча мудрости, я так сходу и не вспомню =)