Проекты
GameDev.ru / Проекты / Форум / Judy (3 стр)

Judy (3 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
Odin_KGПостоялецwww5 ноя. 201416:40#30
Alprog
> Мало времени уделяю движку, мало. Впрочем, это было известно заранее.
Если хочешь уделять много времени движку, то, как минимум, нужно не ходить на работу. Иначе... всё время будешь уделять работе :-)
AlprogМодераторwww5 ноя. 201416:47#31
Odin_KG
> Если хочешь уделять много времени движку, то, как минимум, нужно не ходить на работу. Иначе... всё время будешь уделять работе :-)
Это я прекрасно понимаю, но движок меня кормить не будет. Может быть, игры на нём, но, опять же, не ближайшие несколько лет точно.
Odin_KGПостоялецwww5 ноя. 201417:40#32
Alprog
> Это я прекрасно понимаю, но движок меня кормить не будет
Ну, дык, это самое сложное...  - перевести свою личное творчество в доход, я это называю "этап реанимации". Пройти этот этап почти никто не может. Дальше выводы можешь сделать сам... Лично от себя могу сказать, что был момент, когда я щавель в лесу собирал, потому что было "нечего жрать".
UncleMikeПостоялецwww5 ноя. 201417:57#33
Odin_KG
> был момент, когда я щавель в лесу собирал, потому что было "нечего жрать".
:) а сейчас уже перешел на супчик из крапивы? )))
Odin_KGПостоялецwww5 ноя. 201418:00#34
UncleMike
> :) а сейчас уже перешел на супчик из крапивы? )))
я же вроде не с тобой разговаривал :-) Я тов. Alprog-у весьма симпотизирую, потому что он, на мой взгляд, хороший парень. А кто ты такой я не знаю :-)
IfПостоялецwww5 ноя. 201421:01#35
Плохо что для мобильников писать нельзя. Можно было бы с них начать, точнее с некоторой одной платформы. Просто рынок сейчас консольно-мобильный.
AlprogМодераторwww5 ноя. 201421:19#36
If
> Плохо что для мобильников писать нельзя
Пока нет ни одной игры, не вижу смысла этим заморачиваться. Мне важно сделать мультирендер архитектуру, чтобы в случае чего можно было добавить, что угодно.
Но так как мобильные платформы сильно усложняют тестирование, в качестве начальных платформ выбраны Win, Linux и Mac.
В идеале, к движку также прикрутится не только мобильники, но и PS4, и Xbox One; но это сильное забегание вперёд (причём по удачному сценарию). Пока будем считать, что только десктопы.
AlprogМодераторwww6 ноя. 20144:08#37
Очередной затык с сериализацией.

Есть класс IMethodMeta, оборачивающий метод какого-нибудь класса. У него есть методы, чтобы узнать возвращаемое значение, количество и тип аргументов, а также дёрнуть непосредственно Invoke.
Всё отлично для сериализатора/десериализатора, но проблема возникает, если попробовать на основе этого сделать автоматический биндинг в луа.

Проблема в том, что для биндинга луа хочет lua_CFunction, который никто иной, как:

typedef int (*lua_CFunction) (lua_State *L);

То есть, по идее, нужно просто много функций, которые будут дёргать каждый свою IMethodMeta… но замыкание нельзя передать туда, где ожидается обычная функция.
Полагаю, что тут надо как-то хитро обмазаться шаблонами, но пока не соображу, как именно, потому что шаблонизировать можно только компайл-тайм известными вещами.

Правка: познал lua_pushcclosure, теперь знаю, как это делается.
AlprogМодераторwww14 ноя. 20145:05#38
Дошёл до того места, когда надо мету и сериализатор научить различать типы с *, &, const, а также массивы.
Думаю, что на const оно будет забивать, а & я попробую избегать, потому что это выносит мозг с ходу.
AlprogМодераторwww6 мая 20150:32#39
В декабре оставил проект в ужасно разобранном состоянии: по всюду куски наполовину закомментаренного кода всяких экспериментов с языком, классы и функции вроде FooBar.
На январские праздники уезжал к родственникам и ни разу не прикоснулся к коду, напрочь забыв при этом весь рабочий контекст.

Более-менее понимание того, что нужно делать дальше есть, но очень сложно подступиться к проекту: высокая связность кода построенного на мудрённых шаблонах осложняет любые правки без осознания архитектуры целиком.
На то, чтобы просто раздуплить где тут что и на чём я остановился запросто может уйти часа 2-3, а в будний день это в принципе всё время, которое я могу уделить проекту. Несколько раз планировал посвятить выходные этому делу, но каждый раз либо дела, либо какие-то увесилительные мероприятия, либо банально усталось к концу рабочей  недели и, по большому счёту, до движка руки толком-то и не доходили.

Конечно, я за это время много чего делал, что косвенно пригодится при дальнейшем запиле движка: экспериментировал с некоторыми языковыми фичами (я попутно учусь писать на С++ по-взрослому), ковырялся с ассемблерным выхлопом компилятора для лучшего понимания низкого уровня, читал всякие пейперы и презентации по DX12/Vulkan и тому подобное, но прямого вклада в движок не было уже несколько месяцев. Планирую 9-11 мая совершить марш-бросок. Надеюсь, что сдвину дело с мёртвой точки.

