Задать вопрос
@ZSashka

Можно ли использовать shared_ptr в играх?

Добрый день. Пишу игру на c++ и lua. Появилась необходимость создавать объект в lua и передавать его в плюсы. Проблема в том что сборщик мусора в lua уничтожает мой объект и использовать его в плюсовом коде уже невозможно. Проблема решается через shared_ptr, но я не знаю на сколько это правильное решение, ведь тогда мне придется в плюсах переписать все на использование этого умного указателя. Отсюда вопросы, можно ли использовать shared_ptr в играх, ведь производительность упадет, по сравнению с обычными указателями, и есть ли какие то другие решения передачи объектов между lua и c++?
  • Вопрос задан
  • 177 просмотров
Подписаться 2 Простой 3 комментария
Помогут разобраться в теме Все курсы
  • Нетология
    Разработчик на C++: Профессия + специализация + нейросети
    12 месяцев
    Далее
  • Skillbox
    Разработчик на C++
    7 месяцев
    Далее
  • Яндекс Практикум
    Разработчик C++
    9 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
Nipheris
@Nipheris Куратор тега C++
Ваш вопрос настолько топорно составлен, что даже непонятно как вообще отвечать.

1. Передачу объекта из одной среды в другую не обязательно решать блокировкой (lock) именно того объекта, что существует в "мире" lua.
2. Даже если блокировать lua-объект, почему вы собрались это делать shared_ptr-ом?? Он как-то шарит владение с менеджером памяти lua? Не слышал о такой возможности. Т.е. я не думаю что
Проблема решается через shared_ptr

3. Зачем всё переписывать на использование shared_ptr?? вы хотите начать писать на плюсах как на lua? даже если бы ваши предположения в п.1 и п.2 магическим образом оказались верны, shared_ptr и сборка мусора - сильно разные вещи, не разобравшись ни в одной из них до конца, вы посчитали что это одно и то же потому что оно "похоже".
4.
ведь производительность упадет

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

Пишу игру на c++ и lua.

Вы вообще писали на C++ или сразу пишете на "C++ и Lua"?

можно ли использовать shared_ptr в играх

Можно, в тех местах где это целесообразно. Не думаю что игры сильно отличаются в этом вопросе от других C++ проектов.

и есть ли какие то другие решения передачи объектов между lua и c++?

А что говорить документация используемого вами интерпретатора lua?
Ответ написан
Lerg
@Lerg
Defold, Corona, Lua, GameDev
Просто держите Lua переменную со значением таблицы (объекта) в каком-то пространстве, чтобы сборщик мусора её не удалял. Ещё есть функция lua_ref(), которая может добавить любое Lua значение во внутренний реестр.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
ITK academy Казань
от 75 000 до 130 000 ₽
ITK academy Нижний Новгород
от 75 000 до 120 000 ₽
Data World Москва
от 180 000 до 210 000 ₽