AlprogМодераторwww12 мая 20153:31#40
Фух, с места, кое-как сдвинулся за эти 3 дня. Реально работал где-то часов по 6 в день, один раз вроде бы даже в "поток" часа на 2 ушёл.
Самый прикол, что за это время я только сдвинутся с места и смог: новых строчек кода реально всего-ничего. Очень много времени ушло на всяческие попытки передизайнить архитектуру, заодно вспомная почему я прошлый раз делал именно так, а не иначе, и в конечном итоге пришёл примерно к тому же, что и было в начале, только теперь юзаю SFINAE и немного другую иерархию классов. Но вроде как с политикой партии по поводу этой части архитектуры определился. Дальше легче должно быть.

Сейчас остановился на том, что компиляция зависает :) Но это у меня, видимо, где-то шаблоны зарекурсивились или что-то в этом духе. Не должно быть большой проблемой.
А ещё я напугался от нового сайта Qt, который предлагает купить подписку для не опенсорсных проектов, но, вроде как, ложная тревога — в Faq написано, что всё ещё можно LGPL-ить.

AlprogМодераторwww12 мая 20155:41#41
MSVC позволяет многое не по стандарту, что в GCC/Clang не компилится. Изучил эти чумовые правила:
template <typename T1, typename T2> class foo {}; // Шаблонный класс
template <> class foo<int, int> {};               // можно специализировать как полностью,
template <typename T> class foo<T, int> {};       // так и частично

template <typename T1, typename T2> void bar() {} // Шаблонную функцию можно
template <> void bar<int, int>() {}               // специализировать только полностью.
//template <typename T> void bar<T, int>() {}     // Частичная специализация функций запрещена!

                          // Хм… ну ладно, а что насчёт вложенных классов?

struct FooBar
{
template <typename T1, typename T2> void bar() {} // Шаблонную функцию как и прежде нельзя
//template <typename T> void bar<T, int>() {}     // специализировать частично, но появляется и новое правило:
//template <> void bar<int, int>() {}             // запрещено явно специализировать что-либо в class scope

template <typename T1, typename T2> class foo {}; // По той же причине шаблонный класс
//template <> class foo<int, int> {};             // тоже нельзя специализировать в class scope.
template <typename T> class foo<T, int> {};       // Но зато можно частично.
};

Изображение

Odin_KGПостоялецwww12 мая 20156:59#42
Alprog
> MSVC позволяет многое не по стандарту, что в GCC/Clang не компилится. Изучил эти чумовые правила:
Опять же из своего опыта скажу, что для кроссплатформенности нужно всё использовать по минимуму. Хочешь, чтобы везде работало ? Используй только простейшие конструкции. А это if, for, switch и виртуальные функции. Этим ты себе создашь большой бонус по переносимости. Как пример, меня всегда удивляли люди, которые использовали механизм исключений и ожидали, что он везде работает одинаково. Не... ну может и "да", просто тебе охота на себе экспериментировать ?

P.S.
Тебе еще повезло, что не компилиться. Хуже, когда компилиться, но работает неверно, и об этом ты узнаешь от других людей.

Совет всё же повторю для закрепления: ВСЁ ПО МИНИМУМУ, иначе хлебнёшь совместимости.

AlprogМодераторwww12 мая 20157:22#43
Odin_KG
Хлебаю по полной, но мне в том числе интересно в этом ковырятся, так что всё в порядке :)
Мой минимальный набор — это стандарт С++11 с полным сабсетом возможностей (планирую даже атрибуты использовать, хотя их пока нет в VS2013, но будут в 2015).
Если какая-то гавноплатформа, вроде андроида, не будет поддерживать какую-то фичу С++11, то и фиг с ней, с этой платформой. Не за количеством платформ здесь и сейчас гоняемся.

Но на чисто MS-специфик фичи, вроде возможности полностью специализировать шаблоны в non-namespace scope, завязываться, конечно, нельзя.

Из-за этого вот такой няшный суперкласс*:

+ Показать

пришлось только что переделать вот в такую мерзкую копипасту (надеюсь позже всё-таки улучшу):

+ Показать

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

Правка: обновил пост #41 (до этого там фигня была написана).

Odin_KGПостоялецwww12 мая 20157:34#44
Alprog
> Хлебаю по полной, но мне в том числе интересно в этом ковырятся, так что всё в порядке :)
Ну, это радует :-) Главное, чтобы тебя устраивал результат.

Alprog
> Если какая-то гавноплатформа, вроде андроида, не будет поддерживать какую-то фичу С++11, то и фиг с ней, с этой платформой. Не за количеством платформ здесь и сейчас гоняемся.
Вот смотри... приходит к тебе "клиент" и говорит... "Блин, всё круто, покупаю!, но нужно чтобы работало на платформе 'бла-бла-бла', потому что издатель требует, чтобы это обязательно работало". Твои действия ? (естественно, в случае, когда не работает) Опять же из своего опыта скажу, что клиент платит в первую очередь за совместимость, так как никто не хочет переделывать под каждую платформу персонально. И именно потому Unity вытесняет конкурентов :-)

Страницы: 1 2 3 4 5 6 7 Следующая »

/ Форум / Проекты / Утилиты

2001—2018 © GameDev.ru — Разработка игр